recker 1.0.78 → 1.0.79
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/dist/browser/index.iife.min.js +24 -24
- package/dist/browser/index.min.js +33 -33
- package/dist/browser/index.umd.min.js +24 -24
- package/dist/browser/seo/analyzer.d.ts +1 -0
- package/dist/browser/seo/analyzer.js +46 -4
- package/dist/browser/seo/formatter.js +20 -2
- package/dist/browser/seo/types.d.ts +7 -0
- package/dist/cli/commands/seo-runner.d.ts +2 -0
- package/dist/cli/commands/seo-runner.js +4 -0
- package/dist/cli/handlers/seo.js +6 -0
- package/dist/cli/tui/components/rich-response.d.ts +2 -0
- package/dist/cli/tui/components/rich-response.js +1 -1
- package/dist/seo/analyzer.d.ts +1 -0
- package/dist/seo/analyzer.js +46 -4
- package/dist/seo/formatter.js +20 -2
- package/dist/seo/types.d.ts +7 -0
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* https://github.com/forattini-dev/recker
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
7
|
-
var hp=Object.create;var ji=Object.defineProperty;var gp=Object.getOwnPropertyDescriptor;var yp=Object.getOwnPropertyNames;var bp=Object.getPrototypeOf,vp=Object.prototype.hasOwnProperty;var T=(t,e)=>()=>(t&&(e=t(t=0)),e);var Ss=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Ee=(t,e)=>{for(var r in e)ji(t,r,{get:e[r],enumerable:!0})},wp=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of yp(e))!vp.call(t,i)&&i!==r&&ji(t,i,{get:()=>e[i],enumerable:!(n=gp(e,i))||n.enumerable});return t};var ot=(t,e,r)=>(r=t!=null?hp(bp(t)):{},wp(e||!t||!t.__esModule?ji(r,"default",{value:t,enumerable:!0}):r,t));function xp(t){return["NO_ERROR","INTERNAL_ERROR","REFUSED_STREAM","ENHANCE_YOUR_CALM","CANCEL"].includes(t)}function kp(t){return["HTTP_1_1_REQUIRED","INADEQUATE_SECURITY","PROTOCOL_ERROR","COMPRESSION_ERROR"].includes(t)}function Sp(t,e){let r=[];switch(t){case"ENHANCE_YOUR_CALM":r.push("Server is rate limiting. Implement exponential backoff."),r.push("Reduce concurrent requests to this origin.");break;case"REFUSED_STREAM":r.push("Server is overloaded. Retry with backoff."),r.push("Consider reducing max concurrent streams.");break;case"FLOW_CONTROL_ERROR":r.push("Reduce initial window size in HTTP/2 settings."),r.push("Server may not handle large uploads well over HTTP/2.");break;case"HTTP_1_1_REQUIRED":r.push("Server requires HTTP/1.1 for this request."),r.push("Disable HTTP/2 for this origin.");break;case"INADEQUATE_SECURITY":r.push("Upgrade TLS configuration or use HTTP/1.1.");break;case"GOAWAY":r.push("Server is shutting down connection. Retry is safe.");break;default:r.push("Check server logs for details.")}return e&&r.push("Consider disabling HTTP/2 for this origin with { http2: false }."),r}function _i(t){let e=t.message||"",r=t.code||"";if(e.includes("GOAWAY")||r.includes("GOAWAY"))return new Wt("Server sent GOAWAY frame, closing connection","NO_ERROR",{level:"session"});if(e.includes("RST_STREAM")||r.includes("RST_STREAM")){let i=e.match(/RST_STREAM.*code[:\s]+(\w+)/i),o=(i==null?void 0:i[1])||"CANCEL";return new Wt(`Stream was reset: ${o}`,o,{level:"stream"})}let n=["PROTOCOL_ERROR","INTERNAL_ERROR","FLOW_CONTROL_ERROR","SETTINGS_TIMEOUT","STREAM_CLOSED","FRAME_SIZE_ERROR","REFUSED_STREAM","CANCEL","COMPRESSION_ERROR","CONNECT_ERROR","ENHANCE_YOUR_CALM","INADEQUATE_SECURITY","HTTP_1_1_REQUIRED"];for(let i of n)if(e.includes(i)||r.includes(i))return new Wt(`HTTP/2 error: ${i}`,i,{level:e.includes("session")?"session":"stream"});if(r.startsWith("ERR_HTTP2_")){let i=r.replace("ERR_HTTP2_","");return new Wt(e||`HTTP/2 error: ${i}`,i,{level:"session"})}return null}function Wi(t){var s;if(t instanceof $&&t.classification)return t.classification;if(!t||typeof t!="object")return;let e=t,r=e.name||"",n=e.message||"",i=(s=e.code)==null?void 0:s.toUpperCase();if(r==="AbortError"||i==="ABORT_ERR"||i==="UND_ERR_ABORTED"||n.includes("aborted")||n.includes("AbortError"))return{category:"queue",source:"client",severity:"low",canRetry:!0,reason:"Request was aborted"};if(r==="TimeoutError"||i==="UND_ERR_CONNECT_TIMEOUT"||i==="UND_ERR_HEADERS_TIMEOUT"||i==="UND_ERR_BODY_TIMEOUT"||n.includes("timeout"))return{category:"timeout",source:"transport",severity:"medium",canRetry:!0,reason:n||"Request timed out"};if(i&&new Set(["ECONNRESET","ECONNREFUSED","ENOTFOUND","EPIPE","ETIMEDOUT","EHOSTUNREACH","ENETUNREACH","ENETDOWN","EAI_AGAIN"]).has(i))return{category:"network",source:"transport",severity:"medium",canRetry:!0,reason:n||`Network error (${i})`};if(r==="Http2Error"||n.includes("HTTP/2")||n.includes("RST_STREAM")||n.includes("GOAWAY"))return{category:"protocol",source:"transport",severity:"medium",canRetry:!0,reason:n||"HTTP/2 protocol error"};if(r==="MaxSizeExceededError"||r==="ParseError")return{category:"resource",source:"server",severity:"low",canRetry:!1,reason:n||"Resource limitation"};if(r==="ConfigurationError"||r==="ValidationError"||r==="StateError")return{category:"state",source:"client",severity:"high",canRetry:!1,reason:n||"Request cannot be retried"}}function Tp(t){return[408,425,429,500,502,503,504].includes(t)}var $,Je,Y,je,Wt,St,Ts,sn,As,Cs,Es,cn,un,Me,he,Ds,_e,pe,Ls,V=T(()=>{"use strict";$=class extends Error{request;response;suggestions;retriable;classification;constructor(e,r,n,i=[],o=!1,s){super(e),this.name="ReckerError",this.request=r,this.response=n,this.suggestions=i,this.retriable=o,this.classification=s}},Je=class extends ${status;statusText;constructor(e,r){let n=Tp(e.status);super(`Request failed with status code ${e.status} ${e.statusText}`,r,e,["Check the upstream service response body for error details.","Inspect request headers/body to ensure they match the API contract.","Retry if this is a transient 5xx/429 error."],n,{category:"http",source:"server",severity:e.status>=500?"high":"medium",canRetry:n,reason:`HTTP ${e.status}`,statusCode:e.status}),this.name="HttpError",this.status=e.status,this.statusText=e.statusText}},Y=class extends ${phase;timeout;elapsed;event;constructor(e,r){let n=(r==null?void 0:r.phase)||"request",i=r==null?void 0:r.timeout,o=r==null?void 0:r.elapsed,c={lookup:"DNS lookup timed out",connect:"TCP connection timed out",secureConnect:"TLS handshake timed out",socket:"Socket assignment timed out (connection pool exhausted)",send:"Request body upload timed out",response:"Waiting for response timed out (TTFB)",request:"Request timed out (total time exceeded)","webrtc-connect":"WebRTC peer connection timed out"}[n];i!==void 0&&(c+=` after ${i}ms`),o!==void 0&&o!==i&&(c+=` (elapsed: ${Math.round(o)}ms)`);let u=["Verify network connectivity and DNS resolution for the target host.","Increase the specific timeout phase or optimize the upstream response time.","Reduce concurrent requests if the connection pool is exhausted."];super(c,e,void 0,u,!0,{category:"timeout",source:"transport",severity:"medium",canRetry:!0,reason:`Timeout while ${n}`}),this.name="TimeoutError",this.phase=n,this.timeout=i??0,this.elapsed=o,this.event=`timeout:${n}`}},je=class extends ${code;constructor(e,r,n){let i=["Confirm the host and port are reachable from this environment.","Check proxy/VPN/firewall settings that might block the request.","Retry the request or switch transport if this is transient."];super(e,n,void 0,i,!0,{category:"network",source:"transport",severity:r?"medium":"low",canRetry:!0,reason:r?`Network error (${r})`:e}),this.name="NetworkError",this.code=r}},Wt=class extends ${errorCode;level;streamId;suggestFallback;constructor(e,r,n={}){let i=xp(r),o=kp(r),s=Sp(r,o);super(e,n.request,void 0,s,i,{category:"protocol",source:"transport",severity:i?"medium":"high",canRetry:i,reason:`HTTP/2 ${r}`,statusCode:r&&Number.parseInt(String(r),10)||void 0}),this.name="Http2Error",this.errorCode=r,this.level=n.level??"stream",this.streamId=n.streamId,this.suggestFallback=o}};St=class extends ${maxSize;actualSize;constructor(e,r,n){let i=r?`${r} bytes (max: ${e} bytes)`:`${e} bytes`;super(`Response size exceeded maximum allowed: ${i}`,n,void 0,["Increase maxResponseSize if the larger payload is expected.","Add pagination/streaming to reduce payload size.","Ensure the upstream is not returning unexpected large responses."],!1,{category:"resource",source:"server",severity:"medium",canRetry:!1,reason:"Response size exceeded configured max"}),this.name="MaxSizeExceededError",this.maxSize=e,this.actualSize=r}};Ts=class extends ${reason;constructor(e,r){super(e||"Request was aborted",r,void 0,["Check if the abort was intentional (user-triggered or timeout).","Increase timeout if the request needs more time to complete.","Ensure AbortController is not being triggered prematurely."],!0,{category:"timeout",source:"client",severity:"low",canRetry:!0,reason:e?`Request was aborted: ${e}`:"Request was aborted"}),this.name="AbortError",this.reason=e}},sn=class extends ${host;port;code;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Verify the host and port are correct and the service is running.","Check network connectivity and firewall rules.","Ensure the service is accepting connections on the specified port."],(r==null?void 0:r.retriable)??!0,{category:"network",source:"transport",severity:(r==null?void 0:r.retriable)===!1?"high":"medium",canRetry:(r==null?void 0:r.retriable)??!0,reason:r!=null&&r.code?`Connection error (${r.code})`:"Connection error"}),this.name="ConnectionError",this.host=r==null?void 0:r.host,this.port=r==null?void 0:r.port,this.code=r==null?void 0:r.code}},As=class extends ${authType;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Verify credentials (username/password, API key, or certificate).","Check if the account is active and has proper permissions.","Ensure the authentication method matches what the server expects."],!1),this.name="AuthenticationError",this.authType=r==null?void 0:r.authType}},Cs=class extends ${protocol;code;phase;constructor(e,r){let i={ftp:["Ensure the FTP server is running and accessible.","Check file/directory permissions on the server.","Verify the path exists and is correct."],sftp:["Verify SSH credentials and key permissions.","Check that the SFTP subsystem is enabled on the server.","Ensure the target path exists and is accessible."],telnet:["Verify the Telnet service is running on the target host.","Check login credentials and terminal settings.","Ensure the expected prompts match the server output."],udp:["UDP is connectionless - verify the target is listening.","Check firewall rules for UDP traffic.","Ensure the message format matches what the server expects."],webrtc:["Verify the signaling server is reachable.","Check ICE server configuration (STUN/TURN).","Ensure both peers have compatible codecs and capabilities."],dns:["Verify the DNS server is reachable.","Check if the domain exists and has the requested record type.","Try an alternative DNS resolver."],tls:["Verify the certificate is valid and not expired.","Check that the hostname matches the certificate.","Ensure TLS version and cipher suites are compatible."]}[r.protocol.toLowerCase()]||["Check the protocol-specific documentation.","Verify the server supports the requested operation.","Review the error code for specific guidance."];super(e,r.request,void 0,i,r.retriable??!1),this.name="ProtocolError",this.protocol=r.protocol,this.code=r.code,this.phase=r.phase}},Es=class extends ${resource;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Verify the resource path or identifier is correct.","Check if the resource was deleted or moved.","Ensure you have permission to access this resource."],!1),this.name="NotFoundError",this.resource=r==null?void 0:r.resource}},cn=class extends ${expectedState;actualState;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Ensure the required setup/initialization step was performed.","Check that operations are called in the correct order.","Verify the connection or resource is still valid."],!1),this.name="StateError",this.expectedState=r==null?void 0:r.expectedState,this.actualState=r==null?void 0:r.actualState}},un=class extends ${field;value;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Check the input format and constraints.","Refer to the API documentation for valid values.","Ensure required fields are provided."],!1),this.name="ValidationError",this.field=r==null?void 0:r.field,this.value=r==null?void 0:r.value}},Me=class extends ${configKey;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Check the configuration file or environment variables.","Ensure all required configuration keys are set.","Verify the configuration values are in the correct format."],!1),this.name="ConfigurationError",this.configKey=r==null?void 0:r.configKey}},he=class extends ${feature;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Check if this feature is supported in the current context.","Refer to the documentation for supported operations.","Consider using an alternative approach."],!1),this.name="UnsupportedError",this.feature=r==null?void 0:r.feature}},Ds=class extends ${format;position;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Verify the input is in the expected format.","Check for malformed or corrupted data.","Ensure the encoding is correct (UTF-8, etc.)."],!1),this.name="ParseError",this.format=r==null?void 0:r.format,this.position=r==null?void 0:r.position}},_e=class extends ${queueName;constructor(e,r){super(e||"Queue operation was cancelled",r==null?void 0:r.request,void 0,["This is typically expected during shutdown.","Check if the queue was manually cleared.","Retry the operation if the queue is still active."],!0,{category:"queue",source:"client",severity:"low",canRetry:!0,reason:e||"Queue was cancelled"}),this.name="QueueCancelledError",this.queueName=r==null?void 0:r.queueName}},pe=class extends ${streamType;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Check if the stream was prematurely closed.","Verify the data source is still available.","Ensure proper error handling for stream events."],(r==null?void 0:r.retriable)??!1),this.name="StreamError",this.streamType=r==null?void 0:r.streamType}},Ls=class extends ${url;statusCode;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Verify the URL is correct and accessible.","Check network connectivity.",r!=null&&r.statusCode?`HTTP ${r.statusCode} - check server response.`:"Retry the download if the error is transient."],(r==null?void 0:r.retriable)??!0),this.name="DownloadError",this.url=r==null?void 0:r.url,this.statusCode=r==null?void 0:r.statusCode}}});function dn(t,e={}){let r={allowDuplicateKeys:e.allowDuplicateKeys??!1,parseDates:e.parseDates??!0,customTags:e.customTags??{},maxDepth:e.maxDepth??100,maxKeys:e.maxKeys??1e4};if(!t||!t.trim())return null;let n=t.replace(/^\uFEFF/,"");n=n.replace(/^---\s*$/gm,"").replace(/^\.\.\.\s*$/gm,"");let o={lines:n.split(`
|
|
8
|
-
`),index:0,depth:0,keyCount:0,options:r};return Ki(o,0,new Map)}function Ki(t,e,r){if(yr(t),t.index>=t.lines.length)return null;let i=t.lines[t.index].trim();return i==="~"||i==="null"||i==="Null"||i==="NULL"?(t.index++,null):i.startsWith("- ")||i==="-"?Ap(t,e,r):i.includes(":")&&!i.startsWith('"')&&!i.startsWith("'")?Ps(t,e,r):(t.index++,
|
|
7
|
+
var hp=Object.create;var ji=Object.defineProperty;var gp=Object.getOwnPropertyDescriptor;var yp=Object.getOwnPropertyNames;var bp=Object.getPrototypeOf,vp=Object.prototype.hasOwnProperty;var A=(t,e)=>()=>(t&&(e=t(t=0)),e);var Ts=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Ee=(t,e)=>{for(var r in e)ji(t,r,{get:e[r],enumerable:!0})},wp=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of yp(e))!vp.call(t,i)&&i!==r&&ji(t,i,{get:()=>e[i],enumerable:!(n=gp(e,i))||n.enumerable});return t};var ot=(t,e,r)=>(r=t!=null?hp(bp(t)):{},wp(e||!t||!t.__esModule?ji(r,"default",{value:t,enumerable:!0}):r,t));function xp(t){return["NO_ERROR","INTERNAL_ERROR","REFUSED_STREAM","ENHANCE_YOUR_CALM","CANCEL"].includes(t)}function kp(t){return["HTTP_1_1_REQUIRED","INADEQUATE_SECURITY","PROTOCOL_ERROR","COMPRESSION_ERROR"].includes(t)}function Tp(t,e){let r=[];switch(t){case"ENHANCE_YOUR_CALM":r.push("Server is rate limiting. Implement exponential backoff."),r.push("Reduce concurrent requests to this origin.");break;case"REFUSED_STREAM":r.push("Server is overloaded. Retry with backoff."),r.push("Consider reducing max concurrent streams.");break;case"FLOW_CONTROL_ERROR":r.push("Reduce initial window size in HTTP/2 settings."),r.push("Server may not handle large uploads well over HTTP/2.");break;case"HTTP_1_1_REQUIRED":r.push("Server requires HTTP/1.1 for this request."),r.push("Disable HTTP/2 for this origin.");break;case"INADEQUATE_SECURITY":r.push("Upgrade TLS configuration or use HTTP/1.1.");break;case"GOAWAY":r.push("Server is shutting down connection. Retry is safe.");break;default:r.push("Check server logs for details.")}return e&&r.push("Consider disabling HTTP/2 for this origin with { http2: false }."),r}function _i(t){let e=t.message||"",r=t.code||"";if(e.includes("GOAWAY")||r.includes("GOAWAY"))return new Wt("Server sent GOAWAY frame, closing connection","NO_ERROR",{level:"session"});if(e.includes("RST_STREAM")||r.includes("RST_STREAM")){let i=e.match(/RST_STREAM.*code[:\s]+(\w+)/i),o=(i==null?void 0:i[1])||"CANCEL";return new Wt(`Stream was reset: ${o}`,o,{level:"stream"})}let n=["PROTOCOL_ERROR","INTERNAL_ERROR","FLOW_CONTROL_ERROR","SETTINGS_TIMEOUT","STREAM_CLOSED","FRAME_SIZE_ERROR","REFUSED_STREAM","CANCEL","COMPRESSION_ERROR","CONNECT_ERROR","ENHANCE_YOUR_CALM","INADEQUATE_SECURITY","HTTP_1_1_REQUIRED"];for(let i of n)if(e.includes(i)||r.includes(i))return new Wt(`HTTP/2 error: ${i}`,i,{level:e.includes("session")?"session":"stream"});if(r.startsWith("ERR_HTTP2_")){let i=r.replace("ERR_HTTP2_","");return new Wt(e||`HTTP/2 error: ${i}`,i,{level:"session"})}return null}function Wi(t){var s;if(t instanceof $&&t.classification)return t.classification;if(!t||typeof t!="object")return;let e=t,r=e.name||"",n=e.message||"",i=(s=e.code)==null?void 0:s.toUpperCase();if(r==="AbortError"||i==="ABORT_ERR"||i==="UND_ERR_ABORTED"||n.includes("aborted")||n.includes("AbortError"))return{category:"queue",source:"client",severity:"low",canRetry:!0,reason:"Request was aborted"};if(r==="TimeoutError"||i==="UND_ERR_CONNECT_TIMEOUT"||i==="UND_ERR_HEADERS_TIMEOUT"||i==="UND_ERR_BODY_TIMEOUT"||n.includes("timeout"))return{category:"timeout",source:"transport",severity:"medium",canRetry:!0,reason:n||"Request timed out"};if(i&&new Set(["ECONNRESET","ECONNREFUSED","ENOTFOUND","EPIPE","ETIMEDOUT","EHOSTUNREACH","ENETUNREACH","ENETDOWN","EAI_AGAIN"]).has(i))return{category:"network",source:"transport",severity:"medium",canRetry:!0,reason:n||`Network error (${i})`};if(r==="Http2Error"||n.includes("HTTP/2")||n.includes("RST_STREAM")||n.includes("GOAWAY"))return{category:"protocol",source:"transport",severity:"medium",canRetry:!0,reason:n||"HTTP/2 protocol error"};if(r==="MaxSizeExceededError"||r==="ParseError")return{category:"resource",source:"server",severity:"low",canRetry:!1,reason:n||"Resource limitation"};if(r==="ConfigurationError"||r==="ValidationError"||r==="StateError")return{category:"state",source:"client",severity:"high",canRetry:!1,reason:n||"Request cannot be retried"}}function Sp(t){return[408,425,429,500,502,503,504].includes(t)}var $,Je,Y,je,Wt,Tt,Ss,sn,As,Cs,Es,cn,un,Me,he,Ds,_e,pe,Ls,V=A(()=>{"use strict";$=class extends Error{request;response;suggestions;retriable;classification;constructor(e,r,n,i=[],o=!1,s){super(e),this.name="ReckerError",this.request=r,this.response=n,this.suggestions=i,this.retriable=o,this.classification=s}},Je=class extends ${status;statusText;constructor(e,r){let n=Sp(e.status);super(`Request failed with status code ${e.status} ${e.statusText}`,r,e,["Check the upstream service response body for error details.","Inspect request headers/body to ensure they match the API contract.","Retry if this is a transient 5xx/429 error."],n,{category:"http",source:"server",severity:e.status>=500?"high":"medium",canRetry:n,reason:`HTTP ${e.status}`,statusCode:e.status}),this.name="HttpError",this.status=e.status,this.statusText=e.statusText}},Y=class extends ${phase;timeout;elapsed;event;constructor(e,r){let n=(r==null?void 0:r.phase)||"request",i=r==null?void 0:r.timeout,o=r==null?void 0:r.elapsed,c={lookup:"DNS lookup timed out",connect:"TCP connection timed out",secureConnect:"TLS handshake timed out",socket:"Socket assignment timed out (connection pool exhausted)",send:"Request body upload timed out",response:"Waiting for response timed out (TTFB)",request:"Request timed out (total time exceeded)","webrtc-connect":"WebRTC peer connection timed out"}[n];i!==void 0&&(c+=` after ${i}ms`),o!==void 0&&o!==i&&(c+=` (elapsed: ${Math.round(o)}ms)`);let u=["Verify network connectivity and DNS resolution for the target host.","Increase the specific timeout phase or optimize the upstream response time.","Reduce concurrent requests if the connection pool is exhausted."];super(c,e,void 0,u,!0,{category:"timeout",source:"transport",severity:"medium",canRetry:!0,reason:`Timeout while ${n}`}),this.name="TimeoutError",this.phase=n,this.timeout=i??0,this.elapsed=o,this.event=`timeout:${n}`}},je=class extends ${code;constructor(e,r,n){let i=["Confirm the host and port are reachable from this environment.","Check proxy/VPN/firewall settings that might block the request.","Retry the request or switch transport if this is transient."];super(e,n,void 0,i,!0,{category:"network",source:"transport",severity:r?"medium":"low",canRetry:!0,reason:r?`Network error (${r})`:e}),this.name="NetworkError",this.code=r}},Wt=class extends ${errorCode;level;streamId;suggestFallback;constructor(e,r,n={}){let i=xp(r),o=kp(r),s=Tp(r,o);super(e,n.request,void 0,s,i,{category:"protocol",source:"transport",severity:i?"medium":"high",canRetry:i,reason:`HTTP/2 ${r}`,statusCode:r&&Number.parseInt(String(r),10)||void 0}),this.name="Http2Error",this.errorCode=r,this.level=n.level??"stream",this.streamId=n.streamId,this.suggestFallback=o}};Tt=class extends ${maxSize;actualSize;constructor(e,r,n){let i=r?`${r} bytes (max: ${e} bytes)`:`${e} bytes`;super(`Response size exceeded maximum allowed: ${i}`,n,void 0,["Increase maxResponseSize if the larger payload is expected.","Add pagination/streaming to reduce payload size.","Ensure the upstream is not returning unexpected large responses."],!1,{category:"resource",source:"server",severity:"medium",canRetry:!1,reason:"Response size exceeded configured max"}),this.name="MaxSizeExceededError",this.maxSize=e,this.actualSize=r}};Ss=class extends ${reason;constructor(e,r){super(e||"Request was aborted",r,void 0,["Check if the abort was intentional (user-triggered or timeout).","Increase timeout if the request needs more time to complete.","Ensure AbortController is not being triggered prematurely."],!0,{category:"timeout",source:"client",severity:"low",canRetry:!0,reason:e?`Request was aborted: ${e}`:"Request was aborted"}),this.name="AbortError",this.reason=e}},sn=class extends ${host;port;code;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Verify the host and port are correct and the service is running.","Check network connectivity and firewall rules.","Ensure the service is accepting connections on the specified port."],(r==null?void 0:r.retriable)??!0,{category:"network",source:"transport",severity:(r==null?void 0:r.retriable)===!1?"high":"medium",canRetry:(r==null?void 0:r.retriable)??!0,reason:r!=null&&r.code?`Connection error (${r.code})`:"Connection error"}),this.name="ConnectionError",this.host=r==null?void 0:r.host,this.port=r==null?void 0:r.port,this.code=r==null?void 0:r.code}},As=class extends ${authType;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Verify credentials (username/password, API key, or certificate).","Check if the account is active and has proper permissions.","Ensure the authentication method matches what the server expects."],!1),this.name="AuthenticationError",this.authType=r==null?void 0:r.authType}},Cs=class extends ${protocol;code;phase;constructor(e,r){let i={ftp:["Ensure the FTP server is running and accessible.","Check file/directory permissions on the server.","Verify the path exists and is correct."],sftp:["Verify SSH credentials and key permissions.","Check that the SFTP subsystem is enabled on the server.","Ensure the target path exists and is accessible."],telnet:["Verify the Telnet service is running on the target host.","Check login credentials and terminal settings.","Ensure the expected prompts match the server output."],udp:["UDP is connectionless - verify the target is listening.","Check firewall rules for UDP traffic.","Ensure the message format matches what the server expects."],webrtc:["Verify the signaling server is reachable.","Check ICE server configuration (STUN/TURN).","Ensure both peers have compatible codecs and capabilities."],dns:["Verify the DNS server is reachable.","Check if the domain exists and has the requested record type.","Try an alternative DNS resolver."],tls:["Verify the certificate is valid and not expired.","Check that the hostname matches the certificate.","Ensure TLS version and cipher suites are compatible."]}[r.protocol.toLowerCase()]||["Check the protocol-specific documentation.","Verify the server supports the requested operation.","Review the error code for specific guidance."];super(e,r.request,void 0,i,r.retriable??!1),this.name="ProtocolError",this.protocol=r.protocol,this.code=r.code,this.phase=r.phase}},Es=class extends ${resource;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Verify the resource path or identifier is correct.","Check if the resource was deleted or moved.","Ensure you have permission to access this resource."],!1),this.name="NotFoundError",this.resource=r==null?void 0:r.resource}},cn=class extends ${expectedState;actualState;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Ensure the required setup/initialization step was performed.","Check that operations are called in the correct order.","Verify the connection or resource is still valid."],!1),this.name="StateError",this.expectedState=r==null?void 0:r.expectedState,this.actualState=r==null?void 0:r.actualState}},un=class extends ${field;value;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Check the input format and constraints.","Refer to the API documentation for valid values.","Ensure required fields are provided."],!1),this.name="ValidationError",this.field=r==null?void 0:r.field,this.value=r==null?void 0:r.value}},Me=class extends ${configKey;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Check the configuration file or environment variables.","Ensure all required configuration keys are set.","Verify the configuration values are in the correct format."],!1),this.name="ConfigurationError",this.configKey=r==null?void 0:r.configKey}},he=class extends ${feature;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Check if this feature is supported in the current context.","Refer to the documentation for supported operations.","Consider using an alternative approach."],!1),this.name="UnsupportedError",this.feature=r==null?void 0:r.feature}},Ds=class extends ${format;position;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Verify the input is in the expected format.","Check for malformed or corrupted data.","Ensure the encoding is correct (UTF-8, etc.)."],!1),this.name="ParseError",this.format=r==null?void 0:r.format,this.position=r==null?void 0:r.position}},_e=class extends ${queueName;constructor(e,r){super(e||"Queue operation was cancelled",r==null?void 0:r.request,void 0,["This is typically expected during shutdown.","Check if the queue was manually cleared.","Retry the operation if the queue is still active."],!0,{category:"queue",source:"client",severity:"low",canRetry:!0,reason:e||"Queue was cancelled"}),this.name="QueueCancelledError",this.queueName=r==null?void 0:r.queueName}},pe=class extends ${streamType;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Check if the stream was prematurely closed.","Verify the data source is still available.","Ensure proper error handling for stream events."],(r==null?void 0:r.retriable)??!1),this.name="StreamError",this.streamType=r==null?void 0:r.streamType}},Ls=class extends ${url;statusCode;constructor(e,r){super(e,r==null?void 0:r.request,void 0,["Verify the URL is correct and accessible.","Check network connectivity.",r!=null&&r.statusCode?`HTTP ${r.statusCode} - check server response.`:"Retry the download if the error is transient."],(r==null?void 0:r.retriable)??!0),this.name="DownloadError",this.url=r==null?void 0:r.url,this.statusCode=r==null?void 0:r.statusCode}}});function dn(t,e={}){let r={allowDuplicateKeys:e.allowDuplicateKeys??!1,parseDates:e.parseDates??!0,customTags:e.customTags??{},maxDepth:e.maxDepth??100,maxKeys:e.maxKeys??1e4};if(!t||!t.trim())return null;let n=t.replace(/^\uFEFF/,"");n=n.replace(/^---\s*$/gm,"").replace(/^\.\.\.\s*$/gm,"");let o={lines:n.split(`
|
|
8
|
+
`),index:0,depth:0,keyCount:0,options:r};return Ki(o,0,new Map)}function Ki(t,e,r){if(yr(t),t.index>=t.lines.length)return null;let i=t.lines[t.index].trim();return i==="~"||i==="null"||i==="Null"||i==="NULL"?(t.index++,null):i.startsWith("- ")||i==="-"?Ap(t,e,r):i.includes(":")&&!i.startsWith('"')&&!i.startsWith("'")?Ps(t,e,r):(t.index++,St(i,t.options,r))}function Ps(t,e,r){let n={};if(t.depth++,t.depth>t.options.maxDepth)throw new at("Maximum nesting depth exceeded",t.index);for(;t.index<t.lines.length&&(yr(t),!(t.index>=t.lines.length));){let i=t.lines[t.index],o=Vt(i);if(o<e&&i.trim())break;if(o<e){t.index++;continue}let s=i.trim();if(!s||s.startsWith("#")){t.index++;continue}if(s.startsWith("- ")&&o<=e)break;let c=Gi(s);if(c===-1){t.index++;continue}let u=s.substring(0,c).trim(),l=s.substring(c+1).trim(),d=null,p=u.match(/^&(\w+)\s+/);if(p&&(d=p[1],u=u.substring(p[0].length)),l.startsWith("*")){let h=l.substring(1).split(/\s/)[0];if(!r.has(h))throw new at(`Unknown alias: ${h}`,t.index);n[u]=r.get(h),t.index++;continue}let m=l.match(/^&(\w+)\s*/);if(m&&(d=m[1],l=l.substring(m[0].length)),u=ln(u),t.keyCount++,t.keyCount>t.options.maxKeys)throw new at("Maximum number of keys exceeded",t.index);if(!t.options.allowDuplicateKeys&&u in n)throw new at(`Duplicate key: ${u}`,t.index);t.index++;let f;if(l===""||l==="|"||l===">"||l==="|-"||l===">-")if(l==="|"||l==="|-")f=Cp(t,o,l==="|-");else if(l===">"||l===">-")f=Ep(t,o,l===">-");else if(yr(t),t.index<t.lines.length){let h=Vt(t.lines[t.index]);h>o?f=Ki(t,h,r):f=null}else f=null;else f=St(l,t.options,r);d&&r.set(d,f),n[u]=f}return t.depth--,n}function Ap(t,e,r){let n=[];if(t.depth++,t.depth>t.options.maxDepth)throw new at("Maximum nesting depth exceeded",t.index);for(;t.index<t.lines.length&&(yr(t),!(t.index>=t.lines.length));){let i=t.lines[t.index],o=Vt(i),s=i.trim();if(o<e&&s)break;if(!s.startsWith("-")){if(o<=e)break;t.index++;continue}let c=null,u=s.substring(1).trim(),l=u.match(/^&(\w+)\s*/);if(l&&(c=l[1],u=u.substring(l[0].length)),u.startsWith("*")){let p=u.substring(1).split(/\s/)[0];if(!r.has(p))throw new at(`Unknown alias: ${p}`,t.index);n.push(r.get(p)),t.index++;continue}t.index++;let d;if(u==="")if(yr(t),t.index<t.lines.length){let p=Vt(t.lines[t.index]);p>o?d=Ki(t,p,r):d=null}else d=null;else if(u.includes(":")&&!u.startsWith('"')&&!u.startsWith("'")){t.index--;let p=" ".repeat(o+2)+u,m=t.lines[t.index];t.lines[t.index]=p,d=Ps(t,o+2,r),t.index<t.lines.length&&(t.lines[t.index-1]=m)}else d=St(u,t.options,r);c&&r.set(c,d),n.push(d)}return t.depth--,n}function Cp(t,e,r){let n=[],i=-1;for(;t.index<t.lines.length;){let o=t.lines[t.index],s=Vt(o),c=o.trim();if(i===-1&&c&&(i=s),i!==-1&&s<i&&c||c&&s<=e)break;if(i!==-1){let u=Math.max(0,s-i);n.push(" ".repeat(u)+c)}else n.push("");t.index++}if(r)for(;n.length>0&&n[n.length-1]==="";)n.pop();return n.join(`
|
|
9
9
|
`)}function Ep(t,e,r){let n=[],i=[],o=-1;for(;t.index<t.lines.length;){let s=t.lines[t.index],c=Vt(s),u=s.trim();if(o===-1&&u&&(o=c),o!==-1&&c<o&&u||u&&c<=e)break;o!==-1&&(u===""?(i.length>0&&(n.push(i.join(" ")),i=[]),n.push("")):i.push(u)),t.index++}if(i.length>0&&n.push(i.join(" ")),r)for(;n.length>0&&n[n.length-1]==="";)n.pop();return n.join(`
|
|
10
|
-
`)}function
|
|
10
|
+
`)}function St(t,e,r){if(t.startsWith("*")){let o=t.substring(1).split(/\s|#/)[0];if(!r.has(o))throw new at(`Unknown alias: ${o}`);return r.get(o)}let n=Rp(t);n!==-1&&(t=t.substring(0,n).trim());let i=t.match(/^!(\S+)\s*/);if(i){let o=i[1],s=t.substring(i[0].length);return e.customTags[o]?e.customTags[o](s):s}if(t===""||t==="~"||t==="null"||t==="Null"||t==="NULL")return null;if(t==="true"||t==="True"||t==="TRUE"||t==="yes"||t==="Yes"||t==="YES"||t==="on"||t==="On"||t==="ON")return!0;if(t==="false"||t==="False"||t==="FALSE"||t==="no"||t==="No"||t==="NO"||t==="off"||t==="Off"||t==="OFF")return!1;if(t===".inf"||t===".Inf"||t===".INF"||t==="+.inf"||t==="+.Inf"||t==="+.INF")return 1/0;if(t==="-.inf"||t==="-.Inf"||t==="-.INF")return-1/0;if(t===".nan"||t===".NaN"||t===".NAN")return NaN;if(/^0o[0-7]+$/.test(t))return parseInt(t.substring(2),8);if(/^0x[0-9a-fA-F]+$/.test(t))return parseInt(t,16);if(/^[-+]?\d+$/.test(t)){let o=parseInt(t,10);return Number.isSafeInteger(o),o}if(/^[-+]?(\d+\.?\d*|\.\d+)([eE][-+]?\d+)?$/.test(t))return parseFloat(t);if(/^\d+:\d{2}(:\d{2})?(\.\d+)?$/.test(t)){let o=t.split(":").map(parseFloat),s=o[0];for(let c=1;c<o.length;c++)s=s*60+o[c];return s}if(e.parseDates&&/^\d{4}-\d{2}-\d{2}([T ]\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})?)?$/.test(t)){let o=new Date(t.replace(" ","T"));if(!isNaN(o.getTime()))return o}return t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'")?ln(t):t.startsWith("[")&&t.endsWith("]")?Dp(t,e,r):t.startsWith("{")&&t.endsWith("}")?Lp(t,e,r):t}function Dp(t,e,r){let n=t.slice(1,-1).trim();if(!n)return[];let i=[],o="",s=0,c=!1,u="";for(let l=0;l<n.length;l++){let d=n[l];if(c){o+=d,d===u&&n[l-1]!=="\\"&&(c=!1);continue}if(d==='"'||d==="'"){c=!0,u=d,o+=d;continue}if(d==="["||d==="{"){s++,o+=d;continue}if(d==="]"||d==="}"){s--,o+=d;continue}if(d===","&&s===0){i.push(St(o.trim(),e,r)),o="";continue}o+=d}return o.trim()&&i.push(St(o.trim(),e,r)),i}function Lp(t,e,r){let n=t.slice(1,-1).trim();if(!n)return{};let i={},o="",s=0,c=!1,u="";for(let l=0;l<n.length;l++){let d=n[l];if(c){o+=d,d===u&&n[l-1]!=="\\"&&(c=!1);continue}if(d==='"'||d==="'"){c=!0,u=d,o+=d;continue}if(d==="["||d==="{"){s++,o+=d;continue}if(d==="]"||d==="}"){s--,o+=d;continue}if(d===","&&s===0){let p=Gi(o);if(p!==-1){let m=ln(o.substring(0,p).trim()),f=o.substring(p+1).trim();i[m]=St(f,e,r)}o="";continue}o+=d}if(o.trim()){let l=Gi(o);if(l!==-1){let d=ln(o.substring(0,l).trim()),p=o.substring(l+1).trim();i[d]=St(p,e,r)}}return i}function Vt(t){let e=t.match(/^(\s*)/);return e?e[1].length:0}function yr(t){for(;t.index<t.lines.length;){let e=t.lines[t.index].trim();if(e&&!e.startsWith("#"))break;t.index++}}function Gi(t){let e=!1,r="";for(let n=0;n<t.length;n++){let i=t[n];if(e){i===r&&t[n-1]!=="\\"&&(e=!1);continue}if(i==='"'||i==="'"){e=!0,r=i;continue}if(i===":"&&(n===t.length-1||t[n+1]===" "||t[n+1]===`
|
|
11
11
|
`||t[n+1]===" "))return n}return-1}function Rp(t){let e=!1,r="";for(let n=0;n<t.length;n++){let i=t[n];if(e){i===r&&t[n-1]!=="\\"&&(e=!1);continue}if(i==='"'||i==="'"){e=!0,r=i;continue}if(i==="#"&&(n===0||t[n-1]===" "||t[n-1]===" "))return n}return-1}function ln(t){return t.startsWith('"')&&t.endsWith('"')?t.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\").replace(/\\n/g,`
|
|
12
12
|
`).replace(/\\t/g," ").replace(/\\r/g,"\r").replace(/\\0/g,"\0").replace(/\\x([0-9a-fA-F]{2})/g,(e,r)=>String.fromCharCode(parseInt(r,16))).replace(/\\u([0-9a-fA-F]{4})/g,(e,r)=>String.fromCharCode(parseInt(r,16))):t.startsWith("'")&&t.endsWith("'")?t.slice(1,-1).replace(/''/g,"'"):t}function Ns(t,e={}){let r={indent:e.indent??2,lineWidth:e.lineWidth??80,forceQuotes:e.forceQuotes??!1,flowStyle:e.flowStyle??!1,sortKeys:e.sortKeys??!1,skipUndefined:e.skipUndefined??!0,documentMarkers:e.documentMarkers??!1},n="";return r.documentMarkers&&(n+=`---
|
|
13
13
|
`),n+=br(t,0,r),r.documentMarkers&&(n+=`
|
|
@@ -23,47 +23,47 @@ var hp=Object.create;var ji=Object.defineProperty;var gp=Object.getOwnPropertyDe
|
|
|
23
23
|
`)}function Ji(t,e,r){let n=Object.keys(t);if(n.length===0)return"{}";if(r.sortKeys&&n.sort(),r.flowStyle&&n.length<=3&&n.every(s=>typeof t[s]!="object"||t[s]===null)){let c=`{${n.map(u=>`${u}: ${br(t[u],e,r)}`).join(", ")}}`;if(c.length<=r.lineWidth)return c}let i=" ".repeat(r.indent*e),o=[];for(let s of n){let c=t[s];if(r.skipUndefined&&c===void 0)continue;let u=/^[\w-]+$/.test(s)&&s!=="true"&&s!=="false"&&s!=="null"?s:`"${s}"`;if(typeof c=="object"&&c!==null&&!Array.isArray(c)&&!(c instanceof Date)){o.push(`${i}${u}:`);let l=Ji(c,e+1,r);o.push(...l.split(`
|
|
24
24
|
`))}else if(Array.isArray(c)&&c.length>0&&!r.flowStyle){o.push(`${i}${u}:`);let l=Xi(c,e+1,r);o.push(...l.split(`
|
|
25
25
|
`))}else o.push(`${i}${u}: ${br(c,e+1,r)}`)}return o.join(`
|
|
26
|
-
`)}var at,pn=
|
|
26
|
+
`)}var at,pn=A(()=>{"use strict";at=class extends Error{line;constructor(e,r){super(r!==void 0?`${e} at line ${r+1}`:e),this.name="YamlError",this.line=r}}});function fn(t,e={}){let r={headers:e.headers??!0,columns:e.columns,delimiter:e.delimiter??",",quote:e.quote??'"',skipEmptyLines:e.skipEmptyLines??!0,trim:e.trim??!1,parseNumbers:e.parseNumbers??!1,parseBooleans:e.parseBooleans??!1,comment:e.comment,maxRows:e.maxRows??1e5,maxColumns:e.maxColumns??1e3};if(!t||!t.trim())return[];let n=t.replace(/\r\n/g,`
|
|
27
27
|
`).replace(/\r/g,`
|
|
28
28
|
`),i=[],o=[],s="",c=!1,u=0;for(let p=0;p<n.length;p++){let m=n[p],f=n[p+1];if(c)m===r.quote?f===r.quote?(s+=r.quote,p++):c=!1:s+=m;else if(m===r.quote&&s==="")c=!0;else if(m===r.delimiter){if(o.push(Qi(s,r)),s="",o.length>r.maxColumns)throw new mn(`Maximum columns (${r.maxColumns}) exceeded`,u)}else if(m===`
|
|
29
29
|
`){if(o.push(Qi(s,r)),s="",r.comment&&o.length===1&&o[0].startsWith(r.comment)){o=[];continue}if(r.skipEmptyLines&&o.length===1&&o[0]===""){o=[];continue}if(i.push(o),o=[],u++,u>r.maxRows)throw new mn(`Maximum rows (${r.maxRows}) exceeded`,u)}else s+=m}if((s||o.length>0)&&(o.push(Qi(s,r)),r.comment&&o.length===1&&o[0].startsWith(r.comment)||r.skipEmptyLines&&o.length===1&&o[0]===""||i.push(o)),!r.headers&&!r.columns)return i;let l,d;if(r.columns)l=r.columns,d=r.headers?i.slice(1):i;else{if(i.length===0)return[];l=i[0],d=i.slice(1)}return d.map(p=>{let m={};for(let f=0;f<l.length;f++)m[l[f]]=p[f]??"";return m})}function Qi(t,e){let r=e.trim?t.trim():t;if(e.parseNumbers){let n=Number(r);if(!isNaN(n)&&r!=="")return n}if(e.parseBooleans){let n=r.toLowerCase();if(n==="true")return!0;if(n==="false")return!1}return r}function Ms(t,e={}){let r={headers:e.headers??!0,columns:e.columns,delimiter:e.delimiter??",",quote:e.quote??'"',alwaysQuote:e.alwaysQuote??!1,lineEnding:e.lineEnding??`\r
|
|
30
30
|
`,nullValue:e.nullValue??""};if(!t||t.length===0)return"";let n=[];if(Array.isArray(t[0]))for(let o of t)n.push(o.map(s=>Yi(s,r)).join(r.delimiter));else{let o=t,s;if(r.columns)s=r.columns;else{let c=new Set;for(let u of o)for(let l of Object.keys(u))c.add(l);s=Array.from(c)}r.headers&&n.push(s.map(c=>Yi(c,r)).join(r.delimiter));for(let c of o){let u=s.map(l=>{let d=c[l];return Yi(d,r)});n.push(u.join(r.delimiter))}}return n.join(r.lineEnding)}function Yi(t,e){if(t==null)return e.nullValue;let r=String(t);if(e.alwaysQuote||r.includes(e.quote)||r.includes(e.delimiter)||r.includes(`
|
|
31
|
-
`)||r.includes("\r")){let i=r.replace(new RegExp(e.quote,"g"),e.quote+e.quote);return e.quote+i+e.quote}return r}var mn,hn=T(()=>{"use strict";mn=class extends Error{row;constructor(e,r){super(r!==void 0?`${e} at row ${r+1}`:e),this.name="CsvError",this.row=r}}});var Fs={};Ee(Fs,{Agent:()=>nf,AsyncLocalStorage:()=>Om,AsyncResource:()=>zm,Buffer:()=>_m,Client:()=>of,EventEmitter:()=>Zp,PassThrough:()=>Qp,ProxyAgent:()=>rf,Readable:()=>Kp,Server:()=>xm,Socket:()=>wm,TLSSocket:()=>km,Transform:()=>Jp,WebSocket:()=>af,Writable:()=>Xp,arch:()=>pm,basename:()=>_p,brotliCompress:()=>Nm,brotliDecompress:()=>Bm,channel:()=>jm,connect:()=>vm,cpus:()=>mm,createCipheriv:()=>sm,createConnection:()=>bm,createDecipheriv:()=>am,createHash:()=>em,createHmac:()=>tm,createPrivateKey:()=>nm,createReadStream:()=>Np,createSign:()=>rm,createWriteStream:()=>vr,deepStrictEqual:()=>Gm,default:()=>gn,deflate:()=>Pm,deflateSync:()=>Im,dirname:()=>jp,errors:()=>tf,exec:()=>Ym,execSync:()=>Zm,existsSync:()=>Gt,extname:()=>Wp,finished:()=>Yp,format:()=>lm,freemem:()=>fm,gunzip:()=>Mm,gunzipSync:()=>Um,gzip:()=>Rm,gzipSync:()=>Hm,homedir:()=>gm,inflate:()=>Fm,inflateSync:()=>qm,inspect:()=>um,join:()=>zp,lookup:()=>Sm,mkdir:()=>Bp,ok:()=>Wm,performance:()=>$m,pipeline:()=>Gp,platform:()=>dm,promises:()=>Zi,promisify:()=>cm,randomBytes:()=>im,randomUUID:()=>om,readFile:()=>Up,readFileSync:()=>Mp,readdir:()=>Op,rejects:()=>Xm,request:()=>ef,resolve:()=>Vp,resolve4:()=>Tm,resolve6:()=>Am,resolveCname:()=>Lm,resolveMx:()=>Cm,resolveNs:()=>Dm,resolveTxt:()=>Em,rm:()=>qp,spawn:()=>Jm,spawnSync:()=>Qm,stat:()=>$p,strictEqual:()=>Vm,throws:()=>Km,tmpdir:()=>ym,totalmem:()=>hm,unlink:()=>Ip,writeFile:()=>Hp,writeFileSync:()=>Fp});var ae,G,ve,gn,vr,Np,Mp,Fp,Gt,Bp,Up,Hp,Ip,qp,$p,Op,zp,jp,_p,Wp,Vp,Gp,Kp,Xp,Jp,Qp,Yp,Zp,em,tm,rm,nm,im,om,am,sm,cm,um,lm,dm,pm,mm,fm,hm,gm,ym,bm,vm,wm,xm,km,Sm,Tm,Am,Cm,Em,Dm,Lm,Rm,Pm,Nm,Mm,Fm,Bm,Um,Hm,Im,qm,$m,Om,zm,jm,_m,Wm,Vm,Gm,Km,Xm,Jm,Qm,Ym,Zm,ef,tf,rf,nf,of,af,Zi,At=T(()=>{ae=()=>{},G=()=>Promise.resolve(),ve=class{constructor(){}},gn={},vr=ae,Np=ae,Mp=()=>"",Fp=ae,Gt=()=>!1,Bp=G,Up=G,Hp=G,Ip=G,qp=G,$p=G,Op=G,zp=(...t)=>t.join("/"),jp=t=>t.split("/").slice(0,-1).join("/"),_p=t=>t.split("/").pop()||"",Wp=t=>{let e=t.match(/\.[^.]+$/);return e?e[0]:""},Vp=(...t)=>t.join("/"),Gp=G,Kp=ve,Xp=ve,Jp=ve,Qp=ve,Yp=G,Zp=class{on(){return this}off(){return this}emit(){return!1}once(){return this}addListener(){return this}removeListener(){return this}},em=()=>({update:()=>({digest:()=>""})}),tm=()=>({update:()=>({digest:()=>""})}),rm=()=>({update:()=>({}),sign:()=>""}),nm=()=>({}),im=t=>new Uint8Array(t),om=()=>crypto.randomUUID(),am=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:ae}),sm=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:ae}),cm=t=>t,um=t=>JSON.stringify(t),lm=(...t)=>t.join(" "),dm=()=>"browser",pm=()=>"unknown",mm=()=>[],fm=()=>0,hm=()=>0,gm=()=>"/",ym=()=>"/tmp",bm=ae,vm=ae,wm=ve,xm=ve,km=ve,Sm=(t,e)=>e(null,"127.0.0.1",4),Tm=G,Am=G,Cm=G,Em=G,Dm=G,Lm=G,Rm=(t,e)=>e(null,t),Pm=(t,e)=>e(null,t),Nm=(t,e)=>e(null,t),Mm=(t,e)=>e(null,t),Fm=(t,e)=>e(null,t),Bm=(t,e)=>e(null,t),Um=t=>t,Hm=t=>t,Im=t=>t,qm=t=>t,$m=globalThis.performance,Om=class{getStore(){}run(t,e){return e()}enterWith(){}},zm=ve,jm=()=>({subscribe:ae,unsubscribe:ae,publish:ae,hasSubscribers:!1}),_m={from:t=>new Uint8Array(typeof t=="string"?new TextEncoder().encode(t):t),alloc:t=>new Uint8Array(t),allocUnsafe:t=>new Uint8Array(t),isBuffer:()=>!1},Wm=ae,Vm=ae,Gm=ae,Km=ae,Xm=G,Jm=()=>({on:ae,stdout:{on:ae},stderr:{on:ae},kill:ae}),Qm=()=>({status:0,stdout:"",stderr:""}),Ym=ae,Zm=()=>"",ef=G,tf={ConnectTimeoutError:ve,HeadersTimeoutError:ve,BodyTimeoutError:ve},rf=ve,nf=ve,of=ve,af=ve,Zi={readFile:G,writeFile:G,access:G,stat:G,mkdir:G,unlink:G,readdir:G}});var Hs={};Ee(Hs,{Agent:()=>Mh,AsyncLocalStorage:()=>yh,AsyncResource:()=>bh,Buffer:()=>wh,Client:()=>Fh,EventEmitter:()=>Lf,PassThrough:()=>Df,ProxyAgent:()=>Nh,Readable:()=>Af,Server:()=>Qf,Socket:()=>Jf,TLSSocket:()=>Yf,Transform:()=>Ef,WebSocket:()=>Bh,Writable:()=>Cf,arch:()=>zf,basename:()=>kf,brotliCompress:()=>ch,brotliDecompress:()=>dh,channel:()=>vh,connect:()=>Xf,cpus:()=>jf,createCipheriv:()=>Hf,createConnection:()=>Kf,createDecipheriv:()=>Uf,createHash:()=>Rf,createHmac:()=>Pf,createPrivateKey:()=>Mf,createReadStream:()=>uf,createSign:()=>Nf,createWriteStream:()=>cf,deepStrictEqual:()=>Sh,default:()=>sf,deflate:()=>sh,deflateSync:()=>fh,dirname:()=>xf,errors:()=>Ph,exec:()=>Dh,execSync:()=>Lh,existsSync:()=>pf,extname:()=>Sf,finished:()=>Us,format:()=>$f,freemem:()=>_f,gunzip:()=>uh,gunzipSync:()=>ph,gzip:()=>ah,gzipSync:()=>mh,homedir:()=>Vf,inflate:()=>lh,inflateSync:()=>hh,inspect:()=>qf,join:()=>wf,lookup:()=>Zf,mkdir:()=>mf,ok:()=>xh,performance:()=>gh,pipeline:()=>Bs,platform:()=>Of,promises:()=>Uh,promisify:()=>If,randomBytes:()=>Ff,randomUUID:()=>Bf,readFile:()=>ff,readFileSync:()=>lf,readdir:()=>vf,rejects:()=>Ah,request:()=>Rh,resolve:()=>Tf,resolve4:()=>eh,resolve6:()=>th,resolveCname:()=>oh,resolveMx:()=>rh,resolveNs:()=>ih,resolveTxt:()=>nh,rm:()=>yf,spawn:()=>Ch,spawnSync:()=>Eh,stat:()=>bf,strictEqual:()=>kh,throws:()=>Th,tmpdir:()=>Gf,totalmem:()=>Wf,unlink:()=>gf,writeFile:()=>hf,writeFileSync:()=>df});var se,K,we,sf,cf,uf,lf,df,pf,mf,ff,hf,gf,yf,bf,vf,wf,xf,kf,Sf,Tf,Bs,Af,Cf,Ef,Df,Us,Lf,Rf,Pf,Nf,Mf,Ff,Bf,Uf,Hf,If,qf,$f,Of,zf,jf,_f,Wf,Vf,Gf,Kf,Xf,Jf,Qf,Yf,Zf,eh,th,rh,nh,ih,oh,ah,sh,ch,uh,lh,dh,ph,mh,fh,hh,gh,yh,bh,vh,wh,xh,kh,Sh,Th,Ah,Ch,Eh,Dh,Lh,Rh,Ph,Nh,Mh,Fh,Bh,Uh,yn=T(()=>{se=()=>{},K=()=>Promise.resolve(),we=class{constructor(){}},sf={},cf=se,uf=se,lf=()=>"",df=se,pf=()=>!1,mf=K,ff=K,hf=K,gf=K,yf=K,bf=K,vf=K,wf=(...t)=>t.join("/"),xf=t=>t.split("/").slice(0,-1).join("/"),kf=t=>t.split("/").pop()||"",Sf=t=>{let e=t.match(/\.[^.]+$/);return e?e[0]:""},Tf=(...t)=>t.join("/"),Bs=K,Af=we,Cf=we,Ef=we,Df=we,Us=K,Lf=class{on(){return this}off(){return this}emit(){return!1}once(){return this}addListener(){return this}removeListener(){return this}},Rf=()=>({update:()=>({digest:()=>""})}),Pf=()=>({update:()=>({digest:()=>""})}),Nf=()=>({update:()=>({}),sign:()=>""}),Mf=()=>({}),Ff=t=>new Uint8Array(t),Bf=()=>crypto.randomUUID(),Uf=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:se}),Hf=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:se}),If=t=>t,qf=t=>JSON.stringify(t),$f=(...t)=>t.join(" "),Of=()=>"browser",zf=()=>"unknown",jf=()=>[],_f=()=>0,Wf=()=>0,Vf=()=>"/",Gf=()=>"/tmp",Kf=se,Xf=se,Jf=we,Qf=we,Yf=we,Zf=(t,e)=>e(null,"127.0.0.1",4),eh=K,th=K,rh=K,nh=K,ih=K,oh=K,ah=(t,e)=>e(null,t),sh=(t,e)=>e(null,t),ch=(t,e)=>e(null,t),uh=(t,e)=>e(null,t),lh=(t,e)=>e(null,t),dh=(t,e)=>e(null,t),ph=t=>t,mh=t=>t,fh=t=>t,hh=t=>t,gh=globalThis.performance,yh=class{getStore(){}run(t,e){return e()}enterWith(){}},bh=we,vh=()=>({subscribe:se,unsubscribe:se,publish:se,hasSubscribers:!1}),wh={from:t=>new Uint8Array(typeof t=="string"?new TextEncoder().encode(t):t),alloc:t=>new Uint8Array(t),allocUnsafe:t=>new Uint8Array(t),isBuffer:()=>!1},xh=se,kh=se,Sh=se,Th=se,Ah=K,Ch=()=>({on:se,stdout:{on:se},stderr:{on:se},kill:se}),Eh=()=>({status:0,stdout:"",stderr:""}),Dh=se,Lh=()=>"",Rh=K,Ph={ConnectTimeoutError:we,HeadersTimeoutError:we,BodyTimeoutError:we},Nh=we,Mh=we,Fh=we,Bh=we,Uh={readFile:K,writeFile:K,access:K,stat:K,mkdir:K,unlink:K,readdir:K}});var qs={};Ee(qs,{Agent:()=>u0,AsyncLocalStorage:()=>Gg,AsyncResource:()=>Kg,Buffer:()=>Jg,Client:()=>l0,EventEmitter:()=>og,PassThrough:()=>Is,ProxyAgent:()=>c0,Readable:()=>bn,Server:()=>Eg,Socket:()=>Cg,TLSSocket:()=>Dg,Transform:()=>ng,WebSocket:()=>d0,Writable:()=>rg,arch:()=>bg,basename:()=>Yh,brotliCompress:()=>Ig,brotliDecompress:()=>Og,channel:()=>Xg,connect:()=>Ag,cpus:()=>vg,createCipheriv:()=>mg,createConnection:()=>Tg,createDecipheriv:()=>pg,createHash:()=>ag,createHmac:()=>sg,createPrivateKey:()=>ug,createReadStream:()=>qh,createSign:()=>cg,createWriteStream:()=>Ih,deepStrictEqual:()=>Zg,default:()=>Hh,deflate:()=>Hg,deflateSync:()=>_g,dirname:()=>Qh,errors:()=>s0,exec:()=>i0,execSync:()=>o0,existsSync:()=>zh,extname:()=>Zh,finished:()=>ig,format:()=>gg,freemem:()=>wg,gunzip:()=>qg,gunzipSync:()=>zg,gzip:()=>Ug,gzipSync:()=>jg,homedir:()=>kg,inflate:()=>$g,inflateSync:()=>Wg,inspect:()=>hg,join:()=>Jh,lookup:()=>Lg,mkdir:()=>jh,ok:()=>Qg,performance:()=>Vg,pipeline:()=>tg,platform:()=>yg,promises:()=>p0,promisify:()=>fg,randomBytes:()=>lg,randomUUID:()=>dg,readFile:()=>_h,readFileSync:()=>$h,readdir:()=>Xh,rejects:()=>t0,request:()=>a0,resolve:()=>eg,resolve4:()=>Rg,resolve6:()=>Pg,resolveCname:()=>Bg,resolveMx:()=>Ng,resolveNs:()=>Fg,resolveTxt:()=>Mg,rm:()=>Gh,spawn:()=>r0,spawnSync:()=>n0,stat:()=>Kh,strictEqual:()=>Yg,throws:()=>e0,tmpdir:()=>Sg,totalmem:()=>xg,unlink:()=>Vh,writeFile:()=>Wh,writeFileSync:()=>Oh});var ce,X,xe,Hh,Ih,qh,$h,Oh,zh,jh,_h,Wh,Vh,Gh,Kh,Xh,Jh,Qh,Yh,Zh,eg,tg,bn,rg,ng,Is,ig,og,ag,sg,cg,ug,lg,dg,pg,mg,fg,hg,gg,yg,bg,vg,wg,xg,kg,Sg,Tg,Ag,Cg,Eg,Dg,Lg,Rg,Pg,Ng,Mg,Fg,Bg,Ug,Hg,Ig,qg,$g,Og,zg,jg,_g,Wg,Vg,Gg,Kg,Xg,Jg,Qg,Yg,Zg,e0,t0,r0,n0,i0,o0,a0,s0,c0,u0,l0,d0,p0,vn=T(()=>{ce=()=>{},X=()=>Promise.resolve(),xe=class{constructor(){}},Hh={},Ih=ce,qh=ce,$h=()=>"",Oh=ce,zh=()=>!1,jh=X,_h=X,Wh=X,Vh=X,Gh=X,Kh=X,Xh=X,Jh=(...t)=>t.join("/"),Qh=t=>t.split("/").slice(0,-1).join("/"),Yh=t=>t.split("/").pop()||"",Zh=t=>{let e=t.match(/\.[^.]+$/);return e?e[0]:""},eg=(...t)=>t.join("/"),tg=X,bn=xe,rg=xe,ng=xe,Is=xe,ig=X,og=class{on(){return this}off(){return this}emit(){return!1}once(){return this}addListener(){return this}removeListener(){return this}},ag=()=>({update:()=>({digest:()=>""})}),sg=()=>({update:()=>({digest:()=>""})}),cg=()=>({update:()=>({}),sign:()=>""}),ug=()=>({}),lg=t=>new Uint8Array(t),dg=()=>crypto.randomUUID(),pg=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:ce}),mg=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:ce}),fg=t=>t,hg=t=>JSON.stringify(t),gg=(...t)=>t.join(" "),yg=()=>"browser",bg=()=>"unknown",vg=()=>[],wg=()=>0,xg=()=>0,kg=()=>"/",Sg=()=>"/tmp",Tg=ce,Ag=ce,Cg=xe,Eg=xe,Dg=xe,Lg=(t,e)=>e(null,"127.0.0.1",4),Rg=X,Pg=X,Ng=X,Mg=X,Fg=X,Bg=X,Ug=(t,e)=>e(null,t),Hg=(t,e)=>e(null,t),Ig=(t,e)=>e(null,t),qg=(t,e)=>e(null,t),$g=(t,e)=>e(null,t),Og=(t,e)=>e(null,t),zg=t=>t,jg=t=>t,_g=t=>t,Wg=t=>t,Vg=globalThis.performance,Gg=class{getStore(){}run(t,e){return e()}enterWith(){}},Kg=xe,Xg=()=>({subscribe:ce,unsubscribe:ce,publish:ce,hasSubscribers:!1}),Jg={from:t=>new Uint8Array(typeof t=="string"?new TextEncoder().encode(t):t),alloc:t=>new Uint8Array(t),allocUnsafe:t=>new Uint8Array(t),isBuffer:()=>!1},Qg=ce,Yg=ce,Zg=ce,e0=ce,t0=X,r0=()=>({on:ce,stdout:{on:ce},stderr:{on:ce},kill:ce}),n0=()=>({status:0,stdout:"",stderr:""}),i0=ce,o0=()=>"",a0=X,s0={ConnectTimeoutError:xe,HeadersTimeoutError:xe,BodyTimeoutError:xe},c0=xe,u0=xe,l0=xe,d0=xe,p0={readFile:X,writeFile:X,access:X,stat:X,mkdir:X,unlink:X,readdir:X}});function mt(t){try{let e=new URL(t);return`${e.protocol}//${e.host}`}catch{return t}}function to(t){if(!t)return;let e=t.toLowerCase();if(e==="h2"||e==="http/2"||e==="http/2.0")return"h2";if(e==="h3"||e.startsWith("h3-"))return"h3";if(e==="http/1.1"||e==="http/1.0"||e==="http")return"http/1.1"}function Cn(){return eo||(eo=new xr),eo}var xr,eo,En=T(()=>{"use strict";xr=class{cache;options;constructor(e={}){this.cache=new Map,this.options={ttl:e.ttl??3600*1e3,maxSize:e.maxSize??1e3,failureThreshold:e.failureThreshold??3}}get(e){let r=mt(e),n=this.cache.get(r);if(n){if(Date.now()-n.detectedAt>this.options.ttl){this.cache.delete(r);return}return n.protocol}}getEntry(e){let r=mt(e),n=this.cache.get(r);if(n){if(Date.now()-n.detectedAt>this.options.ttl){this.cache.delete(r);return}return n}}set(e,r){let n=mt(e),i=to(r)??r;if(this.cache.size>=this.options.maxSize&&!this.cache.has(n)){let s=this.cache.keys().next().value;s&&this.cache.delete(s)}let o=this.cache.get(n);this.cache.set(n,{protocol:i,detectedAt:Date.now(),successCount:((o==null?void 0:o.successCount)??0)+1,failureCount:(o==null?void 0:o.failureCount)??0,http2Rejected:o==null?void 0:o.http2Rejected}),this.cache.delete(n),this.cache.set(n,this.cache.get(n)??{protocol:i,detectedAt:Date.now(),successCount:1,failureCount:0})}recordSuccess(e){let r=mt(e),n=this.cache.get(r);n&&(n.successCount++,n.failureCount=Math.max(0,n.failureCount-1))}recordFailure(e,r=!1){let n=mt(e),i=this.cache.get(n);return i?(i.failureCount++,r&&(i.http2Rejected=!0),i.failureCount>=this.options.failureThreshold):!1}hasHttp2Issues(e){let r=this.getEntry(e);return r?r.http2Rejected===!0||r.protocol==="http/1.1"&&r.failureCount>=this.options.failureThreshold:!1}shouldTryHttp2(e){let r=this.getEntry(e);return r?r.http2Rejected?!1:r.protocol==="h2"||r.protocol==="h3"?!0:!(r.failureCount>=this.options.failureThreshold):!0}delete(e){let r=mt(e);return this.cache.delete(r)}clear(){this.cache.clear()}getStats(){let e=[],r=[],n=[];for(let[i,o]of this.cache.entries())o.protocol==="h2"||o.protocol==="h3"?e.push(i):r.push(i),(o.http2Rejected||o.failureCount>=this.options.failureThreshold)&&n.push(i);return{size:this.cache.size,maxSize:this.options.maxSize,origins:Array.from(this.cache.keys()),http2Origins:e,http1Origins:r,problematicOrigins:n}}toJSON(){let e={};for(let[r,n]of this.cache.entries())e[r]=n;return e}fromJSON(e){let r=Date.now();for(let[n,i]of Object.entries(e))r-i.detectedAt<=this.options.ttl&&this.cache.set(n,i)}},eo=null});function Fe(t,e,r){let n=typeof r=="number"?{total:r}:r||{},{total:i,direction:o,throttleMs:s=100}=n,c=0,u=Date.now(),l=0,d=0,p=u,m=0,f=.3,h=(g,y)=>{let C=(g-u)/1e3,b=g-p,x=c-d;if(b>0){let S=x/b*1e3;m=m===0?S:m*(1-f)+S*f}d=c,p=g;let k=m,v;i&&(v=y?100:Math.min(c/i*100,99.9));let w={loaded:c,transferred:c,total:i,percent:v,rate:k,estimated:i&&k>0?(i-c)/k*1e3:void 0,direction:o};e(w),l=g};return new ReadableStream({async start(g){let y=t.getReader();try{for(h(Date.now(),!1);;){let{done:C,value:b}=await y.read();if(C){h(Date.now(),!0),g.close();break}c+=b.byteLength;let x=Date.now();(x-l>=s||i&&c===i)&&h(x,!1),g.enqueue(b)}}catch(C){throw g.error(C),C}}})}var no=T(()=>{"use strict"});function Rn(t){if(!t)return"";let e=t;return e=e.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi,""),e=e.replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi,""),e=e.replace(/<!--[\s\S]*?-->/g,""),e=e.replace(/<\/(div|p|h[1-6]|li|ul|ol|tr|table|section|article|main|header|footer|nav)>/gi,`
|
|
31
|
+
`)||r.includes("\r")){let i=r.replace(new RegExp(e.quote,"g"),e.quote+e.quote);return e.quote+i+e.quote}return r}var mn,hn=A(()=>{"use strict";mn=class extends Error{row;constructor(e,r){super(r!==void 0?`${e} at row ${r+1}`:e),this.name="CsvError",this.row=r}}});var Fs={};Ee(Fs,{Agent:()=>nf,AsyncLocalStorage:()=>Om,AsyncResource:()=>zm,Buffer:()=>_m,Client:()=>of,EventEmitter:()=>Zp,PassThrough:()=>Qp,ProxyAgent:()=>rf,Readable:()=>Kp,Server:()=>xm,Socket:()=>wm,TLSSocket:()=>km,Transform:()=>Jp,WebSocket:()=>af,Writable:()=>Xp,arch:()=>pm,basename:()=>_p,brotliCompress:()=>Nm,brotliDecompress:()=>Bm,channel:()=>jm,connect:()=>vm,cpus:()=>mm,createCipheriv:()=>sm,createConnection:()=>bm,createDecipheriv:()=>am,createHash:()=>em,createHmac:()=>tm,createPrivateKey:()=>nm,createReadStream:()=>Np,createSign:()=>rm,createWriteStream:()=>vr,deepStrictEqual:()=>Gm,default:()=>gn,deflate:()=>Pm,deflateSync:()=>Hm,dirname:()=>jp,errors:()=>tf,exec:()=>Ym,execSync:()=>Zm,existsSync:()=>Gt,extname:()=>Wp,finished:()=>Yp,format:()=>lm,freemem:()=>fm,gunzip:()=>Mm,gunzipSync:()=>Um,gzip:()=>Rm,gzipSync:()=>Im,homedir:()=>gm,inflate:()=>Fm,inflateSync:()=>qm,inspect:()=>um,join:()=>zp,lookup:()=>Tm,mkdir:()=>Bp,ok:()=>Wm,performance:()=>$m,pipeline:()=>Gp,platform:()=>dm,promises:()=>Zi,promisify:()=>cm,randomBytes:()=>im,randomUUID:()=>om,readFile:()=>Up,readFileSync:()=>Mp,readdir:()=>Op,rejects:()=>Xm,request:()=>ef,resolve:()=>Vp,resolve4:()=>Sm,resolve6:()=>Am,resolveCname:()=>Lm,resolveMx:()=>Cm,resolveNs:()=>Dm,resolveTxt:()=>Em,rm:()=>qp,spawn:()=>Jm,spawnSync:()=>Qm,stat:()=>$p,strictEqual:()=>Vm,throws:()=>Km,tmpdir:()=>ym,totalmem:()=>hm,unlink:()=>Hp,writeFile:()=>Ip,writeFileSync:()=>Fp});var ae,G,ve,gn,vr,Np,Mp,Fp,Gt,Bp,Up,Ip,Hp,qp,$p,Op,zp,jp,_p,Wp,Vp,Gp,Kp,Xp,Jp,Qp,Yp,Zp,em,tm,rm,nm,im,om,am,sm,cm,um,lm,dm,pm,mm,fm,hm,gm,ym,bm,vm,wm,xm,km,Tm,Sm,Am,Cm,Em,Dm,Lm,Rm,Pm,Nm,Mm,Fm,Bm,Um,Im,Hm,qm,$m,Om,zm,jm,_m,Wm,Vm,Gm,Km,Xm,Jm,Qm,Ym,Zm,ef,tf,rf,nf,of,af,Zi,At=A(()=>{ae=()=>{},G=()=>Promise.resolve(),ve=class{constructor(){}},gn={},vr=ae,Np=ae,Mp=()=>"",Fp=ae,Gt=()=>!1,Bp=G,Up=G,Ip=G,Hp=G,qp=G,$p=G,Op=G,zp=(...t)=>t.join("/"),jp=t=>t.split("/").slice(0,-1).join("/"),_p=t=>t.split("/").pop()||"",Wp=t=>{let e=t.match(/\.[^.]+$/);return e?e[0]:""},Vp=(...t)=>t.join("/"),Gp=G,Kp=ve,Xp=ve,Jp=ve,Qp=ve,Yp=G,Zp=class{on(){return this}off(){return this}emit(){return!1}once(){return this}addListener(){return this}removeListener(){return this}},em=()=>({update:()=>({digest:()=>""})}),tm=()=>({update:()=>({digest:()=>""})}),rm=()=>({update:()=>({}),sign:()=>""}),nm=()=>({}),im=t=>new Uint8Array(t),om=()=>crypto.randomUUID(),am=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:ae}),sm=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:ae}),cm=t=>t,um=t=>JSON.stringify(t),lm=(...t)=>t.join(" "),dm=()=>"browser",pm=()=>"unknown",mm=()=>[],fm=()=>0,hm=()=>0,gm=()=>"/",ym=()=>"/tmp",bm=ae,vm=ae,wm=ve,xm=ve,km=ve,Tm=(t,e)=>e(null,"127.0.0.1",4),Sm=G,Am=G,Cm=G,Em=G,Dm=G,Lm=G,Rm=(t,e)=>e(null,t),Pm=(t,e)=>e(null,t),Nm=(t,e)=>e(null,t),Mm=(t,e)=>e(null,t),Fm=(t,e)=>e(null,t),Bm=(t,e)=>e(null,t),Um=t=>t,Im=t=>t,Hm=t=>t,qm=t=>t,$m=globalThis.performance,Om=class{getStore(){}run(t,e){return e()}enterWith(){}},zm=ve,jm=()=>({subscribe:ae,unsubscribe:ae,publish:ae,hasSubscribers:!1}),_m={from:t=>new Uint8Array(typeof t=="string"?new TextEncoder().encode(t):t),alloc:t=>new Uint8Array(t),allocUnsafe:t=>new Uint8Array(t),isBuffer:()=>!1},Wm=ae,Vm=ae,Gm=ae,Km=ae,Xm=G,Jm=()=>({on:ae,stdout:{on:ae},stderr:{on:ae},kill:ae}),Qm=()=>({status:0,stdout:"",stderr:""}),Ym=ae,Zm=()=>"",ef=G,tf={ConnectTimeoutError:ve,HeadersTimeoutError:ve,BodyTimeoutError:ve},rf=ve,nf=ve,of=ve,af=ve,Zi={readFile:G,writeFile:G,access:G,stat:G,mkdir:G,unlink:G,readdir:G}});var Is={};Ee(Is,{Agent:()=>Mh,AsyncLocalStorage:()=>yh,AsyncResource:()=>bh,Buffer:()=>wh,Client:()=>Fh,EventEmitter:()=>Lf,PassThrough:()=>Df,ProxyAgent:()=>Nh,Readable:()=>Af,Server:()=>Qf,Socket:()=>Jf,TLSSocket:()=>Yf,Transform:()=>Ef,WebSocket:()=>Bh,Writable:()=>Cf,arch:()=>zf,basename:()=>kf,brotliCompress:()=>ch,brotliDecompress:()=>dh,channel:()=>vh,connect:()=>Xf,cpus:()=>jf,createCipheriv:()=>If,createConnection:()=>Kf,createDecipheriv:()=>Uf,createHash:()=>Rf,createHmac:()=>Pf,createPrivateKey:()=>Mf,createReadStream:()=>uf,createSign:()=>Nf,createWriteStream:()=>cf,deepStrictEqual:()=>Th,default:()=>sf,deflate:()=>sh,deflateSync:()=>fh,dirname:()=>xf,errors:()=>Ph,exec:()=>Dh,execSync:()=>Lh,existsSync:()=>pf,extname:()=>Tf,finished:()=>Us,format:()=>$f,freemem:()=>_f,gunzip:()=>uh,gunzipSync:()=>ph,gzip:()=>ah,gzipSync:()=>mh,homedir:()=>Vf,inflate:()=>lh,inflateSync:()=>hh,inspect:()=>qf,join:()=>wf,lookup:()=>Zf,mkdir:()=>mf,ok:()=>xh,performance:()=>gh,pipeline:()=>Bs,platform:()=>Of,promises:()=>Uh,promisify:()=>Hf,randomBytes:()=>Ff,randomUUID:()=>Bf,readFile:()=>ff,readFileSync:()=>lf,readdir:()=>vf,rejects:()=>Ah,request:()=>Rh,resolve:()=>Sf,resolve4:()=>eh,resolve6:()=>th,resolveCname:()=>oh,resolveMx:()=>rh,resolveNs:()=>ih,resolveTxt:()=>nh,rm:()=>yf,spawn:()=>Ch,spawnSync:()=>Eh,stat:()=>bf,strictEqual:()=>kh,throws:()=>Sh,tmpdir:()=>Gf,totalmem:()=>Wf,unlink:()=>gf,writeFile:()=>hf,writeFileSync:()=>df});var se,K,we,sf,cf,uf,lf,df,pf,mf,ff,hf,gf,yf,bf,vf,wf,xf,kf,Tf,Sf,Bs,Af,Cf,Ef,Df,Us,Lf,Rf,Pf,Nf,Mf,Ff,Bf,Uf,If,Hf,qf,$f,Of,zf,jf,_f,Wf,Vf,Gf,Kf,Xf,Jf,Qf,Yf,Zf,eh,th,rh,nh,ih,oh,ah,sh,ch,uh,lh,dh,ph,mh,fh,hh,gh,yh,bh,vh,wh,xh,kh,Th,Sh,Ah,Ch,Eh,Dh,Lh,Rh,Ph,Nh,Mh,Fh,Bh,Uh,yn=A(()=>{se=()=>{},K=()=>Promise.resolve(),we=class{constructor(){}},sf={},cf=se,uf=se,lf=()=>"",df=se,pf=()=>!1,mf=K,ff=K,hf=K,gf=K,yf=K,bf=K,vf=K,wf=(...t)=>t.join("/"),xf=t=>t.split("/").slice(0,-1).join("/"),kf=t=>t.split("/").pop()||"",Tf=t=>{let e=t.match(/\.[^.]+$/);return e?e[0]:""},Sf=(...t)=>t.join("/"),Bs=K,Af=we,Cf=we,Ef=we,Df=we,Us=K,Lf=class{on(){return this}off(){return this}emit(){return!1}once(){return this}addListener(){return this}removeListener(){return this}},Rf=()=>({update:()=>({digest:()=>""})}),Pf=()=>({update:()=>({digest:()=>""})}),Nf=()=>({update:()=>({}),sign:()=>""}),Mf=()=>({}),Ff=t=>new Uint8Array(t),Bf=()=>crypto.randomUUID(),Uf=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:se}),If=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:se}),Hf=t=>t,qf=t=>JSON.stringify(t),$f=(...t)=>t.join(" "),Of=()=>"browser",zf=()=>"unknown",jf=()=>[],_f=()=>0,Wf=()=>0,Vf=()=>"/",Gf=()=>"/tmp",Kf=se,Xf=se,Jf=we,Qf=we,Yf=we,Zf=(t,e)=>e(null,"127.0.0.1",4),eh=K,th=K,rh=K,nh=K,ih=K,oh=K,ah=(t,e)=>e(null,t),sh=(t,e)=>e(null,t),ch=(t,e)=>e(null,t),uh=(t,e)=>e(null,t),lh=(t,e)=>e(null,t),dh=(t,e)=>e(null,t),ph=t=>t,mh=t=>t,fh=t=>t,hh=t=>t,gh=globalThis.performance,yh=class{getStore(){}run(t,e){return e()}enterWith(){}},bh=we,vh=()=>({subscribe:se,unsubscribe:se,publish:se,hasSubscribers:!1}),wh={from:t=>new Uint8Array(typeof t=="string"?new TextEncoder().encode(t):t),alloc:t=>new Uint8Array(t),allocUnsafe:t=>new Uint8Array(t),isBuffer:()=>!1},xh=se,kh=se,Th=se,Sh=se,Ah=K,Ch=()=>({on:se,stdout:{on:se},stderr:{on:se},kill:se}),Eh=()=>({status:0,stdout:"",stderr:""}),Dh=se,Lh=()=>"",Rh=K,Ph={ConnectTimeoutError:we,HeadersTimeoutError:we,BodyTimeoutError:we},Nh=we,Mh=we,Fh=we,Bh=we,Uh={readFile:K,writeFile:K,access:K,stat:K,mkdir:K,unlink:K,readdir:K}});var qs={};Ee(qs,{Agent:()=>u0,AsyncLocalStorage:()=>Gg,AsyncResource:()=>Kg,Buffer:()=>Jg,Client:()=>l0,EventEmitter:()=>og,PassThrough:()=>Hs,ProxyAgent:()=>c0,Readable:()=>bn,Server:()=>Eg,Socket:()=>Cg,TLSSocket:()=>Dg,Transform:()=>ng,WebSocket:()=>d0,Writable:()=>rg,arch:()=>bg,basename:()=>Yh,brotliCompress:()=>Hg,brotliDecompress:()=>Og,channel:()=>Xg,connect:()=>Ag,cpus:()=>vg,createCipheriv:()=>mg,createConnection:()=>Sg,createDecipheriv:()=>pg,createHash:()=>ag,createHmac:()=>sg,createPrivateKey:()=>ug,createReadStream:()=>qh,createSign:()=>cg,createWriteStream:()=>Hh,deepStrictEqual:()=>Zg,default:()=>Ih,deflate:()=>Ig,deflateSync:()=>_g,dirname:()=>Qh,errors:()=>s0,exec:()=>i0,execSync:()=>o0,existsSync:()=>zh,extname:()=>Zh,finished:()=>ig,format:()=>gg,freemem:()=>wg,gunzip:()=>qg,gunzipSync:()=>zg,gzip:()=>Ug,gzipSync:()=>jg,homedir:()=>kg,inflate:()=>$g,inflateSync:()=>Wg,inspect:()=>hg,join:()=>Jh,lookup:()=>Lg,mkdir:()=>jh,ok:()=>Qg,performance:()=>Vg,pipeline:()=>tg,platform:()=>yg,promises:()=>p0,promisify:()=>fg,randomBytes:()=>lg,randomUUID:()=>dg,readFile:()=>_h,readFileSync:()=>$h,readdir:()=>Xh,rejects:()=>t0,request:()=>a0,resolve:()=>eg,resolve4:()=>Rg,resolve6:()=>Pg,resolveCname:()=>Bg,resolveMx:()=>Ng,resolveNs:()=>Fg,resolveTxt:()=>Mg,rm:()=>Gh,spawn:()=>r0,spawnSync:()=>n0,stat:()=>Kh,strictEqual:()=>Yg,throws:()=>e0,tmpdir:()=>Tg,totalmem:()=>xg,unlink:()=>Vh,writeFile:()=>Wh,writeFileSync:()=>Oh});var ce,X,xe,Ih,Hh,qh,$h,Oh,zh,jh,_h,Wh,Vh,Gh,Kh,Xh,Jh,Qh,Yh,Zh,eg,tg,bn,rg,ng,Hs,ig,og,ag,sg,cg,ug,lg,dg,pg,mg,fg,hg,gg,yg,bg,vg,wg,xg,kg,Tg,Sg,Ag,Cg,Eg,Dg,Lg,Rg,Pg,Ng,Mg,Fg,Bg,Ug,Ig,Hg,qg,$g,Og,zg,jg,_g,Wg,Vg,Gg,Kg,Xg,Jg,Qg,Yg,Zg,e0,t0,r0,n0,i0,o0,a0,s0,c0,u0,l0,d0,p0,vn=A(()=>{ce=()=>{},X=()=>Promise.resolve(),xe=class{constructor(){}},Ih={},Hh=ce,qh=ce,$h=()=>"",Oh=ce,zh=()=>!1,jh=X,_h=X,Wh=X,Vh=X,Gh=X,Kh=X,Xh=X,Jh=(...t)=>t.join("/"),Qh=t=>t.split("/").slice(0,-1).join("/"),Yh=t=>t.split("/").pop()||"",Zh=t=>{let e=t.match(/\.[^.]+$/);return e?e[0]:""},eg=(...t)=>t.join("/"),tg=X,bn=xe,rg=xe,ng=xe,Hs=xe,ig=X,og=class{on(){return this}off(){return this}emit(){return!1}once(){return this}addListener(){return this}removeListener(){return this}},ag=()=>({update:()=>({digest:()=>""})}),sg=()=>({update:()=>({digest:()=>""})}),cg=()=>({update:()=>({}),sign:()=>""}),ug=()=>({}),lg=t=>new Uint8Array(t),dg=()=>crypto.randomUUID(),pg=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:ce}),mg=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:ce}),fg=t=>t,hg=t=>JSON.stringify(t),gg=(...t)=>t.join(" "),yg=()=>"browser",bg=()=>"unknown",vg=()=>[],wg=()=>0,xg=()=>0,kg=()=>"/",Tg=()=>"/tmp",Sg=ce,Ag=ce,Cg=xe,Eg=xe,Dg=xe,Lg=(t,e)=>e(null,"127.0.0.1",4),Rg=X,Pg=X,Ng=X,Mg=X,Fg=X,Bg=X,Ug=(t,e)=>e(null,t),Ig=(t,e)=>e(null,t),Hg=(t,e)=>e(null,t),qg=(t,e)=>e(null,t),$g=(t,e)=>e(null,t),Og=(t,e)=>e(null,t),zg=t=>t,jg=t=>t,_g=t=>t,Wg=t=>t,Vg=globalThis.performance,Gg=class{getStore(){}run(t,e){return e()}enterWith(){}},Kg=xe,Xg=()=>({subscribe:ce,unsubscribe:ce,publish:ce,hasSubscribers:!1}),Jg={from:t=>new Uint8Array(typeof t=="string"?new TextEncoder().encode(t):t),alloc:t=>new Uint8Array(t),allocUnsafe:t=>new Uint8Array(t),isBuffer:()=>!1},Qg=ce,Yg=ce,Zg=ce,e0=ce,t0=X,r0=()=>({on:ce,stdout:{on:ce},stderr:{on:ce},kill:ce}),n0=()=>({status:0,stdout:"",stderr:""}),i0=ce,o0=()=>"",a0=X,s0={ConnectTimeoutError:xe,HeadersTimeoutError:xe,BodyTimeoutError:xe},c0=xe,u0=xe,l0=xe,d0=xe,p0={readFile:X,writeFile:X,access:X,stat:X,mkdir:X,unlink:X,readdir:X}});function mt(t){try{let e=new URL(t);return`${e.protocol}//${e.host}`}catch{return t}}function to(t){if(!t)return;let e=t.toLowerCase();if(e==="h2"||e==="http/2"||e==="http/2.0")return"h2";if(e==="h3"||e.startsWith("h3-"))return"h3";if(e==="http/1.1"||e==="http/1.0"||e==="http")return"http/1.1"}function Cn(){return eo||(eo=new xr),eo}var xr,eo,En=A(()=>{"use strict";xr=class{cache;options;constructor(e={}){this.cache=new Map,this.options={ttl:e.ttl??3600*1e3,maxSize:e.maxSize??1e3,failureThreshold:e.failureThreshold??3}}get(e){let r=mt(e),n=this.cache.get(r);if(n){if(Date.now()-n.detectedAt>this.options.ttl){this.cache.delete(r);return}return n.protocol}}getEntry(e){let r=mt(e),n=this.cache.get(r);if(n){if(Date.now()-n.detectedAt>this.options.ttl){this.cache.delete(r);return}return n}}set(e,r){let n=mt(e),i=to(r)??r;if(this.cache.size>=this.options.maxSize&&!this.cache.has(n)){let s=this.cache.keys().next().value;s&&this.cache.delete(s)}let o=this.cache.get(n);this.cache.set(n,{protocol:i,detectedAt:Date.now(),successCount:((o==null?void 0:o.successCount)??0)+1,failureCount:(o==null?void 0:o.failureCount)??0,http2Rejected:o==null?void 0:o.http2Rejected}),this.cache.delete(n),this.cache.set(n,this.cache.get(n)??{protocol:i,detectedAt:Date.now(),successCount:1,failureCount:0})}recordSuccess(e){let r=mt(e),n=this.cache.get(r);n&&(n.successCount++,n.failureCount=Math.max(0,n.failureCount-1))}recordFailure(e,r=!1){let n=mt(e),i=this.cache.get(n);return i?(i.failureCount++,r&&(i.http2Rejected=!0),i.failureCount>=this.options.failureThreshold):!1}hasHttp2Issues(e){let r=this.getEntry(e);return r?r.http2Rejected===!0||r.protocol==="http/1.1"&&r.failureCount>=this.options.failureThreshold:!1}shouldTryHttp2(e){let r=this.getEntry(e);return r?r.http2Rejected?!1:r.protocol==="h2"||r.protocol==="h3"?!0:!(r.failureCount>=this.options.failureThreshold):!0}delete(e){let r=mt(e);return this.cache.delete(r)}clear(){this.cache.clear()}getStats(){let e=[],r=[],n=[];for(let[i,o]of this.cache.entries())o.protocol==="h2"||o.protocol==="h3"?e.push(i):r.push(i),(o.http2Rejected||o.failureCount>=this.options.failureThreshold)&&n.push(i);return{size:this.cache.size,maxSize:this.options.maxSize,origins:Array.from(this.cache.keys()),http2Origins:e,http1Origins:r,problematicOrigins:n}}toJSON(){let e={};for(let[r,n]of this.cache.entries())e[r]=n;return e}fromJSON(e){let r=Date.now();for(let[n,i]of Object.entries(e))r-i.detectedAt<=this.options.ttl&&this.cache.set(n,i)}},eo=null});function Fe(t,e,r){let n=typeof r=="number"?{total:r}:r||{},{total:i,direction:o,throttleMs:s=100}=n,c=0,u=Date.now(),l=0,d=0,p=u,m=0,f=.3,h=(g,y)=>{let C=(g-u)/1e3,b=g-p,w=c-d;if(b>0){let k=w/b*1e3;m=m===0?k:m*(1-f)+k*f}d=c,p=g;let x=m,v;i&&(v=y?100:Math.min(c/i*100,99.9));let T={loaded:c,transferred:c,total:i,percent:v,rate:x,estimated:i&&x>0?(i-c)/x*1e3:void 0,direction:o};e(T),l=g};return new ReadableStream({async start(g){let y=t.getReader();try{for(h(Date.now(),!1);;){let{done:C,value:b}=await y.read();if(C){h(Date.now(),!0),g.close();break}c+=b.byteLength;let w=Date.now();(w-l>=s||i&&c===i)&&h(w,!1),g.enqueue(b)}}catch(C){throw g.error(C),C}}})}var no=A(()=>{"use strict"});function Rn(t){if(!t)return"";let e=t;return e=e.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi,""),e=e.replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi,""),e=e.replace(/<!--[\s\S]*?-->/g,""),e=e.replace(/<\/(div|p|h[1-6]|li|ul|ol|tr|table|section|article|main|header|footer|nav)>/gi,`
|
|
32
32
|
`),e=e.replace(/<(br|hr)\s*\/?>/gi,`
|
|
33
33
|
`),e=e.replace(/<[^>]+>/g," "),e=e.replace(/ /g," ").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'"),e=e.replace(/[ \t]+/g," "),e=e.replace(/\n\s*\n\s*\n+/g,`
|
|
34
34
|
|
|
35
|
-
`),e.trim()}var co=
|
|
35
|
+
`),e.trim()}var co=A(()=>{"use strict"});async function*Pn(t){if(!t.body)throw new pe("Response body is empty; cannot parse SSE stream.",{streamType:"sse",retriable:!0});let e=t.body.getReader(),r=new TextDecoder,n="",i={data:""};try{for(;;){let{done:o,value:s}=await e.read();if(o)break;n+=r.decode(s,{stream:!0});let c=n.split(/\r\n|\r|\n/);n=c.pop()||"";for(let u of c){if(u.trim()===""){(i.data||i.event||i.id)&&(i.data.endsWith(`
|
|
36
36
|
`)&&(i.data=i.data.slice(0,-1)),yield i,i={data:""});continue}let l=u.indexOf(":"),d=u,p="";switch(l!==-1&&(d=u.slice(0,l),p=u.slice(l+1),p.startsWith(" ")&&(p=p.slice(1))),d){case"data":i.data+=p+`
|
|
37
|
-
`;break;case"event":i.event=p;break;case"id":i.id=p;break;case"retry":let m=parseInt(p,10);isNaN(m)||(i.retry=m);break}}}n.trim()}finally{e.releaseLock()}}var uo=T(()=>{"use strict";V()});function B0(t){let e={hit:!1},r=t.get("cf-cache-status");r&&(e.provider="cloudflare",e.status=r.toUpperCase(),e.hit=r.toUpperCase()==="HIT");let n=t.get("x-cache");if(n){let l=n.toUpperCase();e.hit=l.includes("HIT"),l.includes("FASTLY")?e.provider="fastly":l.includes("VARNISH")&&(e.provider="varnish"),l.includes("HIT")?e.status="HIT":l.includes("MISS")?e.status="MISS":l.includes("EXPIRED")?e.status="EXPIRED":l.includes("STALE")&&(e.status="STALE")}let i=t.get("x-akamai-cache-status");i&&(e.provider="akamai",e.hit=i.toUpperCase().includes("HIT"));let o=t.get("x-cache");t.get("x-amz-cf-id")&&(e.provider="cloudfront");let c=t.get("cache-control");if(c){let l=c.match(/max-age=(\d+)/);l&&(e.maxAge=parseInt(l[1],10))}let u=t.get("age");return u&&(e.age=parseInt(u,10)),e}function H0(t){let e={metadata:{}};for(let r of U0)if(r.detect(t)){e.provider=r.name,e.category=r.category;let n=r.extract(t);n.region&&(e.region=n.region),n.server&&(e.server=n.server),n.metadata&&Object.assign(e.metadata,n.metadata);break}if(!e.provider){let r=t.get("server");if(r){e.server=r;let n=r.toLowerCase();n.includes("cloudflare")?(e.provider="cloudflare",e.category="cdn"):n.includes("cloudfront")?(e.provider="aws-cloudfront",e.category="cloud"):n.includes("fastly")?(e.provider="fastly",e.category="cdn"):n.includes("akamai")?(e.provider="akamai",e.category="cdn"):n.includes("nginx")?(e.provider="nginx",e.category="server"):n.includes("apache")?(e.provider="apache",e.category="server"):n.includes("varnish")?(e.provider="varnish",e.category="proxy"):(e.provider="unknown",e.category="unknown")}}if(!e.provider){let r=t.get("via");if(r){let n=r.toLowerCase();n.includes("cloudflare")?(e.provider="cloudflare",e.category="cdn"):n.includes("akamai")?(e.provider="akamai",e.category="cdn"):n.includes("varnish")?(e.provider="varnish",e.category="proxy"):n.includes("squid")&&(e.provider="squid",e.category="proxy")}}return Object.keys(e.metadata||{}).length===0&&delete e.metadata,e}function I0(t,e){let r={limited:e===429},n=t.get("x-ratelimit-limit")||t.get("ratelimit-limit"),i=t.get("x-ratelimit-remaining")||t.get("ratelimit-remaining"),o=t.get("x-ratelimit-reset")||t.get("ratelimit-reset");if(n&&(r.limit=parseInt(n,10)),i&&(r.remaining=parseInt(i,10)),o){let u=parseInt(o,10);u>1e9?r.reset=new Date(u*1e3):r.reset=new Date(Date.now()+u*1e3)}let s=t.get("retry-after");if(s){let u=parseInt(s,10);if(!isNaN(u))r.retryAfter=u;else{let l=new Date(s);isNaN(l.getTime())||(r.retryAfter=Math.ceil((l.getTime()-Date.now())/1e3))}}let c=t.get("ratelimit-policy");return c&&(r.policy=c),r.remaining!==void 0&&r.remaining===0&&(r.limited=!0),r}function q0(t){let e={},r=t.get("content-encoding");r&&(e.encoding=r.toLowerCase());let n=t.get("x-original-size")||t.get("x-uncompressed-size");n&&(e.originalSize=parseInt(n,10));let i=t.get("content-length");return i&&(e.compressedSize=parseInt(i,10)),e.originalSize&&e.compressedSize&&(e.ratio=e.originalSize/e.compressedSize),e}function $0(t){let e={directives:{},reportOnly:!1},r=t.get("content-security-policy");if(r||(r=t.get("content-security-policy-report-only"),r&&(e.reportOnly=!0)),r){e.policy=r;let n=r.split(";").map(i=>i.trim()).filter(Boolean);for(let i of n){let[o,...s]=i.split(/\s+/);o&&(e.directives[o]=s)}}return e}function O0(t){let e={},r=t.get("content-type");if(!r)return e;let n=r.split(";").map(i=>i.trim());if(n[0]){e.mediaType=n[0];let[i,o]=n[0].split("/");i&&(e.type=i),o&&(e.subtype=o)}for(let i=1;i<n.length;i++){let o=n[i],[s,c]=o.split("=").map(u=>u.trim());s==="charset"&&c?e.charset=c.replace(/['"]/g,""):s==="boundary"&&c&&(e.boundary=c.replace(/['"]/g,""))}return e}function z0(t){let e={types:[],encodings:[],languages:[]},r=t.get("accept");if(r){let o=r.split(",").map(s=>s.trim());for(let s of o){let[c,...u]=s.split(";").map(m=>m.trim()),l=1;for(let m of u)m.startsWith("q=")&&(l=parseFloat(m.substring(2))||1);let[d,p]=c.split("/");e.types.push({mediaType:c,q:l,type:d||void 0,subtype:p||void 0})}e.types.sort((s,c)=>c.q-s.q)}let n=t.get("accept-encoding");if(n){let o=n.split(",").map(s=>s.trim());for(let s of o){let[c,...u]=s.split(";").map(d=>d.trim()),l=1;for(let d of u)d.startsWith("q=")&&(l=parseFloat(d.substring(2))||1);e.encodings.push({encoding:c,q:l})}e.encodings.sort((s,c)=>c.q-s.q)}let i=t.get("accept-language");if(i){let o=i.split(",").map(s=>s.trim());for(let s of o){let[c,...u]=s.split(";").map(d=>d.trim()),l=1;for(let d of u)d.startsWith("q=")&&(l=parseFloat(d.substring(2))||1);e.languages.push({language:c,q:l})}e.languages.sort((s,c)=>c.q-s.q)}return e}function j0(t){let e={methods:[]},r=t.get("www-authenticate");if(r){r.toLowerCase().includes("basic")&&e.methods.push("Basic"),r.toLowerCase().includes("bearer")&&e.methods.push("Bearer"),r.toLowerCase().includes("digest")&&e.methods.push("Digest"),r.toLowerCase().includes("negotiate")&&e.methods.push("Negotiate"),r.toLowerCase().includes("aws4-hmac-sha256")&&e.methods.push("AWS4");let i=r.match(/realm="([^"]+)"/);i&&(e.realm=i[1]);let o=r.match(/error="([^"]+)"/);o&&(e.error=o[1]);let s=r.match(/error_description="([^"]+)"/);s&&(e.errorDescription=s[1])}let n=t.get("x-auth-error")||t.get("x-authentication-error");return n&&(e.error||(e.error=n)),e}function _0(t){let e=t.get("date");if(!e)return{};let r=new Date(e);if(isNaN(r.getTime()))return{};let n=r.getTime()-Date.now();return{serverTime:r,skewMs:n}}function ft(t,e){return{cache:B0(t),platform:H0(t),rateLimit:I0(t,e),compression:q0(t),csp:$0(t),contentType:O0(t),accept:z0(t),auth:j0(t),clockSkew:_0(t)}}var U0,Nn=T(()=>{"use strict";U0=[{name:"cloudflare",category:"cdn",headers:["cf-ray","cf-cache-status"],detect:t=>t.get("cf-ray")!==null,extract:t=>{let e=t.get("cf-ray"),r={};if(e){r.ray=e;let n=e.split("-");if(n.length>1)return{region:n[1],metadata:r}}return{metadata:r}}},{name:"fastly",category:"cdn",headers:["fastly-debug-digest","x-served-by"],detect:t=>{let e=t.get("x-served-by");return(e==null?void 0:e.includes("cache-"))||t.get("fastly-debug-digest")!==null},extract:t=>({server:t.get("x-served-by")||void 0,metadata:{digest:t.get("fastly-debug-digest")}})},{name:"akamai",category:"cdn",headers:["x-akamai-request-id","x-akamai-cache-status"],detect:t=>t.get("x-akamai-request-id")!==null,extract:t=>({metadata:{requestId:t.get("x-akamai-request-id"),cacheId:t.get("x-akamai-cache-status")}})},{name:"aws-cloudfront",category:"cloud",headers:["x-amz-cf-id","x-amz-cf-pop"],detect:t=>t.get("x-amz-cf-id")!==null,extract:t=>({region:t.get("x-amz-cf-pop")||void 0,metadata:{requestId:t.get("x-amz-cf-id"),pop:t.get("x-amz-cf-pop")}})},{name:"gcp",category:"cloud",headers:["x-cloud-trace-context","x-goog-request-id"],detect:t=>t.get("x-cloud-trace-context")!==null||t.get("x-goog-request-id")!==null,extract:t=>{let e=t.get("x-cloud-trace-context");return{metadata:{traceId:e?e.split("/")[0]:void 0,requestId:t.get("x-goog-request-id")}}}},{name:"azure",category:"cloud",headers:["x-ms-request-id","x-azure-ref"],detect:t=>t.get("x-ms-request-id")!==null,extract:t=>({metadata:{requestId:t.get("x-ms-request-id"),ref:t.get("x-azure-ref")}})},{name:"oracle-cloud",category:"cloud",headers:["x-oracle-dms-rid","x-oracle-dms-ecid"],detect:t=>t.get("x-oracle-dms-rid")!==null,extract:t=>({metadata:{requestId:t.get("x-oracle-dms-rid"),ecid:t.get("x-oracle-dms-ecid")}})},{name:"alibaba-cloud",category:"cloud",headers:["ali-swift-global-savetime","eagleeye-traceid"],detect:t=>t.get("eagleeye-traceid")!==null,extract:t=>({metadata:{traceId:t.get("eagleeye-traceid")}})},{name:"vercel",category:"hosting",headers:["x-vercel-id","x-vercel-cache"],detect:t=>t.get("x-vercel-id")!==null,extract:t=>({metadata:{requestId:t.get("x-vercel-id"),cache:t.get("x-vercel-cache")}})},{name:"netlify",category:"hosting",headers:["x-nf-request-id","x-nf-trace-id"],detect:t=>t.get("x-nf-request-id")!==null,extract:t=>({metadata:{requestId:t.get("x-nf-request-id"),traceId:t.get("x-nf-trace-id")}})},{name:"render",category:"hosting",headers:["x-render-origin-server"],detect:t=>t.get("x-render-origin-server")!==null,extract:t=>({metadata:{origin:t.get("x-render-origin-server")}})},{name:"datadome",category:"security",headers:["x-datadome","x-datadome-cid"],detect:t=>t.get("x-datadome")!==null||t.get("x-datadome-cid")!==null,extract:t=>({metadata:{cid:t.get("x-datadome-cid")}})},{name:"incapsula",category:"security",headers:["x-iinfo","x-cdn"],detect:t=>t.get("x-iinfo")!==null||(t.get("x-cdn")||"").includes("Incapsula"),extract:t=>({metadata:{iinfo:t.get("x-iinfo")}})},{name:"imperva",category:"security",headers:["x-imperva-uuid"],detect:t=>t.get("x-imperva-uuid")!==null,extract:t=>({metadata:{uuid:t.get("x-imperva-uuid")}})},{name:"aws-waf",category:"security",headers:["x-amzn-waf-action"],detect:t=>t.get("server")==="awselb/2.0",extract:t=>({})},{name:"envoy",category:"proxy",headers:["x-envoy-upstream-service-time"],detect:t=>t.get("x-envoy-upstream-service-time")!==null||t.get("server")==="envoy",extract:t=>({})},{name:"traefik",category:"proxy",headers:[],detect:t=>(t.get("server")||"").toLowerCase().includes("traefik"),extract:t=>({})},{name:"caddy",category:"server",headers:[],detect:t=>(t.get("server")||"").toLowerCase().includes("caddy"),extract:t=>({})},{name:"haproxy",category:"proxy",headers:[],detect:t=>(t.get("server")||"").toLowerCase().includes("haproxy"),extract:t=>({})},{name:"iis",category:"server",headers:["x-powered-by"],detect:t=>(t.get("server")||"").toLowerCase().includes("iis"),extract:t=>({})},{name:"kestrel",category:"server",headers:[],detect:t=>(t.get("server")||"").toLowerCase().includes("kestrel"),extract:t=>({})},{name:"express",category:"framework",headers:["x-powered-by"],detect:t=>(t.get("x-powered-by")||"").toLowerCase().includes("express"),extract:t=>({})},{name:"rails",category:"framework",headers:["x-runtime","x-request-id"],detect:t=>t.get("x-runtime")!==null&&!(t.get("x-powered-by")||"").includes("Express"),extract:t=>({metadata:{runtime:t.get("x-runtime")}})},{name:"django",category:"framework",headers:[],detect:t=>(t.get("server")||"").toLowerCase().includes("wsgi"),extract:t=>({})},{name:"aspnet",category:"framework",headers:["x-aspnet-version","x-powered-by"],detect:t=>t.get("x-aspnet-version")!==null||(t.get("x-powered-by")||"").includes("ASP.NET"),extract:t=>({metadata:{version:t.get("x-aspnet-version")}})},{name:"php",category:"framework",headers:["x-powered-by"],detect:t=>(t.get("x-powered-by")||"").toLowerCase().includes("php"),extract:t=>({metadata:{version:t.get("x-powered-by")}})}]});function W0(t){if(!t||typeof t!="string")return{all:[]};let e=[],r={all:e},n=V0(t);for(let i of n){let o=G0(i.trim());if(o&&(e.push(o),o.rel)){let s=o.rel.split(/\s+/);for(let c of s){let u=r[c];u?Array.isArray(u)?u.push(o):r[c]=[u,o]:r[c]=o}}}return r}function V0(t){let e=[],r="",n=!1,i=!1;for(let o=0;o<t.length;o++){let s=t[o],c=o>0?t[o-1]:"";if(s==="<"&&!i)n=!0;else if(s===">"&&!i)n=!1;else if(s==='"'&&c!=="\\")i=!i;else if(s===","&&!n&&!i){e.push(r.trim()),r="";continue}r+=s}return r.trim()&&e.push(r.trim()),e}function G0(t){let e=t.match(/^<([^>]+)>/);if(!e)return null;let n={uri:e[1]},i=t.slice(e[0].length),o=K0(i);for(let[s,c]of Object.entries(o))n[s]=c;return n}function K0(t){let e={},r=t.split(/;/).filter(n=>n.trim());for(let n of r){let i=n.indexOf("=");if(i===-1)continue;let o=n.slice(0,i).trim(),s=n.slice(i+1).trim();(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),s=s.replace(/\\(.)/g,"$1"),e[o]=s}return e}function Mn(t){let e=t.get("Link");return e?new lo(e):null}var De,lo,Fn=T(()=>{"use strict";De={NEXT:"next",PREV:"prev",PREVIOUS:"previous",FIRST:"first",LAST:"last",ALTERNATE:"alternate",CANONICAL:"canonical",AUTHOR:"author",LICENSE:"license",STYLESHEET:"stylesheet",ICON:"icon",PRELOAD:"preload",PREFETCH:"prefetch",PRECONNECT:"preconnect",DNS_PREFETCH:"dns-prefetch",PRERENDER:"prerender",SELF:"self",EDIT:"edit",COLLECTION:"collection",ITEM:"item",HELP:"help",DESCRIBEDBY:"describedby",UP:"up",RELATED:"related",REPLIES:"replies",VIA:"via"},lo=class{links;constructor(e){this.links=W0(e)}getAll(){return this.links.all}getRel(e){return this.links[e]}getFirst(e){let r=this.links[e];if(r)return Array.isArray(r)?r[0]:r}has(e){return e in this.links}getPagination(){var e,r,n,i,o;return{next:(e=this.getFirst(De.NEXT))==null?void 0:e.uri,prev:((r=this.getFirst(De.PREV))==null?void 0:r.uri)||((n=this.getFirst(De.PREVIOUS))==null?void 0:n.uri),first:(i=this.getFirst(De.FIRST))==null?void 0:i.uri,last:(o=this.getFirst(De.LAST))==null?void 0:o.uri}}hasNext(){return this.has(De.NEXT)}hasPrev(){return this.has(De.PREV)||this.has(De.PREVIOUS)}getCanonical(){var e;return(e=this.getFirst(De.CANONICAL))==null?void 0:e.uri}getAlternates(){let e=this.getRel(De.ALTERNATE);return e?Array.isArray(e)?e:[e]:[]}getResourceHints(){let e=r=>{let n=this.getRel(r);return n?Array.isArray(n)?n:[n]:[]};return{preload:e(De.PRELOAD),prefetch:e(De.PREFETCH),preconnect:e(De.PRECONNECT),dnsPrefetch:e(De.DNS_PREFETCH)}}toJSON(){return this.links}}});var po,sc,gk,mo=T(()=>{po={},sc=t=>t,gk=globalThis.performance});var Sr,cc,bk,Bn=T(()=>{Sr={},cc=()=>"/",bk=globalThis.performance});var fo,wk,uc=T(()=>{fo={},wk=globalThis.performance});function J0(){let t=["/sys/fs/cgroup/memory.max","/sys/fs/cgroup/memory/memory.limit_in_bytes"];for(let e of t)try{if(gn.existsSync(e)){let r=gn.readFileSync(e,"utf8").trim();if(!r||r==="max")continue;let n=Number.parseInt(r,10);if(Number.isFinite(n)&&n>0)return n}}catch{}return null}function ho(){let t=J0();return t&&Number.isFinite(t)&&t>0?t:Sr.totalmem()}function dc(t={}){let{maxMemoryBytes:e,maxMemoryPercent:r,safetyPercent:n}=t,i=fo.getHeapStatistics(),o=(i==null?void 0:i.heap_size_limit)??0,s=ho(),c=0,u=!1;if(typeof e=="number"&&e>0)c=e;else if(typeof r=="number"&&r>0){let m=Math.max(0,Math.min(r,1));c=Math.floor(s*m),u=!0}let l=typeof n=="number"&&n>0&&n<=1?n:lc,d=Math.floor(s*l);if((c===0||d<c)&&(c=d,u=u||(r??0)>0),o>0){let m=Math.floor(o*X0);(c===0||m<c)&&(c=m,u=u||(r??0)>0)}(!Number.isFinite(c)||c<=0)&&(c=Math.floor(s*lc),u=!0);let p=s>0?c/s:null;return{maxMemoryBytes:c,derivedFromPercent:u,effectiveTotal:s,heapLimit:o,inferredPercent:p}}function Qe(t){if(t===0)return"0 B";let e=1024,r=["B","KB","MB","GB","TB"],n=Math.floor(Math.log(t)/Math.log(e));return`${(t/Math.pow(e,n)).toFixed(2)} ${r[n]}`}function Un(){let t=fo.getHeapStatistics(),{heapUsed:e}=process.memoryUsage(),r=(t==null?void 0:t.heap_size_limit)??0,n=r>0?e/r:0;return{heapUsed:e,heapLimit:r,heapRatio:n}}var lc,X0,pc=T(()=>{"use strict";At();Bn();uc();lc=.5,X0=.6});var yo={};Ee(yo,{MemoryStorage:()=>go});var go,bo=T(()=>{"use strict";V();mo();Bn();pc();go=class{storage=new Map;meta=new Map;maxSize;maxMemoryBytes;maxMemoryPercent;defaultTtl;evictionPolicy;compressionEnabled;compressionThreshold;enableStats;heapUsageThreshold;onEvict;onPressure;currentMemoryBytes=0;evictedDueToMemory=0;memoryPressureEvents=0;accessCounter=0;monitorHandle=null;cleanupHandle=null;stats={hits:0,misses:0,sets:0,deletes:0,evictions:0};compressionStats={totalCompressed:0,totalOriginalSize:0,totalCompressedSize:0};constructor(e={}){if(e.maxMemoryBytes&&e.maxMemoryBytes>0&&e.maxMemoryPercent&&e.maxMemoryPercent>0)throw new Me("[MemoryStorage] Cannot use both maxMemoryBytes and maxMemoryPercent",{configKey:"maxMemoryBytes|maxMemoryPercent"});if(e.maxMemoryPercent!==void 0&&(e.maxMemoryPercent<0||e.maxMemoryPercent>1))throw new Me("[MemoryStorage] maxMemoryPercent must be between 0 and 1",{configKey:"maxMemoryPercent"});if(this.maxSize=e.maxSize??1e3,this.defaultTtl=e.ttl??3e5,this.evictionPolicy=e.evictionPolicy??"lru",this.enableStats=e.enableStats??!1,this.heapUsageThreshold=e.heapUsageThreshold??.6,e.maxMemoryBytes&&e.maxMemoryBytes>0)this.maxMemoryBytes=e.maxMemoryBytes,this.maxMemoryPercent=0;else if(e.maxMemoryPercent&&e.maxMemoryPercent>0){let i=ho();this.maxMemoryBytes=Math.floor(i*e.maxMemoryPercent),this.maxMemoryPercent=e.maxMemoryPercent}else{let i=dc({});this.maxMemoryBytes=i.maxMemoryBytes,this.maxMemoryPercent=i.inferredPercent??0}e.compression===!0?(this.compressionEnabled=!0,this.compressionThreshold=1024):typeof e.compression=="object"&&e.compression.enabled?(this.compressionEnabled=!0,this.compressionThreshold=e.compression.threshold??1024):(this.compressionEnabled=!1,this.compressionThreshold=1024),this.onEvict=e.onEvict,this.onPressure=e.onPressure;let r=e.monitorInterval??15e3;r>0&&(this.monitorHandle=setInterval(()=>this.memoryHealthCheck(),r),this.monitorHandle.unref());let n=e.cleanupInterval??6e4;n>0&&(this.cleanupHandle=setInterval(()=>this.cleanupExpired(),n),this.cleanupHandle.unref())}async get(e){let r=this.storage.get(e),n=this.meta.get(e);if(!r||!n){this.recordStat("misses");return}let i=Date.now();if(i>n.expiresAt){this.deleteInternal(e),this.recordStat("misses");return}if(this.evictionPolicy==="lru"&&(n.lastAccess=i,n.accessOrder=++this.accessCounter),this.recordStat("hits"),this.isCompressed(r))try{let o=this.decompress(r);return JSON.parse(o)}catch{this.deleteInternal(e);return}return JSON.parse(r)}async set(e,r,n){let i=n??this.defaultTtl,o=Date.now(),s=JSON.stringify(r),c=Buffer.byteLength(s,"utf8"),u=s,l=c,d=!1;if(this.compressionEnabled&&c>=this.compressionThreshold)try{let m=this.compress(s);u=m,l=Buffer.byteLength(m.__data,"utf8"),d=!0,this.compressionStats.totalCompressed++,this.compressionStats.totalOriginalSize+=c,this.compressionStats.totalCompressedSize+=l}catch{}let p=this.meta.get(e);if(p&&(this.currentMemoryBytes-=p.compressedSize),!this.enforceMemoryLimit(l)){this.evictedDueToMemory++;return}!p&&this.storage.size>=this.maxSize&&this.evictOne("size"),this.storage.set(e,u),this.meta.set(e,{createdAt:o,expiresAt:o+i,lastAccess:o,insertOrder:++this.accessCounter,accessOrder:this.accessCounter,compressed:d,originalSize:c,compressedSize:l}),this.currentMemoryBytes+=l,this.recordStat("sets")}async delete(e){this.deleteInternal(e),this.recordStat("deletes")}clear(e){if(!e){this.storage.clear(),this.meta.clear(),this.currentMemoryBytes=0,this.evictedDueToMemory=0,this.enableStats&&(this.stats={hits:0,misses:0,sets:0,deletes:0,evictions:0});return}for(let r of this.storage.keys())r.startsWith(e)&&this.deleteInternal(r)}size(){return this.storage.size}keys(){return Array.from(this.storage.keys())}has(e){let r=this.meta.get(e);return r?Date.now()>r.expiresAt?(this.deleteInternal(e),!1):!0:!1}getStats(){let e=this.stats.hits+this.stats.misses,r=e>0?this.stats.hits/e:0;return{enabled:this.enableStats,...this.stats,hitRate:r,totalItems:this.storage.size,memoryUsageBytes:this.currentMemoryBytes,maxMemoryBytes:this.maxMemoryBytes,evictedDueToMemory:this.evictedDueToMemory}}getMemoryStats(){let e=this.storage.size,r=this.maxMemoryBytes>0?this.currentMemoryBytes/this.maxMemoryBytes*100:0,n=Sr.totalmem(),i=Sr.freemem(),o=n-i,s=n>0?this.currentMemoryBytes/n*100:0;return{currentMemoryBytes:this.currentMemoryBytes,maxMemoryBytes:this.maxMemoryBytes,maxMemoryPercent:this.maxMemoryPercent,memoryUsagePercent:parseFloat(r.toFixed(2)),cachePercentOfSystemMemory:parseFloat(s.toFixed(2)),totalItems:e,maxSize:this.maxSize,evictedDueToMemory:this.evictedDueToMemory,memoryPressureEvents:this.memoryPressureEvents,averageItemSize:e>0?Math.round(this.currentMemoryBytes/e):0,memoryUsage:{current:Qe(this.currentMemoryBytes),max:Qe(this.maxMemoryBytes),available:Qe(Math.max(0,this.maxMemoryBytes-this.currentMemoryBytes))},systemMemory:{total:Qe(n),free:Qe(i),used:Qe(o),cachePercent:`${s.toFixed(2)}%`}}}getCompressionStats(){if(!this.compressionEnabled)return{enabled:!1,totalItems:this.storage.size,compressedItems:0,compressionThreshold:this.compressionThreshold,totalOriginalSize:0,totalCompressedSize:0,averageCompressionRatio:"0",spaceSavingsPercent:"0",memoryUsage:{uncompressed:"0 B",compressed:"0 B",saved:"0 B"}};let e=this.compressionStats.totalOriginalSize>0?(this.compressionStats.totalCompressedSize/this.compressionStats.totalOriginalSize).toFixed(2):"0",r=this.compressionStats.totalOriginalSize>0?((this.compressionStats.totalOriginalSize-this.compressionStats.totalCompressedSize)/this.compressionStats.totalOriginalSize*100).toFixed(2):"0",n=this.compressionStats.totalOriginalSize-this.compressionStats.totalCompressedSize;return{enabled:!0,totalItems:this.storage.size,compressedItems:this.compressionStats.totalCompressed,compressionThreshold:this.compressionThreshold,totalOriginalSize:this.compressionStats.totalOriginalSize,totalCompressedSize:this.compressionStats.totalCompressedSize,averageCompressionRatio:e,spaceSavingsPercent:r,memoryUsage:{uncompressed:Qe(this.compressionStats.totalOriginalSize),compressed:Qe(this.compressionStats.totalCompressedSize),saved:Qe(n)}}}shutdown(){this.monitorHandle&&(clearInterval(this.monitorHandle),this.monitorHandle=null),this.cleanupHandle&&(clearInterval(this.cleanupHandle),this.cleanupHandle=null)}deleteInternal(e){let r=this.meta.get(e);r&&(this.currentMemoryBytes-=r.compressedSize),this.storage.delete(e),this.meta.delete(e)}recordStat(e){this.enableStats&&this.stats[e]++}isCompressed(e){return typeof e=="object"&&e!==null&&"__compressed"in e}compress(e){let r=Buffer.from(e,"utf8");return{__compressed:!0,__data:po.gzipSync(r).toString("base64"),__originalSize:r.length}}decompress(e){let r=Buffer.from(e.__data,"base64");return po.gunzipSync(r).toString("utf8")}selectEvictionCandidate(){if(this.meta.size===0)return null;let e=null,r=(this.evictionPolicy==="lru",1/0);for(let[n,i]of this.meta){let o=this.evictionPolicy==="lru"?i.accessOrder:i.insertOrder;o<r&&(r=o,e=n)}return e}evictOne(e){var o;let r=this.selectEvictionCandidate();if(!r)return null;let n=this.meta.get(r),i=(n==null?void 0:n.compressedSize)??0;return this.deleteInternal(r),this.stats.evictions++,(e==="memory"||e==="heap")&&this.evictedDueToMemory++,(o=this.onEvict)==null||o.call(this,{reason:e,key:r,freedBytes:i,currentBytes:this.currentMemoryBytes,maxMemoryBytes:this.maxMemoryBytes}),{key:r,freedBytes:i}}enforceMemoryLimit(e){if(e>this.maxMemoryBytes)return!1;for(;this.currentMemoryBytes+e>this.maxMemoryBytes&&this.storage.size>0&&this.evictOne("memory"););return this.currentMemoryBytes+e<=this.maxMemoryBytes}reduceMemoryTo(e){e=Math.max(0,e);let r=0;for(;this.currentMemoryBytes>e&&this.storage.size>0;){let n=this.evictOne("memory");if(!n)break;r+=n.freedBytes}return r}memoryHealthCheck(){var o,s;let e=0;if(this.currentMemoryBytes>this.maxMemoryBytes){let c=this.currentMemoryBytes;this.enforceMemoryLimit(0);let u=c-this.currentMemoryBytes;u>0&&(e+=u,this.memoryPressureEvents++,(o=this.onPressure)==null||o.call(this,{reason:"limit",heapLimit:Un().heapLimit,heapUsed:Un().heapUsed,currentBytes:this.currentMemoryBytes,maxMemoryBytes:this.maxMemoryBytes,freedBytes:u}))}let{heapUsed:r,heapLimit:n,heapRatio:i}=Un();if(n>0&&i>=this.heapUsageThreshold){let c=this.currentMemoryBytes,u=Math.floor(this.currentMemoryBytes*.5);this.reduceMemoryTo(u);let l=c-this.currentMemoryBytes;l>0&&(e+=l,this.memoryPressureEvents++,(s=this.onPressure)==null||s.call(this,{reason:"heap",heapLimit:n,heapUsed:r,heapRatio:i,currentBytes:this.currentMemoryBytes,maxMemoryBytes:this.maxMemoryBytes,freedBytes:l}))}return e}cleanupExpired(){var n;let e=Date.now(),r=0;for(let[i,o]of this.meta)e>o.expiresAt&&(this.deleteInternal(i),r++,(n=this.onEvict)==null||n.call(this,{reason:"expired",key:i,freedBytes:o.compressedSize,currentBytes:this.currentMemoryBytes,maxMemoryBytes:this.maxMemoryBytes}));return r}}});var Nt=Ss((Jk,Ac)=>{Ac.exports={trueFunc:function(){return!0},falseFunc:function(){return!1}}});var L,Z,jn=T(()=>{(function(t){t.Attribute="attribute",t.Pseudo="pseudo",t.PseudoElement="pseudo-element",t.Tag="tag",t.Universal="universal",t.Adjacent="adjacent",t.Child="child",t.Descendant="descendant",t.Parent="parent",t.Sibling="sibling",t.ColumnCombinator="column-combinator"})(L||(L={}));(function(t){t.Any="any",t.Element="element",t.End="end",t.Equals="equals",t.Exists="exists",t.Hyphen="hyphen",t.Not="not",t.Start="start"})(Z||(Z={}))});function _n(t){switch(t.type){case L.Adjacent:case L.Child:case L.Descendant:case L.Parent:case L.Sibling:case L.ColumnCombinator:return!0;default:return!1}}function Ny(t,e,r){let n=Number.parseInt(e,16)-65536;return n!==n||r?e:n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,n&1023|56320)}function Er(t){return t.replace(Ey,Ny)}function Ro(t){return t===D.SingleQuote||t===D.DoubleQuote}function Ec(t){return t===D.Space||t===D.Tab||t===D.NewLine||t===D.FormFeed||t===D.CarriageReturn}function Dr(t){let e=[],r=Dc(e,`${t}`,0);if(r<t.length)throw new Error(`Unmatched selector: ${t.slice(r)}`);return e}function Dc(t,e,r){let n=[];function i(p){let m=e.slice(r+p).match(Cc);if(!m)throw new Error(`Expected name, found ${e.slice(r)}`);let[f]=m;return r+=p+f.length,Er(f)}function o(p){for(r+=p;r<e.length&&Ec(e.charCodeAt(r));)r++}function s(){r+=1;let p=r;for(let m=1;r<e.length;r++)switch(e.charCodeAt(r)){case D.BackSlash:{r+=1;break}case D.LeftParenthesis:{m+=1;break}case D.RightParenthesis:{if(m-=1,m===0)return Er(e.slice(p,r++));break}}throw new Error("Parenthesis not matched")}function c(){if(n.length>0&&_n(n[n.length-1]))throw new Error("Did not expect successive traversals.")}function u(p){if(n.length>0&&n[n.length-1].type===L.Descendant){n[n.length-1].type=p;return}c(),n.push({type:p})}function l(p,m){n.push({type:L.Attribute,name:p,action:m,value:i(1),namespace:null,ignoreCase:"quirks"})}function d(){if(n.length>0&&n[n.length-1].type===L.Descendant&&n.pop(),n.length===0)throw new Error("Empty sub-selector");t.push(n)}if(o(0),e.length===r)return r;e:for(;r<e.length;){let p=e.charCodeAt(r);switch(p){case D.Space:case D.Tab:case D.NewLine:case D.FormFeed:case D.CarriageReturn:{(n.length===0||n[0].type!==L.Descendant)&&(c(),n.push({type:L.Descendant})),o(1);break}case D.GreaterThan:{u(L.Child),o(1);break}case D.LessThan:{u(L.Parent),o(1);break}case D.Tilde:{u(L.Sibling),o(1);break}case D.Plus:{u(L.Adjacent),o(1);break}case D.Period:{l("class",Z.Element);break}case D.Hash:{l("id",Z.Equals);break}case D.LeftSquareBracket:{o(1);let m,f=null;e.charCodeAt(r)===D.Pipe?m=i(1):e.startsWith("*|",r)?(f="*",m=i(2)):(m=i(0),e.charCodeAt(r)===D.Pipe&&e.charCodeAt(r+1)!==D.Equal&&(f=m,m=i(1))),o(0);let h=Z.Exists,g=Dy.get(e.charCodeAt(r));if(g){if(h=g,e.charCodeAt(r+1)!==D.Equal)throw new Error("Expected `=`");o(2)}else e.charCodeAt(r)===D.Equal&&(h=Z.Equals,o(1));let y="",C=null;if(h!=="exists"){if(Ro(e.charCodeAt(r))){let x=e.charCodeAt(r);r+=1;let k=r;for(;r<e.length&&e.charCodeAt(r)!==x;)r+=e.charCodeAt(r)===D.BackSlash?2:1;if(e.charCodeAt(r)!==x)throw new Error("Attribute value didn't end");y=Er(e.slice(k,r)),r+=1}else{let x=r;for(;r<e.length&&!Ec(e.charCodeAt(r))&&e.charCodeAt(r)!==D.RightSquareBracket;)r+=e.charCodeAt(r)===D.BackSlash?2:1;y=Er(e.slice(x,r))}switch(o(0),e.charCodeAt(r)|32){case D.LowerI:{C=!0,o(1);break}case D.LowerS:{C=!1,o(1);break}}}if(e.charCodeAt(r)!==D.RightSquareBracket)throw new Error("Attribute selector didn't terminate");r+=1;let b={type:L.Attribute,name:m,action:h,value:y,namespace:f,ignoreCase:C};n.push(b);break}case D.Colon:{if(e.charCodeAt(r+1)===D.Colon){n.push({type:L.PseudoElement,name:i(2).toLowerCase(),data:e.charCodeAt(r)===D.LeftParenthesis?s():null});break}let m=i(1).toLowerCase();if(Ry.has(m)){n.push({type:L.PseudoElement,name:m,data:null});break}let f=null;if(e.charCodeAt(r)===D.LeftParenthesis)if(Ly.has(m)){if(Ro(e.charCodeAt(r+1)))throw new Error(`Pseudo-selector ${m} cannot be quoted`);if(f=[],r=Dc(f,e,r+1),e.charCodeAt(r)!==D.RightParenthesis)throw new Error(`Missing closing parenthesis in :${m} (${e})`);r+=1}else{if(f=s(),Py.has(m)){let h=f.charCodeAt(0);h===f.charCodeAt(f.length-1)&&Ro(h)&&(f=f.slice(1,-1))}f=Er(f)}n.push({type:L.Pseudo,name:m,data:f});break}case D.Comma:{d(),n=[],o(1);break}default:{if(e.startsWith("/*",r)){let h=e.indexOf("*/",r+2);if(h<0)throw new Error("Comment was not terminated");r=h+2,n.length===0&&o(0);break}let m=null,f;if(p===D.Asterisk)r+=1,f="*";else if(p===D.Pipe){if(f="",e.charCodeAt(r+1)===D.Pipe){u(L.ColumnCombinator),o(2);break}}else if(Cc.test(e.slice(r)))f=i(0);else break e;e.charCodeAt(r)===D.Pipe&&e.charCodeAt(r+1)!==D.Pipe&&(m=f,e.charCodeAt(r+1)===D.Asterisk?(f="*",r+=2):f=i(1)),n.push(f==="*"?{type:L.Universal,namespace:m}:{type:L.Tag,name:f,namespace:m})}}}return d(),r}var Cc,Ey,D,Dy,Ly,Ry,Py,Lc=T(()=>{jn();Cc=/^[^#\\]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\u00B0-\uFFFF-])+/,Ey=/\\([\da-f]{1,6}\s?|(\s)|.)/gi;(function(t){t[t.LeftParenthesis=40]="LeftParenthesis",t[t.RightParenthesis=41]="RightParenthesis",t[t.LeftSquareBracket=91]="LeftSquareBracket",t[t.RightSquareBracket=93]="RightSquareBracket",t[t.Comma=44]="Comma",t[t.Period=46]="Period",t[t.Colon=58]="Colon",t[t.SingleQuote=39]="SingleQuote",t[t.DoubleQuote=34]="DoubleQuote",t[t.Plus=43]="Plus",t[t.Tilde=126]="Tilde",t[t.QuestionMark=63]="QuestionMark",t[t.ExclamationMark=33]="ExclamationMark",t[t.Slash=47]="Slash",t[t.Equal=61]="Equal",t[t.Dollar=36]="Dollar",t[t.Pipe=124]="Pipe",t[t.Circumflex=94]="Circumflex",t[t.Asterisk=42]="Asterisk",t[t.GreaterThan=62]="GreaterThan",t[t.LessThan=60]="LessThan",t[t.Hash=35]="Hash",t[t.LowerI=105]="LowerI",t[t.LowerS=115]="LowerS",t[t.BackSlash=92]="BackSlash",t[t.Space=32]="Space",t[t.Tab=9]="Tab",t[t.NewLine=10]="NewLine",t[t.FormFeed=12]="FormFeed",t[t.CarriageReturn=13]="CarriageReturn"})(D||(D={}));Dy=new Map([[D.Tilde,Z.Element],[D.Circumflex,Z.Start],[D.Dollar,Z.End],[D.Asterisk,Z.Any],[D.ExclamationMark,Z.Not],[D.Pipe,Z.Hyphen]]),Ly=new Set(["has","not","matches","is","where","host","host-context"]),Ry=new Set(["before","after","first-line","first-letter"]);Py=new Set(["contains","icontains"])});var Rc,Pc,tS,rS,nS,Nc=T(()=>{jn();Rc=["\\",'"'],Pc=[...Rc,"(",")"],tS=new Set(Rc.map(t=>t.charCodeAt(0))),rS=new Set(Pc.map(t=>t.charCodeAt(0))),nS=new Set([...Pc,"~","^","$","*","+","!","|",":","[","]"," ",".","%"].map(t=>t.charCodeAt(0)))});var er=T(()=>{jn();Lc();Nc()});function Mc(t){return t.type===re.Tag||t.type===re.Script||t.type===re.Style}var re,Fc,Bc,Uc,Hc,Ic,qc,$c,Oc,zc,Lr=T(()=>{(function(t){t.Root="root",t.Text="text",t.Directive="directive",t.Comment="comment",t.Script="script",t.Style="style",t.Tag="tag",t.CDATA="cdata",t.Doctype="doctype"})(re||(re={}));Fc=re.Root,Bc=re.Text,Uc=re.Directive,Hc=re.Comment,Ic=re.Script,qc=re.Style,$c=re.Tag,Oc=re.CDATA,zc=re.Doctype});function ge(t){return Mc(t)}function Rr(t){return t.type===re.CDATA}function ut(t){return t.type===re.Text}function Wn(t){return t.type===re.Comment}function jc(t){return t.type===re.Root}function be(t){return Object.prototype.hasOwnProperty.call(t,"children")}var Po=T(()=>{Lr()});var Mt=T(()=>{Lr();Po();Po()});var _c,Wc=T(()=>{_c=new Uint16Array('\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map(t=>t.charCodeAt(0)))});var Vc,Gc=T(()=>{Vc=new Uint16Array("\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map(t=>t.charCodeAt(0)))});function Fo(t){var e;return t>=55296&&t<=57343||t>1114111?65533:(e=Fy.get(t))!==null&&e!==void 0?e:t}var No,Fy,Mo,Bo=T(()=>{Fy=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),Mo=(No=String.fromCodePoint)!==null&&No!==void 0?No:function(t){let e="";return t>65535&&(t-=65536,e+=String.fromCharCode(t>>>10&1023|55296),t=56320|t&1023),e+=String.fromCharCode(t),e}});function Uo(t){return t>=fe.ZERO&&t<=fe.NINE}function Uy(t){return t>=fe.UPPER_A&&t<=fe.UPPER_F||t>=fe.LOWER_A&&t<=fe.LOWER_F}function Hy(t){return t>=fe.UPPER_A&&t<=fe.UPPER_Z||t>=fe.LOWER_A&&t<=fe.LOWER_Z||Uo(t)}function Iy(t){return t===fe.EQUALS||Hy(t)}function Kc(t){let e="",r=new Vn(t,n=>e+=Mo(n));return function(i,o){let s=0,c=0;for(;(c=i.indexOf("&",c))>=0;){e+=i.slice(s,c),r.startEntity(o);let l=r.write(i,c+1);if(l<0){s=c+r.end();break}s=c+l,c=l===0?s+1:s}let u=e+i.slice(s);return e="",u}}function qy(t,e,r,n){let i=(e>.BRANCH_LENGTH)>>7,o=e>.JUMP_TABLE;if(i===0)return o!==0&&n===o?r:-1;if(o){let u=n-o;return u<0||u>=i?-1:t[r+u]-1}let s=r,c=s+i-1;for(;s<=c;){let u=s+c>>>1,l=t[u];if(l<n)s=u+1;else if(l>n)c=u-1;else return t[u+i]}return-1}var fe,By,gt,me,lt,Vn,LS,RS,Ho=T(()=>{Wc();Gc();Bo();Bo();(function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"})(fe||(fe={}));By=32;(function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"})(gt||(gt={}));(function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"})(me||(me={}));(function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"})(lt||(lt={}));Vn=class{constructor(e,r,n){this.decodeTree=e,this.emitCodePoint=r,this.errors=n,this.state=me.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=lt.Strict}startEntity(e){this.decodeMode=e,this.state=me.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(e,r){switch(this.state){case me.EntityStart:return e.charCodeAt(r)===fe.NUM?(this.state=me.NumericStart,this.consumed+=1,this.stateNumericStart(e,r+1)):(this.state=me.NamedEntity,this.stateNamedEntity(e,r));case me.NumericStart:return this.stateNumericStart(e,r);case me.NumericDecimal:return this.stateNumericDecimal(e,r);case me.NumericHex:return this.stateNumericHex(e,r);case me.NamedEntity:return this.stateNamedEntity(e,r)}}stateNumericStart(e,r){return r>=e.length?-1:(e.charCodeAt(r)|By)===fe.LOWER_X?(this.state=me.NumericHex,this.consumed+=1,this.stateNumericHex(e,r+1)):(this.state=me.NumericDecimal,this.stateNumericDecimal(e,r))}addToNumericResult(e,r,n,i){if(r!==n){let o=n-r;this.result=this.result*Math.pow(i,o)+parseInt(e.substr(r,o),i),this.consumed+=o}}stateNumericHex(e,r){let n=r;for(;r<e.length;){let i=e.charCodeAt(r);if(Uo(i)||Uy(i))r+=1;else return this.addToNumericResult(e,n,r,16),this.emitNumericEntity(i,3)}return this.addToNumericResult(e,n,r,16),-1}stateNumericDecimal(e,r){let n=r;for(;r<e.length;){let i=e.charCodeAt(r);if(Uo(i))r+=1;else return this.addToNumericResult(e,n,r,10),this.emitNumericEntity(i,2)}return this.addToNumericResult(e,n,r,10),-1}emitNumericEntity(e,r){var n;if(this.consumed<=r)return(n=this.errors)===null||n===void 0||n.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(e===fe.SEMI)this.consumed+=1;else if(this.decodeMode===lt.Strict)return 0;return this.emitCodePoint(Fo(this.result),this.consumed),this.errors&&(e!==fe.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(e,r){let{decodeTree:n}=this,i=n[this.treeIndex],o=(i>.VALUE_LENGTH)>>14;for(;r<e.length;r++,this.excess++){let s=e.charCodeAt(r);if(this.treeIndex=qy(n,i,this.treeIndex+Math.max(1,o),s),this.treeIndex<0)return this.result===0||this.decodeMode===lt.Attribute&&(o===0||Iy(s))?0:this.emitNotTerminatedNamedEntity();if(i=n[this.treeIndex],o=(i>.VALUE_LENGTH)>>14,o!==0){if(s===fe.SEMI)return this.emitNamedEntityData(this.treeIndex,o,this.consumed+this.excess);this.decodeMode!==lt.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var e;let{result:r,decodeTree:n}=this,i=(n[r]>.VALUE_LENGTH)>>14;return this.emitNamedEntityData(r,i,this.consumed),(e=this.errors)===null||e===void 0||e.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(e,r,n){let{decodeTree:i}=this;return this.emitCodePoint(r===1?i[e]&~gt.VALUE_LENGTH:i[e+1],n),r===3&&this.emitCodePoint(i[e+2],n),n}end(){var e;switch(this.state){case me.NamedEntity:return this.result!==0&&(this.decodeMode!==lt.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case me.NumericDecimal:return this.emitNumericEntity(0,2);case me.NumericHex:return this.emitNumericEntity(0,3);case me.NumericStart:return(e=this.errors)===null||e===void 0||e.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case me.EntityStart:return 0}}};LS=Kc(_c),RS=Kc(Vc)});function Gn(t){for(let e=1;e<t.length;e++)t[e][0]+=t[e-1][0]+1;return t}var $y,Xc=T(()=>{$y=new Map(Gn([[9,"	"],[0,"
"],[22,"!"],[0,"""],[0,"#"],[0,"$"],[0,"%"],[0,"&"],[0,"'"],[0,"("],[0,")"],[0,"*"],[0,"+"],[0,","],[1,"."],[0,"/"],[10,":"],[0,";"],[0,{v:"<",n:8402,o:"<⃒"}],[0,{v:"=",n:8421,o:"=⃥"}],[0,{v:">",n:8402,o:">⃒"}],[0,"?"],[0,"@"],[26,"["],[0,"\"],[0,"]"],[0,"^"],[0,"_"],[0,"`"],[5,{n:106,o:"fj"}],[20,"{"],[0,"|"],[0,"}"],[34," "],[0,"¡"],[0,"¢"],[0,"£"],[0,"¤"],[0,"¥"],[0,"¦"],[0,"§"],[0,"¨"],[0,"©"],[0,"ª"],[0,"«"],[0,"¬"],[0,"­"],[0,"®"],[0,"¯"],[0,"°"],[0,"±"],[0,"²"],[0,"³"],[0,"´"],[0,"µ"],[0,"¶"],[0,"·"],[0,"¸"],[0,"¹"],[0,"º"],[0,"»"],[0,"¼"],[0,"½"],[0,"¾"],[0,"¿"],[0,"À"],[0,"Á"],[0,"Â"],[0,"Ã"],[0,"Ä"],[0,"Å"],[0,"Æ"],[0,"Ç"],[0,"È"],[0,"É"],[0,"Ê"],[0,"Ë"],[0,"Ì"],[0,"Í"],[0,"Î"],[0,"Ï"],[0,"Ð"],[0,"Ñ"],[0,"Ò"],[0,"Ó"],[0,"Ô"],[0,"Õ"],[0,"Ö"],[0,"×"],[0,"Ø"],[0,"Ù"],[0,"Ú"],[0,"Û"],[0,"Ü"],[0,"Ý"],[0,"Þ"],[0,"ß"],[0,"à"],[0,"á"],[0,"â"],[0,"ã"],[0,"ä"],[0,"å"],[0,"æ"],[0,"ç"],[0,"è"],[0,"é"],[0,"ê"],[0,"ë"],[0,"ì"],[0,"í"],[0,"î"],[0,"ï"],[0,"ð"],[0,"ñ"],[0,"ò"],[0,"ó"],[0,"ô"],[0,"õ"],[0,"ö"],[0,"÷"],[0,"ø"],[0,"ù"],[0,"ú"],[0,"û"],[0,"ü"],[0,"ý"],[0,"þ"],[0,"ÿ"],[0,"Ā"],[0,"ā"],[0,"Ă"],[0,"ă"],[0,"Ą"],[0,"ą"],[0,"Ć"],[0,"ć"],[0,"Ĉ"],[0,"ĉ"],[0,"Ċ"],[0,"ċ"],[0,"Č"],[0,"č"],[0,"Ď"],[0,"ď"],[0,"Đ"],[0,"đ"],[0,"Ē"],[0,"ē"],[2,"Ė"],[0,"ė"],[0,"Ę"],[0,"ę"],[0,"Ě"],[0,"ě"],[0,"Ĝ"],[0,"ĝ"],[0,"Ğ"],[0,"ğ"],[0,"Ġ"],[0,"ġ"],[0,"Ģ"],[1,"Ĥ"],[0,"ĥ"],[0,"Ħ"],[0,"ħ"],[0,"Ĩ"],[0,"ĩ"],[0,"Ī"],[0,"ī"],[2,"Į"],[0,"į"],[0,"İ"],[0,"ı"],[0,"IJ"],[0,"ij"],[0,"Ĵ"],[0,"ĵ"],[0,"Ķ"],[0,"ķ"],[0,"ĸ"],[0,"Ĺ"],[0,"ĺ"],[0,"Ļ"],[0,"ļ"],[0,"Ľ"],[0,"ľ"],[0,"Ŀ"],[0,"ŀ"],[0,"Ł"],[0,"ł"],[0,"Ń"],[0,"ń"],[0,"Ņ"],[0,"ņ"],[0,"Ň"],[0,"ň"],[0,"ʼn"],[0,"Ŋ"],[0,"ŋ"],[0,"Ō"],[0,"ō"],[2,"Ő"],[0,"ő"],[0,"Œ"],[0,"œ"],[0,"Ŕ"],[0,"ŕ"],[0,"Ŗ"],[0,"ŗ"],[0,"Ř"],[0,"ř"],[0,"Ś"],[0,"ś"],[0,"Ŝ"],[0,"ŝ"],[0,"Ş"],[0,"ş"],[0,"Š"],[0,"š"],[0,"Ţ"],[0,"ţ"],[0,"Ť"],[0,"ť"],[0,"Ŧ"],[0,"ŧ"],[0,"Ũ"],[0,"ũ"],[0,"Ū"],[0,"ū"],[0,"Ŭ"],[0,"ŭ"],[0,"Ů"],[0,"ů"],[0,"Ű"],[0,"ű"],[0,"Ų"],[0,"ų"],[0,"Ŵ"],[0,"ŵ"],[0,"Ŷ"],[0,"ŷ"],[0,"Ÿ"],[0,"Ź"],[0,"ź"],[0,"Ż"],[0,"ż"],[0,"Ž"],[0,"ž"],[19,"ƒ"],[34,"Ƶ"],[63,"ǵ"],[65,"ȷ"],[142,"ˆ"],[0,"ˇ"],[16,"˘"],[0,"˙"],[0,"˚"],[0,"˛"],[0,"˜"],[0,"˝"],[51,"̑"],[127,"Α"],[0,"Β"],[0,"Γ"],[0,"Δ"],[0,"Ε"],[0,"Ζ"],[0,"Η"],[0,"Θ"],[0,"Ι"],[0,"Κ"],[0,"Λ"],[0,"Μ"],[0,"Ν"],[0,"Ξ"],[0,"Ο"],[0,"Π"],[0,"Ρ"],[1,"Σ"],[0,"Τ"],[0,"Υ"],[0,"Φ"],[0,"Χ"],[0,"Ψ"],[0,"Ω"],[7,"α"],[0,"β"],[0,"γ"],[0,"δ"],[0,"ε"],[0,"ζ"],[0,"η"],[0,"θ"],[0,"ι"],[0,"κ"],[0,"λ"],[0,"μ"],[0,"ν"],[0,"ξ"],[0,"ο"],[0,"π"],[0,"ρ"],[0,"ς"],[0,"σ"],[0,"τ"],[0,"υ"],[0,"φ"],[0,"χ"],[0,"ψ"],[0,"ω"],[7,"ϑ"],[0,"ϒ"],[2,"ϕ"],[0,"ϖ"],[5,"Ϝ"],[0,"ϝ"],[18,"ϰ"],[0,"ϱ"],[3,"ϵ"],[0,"϶"],[10,"Ё"],[0,"Ђ"],[0,"Ѓ"],[0,"Є"],[0,"Ѕ"],[0,"І"],[0,"Ї"],[0,"Ј"],[0,"Љ"],[0,"Њ"],[0,"Ћ"],[0,"Ќ"],[1,"Ў"],[0,"Џ"],[0,"А"],[0,"Б"],[0,"В"],[0,"Г"],[0,"Д"],[0,"Е"],[0,"Ж"],[0,"З"],[0,"И"],[0,"Й"],[0,"К"],[0,"Л"],[0,"М"],[0,"Н"],[0,"О"],[0,"П"],[0,"Р"],[0,"С"],[0,"Т"],[0,"У"],[0,"Ф"],[0,"Х"],[0,"Ц"],[0,"Ч"],[0,"Ш"],[0,"Щ"],[0,"Ъ"],[0,"Ы"],[0,"Ь"],[0,"Э"],[0,"Ю"],[0,"Я"],[0,"а"],[0,"б"],[0,"в"],[0,"г"],[0,"д"],[0,"е"],[0,"ж"],[0,"з"],[0,"и"],[0,"й"],[0,"к"],[0,"л"],[0,"м"],[0,"н"],[0,"о"],[0,"п"],[0,"р"],[0,"с"],[0,"т"],[0,"у"],[0,"ф"],[0,"х"],[0,"ц"],[0,"ч"],[0,"ш"],[0,"щ"],[0,"ъ"],[0,"ы"],[0,"ь"],[0,"э"],[0,"ю"],[0,"я"],[1,"ё"],[0,"ђ"],[0,"ѓ"],[0,"є"],[0,"ѕ"],[0,"і"],[0,"ї"],[0,"ј"],[0,"љ"],[0,"њ"],[0,"ћ"],[0,"ќ"],[1,"ў"],[0,"џ"],[7074," "],[0," "],[0," "],[0," "],[1," "],[0," "],[0," "],[0," "],[0,"​"],[0,"‌"],[0,"‍"],[0,"‎"],[0,"‏"],[0,"‐"],[2,"–"],[0,"—"],[0,"―"],[0,"‖"],[1,"‘"],[0,"’"],[0,"‚"],[1,"“"],[0,"”"],[0,"„"],[1,"†"],[0,"‡"],[0,"•"],[2,"‥"],[0,"…"],[9,"‰"],[0,"‱"],[0,"′"],[0,"″"],[0,"‴"],[0,"‵"],[3,"‹"],[0,"›"],[3,"‾"],[2,"⁁"],[1,"⁃"],[0,"⁄"],[10,"⁏"],[7,"⁗"],[7,{v:" ",n:8202,o:"  "}],[0,"⁠"],[0,"⁡"],[0,"⁢"],[0,"⁣"],[72,"€"],[46,"⃛"],[0,"⃜"],[37,"ℂ"],[2,"℅"],[4,"ℊ"],[0,"ℋ"],[0,"ℌ"],[0,"ℍ"],[0,"ℎ"],[0,"ℏ"],[0,"ℐ"],[0,"ℑ"],[0,"ℒ"],[0,"ℓ"],[1,"ℕ"],[0,"№"],[0,"℗"],[0,"℘"],[0,"ℙ"],[0,"ℚ"],[0,"ℛ"],[0,"ℜ"],[0,"ℝ"],[0,"℞"],[3,"™"],[1,"ℤ"],[2,"℧"],[0,"ℨ"],[0,"℩"],[2,"ℬ"],[0,"ℭ"],[1,"ℯ"],[0,"ℰ"],[0,"ℱ"],[1,"ℳ"],[0,"ℴ"],[0,"ℵ"],[0,"ℶ"],[0,"ℷ"],[0,"ℸ"],[12,"ⅅ"],[0,"ⅆ"],[0,"ⅇ"],[0,"ⅈ"],[10,"⅓"],[0,"⅔"],[0,"⅕"],[0,"⅖"],[0,"⅗"],[0,"⅘"],[0,"⅙"],[0,"⅚"],[0,"⅛"],[0,"⅜"],[0,"⅝"],[0,"⅞"],[49,"←"],[0,"↑"],[0,"→"],[0,"↓"],[0,"↔"],[0,"↕"],[0,"↖"],[0,"↗"],[0,"↘"],[0,"↙"],[0,"↚"],[0,"↛"],[1,{v:"↝",n:824,o:"↝̸"}],[0,"↞"],[0,"↟"],[0,"↠"],[0,"↡"],[0,"↢"],[0,"↣"],[0,"↤"],[0,"↥"],[0,"↦"],[0,"↧"],[1,"↩"],[0,"↪"],[0,"↫"],[0,"↬"],[0,"↭"],[0,"↮"],[1,"↰"],[0,"↱"],[0,"↲"],[0,"↳"],[1,"↵"],[0,"↶"],[0,"↷"],[2,"↺"],[0,"↻"],[0,"↼"],[0,"↽"],[0,"↾"],[0,"↿"],[0,"⇀"],[0,"⇁"],[0,"⇂"],[0,"⇃"],[0,"⇄"],[0,"⇅"],[0,"⇆"],[0,"⇇"],[0,"⇈"],[0,"⇉"],[0,"⇊"],[0,"⇋"],[0,"⇌"],[0,"⇍"],[0,"⇎"],[0,"⇏"],[0,"⇐"],[0,"⇑"],[0,"⇒"],[0,"⇓"],[0,"⇔"],[0,"⇕"],[0,"⇖"],[0,"⇗"],[0,"⇘"],[0,"⇙"],[0,"⇚"],[0,"⇛"],[1,"⇝"],[6,"⇤"],[0,"⇥"],[15,"⇵"],[7,"⇽"],[0,"⇾"],[0,"⇿"],[0,"∀"],[0,"∁"],[0,{v:"∂",n:824,o:"∂̸"}],[0,"∃"],[0,"∄"],[0,"∅"],[1,"∇"],[0,"∈"],[0,"∉"],[1,"∋"],[0,"∌"],[2,"∏"],[0,"∐"],[0,"∑"],[0,"−"],[0,"∓"],[0,"∔"],[1,"∖"],[0,"∗"],[0,"∘"],[1,"√"],[2,"∝"],[0,"∞"],[0,"∟"],[0,{v:"∠",n:8402,o:"∠⃒"}],[0,"∡"],[0,"∢"],[0,"∣"],[0,"∤"],[0,"∥"],[0,"∦"],[0,"∧"],[0,"∨"],[0,{v:"∩",n:65024,o:"∩︀"}],[0,{v:"∪",n:65024,o:"∪︀"}],[0,"∫"],[0,"∬"],[0,"∭"],[0,"∮"],[0,"∯"],[0,"∰"],[0,"∱"],[0,"∲"],[0,"∳"],[0,"∴"],[0,"∵"],[0,"∶"],[0,"∷"],[0,"∸"],[1,"∺"],[0,"∻"],[0,{v:"∼",n:8402,o:"∼⃒"}],[0,{v:"∽",n:817,o:"∽̱"}],[0,{v:"∾",n:819,o:"∾̳"}],[0,"∿"],[0,"≀"],[0,"≁"],[0,{v:"≂",n:824,o:"≂̸"}],[0,"≃"],[0,"≄"],[0,"≅"],[0,"≆"],[0,"≇"],[0,"≈"],[0,"≉"],[0,"≊"],[0,{v:"≋",n:824,o:"≋̸"}],[0,"≌"],[0,{v:"≍",n:8402,o:"≍⃒"}],[0,{v:"≎",n:824,o:"≎̸"}],[0,{v:"≏",n:824,o:"≏̸"}],[0,{v:"≐",n:824,o:"≐̸"}],[0,"≑"],[0,"≒"],[0,"≓"],[0,"≔"],[0,"≕"],[0,"≖"],[0,"≗"],[1,"≙"],[0,"≚"],[1,"≜"],[2,"≟"],[0,"≠"],[0,{v:"≡",n:8421,o:"≡⃥"}],[0,"≢"],[1,{v:"≤",n:8402,o:"≤⃒"}],[0,{v:"≥",n:8402,o:"≥⃒"}],[0,{v:"≦",n:824,o:"≦̸"}],[0,{v:"≧",n:824,o:"≧̸"}],[0,{v:"≨",n:65024,o:"≨︀"}],[0,{v:"≩",n:65024,o:"≩︀"}],[0,{v:"≪",n:new Map(Gn([[824,"≪̸"],[7577,"≪⃒"]]))}],[0,{v:"≫",n:new Map(Gn([[824,"≫̸"],[7577,"≫⃒"]]))}],[0,"≬"],[0,"≭"],[0,"≮"],[0,"≯"],[0,"≰"],[0,"≱"],[0,"≲"],[0,"≳"],[0,"≴"],[0,"≵"],[0,"≶"],[0,"≷"],[0,"≸"],[0,"≹"],[0,"≺"],[0,"≻"],[0,"≼"],[0,"≽"],[0,"≾"],[0,{v:"≿",n:824,o:"≿̸"}],[0,"⊀"],[0,"⊁"],[0,{v:"⊂",n:8402,o:"⊂⃒"}],[0,{v:"⊃",n:8402,o:"⊃⃒"}],[0,"⊄"],[0,"⊅"],[0,"⊆"],[0,"⊇"],[0,"⊈"],[0,"⊉"],[0,{v:"⊊",n:65024,o:"⊊︀"}],[0,{v:"⊋",n:65024,o:"⊋︀"}],[1,"⊍"],[0,"⊎"],[0,{v:"⊏",n:824,o:"⊏̸"}],[0,{v:"⊐",n:824,o:"⊐̸"}],[0,"⊑"],[0,"⊒"],[0,{v:"⊓",n:65024,o:"⊓︀"}],[0,{v:"⊔",n:65024,o:"⊔︀"}],[0,"⊕"],[0,"⊖"],[0,"⊗"],[0,"⊘"],[0,"⊙"],[0,"⊚"],[0,"⊛"],[1,"⊝"],[0,"⊞"],[0,"⊟"],[0,"⊠"],[0,"⊡"],[0,"⊢"],[0,"⊣"],[0,"⊤"],[0,"⊥"],[1,"⊧"],[0,"⊨"],[0,"⊩"],[0,"⊪"],[0,"⊫"],[0,"⊬"],[0,"⊭"],[0,"⊮"],[0,"⊯"],[0,"⊰"],[1,"⊲"],[0,"⊳"],[0,{v:"⊴",n:8402,o:"⊴⃒"}],[0,{v:"⊵",n:8402,o:"⊵⃒"}],[0,"⊶"],[0,"⊷"],[0,"⊸"],[0,"⊹"],[0,"⊺"],[0,"⊻"],[1,"⊽"],[0,"⊾"],[0,"⊿"],[0,"⋀"],[0,"⋁"],[0,"⋂"],[0,"⋃"],[0,"⋄"],[0,"⋅"],[0,"⋆"],[0,"⋇"],[0,"⋈"],[0,"⋉"],[0,"⋊"],[0,"⋋"],[0,"⋌"],[0,"⋍"],[0,"⋎"],[0,"⋏"],[0,"⋐"],[0,"⋑"],[0,"⋒"],[0,"⋓"],[0,"⋔"],[0,"⋕"],[0,"⋖"],[0,"⋗"],[0,{v:"⋘",n:824,o:"⋘̸"}],[0,{v:"⋙",n:824,o:"⋙̸"}],[0,{v:"⋚",n:65024,o:"⋚︀"}],[0,{v:"⋛",n:65024,o:"⋛︀"}],[2,"⋞"],[0,"⋟"],[0,"⋠"],[0,"⋡"],[0,"⋢"],[0,"⋣"],[2,"⋦"],[0,"⋧"],[0,"⋨"],[0,"⋩"],[0,"⋪"],[0,"⋫"],[0,"⋬"],[0,"⋭"],[0,"⋮"],[0,"⋯"],[0,"⋰"],[0,"⋱"],[0,"⋲"],[0,"⋳"],[0,"⋴"],[0,{v:"⋵",n:824,o:"⋵̸"}],[0,"⋶"],[0,"⋷"],[1,{v:"⋹",n:824,o:"⋹̸"}],[0,"⋺"],[0,"⋻"],[0,"⋼"],[0,"⋽"],[0,"⋾"],[6,"⌅"],[0,"⌆"],[1,"⌈"],[0,"⌉"],[0,"⌊"],[0,"⌋"],[0,"⌌"],[0,"⌍"],[0,"⌎"],[0,"⌏"],[0,"⌐"],[1,"⌒"],[0,"⌓"],[1,"⌕"],[0,"⌖"],[5,"⌜"],[0,"⌝"],[0,"⌞"],[0,"⌟"],[2,"⌢"],[0,"⌣"],[9,"⌭"],[0,"⌮"],[7,"⌶"],[6,"⌽"],[1,"⌿"],[60,"⍼"],[51,"⎰"],[0,"⎱"],[2,"⎴"],[0,"⎵"],[0,"⎶"],[37,"⏜"],[0,"⏝"],[0,"⏞"],[0,"⏟"],[2,"⏢"],[4,"⏧"],[59,"␣"],[164,"Ⓢ"],[55,"─"],[1,"│"],[9,"┌"],[3,"┐"],[3,"└"],[3,"┘"],[3,"├"],[7,"┤"],[7,"┬"],[7,"┴"],[7,"┼"],[19,"═"],[0,"║"],[0,"╒"],[0,"╓"],[0,"╔"],[0,"╕"],[0,"╖"],[0,"╗"],[0,"╘"],[0,"╙"],[0,"╚"],[0,"╛"],[0,"╜"],[0,"╝"],[0,"╞"],[0,"╟"],[0,"╠"],[0,"╡"],[0,"╢"],[0,"╣"],[0,"╤"],[0,"╥"],[0,"╦"],[0,"╧"],[0,"╨"],[0,"╩"],[0,"╪"],[0,"╫"],[0,"╬"],[19,"▀"],[3,"▄"],[3,"█"],[8,"░"],[0,"▒"],[0,"▓"],[13,"□"],[8,"▪"],[0,"▫"],[1,"▭"],[0,"▮"],[2,"▱"],[1,"△"],[0,"▴"],[0,"▵"],[2,"▸"],[0,"▹"],[3,"▽"],[0,"▾"],[0,"▿"],[2,"◂"],[0,"◃"],[6,"◊"],[0,"○"],[32,"◬"],[2,"◯"],[8,"◸"],[0,"◹"],[0,"◺"],[0,"◻"],[0,"◼"],[8,"★"],[0,"☆"],[7,"☎"],[49,"♀"],[1,"♂"],[29,"♠"],[2,"♣"],[1,"♥"],[0,"♦"],[3,"♪"],[2,"♭"],[0,"♮"],[0,"♯"],[163,"✓"],[3,"✗"],[8,"✠"],[21,"✶"],[33,"❘"],[25,"❲"],[0,"❳"],[84,"⟈"],[0,"⟉"],[28,"⟦"],[0,"⟧"],[0,"⟨"],[0,"⟩"],[0,"⟪"],[0,"⟫"],[0,"⟬"],[0,"⟭"],[7,"⟵"],[0,"⟶"],[0,"⟷"],[0,"⟸"],[0,"⟹"],[0,"⟺"],[1,"⟼"],[2,"⟿"],[258,"⤂"],[0,"⤃"],[0,"⤄"],[0,"⤅"],[6,"⤌"],[0,"⤍"],[0,"⤎"],[0,"⤏"],[0,"⤐"],[0,"⤑"],[0,"⤒"],[0,"⤓"],[2,"⤖"],[2,"⤙"],[0,"⤚"],[0,"⤛"],[0,"⤜"],[0,"⤝"],[0,"⤞"],[0,"⤟"],[0,"⤠"],[2,"⤣"],[0,"⤤"],[0,"⤥"],[0,"⤦"],[0,"⤧"],[0,"⤨"],[0,"⤩"],[0,"⤪"],[8,{v:"⤳",n:824,o:"⤳̸"}],[1,"⤵"],[0,"⤶"],[0,"⤷"],[0,"⤸"],[0,"⤹"],[2,"⤼"],[0,"⤽"],[7,"⥅"],[2,"⥈"],[0,"⥉"],[0,"⥊"],[0,"⥋"],[2,"⥎"],[0,"⥏"],[0,"⥐"],[0,"⥑"],[0,"⥒"],[0,"⥓"],[0,"⥔"],[0,"⥕"],[0,"⥖"],[0,"⥗"],[0,"⥘"],[0,"⥙"],[0,"⥚"],[0,"⥛"],[0,"⥜"],[0,"⥝"],[0,"⥞"],[0,"⥟"],[0,"⥠"],[0,"⥡"],[0,"⥢"],[0,"⥣"],[0,"⥤"],[0,"⥥"],[0,"⥦"],[0,"⥧"],[0,"⥨"],[0,"⥩"],[0,"⥪"],[0,"⥫"],[0,"⥬"],[0,"⥭"],[0,"⥮"],[0,"⥯"],[0,"⥰"],[0,"⥱"],[0,"⥲"],[0,"⥳"],[0,"⥴"],[0,"⥵"],[0,"⥶"],[1,"⥸"],[0,"⥹"],[1,"⥻"],[0,"⥼"],[0,"⥽"],[0,"⥾"],[0,"⥿"],[5,"⦅"],[0,"⦆"],[4,"⦋"],[0,"⦌"],[0,"⦍"],[0,"⦎"],[0,"⦏"],[0,"⦐"],[0,"⦑"],[0,"⦒"],[0,"⦓"],[0,"⦔"],[0,"⦕"],[0,"⦖"],[3,"⦚"],[1,"⦜"],[0,"⦝"],[6,"⦤"],[0,"⦥"],[0,"⦦"],[0,"⦧"],[0,"⦨"],[0,"⦩"],[0,"⦪"],[0,"⦫"],[0,"⦬"],[0,"⦭"],[0,"⦮"],[0,"⦯"],[0,"⦰"],[0,"⦱"],[0,"⦲"],[0,"⦳"],[0,"⦴"],[0,"⦵"],[0,"⦶"],[0,"⦷"],[1,"⦹"],[1,"⦻"],[0,"⦼"],[1,"⦾"],[0,"⦿"],[0,"⧀"],[0,"⧁"],[0,"⧂"],[0,"⧃"],[0,"⧄"],[0,"⧅"],[3,"⧉"],[3,"⧍"],[0,"⧎"],[0,{v:"⧏",n:824,o:"⧏̸"}],[0,{v:"⧐",n:824,o:"⧐̸"}],[11,"⧜"],[0,"⧝"],[0,"⧞"],[4,"⧣"],[0,"⧤"],[0,"⧥"],[5,"⧫"],[8,"⧴"],[1,"⧶"],[9,"⨀"],[0,"⨁"],[0,"⨂"],[1,"⨄"],[1,"⨆"],[5,"⨌"],[0,"⨍"],[2,"⨐"],[0,"⨑"],[0,"⨒"],[0,"⨓"],[0,"⨔"],[0,"⨕"],[0,"⨖"],[0,"⨗"],[10,"⨢"],[0,"⨣"],[0,"⨤"],[0,"⨥"],[0,"⨦"],[0,"⨧"],[1,"⨩"],[0,"⨪"],[2,"⨭"],[0,"⨮"],[0,"⨯"],[0,"⨰"],[0,"⨱"],[1,"⨳"],[0,"⨴"],[0,"⨵"],[0,"⨶"],[0,"⨷"],[0,"⨸"],[0,"⨹"],[0,"⨺"],[0,"⨻"],[0,"⨼"],[2,"⨿"],[0,"⩀"],[1,"⩂"],[0,"⩃"],[0,"⩄"],[0,"⩅"],[0,"⩆"],[0,"⩇"],[0,"⩈"],[0,"⩉"],[0,"⩊"],[0,"⩋"],[0,"⩌"],[0,"⩍"],[2,"⩐"],[2,"⩓"],[0,"⩔"],[0,"⩕"],[0,"⩖"],[0,"⩗"],[0,"⩘"],[1,"⩚"],[0,"⩛"],[0,"⩜"],[0,"⩝"],[1,"⩟"],[6,"⩦"],[3,"⩪"],[2,{v:"⩭",n:824,o:"⩭̸"}],[0,"⩮"],[0,"⩯"],[0,{v:"⩰",n:824,o:"⩰̸"}],[0,"⩱"],[0,"⩲"],[0,"⩳"],[0,"⩴"],[0,"⩵"],[1,"⩷"],[0,"⩸"],[0,"⩹"],[0,"⩺"],[0,"⩻"],[0,"⩼"],[0,{v:"⩽",n:824,o:"⩽̸"}],[0,{v:"⩾",n:824,o:"⩾̸"}],[0,"⩿"],[0,"⪀"],[0,"⪁"],[0,"⪂"],[0,"⪃"],[0,"⪄"],[0,"⪅"],[0,"⪆"],[0,"⪇"],[0,"⪈"],[0,"⪉"],[0,"⪊"],[0,"⪋"],[0,"⪌"],[0,"⪍"],[0,"⪎"],[0,"⪏"],[0,"⪐"],[0,"⪑"],[0,"⪒"],[0,"⪓"],[0,"⪔"],[0,"⪕"],[0,"⪖"],[0,"⪗"],[0,"⪘"],[0,"⪙"],[0,"⪚"],[2,"⪝"],[0,"⪞"],[0,"⪟"],[0,"⪠"],[0,{v:"⪡",n:824,o:"⪡̸"}],[0,{v:"⪢",n:824,o:"⪢̸"}],[1,"⪤"],[0,"⪥"],[0,"⪦"],[0,"⪧"],[0,"⪨"],[0,"⪩"],[0,"⪪"],[0,"⪫"],[0,{v:"⪬",n:65024,o:"⪬︀"}],[0,{v:"⪭",n:65024,o:"⪭︀"}],[0,"⪮"],[0,{v:"⪯",n:824,o:"⪯̸"}],[0,{v:"⪰",n:824,o:"⪰̸"}],[2,"⪳"],[0,"⪴"],[0,"⪵"],[0,"⪶"],[0,"⪷"],[0,"⪸"],[0,"⪹"],[0,"⪺"],[0,"⪻"],[0,"⪼"],[0,"⪽"],[0,"⪾"],[0,"⪿"],[0,"⫀"],[0,"⫁"],[0,"⫂"],[0,"⫃"],[0,"⫄"],[0,{v:"⫅",n:824,o:"⫅̸"}],[0,{v:"⫆",n:824,o:"⫆̸"}],[0,"⫇"],[0,"⫈"],[2,{v:"⫋",n:65024,o:"⫋︀"}],[0,{v:"⫌",n:65024,o:"⫌︀"}],[2,"⫏"],[0,"⫐"],[0,"⫑"],[0,"⫒"],[0,"⫓"],[0,"⫔"],[0,"⫕"],[0,"⫖"],[0,"⫗"],[0,"⫘"],[0,"⫙"],[0,"⫚"],[0,"⫛"],[8,"⫤"],[1,"⫦"],[0,"⫧"],[0,"⫨"],[0,"⫩"],[1,"⫫"],[0,"⫬"],[0,"⫭"],[0,"⫮"],[0,"⫯"],[0,"⫰"],[0,"⫱"],[0,"⫲"],[0,"⫳"],[9,{v:"⫽",n:8421,o:"⫽⃥"}],[44343,{n:new Map(Gn([[56476,"𝒜"],[1,"𝒞"],[0,"𝒟"],[2,"𝒢"],[2,"𝒥"],[0,"𝒦"],[2,"𝒩"],[0,"𝒪"],[0,"𝒫"],[0,"𝒬"],[1,"𝒮"],[0,"𝒯"],[0,"𝒰"],[0,"𝒱"],[0,"𝒲"],[0,"𝒳"],[0,"𝒴"],[0,"𝒵"],[0,"𝒶"],[0,"𝒷"],[0,"𝒸"],[0,"𝒹"],[1,"𝒻"],[1,"𝒽"],[0,"𝒾"],[0,"𝒿"],[0,"𝓀"],[0,"𝓁"],[0,"𝓂"],[0,"𝓃"],[1,"𝓅"],[0,"𝓆"],[0,"𝓇"],[0,"𝓈"],[0,"𝓉"],[0,"𝓊"],[0,"𝓋"],[0,"𝓌"],[0,"𝓍"],[0,"𝓎"],[0,"𝓏"],[52,"𝔄"],[0,"𝔅"],[1,"𝔇"],[0,"𝔈"],[0,"𝔉"],[0,"𝔊"],[2,"𝔍"],[0,"𝔎"],[0,"𝔏"],[0,"𝔐"],[0,"𝔑"],[0,"𝔒"],[0,"𝔓"],[0,"𝔔"],[1,"𝔖"],[0,"𝔗"],[0,"𝔘"],[0,"𝔙"],[0,"𝔚"],[0,"𝔛"],[0,"𝔜"],[1,"𝔞"],[0,"𝔟"],[0,"𝔠"],[0,"𝔡"],[0,"𝔢"],[0,"𝔣"],[0,"𝔤"],[0,"𝔥"],[0,"𝔦"],[0,"𝔧"],[0,"𝔨"],[0,"𝔩"],[0,"𝔪"],[0,"𝔫"],[0,"𝔬"],[0,"𝔭"],[0,"𝔮"],[0,"𝔯"],[0,"𝔰"],[0,"𝔱"],[0,"𝔲"],[0,"𝔳"],[0,"𝔴"],[0,"𝔵"],[0,"𝔶"],[0,"𝔷"],[0,"𝔸"],[0,"𝔹"],[1,"𝔻"],[0,"𝔼"],[0,"𝔽"],[0,"𝔾"],[1,"𝕀"],[0,"𝕁"],[0,"𝕂"],[0,"𝕃"],[0,"𝕄"],[1,"𝕆"],[3,"𝕊"],[0,"𝕋"],[0,"𝕌"],[0,"𝕍"],[0,"𝕎"],[0,"𝕏"],[0,"𝕐"],[1,"𝕒"],[0,"𝕓"],[0,"𝕔"],[0,"𝕕"],[0,"𝕖"],[0,"𝕗"],[0,"𝕘"],[0,"𝕙"],[0,"𝕚"],[0,"𝕛"],[0,"𝕜"],[0,"𝕝"],[0,"𝕞"],[0,"𝕟"],[0,"𝕠"],[0,"𝕡"],[0,"𝕢"],[0,"𝕣"],[0,"𝕤"],[0,"𝕥"],[0,"𝕦"],[0,"𝕧"],[0,"𝕨"],[0,"𝕩"],[0,"𝕪"],[0,"𝕫"]]))}],[8906,"ff"],[0,"fi"],[0,"fl"],[0,"ffi"],[0,"ffl"]]))});function Pr(t){let e="",r=0,n;for(;(n=Io.exec(t))!==null;){let i=n.index,o=t.charCodeAt(i),s=Jc.get(o);s!==void 0?(e+=t.substring(r,i)+s,r=i+1):(e+=`${t.substring(r,i)}&#x${Qc(t,i).toString(16)};`,r=Io.lastIndex+=+((o&64512)===55296))}return e+t.substr(r)}function qo(t,e){return function(n){let i,o=0,s="";for(;i=t.exec(n);)o!==i.index&&(s+=n.substring(o,i.index)),s+=e.get(i[0].charCodeAt(0)),o=i.index+1;return s+n.substring(o)}}var Io,Jc,Qc,Yc,Kn,Xn,Jn=T(()=>{Io=/["&'<>$\x80-\uFFFF]/g,Jc=new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),Qc=String.prototype.codePointAt!=null?(t,e)=>t.codePointAt(e):(t,e)=>(t.charCodeAt(e)&64512)===55296?(t.charCodeAt(e)-55296)*1024+t.charCodeAt(e+1)-56320+65536:t.charCodeAt(e);Yc=qo(/[&<>'"]/g,Jc),Kn=qo(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),Xn=qo(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]))});var $o=T(()=>{Xc();Jn()});var Zc,eu,nu=T(()=>{Ho();$o();Jn();Jn();$o();Ho();(function(t){t[t.XML=0]="XML",t[t.HTML=1]="HTML"})(Zc||(Zc={}));(function(t){t[t.UTF8=0]="UTF8",t[t.ASCII=1]="ASCII",t[t.Extensive=2]="Extensive",t[t.Attribute=3]="Attribute",t[t.Text=4]="Text"})(eu||(eu={}))});var iu,ou,au=T(()=>{iu=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(t=>[t.toLowerCase(),t])),ou=new Map(["definitionURL","attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(t=>[t.toLowerCase(),t]))});function jy(t){return t.replace(/"/g,""")}function _y(t,e){var r;if(!t)return;let n=((r=e.encodeEntities)!==null&&r!==void 0?r:e.decodeEntities)===!1?jy:e.xmlMode||e.encodeEntities!=="utf8"?Pr:Kn;return Object.keys(t).map(i=>{var o,s;let c=(o=t[i])!==null&&o!==void 0?o:"";return e.xmlMode==="foreign"&&(i=(s=ou.get(i))!==null&&s!==void 0?s:i),!e.emptyAttrs&&!e.xmlMode&&c===""?i:`${i}="${n(c)}"`}).join(" ")}function jo(t,e={}){let r="length"in t?t:[t],n="";for(let i=0;i<r.length;i++)n+=Wy(r[i],e);return n}function Wy(t,e){switch(t.type){case Fc:return jo(t.children,e);case zc:case Uc:return Xy(t);case Hc:return Yy(t);case Oc:return Qy(t);case Ic:case qc:case $c:return Ky(t,e);case Bc:return Jy(t,e)}}function Ky(t,e){var r;e.xmlMode==="foreign"&&(t.name=(r=iu.get(t.name))!==null&&r!==void 0?r:t.name,t.parent&&Vy.has(t.parent.name)&&(e={...e,xmlMode:!1})),!e.xmlMode&&Gy.has(t.name)&&(e={...e,xmlMode:"foreign"});let n=`<${t.name}`,i=_y(t.attribs,e);return i&&(n+=` ${i}`),t.children.length===0&&(e.xmlMode?e.selfClosingTags!==!1:e.selfClosingTags&&su.has(t.name))?(e.xmlMode||(n+=" "),n+="/>"):(n+=">",t.children.length>0&&(n+=jo(t.children,e)),(e.xmlMode||!su.has(t.name))&&(n+=`</${t.name}>`)),n}function Xy(t){return`<${t.data}>`}function Jy(t,e){var r;let n=t.data||"";return((r=e.encodeEntities)!==null&&r!==void 0?r:e.decodeEntities)!==!1&&!(!e.xmlMode&&t.parent&&zy.has(t.parent.name))&&(n=e.xmlMode||e.encodeEntities!=="utf8"?Pr(n):Xn(n)),n}function Qy(t){return`<![CDATA[${t.children[0].data}]]>`}function Yy(t){return`<!--${t.data}-->`}var zy,su,cu,Vy,Gy,uu=T(()=>{Lr();nu();au();zy=new Set(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]);su=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]);cu=jo;Vy=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]),Gy=new Set(["svg","math"])});function lu(t,e){return cu(t,e)}function Zy(t,e){return be(t)?t.children.map(r=>lu(r,e)).join(""):""}function Qn(t){return Array.isArray(t)?t.map(Qn).join(""):ge(t)?t.name==="br"?`
|
|
38
|
-
`:Qn(t.children):Rr(t)?Qn(t.children):ut(t)?t.data:""}function Nr(t){return Array.isArray(t)?t.map(Nr).join(""):be(t)&&!Wn(t)?Nr(t.children):ut(t)?t.data:""}function _o(t){return Array.isArray(t)?t.map(_o).join(""):be(t)&&(t.type===re.Tag||Rr(t))?_o(t.children):ut(t)?t.data:""}var Wo=T(()=>{Mt();uu();Lr()});function du(t){return be(t)?t.children:[]}function pu(t){return t.parent||null}function eb(t){let e=pu(t);if(e!=null)return du(e);let r=[t],{prev:n,next:i}=t;for(;n!=null;)r.unshift(n),{prev:n}=n;for(;i!=null;)r.push(i),{next:i}=i;return r}function tb(t,e){var r;return(r=t.attribs)===null||r===void 0?void 0:r[e]}function rb(t,e){return t.attribs!=null&&Object.prototype.hasOwnProperty.call(t.attribs,e)&&t.attribs[e]!=null}function nb(t){return t.name}function ib(t){let{next:e}=t;for(;e!==null&&!ge(e);)({next:e}=e);return e}function ob(t){let{prev:e}=t;for(;e!==null&&!ge(e);)({prev:e}=e);return e}var mu=T(()=>{Mt()});function Mr(t){if(t.prev&&(t.prev.next=t.next),t.next&&(t.next.prev=t.prev),t.parent){let e=t.parent.children,r=e.lastIndexOf(t);r>=0&&e.splice(r,1)}t.next=null,t.prev=null,t.parent=null}function ab(t,e){let r=e.prev=t.prev;r&&(r.next=e);let n=e.next=t.next;n&&(n.prev=e);let i=e.parent=t.parent;if(i){let o=i.children;o[o.lastIndexOf(t)]=e,t.parent=null}}function sb(t,e){if(Mr(e),e.next=null,e.parent=t,t.children.push(e)>1){let r=t.children[t.children.length-2];r.next=e,e.prev=r}else e.prev=null}function cb(t,e){Mr(e);let{parent:r}=t,n=t.next;if(e.next=n,e.prev=t,t.next=e,e.parent=r,n){if(n.prev=e,r){let i=r.children;i.splice(i.lastIndexOf(n),0,e)}}else r&&r.children.push(e)}function ub(t,e){if(Mr(e),e.parent=t,e.prev=null,t.children.unshift(e)!==1){let r=t.children[1];r.prev=e,e.next=r}else e.next=null}function lb(t,e){Mr(e);let{parent:r}=t;if(r){let n=r.children;n.splice(n.indexOf(t),0,e)}t.prev&&(t.prev.next=e),e.parent=r,e.prev=t.prev,e.next=t,t.prev=e}var fu=T(()=>{});function tr(t,e,r=!0,n=1/0){return hu(t,Array.isArray(e)?e:[e],r,n)}function hu(t,e,r,n){let i=[],o=[Array.isArray(e)?e:[e]],s=[0];for(;;){if(s[0]>=o[0].length){if(s.length===1)return i;o.shift(),s.shift();continue}let c=o[0][s[0]++];if(t(c)&&(i.push(c),--n<=0))return i;r&&be(c)&&c.children.length>0&&(s.unshift(0),o.unshift(c.children))}}function db(t,e){return e.find(t)}function Yn(t,e,r=!0){let n=Array.isArray(e)?e:[e];for(let i=0;i<n.length;i++){let o=n[i];if(ge(o)&&t(o))return o;if(r&&be(o)&&o.children.length>0){let s=Yn(t,o.children,!0);if(s)return s}}return null}function gu(t,e){return(Array.isArray(e)?e:[e]).some(r=>ge(r)&&t(r)||be(r)&&gu(t,r.children))}function pb(t,e){let r=[],n=[Array.isArray(e)?e:[e]],i=[0];for(;;){if(i[0]>=n[0].length){if(n.length===1)return r;n.shift(),i.shift();continue}let o=n[0][i[0]++];ge(o)&&t(o)&&r.push(o),be(o)&&o.children.length>0&&(i.unshift(0),n.unshift(o.children))}}var Vo=T(()=>{Mt()});function Go(t,e){return typeof e=="function"?r=>ge(r)&&e(r.attribs[t]):r=>ge(r)&&r.attribs[t]===e}function mb(t,e){return r=>t(r)||e(r)}function yu(t){let e=Object.keys(t).map(r=>{let n=t[r];return Object.prototype.hasOwnProperty.call(Zn,r)?Zn[r](n):Go(r,n)});return e.length===0?null:e.reduce(mb)}function fb(t,e){let r=yu(t);return r?r(e):!0}function hb(t,e,r,n=1/0){let i=yu(t);return i?tr(i,e,r,n):[]}function gb(t,e,r=!0){return Array.isArray(e)||(e=[e]),Yn(Go("id",t),e,r)}function Ft(t,e,r=!0,n=1/0){return tr(Zn.tag_name(t),e,r,n)}function yb(t,e,r=!0,n=1/0){return tr(Go("class",t),e,r,n)}function bb(t,e,r=!0,n=1/0){return tr(Zn.tag_type(t),e,r,n)}var Zn,Ko=T(()=>{Mt();Vo();Zn={tag_name(t){return typeof t=="function"?e=>ge(e)&&t(e.name):t==="*"?ge:e=>ge(e)&&e.name===t},tag_type(t){return typeof t=="function"?e=>t(e.type):e=>e.type===t},tag_contains(t){return typeof t=="function"?e=>ut(e)&&t(e.data):e=>ut(e)&&e.data===t}}});function vb(t){let e=t.length;for(;--e>=0;){let r=t[e];if(e>0&&t.lastIndexOf(r,e-1)>=0){t.splice(e,1);continue}for(let n=r.parent;n;n=n.parent)if(t.includes(n)){t.splice(e,1);break}}return t}function bu(t,e){let r=[],n=[];if(t===e)return 0;let i=be(t)?t:t.parent;for(;i;)r.unshift(i),i=i.parent;for(i=be(e)?e:e.parent;i;)n.unshift(i),i=i.parent;let o=Math.min(r.length,n.length),s=0;for(;s<o&&r[s]===n[s];)s++;if(s===0)return qe.DISCONNECTED;let c=r[s-1],u=c.children,l=r[s],d=n[s];return u.indexOf(l)>u.indexOf(d)?c===e?qe.FOLLOWING|qe.CONTAINED_BY:qe.FOLLOWING:c===t?qe.PRECEDING|qe.CONTAINS:qe.PRECEDING}function wb(t){return t=t.filter((e,r,n)=>!n.includes(e,r+1)),t.sort((e,r)=>{let n=bu(e,r);return n&qe.PRECEDING?-1:n&qe.FOLLOWING?1:0}),t}var qe,vu=T(()=>{Mt();(function(t){t[t.DISCONNECTED=1]="DISCONNECTED",t[t.PRECEDING=2]="PRECEDING",t[t.FOLLOWING=4]="FOLLOWING",t[t.CONTAINS=8]="CONTAINS",t[t.CONTAINED_BY=16]="CONTAINED_BY"})(qe||(qe={}))});function xb(t){let e=ei(Cb,t);return e?e.name==="feed"?kb(e):Sb(e):null}function kb(t){var e;let r=t.children,n={type:"atom",items:Ft("entry",r).map(s=>{var c;let{children:u}=s,l={media:wu(u)};Le(l,"id","id",u),Le(l,"title","title",u);let d=(c=ei("link",u))===null||c===void 0?void 0:c.attribs.href;d&&(l.link=d);let p=yt("summary",u)||yt("content",u);p&&(l.description=p);let m=yt("updated",u);return m&&(l.pubDate=new Date(m)),l})};Le(n,"id","id",r),Le(n,"title","title",r);let i=(e=ei("link",r))===null||e===void 0?void 0:e.attribs.href;i&&(n.link=i),Le(n,"description","subtitle",r);let o=yt("updated",r);return o&&(n.updated=new Date(o)),Le(n,"author","email",r,!0),n}function Sb(t){var e,r;let n=(r=(e=ei("channel",t.children))===null||e===void 0?void 0:e.children)!==null&&r!==void 0?r:[],i={type:t.name.substr(0,3),id:"",items:Ft("item",t.children).map(s=>{let{children:c}=s,u={media:wu(c)};Le(u,"id","guid",c),Le(u,"title","title",c),Le(u,"link","link",c),Le(u,"description","description",c);let l=yt("pubDate",c)||yt("dc:date",c);return l&&(u.pubDate=new Date(l)),u})};Le(i,"title","title",n),Le(i,"link","link",n),Le(i,"description","description",n);let o=yt("lastBuildDate",n);return o&&(i.updated=new Date(o)),Le(i,"author","managingEditor",n,!0),i}function wu(t){return Ft("media:content",t).map(e=>{let{attribs:r}=e,n={medium:r.medium,isDefault:!!r.isDefault};for(let i of Tb)r[i]&&(n[i]=r[i]);for(let i of Ab)r[i]&&(n[i]=parseInt(r[i],10));return r.expression&&(n.expression=r.expression),n})}function ei(t,e){return Ft(t,e,!0,1)[0]}function yt(t,e,r=!1){return Nr(Ft(t,e,r,1)).trim()}function Le(t,e,r,n,i=!1){let o=yt(r,n,i);o&&(t[e]=o)}function Cb(t){return t==="rss"||t==="feed"||t==="rdf:RDF"}var Tb,Ab,xu=T(()=>{Wo();Ko();Tb=["url","type","lang"],Ab=["fileSize","bitrate","framerate","samplingrate","channels","duration","height","width"]});var ti={};Ee(ti,{DocumentPosition:()=>qe,append:()=>cb,appendChild:()=>sb,compareDocumentPosition:()=>bu,existsOne:()=>gu,filter:()=>tr,find:()=>hu,findAll:()=>pb,findOne:()=>Yn,findOneChild:()=>db,getAttributeValue:()=>tb,getChildren:()=>du,getElementById:()=>gb,getElements:()=>hb,getElementsByClassName:()=>yb,getElementsByTagName:()=>Ft,getElementsByTagType:()=>bb,getFeed:()=>xb,getInnerHTML:()=>Zy,getName:()=>nb,getOuterHTML:()=>lu,getParent:()=>pu,getSiblings:()=>eb,getText:()=>Qn,hasAttrib:()=>rb,hasChildren:()=>be,innerText:()=>_o,isCDATA:()=>Rr,isComment:()=>Wn,isDocument:()=>jc,isTag:()=>ge,isText:()=>ut,nextElementSibling:()=>ib,prepend:()=>lb,prependChild:()=>ub,prevElementSibling:()=>ob,removeElement:()=>Mr,removeSubsets:()=>vb,replaceElement:()=>ab,testElement:()=>fb,textContent:()=>Nr,uniqueSort:()=>wb});var ku=T(()=>{Wo();mu();fu();Vo();Ko();vu();xu();Mt()});function Su(t){return t.replace(Eb,"\\$&")}function Bt(t,e){return typeof t.ignoreCase=="boolean"?t.ignoreCase:t.ignoreCase==="quirks"?!!e.quirksMode:!e.xmlMode&&Db.has(t.name)}var Fr,Eb,Db,Tu,Au=T(()=>{Fr=ot(Nt(),1),Eb=/[-[\]{}()*+?.,\\^$|#\s]/g;Db=new Set(["accept","accept-charset","align","alink","axis","bgcolor","charset","checked","clear","codetype","color","compact","declare","defer","dir","direction","disabled","enctype","face","frame","hreflang","http-equiv","lang","language","link","media","method","multiple","nohref","noresize","noshade","nowrap","readonly","rel","rev","rules","scope","scrolling","selected","shape","target","text","type","valign","valuetype","vlink"]);Tu={equals(t,e,r){let{adapter:n}=r,{name:i}=e,{value:o}=e;return Bt(e,r)?(o=o.toLowerCase(),s=>{let c=n.getAttributeValue(s,i);return c!=null&&c.length===o.length&&c.toLowerCase()===o&&t(s)}):s=>n.getAttributeValue(s,i)===o&&t(s)},hyphen(t,e,r){let{adapter:n}=r,{name:i}=e,{value:o}=e,s=o.length;return Bt(e,r)?(o=o.toLowerCase(),function(u){let l=n.getAttributeValue(u,i);return l!=null&&(l.length===s||l.charAt(s)==="-")&&l.substr(0,s).toLowerCase()===o&&t(u)}):function(u){let l=n.getAttributeValue(u,i);return l!=null&&(l.length===s||l.charAt(s)==="-")&&l.substr(0,s)===o&&t(u)}},element(t,e,r){let{adapter:n}=r,{name:i,value:o}=e;if(/\s/.test(o))return Fr.falseFunc;let s=new RegExp(`(?:^|\\s)${Su(o)}(?:$|\\s)`,Bt(e,r)?"i":"");return function(u){let l=n.getAttributeValue(u,i);return l!=null&&l.length>=o.length&&s.test(l)&&t(u)}},exists(t,{name:e},{adapter:r}){return n=>r.hasAttrib(n,e)&&t(n)},start(t,e,r){let{adapter:n}=r,{name:i}=e,{value:o}=e,s=o.length;return s===0?Fr.falseFunc:Bt(e,r)?(o=o.toLowerCase(),c=>{let u=n.getAttributeValue(c,i);return u!=null&&u.length>=s&&u.substr(0,s).toLowerCase()===o&&t(c)}):c=>{var u;return!!((u=n.getAttributeValue(c,i))!=null&&u.startsWith(o))&&t(c)}},end(t,e,r){let{adapter:n}=r,{name:i}=e,{value:o}=e,s=-o.length;return s===0?Fr.falseFunc:Bt(e,r)?(o=o.toLowerCase(),c=>{var u;return((u=n.getAttributeValue(c,i))==null?void 0:u.substr(s).toLowerCase())===o&&t(c)}):c=>{var u;return!!((u=n.getAttributeValue(c,i))!=null&&u.endsWith(o))&&t(c)}},any(t,e,r){let{adapter:n}=r,{name:i,value:o}=e;if(o==="")return Fr.falseFunc;if(Bt(e,r)){let s=new RegExp(Su(o),"i");return function(u){let l=n.getAttributeValue(u,i);return l!=null&&l.length>=o.length&&s.test(l)&&t(u)}}return s=>{var c;return!!((c=n.getAttributeValue(s,i))!=null&&c.includes(o))&&t(s)}},not(t,e,r){let{adapter:n}=r,{name:i}=e,{value:o}=e;return o===""?s=>!!n.getAttributeValue(s,i)&&t(s):Bt(e,r)?(o=o.toLowerCase(),s=>{let c=n.getAttributeValue(s,i);return(c==null||c.length!==o.length||c.toLowerCase()!==o)&&t(s)}):s=>n.getAttributeValue(s,i)!==o&&t(s)}}});function Cu(t,e,r){let{adapter:n,xmlMode:i=!1}=r,o=[],s=[e],c=[0];for(;;){if(c[0]>=s[0].length){if(s.length===1)return o;s.shift(),c.shift();continue}let u=s[0][c[0]++];if(n.isTag(u)&&(t(u)&&o.push(u),i||n.getName(u)!=="template")){let l=n.getChildren(u);l.length>0&&(s.unshift(l),c.unshift(0))}}}function rr(t,e,r){let{adapter:n,xmlMode:i=!1}=r,o=[e],s=[0];for(;;){if(s[0]>=o[0].length){if(o.length===1)return null;o.shift(),s.shift();continue}let c=o[0][s[0]++];if(n.isTag(c)){if(t(c))return c;if(i||n.getName(c)!=="template"){let u=n.getChildren(c);u.length>0&&(o.unshift(u),s.unshift(0))}}}}function ri(t,e){let r=e.getSiblings(t);if(r.length<=1)return[];let n=r.indexOf(t);return n<0||n===r.length-1?[]:r.slice(n+1).filter(e.isTag)}function ke(t,e){let r=e.getParent(t);return r!=null&&e.isTag(r)?r:null}var Ut=T(()=>{});var Eu,Xo,Du=T(()=>{Eu="input:is([type=text i],[type=search i],[type=url i],[type=tel i],[type=email i],[type=password i],[type=date i],[type=month i],[type=week i],[type=time i],[type=datetime-local i],[type=number i])",Xo={"any-link":":is(a, area, link)[href]",link:":any-link:not(:visited)",disabled:`:is(
|
|
37
|
+
`;break;case"event":i.event=p;break;case"id":i.id=p;break;case"retry":let m=parseInt(p,10);isNaN(m)||(i.retry=m);break}}}n.trim()}finally{e.releaseLock()}}var uo=A(()=>{"use strict";V()});function B0(t){let e={hit:!1},r=t.get("cf-cache-status");r&&(e.provider="cloudflare",e.status=r.toUpperCase(),e.hit=r.toUpperCase()==="HIT");let n=t.get("x-cache");if(n){let l=n.toUpperCase();e.hit=l.includes("HIT"),l.includes("FASTLY")?e.provider="fastly":l.includes("VARNISH")&&(e.provider="varnish"),l.includes("HIT")?e.status="HIT":l.includes("MISS")?e.status="MISS":l.includes("EXPIRED")?e.status="EXPIRED":l.includes("STALE")&&(e.status="STALE")}let i=t.get("x-akamai-cache-status");i&&(e.provider="akamai",e.hit=i.toUpperCase().includes("HIT"));let o=t.get("x-cache");t.get("x-amz-cf-id")&&(e.provider="cloudfront");let c=t.get("cache-control");if(c){let l=c.match(/max-age=(\d+)/);l&&(e.maxAge=parseInt(l[1],10))}let u=t.get("age");return u&&(e.age=parseInt(u,10)),e}function I0(t){let e={metadata:{}};for(let r of U0)if(r.detect(t)){e.provider=r.name,e.category=r.category;let n=r.extract(t);n.region&&(e.region=n.region),n.server&&(e.server=n.server),n.metadata&&Object.assign(e.metadata,n.metadata);break}if(!e.provider){let r=t.get("server");if(r){e.server=r;let n=r.toLowerCase();n.includes("cloudflare")?(e.provider="cloudflare",e.category="cdn"):n.includes("cloudfront")?(e.provider="aws-cloudfront",e.category="cloud"):n.includes("fastly")?(e.provider="fastly",e.category="cdn"):n.includes("akamai")?(e.provider="akamai",e.category="cdn"):n.includes("nginx")?(e.provider="nginx",e.category="server"):n.includes("apache")?(e.provider="apache",e.category="server"):n.includes("varnish")?(e.provider="varnish",e.category="proxy"):(e.provider="unknown",e.category="unknown")}}if(!e.provider){let r=t.get("via");if(r){let n=r.toLowerCase();n.includes("cloudflare")?(e.provider="cloudflare",e.category="cdn"):n.includes("akamai")?(e.provider="akamai",e.category="cdn"):n.includes("varnish")?(e.provider="varnish",e.category="proxy"):n.includes("squid")&&(e.provider="squid",e.category="proxy")}}return Object.keys(e.metadata||{}).length===0&&delete e.metadata,e}function H0(t,e){let r={limited:e===429},n=t.get("x-ratelimit-limit")||t.get("ratelimit-limit"),i=t.get("x-ratelimit-remaining")||t.get("ratelimit-remaining"),o=t.get("x-ratelimit-reset")||t.get("ratelimit-reset");if(n&&(r.limit=parseInt(n,10)),i&&(r.remaining=parseInt(i,10)),o){let u=parseInt(o,10);u>1e9?r.reset=new Date(u*1e3):r.reset=new Date(Date.now()+u*1e3)}let s=t.get("retry-after");if(s){let u=parseInt(s,10);if(!isNaN(u))r.retryAfter=u;else{let l=new Date(s);isNaN(l.getTime())||(r.retryAfter=Math.ceil((l.getTime()-Date.now())/1e3))}}let c=t.get("ratelimit-policy");return c&&(r.policy=c),r.remaining!==void 0&&r.remaining===0&&(r.limited=!0),r}function q0(t){let e={},r=t.get("content-encoding");r&&(e.encoding=r.toLowerCase());let n=t.get("x-original-size")||t.get("x-uncompressed-size");n&&(e.originalSize=parseInt(n,10));let i=t.get("content-length");return i&&(e.compressedSize=parseInt(i,10)),e.originalSize&&e.compressedSize&&(e.ratio=e.originalSize/e.compressedSize),e}function $0(t){let e={directives:{},reportOnly:!1},r=t.get("content-security-policy");if(r||(r=t.get("content-security-policy-report-only"),r&&(e.reportOnly=!0)),r){e.policy=r;let n=r.split(";").map(i=>i.trim()).filter(Boolean);for(let i of n){let[o,...s]=i.split(/\s+/);o&&(e.directives[o]=s)}}return e}function O0(t){let e={},r=t.get("content-type");if(!r)return e;let n=r.split(";").map(i=>i.trim());if(n[0]){e.mediaType=n[0];let[i,o]=n[0].split("/");i&&(e.type=i),o&&(e.subtype=o)}for(let i=1;i<n.length;i++){let o=n[i],[s,c]=o.split("=").map(u=>u.trim());s==="charset"&&c?e.charset=c.replace(/['"]/g,""):s==="boundary"&&c&&(e.boundary=c.replace(/['"]/g,""))}return e}function z0(t){let e={types:[],encodings:[],languages:[]},r=t.get("accept");if(r){let o=r.split(",").map(s=>s.trim());for(let s of o){let[c,...u]=s.split(";").map(m=>m.trim()),l=1;for(let m of u)m.startsWith("q=")&&(l=parseFloat(m.substring(2))||1);let[d,p]=c.split("/");e.types.push({mediaType:c,q:l,type:d||void 0,subtype:p||void 0})}e.types.sort((s,c)=>c.q-s.q)}let n=t.get("accept-encoding");if(n){let o=n.split(",").map(s=>s.trim());for(let s of o){let[c,...u]=s.split(";").map(d=>d.trim()),l=1;for(let d of u)d.startsWith("q=")&&(l=parseFloat(d.substring(2))||1);e.encodings.push({encoding:c,q:l})}e.encodings.sort((s,c)=>c.q-s.q)}let i=t.get("accept-language");if(i){let o=i.split(",").map(s=>s.trim());for(let s of o){let[c,...u]=s.split(";").map(d=>d.trim()),l=1;for(let d of u)d.startsWith("q=")&&(l=parseFloat(d.substring(2))||1);e.languages.push({language:c,q:l})}e.languages.sort((s,c)=>c.q-s.q)}return e}function j0(t){let e={methods:[]},r=t.get("www-authenticate");if(r){r.toLowerCase().includes("basic")&&e.methods.push("Basic"),r.toLowerCase().includes("bearer")&&e.methods.push("Bearer"),r.toLowerCase().includes("digest")&&e.methods.push("Digest"),r.toLowerCase().includes("negotiate")&&e.methods.push("Negotiate"),r.toLowerCase().includes("aws4-hmac-sha256")&&e.methods.push("AWS4");let i=r.match(/realm="([^"]+)"/);i&&(e.realm=i[1]);let o=r.match(/error="([^"]+)"/);o&&(e.error=o[1]);let s=r.match(/error_description="([^"]+)"/);s&&(e.errorDescription=s[1])}let n=t.get("x-auth-error")||t.get("x-authentication-error");return n&&(e.error||(e.error=n)),e}function _0(t){let e=t.get("date");if(!e)return{};let r=new Date(e);if(isNaN(r.getTime()))return{};let n=r.getTime()-Date.now();return{serverTime:r,skewMs:n}}function ft(t,e){return{cache:B0(t),platform:I0(t),rateLimit:H0(t,e),compression:q0(t),csp:$0(t),contentType:O0(t),accept:z0(t),auth:j0(t),clockSkew:_0(t)}}var U0,Nn=A(()=>{"use strict";U0=[{name:"cloudflare",category:"cdn",headers:["cf-ray","cf-cache-status"],detect:t=>t.get("cf-ray")!==null,extract:t=>{let e=t.get("cf-ray"),r={};if(e){r.ray=e;let n=e.split("-");if(n.length>1)return{region:n[1],metadata:r}}return{metadata:r}}},{name:"fastly",category:"cdn",headers:["fastly-debug-digest","x-served-by"],detect:t=>{let e=t.get("x-served-by");return(e==null?void 0:e.includes("cache-"))||t.get("fastly-debug-digest")!==null},extract:t=>({server:t.get("x-served-by")||void 0,metadata:{digest:t.get("fastly-debug-digest")}})},{name:"akamai",category:"cdn",headers:["x-akamai-request-id","x-akamai-cache-status"],detect:t=>t.get("x-akamai-request-id")!==null,extract:t=>({metadata:{requestId:t.get("x-akamai-request-id"),cacheId:t.get("x-akamai-cache-status")}})},{name:"aws-cloudfront",category:"cloud",headers:["x-amz-cf-id","x-amz-cf-pop"],detect:t=>t.get("x-amz-cf-id")!==null,extract:t=>({region:t.get("x-amz-cf-pop")||void 0,metadata:{requestId:t.get("x-amz-cf-id"),pop:t.get("x-amz-cf-pop")}})},{name:"gcp",category:"cloud",headers:["x-cloud-trace-context","x-goog-request-id"],detect:t=>t.get("x-cloud-trace-context")!==null||t.get("x-goog-request-id")!==null,extract:t=>{let e=t.get("x-cloud-trace-context");return{metadata:{traceId:e?e.split("/")[0]:void 0,requestId:t.get("x-goog-request-id")}}}},{name:"azure",category:"cloud",headers:["x-ms-request-id","x-azure-ref"],detect:t=>t.get("x-ms-request-id")!==null,extract:t=>({metadata:{requestId:t.get("x-ms-request-id"),ref:t.get("x-azure-ref")}})},{name:"oracle-cloud",category:"cloud",headers:["x-oracle-dms-rid","x-oracle-dms-ecid"],detect:t=>t.get("x-oracle-dms-rid")!==null,extract:t=>({metadata:{requestId:t.get("x-oracle-dms-rid"),ecid:t.get("x-oracle-dms-ecid")}})},{name:"alibaba-cloud",category:"cloud",headers:["ali-swift-global-savetime","eagleeye-traceid"],detect:t=>t.get("eagleeye-traceid")!==null,extract:t=>({metadata:{traceId:t.get("eagleeye-traceid")}})},{name:"vercel",category:"hosting",headers:["x-vercel-id","x-vercel-cache"],detect:t=>t.get("x-vercel-id")!==null,extract:t=>({metadata:{requestId:t.get("x-vercel-id"),cache:t.get("x-vercel-cache")}})},{name:"netlify",category:"hosting",headers:["x-nf-request-id","x-nf-trace-id"],detect:t=>t.get("x-nf-request-id")!==null,extract:t=>({metadata:{requestId:t.get("x-nf-request-id"),traceId:t.get("x-nf-trace-id")}})},{name:"render",category:"hosting",headers:["x-render-origin-server"],detect:t=>t.get("x-render-origin-server")!==null,extract:t=>({metadata:{origin:t.get("x-render-origin-server")}})},{name:"datadome",category:"security",headers:["x-datadome","x-datadome-cid"],detect:t=>t.get("x-datadome")!==null||t.get("x-datadome-cid")!==null,extract:t=>({metadata:{cid:t.get("x-datadome-cid")}})},{name:"incapsula",category:"security",headers:["x-iinfo","x-cdn"],detect:t=>t.get("x-iinfo")!==null||(t.get("x-cdn")||"").includes("Incapsula"),extract:t=>({metadata:{iinfo:t.get("x-iinfo")}})},{name:"imperva",category:"security",headers:["x-imperva-uuid"],detect:t=>t.get("x-imperva-uuid")!==null,extract:t=>({metadata:{uuid:t.get("x-imperva-uuid")}})},{name:"aws-waf",category:"security",headers:["x-amzn-waf-action"],detect:t=>t.get("server")==="awselb/2.0",extract:t=>({})},{name:"envoy",category:"proxy",headers:["x-envoy-upstream-service-time"],detect:t=>t.get("x-envoy-upstream-service-time")!==null||t.get("server")==="envoy",extract:t=>({})},{name:"traefik",category:"proxy",headers:[],detect:t=>(t.get("server")||"").toLowerCase().includes("traefik"),extract:t=>({})},{name:"caddy",category:"server",headers:[],detect:t=>(t.get("server")||"").toLowerCase().includes("caddy"),extract:t=>({})},{name:"haproxy",category:"proxy",headers:[],detect:t=>(t.get("server")||"").toLowerCase().includes("haproxy"),extract:t=>({})},{name:"iis",category:"server",headers:["x-powered-by"],detect:t=>(t.get("server")||"").toLowerCase().includes("iis"),extract:t=>({})},{name:"kestrel",category:"server",headers:[],detect:t=>(t.get("server")||"").toLowerCase().includes("kestrel"),extract:t=>({})},{name:"express",category:"framework",headers:["x-powered-by"],detect:t=>(t.get("x-powered-by")||"").toLowerCase().includes("express"),extract:t=>({})},{name:"rails",category:"framework",headers:["x-runtime","x-request-id"],detect:t=>t.get("x-runtime")!==null&&!(t.get("x-powered-by")||"").includes("Express"),extract:t=>({metadata:{runtime:t.get("x-runtime")}})},{name:"django",category:"framework",headers:[],detect:t=>(t.get("server")||"").toLowerCase().includes("wsgi"),extract:t=>({})},{name:"aspnet",category:"framework",headers:["x-aspnet-version","x-powered-by"],detect:t=>t.get("x-aspnet-version")!==null||(t.get("x-powered-by")||"").includes("ASP.NET"),extract:t=>({metadata:{version:t.get("x-aspnet-version")}})},{name:"php",category:"framework",headers:["x-powered-by"],detect:t=>(t.get("x-powered-by")||"").toLowerCase().includes("php"),extract:t=>({metadata:{version:t.get("x-powered-by")}})}]});function W0(t){if(!t||typeof t!="string")return{all:[]};let e=[],r={all:e},n=V0(t);for(let i of n){let o=G0(i.trim());if(o&&(e.push(o),o.rel)){let s=o.rel.split(/\s+/);for(let c of s){let u=r[c];u?Array.isArray(u)?u.push(o):r[c]=[u,o]:r[c]=o}}}return r}function V0(t){let e=[],r="",n=!1,i=!1;for(let o=0;o<t.length;o++){let s=t[o],c=o>0?t[o-1]:"";if(s==="<"&&!i)n=!0;else if(s===">"&&!i)n=!1;else if(s==='"'&&c!=="\\")i=!i;else if(s===","&&!n&&!i){e.push(r.trim()),r="";continue}r+=s}return r.trim()&&e.push(r.trim()),e}function G0(t){let e=t.match(/^<([^>]+)>/);if(!e)return null;let n={uri:e[1]},i=t.slice(e[0].length),o=K0(i);for(let[s,c]of Object.entries(o))n[s]=c;return n}function K0(t){let e={},r=t.split(/;/).filter(n=>n.trim());for(let n of r){let i=n.indexOf("=");if(i===-1)continue;let o=n.slice(0,i).trim(),s=n.slice(i+1).trim();(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),s=s.replace(/\\(.)/g,"$1"),e[o]=s}return e}function Mn(t){let e=t.get("Link");return e?new lo(e):null}var De,lo,Fn=A(()=>{"use strict";De={NEXT:"next",PREV:"prev",PREVIOUS:"previous",FIRST:"first",LAST:"last",ALTERNATE:"alternate",CANONICAL:"canonical",AUTHOR:"author",LICENSE:"license",STYLESHEET:"stylesheet",ICON:"icon",PRELOAD:"preload",PREFETCH:"prefetch",PRECONNECT:"preconnect",DNS_PREFETCH:"dns-prefetch",PRERENDER:"prerender",SELF:"self",EDIT:"edit",COLLECTION:"collection",ITEM:"item",HELP:"help",DESCRIBEDBY:"describedby",UP:"up",RELATED:"related",REPLIES:"replies",VIA:"via"},lo=class{links;constructor(e){this.links=W0(e)}getAll(){return this.links.all}getRel(e){return this.links[e]}getFirst(e){let r=this.links[e];if(r)return Array.isArray(r)?r[0]:r}has(e){return e in this.links}getPagination(){var e,r,n,i,o;return{next:(e=this.getFirst(De.NEXT))==null?void 0:e.uri,prev:((r=this.getFirst(De.PREV))==null?void 0:r.uri)||((n=this.getFirst(De.PREVIOUS))==null?void 0:n.uri),first:(i=this.getFirst(De.FIRST))==null?void 0:i.uri,last:(o=this.getFirst(De.LAST))==null?void 0:o.uri}}hasNext(){return this.has(De.NEXT)}hasPrev(){return this.has(De.PREV)||this.has(De.PREVIOUS)}getCanonical(){var e;return(e=this.getFirst(De.CANONICAL))==null?void 0:e.uri}getAlternates(){let e=this.getRel(De.ALTERNATE);return e?Array.isArray(e)?e:[e]:[]}getResourceHints(){let e=r=>{let n=this.getRel(r);return n?Array.isArray(n)?n:[n]:[]};return{preload:e(De.PRELOAD),prefetch:e(De.PREFETCH),preconnect:e(De.PRECONNECT),dnsPrefetch:e(De.DNS_PREFETCH)}}toJSON(){return this.links}}});var po,sc,gk,mo=A(()=>{po={},sc=t=>t,gk=globalThis.performance});var Tr,cc,bk,Bn=A(()=>{Tr={},cc=()=>"/",bk=globalThis.performance});var fo,wk,uc=A(()=>{fo={},wk=globalThis.performance});function J0(){let t=["/sys/fs/cgroup/memory.max","/sys/fs/cgroup/memory/memory.limit_in_bytes"];for(let e of t)try{if(gn.existsSync(e)){let r=gn.readFileSync(e,"utf8").trim();if(!r||r==="max")continue;let n=Number.parseInt(r,10);if(Number.isFinite(n)&&n>0)return n}}catch{}return null}function ho(){let t=J0();return t&&Number.isFinite(t)&&t>0?t:Tr.totalmem()}function dc(t={}){let{maxMemoryBytes:e,maxMemoryPercent:r,safetyPercent:n}=t,i=fo.getHeapStatistics(),o=(i==null?void 0:i.heap_size_limit)??0,s=ho(),c=0,u=!1;if(typeof e=="number"&&e>0)c=e;else if(typeof r=="number"&&r>0){let m=Math.max(0,Math.min(r,1));c=Math.floor(s*m),u=!0}let l=typeof n=="number"&&n>0&&n<=1?n:lc,d=Math.floor(s*l);if((c===0||d<c)&&(c=d,u=u||(r??0)>0),o>0){let m=Math.floor(o*X0);(c===0||m<c)&&(c=m,u=u||(r??0)>0)}(!Number.isFinite(c)||c<=0)&&(c=Math.floor(s*lc),u=!0);let p=s>0?c/s:null;return{maxMemoryBytes:c,derivedFromPercent:u,effectiveTotal:s,heapLimit:o,inferredPercent:p}}function Qe(t){if(t===0)return"0 B";let e=1024,r=["B","KB","MB","GB","TB"],n=Math.floor(Math.log(t)/Math.log(e));return`${(t/Math.pow(e,n)).toFixed(2)} ${r[n]}`}function Un(){let t=fo.getHeapStatistics(),{heapUsed:e}=process.memoryUsage(),r=(t==null?void 0:t.heap_size_limit)??0,n=r>0?e/r:0;return{heapUsed:e,heapLimit:r,heapRatio:n}}var lc,X0,pc=A(()=>{"use strict";At();Bn();uc();lc=.5,X0=.6});var yo={};Ee(yo,{MemoryStorage:()=>go});var go,bo=A(()=>{"use strict";V();mo();Bn();pc();go=class{storage=new Map;meta=new Map;maxSize;maxMemoryBytes;maxMemoryPercent;defaultTtl;evictionPolicy;compressionEnabled;compressionThreshold;enableStats;heapUsageThreshold;onEvict;onPressure;currentMemoryBytes=0;evictedDueToMemory=0;memoryPressureEvents=0;accessCounter=0;monitorHandle=null;cleanupHandle=null;stats={hits:0,misses:0,sets:0,deletes:0,evictions:0};compressionStats={totalCompressed:0,totalOriginalSize:0,totalCompressedSize:0};constructor(e={}){if(e.maxMemoryBytes&&e.maxMemoryBytes>0&&e.maxMemoryPercent&&e.maxMemoryPercent>0)throw new Me("[MemoryStorage] Cannot use both maxMemoryBytes and maxMemoryPercent",{configKey:"maxMemoryBytes|maxMemoryPercent"});if(e.maxMemoryPercent!==void 0&&(e.maxMemoryPercent<0||e.maxMemoryPercent>1))throw new Me("[MemoryStorage] maxMemoryPercent must be between 0 and 1",{configKey:"maxMemoryPercent"});if(this.maxSize=e.maxSize??1e3,this.defaultTtl=e.ttl??3e5,this.evictionPolicy=e.evictionPolicy??"lru",this.enableStats=e.enableStats??!1,this.heapUsageThreshold=e.heapUsageThreshold??.6,e.maxMemoryBytes&&e.maxMemoryBytes>0)this.maxMemoryBytes=e.maxMemoryBytes,this.maxMemoryPercent=0;else if(e.maxMemoryPercent&&e.maxMemoryPercent>0){let i=ho();this.maxMemoryBytes=Math.floor(i*e.maxMemoryPercent),this.maxMemoryPercent=e.maxMemoryPercent}else{let i=dc({});this.maxMemoryBytes=i.maxMemoryBytes,this.maxMemoryPercent=i.inferredPercent??0}e.compression===!0?(this.compressionEnabled=!0,this.compressionThreshold=1024):typeof e.compression=="object"&&e.compression.enabled?(this.compressionEnabled=!0,this.compressionThreshold=e.compression.threshold??1024):(this.compressionEnabled=!1,this.compressionThreshold=1024),this.onEvict=e.onEvict,this.onPressure=e.onPressure;let r=e.monitorInterval??15e3;r>0&&(this.monitorHandle=setInterval(()=>this.memoryHealthCheck(),r),this.monitorHandle.unref());let n=e.cleanupInterval??6e4;n>0&&(this.cleanupHandle=setInterval(()=>this.cleanupExpired(),n),this.cleanupHandle.unref())}async get(e){let r=this.storage.get(e),n=this.meta.get(e);if(!r||!n){this.recordStat("misses");return}let i=Date.now();if(i>n.expiresAt){this.deleteInternal(e),this.recordStat("misses");return}if(this.evictionPolicy==="lru"&&(n.lastAccess=i,n.accessOrder=++this.accessCounter),this.recordStat("hits"),this.isCompressed(r))try{let o=this.decompress(r);return JSON.parse(o)}catch{this.deleteInternal(e);return}return JSON.parse(r)}async set(e,r,n){let i=n??this.defaultTtl,o=Date.now(),s=JSON.stringify(r),c=Buffer.byteLength(s,"utf8"),u=s,l=c,d=!1;if(this.compressionEnabled&&c>=this.compressionThreshold)try{let m=this.compress(s);u=m,l=Buffer.byteLength(m.__data,"utf8"),d=!0,this.compressionStats.totalCompressed++,this.compressionStats.totalOriginalSize+=c,this.compressionStats.totalCompressedSize+=l}catch{}let p=this.meta.get(e);if(p&&(this.currentMemoryBytes-=p.compressedSize),!this.enforceMemoryLimit(l)){this.evictedDueToMemory++;return}!p&&this.storage.size>=this.maxSize&&this.evictOne("size"),this.storage.set(e,u),this.meta.set(e,{createdAt:o,expiresAt:o+i,lastAccess:o,insertOrder:++this.accessCounter,accessOrder:this.accessCounter,compressed:d,originalSize:c,compressedSize:l}),this.currentMemoryBytes+=l,this.recordStat("sets")}async delete(e){this.deleteInternal(e),this.recordStat("deletes")}clear(e){if(!e){this.storage.clear(),this.meta.clear(),this.currentMemoryBytes=0,this.evictedDueToMemory=0,this.enableStats&&(this.stats={hits:0,misses:0,sets:0,deletes:0,evictions:0});return}for(let r of this.storage.keys())r.startsWith(e)&&this.deleteInternal(r)}size(){return this.storage.size}keys(){return Array.from(this.storage.keys())}has(e){let r=this.meta.get(e);return r?Date.now()>r.expiresAt?(this.deleteInternal(e),!1):!0:!1}getStats(){let e=this.stats.hits+this.stats.misses,r=e>0?this.stats.hits/e:0;return{enabled:this.enableStats,...this.stats,hitRate:r,totalItems:this.storage.size,memoryUsageBytes:this.currentMemoryBytes,maxMemoryBytes:this.maxMemoryBytes,evictedDueToMemory:this.evictedDueToMemory}}getMemoryStats(){let e=this.storage.size,r=this.maxMemoryBytes>0?this.currentMemoryBytes/this.maxMemoryBytes*100:0,n=Tr.totalmem(),i=Tr.freemem(),o=n-i,s=n>0?this.currentMemoryBytes/n*100:0;return{currentMemoryBytes:this.currentMemoryBytes,maxMemoryBytes:this.maxMemoryBytes,maxMemoryPercent:this.maxMemoryPercent,memoryUsagePercent:parseFloat(r.toFixed(2)),cachePercentOfSystemMemory:parseFloat(s.toFixed(2)),totalItems:e,maxSize:this.maxSize,evictedDueToMemory:this.evictedDueToMemory,memoryPressureEvents:this.memoryPressureEvents,averageItemSize:e>0?Math.round(this.currentMemoryBytes/e):0,memoryUsage:{current:Qe(this.currentMemoryBytes),max:Qe(this.maxMemoryBytes),available:Qe(Math.max(0,this.maxMemoryBytes-this.currentMemoryBytes))},systemMemory:{total:Qe(n),free:Qe(i),used:Qe(o),cachePercent:`${s.toFixed(2)}%`}}}getCompressionStats(){if(!this.compressionEnabled)return{enabled:!1,totalItems:this.storage.size,compressedItems:0,compressionThreshold:this.compressionThreshold,totalOriginalSize:0,totalCompressedSize:0,averageCompressionRatio:"0",spaceSavingsPercent:"0",memoryUsage:{uncompressed:"0 B",compressed:"0 B",saved:"0 B"}};let e=this.compressionStats.totalOriginalSize>0?(this.compressionStats.totalCompressedSize/this.compressionStats.totalOriginalSize).toFixed(2):"0",r=this.compressionStats.totalOriginalSize>0?((this.compressionStats.totalOriginalSize-this.compressionStats.totalCompressedSize)/this.compressionStats.totalOriginalSize*100).toFixed(2):"0",n=this.compressionStats.totalOriginalSize-this.compressionStats.totalCompressedSize;return{enabled:!0,totalItems:this.storage.size,compressedItems:this.compressionStats.totalCompressed,compressionThreshold:this.compressionThreshold,totalOriginalSize:this.compressionStats.totalOriginalSize,totalCompressedSize:this.compressionStats.totalCompressedSize,averageCompressionRatio:e,spaceSavingsPercent:r,memoryUsage:{uncompressed:Qe(this.compressionStats.totalOriginalSize),compressed:Qe(this.compressionStats.totalCompressedSize),saved:Qe(n)}}}shutdown(){this.monitorHandle&&(clearInterval(this.monitorHandle),this.monitorHandle=null),this.cleanupHandle&&(clearInterval(this.cleanupHandle),this.cleanupHandle=null)}deleteInternal(e){let r=this.meta.get(e);r&&(this.currentMemoryBytes-=r.compressedSize),this.storage.delete(e),this.meta.delete(e)}recordStat(e){this.enableStats&&this.stats[e]++}isCompressed(e){return typeof e=="object"&&e!==null&&"__compressed"in e}compress(e){let r=Buffer.from(e,"utf8");return{__compressed:!0,__data:po.gzipSync(r).toString("base64"),__originalSize:r.length}}decompress(e){let r=Buffer.from(e.__data,"base64");return po.gunzipSync(r).toString("utf8")}selectEvictionCandidate(){if(this.meta.size===0)return null;let e=null,r=(this.evictionPolicy==="lru",1/0);for(let[n,i]of this.meta){let o=this.evictionPolicy==="lru"?i.accessOrder:i.insertOrder;o<r&&(r=o,e=n)}return e}evictOne(e){var o;let r=this.selectEvictionCandidate();if(!r)return null;let n=this.meta.get(r),i=(n==null?void 0:n.compressedSize)??0;return this.deleteInternal(r),this.stats.evictions++,(e==="memory"||e==="heap")&&this.evictedDueToMemory++,(o=this.onEvict)==null||o.call(this,{reason:e,key:r,freedBytes:i,currentBytes:this.currentMemoryBytes,maxMemoryBytes:this.maxMemoryBytes}),{key:r,freedBytes:i}}enforceMemoryLimit(e){if(e>this.maxMemoryBytes)return!1;for(;this.currentMemoryBytes+e>this.maxMemoryBytes&&this.storage.size>0&&this.evictOne("memory"););return this.currentMemoryBytes+e<=this.maxMemoryBytes}reduceMemoryTo(e){e=Math.max(0,e);let r=0;for(;this.currentMemoryBytes>e&&this.storage.size>0;){let n=this.evictOne("memory");if(!n)break;r+=n.freedBytes}return r}memoryHealthCheck(){var o,s;let e=0;if(this.currentMemoryBytes>this.maxMemoryBytes){let c=this.currentMemoryBytes;this.enforceMemoryLimit(0);let u=c-this.currentMemoryBytes;u>0&&(e+=u,this.memoryPressureEvents++,(o=this.onPressure)==null||o.call(this,{reason:"limit",heapLimit:Un().heapLimit,heapUsed:Un().heapUsed,currentBytes:this.currentMemoryBytes,maxMemoryBytes:this.maxMemoryBytes,freedBytes:u}))}let{heapUsed:r,heapLimit:n,heapRatio:i}=Un();if(n>0&&i>=this.heapUsageThreshold){let c=this.currentMemoryBytes,u=Math.floor(this.currentMemoryBytes*.5);this.reduceMemoryTo(u);let l=c-this.currentMemoryBytes;l>0&&(e+=l,this.memoryPressureEvents++,(s=this.onPressure)==null||s.call(this,{reason:"heap",heapLimit:n,heapUsed:r,heapRatio:i,currentBytes:this.currentMemoryBytes,maxMemoryBytes:this.maxMemoryBytes,freedBytes:l}))}return e}cleanupExpired(){var n;let e=Date.now(),r=0;for(let[i,o]of this.meta)e>o.expiresAt&&(this.deleteInternal(i),r++,(n=this.onEvict)==null||n.call(this,{reason:"expired",key:i,freedBytes:o.compressedSize,currentBytes:this.currentMemoryBytes,maxMemoryBytes:this.maxMemoryBytes}));return r}}});var Nt=Ts((Jk,Ac)=>{Ac.exports={trueFunc:function(){return!0},falseFunc:function(){return!1}}});var L,Z,jn=A(()=>{(function(t){t.Attribute="attribute",t.Pseudo="pseudo",t.PseudoElement="pseudo-element",t.Tag="tag",t.Universal="universal",t.Adjacent="adjacent",t.Child="child",t.Descendant="descendant",t.Parent="parent",t.Sibling="sibling",t.ColumnCombinator="column-combinator"})(L||(L={}));(function(t){t.Any="any",t.Element="element",t.End="end",t.Equals="equals",t.Exists="exists",t.Hyphen="hyphen",t.Not="not",t.Start="start"})(Z||(Z={}))});function _n(t){switch(t.type){case L.Adjacent:case L.Child:case L.Descendant:case L.Parent:case L.Sibling:case L.ColumnCombinator:return!0;default:return!1}}function Ny(t,e,r){let n=Number.parseInt(e,16)-65536;return n!==n||r?e:n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,n&1023|56320)}function Er(t){return t.replace(Ey,Ny)}function Ro(t){return t===D.SingleQuote||t===D.DoubleQuote}function Ec(t){return t===D.Space||t===D.Tab||t===D.NewLine||t===D.FormFeed||t===D.CarriageReturn}function Dr(t){let e=[],r=Dc(e,`${t}`,0);if(r<t.length)throw new Error(`Unmatched selector: ${t.slice(r)}`);return e}function Dc(t,e,r){let n=[];function i(p){let m=e.slice(r+p).match(Cc);if(!m)throw new Error(`Expected name, found ${e.slice(r)}`);let[f]=m;return r+=p+f.length,Er(f)}function o(p){for(r+=p;r<e.length&&Ec(e.charCodeAt(r));)r++}function s(){r+=1;let p=r;for(let m=1;r<e.length;r++)switch(e.charCodeAt(r)){case D.BackSlash:{r+=1;break}case D.LeftParenthesis:{m+=1;break}case D.RightParenthesis:{if(m-=1,m===0)return Er(e.slice(p,r++));break}}throw new Error("Parenthesis not matched")}function c(){if(n.length>0&&_n(n[n.length-1]))throw new Error("Did not expect successive traversals.")}function u(p){if(n.length>0&&n[n.length-1].type===L.Descendant){n[n.length-1].type=p;return}c(),n.push({type:p})}function l(p,m){n.push({type:L.Attribute,name:p,action:m,value:i(1),namespace:null,ignoreCase:"quirks"})}function d(){if(n.length>0&&n[n.length-1].type===L.Descendant&&n.pop(),n.length===0)throw new Error("Empty sub-selector");t.push(n)}if(o(0),e.length===r)return r;e:for(;r<e.length;){let p=e.charCodeAt(r);switch(p){case D.Space:case D.Tab:case D.NewLine:case D.FormFeed:case D.CarriageReturn:{(n.length===0||n[0].type!==L.Descendant)&&(c(),n.push({type:L.Descendant})),o(1);break}case D.GreaterThan:{u(L.Child),o(1);break}case D.LessThan:{u(L.Parent),o(1);break}case D.Tilde:{u(L.Sibling),o(1);break}case D.Plus:{u(L.Adjacent),o(1);break}case D.Period:{l("class",Z.Element);break}case D.Hash:{l("id",Z.Equals);break}case D.LeftSquareBracket:{o(1);let m,f=null;e.charCodeAt(r)===D.Pipe?m=i(1):e.startsWith("*|",r)?(f="*",m=i(2)):(m=i(0),e.charCodeAt(r)===D.Pipe&&e.charCodeAt(r+1)!==D.Equal&&(f=m,m=i(1))),o(0);let h=Z.Exists,g=Dy.get(e.charCodeAt(r));if(g){if(h=g,e.charCodeAt(r+1)!==D.Equal)throw new Error("Expected `=`");o(2)}else e.charCodeAt(r)===D.Equal&&(h=Z.Equals,o(1));let y="",C=null;if(h!=="exists"){if(Ro(e.charCodeAt(r))){let w=e.charCodeAt(r);r+=1;let x=r;for(;r<e.length&&e.charCodeAt(r)!==w;)r+=e.charCodeAt(r)===D.BackSlash?2:1;if(e.charCodeAt(r)!==w)throw new Error("Attribute value didn't end");y=Er(e.slice(x,r)),r+=1}else{let w=r;for(;r<e.length&&!Ec(e.charCodeAt(r))&&e.charCodeAt(r)!==D.RightSquareBracket;)r+=e.charCodeAt(r)===D.BackSlash?2:1;y=Er(e.slice(w,r))}switch(o(0),e.charCodeAt(r)|32){case D.LowerI:{C=!0,o(1);break}case D.LowerS:{C=!1,o(1);break}}}if(e.charCodeAt(r)!==D.RightSquareBracket)throw new Error("Attribute selector didn't terminate");r+=1;let b={type:L.Attribute,name:m,action:h,value:y,namespace:f,ignoreCase:C};n.push(b);break}case D.Colon:{if(e.charCodeAt(r+1)===D.Colon){n.push({type:L.PseudoElement,name:i(2).toLowerCase(),data:e.charCodeAt(r)===D.LeftParenthesis?s():null});break}let m=i(1).toLowerCase();if(Ry.has(m)){n.push({type:L.PseudoElement,name:m,data:null});break}let f=null;if(e.charCodeAt(r)===D.LeftParenthesis)if(Ly.has(m)){if(Ro(e.charCodeAt(r+1)))throw new Error(`Pseudo-selector ${m} cannot be quoted`);if(f=[],r=Dc(f,e,r+1),e.charCodeAt(r)!==D.RightParenthesis)throw new Error(`Missing closing parenthesis in :${m} (${e})`);r+=1}else{if(f=s(),Py.has(m)){let h=f.charCodeAt(0);h===f.charCodeAt(f.length-1)&&Ro(h)&&(f=f.slice(1,-1))}f=Er(f)}n.push({type:L.Pseudo,name:m,data:f});break}case D.Comma:{d(),n=[],o(1);break}default:{if(e.startsWith("/*",r)){let h=e.indexOf("*/",r+2);if(h<0)throw new Error("Comment was not terminated");r=h+2,n.length===0&&o(0);break}let m=null,f;if(p===D.Asterisk)r+=1,f="*";else if(p===D.Pipe){if(f="",e.charCodeAt(r+1)===D.Pipe){u(L.ColumnCombinator),o(2);break}}else if(Cc.test(e.slice(r)))f=i(0);else break e;e.charCodeAt(r)===D.Pipe&&e.charCodeAt(r+1)!==D.Pipe&&(m=f,e.charCodeAt(r+1)===D.Asterisk?(f="*",r+=2):f=i(1)),n.push(f==="*"?{type:L.Universal,namespace:m}:{type:L.Tag,name:f,namespace:m})}}}return d(),r}var Cc,Ey,D,Dy,Ly,Ry,Py,Lc=A(()=>{jn();Cc=/^[^#\\]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\u00B0-\uFFFF-])+/,Ey=/\\([\da-f]{1,6}\s?|(\s)|.)/gi;(function(t){t[t.LeftParenthesis=40]="LeftParenthesis",t[t.RightParenthesis=41]="RightParenthesis",t[t.LeftSquareBracket=91]="LeftSquareBracket",t[t.RightSquareBracket=93]="RightSquareBracket",t[t.Comma=44]="Comma",t[t.Period=46]="Period",t[t.Colon=58]="Colon",t[t.SingleQuote=39]="SingleQuote",t[t.DoubleQuote=34]="DoubleQuote",t[t.Plus=43]="Plus",t[t.Tilde=126]="Tilde",t[t.QuestionMark=63]="QuestionMark",t[t.ExclamationMark=33]="ExclamationMark",t[t.Slash=47]="Slash",t[t.Equal=61]="Equal",t[t.Dollar=36]="Dollar",t[t.Pipe=124]="Pipe",t[t.Circumflex=94]="Circumflex",t[t.Asterisk=42]="Asterisk",t[t.GreaterThan=62]="GreaterThan",t[t.LessThan=60]="LessThan",t[t.Hash=35]="Hash",t[t.LowerI=105]="LowerI",t[t.LowerS=115]="LowerS",t[t.BackSlash=92]="BackSlash",t[t.Space=32]="Space",t[t.Tab=9]="Tab",t[t.NewLine=10]="NewLine",t[t.FormFeed=12]="FormFeed",t[t.CarriageReturn=13]="CarriageReturn"})(D||(D={}));Dy=new Map([[D.Tilde,Z.Element],[D.Circumflex,Z.Start],[D.Dollar,Z.End],[D.Asterisk,Z.Any],[D.ExclamationMark,Z.Not],[D.Pipe,Z.Hyphen]]),Ly=new Set(["has","not","matches","is","where","host","host-context"]),Ry=new Set(["before","after","first-line","first-letter"]);Py=new Set(["contains","icontains"])});var Rc,Pc,tT,rT,nT,Nc=A(()=>{jn();Rc=["\\",'"'],Pc=[...Rc,"(",")"],tT=new Set(Rc.map(t=>t.charCodeAt(0))),rT=new Set(Pc.map(t=>t.charCodeAt(0))),nT=new Set([...Pc,"~","^","$","*","+","!","|",":","[","]"," ",".","%"].map(t=>t.charCodeAt(0)))});var er=A(()=>{jn();Lc();Nc()});function Mc(t){return t.type===re.Tag||t.type===re.Script||t.type===re.Style}var re,Fc,Bc,Uc,Ic,Hc,qc,$c,Oc,zc,Lr=A(()=>{(function(t){t.Root="root",t.Text="text",t.Directive="directive",t.Comment="comment",t.Script="script",t.Style="style",t.Tag="tag",t.CDATA="cdata",t.Doctype="doctype"})(re||(re={}));Fc=re.Root,Bc=re.Text,Uc=re.Directive,Ic=re.Comment,Hc=re.Script,qc=re.Style,$c=re.Tag,Oc=re.CDATA,zc=re.Doctype});function ge(t){return Mc(t)}function Rr(t){return t.type===re.CDATA}function ut(t){return t.type===re.Text}function Wn(t){return t.type===re.Comment}function jc(t){return t.type===re.Root}function be(t){return Object.prototype.hasOwnProperty.call(t,"children")}var Po=A(()=>{Lr()});var Mt=A(()=>{Lr();Po();Po()});var _c,Wc=A(()=>{_c=new Uint16Array('\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map(t=>t.charCodeAt(0)))});var Vc,Gc=A(()=>{Vc=new Uint16Array("\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map(t=>t.charCodeAt(0)))});function Fo(t){var e;return t>=55296&&t<=57343||t>1114111?65533:(e=Fy.get(t))!==null&&e!==void 0?e:t}var No,Fy,Mo,Bo=A(()=>{Fy=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),Mo=(No=String.fromCodePoint)!==null&&No!==void 0?No:function(t){let e="";return t>65535&&(t-=65536,e+=String.fromCharCode(t>>>10&1023|55296),t=56320|t&1023),e+=String.fromCharCode(t),e}});function Uo(t){return t>=fe.ZERO&&t<=fe.NINE}function Uy(t){return t>=fe.UPPER_A&&t<=fe.UPPER_F||t>=fe.LOWER_A&&t<=fe.LOWER_F}function Iy(t){return t>=fe.UPPER_A&&t<=fe.UPPER_Z||t>=fe.LOWER_A&&t<=fe.LOWER_Z||Uo(t)}function Hy(t){return t===fe.EQUALS||Iy(t)}function Kc(t){let e="",r=new Vn(t,n=>e+=Mo(n));return function(i,o){let s=0,c=0;for(;(c=i.indexOf("&",c))>=0;){e+=i.slice(s,c),r.startEntity(o);let l=r.write(i,c+1);if(l<0){s=c+r.end();break}s=c+l,c=l===0?s+1:s}let u=e+i.slice(s);return e="",u}}function qy(t,e,r,n){let i=(e>.BRANCH_LENGTH)>>7,o=e>.JUMP_TABLE;if(i===0)return o!==0&&n===o?r:-1;if(o){let u=n-o;return u<0||u>=i?-1:t[r+u]-1}let s=r,c=s+i-1;for(;s<=c;){let u=s+c>>>1,l=t[u];if(l<n)s=u+1;else if(l>n)c=u-1;else return t[u+i]}return-1}var fe,By,gt,me,lt,Vn,LT,RT,Io=A(()=>{Wc();Gc();Bo();Bo();(function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"})(fe||(fe={}));By=32;(function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"})(gt||(gt={}));(function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"})(me||(me={}));(function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"})(lt||(lt={}));Vn=class{constructor(e,r,n){this.decodeTree=e,this.emitCodePoint=r,this.errors=n,this.state=me.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=lt.Strict}startEntity(e){this.decodeMode=e,this.state=me.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(e,r){switch(this.state){case me.EntityStart:return e.charCodeAt(r)===fe.NUM?(this.state=me.NumericStart,this.consumed+=1,this.stateNumericStart(e,r+1)):(this.state=me.NamedEntity,this.stateNamedEntity(e,r));case me.NumericStart:return this.stateNumericStart(e,r);case me.NumericDecimal:return this.stateNumericDecimal(e,r);case me.NumericHex:return this.stateNumericHex(e,r);case me.NamedEntity:return this.stateNamedEntity(e,r)}}stateNumericStart(e,r){return r>=e.length?-1:(e.charCodeAt(r)|By)===fe.LOWER_X?(this.state=me.NumericHex,this.consumed+=1,this.stateNumericHex(e,r+1)):(this.state=me.NumericDecimal,this.stateNumericDecimal(e,r))}addToNumericResult(e,r,n,i){if(r!==n){let o=n-r;this.result=this.result*Math.pow(i,o)+parseInt(e.substr(r,o),i),this.consumed+=o}}stateNumericHex(e,r){let n=r;for(;r<e.length;){let i=e.charCodeAt(r);if(Uo(i)||Uy(i))r+=1;else return this.addToNumericResult(e,n,r,16),this.emitNumericEntity(i,3)}return this.addToNumericResult(e,n,r,16),-1}stateNumericDecimal(e,r){let n=r;for(;r<e.length;){let i=e.charCodeAt(r);if(Uo(i))r+=1;else return this.addToNumericResult(e,n,r,10),this.emitNumericEntity(i,2)}return this.addToNumericResult(e,n,r,10),-1}emitNumericEntity(e,r){var n;if(this.consumed<=r)return(n=this.errors)===null||n===void 0||n.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(e===fe.SEMI)this.consumed+=1;else if(this.decodeMode===lt.Strict)return 0;return this.emitCodePoint(Fo(this.result),this.consumed),this.errors&&(e!==fe.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(e,r){let{decodeTree:n}=this,i=n[this.treeIndex],o=(i>.VALUE_LENGTH)>>14;for(;r<e.length;r++,this.excess++){let s=e.charCodeAt(r);if(this.treeIndex=qy(n,i,this.treeIndex+Math.max(1,o),s),this.treeIndex<0)return this.result===0||this.decodeMode===lt.Attribute&&(o===0||Hy(s))?0:this.emitNotTerminatedNamedEntity();if(i=n[this.treeIndex],o=(i>.VALUE_LENGTH)>>14,o!==0){if(s===fe.SEMI)return this.emitNamedEntityData(this.treeIndex,o,this.consumed+this.excess);this.decodeMode!==lt.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var e;let{result:r,decodeTree:n}=this,i=(n[r]>.VALUE_LENGTH)>>14;return this.emitNamedEntityData(r,i,this.consumed),(e=this.errors)===null||e===void 0||e.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(e,r,n){let{decodeTree:i}=this;return this.emitCodePoint(r===1?i[e]&~gt.VALUE_LENGTH:i[e+1],n),r===3&&this.emitCodePoint(i[e+2],n),n}end(){var e;switch(this.state){case me.NamedEntity:return this.result!==0&&(this.decodeMode!==lt.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case me.NumericDecimal:return this.emitNumericEntity(0,2);case me.NumericHex:return this.emitNumericEntity(0,3);case me.NumericStart:return(e=this.errors)===null||e===void 0||e.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case me.EntityStart:return 0}}};LT=Kc(_c),RT=Kc(Vc)});function Gn(t){for(let e=1;e<t.length;e++)t[e][0]+=t[e-1][0]+1;return t}var $y,Xc=A(()=>{$y=new Map(Gn([[9,"	"],[0,"
"],[22,"!"],[0,"""],[0,"#"],[0,"$"],[0,"%"],[0,"&"],[0,"'"],[0,"("],[0,")"],[0,"*"],[0,"+"],[0,","],[1,"."],[0,"/"],[10,":"],[0,";"],[0,{v:"<",n:8402,o:"<⃒"}],[0,{v:"=",n:8421,o:"=⃥"}],[0,{v:">",n:8402,o:">⃒"}],[0,"?"],[0,"@"],[26,"["],[0,"\"],[0,"]"],[0,"^"],[0,"_"],[0,"`"],[5,{n:106,o:"fj"}],[20,"{"],[0,"|"],[0,"}"],[34," "],[0,"¡"],[0,"¢"],[0,"£"],[0,"¤"],[0,"¥"],[0,"¦"],[0,"§"],[0,"¨"],[0,"©"],[0,"ª"],[0,"«"],[0,"¬"],[0,"­"],[0,"®"],[0,"¯"],[0,"°"],[0,"±"],[0,"²"],[0,"³"],[0,"´"],[0,"µ"],[0,"¶"],[0,"·"],[0,"¸"],[0,"¹"],[0,"º"],[0,"»"],[0,"¼"],[0,"½"],[0,"¾"],[0,"¿"],[0,"À"],[0,"Á"],[0,"Â"],[0,"Ã"],[0,"Ä"],[0,"Å"],[0,"Æ"],[0,"Ç"],[0,"È"],[0,"É"],[0,"Ê"],[0,"Ë"],[0,"Ì"],[0,"Í"],[0,"Î"],[0,"Ï"],[0,"Ð"],[0,"Ñ"],[0,"Ò"],[0,"Ó"],[0,"Ô"],[0,"Õ"],[0,"Ö"],[0,"×"],[0,"Ø"],[0,"Ù"],[0,"Ú"],[0,"Û"],[0,"Ü"],[0,"Ý"],[0,"Þ"],[0,"ß"],[0,"à"],[0,"á"],[0,"â"],[0,"ã"],[0,"ä"],[0,"å"],[0,"æ"],[0,"ç"],[0,"è"],[0,"é"],[0,"ê"],[0,"ë"],[0,"ì"],[0,"í"],[0,"î"],[0,"ï"],[0,"ð"],[0,"ñ"],[0,"ò"],[0,"ó"],[0,"ô"],[0,"õ"],[0,"ö"],[0,"÷"],[0,"ø"],[0,"ù"],[0,"ú"],[0,"û"],[0,"ü"],[0,"ý"],[0,"þ"],[0,"ÿ"],[0,"Ā"],[0,"ā"],[0,"Ă"],[0,"ă"],[0,"Ą"],[0,"ą"],[0,"Ć"],[0,"ć"],[0,"Ĉ"],[0,"ĉ"],[0,"Ċ"],[0,"ċ"],[0,"Č"],[0,"č"],[0,"Ď"],[0,"ď"],[0,"Đ"],[0,"đ"],[0,"Ē"],[0,"ē"],[2,"Ė"],[0,"ė"],[0,"Ę"],[0,"ę"],[0,"Ě"],[0,"ě"],[0,"Ĝ"],[0,"ĝ"],[0,"Ğ"],[0,"ğ"],[0,"Ġ"],[0,"ġ"],[0,"Ģ"],[1,"Ĥ"],[0,"ĥ"],[0,"Ħ"],[0,"ħ"],[0,"Ĩ"],[0,"ĩ"],[0,"Ī"],[0,"ī"],[2,"Į"],[0,"į"],[0,"İ"],[0,"ı"],[0,"IJ"],[0,"ij"],[0,"Ĵ"],[0,"ĵ"],[0,"Ķ"],[0,"ķ"],[0,"ĸ"],[0,"Ĺ"],[0,"ĺ"],[0,"Ļ"],[0,"ļ"],[0,"Ľ"],[0,"ľ"],[0,"Ŀ"],[0,"ŀ"],[0,"Ł"],[0,"ł"],[0,"Ń"],[0,"ń"],[0,"Ņ"],[0,"ņ"],[0,"Ň"],[0,"ň"],[0,"ʼn"],[0,"Ŋ"],[0,"ŋ"],[0,"Ō"],[0,"ō"],[2,"Ő"],[0,"ő"],[0,"Œ"],[0,"œ"],[0,"Ŕ"],[0,"ŕ"],[0,"Ŗ"],[0,"ŗ"],[0,"Ř"],[0,"ř"],[0,"Ś"],[0,"ś"],[0,"Ŝ"],[0,"ŝ"],[0,"Ş"],[0,"ş"],[0,"Š"],[0,"š"],[0,"Ţ"],[0,"ţ"],[0,"Ť"],[0,"ť"],[0,"Ŧ"],[0,"ŧ"],[0,"Ũ"],[0,"ũ"],[0,"Ū"],[0,"ū"],[0,"Ŭ"],[0,"ŭ"],[0,"Ů"],[0,"ů"],[0,"Ű"],[0,"ű"],[0,"Ų"],[0,"ų"],[0,"Ŵ"],[0,"ŵ"],[0,"Ŷ"],[0,"ŷ"],[0,"Ÿ"],[0,"Ź"],[0,"ź"],[0,"Ż"],[0,"ż"],[0,"Ž"],[0,"ž"],[19,"ƒ"],[34,"Ƶ"],[63,"ǵ"],[65,"ȷ"],[142,"ˆ"],[0,"ˇ"],[16,"˘"],[0,"˙"],[0,"˚"],[0,"˛"],[0,"˜"],[0,"˝"],[51,"̑"],[127,"Α"],[0,"Β"],[0,"Γ"],[0,"Δ"],[0,"Ε"],[0,"Ζ"],[0,"Η"],[0,"Θ"],[0,"Ι"],[0,"Κ"],[0,"Λ"],[0,"Μ"],[0,"Ν"],[0,"Ξ"],[0,"Ο"],[0,"Π"],[0,"Ρ"],[1,"Σ"],[0,"Τ"],[0,"Υ"],[0,"Φ"],[0,"Χ"],[0,"Ψ"],[0,"Ω"],[7,"α"],[0,"β"],[0,"γ"],[0,"δ"],[0,"ε"],[0,"ζ"],[0,"η"],[0,"θ"],[0,"ι"],[0,"κ"],[0,"λ"],[0,"μ"],[0,"ν"],[0,"ξ"],[0,"ο"],[0,"π"],[0,"ρ"],[0,"ς"],[0,"σ"],[0,"τ"],[0,"υ"],[0,"φ"],[0,"χ"],[0,"ψ"],[0,"ω"],[7,"ϑ"],[0,"ϒ"],[2,"ϕ"],[0,"ϖ"],[5,"Ϝ"],[0,"ϝ"],[18,"ϰ"],[0,"ϱ"],[3,"ϵ"],[0,"϶"],[10,"Ё"],[0,"Ђ"],[0,"Ѓ"],[0,"Є"],[0,"Ѕ"],[0,"І"],[0,"Ї"],[0,"Ј"],[0,"Љ"],[0,"Њ"],[0,"Ћ"],[0,"Ќ"],[1,"Ў"],[0,"Џ"],[0,"А"],[0,"Б"],[0,"В"],[0,"Г"],[0,"Д"],[0,"Е"],[0,"Ж"],[0,"З"],[0,"И"],[0,"Й"],[0,"К"],[0,"Л"],[0,"М"],[0,"Н"],[0,"О"],[0,"П"],[0,"Р"],[0,"С"],[0,"Т"],[0,"У"],[0,"Ф"],[0,"Х"],[0,"Ц"],[0,"Ч"],[0,"Ш"],[0,"Щ"],[0,"Ъ"],[0,"Ы"],[0,"Ь"],[0,"Э"],[0,"Ю"],[0,"Я"],[0,"а"],[0,"б"],[0,"в"],[0,"г"],[0,"д"],[0,"е"],[0,"ж"],[0,"з"],[0,"и"],[0,"й"],[0,"к"],[0,"л"],[0,"м"],[0,"н"],[0,"о"],[0,"п"],[0,"р"],[0,"с"],[0,"т"],[0,"у"],[0,"ф"],[0,"х"],[0,"ц"],[0,"ч"],[0,"ш"],[0,"щ"],[0,"ъ"],[0,"ы"],[0,"ь"],[0,"э"],[0,"ю"],[0,"я"],[1,"ё"],[0,"ђ"],[0,"ѓ"],[0,"є"],[0,"ѕ"],[0,"і"],[0,"ї"],[0,"ј"],[0,"љ"],[0,"њ"],[0,"ћ"],[0,"ќ"],[1,"ў"],[0,"џ"],[7074," "],[0," "],[0," "],[0," "],[1," "],[0," "],[0," "],[0," "],[0,"​"],[0,"‌"],[0,"‍"],[0,"‎"],[0,"‏"],[0,"‐"],[2,"–"],[0,"—"],[0,"―"],[0,"‖"],[1,"‘"],[0,"’"],[0,"‚"],[1,"“"],[0,"”"],[0,"„"],[1,"†"],[0,"‡"],[0,"•"],[2,"‥"],[0,"…"],[9,"‰"],[0,"‱"],[0,"′"],[0,"″"],[0,"‴"],[0,"‵"],[3,"‹"],[0,"›"],[3,"‾"],[2,"⁁"],[1,"⁃"],[0,"⁄"],[10,"⁏"],[7,"⁗"],[7,{v:" ",n:8202,o:"  "}],[0,"⁠"],[0,"⁡"],[0,"⁢"],[0,"⁣"],[72,"€"],[46,"⃛"],[0,"⃜"],[37,"ℂ"],[2,"℅"],[4,"ℊ"],[0,"ℋ"],[0,"ℌ"],[0,"ℍ"],[0,"ℎ"],[0,"ℏ"],[0,"ℐ"],[0,"ℑ"],[0,"ℒ"],[0,"ℓ"],[1,"ℕ"],[0,"№"],[0,"℗"],[0,"℘"],[0,"ℙ"],[0,"ℚ"],[0,"ℛ"],[0,"ℜ"],[0,"ℝ"],[0,"℞"],[3,"™"],[1,"ℤ"],[2,"℧"],[0,"ℨ"],[0,"℩"],[2,"ℬ"],[0,"ℭ"],[1,"ℯ"],[0,"ℰ"],[0,"ℱ"],[1,"ℳ"],[0,"ℴ"],[0,"ℵ"],[0,"ℶ"],[0,"ℷ"],[0,"ℸ"],[12,"ⅅ"],[0,"ⅆ"],[0,"ⅇ"],[0,"ⅈ"],[10,"⅓"],[0,"⅔"],[0,"⅕"],[0,"⅖"],[0,"⅗"],[0,"⅘"],[0,"⅙"],[0,"⅚"],[0,"⅛"],[0,"⅜"],[0,"⅝"],[0,"⅞"],[49,"←"],[0,"↑"],[0,"→"],[0,"↓"],[0,"↔"],[0,"↕"],[0,"↖"],[0,"↗"],[0,"↘"],[0,"↙"],[0,"↚"],[0,"↛"],[1,{v:"↝",n:824,o:"↝̸"}],[0,"↞"],[0,"↟"],[0,"↠"],[0,"↡"],[0,"↢"],[0,"↣"],[0,"↤"],[0,"↥"],[0,"↦"],[0,"↧"],[1,"↩"],[0,"↪"],[0,"↫"],[0,"↬"],[0,"↭"],[0,"↮"],[1,"↰"],[0,"↱"],[0,"↲"],[0,"↳"],[1,"↵"],[0,"↶"],[0,"↷"],[2,"↺"],[0,"↻"],[0,"↼"],[0,"↽"],[0,"↾"],[0,"↿"],[0,"⇀"],[0,"⇁"],[0,"⇂"],[0,"⇃"],[0,"⇄"],[0,"⇅"],[0,"⇆"],[0,"⇇"],[0,"⇈"],[0,"⇉"],[0,"⇊"],[0,"⇋"],[0,"⇌"],[0,"⇍"],[0,"⇎"],[0,"⇏"],[0,"⇐"],[0,"⇑"],[0,"⇒"],[0,"⇓"],[0,"⇔"],[0,"⇕"],[0,"⇖"],[0,"⇗"],[0,"⇘"],[0,"⇙"],[0,"⇚"],[0,"⇛"],[1,"⇝"],[6,"⇤"],[0,"⇥"],[15,"⇵"],[7,"⇽"],[0,"⇾"],[0,"⇿"],[0,"∀"],[0,"∁"],[0,{v:"∂",n:824,o:"∂̸"}],[0,"∃"],[0,"∄"],[0,"∅"],[1,"∇"],[0,"∈"],[0,"∉"],[1,"∋"],[0,"∌"],[2,"∏"],[0,"∐"],[0,"∑"],[0,"−"],[0,"∓"],[0,"∔"],[1,"∖"],[0,"∗"],[0,"∘"],[1,"√"],[2,"∝"],[0,"∞"],[0,"∟"],[0,{v:"∠",n:8402,o:"∠⃒"}],[0,"∡"],[0,"∢"],[0,"∣"],[0,"∤"],[0,"∥"],[0,"∦"],[0,"∧"],[0,"∨"],[0,{v:"∩",n:65024,o:"∩︀"}],[0,{v:"∪",n:65024,o:"∪︀"}],[0,"∫"],[0,"∬"],[0,"∭"],[0,"∮"],[0,"∯"],[0,"∰"],[0,"∱"],[0,"∲"],[0,"∳"],[0,"∴"],[0,"∵"],[0,"∶"],[0,"∷"],[0,"∸"],[1,"∺"],[0,"∻"],[0,{v:"∼",n:8402,o:"∼⃒"}],[0,{v:"∽",n:817,o:"∽̱"}],[0,{v:"∾",n:819,o:"∾̳"}],[0,"∿"],[0,"≀"],[0,"≁"],[0,{v:"≂",n:824,o:"≂̸"}],[0,"≃"],[0,"≄"],[0,"≅"],[0,"≆"],[0,"≇"],[0,"≈"],[0,"≉"],[0,"≊"],[0,{v:"≋",n:824,o:"≋̸"}],[0,"≌"],[0,{v:"≍",n:8402,o:"≍⃒"}],[0,{v:"≎",n:824,o:"≎̸"}],[0,{v:"≏",n:824,o:"≏̸"}],[0,{v:"≐",n:824,o:"≐̸"}],[0,"≑"],[0,"≒"],[0,"≓"],[0,"≔"],[0,"≕"],[0,"≖"],[0,"≗"],[1,"≙"],[0,"≚"],[1,"≜"],[2,"≟"],[0,"≠"],[0,{v:"≡",n:8421,o:"≡⃥"}],[0,"≢"],[1,{v:"≤",n:8402,o:"≤⃒"}],[0,{v:"≥",n:8402,o:"≥⃒"}],[0,{v:"≦",n:824,o:"≦̸"}],[0,{v:"≧",n:824,o:"≧̸"}],[0,{v:"≨",n:65024,o:"≨︀"}],[0,{v:"≩",n:65024,o:"≩︀"}],[0,{v:"≪",n:new Map(Gn([[824,"≪̸"],[7577,"≪⃒"]]))}],[0,{v:"≫",n:new Map(Gn([[824,"≫̸"],[7577,"≫⃒"]]))}],[0,"≬"],[0,"≭"],[0,"≮"],[0,"≯"],[0,"≰"],[0,"≱"],[0,"≲"],[0,"≳"],[0,"≴"],[0,"≵"],[0,"≶"],[0,"≷"],[0,"≸"],[0,"≹"],[0,"≺"],[0,"≻"],[0,"≼"],[0,"≽"],[0,"≾"],[0,{v:"≿",n:824,o:"≿̸"}],[0,"⊀"],[0,"⊁"],[0,{v:"⊂",n:8402,o:"⊂⃒"}],[0,{v:"⊃",n:8402,o:"⊃⃒"}],[0,"⊄"],[0,"⊅"],[0,"⊆"],[0,"⊇"],[0,"⊈"],[0,"⊉"],[0,{v:"⊊",n:65024,o:"⊊︀"}],[0,{v:"⊋",n:65024,o:"⊋︀"}],[1,"⊍"],[0,"⊎"],[0,{v:"⊏",n:824,o:"⊏̸"}],[0,{v:"⊐",n:824,o:"⊐̸"}],[0,"⊑"],[0,"⊒"],[0,{v:"⊓",n:65024,o:"⊓︀"}],[0,{v:"⊔",n:65024,o:"⊔︀"}],[0,"⊕"],[0,"⊖"],[0,"⊗"],[0,"⊘"],[0,"⊙"],[0,"⊚"],[0,"⊛"],[1,"⊝"],[0,"⊞"],[0,"⊟"],[0,"⊠"],[0,"⊡"],[0,"⊢"],[0,"⊣"],[0,"⊤"],[0,"⊥"],[1,"⊧"],[0,"⊨"],[0,"⊩"],[0,"⊪"],[0,"⊫"],[0,"⊬"],[0,"⊭"],[0,"⊮"],[0,"⊯"],[0,"⊰"],[1,"⊲"],[0,"⊳"],[0,{v:"⊴",n:8402,o:"⊴⃒"}],[0,{v:"⊵",n:8402,o:"⊵⃒"}],[0,"⊶"],[0,"⊷"],[0,"⊸"],[0,"⊹"],[0,"⊺"],[0,"⊻"],[1,"⊽"],[0,"⊾"],[0,"⊿"],[0,"⋀"],[0,"⋁"],[0,"⋂"],[0,"⋃"],[0,"⋄"],[0,"⋅"],[0,"⋆"],[0,"⋇"],[0,"⋈"],[0,"⋉"],[0,"⋊"],[0,"⋋"],[0,"⋌"],[0,"⋍"],[0,"⋎"],[0,"⋏"],[0,"⋐"],[0,"⋑"],[0,"⋒"],[0,"⋓"],[0,"⋔"],[0,"⋕"],[0,"⋖"],[0,"⋗"],[0,{v:"⋘",n:824,o:"⋘̸"}],[0,{v:"⋙",n:824,o:"⋙̸"}],[0,{v:"⋚",n:65024,o:"⋚︀"}],[0,{v:"⋛",n:65024,o:"⋛︀"}],[2,"⋞"],[0,"⋟"],[0,"⋠"],[0,"⋡"],[0,"⋢"],[0,"⋣"],[2,"⋦"],[0,"⋧"],[0,"⋨"],[0,"⋩"],[0,"⋪"],[0,"⋫"],[0,"⋬"],[0,"⋭"],[0,"⋮"],[0,"⋯"],[0,"⋰"],[0,"⋱"],[0,"⋲"],[0,"⋳"],[0,"⋴"],[0,{v:"⋵",n:824,o:"⋵̸"}],[0,"⋶"],[0,"⋷"],[1,{v:"⋹",n:824,o:"⋹̸"}],[0,"⋺"],[0,"⋻"],[0,"⋼"],[0,"⋽"],[0,"⋾"],[6,"⌅"],[0,"⌆"],[1,"⌈"],[0,"⌉"],[0,"⌊"],[0,"⌋"],[0,"⌌"],[0,"⌍"],[0,"⌎"],[0,"⌏"],[0,"⌐"],[1,"⌒"],[0,"⌓"],[1,"⌕"],[0,"⌖"],[5,"⌜"],[0,"⌝"],[0,"⌞"],[0,"⌟"],[2,"⌢"],[0,"⌣"],[9,"⌭"],[0,"⌮"],[7,"⌶"],[6,"⌽"],[1,"⌿"],[60,"⍼"],[51,"⎰"],[0,"⎱"],[2,"⎴"],[0,"⎵"],[0,"⎶"],[37,"⏜"],[0,"⏝"],[0,"⏞"],[0,"⏟"],[2,"⏢"],[4,"⏧"],[59,"␣"],[164,"Ⓢ"],[55,"─"],[1,"│"],[9,"┌"],[3,"┐"],[3,"└"],[3,"┘"],[3,"├"],[7,"┤"],[7,"┬"],[7,"┴"],[7,"┼"],[19,"═"],[0,"║"],[0,"╒"],[0,"╓"],[0,"╔"],[0,"╕"],[0,"╖"],[0,"╗"],[0,"╘"],[0,"╙"],[0,"╚"],[0,"╛"],[0,"╜"],[0,"╝"],[0,"╞"],[0,"╟"],[0,"╠"],[0,"╡"],[0,"╢"],[0,"╣"],[0,"╤"],[0,"╥"],[0,"╦"],[0,"╧"],[0,"╨"],[0,"╩"],[0,"╪"],[0,"╫"],[0,"╬"],[19,"▀"],[3,"▄"],[3,"█"],[8,"░"],[0,"▒"],[0,"▓"],[13,"□"],[8,"▪"],[0,"▫"],[1,"▭"],[0,"▮"],[2,"▱"],[1,"△"],[0,"▴"],[0,"▵"],[2,"▸"],[0,"▹"],[3,"▽"],[0,"▾"],[0,"▿"],[2,"◂"],[0,"◃"],[6,"◊"],[0,"○"],[32,"◬"],[2,"◯"],[8,"◸"],[0,"◹"],[0,"◺"],[0,"◻"],[0,"◼"],[8,"★"],[0,"☆"],[7,"☎"],[49,"♀"],[1,"♂"],[29,"♠"],[2,"♣"],[1,"♥"],[0,"♦"],[3,"♪"],[2,"♭"],[0,"♮"],[0,"♯"],[163,"✓"],[3,"✗"],[8,"✠"],[21,"✶"],[33,"❘"],[25,"❲"],[0,"❳"],[84,"⟈"],[0,"⟉"],[28,"⟦"],[0,"⟧"],[0,"⟨"],[0,"⟩"],[0,"⟪"],[0,"⟫"],[0,"⟬"],[0,"⟭"],[7,"⟵"],[0,"⟶"],[0,"⟷"],[0,"⟸"],[0,"⟹"],[0,"⟺"],[1,"⟼"],[2,"⟿"],[258,"⤂"],[0,"⤃"],[0,"⤄"],[0,"⤅"],[6,"⤌"],[0,"⤍"],[0,"⤎"],[0,"⤏"],[0,"⤐"],[0,"⤑"],[0,"⤒"],[0,"⤓"],[2,"⤖"],[2,"⤙"],[0,"⤚"],[0,"⤛"],[0,"⤜"],[0,"⤝"],[0,"⤞"],[0,"⤟"],[0,"⤠"],[2,"⤣"],[0,"⤤"],[0,"⤥"],[0,"⤦"],[0,"⤧"],[0,"⤨"],[0,"⤩"],[0,"⤪"],[8,{v:"⤳",n:824,o:"⤳̸"}],[1,"⤵"],[0,"⤶"],[0,"⤷"],[0,"⤸"],[0,"⤹"],[2,"⤼"],[0,"⤽"],[7,"⥅"],[2,"⥈"],[0,"⥉"],[0,"⥊"],[0,"⥋"],[2,"⥎"],[0,"⥏"],[0,"⥐"],[0,"⥑"],[0,"⥒"],[0,"⥓"],[0,"⥔"],[0,"⥕"],[0,"⥖"],[0,"⥗"],[0,"⥘"],[0,"⥙"],[0,"⥚"],[0,"⥛"],[0,"⥜"],[0,"⥝"],[0,"⥞"],[0,"⥟"],[0,"⥠"],[0,"⥡"],[0,"⥢"],[0,"⥣"],[0,"⥤"],[0,"⥥"],[0,"⥦"],[0,"⥧"],[0,"⥨"],[0,"⥩"],[0,"⥪"],[0,"⥫"],[0,"⥬"],[0,"⥭"],[0,"⥮"],[0,"⥯"],[0,"⥰"],[0,"⥱"],[0,"⥲"],[0,"⥳"],[0,"⥴"],[0,"⥵"],[0,"⥶"],[1,"⥸"],[0,"⥹"],[1,"⥻"],[0,"⥼"],[0,"⥽"],[0,"⥾"],[0,"⥿"],[5,"⦅"],[0,"⦆"],[4,"⦋"],[0,"⦌"],[0,"⦍"],[0,"⦎"],[0,"⦏"],[0,"⦐"],[0,"⦑"],[0,"⦒"],[0,"⦓"],[0,"⦔"],[0,"⦕"],[0,"⦖"],[3,"⦚"],[1,"⦜"],[0,"⦝"],[6,"⦤"],[0,"⦥"],[0,"⦦"],[0,"⦧"],[0,"⦨"],[0,"⦩"],[0,"⦪"],[0,"⦫"],[0,"⦬"],[0,"⦭"],[0,"⦮"],[0,"⦯"],[0,"⦰"],[0,"⦱"],[0,"⦲"],[0,"⦳"],[0,"⦴"],[0,"⦵"],[0,"⦶"],[0,"⦷"],[1,"⦹"],[1,"⦻"],[0,"⦼"],[1,"⦾"],[0,"⦿"],[0,"⧀"],[0,"⧁"],[0,"⧂"],[0,"⧃"],[0,"⧄"],[0,"⧅"],[3,"⧉"],[3,"⧍"],[0,"⧎"],[0,{v:"⧏",n:824,o:"⧏̸"}],[0,{v:"⧐",n:824,o:"⧐̸"}],[11,"⧜"],[0,"⧝"],[0,"⧞"],[4,"⧣"],[0,"⧤"],[0,"⧥"],[5,"⧫"],[8,"⧴"],[1,"⧶"],[9,"⨀"],[0,"⨁"],[0,"⨂"],[1,"⨄"],[1,"⨆"],[5,"⨌"],[0,"⨍"],[2,"⨐"],[0,"⨑"],[0,"⨒"],[0,"⨓"],[0,"⨔"],[0,"⨕"],[0,"⨖"],[0,"⨗"],[10,"⨢"],[0,"⨣"],[0,"⨤"],[0,"⨥"],[0,"⨦"],[0,"⨧"],[1,"⨩"],[0,"⨪"],[2,"⨭"],[0,"⨮"],[0,"⨯"],[0,"⨰"],[0,"⨱"],[1,"⨳"],[0,"⨴"],[0,"⨵"],[0,"⨶"],[0,"⨷"],[0,"⨸"],[0,"⨹"],[0,"⨺"],[0,"⨻"],[0,"⨼"],[2,"⨿"],[0,"⩀"],[1,"⩂"],[0,"⩃"],[0,"⩄"],[0,"⩅"],[0,"⩆"],[0,"⩇"],[0,"⩈"],[0,"⩉"],[0,"⩊"],[0,"⩋"],[0,"⩌"],[0,"⩍"],[2,"⩐"],[2,"⩓"],[0,"⩔"],[0,"⩕"],[0,"⩖"],[0,"⩗"],[0,"⩘"],[1,"⩚"],[0,"⩛"],[0,"⩜"],[0,"⩝"],[1,"⩟"],[6,"⩦"],[3,"⩪"],[2,{v:"⩭",n:824,o:"⩭̸"}],[0,"⩮"],[0,"⩯"],[0,{v:"⩰",n:824,o:"⩰̸"}],[0,"⩱"],[0,"⩲"],[0,"⩳"],[0,"⩴"],[0,"⩵"],[1,"⩷"],[0,"⩸"],[0,"⩹"],[0,"⩺"],[0,"⩻"],[0,"⩼"],[0,{v:"⩽",n:824,o:"⩽̸"}],[0,{v:"⩾",n:824,o:"⩾̸"}],[0,"⩿"],[0,"⪀"],[0,"⪁"],[0,"⪂"],[0,"⪃"],[0,"⪄"],[0,"⪅"],[0,"⪆"],[0,"⪇"],[0,"⪈"],[0,"⪉"],[0,"⪊"],[0,"⪋"],[0,"⪌"],[0,"⪍"],[0,"⪎"],[0,"⪏"],[0,"⪐"],[0,"⪑"],[0,"⪒"],[0,"⪓"],[0,"⪔"],[0,"⪕"],[0,"⪖"],[0,"⪗"],[0,"⪘"],[0,"⪙"],[0,"⪚"],[2,"⪝"],[0,"⪞"],[0,"⪟"],[0,"⪠"],[0,{v:"⪡",n:824,o:"⪡̸"}],[0,{v:"⪢",n:824,o:"⪢̸"}],[1,"⪤"],[0,"⪥"],[0,"⪦"],[0,"⪧"],[0,"⪨"],[0,"⪩"],[0,"⪪"],[0,"⪫"],[0,{v:"⪬",n:65024,o:"⪬︀"}],[0,{v:"⪭",n:65024,o:"⪭︀"}],[0,"⪮"],[0,{v:"⪯",n:824,o:"⪯̸"}],[0,{v:"⪰",n:824,o:"⪰̸"}],[2,"⪳"],[0,"⪴"],[0,"⪵"],[0,"⪶"],[0,"⪷"],[0,"⪸"],[0,"⪹"],[0,"⪺"],[0,"⪻"],[0,"⪼"],[0,"⪽"],[0,"⪾"],[0,"⪿"],[0,"⫀"],[0,"⫁"],[0,"⫂"],[0,"⫃"],[0,"⫄"],[0,{v:"⫅",n:824,o:"⫅̸"}],[0,{v:"⫆",n:824,o:"⫆̸"}],[0,"⫇"],[0,"⫈"],[2,{v:"⫋",n:65024,o:"⫋︀"}],[0,{v:"⫌",n:65024,o:"⫌︀"}],[2,"⫏"],[0,"⫐"],[0,"⫑"],[0,"⫒"],[0,"⫓"],[0,"⫔"],[0,"⫕"],[0,"⫖"],[0,"⫗"],[0,"⫘"],[0,"⫙"],[0,"⫚"],[0,"⫛"],[8,"⫤"],[1,"⫦"],[0,"⫧"],[0,"⫨"],[0,"⫩"],[1,"⫫"],[0,"⫬"],[0,"⫭"],[0,"⫮"],[0,"⫯"],[0,"⫰"],[0,"⫱"],[0,"⫲"],[0,"⫳"],[9,{v:"⫽",n:8421,o:"⫽⃥"}],[44343,{n:new Map(Gn([[56476,"𝒜"],[1,"𝒞"],[0,"𝒟"],[2,"𝒢"],[2,"𝒥"],[0,"𝒦"],[2,"𝒩"],[0,"𝒪"],[0,"𝒫"],[0,"𝒬"],[1,"𝒮"],[0,"𝒯"],[0,"𝒰"],[0,"𝒱"],[0,"𝒲"],[0,"𝒳"],[0,"𝒴"],[0,"𝒵"],[0,"𝒶"],[0,"𝒷"],[0,"𝒸"],[0,"𝒹"],[1,"𝒻"],[1,"𝒽"],[0,"𝒾"],[0,"𝒿"],[0,"𝓀"],[0,"𝓁"],[0,"𝓂"],[0,"𝓃"],[1,"𝓅"],[0,"𝓆"],[0,"𝓇"],[0,"𝓈"],[0,"𝓉"],[0,"𝓊"],[0,"𝓋"],[0,"𝓌"],[0,"𝓍"],[0,"𝓎"],[0,"𝓏"],[52,"𝔄"],[0,"𝔅"],[1,"𝔇"],[0,"𝔈"],[0,"𝔉"],[0,"𝔊"],[2,"𝔍"],[0,"𝔎"],[0,"𝔏"],[0,"𝔐"],[0,"𝔑"],[0,"𝔒"],[0,"𝔓"],[0,"𝔔"],[1,"𝔖"],[0,"𝔗"],[0,"𝔘"],[0,"𝔙"],[0,"𝔚"],[0,"𝔛"],[0,"𝔜"],[1,"𝔞"],[0,"𝔟"],[0,"𝔠"],[0,"𝔡"],[0,"𝔢"],[0,"𝔣"],[0,"𝔤"],[0,"𝔥"],[0,"𝔦"],[0,"𝔧"],[0,"𝔨"],[0,"𝔩"],[0,"𝔪"],[0,"𝔫"],[0,"𝔬"],[0,"𝔭"],[0,"𝔮"],[0,"𝔯"],[0,"𝔰"],[0,"𝔱"],[0,"𝔲"],[0,"𝔳"],[0,"𝔴"],[0,"𝔵"],[0,"𝔶"],[0,"𝔷"],[0,"𝔸"],[0,"𝔹"],[1,"𝔻"],[0,"𝔼"],[0,"𝔽"],[0,"𝔾"],[1,"𝕀"],[0,"𝕁"],[0,"𝕂"],[0,"𝕃"],[0,"𝕄"],[1,"𝕆"],[3,"𝕊"],[0,"𝕋"],[0,"𝕌"],[0,"𝕍"],[0,"𝕎"],[0,"𝕏"],[0,"𝕐"],[1,"𝕒"],[0,"𝕓"],[0,"𝕔"],[0,"𝕕"],[0,"𝕖"],[0,"𝕗"],[0,"𝕘"],[0,"𝕙"],[0,"𝕚"],[0,"𝕛"],[0,"𝕜"],[0,"𝕝"],[0,"𝕞"],[0,"𝕟"],[0,"𝕠"],[0,"𝕡"],[0,"𝕢"],[0,"𝕣"],[0,"𝕤"],[0,"𝕥"],[0,"𝕦"],[0,"𝕧"],[0,"𝕨"],[0,"𝕩"],[0,"𝕪"],[0,"𝕫"]]))}],[8906,"ff"],[0,"fi"],[0,"fl"],[0,"ffi"],[0,"ffl"]]))});function Pr(t){let e="",r=0,n;for(;(n=Ho.exec(t))!==null;){let i=n.index,o=t.charCodeAt(i),s=Jc.get(o);s!==void 0?(e+=t.substring(r,i)+s,r=i+1):(e+=`${t.substring(r,i)}&#x${Qc(t,i).toString(16)};`,r=Ho.lastIndex+=+((o&64512)===55296))}return e+t.substr(r)}function qo(t,e){return function(n){let i,o=0,s="";for(;i=t.exec(n);)o!==i.index&&(s+=n.substring(o,i.index)),s+=e.get(i[0].charCodeAt(0)),o=i.index+1;return s+n.substring(o)}}var Ho,Jc,Qc,Yc,Kn,Xn,Jn=A(()=>{Ho=/["&'<>$\x80-\uFFFF]/g,Jc=new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),Qc=String.prototype.codePointAt!=null?(t,e)=>t.codePointAt(e):(t,e)=>(t.charCodeAt(e)&64512)===55296?(t.charCodeAt(e)-55296)*1024+t.charCodeAt(e+1)-56320+65536:t.charCodeAt(e);Yc=qo(/[&<>'"]/g,Jc),Kn=qo(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),Xn=qo(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]))});var $o=A(()=>{Xc();Jn()});var Zc,eu,nu=A(()=>{Io();$o();Jn();Jn();$o();Io();(function(t){t[t.XML=0]="XML",t[t.HTML=1]="HTML"})(Zc||(Zc={}));(function(t){t[t.UTF8=0]="UTF8",t[t.ASCII=1]="ASCII",t[t.Extensive=2]="Extensive",t[t.Attribute=3]="Attribute",t[t.Text=4]="Text"})(eu||(eu={}))});var iu,ou,au=A(()=>{iu=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(t=>[t.toLowerCase(),t])),ou=new Map(["definitionURL","attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(t=>[t.toLowerCase(),t]))});function jy(t){return t.replace(/"/g,""")}function _y(t,e){var r;if(!t)return;let n=((r=e.encodeEntities)!==null&&r!==void 0?r:e.decodeEntities)===!1?jy:e.xmlMode||e.encodeEntities!=="utf8"?Pr:Kn;return Object.keys(t).map(i=>{var o,s;let c=(o=t[i])!==null&&o!==void 0?o:"";return e.xmlMode==="foreign"&&(i=(s=ou.get(i))!==null&&s!==void 0?s:i),!e.emptyAttrs&&!e.xmlMode&&c===""?i:`${i}="${n(c)}"`}).join(" ")}function jo(t,e={}){let r="length"in t?t:[t],n="";for(let i=0;i<r.length;i++)n+=Wy(r[i],e);return n}function Wy(t,e){switch(t.type){case Fc:return jo(t.children,e);case zc:case Uc:return Xy(t);case Ic:return Yy(t);case Oc:return Qy(t);case Hc:case qc:case $c:return Ky(t,e);case Bc:return Jy(t,e)}}function Ky(t,e){var r;e.xmlMode==="foreign"&&(t.name=(r=iu.get(t.name))!==null&&r!==void 0?r:t.name,t.parent&&Vy.has(t.parent.name)&&(e={...e,xmlMode:!1})),!e.xmlMode&&Gy.has(t.name)&&(e={...e,xmlMode:"foreign"});let n=`<${t.name}`,i=_y(t.attribs,e);return i&&(n+=` ${i}`),t.children.length===0&&(e.xmlMode?e.selfClosingTags!==!1:e.selfClosingTags&&su.has(t.name))?(e.xmlMode||(n+=" "),n+="/>"):(n+=">",t.children.length>0&&(n+=jo(t.children,e)),(e.xmlMode||!su.has(t.name))&&(n+=`</${t.name}>`)),n}function Xy(t){return`<${t.data}>`}function Jy(t,e){var r;let n=t.data||"";return((r=e.encodeEntities)!==null&&r!==void 0?r:e.decodeEntities)!==!1&&!(!e.xmlMode&&t.parent&&zy.has(t.parent.name))&&(n=e.xmlMode||e.encodeEntities!=="utf8"?Pr(n):Xn(n)),n}function Qy(t){return`<![CDATA[${t.children[0].data}]]>`}function Yy(t){return`<!--${t.data}-->`}var zy,su,cu,Vy,Gy,uu=A(()=>{Lr();nu();au();zy=new Set(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]);su=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]);cu=jo;Vy=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]),Gy=new Set(["svg","math"])});function lu(t,e){return cu(t,e)}function Zy(t,e){return be(t)?t.children.map(r=>lu(r,e)).join(""):""}function Qn(t){return Array.isArray(t)?t.map(Qn).join(""):ge(t)?t.name==="br"?`
|
|
38
|
+
`:Qn(t.children):Rr(t)?Qn(t.children):ut(t)?t.data:""}function Nr(t){return Array.isArray(t)?t.map(Nr).join(""):be(t)&&!Wn(t)?Nr(t.children):ut(t)?t.data:""}function _o(t){return Array.isArray(t)?t.map(_o).join(""):be(t)&&(t.type===re.Tag||Rr(t))?_o(t.children):ut(t)?t.data:""}var Wo=A(()=>{Mt();uu();Lr()});function du(t){return be(t)?t.children:[]}function pu(t){return t.parent||null}function eb(t){let e=pu(t);if(e!=null)return du(e);let r=[t],{prev:n,next:i}=t;for(;n!=null;)r.unshift(n),{prev:n}=n;for(;i!=null;)r.push(i),{next:i}=i;return r}function tb(t,e){var r;return(r=t.attribs)===null||r===void 0?void 0:r[e]}function rb(t,e){return t.attribs!=null&&Object.prototype.hasOwnProperty.call(t.attribs,e)&&t.attribs[e]!=null}function nb(t){return t.name}function ib(t){let{next:e}=t;for(;e!==null&&!ge(e);)({next:e}=e);return e}function ob(t){let{prev:e}=t;for(;e!==null&&!ge(e);)({prev:e}=e);return e}var mu=A(()=>{Mt()});function Mr(t){if(t.prev&&(t.prev.next=t.next),t.next&&(t.next.prev=t.prev),t.parent){let e=t.parent.children,r=e.lastIndexOf(t);r>=0&&e.splice(r,1)}t.next=null,t.prev=null,t.parent=null}function ab(t,e){let r=e.prev=t.prev;r&&(r.next=e);let n=e.next=t.next;n&&(n.prev=e);let i=e.parent=t.parent;if(i){let o=i.children;o[o.lastIndexOf(t)]=e,t.parent=null}}function sb(t,e){if(Mr(e),e.next=null,e.parent=t,t.children.push(e)>1){let r=t.children[t.children.length-2];r.next=e,e.prev=r}else e.prev=null}function cb(t,e){Mr(e);let{parent:r}=t,n=t.next;if(e.next=n,e.prev=t,t.next=e,e.parent=r,n){if(n.prev=e,r){let i=r.children;i.splice(i.lastIndexOf(n),0,e)}}else r&&r.children.push(e)}function ub(t,e){if(Mr(e),e.parent=t,e.prev=null,t.children.unshift(e)!==1){let r=t.children[1];r.prev=e,e.next=r}else e.next=null}function lb(t,e){Mr(e);let{parent:r}=t;if(r){let n=r.children;n.splice(n.indexOf(t),0,e)}t.prev&&(t.prev.next=e),e.parent=r,e.prev=t.prev,e.next=t,t.prev=e}var fu=A(()=>{});function tr(t,e,r=!0,n=1/0){return hu(t,Array.isArray(e)?e:[e],r,n)}function hu(t,e,r,n){let i=[],o=[Array.isArray(e)?e:[e]],s=[0];for(;;){if(s[0]>=o[0].length){if(s.length===1)return i;o.shift(),s.shift();continue}let c=o[0][s[0]++];if(t(c)&&(i.push(c),--n<=0))return i;r&&be(c)&&c.children.length>0&&(s.unshift(0),o.unshift(c.children))}}function db(t,e){return e.find(t)}function Yn(t,e,r=!0){let n=Array.isArray(e)?e:[e];for(let i=0;i<n.length;i++){let o=n[i];if(ge(o)&&t(o))return o;if(r&&be(o)&&o.children.length>0){let s=Yn(t,o.children,!0);if(s)return s}}return null}function gu(t,e){return(Array.isArray(e)?e:[e]).some(r=>ge(r)&&t(r)||be(r)&&gu(t,r.children))}function pb(t,e){let r=[],n=[Array.isArray(e)?e:[e]],i=[0];for(;;){if(i[0]>=n[0].length){if(n.length===1)return r;n.shift(),i.shift();continue}let o=n[0][i[0]++];ge(o)&&t(o)&&r.push(o),be(o)&&o.children.length>0&&(i.unshift(0),n.unshift(o.children))}}var Vo=A(()=>{Mt()});function Go(t,e){return typeof e=="function"?r=>ge(r)&&e(r.attribs[t]):r=>ge(r)&&r.attribs[t]===e}function mb(t,e){return r=>t(r)||e(r)}function yu(t){let e=Object.keys(t).map(r=>{let n=t[r];return Object.prototype.hasOwnProperty.call(Zn,r)?Zn[r](n):Go(r,n)});return e.length===0?null:e.reduce(mb)}function fb(t,e){let r=yu(t);return r?r(e):!0}function hb(t,e,r,n=1/0){let i=yu(t);return i?tr(i,e,r,n):[]}function gb(t,e,r=!0){return Array.isArray(e)||(e=[e]),Yn(Go("id",t),e,r)}function Ft(t,e,r=!0,n=1/0){return tr(Zn.tag_name(t),e,r,n)}function yb(t,e,r=!0,n=1/0){return tr(Go("class",t),e,r,n)}function bb(t,e,r=!0,n=1/0){return tr(Zn.tag_type(t),e,r,n)}var Zn,Ko=A(()=>{Mt();Vo();Zn={tag_name(t){return typeof t=="function"?e=>ge(e)&&t(e.name):t==="*"?ge:e=>ge(e)&&e.name===t},tag_type(t){return typeof t=="function"?e=>t(e.type):e=>e.type===t},tag_contains(t){return typeof t=="function"?e=>ut(e)&&t(e.data):e=>ut(e)&&e.data===t}}});function vb(t){let e=t.length;for(;--e>=0;){let r=t[e];if(e>0&&t.lastIndexOf(r,e-1)>=0){t.splice(e,1);continue}for(let n=r.parent;n;n=n.parent)if(t.includes(n)){t.splice(e,1);break}}return t}function bu(t,e){let r=[],n=[];if(t===e)return 0;let i=be(t)?t:t.parent;for(;i;)r.unshift(i),i=i.parent;for(i=be(e)?e:e.parent;i;)n.unshift(i),i=i.parent;let o=Math.min(r.length,n.length),s=0;for(;s<o&&r[s]===n[s];)s++;if(s===0)return qe.DISCONNECTED;let c=r[s-1],u=c.children,l=r[s],d=n[s];return u.indexOf(l)>u.indexOf(d)?c===e?qe.FOLLOWING|qe.CONTAINED_BY:qe.FOLLOWING:c===t?qe.PRECEDING|qe.CONTAINS:qe.PRECEDING}function wb(t){return t=t.filter((e,r,n)=>!n.includes(e,r+1)),t.sort((e,r)=>{let n=bu(e,r);return n&qe.PRECEDING?-1:n&qe.FOLLOWING?1:0}),t}var qe,vu=A(()=>{Mt();(function(t){t[t.DISCONNECTED=1]="DISCONNECTED",t[t.PRECEDING=2]="PRECEDING",t[t.FOLLOWING=4]="FOLLOWING",t[t.CONTAINS=8]="CONTAINS",t[t.CONTAINED_BY=16]="CONTAINED_BY"})(qe||(qe={}))});function xb(t){let e=ei(Cb,t);return e?e.name==="feed"?kb(e):Tb(e):null}function kb(t){var e;let r=t.children,n={type:"atom",items:Ft("entry",r).map(s=>{var c;let{children:u}=s,l={media:wu(u)};Le(l,"id","id",u),Le(l,"title","title",u);let d=(c=ei("link",u))===null||c===void 0?void 0:c.attribs.href;d&&(l.link=d);let p=yt("summary",u)||yt("content",u);p&&(l.description=p);let m=yt("updated",u);return m&&(l.pubDate=new Date(m)),l})};Le(n,"id","id",r),Le(n,"title","title",r);let i=(e=ei("link",r))===null||e===void 0?void 0:e.attribs.href;i&&(n.link=i),Le(n,"description","subtitle",r);let o=yt("updated",r);return o&&(n.updated=new Date(o)),Le(n,"author","email",r,!0),n}function Tb(t){var e,r;let n=(r=(e=ei("channel",t.children))===null||e===void 0?void 0:e.children)!==null&&r!==void 0?r:[],i={type:t.name.substr(0,3),id:"",items:Ft("item",t.children).map(s=>{let{children:c}=s,u={media:wu(c)};Le(u,"id","guid",c),Le(u,"title","title",c),Le(u,"link","link",c),Le(u,"description","description",c);let l=yt("pubDate",c)||yt("dc:date",c);return l&&(u.pubDate=new Date(l)),u})};Le(i,"title","title",n),Le(i,"link","link",n),Le(i,"description","description",n);let o=yt("lastBuildDate",n);return o&&(i.updated=new Date(o)),Le(i,"author","managingEditor",n,!0),i}function wu(t){return Ft("media:content",t).map(e=>{let{attribs:r}=e,n={medium:r.medium,isDefault:!!r.isDefault};for(let i of Sb)r[i]&&(n[i]=r[i]);for(let i of Ab)r[i]&&(n[i]=parseInt(r[i],10));return r.expression&&(n.expression=r.expression),n})}function ei(t,e){return Ft(t,e,!0,1)[0]}function yt(t,e,r=!1){return Nr(Ft(t,e,r,1)).trim()}function Le(t,e,r,n,i=!1){let o=yt(r,n,i);o&&(t[e]=o)}function Cb(t){return t==="rss"||t==="feed"||t==="rdf:RDF"}var Sb,Ab,xu=A(()=>{Wo();Ko();Sb=["url","type","lang"],Ab=["fileSize","bitrate","framerate","samplingrate","channels","duration","height","width"]});var ti={};Ee(ti,{DocumentPosition:()=>qe,append:()=>cb,appendChild:()=>sb,compareDocumentPosition:()=>bu,existsOne:()=>gu,filter:()=>tr,find:()=>hu,findAll:()=>pb,findOne:()=>Yn,findOneChild:()=>db,getAttributeValue:()=>tb,getChildren:()=>du,getElementById:()=>gb,getElements:()=>hb,getElementsByClassName:()=>yb,getElementsByTagName:()=>Ft,getElementsByTagType:()=>bb,getFeed:()=>xb,getInnerHTML:()=>Zy,getName:()=>nb,getOuterHTML:()=>lu,getParent:()=>pu,getSiblings:()=>eb,getText:()=>Qn,hasAttrib:()=>rb,hasChildren:()=>be,innerText:()=>_o,isCDATA:()=>Rr,isComment:()=>Wn,isDocument:()=>jc,isTag:()=>ge,isText:()=>ut,nextElementSibling:()=>ib,prepend:()=>lb,prependChild:()=>ub,prevElementSibling:()=>ob,removeElement:()=>Mr,removeSubsets:()=>vb,replaceElement:()=>ab,testElement:()=>fb,textContent:()=>Nr,uniqueSort:()=>wb});var ku=A(()=>{Wo();mu();fu();Vo();Ko();vu();xu();Mt()});function Tu(t){return t.replace(Eb,"\\$&")}function Bt(t,e){return typeof t.ignoreCase=="boolean"?t.ignoreCase:t.ignoreCase==="quirks"?!!e.quirksMode:!e.xmlMode&&Db.has(t.name)}var Fr,Eb,Db,Su,Au=A(()=>{Fr=ot(Nt(),1),Eb=/[-[\]{}()*+?.,\\^$|#\s]/g;Db=new Set(["accept","accept-charset","align","alink","axis","bgcolor","charset","checked","clear","codetype","color","compact","declare","defer","dir","direction","disabled","enctype","face","frame","hreflang","http-equiv","lang","language","link","media","method","multiple","nohref","noresize","noshade","nowrap","readonly","rel","rev","rules","scope","scrolling","selected","shape","target","text","type","valign","valuetype","vlink"]);Su={equals(t,e,r){let{adapter:n}=r,{name:i}=e,{value:o}=e;return Bt(e,r)?(o=o.toLowerCase(),s=>{let c=n.getAttributeValue(s,i);return c!=null&&c.length===o.length&&c.toLowerCase()===o&&t(s)}):s=>n.getAttributeValue(s,i)===o&&t(s)},hyphen(t,e,r){let{adapter:n}=r,{name:i}=e,{value:o}=e,s=o.length;return Bt(e,r)?(o=o.toLowerCase(),function(u){let l=n.getAttributeValue(u,i);return l!=null&&(l.length===s||l.charAt(s)==="-")&&l.substr(0,s).toLowerCase()===o&&t(u)}):function(u){let l=n.getAttributeValue(u,i);return l!=null&&(l.length===s||l.charAt(s)==="-")&&l.substr(0,s)===o&&t(u)}},element(t,e,r){let{adapter:n}=r,{name:i,value:o}=e;if(/\s/.test(o))return Fr.falseFunc;let s=new RegExp(`(?:^|\\s)${Tu(o)}(?:$|\\s)`,Bt(e,r)?"i":"");return function(u){let l=n.getAttributeValue(u,i);return l!=null&&l.length>=o.length&&s.test(l)&&t(u)}},exists(t,{name:e},{adapter:r}){return n=>r.hasAttrib(n,e)&&t(n)},start(t,e,r){let{adapter:n}=r,{name:i}=e,{value:o}=e,s=o.length;return s===0?Fr.falseFunc:Bt(e,r)?(o=o.toLowerCase(),c=>{let u=n.getAttributeValue(c,i);return u!=null&&u.length>=s&&u.substr(0,s).toLowerCase()===o&&t(c)}):c=>{var u;return!!((u=n.getAttributeValue(c,i))!=null&&u.startsWith(o))&&t(c)}},end(t,e,r){let{adapter:n}=r,{name:i}=e,{value:o}=e,s=-o.length;return s===0?Fr.falseFunc:Bt(e,r)?(o=o.toLowerCase(),c=>{var u;return((u=n.getAttributeValue(c,i))==null?void 0:u.substr(s).toLowerCase())===o&&t(c)}):c=>{var u;return!!((u=n.getAttributeValue(c,i))!=null&&u.endsWith(o))&&t(c)}},any(t,e,r){let{adapter:n}=r,{name:i,value:o}=e;if(o==="")return Fr.falseFunc;if(Bt(e,r)){let s=new RegExp(Tu(o),"i");return function(u){let l=n.getAttributeValue(u,i);return l!=null&&l.length>=o.length&&s.test(l)&&t(u)}}return s=>{var c;return!!((c=n.getAttributeValue(s,i))!=null&&c.includes(o))&&t(s)}},not(t,e,r){let{adapter:n}=r,{name:i}=e,{value:o}=e;return o===""?s=>!!n.getAttributeValue(s,i)&&t(s):Bt(e,r)?(o=o.toLowerCase(),s=>{let c=n.getAttributeValue(s,i);return(c==null||c.length!==o.length||c.toLowerCase()!==o)&&t(s)}):s=>n.getAttributeValue(s,i)!==o&&t(s)}}});function Cu(t,e,r){let{adapter:n,xmlMode:i=!1}=r,o=[],s=[e],c=[0];for(;;){if(c[0]>=s[0].length){if(s.length===1)return o;s.shift(),c.shift();continue}let u=s[0][c[0]++];if(n.isTag(u)&&(t(u)&&o.push(u),i||n.getName(u)!=="template")){let l=n.getChildren(u);l.length>0&&(s.unshift(l),c.unshift(0))}}}function rr(t,e,r){let{adapter:n,xmlMode:i=!1}=r,o=[e],s=[0];for(;;){if(s[0]>=o[0].length){if(o.length===1)return null;o.shift(),s.shift();continue}let c=o[0][s[0]++];if(n.isTag(c)){if(t(c))return c;if(i||n.getName(c)!=="template"){let u=n.getChildren(c);u.length>0&&(o.unshift(u),s.unshift(0))}}}}function ri(t,e){let r=e.getSiblings(t);if(r.length<=1)return[];let n=r.indexOf(t);return n<0||n===r.length-1?[]:r.slice(n+1).filter(e.isTag)}function ke(t,e){let r=e.getParent(t);return r!=null&&e.isTag(r)?r:null}var Ut=A(()=>{});var Eu,Xo,Du=A(()=>{Eu="input:is([type=text i],[type=search i],[type=url i],[type=tel i],[type=email i],[type=password i],[type=date i],[type=month i],[type=week i],[type=time i],[type=datetime-local i],[type=number i])",Xo={"any-link":":is(a, area, link)[href]",link:":any-link:not(:visited)",disabled:`:is(
|
|
39
39
|
:is(button, input, select, textarea, optgroup, option)[disabled],
|
|
40
40
|
optgroup[disabled] > option,
|
|
41
41
|
fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)
|
|
42
|
-
)`,enabled:":not(:disabled)",checked:":is(:is(input[type=radio], input[type=checkbox])[checked], :selected)",required:":is(input, select, textarea)[required]",optional:":is(input, select, textarea):not([required])","read-only":`[readonly]:is(textarea, ${Eu})`,"read-write":`:not([readonly]):is(textarea, ${Eu})`,selected:"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)",checkbox:"[type=checkbox]",file:"[type=file]",password:"[type=password]",radio:"[type=radio]",reset:"[type=reset]",image:"[type=image]",submit:"[type=submit]",parent:":not(:empty)",header:":is(h1, h2, h3, h4, h5, h6)",button:":is(button, input[type=button])",input:":is(input, textarea, select, button)",text:"input:is(:not([type!='']), [type=text])"}});function Ru(t){if(t=t.trim().toLowerCase(),t==="even")return[2,0];if(t==="odd")return[2,1];let e=0,r=0,n=o(),i=s();if(e<t.length&&t.charAt(e)==="n"&&(e++,r=n*(i??1),c(),e<t.length?(n=o(),c(),i=s()):n=i=0),i===null||e<t.length)throw new Error(`n-th rule couldn't be parsed ('${t}')`);return[r,n*i];function o(){return t.charAt(e)==="-"?(e++,-1):(t.charAt(e)==="+"&&e++,1)}function s(){let u=e,l=0;for(;e<t.length&&t.charCodeAt(e)>=Lu&&t.charCodeAt(e)<=Rb;)l=l*10+(t.charCodeAt(e)-Lu),e++;return e===u?null:l}function c(){for(;e<t.length&&Lb.has(t.charCodeAt(e));)e++}}var Lb,Lu,Rb,Pu=T(()=>{Lb=new Set([9,10,12,13,32]),Lu=48,Rb=57});function Nu(t){let e=t[0],r=t[1]-1;if(r<0&&e<=0)return Jo.default.falseFunc;if(e===-1)return o=>o<=r;if(e===0)return o=>o===r;if(e===1)return r<0?Jo.default.trueFunc:o=>o>=r;let n=Math.abs(e),i=(r%n+n)%n;return e>1?o=>o>=r&&o%n===i:o=>o<=r&&o%n===i}var Jo,Mu=T(()=>{Jo=ot(Nt(),1)});function nr(t){return Nu(Ru(t))}var Fu=T(()=>{Pu();Mu()});function ir(t,{adapter:e,cacheResults:r},n){if(r===!1||typeof WeakMap>"u")return s=>t(s)&&n(s);let i=new WeakMap;function o(s){let c=n(s);return i.set(s,c),c}return function(c){if(!t(c))return!1;if(i.has(c))return i.get(c);let u=c;do{let l=ke(u,e);if(l===null)return o(c);u=l}while(!i.has(u));return i.get(u)&&o(c)}}var Qo=T(()=>{Ut()});function Yo(t){return function(r,n,{adapter:i}){let o=i[t];return typeof o!="function"?Se.falseFunc:function(c){return o(c)&&r(c)}}}var Se,Br,Bu=T(()=>{Se=ot(Nt(),1);Fu();Qo();Ut();Br={contains(t,e,r){let{getText:n}=r.adapter;return ir(t,r,i=>n(i).includes(e))},icontains(t,e,r){let n=e.toLowerCase(),{getText:i}=r.adapter;return ir(t,r,o=>i(o).toLowerCase().includes(n))},"nth-child"(t,e,{adapter:r,equals:n}){let i=nr(e);return i===Se.falseFunc?Se.falseFunc:i===Se.trueFunc?o=>ke(o,r)!==null&&t(o):function(s){let c=r.getSiblings(s),u=0;for(let l=0;l<c.length&&!n(s,c[l]);l++)r.isTag(c[l])&&u++;return i(u)&&t(s)}},"nth-last-child"(t,e,{adapter:r,equals:n}){let i=nr(e);return i===Se.falseFunc?Se.falseFunc:i===Se.trueFunc?o=>ke(o,r)!==null&&t(o):function(s){let c=r.getSiblings(s),u=0;for(let l=c.length-1;l>=0&&!n(s,c[l]);l--)r.isTag(c[l])&&u++;return i(u)&&t(s)}},"nth-of-type"(t,e,{adapter:r,equals:n}){let i=nr(e);return i===Se.falseFunc?Se.falseFunc:i===Se.trueFunc?o=>ke(o,r)!==null&&t(o):function(s){let c=r.getSiblings(s),u=0;for(let l=0;l<c.length;l++){let d=c[l];if(n(s,d))break;r.isTag(d)&&r.getName(d)===r.getName(s)&&u++}return i(u)&&t(s)}},"nth-last-of-type"(t,e,{adapter:r,equals:n}){let i=nr(e);return i===Se.falseFunc?Se.falseFunc:i===Se.trueFunc?o=>ke(o,r)!==null&&t(o):function(s){let c=r.getSiblings(s),u=0;for(let l=c.length-1;l>=0;l--){let d=c[l];if(n(s,d))break;r.isTag(d)&&r.getName(d)===r.getName(s)&&u++}return i(u)&&t(s)}},root(t,e,{adapter:r}){return n=>ke(n,r)===null&&t(n)},scope(t,e,r,n){let{equals:i}=r;return!n||n.length===0?Br.root(t,e,r):n.length===1?o=>i(n[0],o)&&t(o):o=>n.includes(o)&&t(o)},hover:Yo("isHovered"),visited:Yo("isVisited"),active:Yo("isActive")}});function Zo(t,e,r,n){if(r===null){if(t.length>n)throw new Error(`Pseudo-class :${e} requires an argument`)}else if(t.length===n)throw new Error(`Pseudo-class :${e} doesn't have any arguments`)}var Pb,ni,Uu=T(()=>{Pb=/^[ \t\r\n]*$/,ni={empty(t,{adapter:e}){let r=e.getChildren(t);return r.every(n=>!e.isTag(n))&&r.every(n=>Pb.test(e.getText(n)))},"first-child"(t,{adapter:e,equals:r}){if(e.prevElementSibling)return e.prevElementSibling(t)==null;let n=e.getSiblings(t).find(i=>e.isTag(i));return n!=null&&r(t,n)},"last-child"(t,{adapter:e,equals:r}){let n=e.getSiblings(t);for(let i=n.length-1;i>=0;i--){if(r(t,n[i]))return!0;if(e.isTag(n[i]))break}return!1},"first-of-type"(t,{adapter:e,equals:r}){let n=e.getSiblings(t),i=e.getName(t);for(let o=0;o<n.length;o++){let s=n[o];if(r(t,s))return!0;if(e.isTag(s)&&e.getName(s)===i)break}return!1},"last-of-type"(t,{adapter:e,equals:r}){let n=e.getSiblings(t),i=e.getName(t);for(let o=n.length-1;o>=0;o--){let s=n[o];if(r(t,s))return!0;if(e.isTag(s)&&e.getName(s)===i)break}return!1},"only-of-type"(t,{adapter:e,equals:r}){let n=e.getName(t);return e.getSiblings(t).every(i=>r(t,i)||!e.isTag(i)||e.getName(i)!==n)},"only-child"(t,{adapter:e,equals:r}){return e.getSiblings(t).every(n=>r(t,n)||!e.isTag(n))}}});function or(t){return t.type==="_flexibleDescendant"||_n(t)}function Hu(t){let e=t.map(ii);for(let r=1;r<t.length;r++){let n=e[r];if(!(n<0))for(let i=r;i>0&&n<e[i-1];i--){let o=t[i];t[i]=t[i-1],t[i-1]=o,e[i]=e[i-1],e[i-1]=n}}}function Nb(t){switch(t.action){case Z.Exists:return 10;case Z.Equals:return t.name==="id"?9:8;case Z.Not:return 7;case Z.Start:return 6;case Z.End:return 6;case Z.Any:return 5;case Z.Hyphen:return 4;case Z.Element:return 3}}function ii(t){switch(t.type){case L.Universal:return 50;case L.Tag:return 30;case L.Attribute:return Math.floor(Nb(t)/(t.ignoreCase?2:1));case L.Pseudo:return t.data?t.name==="has"||t.name==="contains"||t.name==="icontains"?0:Array.isArray(t.data)?Math.max(0,Math.min(...t.data.map(e=>Math.min(...e.map(ii))))):2:3;default:return-1}}function Ur(t){return t.type===L.Pseudo&&(t.name==="scope"||Array.isArray(t.data)&&t.data.some(e=>e.some(Ur)))}var ea=T(()=>{er()});function Mb(t){return t.some(e=>e.length>0&&(or(e[0])||e.some(Ur)))}function ra(t){return{xmlMode:!!t.xmlMode,lowerCaseAttributeNames:!!t.lowerCaseAttributeNames,lowerCaseTags:!!t.lowerCaseTags,quirksMode:!!t.quirksMode,cacheResults:!!t.cacheResults,pseudos:t.pseudos,adapter:t.adapter,equals:t.equals}}var We,na,ta,oi,ia=T(()=>{We=ot(Nt(),1);Qo();Ut();ea();na={};ta=(t,e,r,n,i)=>{let o=i(e,ra(r),n);return o===We.trueFunc?t:o===We.falseFunc?We.falseFunc:s=>o(s)&&t(s)},oi={is:ta,matches:ta,where:ta,not(t,e,r,n,i){let o=i(e,ra(r),n);return o===We.falseFunc?t:o===We.trueFunc?We.falseFunc:s=>!o(s)&&t(s)},has(t,e,r,n,i){let{adapter:o}=r,s=ra(r);s.relativeSelector=!0;let c=e.some(p=>p.some(or))?[na]:void 0,u=Mb(e),l=i(e,s,c);if(l===We.falseFunc)return We.falseFunc;if(c&&l!==We.trueFunc)return u?p=>{if(!t(p))return!1;c[0]=p;let m=o.getChildren(p);return rr(l,l.shouldTestNextSiblings?[...m,...ri(p,o)]:m,r)!==null}:ir(t,r,p=>(c[0]=p,rr(l,o.getChildren(p),r)!==null));let d=p=>rr(l,o.getChildren(p),r)!==null;return u?p=>t(p)&&d(p):ir(t,r,d)}}});function Iu(t,e,r,n,i){var l;let{name:o,data:s}=e;if(Array.isArray(s)){if(!(o in oi))throw new Error(`Unknown pseudo-class :${o}(${s})`);return oi[o](t,s,r,n,i)}let c=(l=r.pseudos)==null?void 0:l[o],u=typeof c=="string"?c:Xo[o];if(typeof u=="string"){if(s!=null)throw new Error(`Pseudo ${o} doesn't have any arguments`);let d=Dr(u);return oi.is(t,d,r,n,i)}if(typeof c=="function")return Zo(c,o,s,1),d=>c(d,s)&&t(d);if(o in Br)return Br[o](t,s,r,n);if(o in ni){let d=ni[o];return Zo(d,o,s,2),p=>d(p,r,s)&&t(p)}throw new Error(`Unknown pseudo-class :${o}`)}var oa=T(()=>{er();Du();Bu();Uu();ia()});function qu(t,e,r,n,i,o){let{adapter:s,equals:c,cacheResults:u}=r;switch(e.type){case L.PseudoElement:throw new Error("Pseudo-elements are not supported by css-select");case L.ColumnCombinator:throw new Error("Column combinators are not yet supported by css-select");case L.Attribute:{if(e.namespace!=null)throw new Error("Namespaced attributes are not yet supported by css-select");return(!r.xmlMode||r.lowerCaseAttributeNames)&&(e.name=e.name.toLowerCase()),Tu[e.action](t,e,r)}case L.Pseudo:return Iu(t,e,r,n,i);case L.Tag:{if(e.namespace!=null)throw new Error("Namespaced tag names are not yet supported by css-select");let{name:l}=e;return(!r.xmlMode||r.lowerCaseTags)&&(l=l.toLowerCase()),function(p){return s.getName(p)===l&&t(p)}}case L.Descendant:{if(!o||u===!1||typeof WeakMap>"u")return function(p){let m=p;for(;m=ke(m,s);)if(t(m))return!0;return!1};let l=new WeakMap;return function(p){let m=p,f;for(;m=ke(m,s);){let h=l.get(m);if(h===void 0){if(f??(f={matches:!1}),f.matches=t(m),l.set(m,f),f.matches)return!0}else return f&&(f.matches=h.matches),h.matches}return!1}}case"_flexibleDescendant":return function(d){let p=d;do{if(t(p))return!0;p=ke(p,s)}while(p);return!1};case L.Parent:return function(d){return s.getChildren(d).some(p=>s.isTag(p)&&t(p))};case L.Child:return function(d){let p=ke(d,s);return p!==null&&t(p)};case L.Sibling:return function(d){let p=s.getSiblings(d);for(let m=0;m<p.length;m++){let f=p[m];if(c(d,f))break;if(s.isTag(f)&&t(f))return!0}return!1};case L.Adjacent:return s.prevElementSibling?function(d){let p=s.prevElementSibling(d);return p!=null&&t(p)}:function(d){let p=s.getSiblings(d),m;for(let f=0;f<p.length;f++){let h=p[f];if(c(d,h))break;s.isTag(h)&&(m=h)}return!!m&&t(m)};case L.Universal:{if(e.namespace!=null&&e.namespace!=="*")throw new Error("Namespaced universal selectors are not yet supported by css-select");return t}}}var $u=T(()=>{er();Au();Ut();oa()});function Hb(t,{adapter:e},r){let n=!!(r!=null&&r.every(i=>i===na||e.isTag(i)&&ke(i,e)!==null));for(let i of t){if(!(i.length>0&&or(i[0])&&i[0].type!==L.Descendant))if(n&&!i.some(Ur))i.unshift(Fb);else continue;i.unshift(Ub)}}function aa(t,e,r){t.forEach(Hu);let{context:n=r,rootFunc:i=ar.trueFunc}=e,o=Array.isArray(n),s=n&&(Array.isArray(n)?n:[n]);if(e.relativeSelector!==!1)Hb(t,e,s);else if(t.some(l=>l.length>0&&or(l[0])))throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled");let c=!1,u=ar.falseFunc;e:for(let l of t){if(l.length>=2){let[m,f]=l;m.type!==L.Pseudo||m.name!=="scope"||(o&&f.type===L.Descendant?l[1]=Bb:(f.type===L.Adjacent||f.type===L.Sibling)&&(c=!0))}let d=i,p=!1;for(let m of l)if(d=qu(d,m,e,s,aa,p),ii(m)===0&&(p=!0),d===ar.falseFunc)continue e;if(d===i)return i;u=u===ar.falseFunc?d:Ib(u,d)}return u.shouldTestNextSiblings=c,u}function Ib(t,e){return r=>t(r)||e(r)}var ar,Fb,Bb,Ub,Ou=T(()=>{ar=ot(Nt(),1);er();$u();Ut();ea();ia();Fb={type:L.Descendant},Bb={type:"_flexibleDescendant"},Ub={type:L.Pseudo,name:"scope",data:null}});function sa(t){var r;let e=t??qb;return e.adapter??(e.adapter=ti),e.equals??(e.equals=((r=e.adapter)==null?void 0:r.equals)??zu),e}function $b(t,e,r){let n=sa(e),i=ju(t,n,r);return i===Hr.falseFunc?Hr.falseFunc:o=>n.adapter.isTag(o)&&i(o)}function ju(t,e,r){return Ob(typeof t=="string"?Dr(t):t,e,r)}function Ob(t,e,r){return aa(t,sa(e),r)}function _u(t){return function(r,n,i){let o=sa(i);typeof r!="function"&&(r=ju(r,o,n));let s=zb(n,o.adapter,r.shouldTestNextSiblings);return t(r,s,o)}}function zb(t,e,r=!1){return r&&(t=jb(t,e)),Array.isArray(t)?e.removeSubsets(t):e.getChildren(t)}function jb(t,e){let r=Array.isArray(t)?t.slice(0):[t],n=r.length;for(let i=0;i<n;i++){let o=ri(r[i],e);r.push(...o)}return r}function Te(t,e,r){return(typeof e=="function"?e:$b(e,r))(t)}var Hr,zu,qb,Wu,ca,ua=T(()=>{Hr=ot(Nt(),1);er();ku();Ou();Ut();oa();zu=(t,e)=>t===e,qb={adapter:ti,equals:zu};Wu=_u((t,e,r)=>t===Hr.falseFunc||!e||e.length===0?[]:Cu(t,e,r)),ca=_u((t,e,r)=>t===Hr.falseFunc||!e||e.length===0?null:rr(t,e,r))});var si=Ss((ai,Ir)=>{(function(t){var e=typeof ai=="object"&&ai,r=typeof Ir=="object"&&Ir&&Ir.exports==e&&Ir,n=typeof global=="object"&&global;(n.global===n||n.window===n)&&(t=n);var i=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,o=/[\x01-\x7F]/g,s=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,c=/<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g,u={"\xAD":"shy","\u200C":"zwnj","\u200D":"zwj","\u200E":"lrm","\u2063":"ic","\u2062":"it","\u2061":"af","\u200F":"rlm","\u200B":"ZeroWidthSpace","\u2060":"NoBreak","\u0311":"DownBreve","\u20DB":"tdot","\u20DC":"DotDot"," ":"Tab","\n":"NewLine","\u2008":"puncsp","\u205F":"MediumSpace","\u2009":"thinsp","\u200A":"hairsp","\u2004":"emsp13","\u2002":"ensp","\u2005":"emsp14","\u2003":"emsp","\u2007":"numsp","\xA0":"nbsp","\u205F\u200A":"ThickSpace","\u203E":"oline",_:"lowbar","\u2010":"dash","\u2013":"ndash","\u2014":"mdash","\u2015":"horbar",",":"comma",";":"semi","\u204F":"bsemi",":":"colon","\u2A74":"Colone","!":"excl","\xA1":"iexcl","?":"quest","\xBF":"iquest",".":"period","\u2025":"nldr","\u2026":"mldr","\xB7":"middot","'":"apos","\u2018":"lsquo","\u2019":"rsquo","\u201A":"sbquo","\u2039":"lsaquo","\u203A":"rsaquo",'"':"quot","\u201C":"ldquo","\u201D":"rdquo","\u201E":"bdquo","\xAB":"laquo","\xBB":"raquo","(":"lpar",")":"rpar","[":"lsqb","]":"rsqb","{":"lcub","}":"rcub","\u2308":"lceil","\u2309":"rceil","\u230A":"lfloor","\u230B":"rfloor","\u2985":"lopar","\u2986":"ropar","\u298B":"lbrke","\u298C":"rbrke","\u298D":"lbrkslu","\u298E":"rbrksld","\u298F":"lbrksld","\u2990":"rbrkslu","\u2991":"langd","\u2992":"rangd","\u2993":"lparlt","\u2994":"rpargt","\u2995":"gtlPar","\u2996":"ltrPar","\u27E6":"lobrk","\u27E7":"robrk","\u27E8":"lang","\u27E9":"rang","\u27EA":"Lang","\u27EB":"Rang","\u27EC":"loang","\u27ED":"roang","\u2772":"lbbrk","\u2773":"rbbrk","\u2016":"Vert","\xA7":"sect","\xB6":"para","@":"commat","*":"ast","/":"sol",undefined:null,"&":"amp","#":"num","%":"percnt","\u2030":"permil","\u2031":"pertenk","\u2020":"dagger","\u2021":"Dagger","\u2022":"bull","\u2043":"hybull","\u2032":"prime","\u2033":"Prime","\u2034":"tprime","\u2057":"qprime","\u2035":"bprime","\u2041":"caret","`":"grave","\xB4":"acute","\u02DC":"tilde","^":"Hat","\xAF":"macr","\u02D8":"breve","\u02D9":"dot","\xA8":"die","\u02DA":"ring","\u02DD":"dblac","\xB8":"cedil","\u02DB":"ogon","\u02C6":"circ","\u02C7":"caron","\xB0":"deg","\xA9":"copy","\xAE":"reg","\u2117":"copysr","\u2118":"wp","\u211E":"rx","\u2127":"mho","\u2129":"iiota","\u2190":"larr","\u219A":"nlarr","\u2192":"rarr","\u219B":"nrarr","\u2191":"uarr","\u2193":"darr","\u2194":"harr","\u21AE":"nharr","\u2195":"varr","\u2196":"nwarr","\u2197":"nearr","\u2198":"searr","\u2199":"swarr","\u219D":"rarrw","\u219D\u0338":"nrarrw","\u219E":"Larr","\u219F":"Uarr","\u21A0":"Rarr","\u21A1":"Darr","\u21A2":"larrtl","\u21A3":"rarrtl","\u21A4":"mapstoleft","\u21A5":"mapstoup","\u21A6":"map","\u21A7":"mapstodown","\u21A9":"larrhk","\u21AA":"rarrhk","\u21AB":"larrlp","\u21AC":"rarrlp","\u21AD":"harrw","\u21B0":"lsh","\u21B1":"rsh","\u21B2":"ldsh","\u21B3":"rdsh","\u21B5":"crarr","\u21B6":"cularr","\u21B7":"curarr","\u21BA":"olarr","\u21BB":"orarr","\u21BC":"lharu","\u21BD":"lhard","\u21BE":"uharr","\u21BF":"uharl","\u21C0":"rharu","\u21C1":"rhard","\u21C2":"dharr","\u21C3":"dharl","\u21C4":"rlarr","\u21C5":"udarr","\u21C6":"lrarr","\u21C7":"llarr","\u21C8":"uuarr","\u21C9":"rrarr","\u21CA":"ddarr","\u21CB":"lrhar","\u21CC":"rlhar","\u21D0":"lArr","\u21CD":"nlArr","\u21D1":"uArr","\u21D2":"rArr","\u21CF":"nrArr","\u21D3":"dArr","\u21D4":"iff","\u21CE":"nhArr","\u21D5":"vArr","\u21D6":"nwArr","\u21D7":"neArr","\u21D8":"seArr","\u21D9":"swArr","\u21DA":"lAarr","\u21DB":"rAarr","\u21DD":"zigrarr","\u21E4":"larrb","\u21E5":"rarrb","\u21F5":"duarr","\u21FD":"loarr","\u21FE":"roarr","\u21FF":"hoarr","\u2200":"forall","\u2201":"comp","\u2202":"part","\u2202\u0338":"npart","\u2203":"exist","\u2204":"nexist","\u2205":"empty","\u2207":"Del","\u2208":"in","\u2209":"notin","\u220B":"ni","\u220C":"notni","\u03F6":"bepsi","\u220F":"prod","\u2210":"coprod","\u2211":"sum","+":"plus","\xB1":"pm","\xF7":"div","\xD7":"times","<":"lt","\u226E":"nlt","<\u20D2":"nvlt","=":"equals","\u2260":"ne","=\u20E5":"bne","\u2A75":"Equal",">":"gt","\u226F":"ngt",">\u20D2":"nvgt","\xAC":"not","|":"vert","\xA6":"brvbar","\u2212":"minus","\u2213":"mp","\u2214":"plusdo","\u2044":"frasl","\u2216":"setmn","\u2217":"lowast","\u2218":"compfn","\u221A":"Sqrt","\u221D":"prop","\u221E":"infin","\u221F":"angrt","\u2220":"ang","\u2220\u20D2":"nang","\u2221":"angmsd","\u2222":"angsph","\u2223":"mid","\u2224":"nmid","\u2225":"par","\u2226":"npar","\u2227":"and","\u2228":"or","\u2229":"cap","\u2229\uFE00":"caps","\u222A":"cup","\u222A\uFE00":"cups","\u222B":"int","\u222C":"Int","\u222D":"tint","\u2A0C":"qint","\u222E":"oint","\u222F":"Conint","\u2230":"Cconint","\u2231":"cwint","\u2232":"cwconint","\u2233":"awconint","\u2234":"there4","\u2235":"becaus","\u2236":"ratio","\u2237":"Colon","\u2238":"minusd","\u223A":"mDDot","\u223B":"homtht","\u223C":"sim","\u2241":"nsim","\u223C\u20D2":"nvsim","\u223D":"bsim","\u223D\u0331":"race","\u223E":"ac","\u223E\u0333":"acE","\u223F":"acd","\u2240":"wr","\u2242":"esim","\u2242\u0338":"nesim","\u2243":"sime","\u2244":"nsime","\u2245":"cong","\u2247":"ncong","\u2246":"simne","\u2248":"ap","\u2249":"nap","\u224A":"ape","\u224B":"apid","\u224B\u0338":"napid","\u224C":"bcong","\u224D":"CupCap","\u226D":"NotCupCap","\u224D\u20D2":"nvap","\u224E":"bump","\u224E\u0338":"nbump","\u224F":"bumpe","\u224F\u0338":"nbumpe","\u2250":"doteq","\u2250\u0338":"nedot","\u2251":"eDot","\u2252":"efDot","\u2253":"erDot","\u2254":"colone","\u2255":"ecolon","\u2256":"ecir","\u2257":"cire","\u2259":"wedgeq","\u225A":"veeeq","\u225C":"trie","\u225F":"equest","\u2261":"equiv","\u2262":"nequiv","\u2261\u20E5":"bnequiv","\u2264":"le","\u2270":"nle","\u2264\u20D2":"nvle","\u2265":"ge","\u2271":"nge","\u2265\u20D2":"nvge","\u2266":"lE","\u2266\u0338":"nlE","\u2267":"gE","\u2267\u0338":"ngE","\u2268\uFE00":"lvnE","\u2268":"lnE","\u2269":"gnE","\u2269\uFE00":"gvnE","\u226A":"ll","\u226A\u0338":"nLtv","\u226A\u20D2":"nLt","\u226B":"gg","\u226B\u0338":"nGtv","\u226B\u20D2":"nGt","\u226C":"twixt","\u2272":"lsim","\u2274":"nlsim","\u2273":"gsim","\u2275":"ngsim","\u2276":"lg","\u2278":"ntlg","\u2277":"gl","\u2279":"ntgl","\u227A":"pr","\u2280":"npr","\u227B":"sc","\u2281":"nsc","\u227C":"prcue","\u22E0":"nprcue","\u227D":"sccue","\u22E1":"nsccue","\u227E":"prsim","\u227F":"scsim","\u227F\u0338":"NotSucceedsTilde","\u2282":"sub","\u2284":"nsub","\u2282\u20D2":"vnsub","\u2283":"sup","\u2285":"nsup","\u2283\u20D2":"vnsup","\u2286":"sube","\u2288":"nsube","\u2287":"supe","\u2289":"nsupe","\u228A\uFE00":"vsubne","\u228A":"subne","\u228B\uFE00":"vsupne","\u228B":"supne","\u228D":"cupdot","\u228E":"uplus","\u228F":"sqsub","\u228F\u0338":"NotSquareSubset","\u2290":"sqsup","\u2290\u0338":"NotSquareSuperset","\u2291":"sqsube","\u22E2":"nsqsube","\u2292":"sqsupe","\u22E3":"nsqsupe","\u2293":"sqcap","\u2293\uFE00":"sqcaps","\u2294":"sqcup","\u2294\uFE00":"sqcups","\u2295":"oplus","\u2296":"ominus","\u2297":"otimes","\u2298":"osol","\u2299":"odot","\u229A":"ocir","\u229B":"oast","\u229D":"odash","\u229E":"plusb","\u229F":"minusb","\u22A0":"timesb","\u22A1":"sdotb","\u22A2":"vdash","\u22AC":"nvdash","\u22A3":"dashv","\u22A4":"top","\u22A5":"bot","\u22A7":"models","\u22A8":"vDash","\u22AD":"nvDash","\u22A9":"Vdash","\u22AE":"nVdash","\u22AA":"Vvdash","\u22AB":"VDash","\u22AF":"nVDash","\u22B0":"prurel","\u22B2":"vltri","\u22EA":"nltri","\u22B3":"vrtri","\u22EB":"nrtri","\u22B4":"ltrie","\u22EC":"nltrie","\u22B4\u20D2":"nvltrie","\u22B5":"rtrie","\u22ED":"nrtrie","\u22B5\u20D2":"nvrtrie","\u22B6":"origof","\u22B7":"imof","\u22B8":"mumap","\u22B9":"hercon","\u22BA":"intcal","\u22BB":"veebar","\u22BD":"barvee","\u22BE":"angrtvb","\u22BF":"lrtri","\u22C0":"Wedge","\u22C1":"Vee","\u22C2":"xcap","\u22C3":"xcup","\u22C4":"diam","\u22C5":"sdot","\u22C6":"Star","\u22C7":"divonx","\u22C8":"bowtie","\u22C9":"ltimes","\u22CA":"rtimes","\u22CB":"lthree","\u22CC":"rthree","\u22CD":"bsime","\u22CE":"cuvee","\u22CF":"cuwed","\u22D0":"Sub","\u22D1":"Sup","\u22D2":"Cap","\u22D3":"Cup","\u22D4":"fork","\u22D5":"epar","\u22D6":"ltdot","\u22D7":"gtdot","\u22D8":"Ll","\u22D8\u0338":"nLl","\u22D9":"Gg","\u22D9\u0338":"nGg","\u22DA\uFE00":"lesg","\u22DA":"leg","\u22DB":"gel","\u22DB\uFE00":"gesl","\u22DE":"cuepr","\u22DF":"cuesc","\u22E6":"lnsim","\u22E7":"gnsim","\u22E8":"prnsim","\u22E9":"scnsim","\u22EE":"vellip","\u22EF":"ctdot","\u22F0":"utdot","\u22F1":"dtdot","\u22F2":"disin","\u22F3":"isinsv","\u22F4":"isins","\u22F5":"isindot","\u22F5\u0338":"notindot","\u22F6":"notinvc","\u22F7":"notinvb","\u22F9":"isinE","\u22F9\u0338":"notinE","\u22FA":"nisd","\u22FB":"xnis","\u22FC":"nis","\u22FD":"notnivc","\u22FE":"notnivb","\u2305":"barwed","\u2306":"Barwed","\u230C":"drcrop","\u230D":"dlcrop","\u230E":"urcrop","\u230F":"ulcrop","\u2310":"bnot","\u2312":"profline","\u2313":"profsurf","\u2315":"telrec","\u2316":"target","\u231C":"ulcorn","\u231D":"urcorn","\u231E":"dlcorn","\u231F":"drcorn","\u2322":"frown","\u2323":"smile","\u232D":"cylcty","\u232E":"profalar","\u2336":"topbot","\u233D":"ovbar","\u233F":"solbar","\u237C":"angzarr","\u23B0":"lmoust","\u23B1":"rmoust","\u23B4":"tbrk","\u23B5":"bbrk","\u23B6":"bbrktbrk","\u23DC":"OverParenthesis","\u23DD":"UnderParenthesis","\u23DE":"OverBrace","\u23DF":"UnderBrace","\u23E2":"trpezium","\u23E7":"elinters","\u2423":"blank","\u2500":"boxh","\u2502":"boxv","\u250C":"boxdr","\u2510":"boxdl","\u2514":"boxur","\u2518":"boxul","\u251C":"boxvr","\u2524":"boxvl","\u252C":"boxhd","\u2534":"boxhu","\u253C":"boxvh","\u2550":"boxH","\u2551":"boxV","\u2552":"boxdR","\u2553":"boxDr","\u2554":"boxDR","\u2555":"boxdL","\u2556":"boxDl","\u2557":"boxDL","\u2558":"boxuR","\u2559":"boxUr","\u255A":"boxUR","\u255B":"boxuL","\u255C":"boxUl","\u255D":"boxUL","\u255E":"boxvR","\u255F":"boxVr","\u2560":"boxVR","\u2561":"boxvL","\u2562":"boxVl","\u2563":"boxVL","\u2564":"boxHd","\u2565":"boxhD","\u2566":"boxHD","\u2567":"boxHu","\u2568":"boxhU","\u2569":"boxHU","\u256A":"boxvH","\u256B":"boxVh","\u256C":"boxVH","\u2580":"uhblk","\u2584":"lhblk","\u2588":"block","\u2591":"blk14","\u2592":"blk12","\u2593":"blk34","\u25A1":"squ","\u25AA":"squf","\u25AB":"EmptyVerySmallSquare","\u25AD":"rect","\u25AE":"marker","\u25B1":"fltns","\u25B3":"xutri","\u25B4":"utrif","\u25B5":"utri","\u25B8":"rtrif","\u25B9":"rtri","\u25BD":"xdtri","\u25BE":"dtrif","\u25BF":"dtri","\u25C2":"ltrif","\u25C3":"ltri","\u25CA":"loz","\u25CB":"cir","\u25EC":"tridot","\u25EF":"xcirc","\u25F8":"ultri","\u25F9":"urtri","\u25FA":"lltri","\u25FB":"EmptySmallSquare","\u25FC":"FilledSmallSquare","\u2605":"starf","\u2606":"star","\u260E":"phone","\u2640":"female","\u2642":"male","\u2660":"spades","\u2663":"clubs","\u2665":"hearts","\u2666":"diams","\u266A":"sung","\u2713":"check","\u2717":"cross","\u2720":"malt","\u2736":"sext","\u2758":"VerticalSeparator","\u27C8":"bsolhsub","\u27C9":"suphsol","\u27F5":"xlarr","\u27F6":"xrarr","\u27F7":"xharr","\u27F8":"xlArr","\u27F9":"xrArr","\u27FA":"xhArr","\u27FC":"xmap","\u27FF":"dzigrarr","\u2902":"nvlArr","\u2903":"nvrArr","\u2904":"nvHarr","\u2905":"Map","\u290C":"lbarr","\u290D":"rbarr","\u290E":"lBarr","\u290F":"rBarr","\u2910":"RBarr","\u2911":"DDotrahd","\u2912":"UpArrowBar","\u2913":"DownArrowBar","\u2916":"Rarrtl","\u2919":"latail","\u291A":"ratail","\u291B":"lAtail","\u291C":"rAtail","\u291D":"larrfs","\u291E":"rarrfs","\u291F":"larrbfs","\u2920":"rarrbfs","\u2923":"nwarhk","\u2924":"nearhk","\u2925":"searhk","\u2926":"swarhk","\u2927":"nwnear","\u2928":"toea","\u2929":"tosa","\u292A":"swnwar","\u2933":"rarrc","\u2933\u0338":"nrarrc","\u2935":"cudarrr","\u2936":"ldca","\u2937":"rdca","\u2938":"cudarrl","\u2939":"larrpl","\u293C":"curarrm","\u293D":"cularrp","\u2945":"rarrpl","\u2948":"harrcir","\u2949":"Uarrocir","\u294A":"lurdshar","\u294B":"ldrushar","\u294E":"LeftRightVector","\u294F":"RightUpDownVector","\u2950":"DownLeftRightVector","\u2951":"LeftUpDownVector","\u2952":"LeftVectorBar","\u2953":"RightVectorBar","\u2954":"RightUpVectorBar","\u2955":"RightDownVectorBar","\u2956":"DownLeftVectorBar","\u2957":"DownRightVectorBar","\u2958":"LeftUpVectorBar","\u2959":"LeftDownVectorBar","\u295A":"LeftTeeVector","\u295B":"RightTeeVector","\u295C":"RightUpTeeVector","\u295D":"RightDownTeeVector","\u295E":"DownLeftTeeVector","\u295F":"DownRightTeeVector","\u2960":"LeftUpTeeVector","\u2961":"LeftDownTeeVector","\u2962":"lHar","\u2963":"uHar","\u2964":"rHar","\u2965":"dHar","\u2966":"luruhar","\u2967":"ldrdhar","\u2968":"ruluhar","\u2969":"rdldhar","\u296A":"lharul","\u296B":"llhard","\u296C":"rharul","\u296D":"lrhard","\u296E":"udhar","\u296F":"duhar","\u2970":"RoundImplies","\u2971":"erarr","\u2972":"simrarr","\u2973":"larrsim","\u2974":"rarrsim","\u2975":"rarrap","\u2976":"ltlarr","\u2978":"gtrarr","\u2979":"subrarr","\u297B":"suplarr","\u297C":"lfisht","\u297D":"rfisht","\u297E":"ufisht","\u297F":"dfisht","\u299A":"vzigzag","\u299C":"vangrt","\u299D":"angrtvbd","\u29A4":"ange","\u29A5":"range","\u29A6":"dwangle","\u29A7":"uwangle","\u29A8":"angmsdaa","\u29A9":"angmsdab","\u29AA":"angmsdac","\u29AB":"angmsdad","\u29AC":"angmsdae","\u29AD":"angmsdaf","\u29AE":"angmsdag","\u29AF":"angmsdah","\u29B0":"bemptyv","\u29B1":"demptyv","\u29B2":"cemptyv","\u29B3":"raemptyv","\u29B4":"laemptyv","\u29B5":"ohbar","\u29B6":"omid","\u29B7":"opar","\u29B9":"operp","\u29BB":"olcross","\u29BC":"odsold","\u29BE":"olcir","\u29BF":"ofcir","\u29C0":"olt","\u29C1":"ogt","\u29C2":"cirscir","\u29C3":"cirE","\u29C4":"solb","\u29C5":"bsolb","\u29C9":"boxbox","\u29CD":"trisb","\u29CE":"rtriltri","\u29CF":"LeftTriangleBar","\u29CF\u0338":"NotLeftTriangleBar","\u29D0":"RightTriangleBar","\u29D0\u0338":"NotRightTriangleBar","\u29DC":"iinfin","\u29DD":"infintie","\u29DE":"nvinfin","\u29E3":"eparsl","\u29E4":"smeparsl","\u29E5":"eqvparsl","\u29EB":"lozf","\u29F4":"RuleDelayed","\u29F6":"dsol","\u2A00":"xodot","\u2A01":"xoplus","\u2A02":"xotime","\u2A04":"xuplus","\u2A06":"xsqcup","\u2A0D":"fpartint","\u2A10":"cirfnint","\u2A11":"awint","\u2A12":"rppolint","\u2A13":"scpolint","\u2A14":"npolint","\u2A15":"pointint","\u2A16":"quatint","\u2A17":"intlarhk","\u2A22":"pluscir","\u2A23":"plusacir","\u2A24":"simplus","\u2A25":"plusdu","\u2A26":"plussim","\u2A27":"plustwo","\u2A29":"mcomma","\u2A2A":"minusdu","\u2A2D":"loplus","\u2A2E":"roplus","\u2A2F":"Cross","\u2A30":"timesd","\u2A31":"timesbar","\u2A33":"smashp","\u2A34":"lotimes","\u2A35":"rotimes","\u2A36":"otimesas","\u2A37":"Otimes","\u2A38":"odiv","\u2A39":"triplus","\u2A3A":"triminus","\u2A3B":"tritime","\u2A3C":"iprod","\u2A3F":"amalg","\u2A40":"capdot","\u2A42":"ncup","\u2A43":"ncap","\u2A44":"capand","\u2A45":"cupor","\u2A46":"cupcap","\u2A47":"capcup","\u2A48":"cupbrcap","\u2A49":"capbrcup","\u2A4A":"cupcup","\u2A4B":"capcap","\u2A4C":"ccups","\u2A4D":"ccaps","\u2A50":"ccupssm","\u2A53":"And","\u2A54":"Or","\u2A55":"andand","\u2A56":"oror","\u2A57":"orslope","\u2A58":"andslope","\u2A5A":"andv","\u2A5B":"orv","\u2A5C":"andd","\u2A5D":"ord","\u2A5F":"wedbar","\u2A66":"sdote","\u2A6A":"simdot","\u2A6D":"congdot","\u2A6D\u0338":"ncongdot","\u2A6E":"easter","\u2A6F":"apacir","\u2A70":"apE","\u2A70\u0338":"napE","\u2A71":"eplus","\u2A72":"pluse","\u2A73":"Esim","\u2A77":"eDDot","\u2A78":"equivDD","\u2A79":"ltcir","\u2A7A":"gtcir","\u2A7B":"ltquest","\u2A7C":"gtquest","\u2A7D":"les","\u2A7D\u0338":"nles","\u2A7E":"ges","\u2A7E\u0338":"nges","\u2A7F":"lesdot","\u2A80":"gesdot","\u2A81":"lesdoto","\u2A82":"gesdoto","\u2A83":"lesdotor","\u2A84":"gesdotol","\u2A85":"lap","\u2A86":"gap","\u2A87":"lne","\u2A88":"gne","\u2A89":"lnap","\u2A8A":"gnap","\u2A8B":"lEg","\u2A8C":"gEl","\u2A8D":"lsime","\u2A8E":"gsime","\u2A8F":"lsimg","\u2A90":"gsiml","\u2A91":"lgE","\u2A92":"glE","\u2A93":"lesges","\u2A94":"gesles","\u2A95":"els","\u2A96":"egs","\u2A97":"elsdot","\u2A98":"egsdot","\u2A99":"el","\u2A9A":"eg","\u2A9D":"siml","\u2A9E":"simg","\u2A9F":"simlE","\u2AA0":"simgE","\u2AA1":"LessLess","\u2AA1\u0338":"NotNestedLessLess","\u2AA2":"GreaterGreater","\u2AA2\u0338":"NotNestedGreaterGreater","\u2AA4":"glj","\u2AA5":"gla","\u2AA6":"ltcc","\u2AA7":"gtcc","\u2AA8":"lescc","\u2AA9":"gescc","\u2AAA":"smt","\u2AAB":"lat","\u2AAC":"smte","\u2AAC\uFE00":"smtes","\u2AAD":"late","\u2AAD\uFE00":"lates","\u2AAE":"bumpE","\u2AAF":"pre","\u2AAF\u0338":"npre","\u2AB0":"sce","\u2AB0\u0338":"nsce","\u2AB3":"prE","\u2AB4":"scE","\u2AB5":"prnE","\u2AB6":"scnE","\u2AB7":"prap","\u2AB8":"scap","\u2AB9":"prnap","\u2ABA":"scnap","\u2ABB":"Pr","\u2ABC":"Sc","\u2ABD":"subdot","\u2ABE":"supdot","\u2ABF":"subplus","\u2AC0":"supplus","\u2AC1":"submult","\u2AC2":"supmult","\u2AC3":"subedot","\u2AC4":"supedot","\u2AC5":"subE","\u2AC5\u0338":"nsubE","\u2AC6":"supE","\u2AC6\u0338":"nsupE","\u2AC7":"subsim","\u2AC8":"supsim","\u2ACB\uFE00":"vsubnE","\u2ACB":"subnE","\u2ACC\uFE00":"vsupnE","\u2ACC":"supnE","\u2ACF":"csub","\u2AD0":"csup","\u2AD1":"csube","\u2AD2":"csupe","\u2AD3":"subsup","\u2AD4":"supsub","\u2AD5":"subsub","\u2AD6":"supsup","\u2AD7":"suphsub","\u2AD8":"supdsub","\u2AD9":"forkv","\u2ADA":"topfork","\u2ADB":"mlcp","\u2AE4":"Dashv","\u2AE6":"Vdashl","\u2AE7":"Barv","\u2AE8":"vBar","\u2AE9":"vBarv","\u2AEB":"Vbar","\u2AEC":"Not","\u2AED":"bNot","\u2AEE":"rnmid","\u2AEF":"cirmid","\u2AF0":"midcir","\u2AF1":"topcir","\u2AF2":"nhpar","\u2AF3":"parsim","\u2AFD":"parsl","\u2AFD\u20E5":"nparsl","\u266D":"flat","\u266E":"natur","\u266F":"sharp","\xA4":"curren","\xA2":"cent",$:"dollar","\xA3":"pound","\xA5":"yen","\u20AC":"euro","\xB9":"sup1","\xBD":"half","\u2153":"frac13","\xBC":"frac14","\u2155":"frac15","\u2159":"frac16","\u215B":"frac18","\xB2":"sup2","\u2154":"frac23","\u2156":"frac25","\xB3":"sup3","\xBE":"frac34","\u2157":"frac35","\u215C":"frac38","\u2158":"frac45","\u215A":"frac56","\u215D":"frac58","\u215E":"frac78","\u{1D4B6}":"ascr","\u{1D552}":"aopf","\u{1D51E}":"afr","\u{1D538}":"Aopf","\u{1D504}":"Afr","\u{1D49C}":"Ascr",\u00AA:"ordf",\u00E1:"aacute",\u00C1:"Aacute",\u00E0:"agrave",\u00C0:"Agrave",\u0103:"abreve",\u0102:"Abreve",\u00E2:"acirc",\u00C2:"Acirc",\u00E5:"aring",\u00C5:"angst",\u00E4:"auml",\u00C4:"Auml",\u00E3:"atilde",\u00C3:"Atilde",\u0105:"aogon",\u0104:"Aogon",\u0101:"amacr",\u0100:"Amacr",\u00E6:"aelig",\u00C6:"AElig","\u{1D4B7}":"bscr","\u{1D553}":"bopf","\u{1D51F}":"bfr","\u{1D539}":"Bopf",\u212C:"Bscr","\u{1D505}":"Bfr","\u{1D520}":"cfr","\u{1D4B8}":"cscr","\u{1D554}":"copf",\u212D:"Cfr","\u{1D49E}":"Cscr",\u2102:"Copf",\u0107:"cacute",\u0106:"Cacute",\u0109:"ccirc",\u0108:"Ccirc",\u010D:"ccaron",\u010C:"Ccaron",\u010B:"cdot",\u010A:"Cdot",\u00E7:"ccedil",\u00C7:"Ccedil","\u2105":"incare","\u{1D521}":"dfr","\u2146":"dd","\u{1D555}":"dopf","\u{1D4B9}":"dscr","\u{1D49F}":"Dscr","\u{1D507}":"Dfr","\u2145":"DD","\u{1D53B}":"Dopf",\u010F:"dcaron",\u010E:"Dcaron",\u0111:"dstrok",\u0110:"Dstrok",\u00F0:"eth",\u00D0:"ETH","\u2147":"ee",\u212F:"escr","\u{1D522}":"efr","\u{1D556}":"eopf",\u2130:"Escr","\u{1D508}":"Efr","\u{1D53C}":"Eopf",\u00E9:"eacute",\u00C9:"Eacute",\u00E8:"egrave",\u00C8:"Egrave",\u00EA:"ecirc",\u00CA:"Ecirc",\u011B:"ecaron",\u011A:"Ecaron",\u00EB:"euml",\u00CB:"Euml",\u0117:"edot",\u0116:"Edot",\u0119:"eogon",\u0118:"Eogon",\u0113:"emacr",\u0112:"Emacr","\u{1D523}":"ffr","\u{1D557}":"fopf","\u{1D4BB}":"fscr","\u{1D509}":"Ffr","\u{1D53D}":"Fopf",\u2131:"Fscr",\uFB00:"fflig",\uFB03:"ffilig",\uFB04:"ffllig",\uFB01:"filig",fj:"fjlig",\uFB02:"fllig",\u0192:"fnof",\u210A:"gscr","\u{1D558}":"gopf","\u{1D524}":"gfr","\u{1D4A2}":"Gscr","\u{1D53E}":"Gopf","\u{1D50A}":"Gfr",\u01F5:"gacute",\u011F:"gbreve",\u011E:"Gbreve",\u011D:"gcirc",\u011C:"Gcirc",\u0121:"gdot",\u0120:"Gdot",\u0122:"Gcedil","\u{1D525}":"hfr",\u210E:"planckh","\u{1D4BD}":"hscr","\u{1D559}":"hopf",\u210B:"Hscr",\u210C:"Hfr",\u210D:"Hopf",\u0125:"hcirc",\u0124:"Hcirc",\u210F:"hbar",\u0127:"hstrok",\u0126:"Hstrok","\u{1D55A}":"iopf","\u{1D526}":"ifr","\u{1D4BE}":"iscr","\u2148":"ii","\u{1D540}":"Iopf",\u2110:"Iscr",\u2111:"Im",\u00ED:"iacute",\u00CD:"Iacute",\u00EC:"igrave",\u00CC:"Igrave",\u00EE:"icirc",\u00CE:"Icirc",\u00EF:"iuml",\u00CF:"Iuml",\u0129:"itilde",\u0128:"Itilde",\u0130:"Idot",\u012F:"iogon",\u012E:"Iogon",\u012B:"imacr",\u012A:"Imacr",\u0133:"ijlig",\u0132:"IJlig",\u0131:"imath","\u{1D4BF}":"jscr","\u{1D55B}":"jopf","\u{1D527}":"jfr","\u{1D4A5}":"Jscr","\u{1D50D}":"Jfr","\u{1D541}":"Jopf",\u0135:"jcirc",\u0134:"Jcirc","\u0237":"jmath","\u{1D55C}":"kopf","\u{1D4C0}":"kscr","\u{1D528}":"kfr","\u{1D4A6}":"Kscr","\u{1D542}":"Kopf","\u{1D50E}":"Kfr",\u0137:"kcedil",\u0136:"Kcedil","\u{1D529}":"lfr","\u{1D4C1}":"lscr",\u2113:"ell","\u{1D55D}":"lopf",\u2112:"Lscr","\u{1D50F}":"Lfr","\u{1D543}":"Lopf",\u013A:"lacute",\u0139:"Lacute",\u013E:"lcaron",\u013D:"Lcaron",\u013C:"lcedil",\u013B:"Lcedil",\u0142:"lstrok",\u0141:"Lstrok",\u0140:"lmidot",\u013F:"Lmidot","\u{1D52A}":"mfr","\u{1D55E}":"mopf","\u{1D4C2}":"mscr","\u{1D510}":"Mfr","\u{1D544}":"Mopf",\u2133:"Mscr","\u{1D52B}":"nfr","\u{1D55F}":"nopf","\u{1D4C3}":"nscr",\u2115:"Nopf","\u{1D4A9}":"Nscr","\u{1D511}":"Nfr",\u0144:"nacute",\u0143:"Nacute",\u0148:"ncaron",\u0147:"Ncaron",\u00F1:"ntilde",\u00D1:"Ntilde",\u0146:"ncedil",\u0145:"Ncedil","\u2116":"numero",\u014B:"eng",\u014A:"ENG","\u{1D560}":"oopf","\u{1D52C}":"ofr",\u2134:"oscr","\u{1D4AA}":"Oscr","\u{1D512}":"Ofr","\u{1D546}":"Oopf",\u00BA:"ordm",\u00F3:"oacute",\u00D3:"Oacute",\u00F2:"ograve",\u00D2:"Ograve",\u00F4:"ocirc",\u00D4:"Ocirc",\u00F6:"ouml",\u00D6:"Ouml",\u0151:"odblac",\u0150:"Odblac",\u00F5:"otilde",\u00D5:"Otilde",\u00F8:"oslash",\u00D8:"Oslash",\u014D:"omacr",\u014C:"Omacr",\u0153:"oelig",\u0152:"OElig","\u{1D52D}":"pfr","\u{1D4C5}":"pscr","\u{1D561}":"popf",\u2119:"Popf","\u{1D513}":"Pfr","\u{1D4AB}":"Pscr","\u{1D562}":"qopf","\u{1D52E}":"qfr","\u{1D4C6}":"qscr","\u{1D4AC}":"Qscr","\u{1D514}":"Qfr",\u211A:"Qopf",\u0138:"kgreen","\u{1D52F}":"rfr","\u{1D563}":"ropf","\u{1D4C7}":"rscr",\u211B:"Rscr",\u211C:"Re",\u211D:"Ropf",\u0155:"racute",\u0154:"Racute",\u0159:"rcaron",\u0158:"Rcaron",\u0157:"rcedil",\u0156:"Rcedil","\u{1D564}":"sopf","\u{1D4C8}":"sscr","\u{1D530}":"sfr","\u{1D54A}":"Sopf","\u{1D516}":"Sfr","\u{1D4AE}":"Sscr","\u24C8":"oS",\u015B:"sacute",\u015A:"Sacute",\u015D:"scirc",\u015C:"Scirc",\u0161:"scaron",\u0160:"Scaron",\u015F:"scedil",\u015E:"Scedil",\u00DF:"szlig","\u{1D531}":"tfr","\u{1D4C9}":"tscr","\u{1D565}":"topf","\u{1D4AF}":"Tscr","\u{1D517}":"Tfr","\u{1D54B}":"Topf",\u0165:"tcaron",\u0164:"Tcaron",\u0163:"tcedil",\u0162:"Tcedil","\u2122":"trade",\u0167:"tstrok",\u0166:"Tstrok","\u{1D4CA}":"uscr","\u{1D566}":"uopf","\u{1D532}":"ufr","\u{1D54C}":"Uopf","\u{1D518}":"Ufr","\u{1D4B0}":"Uscr",\u00FA:"uacute",\u00DA:"Uacute",\u00F9:"ugrave",\u00D9:"Ugrave",\u016D:"ubreve",\u016C:"Ubreve",\u00FB:"ucirc",\u00DB:"Ucirc",\u016F:"uring",\u016E:"Uring",\u00FC:"uuml",\u00DC:"Uuml",\u0171:"udblac",\u0170:"Udblac",\u0169:"utilde",\u0168:"Utilde",\u0173:"uogon",\u0172:"Uogon",\u016B:"umacr",\u016A:"Umacr","\u{1D533}":"vfr","\u{1D567}":"vopf","\u{1D4CB}":"vscr","\u{1D519}":"Vfr","\u{1D54D}":"Vopf","\u{1D4B1}":"Vscr","\u{1D568}":"wopf","\u{1D4CC}":"wscr","\u{1D534}":"wfr","\u{1D4B2}":"Wscr","\u{1D54E}":"Wopf","\u{1D51A}":"Wfr",\u0175:"wcirc",\u0174:"Wcirc","\u{1D535}":"xfr","\u{1D4CD}":"xscr","\u{1D569}":"xopf","\u{1D54F}":"Xopf","\u{1D51B}":"Xfr","\u{1D4B3}":"Xscr","\u{1D536}":"yfr","\u{1D4CE}":"yscr","\u{1D56A}":"yopf","\u{1D4B4}":"Yscr","\u{1D51C}":"Yfr","\u{1D550}":"Yopf",\u00FD:"yacute",\u00DD:"Yacute",\u0177:"ycirc",\u0176:"Ycirc",\u00FF:"yuml",\u0178:"Yuml","\u{1D4CF}":"zscr","\u{1D537}":"zfr","\u{1D56B}":"zopf",\u2128:"Zfr",\u2124:"Zopf","\u{1D4B5}":"Zscr",\u017A:"zacute",\u0179:"Zacute",\u017E:"zcaron",\u017D:"Zcaron",\u017C:"zdot",\u017B:"Zdot",\u01B5:"imped",\u00FE:"thorn",\u00DE:"THORN",\u0149:"napos",\u03B1:"alpha",\u0391:"Alpha",\u03B2:"beta",\u0392:"Beta",\u03B3:"gamma",\u0393:"Gamma",\u03B4:"delta",\u0394:"Delta",\u03B5:"epsi","\u03F5":"epsiv",\u0395:"Epsilon",\u03DD:"gammad",\u03DC:"Gammad",\u03B6:"zeta",\u0396:"Zeta",\u03B7:"eta",\u0397:"Eta",\u03B8:"theta",\u03D1:"thetav",\u0398:"Theta",\u03B9:"iota",\u0399:"Iota",\u03BA:"kappa",\u03F0:"kappav",\u039A:"Kappa",\u03BB:"lambda",\u039B:"Lambda",\u03BC:"mu",\u00B5:"micro",\u039C:"Mu",\u03BD:"nu",\u039D:"Nu",\u03BE:"xi",\u039E:"Xi",\u03BF:"omicron",\u039F:"Omicron",\u03C0:"pi",\u03D6:"piv",\u03A0:"Pi",\u03C1:"rho",\u03F1:"rhov",\u03A1:"Rho",\u03C3:"sigma",\u03A3:"Sigma",\u03C2:"sigmaf",\u03C4:"tau",\u03A4:"Tau",\u03C5:"upsi",\u03A5:"Upsilon",\u03D2:"Upsi",\u03C6:"phi",\u03D5:"phiv",\u03A6:"Phi",\u03C7:"chi",\u03A7:"Chi",\u03C8:"psi",\u03A8:"Psi",\u03C9:"omega",\u03A9:"ohm",\u0430:"acy",\u0410:"Acy",\u0431:"bcy",\u0411:"Bcy",\u0432:"vcy",\u0412:"Vcy",\u0433:"gcy",\u0413:"Gcy",\u0453:"gjcy",\u0403:"GJcy",\u0434:"dcy",\u0414:"Dcy",\u0452:"djcy",\u0402:"DJcy",\u0435:"iecy",\u0415:"IEcy",\u0451:"iocy",\u0401:"IOcy",\u0454:"jukcy",\u0404:"Jukcy",\u0436:"zhcy",\u0416:"ZHcy",\u0437:"zcy",\u0417:"Zcy",\u0455:"dscy",\u0405:"DScy",\u0438:"icy",\u0418:"Icy",\u0456:"iukcy",\u0406:"Iukcy",\u0457:"yicy",\u0407:"YIcy",\u0439:"jcy",\u0419:"Jcy",\u0458:"jsercy",\u0408:"Jsercy",\u043A:"kcy",\u041A:"Kcy",\u045C:"kjcy",\u040C:"KJcy",\u043B:"lcy",\u041B:"Lcy",\u0459:"ljcy",\u0409:"LJcy",\u043C:"mcy",\u041C:"Mcy",\u043D:"ncy",\u041D:"Ncy",\u045A:"njcy",\u040A:"NJcy",\u043E:"ocy",\u041E:"Ocy",\u043F:"pcy",\u041F:"Pcy",\u0440:"rcy",\u0420:"Rcy",\u0441:"scy",\u0421:"Scy",\u0442:"tcy",\u0422:"Tcy",\u045B:"tshcy",\u040B:"TSHcy",\u0443:"ucy",\u0423:"Ucy",\u045E:"ubrcy",\u040E:"Ubrcy",\u0444:"fcy",\u0424:"Fcy",\u0445:"khcy",\u0425:"KHcy",\u0446:"tscy",\u0426:"TScy",\u0447:"chcy",\u0427:"CHcy",\u045F:"dzcy",\u040F:"DZcy",\u0448:"shcy",\u0428:"SHcy",\u0449:"shchcy",\u0429:"SHCHcy",\u044A:"hardcy",\u042A:"HARDcy",\u044B:"ycy",\u042B:"Ycy",\u044C:"softcy",\u042C:"SOFTcy",\u044D:"ecy",\u042D:"Ecy",\u044E:"yucy",\u042E:"YUcy",\u044F:"yacy",\u042F:"YAcy",\u2135:"aleph",\u2136:"beth",\u2137:"gimel",\u2138:"daleth"},l=/["&'<>`]/g,d={'"':""","&":"&","'":"'","<":"<",">":">","`":"`"},p=/&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/,m=/[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,f=/&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g,h={aacute:"\xE1",Aacute:"\xC1",abreve:"\u0103",Abreve:"\u0102",ac:"\u223E",acd:"\u223F",acE:"\u223E\u0333",acirc:"\xE2",Acirc:"\xC2",acute:"\xB4",acy:"\u0430",Acy:"\u0410",aelig:"\xE6",AElig:"\xC6",af:"\u2061",afr:"\u{1D51E}",Afr:"\u{1D504}",agrave:"\xE0",Agrave:"\xC0",alefsym:"\u2135",aleph:"\u2135",alpha:"\u03B1",Alpha:"\u0391",amacr:"\u0101",Amacr:"\u0100",amalg:"\u2A3F",amp:"&",AMP:"&",and:"\u2227",And:"\u2A53",andand:"\u2A55",andd:"\u2A5C",andslope:"\u2A58",andv:"\u2A5A",ang:"\u2220",ange:"\u29A4",angle:"\u2220",angmsd:"\u2221",angmsdaa:"\u29A8",angmsdab:"\u29A9",angmsdac:"\u29AA",angmsdad:"\u29AB",angmsdae:"\u29AC",angmsdaf:"\u29AD",angmsdag:"\u29AE",angmsdah:"\u29AF",angrt:"\u221F",angrtvb:"\u22BE",angrtvbd:"\u299D",angsph:"\u2222",angst:"\xC5",angzarr:"\u237C",aogon:"\u0105",Aogon:"\u0104",aopf:"\u{1D552}",Aopf:"\u{1D538}",ap:"\u2248",apacir:"\u2A6F",ape:"\u224A",apE:"\u2A70",apid:"\u224B",apos:"'",ApplyFunction:"\u2061",approx:"\u2248",approxeq:"\u224A",aring:"\xE5",Aring:"\xC5",ascr:"\u{1D4B6}",Ascr:"\u{1D49C}",Assign:"\u2254",ast:"*",asymp:"\u2248",asympeq:"\u224D",atilde:"\xE3",Atilde:"\xC3",auml:"\xE4",Auml:"\xC4",awconint:"\u2233",awint:"\u2A11",backcong:"\u224C",backepsilon:"\u03F6",backprime:"\u2035",backsim:"\u223D",backsimeq:"\u22CD",Backslash:"\u2216",Barv:"\u2AE7",barvee:"\u22BD",barwed:"\u2305",Barwed:"\u2306",barwedge:"\u2305",bbrk:"\u23B5",bbrktbrk:"\u23B6",bcong:"\u224C",bcy:"\u0431",Bcy:"\u0411",bdquo:"\u201E",becaus:"\u2235",because:"\u2235",Because:"\u2235",bemptyv:"\u29B0",bepsi:"\u03F6",bernou:"\u212C",Bernoullis:"\u212C",beta:"\u03B2",Beta:"\u0392",beth:"\u2136",between:"\u226C",bfr:"\u{1D51F}",Bfr:"\u{1D505}",bigcap:"\u22C2",bigcirc:"\u25EF",bigcup:"\u22C3",bigodot:"\u2A00",bigoplus:"\u2A01",bigotimes:"\u2A02",bigsqcup:"\u2A06",bigstar:"\u2605",bigtriangledown:"\u25BD",bigtriangleup:"\u25B3",biguplus:"\u2A04",bigvee:"\u22C1",bigwedge:"\u22C0",bkarow:"\u290D",blacklozenge:"\u29EB",blacksquare:"\u25AA",blacktriangle:"\u25B4",blacktriangledown:"\u25BE",blacktriangleleft:"\u25C2",blacktriangleright:"\u25B8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20E5",bnequiv:"\u2261\u20E5",bnot:"\u2310",bNot:"\u2AED",bopf:"\u{1D553}",Bopf:"\u{1D539}",bot:"\u22A5",bottom:"\u22A5",bowtie:"\u22C8",boxbox:"\u29C9",boxdl:"\u2510",boxdL:"\u2555",boxDl:"\u2556",boxDL:"\u2557",boxdr:"\u250C",boxdR:"\u2552",boxDr:"\u2553",boxDR:"\u2554",boxh:"\u2500",boxH:"\u2550",boxhd:"\u252C",boxhD:"\u2565",boxHd:"\u2564",boxHD:"\u2566",boxhu:"\u2534",boxhU:"\u2568",boxHu:"\u2567",boxHU:"\u2569",boxminus:"\u229F",boxplus:"\u229E",boxtimes:"\u22A0",boxul:"\u2518",boxuL:"\u255B",boxUl:"\u255C",boxUL:"\u255D",boxur:"\u2514",boxuR:"\u2558",boxUr:"\u2559",boxUR:"\u255A",boxv:"\u2502",boxV:"\u2551",boxvh:"\u253C",boxvH:"\u256A",boxVh:"\u256B",boxVH:"\u256C",boxvl:"\u2524",boxvL:"\u2561",boxVl:"\u2562",boxVL:"\u2563",boxvr:"\u251C",boxvR:"\u255E",boxVr:"\u255F",boxVR:"\u2560",bprime:"\u2035",breve:"\u02D8",Breve:"\u02D8",brvbar:"\xA6",bscr:"\u{1D4B7}",Bscr:"\u212C",bsemi:"\u204F",bsim:"\u223D",bsime:"\u22CD",bsol:"\\",bsolb:"\u29C5",bsolhsub:"\u27C8",bull:"\u2022",bullet:"\u2022",bump:"\u224E",bumpe:"\u224F",bumpE:"\u2AAE",bumpeq:"\u224F",Bumpeq:"\u224E",cacute:"\u0107",Cacute:"\u0106",cap:"\u2229",Cap:"\u22D2",capand:"\u2A44",capbrcup:"\u2A49",capcap:"\u2A4B",capcup:"\u2A47",capdot:"\u2A40",CapitalDifferentialD:"\u2145",caps:"\u2229\uFE00",caret:"\u2041",caron:"\u02C7",Cayleys:"\u212D",ccaps:"\u2A4D",ccaron:"\u010D",Ccaron:"\u010C",ccedil:"\xE7",Ccedil:"\xC7",ccirc:"\u0109",Ccirc:"\u0108",Cconint:"\u2230",ccups:"\u2A4C",ccupssm:"\u2A50",cdot:"\u010B",Cdot:"\u010A",cedil:"\xB8",Cedilla:"\xB8",cemptyv:"\u29B2",cent:"\xA2",centerdot:"\xB7",CenterDot:"\xB7",cfr:"\u{1D520}",Cfr:"\u212D",chcy:"\u0447",CHcy:"\u0427",check:"\u2713",checkmark:"\u2713",chi:"\u03C7",Chi:"\u03A7",cir:"\u25CB",circ:"\u02C6",circeq:"\u2257",circlearrowleft:"\u21BA",circlearrowright:"\u21BB",circledast:"\u229B",circledcirc:"\u229A",circleddash:"\u229D",CircleDot:"\u2299",circledR:"\xAE",circledS:"\u24C8",CircleMinus:"\u2296",CirclePlus:"\u2295",CircleTimes:"\u2297",cire:"\u2257",cirE:"\u29C3",cirfnint:"\u2A10",cirmid:"\u2AEF",cirscir:"\u29C2",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201D",CloseCurlyQuote:"\u2019",clubs:"\u2663",clubsuit:"\u2663",colon:":",Colon:"\u2237",colone:"\u2254",Colone:"\u2A74",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2A6D",Congruent:"\u2261",conint:"\u222E",Conint:"\u222F",ContourIntegral:"\u222E",copf:"\u{1D554}",Copf:"\u2102",coprod:"\u2210",Coproduct:"\u2210",copy:"\xA9",COPY:"\xA9",copysr:"\u2117",CounterClockwiseContourIntegral:"\u2233",crarr:"\u21B5",cross:"\u2717",Cross:"\u2A2F",cscr:"\u{1D4B8}",Cscr:"\u{1D49E}",csub:"\u2ACF",csube:"\u2AD1",csup:"\u2AD0",csupe:"\u2AD2",ctdot:"\u22EF",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22DE",cuesc:"\u22DF",cularr:"\u21B6",cularrp:"\u293D",cup:"\u222A",Cup:"\u22D3",cupbrcap:"\u2A48",cupcap:"\u2A46",CupCap:"\u224D",cupcup:"\u2A4A",cupdot:"\u228D",cupor:"\u2A45",cups:"\u222A\uFE00",curarr:"\u21B7",curarrm:"\u293C",curlyeqprec:"\u22DE",curlyeqsucc:"\u22DF",curlyvee:"\u22CE",curlywedge:"\u22CF",curren:"\xA4",curvearrowleft:"\u21B6",curvearrowright:"\u21B7",cuvee:"\u22CE",cuwed:"\u22CF",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232D",dagger:"\u2020",Dagger:"\u2021",daleth:"\u2138",darr:"\u2193",dArr:"\u21D3",Darr:"\u21A1",dash:"\u2010",dashv:"\u22A3",Dashv:"\u2AE4",dbkarow:"\u290F",dblac:"\u02DD",dcaron:"\u010F",Dcaron:"\u010E",dcy:"\u0434",Dcy:"\u0414",dd:"\u2146",DD:"\u2145",ddagger:"\u2021",ddarr:"\u21CA",DDotrahd:"\u2911",ddotseq:"\u2A77",deg:"\xB0",Del:"\u2207",delta:"\u03B4",Delta:"\u0394",demptyv:"\u29B1",dfisht:"\u297F",dfr:"\u{1D521}",Dfr:"\u{1D507}",dHar:"\u2965",dharl:"\u21C3",dharr:"\u21C2",DiacriticalAcute:"\xB4",DiacriticalDot:"\u02D9",DiacriticalDoubleAcute:"\u02DD",DiacriticalGrave:"`",DiacriticalTilde:"\u02DC",diam:"\u22C4",diamond:"\u22C4",Diamond:"\u22C4",diamondsuit:"\u2666",diams:"\u2666",die:"\xA8",DifferentialD:"\u2146",digamma:"\u03DD",disin:"\u22F2",div:"\xF7",divide:"\xF7",divideontimes:"\u22C7",divonx:"\u22C7",djcy:"\u0452",DJcy:"\u0402",dlcorn:"\u231E",dlcrop:"\u230D",dollar:"$",dopf:"\u{1D555}",Dopf:"\u{1D53B}",dot:"\u02D9",Dot:"\xA8",DotDot:"\u20DC",doteq:"\u2250",doteqdot:"\u2251",DotEqual:"\u2250",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22A1",doublebarwedge:"\u2306",DoubleContourIntegral:"\u222F",DoubleDot:"\xA8",DoubleDownArrow:"\u21D3",DoubleLeftArrow:"\u21D0",DoubleLeftRightArrow:"\u21D4",DoubleLeftTee:"\u2AE4",DoubleLongLeftArrow:"\u27F8",DoubleLongLeftRightArrow:"\u27FA",DoubleLongRightArrow:"\u27F9",DoubleRightArrow:"\u21D2",DoubleRightTee:"\u22A8",DoubleUpArrow:"\u21D1",DoubleUpDownArrow:"\u21D5",DoubleVerticalBar:"\u2225",downarrow:"\u2193",Downarrow:"\u21D3",DownArrow:"\u2193",DownArrowBar:"\u2913",DownArrowUpArrow:"\u21F5",DownBreve:"\u0311",downdownarrows:"\u21CA",downharpoonleft:"\u21C3",downharpoonright:"\u21C2",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295E",DownLeftVector:"\u21BD",DownLeftVectorBar:"\u2956",DownRightTeeVector:"\u295F",DownRightVector:"\u21C1",DownRightVectorBar:"\u2957",DownTee:"\u22A4",DownTeeArrow:"\u21A7",drbkarow:"\u2910",drcorn:"\u231F",drcrop:"\u230C",dscr:"\u{1D4B9}",Dscr:"\u{1D49F}",dscy:"\u0455",DScy:"\u0405",dsol:"\u29F6",dstrok:"\u0111",Dstrok:"\u0110",dtdot:"\u22F1",dtri:"\u25BF",dtrif:"\u25BE",duarr:"\u21F5",duhar:"\u296F",dwangle:"\u29A6",dzcy:"\u045F",DZcy:"\u040F",dzigrarr:"\u27FF",eacute:"\xE9",Eacute:"\xC9",easter:"\u2A6E",ecaron:"\u011B",Ecaron:"\u011A",ecir:"\u2256",ecirc:"\xEA",Ecirc:"\xCA",ecolon:"\u2255",ecy:"\u044D",Ecy:"\u042D",eDDot:"\u2A77",edot:"\u0117",eDot:"\u2251",Edot:"\u0116",ee:"\u2147",efDot:"\u2252",efr:"\u{1D522}",Efr:"\u{1D508}",eg:"\u2A9A",egrave:"\xE8",Egrave:"\xC8",egs:"\u2A96",egsdot:"\u2A98",el:"\u2A99",Element:"\u2208",elinters:"\u23E7",ell:"\u2113",els:"\u2A95",elsdot:"\u2A97",emacr:"\u0113",Emacr:"\u0112",empty:"\u2205",emptyset:"\u2205",EmptySmallSquare:"\u25FB",emptyv:"\u2205",EmptyVerySmallSquare:"\u25AB",emsp:"\u2003",emsp13:"\u2004",emsp14:"\u2005",eng:"\u014B",ENG:"\u014A",ensp:"\u2002",eogon:"\u0119",Eogon:"\u0118",eopf:"\u{1D556}",Eopf:"\u{1D53C}",epar:"\u22D5",eparsl:"\u29E3",eplus:"\u2A71",epsi:"\u03B5",epsilon:"\u03B5",Epsilon:"\u0395",epsiv:"\u03F5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2A96",eqslantless:"\u2A95",Equal:"\u2A75",equals:"=",EqualTilde:"\u2242",equest:"\u225F",Equilibrium:"\u21CC",equiv:"\u2261",equivDD:"\u2A78",eqvparsl:"\u29E5",erarr:"\u2971",erDot:"\u2253",escr:"\u212F",Escr:"\u2130",esdot:"\u2250",esim:"\u2242",Esim:"\u2A73",eta:"\u03B7",Eta:"\u0397",eth:"\xF0",ETH:"\xD0",euml:"\xEB",Euml:"\xCB",euro:"\u20AC",excl:"!",exist:"\u2203",Exists:"\u2203",expectation:"\u2130",exponentiale:"\u2147",ExponentialE:"\u2147",fallingdotseq:"\u2252",fcy:"\u0444",Fcy:"\u0424",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",ffr:"\u{1D523}",Ffr:"\u{1D509}",filig:"\uFB01",FilledSmallSquare:"\u25FC",FilledVerySmallSquare:"\u25AA",fjlig:"fj",flat:"\u266D",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",fopf:"\u{1D557}",Fopf:"\u{1D53D}",forall:"\u2200",ForAll:"\u2200",fork:"\u22D4",forkv:"\u2AD9",Fouriertrf:"\u2131",fpartint:"\u2A0D",frac12:"\xBD",frac13:"\u2153",frac14:"\xBC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\xBE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044",frown:"\u2322",fscr:"\u{1D4BB}",Fscr:"\u2131",gacute:"\u01F5",gamma:"\u03B3",Gamma:"\u0393",gammad:"\u03DD",Gammad:"\u03DC",gap:"\u2A86",gbreve:"\u011F",Gbreve:"\u011E",Gcedil:"\u0122",gcirc:"\u011D",Gcirc:"\u011C",gcy:"\u0433",Gcy:"\u0413",gdot:"\u0121",Gdot:"\u0120",ge:"\u2265",gE:"\u2267",gel:"\u22DB",gEl:"\u2A8C",geq:"\u2265",geqq:"\u2267",geqslant:"\u2A7E",ges:"\u2A7E",gescc:"\u2AA9",gesdot:"\u2A80",gesdoto:"\u2A82",gesdotol:"\u2A84",gesl:"\u22DB\uFE00",gesles:"\u2A94",gfr:"\u{1D524}",Gfr:"\u{1D50A}",gg:"\u226B",Gg:"\u22D9",ggg:"\u22D9",gimel:"\u2137",gjcy:"\u0453",GJcy:"\u0403",gl:"\u2277",gla:"\u2AA5",glE:"\u2A92",glj:"\u2AA4",gnap:"\u2A8A",gnapprox:"\u2A8A",gne:"\u2A88",gnE:"\u2269",gneq:"\u2A88",gneqq:"\u2269",gnsim:"\u22E7",gopf:"\u{1D558}",Gopf:"\u{1D53E}",grave:"`",GreaterEqual:"\u2265",GreaterEqualLess:"\u22DB",GreaterFullEqual:"\u2267",GreaterGreater:"\u2AA2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2A7E",GreaterTilde:"\u2273",gscr:"\u210A",Gscr:"\u{1D4A2}",gsim:"\u2273",gsime:"\u2A8E",gsiml:"\u2A90",gt:">",Gt:"\u226B",GT:">",gtcc:"\u2AA7",gtcir:"\u2A7A",gtdot:"\u22D7",gtlPar:"\u2995",gtquest:"\u2A7C",gtrapprox:"\u2A86",gtrarr:"\u2978",gtrdot:"\u22D7",gtreqless:"\u22DB",gtreqqless:"\u2A8C",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\uFE00",gvnE:"\u2269\uFE00",Hacek:"\u02C7",hairsp:"\u200A",half:"\xBD",hamilt:"\u210B",hardcy:"\u044A",HARDcy:"\u042A",harr:"\u2194",hArr:"\u21D4",harrcir:"\u2948",harrw:"\u21AD",Hat:"^",hbar:"\u210F",hcirc:"\u0125",Hcirc:"\u0124",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22B9",hfr:"\u{1D525}",Hfr:"\u210C",HilbertSpace:"\u210B",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21FF",homtht:"\u223B",hookleftarrow:"\u21A9",hookrightarrow:"\u21AA",hopf:"\u{1D559}",Hopf:"\u210D",horbar:"\u2015",HorizontalLine:"\u2500",hscr:"\u{1D4BD}",Hscr:"\u210B",hslash:"\u210F",hstrok:"\u0127",Hstrok:"\u0126",HumpDownHump:"\u224E",HumpEqual:"\u224F",hybull:"\u2043",hyphen:"\u2010",iacute:"\xED",Iacute:"\xCD",ic:"\u2063",icirc:"\xEE",Icirc:"\xCE",icy:"\u0438",Icy:"\u0418",Idot:"\u0130",iecy:"\u0435",IEcy:"\u0415",iexcl:"\xA1",iff:"\u21D4",ifr:"\u{1D526}",Ifr:"\u2111",igrave:"\xEC",Igrave:"\xCC",ii:"\u2148",iiiint:"\u2A0C",iiint:"\u222D",iinfin:"\u29DC",iiota:"\u2129",ijlig:"\u0133",IJlig:"\u0132",Im:"\u2111",imacr:"\u012B",Imacr:"\u012A",image:"\u2111",ImaginaryI:"\u2148",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",imof:"\u22B7",imped:"\u01B5",Implies:"\u21D2",in:"\u2208",incare:"\u2105",infin:"\u221E",infintie:"\u29DD",inodot:"\u0131",int:"\u222B",Int:"\u222C",intcal:"\u22BA",integers:"\u2124",Integral:"\u222B",intercal:"\u22BA",Intersection:"\u22C2",intlarhk:"\u2A17",intprod:"\u2A3C",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",iocy:"\u0451",IOcy:"\u0401",iogon:"\u012F",Iogon:"\u012E",iopf:"\u{1D55A}",Iopf:"\u{1D540}",iota:"\u03B9",Iota:"\u0399",iprod:"\u2A3C",iquest:"\xBF",iscr:"\u{1D4BE}",Iscr:"\u2110",isin:"\u2208",isindot:"\u22F5",isinE:"\u22F9",isins:"\u22F4",isinsv:"\u22F3",isinv:"\u2208",it:"\u2062",itilde:"\u0129",Itilde:"\u0128",iukcy:"\u0456",Iukcy:"\u0406",iuml:"\xEF",Iuml:"\xCF",jcirc:"\u0135",Jcirc:"\u0134",jcy:"\u0439",Jcy:"\u0419",jfr:"\u{1D527}",Jfr:"\u{1D50D}",jmath:"\u0237",jopf:"\u{1D55B}",Jopf:"\u{1D541}",jscr:"\u{1D4BF}",Jscr:"\u{1D4A5}",jsercy:"\u0458",Jsercy:"\u0408",jukcy:"\u0454",Jukcy:"\u0404",kappa:"\u03BA",Kappa:"\u039A",kappav:"\u03F0",kcedil:"\u0137",Kcedil:"\u0136",kcy:"\u043A",Kcy:"\u041A",kfr:"\u{1D528}",Kfr:"\u{1D50E}",kgreen:"\u0138",khcy:"\u0445",KHcy:"\u0425",kjcy:"\u045C",KJcy:"\u040C",kopf:"\u{1D55C}",Kopf:"\u{1D542}",kscr:"\u{1D4C0}",Kscr:"\u{1D4A6}",lAarr:"\u21DA",lacute:"\u013A",Lacute:"\u0139",laemptyv:"\u29B4",lagran:"\u2112",lambda:"\u03BB",Lambda:"\u039B",lang:"\u27E8",Lang:"\u27EA",langd:"\u2991",langle:"\u27E8",lap:"\u2A85",Laplacetrf:"\u2112",laquo:"\xAB",larr:"\u2190",lArr:"\u21D0",Larr:"\u219E",larrb:"\u21E4",larrbfs:"\u291F",larrfs:"\u291D",larrhk:"\u21A9",larrlp:"\u21AB",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21A2",lat:"\u2AAB",latail:"\u2919",lAtail:"\u291B",late:"\u2AAD",lates:"\u2AAD\uFE00",lbarr:"\u290C",lBarr:"\u290E",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298B",lbrksld:"\u298F",lbrkslu:"\u298D",lcaron:"\u013E",Lcaron:"\u013D",lcedil:"\u013C",Lcedil:"\u013B",lceil:"\u2308",lcub:"{",lcy:"\u043B",Lcy:"\u041B",ldca:"\u2936",ldquo:"\u201C",ldquor:"\u201E",ldrdhar:"\u2967",ldrushar:"\u294B",ldsh:"\u21B2",le:"\u2264",lE:"\u2266",LeftAngleBracket:"\u27E8",leftarrow:"\u2190",Leftarrow:"\u21D0",LeftArrow:"\u2190",LeftArrowBar:"\u21E4",LeftArrowRightArrow:"\u21C6",leftarrowtail:"\u21A2",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27E6",LeftDownTeeVector:"\u2961",LeftDownVector:"\u21C3",LeftDownVectorBar:"\u2959",LeftFloor:"\u230A",leftharpoondown:"\u21BD",leftharpoonup:"\u21BC",leftleftarrows:"\u21C7",leftrightarrow:"\u2194",Leftrightarrow:"\u21D4",LeftRightArrow:"\u2194",leftrightarrows:"\u21C6",leftrightharpoons:"\u21CB",leftrightsquigarrow:"\u21AD",LeftRightVector:"\u294E",LeftTee:"\u22A3",LeftTeeArrow:"\u21A4",LeftTeeVector:"\u295A",leftthreetimes:"\u22CB",LeftTriangle:"\u22B2",LeftTriangleBar:"\u29CF",LeftTriangleEqual:"\u22B4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVector:"\u21BF",LeftUpVectorBar:"\u2958",LeftVector:"\u21BC",LeftVectorBar:"\u2952",leg:"\u22DA",lEg:"\u2A8B",leq:"\u2264",leqq:"\u2266",leqslant:"\u2A7D",les:"\u2A7D",lescc:"\u2AA8",lesdot:"\u2A7F",lesdoto:"\u2A81",lesdotor:"\u2A83",lesg:"\u22DA\uFE00",lesges:"\u2A93",lessapprox:"\u2A85",lessdot:"\u22D6",lesseqgtr:"\u22DA",lesseqqgtr:"\u2A8B",LessEqualGreater:"\u22DA",LessFullEqual:"\u2266",LessGreater:"\u2276",lessgtr:"\u2276",LessLess:"\u2AA1",lesssim:"\u2272",LessSlantEqual:"\u2A7D",LessTilde:"\u2272",lfisht:"\u297C",lfloor:"\u230A",lfr:"\u{1D529}",Lfr:"\u{1D50F}",lg:"\u2276",lgE:"\u2A91",lHar:"\u2962",lhard:"\u21BD",lharu:"\u21BC",lharul:"\u296A",lhblk:"\u2584",ljcy:"\u0459",LJcy:"\u0409",ll:"\u226A",Ll:"\u22D8",llarr:"\u21C7",llcorner:"\u231E",Lleftarrow:"\u21DA",llhard:"\u296B",lltri:"\u25FA",lmidot:"\u0140",Lmidot:"\u013F",lmoust:"\u23B0",lmoustache:"\u23B0",lnap:"\u2A89",lnapprox:"\u2A89",lne:"\u2A87",lnE:"\u2268",lneq:"\u2A87",lneqq:"\u2268",lnsim:"\u22E6",loang:"\u27EC",loarr:"\u21FD",lobrk:"\u27E6",longleftarrow:"\u27F5",Longleftarrow:"\u27F8",LongLeftArrow:"\u27F5",longleftrightarrow:"\u27F7",Longleftrightarrow:"\u27FA",LongLeftRightArrow:"\u27F7",longmapsto:"\u27FC",longrightarrow:"\u27F6",Longrightarrow:"\u27F9",LongRightArrow:"\u27F6",looparrowleft:"\u21AB",looparrowright:"\u21AC",lopar:"\u2985",lopf:"\u{1D55D}",Lopf:"\u{1D543}",loplus:"\u2A2D",lotimes:"\u2A34",lowast:"\u2217",lowbar:"_",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",loz:"\u25CA",lozenge:"\u25CA",lozf:"\u29EB",lpar:"(",lparlt:"\u2993",lrarr:"\u21C6",lrcorner:"\u231F",lrhar:"\u21CB",lrhard:"\u296D",lrm:"\u200E",lrtri:"\u22BF",lsaquo:"\u2039",lscr:"\u{1D4C1}",Lscr:"\u2112",lsh:"\u21B0",Lsh:"\u21B0",lsim:"\u2272",lsime:"\u2A8D",lsimg:"\u2A8F",lsqb:"[",lsquo:"\u2018",lsquor:"\u201A",lstrok:"\u0142",Lstrok:"\u0141",lt:"<",Lt:"\u226A",LT:"<",ltcc:"\u2AA6",ltcir:"\u2A79",ltdot:"\u22D6",lthree:"\u22CB",ltimes:"\u22C9",ltlarr:"\u2976",ltquest:"\u2A7B",ltri:"\u25C3",ltrie:"\u22B4",ltrif:"\u25C2",ltrPar:"\u2996",lurdshar:"\u294A",luruhar:"\u2966",lvertneqq:"\u2268\uFE00",lvnE:"\u2268\uFE00",macr:"\xAF",male:"\u2642",malt:"\u2720",maltese:"\u2720",map:"\u21A6",Map:"\u2905",mapsto:"\u21A6",mapstodown:"\u21A7",mapstoleft:"\u21A4",mapstoup:"\u21A5",marker:"\u25AE",mcomma:"\u2A29",mcy:"\u043C",Mcy:"\u041C",mdash:"\u2014",mDDot:"\u223A",measuredangle:"\u2221",MediumSpace:"\u205F",Mellintrf:"\u2133",mfr:"\u{1D52A}",Mfr:"\u{1D510}",mho:"\u2127",micro:"\xB5",mid:"\u2223",midast:"*",midcir:"\u2AF0",middot:"\xB7",minus:"\u2212",minusb:"\u229F",minusd:"\u2238",minusdu:"\u2A2A",MinusPlus:"\u2213",mlcp:"\u2ADB",mldr:"\u2026",mnplus:"\u2213",models:"\u22A7",mopf:"\u{1D55E}",Mopf:"\u{1D544}",mp:"\u2213",mscr:"\u{1D4C2}",Mscr:"\u2133",mstpos:"\u223E",mu:"\u03BC",Mu:"\u039C",multimap:"\u22B8",mumap:"\u22B8",nabla:"\u2207",nacute:"\u0144",Nacute:"\u0143",nang:"\u2220\u20D2",nap:"\u2249",napE:"\u2A70\u0338",napid:"\u224B\u0338",napos:"\u0149",napprox:"\u2249",natur:"\u266E",natural:"\u266E",naturals:"\u2115",nbsp:"\xA0",nbump:"\u224E\u0338",nbumpe:"\u224F\u0338",ncap:"\u2A43",ncaron:"\u0148",Ncaron:"\u0147",ncedil:"\u0146",Ncedil:"\u0145",ncong:"\u2247",ncongdot:"\u2A6D\u0338",ncup:"\u2A42",ncy:"\u043D",Ncy:"\u041D",ndash:"\u2013",ne:"\u2260",nearhk:"\u2924",nearr:"\u2197",neArr:"\u21D7",nearrow:"\u2197",nedot:"\u2250\u0338",NegativeMediumSpace:"\u200B",NegativeThickSpace:"\u200B",NegativeThinSpace:"\u200B",NegativeVeryThinSpace:"\u200B",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",NestedGreaterGreater:"\u226B",NestedLessLess:"\u226A",NewLine:`
|
|
43
|
-
`,nexist:"\u2204",nexists:"\u2204",nfr:"\u{1D52B}",Nfr:"\u{1D511}",nge:"\u2271",ngE:"\u2267\u0338",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2A7E\u0338",nges:"\u2A7E\u0338",nGg:"\u22D9\u0338",ngsim:"\u2275",ngt:"\u226F",nGt:"\u226B\u20D2",ngtr:"\u226F",nGtv:"\u226B\u0338",nharr:"\u21AE",nhArr:"\u21CE",nhpar:"\u2AF2",ni:"\u220B",nis:"\u22FC",nisd:"\u22FA",niv:"\u220B",njcy:"\u045A",NJcy:"\u040A",nlarr:"\u219A",nlArr:"\u21CD",nldr:"\u2025",nle:"\u2270",nlE:"\u2266\u0338",nleftarrow:"\u219A",nLeftarrow:"\u21CD",nleftrightarrow:"\u21AE",nLeftrightarrow:"\u21CE",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2A7D\u0338",nles:"\u2A7D\u0338",nless:"\u226E",nLl:"\u22D8\u0338",nlsim:"\u2274",nlt:"\u226E",nLt:"\u226A\u20D2",nltri:"\u22EA",nltrie:"\u22EC",nLtv:"\u226A\u0338",nmid:"\u2224",NoBreak:"\u2060",NonBreakingSpace:"\xA0",nopf:"\u{1D55F}",Nopf:"\u2115",not:"\xAC",Not:"\u2AEC",NotCongruent:"\u2262",NotCupCap:"\u226D",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226F",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226B\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2A7E\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224E\u0338",NotHumpEqual:"\u224F\u0338",notin:"\u2209",notindot:"\u22F5\u0338",notinE:"\u22F9\u0338",notinva:"\u2209",notinvb:"\u22F7",notinvc:"\u22F6",NotLeftTriangle:"\u22EA",NotLeftTriangleBar:"\u29CF\u0338",NotLeftTriangleEqual:"\u22EC",NotLess:"\u226E",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226A\u0338",NotLessSlantEqual:"\u2A7D\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2AA2\u0338",NotNestedLessLess:"\u2AA1\u0338",notni:"\u220C",notniva:"\u220C",notnivb:"\u22FE",notnivc:"\u22FD",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2AAF\u0338",NotPrecedesSlantEqual:"\u22E0",NotReverseElement:"\u220C",NotRightTriangle:"\u22EB",NotRightTriangleBar:"\u29D0\u0338",NotRightTriangleEqual:"\u22ED",NotSquareSubset:"\u228F\u0338",NotSquareSubsetEqual:"\u22E2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22E3",NotSubset:"\u2282\u20D2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2AB0\u0338",NotSucceedsSlantEqual:"\u22E1",NotSucceedsTilde:"\u227F\u0338",NotSuperset:"\u2283\u20D2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",npar:"\u2226",nparallel:"\u2226",nparsl:"\u2AFD\u20E5",npart:"\u2202\u0338",npolint:"\u2A14",npr:"\u2280",nprcue:"\u22E0",npre:"\u2AAF\u0338",nprec:"\u2280",npreceq:"\u2AAF\u0338",nrarr:"\u219B",nrArr:"\u21CF",nrarrc:"\u2933\u0338",nrarrw:"\u219D\u0338",nrightarrow:"\u219B",nRightarrow:"\u21CF",nrtri:"\u22EB",nrtrie:"\u22ED",nsc:"\u2281",nsccue:"\u22E1",nsce:"\u2AB0\u0338",nscr:"\u{1D4C3}",Nscr:"\u{1D4A9}",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22E2",nsqsupe:"\u22E3",nsub:"\u2284",nsube:"\u2288",nsubE:"\u2AC5\u0338",nsubset:"\u2282\u20D2",nsubseteq:"\u2288",nsubseteqq:"\u2AC5\u0338",nsucc:"\u2281",nsucceq:"\u2AB0\u0338",nsup:"\u2285",nsupe:"\u2289",nsupE:"\u2AC6\u0338",nsupset:"\u2283\u20D2",nsupseteq:"\u2289",nsupseteqq:"\u2AC6\u0338",ntgl:"\u2279",ntilde:"\xF1",Ntilde:"\xD1",ntlg:"\u2278",ntriangleleft:"\u22EA",ntrianglelefteq:"\u22EC",ntriangleright:"\u22EB",ntrianglerighteq:"\u22ED",nu:"\u03BD",Nu:"\u039D",num:"#",numero:"\u2116",numsp:"\u2007",nvap:"\u224D\u20D2",nvdash:"\u22AC",nvDash:"\u22AD",nVdash:"\u22AE",nVDash:"\u22AF",nvge:"\u2265\u20D2",nvgt:">\u20D2",nvHarr:"\u2904",nvinfin:"\u29DE",nvlArr:"\u2902",nvle:"\u2264\u20D2",nvlt:"<\u20D2",nvltrie:"\u22B4\u20D2",nvrArr:"\u2903",nvrtrie:"\u22B5\u20D2",nvsim:"\u223C\u20D2",nwarhk:"\u2923",nwarr:"\u2196",nwArr:"\u21D6",nwarrow:"\u2196",nwnear:"\u2927",oacute:"\xF3",Oacute:"\xD3",oast:"\u229B",ocir:"\u229A",ocirc:"\xF4",Ocirc:"\xD4",ocy:"\u043E",Ocy:"\u041E",odash:"\u229D",odblac:"\u0151",Odblac:"\u0150",odiv:"\u2A38",odot:"\u2299",odsold:"\u29BC",oelig:"\u0153",OElig:"\u0152",ofcir:"\u29BF",ofr:"\u{1D52C}",Ofr:"\u{1D512}",ogon:"\u02DB",ograve:"\xF2",Ograve:"\xD2",ogt:"\u29C1",ohbar:"\u29B5",ohm:"\u03A9",oint:"\u222E",olarr:"\u21BA",olcir:"\u29BE",olcross:"\u29BB",oline:"\u203E",olt:"\u29C0",omacr:"\u014D",Omacr:"\u014C",omega:"\u03C9",Omega:"\u03A9",omicron:"\u03BF",Omicron:"\u039F",omid:"\u29B6",ominus:"\u2296",oopf:"\u{1D560}",Oopf:"\u{1D546}",opar:"\u29B7",OpenCurlyDoubleQuote:"\u201C",OpenCurlyQuote:"\u2018",operp:"\u29B9",oplus:"\u2295",or:"\u2228",Or:"\u2A54",orarr:"\u21BB",ord:"\u2A5D",order:"\u2134",orderof:"\u2134",ordf:"\xAA",ordm:"\xBA",origof:"\u22B6",oror:"\u2A56",orslope:"\u2A57",orv:"\u2A5B",oS:"\u24C8",oscr:"\u2134",Oscr:"\u{1D4AA}",oslash:"\xF8",Oslash:"\xD8",osol:"\u2298",otilde:"\xF5",Otilde:"\xD5",otimes:"\u2297",Otimes:"\u2A37",otimesas:"\u2A36",ouml:"\xF6",Ouml:"\xD6",ovbar:"\u233D",OverBar:"\u203E",OverBrace:"\u23DE",OverBracket:"\u23B4",OverParenthesis:"\u23DC",par:"\u2225",para:"\xB6",parallel:"\u2225",parsim:"\u2AF3",parsl:"\u2AFD",part:"\u2202",PartialD:"\u2202",pcy:"\u043F",Pcy:"\u041F",percnt:"%",period:".",permil:"\u2030",perp:"\u22A5",pertenk:"\u2031",pfr:"\u{1D52D}",Pfr:"\u{1D513}",phi:"\u03C6",Phi:"\u03A6",phiv:"\u03D5",phmmat:"\u2133",phone:"\u260E",pi:"\u03C0",Pi:"\u03A0",pitchfork:"\u22D4",piv:"\u03D6",planck:"\u210F",planckh:"\u210E",plankv:"\u210F",plus:"+",plusacir:"\u2A23",plusb:"\u229E",pluscir:"\u2A22",plusdo:"\u2214",plusdu:"\u2A25",pluse:"\u2A72",PlusMinus:"\xB1",plusmn:"\xB1",plussim:"\u2A26",plustwo:"\u2A27",pm:"\xB1",Poincareplane:"\u210C",pointint:"\u2A15",popf:"\u{1D561}",Popf:"\u2119",pound:"\xA3",pr:"\u227A",Pr:"\u2ABB",prap:"\u2AB7",prcue:"\u227C",pre:"\u2AAF",prE:"\u2AB3",prec:"\u227A",precapprox:"\u2AB7",preccurlyeq:"\u227C",Precedes:"\u227A",PrecedesEqual:"\u2AAF",PrecedesSlantEqual:"\u227C",PrecedesTilde:"\u227E",preceq:"\u2AAF",precnapprox:"\u2AB9",precneqq:"\u2AB5",precnsim:"\u22E8",precsim:"\u227E",prime:"\u2032",Prime:"\u2033",primes:"\u2119",prnap:"\u2AB9",prnE:"\u2AB5",prnsim:"\u22E8",prod:"\u220F",Product:"\u220F",profalar:"\u232E",profline:"\u2312",profsurf:"\u2313",prop:"\u221D",Proportion:"\u2237",Proportional:"\u221D",propto:"\u221D",prsim:"\u227E",prurel:"\u22B0",pscr:"\u{1D4C5}",Pscr:"\u{1D4AB}",psi:"\u03C8",Psi:"\u03A8",puncsp:"\u2008",qfr:"\u{1D52E}",Qfr:"\u{1D514}",qint:"\u2A0C",qopf:"\u{1D562}",Qopf:"\u211A",qprime:"\u2057",qscr:"\u{1D4C6}",Qscr:"\u{1D4AC}",quaternions:"\u210D",quatint:"\u2A16",quest:"?",questeq:"\u225F",quot:'"',QUOT:'"',rAarr:"\u21DB",race:"\u223D\u0331",racute:"\u0155",Racute:"\u0154",radic:"\u221A",raemptyv:"\u29B3",rang:"\u27E9",Rang:"\u27EB",rangd:"\u2992",range:"\u29A5",rangle:"\u27E9",raquo:"\xBB",rarr:"\u2192",rArr:"\u21D2",Rarr:"\u21A0",rarrap:"\u2975",rarrb:"\u21E5",rarrbfs:"\u2920",rarrc:"\u2933",rarrfs:"\u291E",rarrhk:"\u21AA",rarrlp:"\u21AC",rarrpl:"\u2945",rarrsim:"\u2974",rarrtl:"\u21A3",Rarrtl:"\u2916",rarrw:"\u219D",ratail:"\u291A",rAtail:"\u291C",ratio:"\u2236",rationals:"\u211A",rbarr:"\u290D",rBarr:"\u290F",RBarr:"\u2910",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298C",rbrksld:"\u298E",rbrkslu:"\u2990",rcaron:"\u0159",Rcaron:"\u0158",rcedil:"\u0157",Rcedil:"\u0156",rceil:"\u2309",rcub:"}",rcy:"\u0440",Rcy:"\u0420",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201D",rdquor:"\u201D",rdsh:"\u21B3",Re:"\u211C",real:"\u211C",realine:"\u211B",realpart:"\u211C",reals:"\u211D",rect:"\u25AD",reg:"\xAE",REG:"\xAE",ReverseElement:"\u220B",ReverseEquilibrium:"\u21CB",ReverseUpEquilibrium:"\u296F",rfisht:"\u297D",rfloor:"\u230B",rfr:"\u{1D52F}",Rfr:"\u211C",rHar:"\u2964",rhard:"\u21C1",rharu:"\u21C0",rharul:"\u296C",rho:"\u03C1",Rho:"\u03A1",rhov:"\u03F1",RightAngleBracket:"\u27E9",rightarrow:"\u2192",Rightarrow:"\u21D2",RightArrow:"\u2192",RightArrowBar:"\u21E5",RightArrowLeftArrow:"\u21C4",rightarrowtail:"\u21A3",RightCeiling:"\u2309",RightDoubleBracket:"\u27E7",RightDownTeeVector:"\u295D",RightDownVector:"\u21C2",RightDownVectorBar:"\u2955",RightFloor:"\u230B",rightharpoondown:"\u21C1",rightharpoonup:"\u21C0",rightleftarrows:"\u21C4",rightleftharpoons:"\u21CC",rightrightarrows:"\u21C9",rightsquigarrow:"\u219D",RightTee:"\u22A2",RightTeeArrow:"\u21A6",RightTeeVector:"\u295B",rightthreetimes:"\u22CC",RightTriangle:"\u22B3",RightTriangleBar:"\u29D0",RightTriangleEqual:"\u22B5",RightUpDownVector:"\u294F",RightUpTeeVector:"\u295C",RightUpVector:"\u21BE",RightUpVectorBar:"\u2954",RightVector:"\u21C0",RightVectorBar:"\u2953",ring:"\u02DA",risingdotseq:"\u2253",rlarr:"\u21C4",rlhar:"\u21CC",rlm:"\u200F",rmoust:"\u23B1",rmoustache:"\u23B1",rnmid:"\u2AEE",roang:"\u27ED",roarr:"\u21FE",robrk:"\u27E7",ropar:"\u2986",ropf:"\u{1D563}",Ropf:"\u211D",roplus:"\u2A2E",rotimes:"\u2A35",RoundImplies:"\u2970",rpar:")",rpargt:"\u2994",rppolint:"\u2A12",rrarr:"\u21C9",Rrightarrow:"\u21DB",rsaquo:"\u203A",rscr:"\u{1D4C7}",Rscr:"\u211B",rsh:"\u21B1",Rsh:"\u21B1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22CC",rtimes:"\u22CA",rtri:"\u25B9",rtrie:"\u22B5",rtrif:"\u25B8",rtriltri:"\u29CE",RuleDelayed:"\u29F4",ruluhar:"\u2968",rx:"\u211E",sacute:"\u015B",Sacute:"\u015A",sbquo:"\u201A",sc:"\u227B",Sc:"\u2ABC",scap:"\u2AB8",scaron:"\u0161",Scaron:"\u0160",sccue:"\u227D",sce:"\u2AB0",scE:"\u2AB4",scedil:"\u015F",Scedil:"\u015E",scirc:"\u015D",Scirc:"\u015C",scnap:"\u2ABA",scnE:"\u2AB6",scnsim:"\u22E9",scpolint:"\u2A13",scsim:"\u227F",scy:"\u0441",Scy:"\u0421",sdot:"\u22C5",sdotb:"\u22A1",sdote:"\u2A66",searhk:"\u2925",searr:"\u2198",seArr:"\u21D8",searrow:"\u2198",sect:"\xA7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",sfr:"\u{1D530}",Sfr:"\u{1D516}",sfrown:"\u2322",sharp:"\u266F",shchcy:"\u0449",SHCHcy:"\u0429",shcy:"\u0448",SHcy:"\u0428",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",shortmid:"\u2223",shortparallel:"\u2225",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",shy:"\xAD",sigma:"\u03C3",Sigma:"\u03A3",sigmaf:"\u03C2",sigmav:"\u03C2",sim:"\u223C",simdot:"\u2A6A",sime:"\u2243",simeq:"\u2243",simg:"\u2A9E",simgE:"\u2AA0",siml:"\u2A9D",simlE:"\u2A9F",simne:"\u2246",simplus:"\u2A24",simrarr:"\u2972",slarr:"\u2190",SmallCircle:"\u2218",smallsetminus:"\u2216",smashp:"\u2A33",smeparsl:"\u29E4",smid:"\u2223",smile:"\u2323",smt:"\u2AAA",smte:"\u2AAC",smtes:"\u2AAC\uFE00",softcy:"\u044C",SOFTcy:"\u042C",sol:"/",solb:"\u29C4",solbar:"\u233F",sopf:"\u{1D564}",Sopf:"\u{1D54A}",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\uFE00",sqcup:"\u2294",sqcups:"\u2294\uFE00",Sqrt:"\u221A",sqsub:"\u228F",sqsube:"\u2291",sqsubset:"\u228F",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",squ:"\u25A1",square:"\u25A1",Square:"\u25A1",SquareIntersection:"\u2293",SquareSubset:"\u228F",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",squarf:"\u25AA",squf:"\u25AA",srarr:"\u2192",sscr:"\u{1D4C8}",Sscr:"\u{1D4AE}",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22C6",star:"\u2606",Star:"\u22C6",starf:"\u2605",straightepsilon:"\u03F5",straightphi:"\u03D5",strns:"\xAF",sub:"\u2282",Sub:"\u22D0",subdot:"\u2ABD",sube:"\u2286",subE:"\u2AC5",subedot:"\u2AC3",submult:"\u2AC1",subne:"\u228A",subnE:"\u2ACB",subplus:"\u2ABF",subrarr:"\u2979",subset:"\u2282",Subset:"\u22D0",subseteq:"\u2286",subseteqq:"\u2AC5",SubsetEqual:"\u2286",subsetneq:"\u228A",subsetneqq:"\u2ACB",subsim:"\u2AC7",subsub:"\u2AD5",subsup:"\u2AD3",succ:"\u227B",succapprox:"\u2AB8",succcurlyeq:"\u227D",Succeeds:"\u227B",SucceedsEqual:"\u2AB0",SucceedsSlantEqual:"\u227D",SucceedsTilde:"\u227F",succeq:"\u2AB0",succnapprox:"\u2ABA",succneqq:"\u2AB6",succnsim:"\u22E9",succsim:"\u227F",SuchThat:"\u220B",sum:"\u2211",Sum:"\u2211",sung:"\u266A",sup:"\u2283",Sup:"\u22D1",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",supdot:"\u2ABE",supdsub:"\u2AD8",supe:"\u2287",supE:"\u2AC6",supedot:"\u2AC4",Superset:"\u2283",SupersetEqual:"\u2287",suphsol:"\u27C9",suphsub:"\u2AD7",suplarr:"\u297B",supmult:"\u2AC2",supne:"\u228B",supnE:"\u2ACC",supplus:"\u2AC0",supset:"\u2283",Supset:"\u22D1",supseteq:"\u2287",supseteqq:"\u2AC6",supsetneq:"\u228B",supsetneqq:"\u2ACC",supsim:"\u2AC8",supsub:"\u2AD4",supsup:"\u2AD6",swarhk:"\u2926",swarr:"\u2199",swArr:"\u21D9",swarrow:"\u2199",swnwar:"\u292A",szlig:"\xDF",Tab:" ",target:"\u2316",tau:"\u03C4",Tau:"\u03A4",tbrk:"\u23B4",tcaron:"\u0165",Tcaron:"\u0164",tcedil:"\u0163",Tcedil:"\u0162",tcy:"\u0442",Tcy:"\u0422",tdot:"\u20DB",telrec:"\u2315",tfr:"\u{1D531}",Tfr:"\u{1D517}",there4:"\u2234",therefore:"\u2234",Therefore:"\u2234",theta:"\u03B8",Theta:"\u0398",thetasym:"\u03D1",thetav:"\u03D1",thickapprox:"\u2248",thicksim:"\u223C",ThickSpace:"\u205F\u200A",thinsp:"\u2009",ThinSpace:"\u2009",thkap:"\u2248",thksim:"\u223C",thorn:"\xFE",THORN:"\xDE",tilde:"\u02DC",Tilde:"\u223C",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",times:"\xD7",timesb:"\u22A0",timesbar:"\u2A31",timesd:"\u2A30",tint:"\u222D",toea:"\u2928",top:"\u22A4",topbot:"\u2336",topcir:"\u2AF1",topf:"\u{1D565}",Topf:"\u{1D54B}",topfork:"\u2ADA",tosa:"\u2929",tprime:"\u2034",trade:"\u2122",TRADE:"\u2122",triangle:"\u25B5",triangledown:"\u25BF",triangleleft:"\u25C3",trianglelefteq:"\u22B4",triangleq:"\u225C",triangleright:"\u25B9",trianglerighteq:"\u22B5",tridot:"\u25EC",trie:"\u225C",triminus:"\u2A3A",TripleDot:"\u20DB",triplus:"\u2A39",trisb:"\u29CD",tritime:"\u2A3B",trpezium:"\u23E2",tscr:"\u{1D4C9}",Tscr:"\u{1D4AF}",tscy:"\u0446",TScy:"\u0426",tshcy:"\u045B",TSHcy:"\u040B",tstrok:"\u0167",Tstrok:"\u0166",twixt:"\u226C",twoheadleftarrow:"\u219E",twoheadrightarrow:"\u21A0",uacute:"\xFA",Uacute:"\xDA",uarr:"\u2191",uArr:"\u21D1",Uarr:"\u219F",Uarrocir:"\u2949",ubrcy:"\u045E",Ubrcy:"\u040E",ubreve:"\u016D",Ubreve:"\u016C",ucirc:"\xFB",Ucirc:"\xDB",ucy:"\u0443",Ucy:"\u0423",udarr:"\u21C5",udblac:"\u0171",Udblac:"\u0170",udhar:"\u296E",ufisht:"\u297E",ufr:"\u{1D532}",Ufr:"\u{1D518}",ugrave:"\xF9",Ugrave:"\xD9",uHar:"\u2963",uharl:"\u21BF",uharr:"\u21BE",uhblk:"\u2580",ulcorn:"\u231C",ulcorner:"\u231C",ulcrop:"\u230F",ultri:"\u25F8",umacr:"\u016B",Umacr:"\u016A",uml:"\xA8",UnderBar:"_",UnderBrace:"\u23DF",UnderBracket:"\u23B5",UnderParenthesis:"\u23DD",Union:"\u22C3",UnionPlus:"\u228E",uogon:"\u0173",Uogon:"\u0172",uopf:"\u{1D566}",Uopf:"\u{1D54C}",uparrow:"\u2191",Uparrow:"\u21D1",UpArrow:"\u2191",UpArrowBar:"\u2912",UpArrowDownArrow:"\u21C5",updownarrow:"\u2195",Updownarrow:"\u21D5",UpDownArrow:"\u2195",UpEquilibrium:"\u296E",upharpoonleft:"\u21BF",upharpoonright:"\u21BE",uplus:"\u228E",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",upsi:"\u03C5",Upsi:"\u03D2",upsih:"\u03D2",upsilon:"\u03C5",Upsilon:"\u03A5",UpTee:"\u22A5",UpTeeArrow:"\u21A5",upuparrows:"\u21C8",urcorn:"\u231D",urcorner:"\u231D",urcrop:"\u230E",uring:"\u016F",Uring:"\u016E",urtri:"\u25F9",uscr:"\u{1D4CA}",Uscr:"\u{1D4B0}",utdot:"\u22F0",utilde:"\u0169",Utilde:"\u0168",utri:"\u25B5",utrif:"\u25B4",uuarr:"\u21C8",uuml:"\xFC",Uuml:"\xDC",uwangle:"\u29A7",vangrt:"\u299C",varepsilon:"\u03F5",varkappa:"\u03F0",varnothing:"\u2205",varphi:"\u03D5",varpi:"\u03D6",varpropto:"\u221D",varr:"\u2195",vArr:"\u21D5",varrho:"\u03F1",varsigma:"\u03C2",varsubsetneq:"\u228A\uFE00",varsubsetneqq:"\u2ACB\uFE00",varsupsetneq:"\u228B\uFE00",varsupsetneqq:"\u2ACC\uFE00",vartheta:"\u03D1",vartriangleleft:"\u22B2",vartriangleright:"\u22B3",vBar:"\u2AE8",Vbar:"\u2AEB",vBarv:"\u2AE9",vcy:"\u0432",Vcy:"\u0412",vdash:"\u22A2",vDash:"\u22A8",Vdash:"\u22A9",VDash:"\u22AB",Vdashl:"\u2AE6",vee:"\u2228",Vee:"\u22C1",veebar:"\u22BB",veeeq:"\u225A",vellip:"\u22EE",verbar:"|",Verbar:"\u2016",vert:"|",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200A",vfr:"\u{1D533}",Vfr:"\u{1D519}",vltri:"\u22B2",vnsub:"\u2282\u20D2",vnsup:"\u2283\u20D2",vopf:"\u{1D567}",Vopf:"\u{1D54D}",vprop:"\u221D",vrtri:"\u22B3",vscr:"\u{1D4CB}",Vscr:"\u{1D4B1}",vsubne:"\u228A\uFE00",vsubnE:"\u2ACB\uFE00",vsupne:"\u228B\uFE00",vsupnE:"\u2ACC\uFE00",Vvdash:"\u22AA",vzigzag:"\u299A",wcirc:"\u0175",Wcirc:"\u0174",wedbar:"\u2A5F",wedge:"\u2227",Wedge:"\u22C0",wedgeq:"\u2259",weierp:"\u2118",wfr:"\u{1D534}",Wfr:"\u{1D51A}",wopf:"\u{1D568}",Wopf:"\u{1D54E}",wp:"\u2118",wr:"\u2240",wreath:"\u2240",wscr:"\u{1D4CC}",Wscr:"\u{1D4B2}",xcap:"\u22C2",xcirc:"\u25EF",xcup:"\u22C3",xdtri:"\u25BD",xfr:"\u{1D535}",Xfr:"\u{1D51B}",xharr:"\u27F7",xhArr:"\u27FA",xi:"\u03BE",Xi:"\u039E",xlarr:"\u27F5",xlArr:"\u27F8",xmap:"\u27FC",xnis:"\u22FB",xodot:"\u2A00",xopf:"\u{1D569}",Xopf:"\u{1D54F}",xoplus:"\u2A01",xotime:"\u2A02",xrarr:"\u27F6",xrArr:"\u27F9",xscr:"\u{1D4CD}",Xscr:"\u{1D4B3}",xsqcup:"\u2A06",xuplus:"\u2A04",xutri:"\u25B3",xvee:"\u22C1",xwedge:"\u22C0",yacute:"\xFD",Yacute:"\xDD",yacy:"\u044F",YAcy:"\u042F",ycirc:"\u0177",Ycirc:"\u0176",ycy:"\u044B",Ycy:"\u042B",yen:"\xA5",yfr:"\u{1D536}",Yfr:"\u{1D51C}",yicy:"\u0457",YIcy:"\u0407",yopf:"\u{1D56A}",Yopf:"\u{1D550}",yscr:"\u{1D4CE}",Yscr:"\u{1D4B4}",yucy:"\u044E",YUcy:"\u042E",yuml:"\xFF",Yuml:"\u0178",zacute:"\u017A",Zacute:"\u0179",zcaron:"\u017E",Zcaron:"\u017D",zcy:"\u0437",Zcy:"\u0417",zdot:"\u017C",Zdot:"\u017B",zeetrf:"\u2128",ZeroWidthSpace:"\u200B",zeta:"\u03B6",Zeta:"\u0396",zfr:"\u{1D537}",Zfr:"\u2128",zhcy:"\u0436",ZHcy:"\u0416",zigrarr:"\u21DD",zopf:"\u{1D56B}",Zopf:"\u2124",zscr:"\u{1D4CF}",Zscr:"\u{1D4B5}",zwj:"\u200D",zwnj:"\u200C"},g={aacute:"\xE1",Aacute:"\xC1",acirc:"\xE2",Acirc:"\xC2",acute:"\xB4",aelig:"\xE6",AElig:"\xC6",agrave:"\xE0",Agrave:"\xC0",amp:"&",AMP:"&",aring:"\xE5",Aring:"\xC5",atilde:"\xE3",Atilde:"\xC3",auml:"\xE4",Auml:"\xC4",brvbar:"\xA6",ccedil:"\xE7",Ccedil:"\xC7",cedil:"\xB8",cent:"\xA2",copy:"\xA9",COPY:"\xA9",curren:"\xA4",deg:"\xB0",divide:"\xF7",eacute:"\xE9",Eacute:"\xC9",ecirc:"\xEA",Ecirc:"\xCA",egrave:"\xE8",Egrave:"\xC8",eth:"\xF0",ETH:"\xD0",euml:"\xEB",Euml:"\xCB",frac12:"\xBD",frac14:"\xBC",frac34:"\xBE",gt:">",GT:">",iacute:"\xED",Iacute:"\xCD",icirc:"\xEE",Icirc:"\xCE",iexcl:"\xA1",igrave:"\xEC",Igrave:"\xCC",iquest:"\xBF",iuml:"\xEF",Iuml:"\xCF",laquo:"\xAB",lt:"<",LT:"<",macr:"\xAF",micro:"\xB5",middot:"\xB7",nbsp:"\xA0",not:"\xAC",ntilde:"\xF1",Ntilde:"\xD1",oacute:"\xF3",Oacute:"\xD3",ocirc:"\xF4",Ocirc:"\xD4",ograve:"\xF2",Ograve:"\xD2",ordf:"\xAA",ordm:"\xBA",oslash:"\xF8",Oslash:"\xD8",otilde:"\xF5",Otilde:"\xD5",ouml:"\xF6",Ouml:"\xD6",para:"\xB6",plusmn:"\xB1",pound:"\xA3",quot:'"',QUOT:'"',raquo:"\xBB",reg:"\xAE",REG:"\xAE",sect:"\xA7",shy:"\xAD",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",szlig:"\xDF",thorn:"\xFE",THORN:"\xDE",times:"\xD7",uacute:"\xFA",Uacute:"\xDA",ucirc:"\xFB",Ucirc:"\xDB",ugrave:"\xF9",Ugrave:"\xD9",uml:"\xA8",uuml:"\xFC",Uuml:"\xDC",yacute:"\xFD",Yacute:"\xDD",yen:"\xA5",yuml:"\xFF"},y={0:"\uFFFD",128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"},C=[1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65e3,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111],b=String.fromCharCode,x={},k=x.hasOwnProperty,v=function(E,M){return k.call(E,M)},w=function(E,M){for(var B=-1,I=E.length;++B<I;)if(E[B]==M)return!0;return!1},S=function(E,M){if(!E)return M;var B={},I;for(I in M)B[I]=v(E,I)?E[I]:M[I];return B},A=function(E,M){var B="";return E>=55296&&E<=57343||E>1114111?(M&&R("character reference outside the permissible Unicode range"),"\uFFFD"):v(y,E)?(M&&R("disallowed character reference"),y[E]):(M&&w(C,E)&&R("disallowed character reference"),E>65535&&(E-=65536,B+=b(E>>>10&1023|55296),E=56320|E&1023),B+=b(E),B)},P=function(E){return"&#x"+E.toString(16).toUpperCase()+";"},q=function(E){return"&#"+E+";"},R=function(E){throw Error("Parse error: "+E)},O=function(E,M){M=S(M,O.options);var B=M.strict;B&&m.test(E)&&R("forbidden code point");var I=M.encodeEverything,F=M.useNamedReferences,oe=M.allowUnsafeSymbols,ee=M.decimal?q:P,He=function(ne){return ee(ne.charCodeAt(0))};return I?(E=E.replace(o,function(ne){return F&&v(u,ne)?"&"+u[ne]+";":He(ne)}),F&&(E=E.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒").replace(/fj/g,"fj")),F&&(E=E.replace(c,function(ne){return"&"+u[ne]+";"}))):F?(oe||(E=E.replace(l,function(ne){return"&"+u[ne]+";"})),E=E.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒"),E=E.replace(c,function(ne){return"&"+u[ne]+";"})):oe||(E=E.replace(l,He)),E.replace(i,function(ne){var Ke=ne.charCodeAt(0),Oe=ne.charCodeAt(1),Ie=(Ke-55296)*1024+Oe-56320+65536;return ee(Ie)}).replace(s,He)};O.options={allowUnsafeSymbols:!1,encodeEverything:!1,strict:!1,useNamedReferences:!1,decimal:!1};var W=function(E,M){M=S(M,W.options);var B=M.strict;return B&&p.test(E)&&R("malformed character reference"),E.replace(f,function(I,F,oe,ee,He,ne,Ke,Oe,Ie){var Xe,ze,jt,on,xt,_t;return F?(xt=F,h[xt]):oe?(xt=oe,_t=ee,_t&&M.isAttributeValue?(B&&_t=="="&&R("`&` did not start a character reference"),I):(B&&R("named character reference was not terminated by a semicolon"),g[xt]+(_t||""))):He?(jt=He,ze=ne,B&&!ze&&R("character reference was not terminated by a semicolon"),Xe=parseInt(jt,10),A(Xe,B)):Ke?(on=Ke,ze=Oe,B&&!ze&&R("character reference was not terminated by a semicolon"),Xe=parseInt(on,16),A(Xe,B)):(B&&R("named character reference was not terminated by a semicolon"),I)})};W.options={isAttributeValue:!1,strict:!1};var z=function(E){return E.replace(l,function(M){return d[M]})},H={version:"1.2.0",encode:O,decode:W,escape:z,unescape:W};if(typeof define=="function"&&typeof define.amd=="object"&&define.amd)define(function(){return H});else if(e&&!e.nodeType)if(r)r.exports=H;else for(var _ in H)v(H,_)&&(e[_]=H[_]);else t.he=H})(ai)});var la,Be,qr=T(()=>{"use strict";la=ot(si(),1),Be=class{parentNode;childNodes=[];range=[-1,-1];constructor(e=null,r){this.parentNode=e,r&&(this.range=r)}remove(){if(this.parentNode){typeof this.parentNode.invalidateSelectorCacheRecursively=="function"&&this.parentNode.invalidateSelectorCacheRecursively();let e=this.parentNode.childNodes;this.parentNode.childNodes=e.filter(r=>this!==r),this.parentNode=null}return this}invalidateSelectorCacheRecursively(){}get innerText(){return this.rawText}get textContent(){return la.default.decode(this.rawText)}set textContent(e){this.rawText=la.default.encode(e)}}});var da,j,sr=T(()=>{"use strict";(function(t){t[t.ELEMENT_NODE=1]="ELEMENT_NODE",t[t.TEXT_NODE=3]="TEXT_NODE",t[t.COMMENT_NODE=8]="COMMENT_NODE"})(da||(da={}));j=da});var Ht,pa=T(()=>{"use strict";qr();sr();Ht=class t extends Be{rawText;rawTagName;clone(){return new t(this.rawText,null,void 0,this.rawTagName)}constructor(e,r=null,n,i="!--"){super(r,n),this.rawText=e,this.rawTagName=i}nodeType=j.COMMENT_NODE;get text(){return this.rawText}toString(){return`<!--${this.rawText}-->`}}});function bt(t){return t[t.length-1]}var Vu=T(()=>{"use strict"});function ci(t){return!!t&&t.nodeType===j.ELEMENT_NODE}function Gu(t,e){return ci(t)?t.getAttribute(e):void 0}function _b(t){return(t&&t.rawTagName||"").toLowerCase()}function $r(t){return t&&t.childNodes}function ma(t){return t?t.parentNode:null}function Wb(t){return t.text}function Vb(t){let e=t.length,r,n,i;for(;--e>-1;){for(r=n=t[e],t[e]=null,i=!0;n;){if(t.indexOf(n)>-1){i=!1,t.splice(e,1);break}n=ma(n)}i&&(t[e]=r)}return t}function Ku(t,e){return e.some(r=>ci(r)?t(r)||Ku(t,$r(r)):!1)}function Gb(t){let e=ma(t);return e?$r(e):[]}function Kb(t,e){return Gu(t,e)!==void 0}function Xu(t,e){let r=null;for(let n=0,i=e==null?void 0:e.length;n<i&&!r;n++){let o=e[n];if(t(o))r=o;else{let s=$r(o);s&&s.length>0&&(r=Xu(t,s))}}return r}function Ju(t,e){let r=[];for(let n=0,i=e.length;n<i;n++){if(!ci(e[n]))continue;t(e[n])&&r.push(e[n]);let o=$r(e[n]);o&&(r=r.concat(Ju(t,o)))}return r}var ue,fa=T(()=>{"use strict";sr();ue={isTag:ci,getAttributeValue:Gu,getName:_b,getChildren:$r,getParent:ma,getText:Wb,removeSubsets:Vb,existsOne:Ku,getSiblings:Gb,hasAttrib:Kb,findOne:Xu,findAll:Ju}});var cr,Qu=T(()=>{"use strict";cr=class{addClosingSlash;voidTags;constructor(e=!1,r){this.addClosingSlash=e,Array.isArray(r)?this.voidTags=r.reduce((n,i)=>n.add(i.toLowerCase()).add(i.toUpperCase()).add(i),new Set):this.voidTags=["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"].reduce((n,i)=>n.add(i.toLowerCase()).add(i.toUpperCase()).add(i),new Set)}formatNode(e,r,n){let i=this.addClosingSlash,o=i&&r&&!r.endsWith(" ")?" ":"",s=i?`${o}/`:"";return this.isVoidElement(e.toLowerCase())?`<${e}${r}${s}>`:`<${e}${r}>${n}</${e}>`}isVoidElement(e){return this.voidTags.has(e)}}});var Yu,Ue,ha=T(()=>{"use strict";Yu=ot(si(),1);qr();sr();Ue=class t extends Be{rawText;nodeType=j.TEXT_NODE;rawTagName="#text";constructor(e,r=null,n){super(r,n),this.rawText=e}clone(){return new t(this.rawText,null,this.range?[...this.range]:void 0)}get text(){return Yu.default.decode(this.rawText)}get trimmedText(){return this.text.trim()}get trimmedRawText(){return this.rawText.trim()}get isWhitespace(){return/^(\s| )*$/.test(this.rawText)}toString(){return this.rawText}}});function Or(t){return JSON.parse(JSON.stringify(tl.default.decode(t)))}function e2(...t){let e=r=>{for(let n=0;n<r.length;n++){let i=r[n];ga.add(i),ga.add(i.toUpperCase())}};for(let r of t)e(r)}function li(t,e={}){var k,v;let r=new cr((k=e==null?void 0:e.voidTag)==null?void 0:k.closingSlash,(v=e==null?void 0:e.voidTag)==null?void 0:v.tags),n=e.blockTextElements||{script:!0,noscript:!0,style:!0,pre:!0},i=Object.keys(n),o=i.map(w=>new RegExp(`^${w}$`,"i")),s=i.filter(w=>!!n[w]).map(w=>new RegExp(`^${w}$`,"i"));function c(w){return s.some(S=>S.test(w))}function u(w){return o.some(S=>S.test(w))}let l=(w,S)=>[w-x,S-x],d=new It("",{},"",null,[0,t.length],r,e),p=d,m=[d],f=-1,h,g;t=`<${zr}>${t}</${zr}>`;let{lowerCaseTagName:y,fixNestedATags:C}=e,b=t.length-(zr.length+2),x=zr.length+2;for(;g=dt.exec(t);){let{0:w,1:S,2:A,3:P,4:q}=g,R=w.length,O=dt.lastIndex-R,W=dt.lastIndex;if(f>-1&&f+R<W){let z=t.substring(f,O);p.appendChild(new Ue(z,p,l(f,O)))}if(f=dt.lastIndex,A!==zr){if(w[1]==="!"){if(e.comment){let z=t.substring(O+4,W-3);p.appendChild(new Ht(z,p,l(O,W)))}continue}if(y&&(A=A.toLowerCase()),!S){let z={};for(let M;M=t2.exec(P);){let{1:B,2:I}=M,F=I[0]==="'"||I[0]==='"';z[B.toLowerCase()]=F?I.slice(1,I.length-1):I}let H=p.rawTagName;!q&&Zu[H]&&Zu[H][A]&&(m.pop(),p=bt(m)),C&&(A==="a"||A==="A")&&(h!==void 0&&(m.splice(h),p=bt(m)),h=m.length);let _=dt.lastIndex,E=_-R;if(p=p.appendChild(new It(A,z,P.slice(1),null,l(E,_),r,e)),m.push(p),u(A)){let M=`</${A}>`,B=y?t.toLocaleLowerCase().indexOf(M,dt.lastIndex):t.indexOf(M,dt.lastIndex),I=B===-1?b:B;if(c(A)){let F=t.substring(_,I);F.length>0&&/\S/.test(F)&&p.appendChild(new Ue(F,p,l(_,I)))}B===-1?f=dt.lastIndex=t.length+1:(f=dt.lastIndex=B+M.length,S="/")}}if(S||q||r.isVoidElement(A))for(;;)if(h!=null&&(A==="a"||A==="A")&&(h=void 0),p.rawTagName===A){p.range[1]=l(-1,Math.max(f,W))[1],m.pop(),p=bt(m);break}else{let z=p.tagName;if(el[z]&&el[z][A]){m.pop(),p=bt(m);continue}break}}}return m}function pt(t,e={}){let r=li(t,e),[n]=r;for(;r.length>1;){let i=r.pop(),o=bt(r);i&&i.parentNode&&i.parentNode.parentNode&&(i.parentNode===o&&i.tagName===o.tagName?e.parseNoneClosedTags!==!0&&(o.removeChild(i),i.childNodes.forEach(s=>{o.parentNode&&o.parentNode.appendChild(s)}),r.pop()):e.parseNoneClosedTags!==!0&&(o.removeChild(i),i.childNodes.forEach(s=>{o.appendChild(s)})))}return n}function ui(t,e){let r=[];for(let n of t)if(typeof n=="string")if(/<[a-zA-Z!]/.test(n)){let o=li(n,e||{})[0];if(o&&o.childNodes)for(let s of o.childNodes)s.parentNode=null,r.push(s)}else r.push(new Ue(n));else n.remove(),r.push(n);return r}function et(t,e){return t.map(r=>(r.parentNode=e,r))}var tl,Xb,Jb,Qb,Yb,Zb,ga,ya,It,dt,t2,Zu,el,zr,di=T(()=>{"use strict";ua();tl=ot(si(),1);Vu();fa();Qu();pa();qr();ha();sr();Xb=["h1","h2","h3","h4","h5","h6","header","hgroup"],Jb=["details","dialog","dd","div","dt"],Qb=["fieldset","figcaption","figure","footer","form"],Yb=["table","td","tr"],Zb=["address","article","aside","blockquote","br","hr","li","main","nav","ol","p","pre","section","ul"],ga=new Set;e2(Xb,Jb,Qb,Yb,Zb);ya=class{_set;_afterUpdate;_validate(e){if(/\s/.test(e))throw new Error(`DOMException in DOMTokenList.add: The token '${e}' contains HTML space characters, which are not valid in tokens.`)}constructor(e=[],r=()=>null){this._set=new Set(e),this._afterUpdate=r}add(e){this._validate(e),this._set.add(e),this._afterUpdate(this)}replace(e,r){this._validate(r),this._set.delete(e),this._set.add(r),this._afterUpdate(this)}remove(e){this._set.delete(e)&&this._afterUpdate(this)}toggle(e){this._validate(e),this._set.has(e)?this._set.delete(e):this._set.add(e),this._afterUpdate(this)}contains(e){return this._set.has(e)}get length(){return this._set.size}values(){return this._set.values()}get value(){return Array.from(this._set.values())}toString(){return Array.from(this._set.values()).join(" ")}},It=class t extends Be{rawAttrs;voidTag;_attrs;_rawAttrs;_queryCache;_parseOptions;rawTagName;id;classList;nodeType=j.ELEMENT_NODE;get isSelectorCacheEnabled(){var e;return((e=this._parseOptions)==null?void 0:e.selectorCache)!==!1}getQueryCache(){return this._queryCache||(this._queryCache=new Map),this._queryCache}clearQueryCache(){this._queryCache=void 0}invalidateSelectorCacheRecursively(){let e=this;for(;e;)e.clearQueryCache(),e=e.parentNode}quoteAttribute(e){return e==null?"null":JSON.stringify(e.replace(/"/g,""")).replace(/\\t/g," ").replace(/\\n/g,`
|
|
42
|
+
)`,enabled:":not(:disabled)",checked:":is(:is(input[type=radio], input[type=checkbox])[checked], :selected)",required:":is(input, select, textarea)[required]",optional:":is(input, select, textarea):not([required])","read-only":`[readonly]:is(textarea, ${Eu})`,"read-write":`:not([readonly]):is(textarea, ${Eu})`,selected:"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)",checkbox:"[type=checkbox]",file:"[type=file]",password:"[type=password]",radio:"[type=radio]",reset:"[type=reset]",image:"[type=image]",submit:"[type=submit]",parent:":not(:empty)",header:":is(h1, h2, h3, h4, h5, h6)",button:":is(button, input[type=button])",input:":is(input, textarea, select, button)",text:"input:is(:not([type!='']), [type=text])"}});function Ru(t){if(t=t.trim().toLowerCase(),t==="even")return[2,0];if(t==="odd")return[2,1];let e=0,r=0,n=o(),i=s();if(e<t.length&&t.charAt(e)==="n"&&(e++,r=n*(i??1),c(),e<t.length?(n=o(),c(),i=s()):n=i=0),i===null||e<t.length)throw new Error(`n-th rule couldn't be parsed ('${t}')`);return[r,n*i];function o(){return t.charAt(e)==="-"?(e++,-1):(t.charAt(e)==="+"&&e++,1)}function s(){let u=e,l=0;for(;e<t.length&&t.charCodeAt(e)>=Lu&&t.charCodeAt(e)<=Rb;)l=l*10+(t.charCodeAt(e)-Lu),e++;return e===u?null:l}function c(){for(;e<t.length&&Lb.has(t.charCodeAt(e));)e++}}var Lb,Lu,Rb,Pu=A(()=>{Lb=new Set([9,10,12,13,32]),Lu=48,Rb=57});function Nu(t){let e=t[0],r=t[1]-1;if(r<0&&e<=0)return Jo.default.falseFunc;if(e===-1)return o=>o<=r;if(e===0)return o=>o===r;if(e===1)return r<0?Jo.default.trueFunc:o=>o>=r;let n=Math.abs(e),i=(r%n+n)%n;return e>1?o=>o>=r&&o%n===i:o=>o<=r&&o%n===i}var Jo,Mu=A(()=>{Jo=ot(Nt(),1)});function nr(t){return Nu(Ru(t))}var Fu=A(()=>{Pu();Mu()});function ir(t,{adapter:e,cacheResults:r},n){if(r===!1||typeof WeakMap>"u")return s=>t(s)&&n(s);let i=new WeakMap;function o(s){let c=n(s);return i.set(s,c),c}return function(c){if(!t(c))return!1;if(i.has(c))return i.get(c);let u=c;do{let l=ke(u,e);if(l===null)return o(c);u=l}while(!i.has(u));return i.get(u)&&o(c)}}var Qo=A(()=>{Ut()});function Yo(t){return function(r,n,{adapter:i}){let o=i[t];return typeof o!="function"?Te.falseFunc:function(c){return o(c)&&r(c)}}}var Te,Br,Bu=A(()=>{Te=ot(Nt(),1);Fu();Qo();Ut();Br={contains(t,e,r){let{getText:n}=r.adapter;return ir(t,r,i=>n(i).includes(e))},icontains(t,e,r){let n=e.toLowerCase(),{getText:i}=r.adapter;return ir(t,r,o=>i(o).toLowerCase().includes(n))},"nth-child"(t,e,{adapter:r,equals:n}){let i=nr(e);return i===Te.falseFunc?Te.falseFunc:i===Te.trueFunc?o=>ke(o,r)!==null&&t(o):function(s){let c=r.getSiblings(s),u=0;for(let l=0;l<c.length&&!n(s,c[l]);l++)r.isTag(c[l])&&u++;return i(u)&&t(s)}},"nth-last-child"(t,e,{adapter:r,equals:n}){let i=nr(e);return i===Te.falseFunc?Te.falseFunc:i===Te.trueFunc?o=>ke(o,r)!==null&&t(o):function(s){let c=r.getSiblings(s),u=0;for(let l=c.length-1;l>=0&&!n(s,c[l]);l--)r.isTag(c[l])&&u++;return i(u)&&t(s)}},"nth-of-type"(t,e,{adapter:r,equals:n}){let i=nr(e);return i===Te.falseFunc?Te.falseFunc:i===Te.trueFunc?o=>ke(o,r)!==null&&t(o):function(s){let c=r.getSiblings(s),u=0;for(let l=0;l<c.length;l++){let d=c[l];if(n(s,d))break;r.isTag(d)&&r.getName(d)===r.getName(s)&&u++}return i(u)&&t(s)}},"nth-last-of-type"(t,e,{adapter:r,equals:n}){let i=nr(e);return i===Te.falseFunc?Te.falseFunc:i===Te.trueFunc?o=>ke(o,r)!==null&&t(o):function(s){let c=r.getSiblings(s),u=0;for(let l=c.length-1;l>=0;l--){let d=c[l];if(n(s,d))break;r.isTag(d)&&r.getName(d)===r.getName(s)&&u++}return i(u)&&t(s)}},root(t,e,{adapter:r}){return n=>ke(n,r)===null&&t(n)},scope(t,e,r,n){let{equals:i}=r;return!n||n.length===0?Br.root(t,e,r):n.length===1?o=>i(n[0],o)&&t(o):o=>n.includes(o)&&t(o)},hover:Yo("isHovered"),visited:Yo("isVisited"),active:Yo("isActive")}});function Zo(t,e,r,n){if(r===null){if(t.length>n)throw new Error(`Pseudo-class :${e} requires an argument`)}else if(t.length===n)throw new Error(`Pseudo-class :${e} doesn't have any arguments`)}var Pb,ni,Uu=A(()=>{Pb=/^[ \t\r\n]*$/,ni={empty(t,{adapter:e}){let r=e.getChildren(t);return r.every(n=>!e.isTag(n))&&r.every(n=>Pb.test(e.getText(n)))},"first-child"(t,{adapter:e,equals:r}){if(e.prevElementSibling)return e.prevElementSibling(t)==null;let n=e.getSiblings(t).find(i=>e.isTag(i));return n!=null&&r(t,n)},"last-child"(t,{adapter:e,equals:r}){let n=e.getSiblings(t);for(let i=n.length-1;i>=0;i--){if(r(t,n[i]))return!0;if(e.isTag(n[i]))break}return!1},"first-of-type"(t,{adapter:e,equals:r}){let n=e.getSiblings(t),i=e.getName(t);for(let o=0;o<n.length;o++){let s=n[o];if(r(t,s))return!0;if(e.isTag(s)&&e.getName(s)===i)break}return!1},"last-of-type"(t,{adapter:e,equals:r}){let n=e.getSiblings(t),i=e.getName(t);for(let o=n.length-1;o>=0;o--){let s=n[o];if(r(t,s))return!0;if(e.isTag(s)&&e.getName(s)===i)break}return!1},"only-of-type"(t,{adapter:e,equals:r}){let n=e.getName(t);return e.getSiblings(t).every(i=>r(t,i)||!e.isTag(i)||e.getName(i)!==n)},"only-child"(t,{adapter:e,equals:r}){return e.getSiblings(t).every(n=>r(t,n)||!e.isTag(n))}}});function or(t){return t.type==="_flexibleDescendant"||_n(t)}function Iu(t){let e=t.map(ii);for(let r=1;r<t.length;r++){let n=e[r];if(!(n<0))for(let i=r;i>0&&n<e[i-1];i--){let o=t[i];t[i]=t[i-1],t[i-1]=o,e[i]=e[i-1],e[i-1]=n}}}function Nb(t){switch(t.action){case Z.Exists:return 10;case Z.Equals:return t.name==="id"?9:8;case Z.Not:return 7;case Z.Start:return 6;case Z.End:return 6;case Z.Any:return 5;case Z.Hyphen:return 4;case Z.Element:return 3}}function ii(t){switch(t.type){case L.Universal:return 50;case L.Tag:return 30;case L.Attribute:return Math.floor(Nb(t)/(t.ignoreCase?2:1));case L.Pseudo:return t.data?t.name==="has"||t.name==="contains"||t.name==="icontains"?0:Array.isArray(t.data)?Math.max(0,Math.min(...t.data.map(e=>Math.min(...e.map(ii))))):2:3;default:return-1}}function Ur(t){return t.type===L.Pseudo&&(t.name==="scope"||Array.isArray(t.data)&&t.data.some(e=>e.some(Ur)))}var ea=A(()=>{er()});function Mb(t){return t.some(e=>e.length>0&&(or(e[0])||e.some(Ur)))}function ra(t){return{xmlMode:!!t.xmlMode,lowerCaseAttributeNames:!!t.lowerCaseAttributeNames,lowerCaseTags:!!t.lowerCaseTags,quirksMode:!!t.quirksMode,cacheResults:!!t.cacheResults,pseudos:t.pseudos,adapter:t.adapter,equals:t.equals}}var We,na,ta,oi,ia=A(()=>{We=ot(Nt(),1);Qo();Ut();ea();na={};ta=(t,e,r,n,i)=>{let o=i(e,ra(r),n);return o===We.trueFunc?t:o===We.falseFunc?We.falseFunc:s=>o(s)&&t(s)},oi={is:ta,matches:ta,where:ta,not(t,e,r,n,i){let o=i(e,ra(r),n);return o===We.falseFunc?t:o===We.trueFunc?We.falseFunc:s=>!o(s)&&t(s)},has(t,e,r,n,i){let{adapter:o}=r,s=ra(r);s.relativeSelector=!0;let c=e.some(p=>p.some(or))?[na]:void 0,u=Mb(e),l=i(e,s,c);if(l===We.falseFunc)return We.falseFunc;if(c&&l!==We.trueFunc)return u?p=>{if(!t(p))return!1;c[0]=p;let m=o.getChildren(p);return rr(l,l.shouldTestNextSiblings?[...m,...ri(p,o)]:m,r)!==null}:ir(t,r,p=>(c[0]=p,rr(l,o.getChildren(p),r)!==null));let d=p=>rr(l,o.getChildren(p),r)!==null;return u?p=>t(p)&&d(p):ir(t,r,d)}}});function Hu(t,e,r,n,i){var l;let{name:o,data:s}=e;if(Array.isArray(s)){if(!(o in oi))throw new Error(`Unknown pseudo-class :${o}(${s})`);return oi[o](t,s,r,n,i)}let c=(l=r.pseudos)==null?void 0:l[o],u=typeof c=="string"?c:Xo[o];if(typeof u=="string"){if(s!=null)throw new Error(`Pseudo ${o} doesn't have any arguments`);let d=Dr(u);return oi.is(t,d,r,n,i)}if(typeof c=="function")return Zo(c,o,s,1),d=>c(d,s)&&t(d);if(o in Br)return Br[o](t,s,r,n);if(o in ni){let d=ni[o];return Zo(d,o,s,2),p=>d(p,r,s)&&t(p)}throw new Error(`Unknown pseudo-class :${o}`)}var oa=A(()=>{er();Du();Bu();Uu();ia()});function qu(t,e,r,n,i,o){let{adapter:s,equals:c,cacheResults:u}=r;switch(e.type){case L.PseudoElement:throw new Error("Pseudo-elements are not supported by css-select");case L.ColumnCombinator:throw new Error("Column combinators are not yet supported by css-select");case L.Attribute:{if(e.namespace!=null)throw new Error("Namespaced attributes are not yet supported by css-select");return(!r.xmlMode||r.lowerCaseAttributeNames)&&(e.name=e.name.toLowerCase()),Su[e.action](t,e,r)}case L.Pseudo:return Hu(t,e,r,n,i);case L.Tag:{if(e.namespace!=null)throw new Error("Namespaced tag names are not yet supported by css-select");let{name:l}=e;return(!r.xmlMode||r.lowerCaseTags)&&(l=l.toLowerCase()),function(p){return s.getName(p)===l&&t(p)}}case L.Descendant:{if(!o||u===!1||typeof WeakMap>"u")return function(p){let m=p;for(;m=ke(m,s);)if(t(m))return!0;return!1};let l=new WeakMap;return function(p){let m=p,f;for(;m=ke(m,s);){let h=l.get(m);if(h===void 0){if(f??(f={matches:!1}),f.matches=t(m),l.set(m,f),f.matches)return!0}else return f&&(f.matches=h.matches),h.matches}return!1}}case"_flexibleDescendant":return function(d){let p=d;do{if(t(p))return!0;p=ke(p,s)}while(p);return!1};case L.Parent:return function(d){return s.getChildren(d).some(p=>s.isTag(p)&&t(p))};case L.Child:return function(d){let p=ke(d,s);return p!==null&&t(p)};case L.Sibling:return function(d){let p=s.getSiblings(d);for(let m=0;m<p.length;m++){let f=p[m];if(c(d,f))break;if(s.isTag(f)&&t(f))return!0}return!1};case L.Adjacent:return s.prevElementSibling?function(d){let p=s.prevElementSibling(d);return p!=null&&t(p)}:function(d){let p=s.getSiblings(d),m;for(let f=0;f<p.length;f++){let h=p[f];if(c(d,h))break;s.isTag(h)&&(m=h)}return!!m&&t(m)};case L.Universal:{if(e.namespace!=null&&e.namespace!=="*")throw new Error("Namespaced universal selectors are not yet supported by css-select");return t}}}var $u=A(()=>{er();Au();Ut();oa()});function Ib(t,{adapter:e},r){let n=!!(r!=null&&r.every(i=>i===na||e.isTag(i)&&ke(i,e)!==null));for(let i of t){if(!(i.length>0&&or(i[0])&&i[0].type!==L.Descendant))if(n&&!i.some(Ur))i.unshift(Fb);else continue;i.unshift(Ub)}}function aa(t,e,r){t.forEach(Iu);let{context:n=r,rootFunc:i=ar.trueFunc}=e,o=Array.isArray(n),s=n&&(Array.isArray(n)?n:[n]);if(e.relativeSelector!==!1)Ib(t,e,s);else if(t.some(l=>l.length>0&&or(l[0])))throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled");let c=!1,u=ar.falseFunc;e:for(let l of t){if(l.length>=2){let[m,f]=l;m.type!==L.Pseudo||m.name!=="scope"||(o&&f.type===L.Descendant?l[1]=Bb:(f.type===L.Adjacent||f.type===L.Sibling)&&(c=!0))}let d=i,p=!1;for(let m of l)if(d=qu(d,m,e,s,aa,p),ii(m)===0&&(p=!0),d===ar.falseFunc)continue e;if(d===i)return i;u=u===ar.falseFunc?d:Hb(u,d)}return u.shouldTestNextSiblings=c,u}function Hb(t,e){return r=>t(r)||e(r)}var ar,Fb,Bb,Ub,Ou=A(()=>{ar=ot(Nt(),1);er();$u();Ut();ea();ia();Fb={type:L.Descendant},Bb={type:"_flexibleDescendant"},Ub={type:L.Pseudo,name:"scope",data:null}});function sa(t){var r;let e=t??qb;return e.adapter??(e.adapter=ti),e.equals??(e.equals=((r=e.adapter)==null?void 0:r.equals)??zu),e}function $b(t,e,r){let n=sa(e),i=ju(t,n,r);return i===Ir.falseFunc?Ir.falseFunc:o=>n.adapter.isTag(o)&&i(o)}function ju(t,e,r){return Ob(typeof t=="string"?Dr(t):t,e,r)}function Ob(t,e,r){return aa(t,sa(e),r)}function _u(t){return function(r,n,i){let o=sa(i);typeof r!="function"&&(r=ju(r,o,n));let s=zb(n,o.adapter,r.shouldTestNextSiblings);return t(r,s,o)}}function zb(t,e,r=!1){return r&&(t=jb(t,e)),Array.isArray(t)?e.removeSubsets(t):e.getChildren(t)}function jb(t,e){let r=Array.isArray(t)?t.slice(0):[t],n=r.length;for(let i=0;i<n;i++){let o=ri(r[i],e);r.push(...o)}return r}function Se(t,e,r){return(typeof e=="function"?e:$b(e,r))(t)}var Ir,zu,qb,Wu,ca,ua=A(()=>{Ir=ot(Nt(),1);er();ku();Ou();Ut();oa();zu=(t,e)=>t===e,qb={adapter:ti,equals:zu};Wu=_u((t,e,r)=>t===Ir.falseFunc||!e||e.length===0?[]:Cu(t,e,r)),ca=_u((t,e,r)=>t===Ir.falseFunc||!e||e.length===0?null:rr(t,e,r))});var si=Ts((ai,Hr)=>{(function(t){var e=typeof ai=="object"&&ai,r=typeof Hr=="object"&&Hr&&Hr.exports==e&&Hr,n=typeof global=="object"&&global;(n.global===n||n.window===n)&&(t=n);var i=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,o=/[\x01-\x7F]/g,s=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,c=/<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g,u={"\xAD":"shy","\u200C":"zwnj","\u200D":"zwj","\u200E":"lrm","\u2063":"ic","\u2062":"it","\u2061":"af","\u200F":"rlm","\u200B":"ZeroWidthSpace","\u2060":"NoBreak","\u0311":"DownBreve","\u20DB":"tdot","\u20DC":"DotDot"," ":"Tab","\n":"NewLine","\u2008":"puncsp","\u205F":"MediumSpace","\u2009":"thinsp","\u200A":"hairsp","\u2004":"emsp13","\u2002":"ensp","\u2005":"emsp14","\u2003":"emsp","\u2007":"numsp","\xA0":"nbsp","\u205F\u200A":"ThickSpace","\u203E":"oline",_:"lowbar","\u2010":"dash","\u2013":"ndash","\u2014":"mdash","\u2015":"horbar",",":"comma",";":"semi","\u204F":"bsemi",":":"colon","\u2A74":"Colone","!":"excl","\xA1":"iexcl","?":"quest","\xBF":"iquest",".":"period","\u2025":"nldr","\u2026":"mldr","\xB7":"middot","'":"apos","\u2018":"lsquo","\u2019":"rsquo","\u201A":"sbquo","\u2039":"lsaquo","\u203A":"rsaquo",'"':"quot","\u201C":"ldquo","\u201D":"rdquo","\u201E":"bdquo","\xAB":"laquo","\xBB":"raquo","(":"lpar",")":"rpar","[":"lsqb","]":"rsqb","{":"lcub","}":"rcub","\u2308":"lceil","\u2309":"rceil","\u230A":"lfloor","\u230B":"rfloor","\u2985":"lopar","\u2986":"ropar","\u298B":"lbrke","\u298C":"rbrke","\u298D":"lbrkslu","\u298E":"rbrksld","\u298F":"lbrksld","\u2990":"rbrkslu","\u2991":"langd","\u2992":"rangd","\u2993":"lparlt","\u2994":"rpargt","\u2995":"gtlPar","\u2996":"ltrPar","\u27E6":"lobrk","\u27E7":"robrk","\u27E8":"lang","\u27E9":"rang","\u27EA":"Lang","\u27EB":"Rang","\u27EC":"loang","\u27ED":"roang","\u2772":"lbbrk","\u2773":"rbbrk","\u2016":"Vert","\xA7":"sect","\xB6":"para","@":"commat","*":"ast","/":"sol",undefined:null,"&":"amp","#":"num","%":"percnt","\u2030":"permil","\u2031":"pertenk","\u2020":"dagger","\u2021":"Dagger","\u2022":"bull","\u2043":"hybull","\u2032":"prime","\u2033":"Prime","\u2034":"tprime","\u2057":"qprime","\u2035":"bprime","\u2041":"caret","`":"grave","\xB4":"acute","\u02DC":"tilde","^":"Hat","\xAF":"macr","\u02D8":"breve","\u02D9":"dot","\xA8":"die","\u02DA":"ring","\u02DD":"dblac","\xB8":"cedil","\u02DB":"ogon","\u02C6":"circ","\u02C7":"caron","\xB0":"deg","\xA9":"copy","\xAE":"reg","\u2117":"copysr","\u2118":"wp","\u211E":"rx","\u2127":"mho","\u2129":"iiota","\u2190":"larr","\u219A":"nlarr","\u2192":"rarr","\u219B":"nrarr","\u2191":"uarr","\u2193":"darr","\u2194":"harr","\u21AE":"nharr","\u2195":"varr","\u2196":"nwarr","\u2197":"nearr","\u2198":"searr","\u2199":"swarr","\u219D":"rarrw","\u219D\u0338":"nrarrw","\u219E":"Larr","\u219F":"Uarr","\u21A0":"Rarr","\u21A1":"Darr","\u21A2":"larrtl","\u21A3":"rarrtl","\u21A4":"mapstoleft","\u21A5":"mapstoup","\u21A6":"map","\u21A7":"mapstodown","\u21A9":"larrhk","\u21AA":"rarrhk","\u21AB":"larrlp","\u21AC":"rarrlp","\u21AD":"harrw","\u21B0":"lsh","\u21B1":"rsh","\u21B2":"ldsh","\u21B3":"rdsh","\u21B5":"crarr","\u21B6":"cularr","\u21B7":"curarr","\u21BA":"olarr","\u21BB":"orarr","\u21BC":"lharu","\u21BD":"lhard","\u21BE":"uharr","\u21BF":"uharl","\u21C0":"rharu","\u21C1":"rhard","\u21C2":"dharr","\u21C3":"dharl","\u21C4":"rlarr","\u21C5":"udarr","\u21C6":"lrarr","\u21C7":"llarr","\u21C8":"uuarr","\u21C9":"rrarr","\u21CA":"ddarr","\u21CB":"lrhar","\u21CC":"rlhar","\u21D0":"lArr","\u21CD":"nlArr","\u21D1":"uArr","\u21D2":"rArr","\u21CF":"nrArr","\u21D3":"dArr","\u21D4":"iff","\u21CE":"nhArr","\u21D5":"vArr","\u21D6":"nwArr","\u21D7":"neArr","\u21D8":"seArr","\u21D9":"swArr","\u21DA":"lAarr","\u21DB":"rAarr","\u21DD":"zigrarr","\u21E4":"larrb","\u21E5":"rarrb","\u21F5":"duarr","\u21FD":"loarr","\u21FE":"roarr","\u21FF":"hoarr","\u2200":"forall","\u2201":"comp","\u2202":"part","\u2202\u0338":"npart","\u2203":"exist","\u2204":"nexist","\u2205":"empty","\u2207":"Del","\u2208":"in","\u2209":"notin","\u220B":"ni","\u220C":"notni","\u03F6":"bepsi","\u220F":"prod","\u2210":"coprod","\u2211":"sum","+":"plus","\xB1":"pm","\xF7":"div","\xD7":"times","<":"lt","\u226E":"nlt","<\u20D2":"nvlt","=":"equals","\u2260":"ne","=\u20E5":"bne","\u2A75":"Equal",">":"gt","\u226F":"ngt",">\u20D2":"nvgt","\xAC":"not","|":"vert","\xA6":"brvbar","\u2212":"minus","\u2213":"mp","\u2214":"plusdo","\u2044":"frasl","\u2216":"setmn","\u2217":"lowast","\u2218":"compfn","\u221A":"Sqrt","\u221D":"prop","\u221E":"infin","\u221F":"angrt","\u2220":"ang","\u2220\u20D2":"nang","\u2221":"angmsd","\u2222":"angsph","\u2223":"mid","\u2224":"nmid","\u2225":"par","\u2226":"npar","\u2227":"and","\u2228":"or","\u2229":"cap","\u2229\uFE00":"caps","\u222A":"cup","\u222A\uFE00":"cups","\u222B":"int","\u222C":"Int","\u222D":"tint","\u2A0C":"qint","\u222E":"oint","\u222F":"Conint","\u2230":"Cconint","\u2231":"cwint","\u2232":"cwconint","\u2233":"awconint","\u2234":"there4","\u2235":"becaus","\u2236":"ratio","\u2237":"Colon","\u2238":"minusd","\u223A":"mDDot","\u223B":"homtht","\u223C":"sim","\u2241":"nsim","\u223C\u20D2":"nvsim","\u223D":"bsim","\u223D\u0331":"race","\u223E":"ac","\u223E\u0333":"acE","\u223F":"acd","\u2240":"wr","\u2242":"esim","\u2242\u0338":"nesim","\u2243":"sime","\u2244":"nsime","\u2245":"cong","\u2247":"ncong","\u2246":"simne","\u2248":"ap","\u2249":"nap","\u224A":"ape","\u224B":"apid","\u224B\u0338":"napid","\u224C":"bcong","\u224D":"CupCap","\u226D":"NotCupCap","\u224D\u20D2":"nvap","\u224E":"bump","\u224E\u0338":"nbump","\u224F":"bumpe","\u224F\u0338":"nbumpe","\u2250":"doteq","\u2250\u0338":"nedot","\u2251":"eDot","\u2252":"efDot","\u2253":"erDot","\u2254":"colone","\u2255":"ecolon","\u2256":"ecir","\u2257":"cire","\u2259":"wedgeq","\u225A":"veeeq","\u225C":"trie","\u225F":"equest","\u2261":"equiv","\u2262":"nequiv","\u2261\u20E5":"bnequiv","\u2264":"le","\u2270":"nle","\u2264\u20D2":"nvle","\u2265":"ge","\u2271":"nge","\u2265\u20D2":"nvge","\u2266":"lE","\u2266\u0338":"nlE","\u2267":"gE","\u2267\u0338":"ngE","\u2268\uFE00":"lvnE","\u2268":"lnE","\u2269":"gnE","\u2269\uFE00":"gvnE","\u226A":"ll","\u226A\u0338":"nLtv","\u226A\u20D2":"nLt","\u226B":"gg","\u226B\u0338":"nGtv","\u226B\u20D2":"nGt","\u226C":"twixt","\u2272":"lsim","\u2274":"nlsim","\u2273":"gsim","\u2275":"ngsim","\u2276":"lg","\u2278":"ntlg","\u2277":"gl","\u2279":"ntgl","\u227A":"pr","\u2280":"npr","\u227B":"sc","\u2281":"nsc","\u227C":"prcue","\u22E0":"nprcue","\u227D":"sccue","\u22E1":"nsccue","\u227E":"prsim","\u227F":"scsim","\u227F\u0338":"NotSucceedsTilde","\u2282":"sub","\u2284":"nsub","\u2282\u20D2":"vnsub","\u2283":"sup","\u2285":"nsup","\u2283\u20D2":"vnsup","\u2286":"sube","\u2288":"nsube","\u2287":"supe","\u2289":"nsupe","\u228A\uFE00":"vsubne","\u228A":"subne","\u228B\uFE00":"vsupne","\u228B":"supne","\u228D":"cupdot","\u228E":"uplus","\u228F":"sqsub","\u228F\u0338":"NotSquareSubset","\u2290":"sqsup","\u2290\u0338":"NotSquareSuperset","\u2291":"sqsube","\u22E2":"nsqsube","\u2292":"sqsupe","\u22E3":"nsqsupe","\u2293":"sqcap","\u2293\uFE00":"sqcaps","\u2294":"sqcup","\u2294\uFE00":"sqcups","\u2295":"oplus","\u2296":"ominus","\u2297":"otimes","\u2298":"osol","\u2299":"odot","\u229A":"ocir","\u229B":"oast","\u229D":"odash","\u229E":"plusb","\u229F":"minusb","\u22A0":"timesb","\u22A1":"sdotb","\u22A2":"vdash","\u22AC":"nvdash","\u22A3":"dashv","\u22A4":"top","\u22A5":"bot","\u22A7":"models","\u22A8":"vDash","\u22AD":"nvDash","\u22A9":"Vdash","\u22AE":"nVdash","\u22AA":"Vvdash","\u22AB":"VDash","\u22AF":"nVDash","\u22B0":"prurel","\u22B2":"vltri","\u22EA":"nltri","\u22B3":"vrtri","\u22EB":"nrtri","\u22B4":"ltrie","\u22EC":"nltrie","\u22B4\u20D2":"nvltrie","\u22B5":"rtrie","\u22ED":"nrtrie","\u22B5\u20D2":"nvrtrie","\u22B6":"origof","\u22B7":"imof","\u22B8":"mumap","\u22B9":"hercon","\u22BA":"intcal","\u22BB":"veebar","\u22BD":"barvee","\u22BE":"angrtvb","\u22BF":"lrtri","\u22C0":"Wedge","\u22C1":"Vee","\u22C2":"xcap","\u22C3":"xcup","\u22C4":"diam","\u22C5":"sdot","\u22C6":"Star","\u22C7":"divonx","\u22C8":"bowtie","\u22C9":"ltimes","\u22CA":"rtimes","\u22CB":"lthree","\u22CC":"rthree","\u22CD":"bsime","\u22CE":"cuvee","\u22CF":"cuwed","\u22D0":"Sub","\u22D1":"Sup","\u22D2":"Cap","\u22D3":"Cup","\u22D4":"fork","\u22D5":"epar","\u22D6":"ltdot","\u22D7":"gtdot","\u22D8":"Ll","\u22D8\u0338":"nLl","\u22D9":"Gg","\u22D9\u0338":"nGg","\u22DA\uFE00":"lesg","\u22DA":"leg","\u22DB":"gel","\u22DB\uFE00":"gesl","\u22DE":"cuepr","\u22DF":"cuesc","\u22E6":"lnsim","\u22E7":"gnsim","\u22E8":"prnsim","\u22E9":"scnsim","\u22EE":"vellip","\u22EF":"ctdot","\u22F0":"utdot","\u22F1":"dtdot","\u22F2":"disin","\u22F3":"isinsv","\u22F4":"isins","\u22F5":"isindot","\u22F5\u0338":"notindot","\u22F6":"notinvc","\u22F7":"notinvb","\u22F9":"isinE","\u22F9\u0338":"notinE","\u22FA":"nisd","\u22FB":"xnis","\u22FC":"nis","\u22FD":"notnivc","\u22FE":"notnivb","\u2305":"barwed","\u2306":"Barwed","\u230C":"drcrop","\u230D":"dlcrop","\u230E":"urcrop","\u230F":"ulcrop","\u2310":"bnot","\u2312":"profline","\u2313":"profsurf","\u2315":"telrec","\u2316":"target","\u231C":"ulcorn","\u231D":"urcorn","\u231E":"dlcorn","\u231F":"drcorn","\u2322":"frown","\u2323":"smile","\u232D":"cylcty","\u232E":"profalar","\u2336":"topbot","\u233D":"ovbar","\u233F":"solbar","\u237C":"angzarr","\u23B0":"lmoust","\u23B1":"rmoust","\u23B4":"tbrk","\u23B5":"bbrk","\u23B6":"bbrktbrk","\u23DC":"OverParenthesis","\u23DD":"UnderParenthesis","\u23DE":"OverBrace","\u23DF":"UnderBrace","\u23E2":"trpezium","\u23E7":"elinters","\u2423":"blank","\u2500":"boxh","\u2502":"boxv","\u250C":"boxdr","\u2510":"boxdl","\u2514":"boxur","\u2518":"boxul","\u251C":"boxvr","\u2524":"boxvl","\u252C":"boxhd","\u2534":"boxhu","\u253C":"boxvh","\u2550":"boxH","\u2551":"boxV","\u2552":"boxdR","\u2553":"boxDr","\u2554":"boxDR","\u2555":"boxdL","\u2556":"boxDl","\u2557":"boxDL","\u2558":"boxuR","\u2559":"boxUr","\u255A":"boxUR","\u255B":"boxuL","\u255C":"boxUl","\u255D":"boxUL","\u255E":"boxvR","\u255F":"boxVr","\u2560":"boxVR","\u2561":"boxvL","\u2562":"boxVl","\u2563":"boxVL","\u2564":"boxHd","\u2565":"boxhD","\u2566":"boxHD","\u2567":"boxHu","\u2568":"boxhU","\u2569":"boxHU","\u256A":"boxvH","\u256B":"boxVh","\u256C":"boxVH","\u2580":"uhblk","\u2584":"lhblk","\u2588":"block","\u2591":"blk14","\u2592":"blk12","\u2593":"blk34","\u25A1":"squ","\u25AA":"squf","\u25AB":"EmptyVerySmallSquare","\u25AD":"rect","\u25AE":"marker","\u25B1":"fltns","\u25B3":"xutri","\u25B4":"utrif","\u25B5":"utri","\u25B8":"rtrif","\u25B9":"rtri","\u25BD":"xdtri","\u25BE":"dtrif","\u25BF":"dtri","\u25C2":"ltrif","\u25C3":"ltri","\u25CA":"loz","\u25CB":"cir","\u25EC":"tridot","\u25EF":"xcirc","\u25F8":"ultri","\u25F9":"urtri","\u25FA":"lltri","\u25FB":"EmptySmallSquare","\u25FC":"FilledSmallSquare","\u2605":"starf","\u2606":"star","\u260E":"phone","\u2640":"female","\u2642":"male","\u2660":"spades","\u2663":"clubs","\u2665":"hearts","\u2666":"diams","\u266A":"sung","\u2713":"check","\u2717":"cross","\u2720":"malt","\u2736":"sext","\u2758":"VerticalSeparator","\u27C8":"bsolhsub","\u27C9":"suphsol","\u27F5":"xlarr","\u27F6":"xrarr","\u27F7":"xharr","\u27F8":"xlArr","\u27F9":"xrArr","\u27FA":"xhArr","\u27FC":"xmap","\u27FF":"dzigrarr","\u2902":"nvlArr","\u2903":"nvrArr","\u2904":"nvHarr","\u2905":"Map","\u290C":"lbarr","\u290D":"rbarr","\u290E":"lBarr","\u290F":"rBarr","\u2910":"RBarr","\u2911":"DDotrahd","\u2912":"UpArrowBar","\u2913":"DownArrowBar","\u2916":"Rarrtl","\u2919":"latail","\u291A":"ratail","\u291B":"lAtail","\u291C":"rAtail","\u291D":"larrfs","\u291E":"rarrfs","\u291F":"larrbfs","\u2920":"rarrbfs","\u2923":"nwarhk","\u2924":"nearhk","\u2925":"searhk","\u2926":"swarhk","\u2927":"nwnear","\u2928":"toea","\u2929":"tosa","\u292A":"swnwar","\u2933":"rarrc","\u2933\u0338":"nrarrc","\u2935":"cudarrr","\u2936":"ldca","\u2937":"rdca","\u2938":"cudarrl","\u2939":"larrpl","\u293C":"curarrm","\u293D":"cularrp","\u2945":"rarrpl","\u2948":"harrcir","\u2949":"Uarrocir","\u294A":"lurdshar","\u294B":"ldrushar","\u294E":"LeftRightVector","\u294F":"RightUpDownVector","\u2950":"DownLeftRightVector","\u2951":"LeftUpDownVector","\u2952":"LeftVectorBar","\u2953":"RightVectorBar","\u2954":"RightUpVectorBar","\u2955":"RightDownVectorBar","\u2956":"DownLeftVectorBar","\u2957":"DownRightVectorBar","\u2958":"LeftUpVectorBar","\u2959":"LeftDownVectorBar","\u295A":"LeftTeeVector","\u295B":"RightTeeVector","\u295C":"RightUpTeeVector","\u295D":"RightDownTeeVector","\u295E":"DownLeftTeeVector","\u295F":"DownRightTeeVector","\u2960":"LeftUpTeeVector","\u2961":"LeftDownTeeVector","\u2962":"lHar","\u2963":"uHar","\u2964":"rHar","\u2965":"dHar","\u2966":"luruhar","\u2967":"ldrdhar","\u2968":"ruluhar","\u2969":"rdldhar","\u296A":"lharul","\u296B":"llhard","\u296C":"rharul","\u296D":"lrhard","\u296E":"udhar","\u296F":"duhar","\u2970":"RoundImplies","\u2971":"erarr","\u2972":"simrarr","\u2973":"larrsim","\u2974":"rarrsim","\u2975":"rarrap","\u2976":"ltlarr","\u2978":"gtrarr","\u2979":"subrarr","\u297B":"suplarr","\u297C":"lfisht","\u297D":"rfisht","\u297E":"ufisht","\u297F":"dfisht","\u299A":"vzigzag","\u299C":"vangrt","\u299D":"angrtvbd","\u29A4":"ange","\u29A5":"range","\u29A6":"dwangle","\u29A7":"uwangle","\u29A8":"angmsdaa","\u29A9":"angmsdab","\u29AA":"angmsdac","\u29AB":"angmsdad","\u29AC":"angmsdae","\u29AD":"angmsdaf","\u29AE":"angmsdag","\u29AF":"angmsdah","\u29B0":"bemptyv","\u29B1":"demptyv","\u29B2":"cemptyv","\u29B3":"raemptyv","\u29B4":"laemptyv","\u29B5":"ohbar","\u29B6":"omid","\u29B7":"opar","\u29B9":"operp","\u29BB":"olcross","\u29BC":"odsold","\u29BE":"olcir","\u29BF":"ofcir","\u29C0":"olt","\u29C1":"ogt","\u29C2":"cirscir","\u29C3":"cirE","\u29C4":"solb","\u29C5":"bsolb","\u29C9":"boxbox","\u29CD":"trisb","\u29CE":"rtriltri","\u29CF":"LeftTriangleBar","\u29CF\u0338":"NotLeftTriangleBar","\u29D0":"RightTriangleBar","\u29D0\u0338":"NotRightTriangleBar","\u29DC":"iinfin","\u29DD":"infintie","\u29DE":"nvinfin","\u29E3":"eparsl","\u29E4":"smeparsl","\u29E5":"eqvparsl","\u29EB":"lozf","\u29F4":"RuleDelayed","\u29F6":"dsol","\u2A00":"xodot","\u2A01":"xoplus","\u2A02":"xotime","\u2A04":"xuplus","\u2A06":"xsqcup","\u2A0D":"fpartint","\u2A10":"cirfnint","\u2A11":"awint","\u2A12":"rppolint","\u2A13":"scpolint","\u2A14":"npolint","\u2A15":"pointint","\u2A16":"quatint","\u2A17":"intlarhk","\u2A22":"pluscir","\u2A23":"plusacir","\u2A24":"simplus","\u2A25":"plusdu","\u2A26":"plussim","\u2A27":"plustwo","\u2A29":"mcomma","\u2A2A":"minusdu","\u2A2D":"loplus","\u2A2E":"roplus","\u2A2F":"Cross","\u2A30":"timesd","\u2A31":"timesbar","\u2A33":"smashp","\u2A34":"lotimes","\u2A35":"rotimes","\u2A36":"otimesas","\u2A37":"Otimes","\u2A38":"odiv","\u2A39":"triplus","\u2A3A":"triminus","\u2A3B":"tritime","\u2A3C":"iprod","\u2A3F":"amalg","\u2A40":"capdot","\u2A42":"ncup","\u2A43":"ncap","\u2A44":"capand","\u2A45":"cupor","\u2A46":"cupcap","\u2A47":"capcup","\u2A48":"cupbrcap","\u2A49":"capbrcup","\u2A4A":"cupcup","\u2A4B":"capcap","\u2A4C":"ccups","\u2A4D":"ccaps","\u2A50":"ccupssm","\u2A53":"And","\u2A54":"Or","\u2A55":"andand","\u2A56":"oror","\u2A57":"orslope","\u2A58":"andslope","\u2A5A":"andv","\u2A5B":"orv","\u2A5C":"andd","\u2A5D":"ord","\u2A5F":"wedbar","\u2A66":"sdote","\u2A6A":"simdot","\u2A6D":"congdot","\u2A6D\u0338":"ncongdot","\u2A6E":"easter","\u2A6F":"apacir","\u2A70":"apE","\u2A70\u0338":"napE","\u2A71":"eplus","\u2A72":"pluse","\u2A73":"Esim","\u2A77":"eDDot","\u2A78":"equivDD","\u2A79":"ltcir","\u2A7A":"gtcir","\u2A7B":"ltquest","\u2A7C":"gtquest","\u2A7D":"les","\u2A7D\u0338":"nles","\u2A7E":"ges","\u2A7E\u0338":"nges","\u2A7F":"lesdot","\u2A80":"gesdot","\u2A81":"lesdoto","\u2A82":"gesdoto","\u2A83":"lesdotor","\u2A84":"gesdotol","\u2A85":"lap","\u2A86":"gap","\u2A87":"lne","\u2A88":"gne","\u2A89":"lnap","\u2A8A":"gnap","\u2A8B":"lEg","\u2A8C":"gEl","\u2A8D":"lsime","\u2A8E":"gsime","\u2A8F":"lsimg","\u2A90":"gsiml","\u2A91":"lgE","\u2A92":"glE","\u2A93":"lesges","\u2A94":"gesles","\u2A95":"els","\u2A96":"egs","\u2A97":"elsdot","\u2A98":"egsdot","\u2A99":"el","\u2A9A":"eg","\u2A9D":"siml","\u2A9E":"simg","\u2A9F":"simlE","\u2AA0":"simgE","\u2AA1":"LessLess","\u2AA1\u0338":"NotNestedLessLess","\u2AA2":"GreaterGreater","\u2AA2\u0338":"NotNestedGreaterGreater","\u2AA4":"glj","\u2AA5":"gla","\u2AA6":"ltcc","\u2AA7":"gtcc","\u2AA8":"lescc","\u2AA9":"gescc","\u2AAA":"smt","\u2AAB":"lat","\u2AAC":"smte","\u2AAC\uFE00":"smtes","\u2AAD":"late","\u2AAD\uFE00":"lates","\u2AAE":"bumpE","\u2AAF":"pre","\u2AAF\u0338":"npre","\u2AB0":"sce","\u2AB0\u0338":"nsce","\u2AB3":"prE","\u2AB4":"scE","\u2AB5":"prnE","\u2AB6":"scnE","\u2AB7":"prap","\u2AB8":"scap","\u2AB9":"prnap","\u2ABA":"scnap","\u2ABB":"Pr","\u2ABC":"Sc","\u2ABD":"subdot","\u2ABE":"supdot","\u2ABF":"subplus","\u2AC0":"supplus","\u2AC1":"submult","\u2AC2":"supmult","\u2AC3":"subedot","\u2AC4":"supedot","\u2AC5":"subE","\u2AC5\u0338":"nsubE","\u2AC6":"supE","\u2AC6\u0338":"nsupE","\u2AC7":"subsim","\u2AC8":"supsim","\u2ACB\uFE00":"vsubnE","\u2ACB":"subnE","\u2ACC\uFE00":"vsupnE","\u2ACC":"supnE","\u2ACF":"csub","\u2AD0":"csup","\u2AD1":"csube","\u2AD2":"csupe","\u2AD3":"subsup","\u2AD4":"supsub","\u2AD5":"subsub","\u2AD6":"supsup","\u2AD7":"suphsub","\u2AD8":"supdsub","\u2AD9":"forkv","\u2ADA":"topfork","\u2ADB":"mlcp","\u2AE4":"Dashv","\u2AE6":"Vdashl","\u2AE7":"Barv","\u2AE8":"vBar","\u2AE9":"vBarv","\u2AEB":"Vbar","\u2AEC":"Not","\u2AED":"bNot","\u2AEE":"rnmid","\u2AEF":"cirmid","\u2AF0":"midcir","\u2AF1":"topcir","\u2AF2":"nhpar","\u2AF3":"parsim","\u2AFD":"parsl","\u2AFD\u20E5":"nparsl","\u266D":"flat","\u266E":"natur","\u266F":"sharp","\xA4":"curren","\xA2":"cent",$:"dollar","\xA3":"pound","\xA5":"yen","\u20AC":"euro","\xB9":"sup1","\xBD":"half","\u2153":"frac13","\xBC":"frac14","\u2155":"frac15","\u2159":"frac16","\u215B":"frac18","\xB2":"sup2","\u2154":"frac23","\u2156":"frac25","\xB3":"sup3","\xBE":"frac34","\u2157":"frac35","\u215C":"frac38","\u2158":"frac45","\u215A":"frac56","\u215D":"frac58","\u215E":"frac78","\u{1D4B6}":"ascr","\u{1D552}":"aopf","\u{1D51E}":"afr","\u{1D538}":"Aopf","\u{1D504}":"Afr","\u{1D49C}":"Ascr",\u00AA:"ordf",\u00E1:"aacute",\u00C1:"Aacute",\u00E0:"agrave",\u00C0:"Agrave",\u0103:"abreve",\u0102:"Abreve",\u00E2:"acirc",\u00C2:"Acirc",\u00E5:"aring",\u00C5:"angst",\u00E4:"auml",\u00C4:"Auml",\u00E3:"atilde",\u00C3:"Atilde",\u0105:"aogon",\u0104:"Aogon",\u0101:"amacr",\u0100:"Amacr",\u00E6:"aelig",\u00C6:"AElig","\u{1D4B7}":"bscr","\u{1D553}":"bopf","\u{1D51F}":"bfr","\u{1D539}":"Bopf",\u212C:"Bscr","\u{1D505}":"Bfr","\u{1D520}":"cfr","\u{1D4B8}":"cscr","\u{1D554}":"copf",\u212D:"Cfr","\u{1D49E}":"Cscr",\u2102:"Copf",\u0107:"cacute",\u0106:"Cacute",\u0109:"ccirc",\u0108:"Ccirc",\u010D:"ccaron",\u010C:"Ccaron",\u010B:"cdot",\u010A:"Cdot",\u00E7:"ccedil",\u00C7:"Ccedil","\u2105":"incare","\u{1D521}":"dfr","\u2146":"dd","\u{1D555}":"dopf","\u{1D4B9}":"dscr","\u{1D49F}":"Dscr","\u{1D507}":"Dfr","\u2145":"DD","\u{1D53B}":"Dopf",\u010F:"dcaron",\u010E:"Dcaron",\u0111:"dstrok",\u0110:"Dstrok",\u00F0:"eth",\u00D0:"ETH","\u2147":"ee",\u212F:"escr","\u{1D522}":"efr","\u{1D556}":"eopf",\u2130:"Escr","\u{1D508}":"Efr","\u{1D53C}":"Eopf",\u00E9:"eacute",\u00C9:"Eacute",\u00E8:"egrave",\u00C8:"Egrave",\u00EA:"ecirc",\u00CA:"Ecirc",\u011B:"ecaron",\u011A:"Ecaron",\u00EB:"euml",\u00CB:"Euml",\u0117:"edot",\u0116:"Edot",\u0119:"eogon",\u0118:"Eogon",\u0113:"emacr",\u0112:"Emacr","\u{1D523}":"ffr","\u{1D557}":"fopf","\u{1D4BB}":"fscr","\u{1D509}":"Ffr","\u{1D53D}":"Fopf",\u2131:"Fscr",\uFB00:"fflig",\uFB03:"ffilig",\uFB04:"ffllig",\uFB01:"filig",fj:"fjlig",\uFB02:"fllig",\u0192:"fnof",\u210A:"gscr","\u{1D558}":"gopf","\u{1D524}":"gfr","\u{1D4A2}":"Gscr","\u{1D53E}":"Gopf","\u{1D50A}":"Gfr",\u01F5:"gacute",\u011F:"gbreve",\u011E:"Gbreve",\u011D:"gcirc",\u011C:"Gcirc",\u0121:"gdot",\u0120:"Gdot",\u0122:"Gcedil","\u{1D525}":"hfr",\u210E:"planckh","\u{1D4BD}":"hscr","\u{1D559}":"hopf",\u210B:"Hscr",\u210C:"Hfr",\u210D:"Hopf",\u0125:"hcirc",\u0124:"Hcirc",\u210F:"hbar",\u0127:"hstrok",\u0126:"Hstrok","\u{1D55A}":"iopf","\u{1D526}":"ifr","\u{1D4BE}":"iscr","\u2148":"ii","\u{1D540}":"Iopf",\u2110:"Iscr",\u2111:"Im",\u00ED:"iacute",\u00CD:"Iacute",\u00EC:"igrave",\u00CC:"Igrave",\u00EE:"icirc",\u00CE:"Icirc",\u00EF:"iuml",\u00CF:"Iuml",\u0129:"itilde",\u0128:"Itilde",\u0130:"Idot",\u012F:"iogon",\u012E:"Iogon",\u012B:"imacr",\u012A:"Imacr",\u0133:"ijlig",\u0132:"IJlig",\u0131:"imath","\u{1D4BF}":"jscr","\u{1D55B}":"jopf","\u{1D527}":"jfr","\u{1D4A5}":"Jscr","\u{1D50D}":"Jfr","\u{1D541}":"Jopf",\u0135:"jcirc",\u0134:"Jcirc","\u0237":"jmath","\u{1D55C}":"kopf","\u{1D4C0}":"kscr","\u{1D528}":"kfr","\u{1D4A6}":"Kscr","\u{1D542}":"Kopf","\u{1D50E}":"Kfr",\u0137:"kcedil",\u0136:"Kcedil","\u{1D529}":"lfr","\u{1D4C1}":"lscr",\u2113:"ell","\u{1D55D}":"lopf",\u2112:"Lscr","\u{1D50F}":"Lfr","\u{1D543}":"Lopf",\u013A:"lacute",\u0139:"Lacute",\u013E:"lcaron",\u013D:"Lcaron",\u013C:"lcedil",\u013B:"Lcedil",\u0142:"lstrok",\u0141:"Lstrok",\u0140:"lmidot",\u013F:"Lmidot","\u{1D52A}":"mfr","\u{1D55E}":"mopf","\u{1D4C2}":"mscr","\u{1D510}":"Mfr","\u{1D544}":"Mopf",\u2133:"Mscr","\u{1D52B}":"nfr","\u{1D55F}":"nopf","\u{1D4C3}":"nscr",\u2115:"Nopf","\u{1D4A9}":"Nscr","\u{1D511}":"Nfr",\u0144:"nacute",\u0143:"Nacute",\u0148:"ncaron",\u0147:"Ncaron",\u00F1:"ntilde",\u00D1:"Ntilde",\u0146:"ncedil",\u0145:"Ncedil","\u2116":"numero",\u014B:"eng",\u014A:"ENG","\u{1D560}":"oopf","\u{1D52C}":"ofr",\u2134:"oscr","\u{1D4AA}":"Oscr","\u{1D512}":"Ofr","\u{1D546}":"Oopf",\u00BA:"ordm",\u00F3:"oacute",\u00D3:"Oacute",\u00F2:"ograve",\u00D2:"Ograve",\u00F4:"ocirc",\u00D4:"Ocirc",\u00F6:"ouml",\u00D6:"Ouml",\u0151:"odblac",\u0150:"Odblac",\u00F5:"otilde",\u00D5:"Otilde",\u00F8:"oslash",\u00D8:"Oslash",\u014D:"omacr",\u014C:"Omacr",\u0153:"oelig",\u0152:"OElig","\u{1D52D}":"pfr","\u{1D4C5}":"pscr","\u{1D561}":"popf",\u2119:"Popf","\u{1D513}":"Pfr","\u{1D4AB}":"Pscr","\u{1D562}":"qopf","\u{1D52E}":"qfr","\u{1D4C6}":"qscr","\u{1D4AC}":"Qscr","\u{1D514}":"Qfr",\u211A:"Qopf",\u0138:"kgreen","\u{1D52F}":"rfr","\u{1D563}":"ropf","\u{1D4C7}":"rscr",\u211B:"Rscr",\u211C:"Re",\u211D:"Ropf",\u0155:"racute",\u0154:"Racute",\u0159:"rcaron",\u0158:"Rcaron",\u0157:"rcedil",\u0156:"Rcedil","\u{1D564}":"sopf","\u{1D4C8}":"sscr","\u{1D530}":"sfr","\u{1D54A}":"Sopf","\u{1D516}":"Sfr","\u{1D4AE}":"Sscr","\u24C8":"oS",\u015B:"sacute",\u015A:"Sacute",\u015D:"scirc",\u015C:"Scirc",\u0161:"scaron",\u0160:"Scaron",\u015F:"scedil",\u015E:"Scedil",\u00DF:"szlig","\u{1D531}":"tfr","\u{1D4C9}":"tscr","\u{1D565}":"topf","\u{1D4AF}":"Tscr","\u{1D517}":"Tfr","\u{1D54B}":"Topf",\u0165:"tcaron",\u0164:"Tcaron",\u0163:"tcedil",\u0162:"Tcedil","\u2122":"trade",\u0167:"tstrok",\u0166:"Tstrok","\u{1D4CA}":"uscr","\u{1D566}":"uopf","\u{1D532}":"ufr","\u{1D54C}":"Uopf","\u{1D518}":"Ufr","\u{1D4B0}":"Uscr",\u00FA:"uacute",\u00DA:"Uacute",\u00F9:"ugrave",\u00D9:"Ugrave",\u016D:"ubreve",\u016C:"Ubreve",\u00FB:"ucirc",\u00DB:"Ucirc",\u016F:"uring",\u016E:"Uring",\u00FC:"uuml",\u00DC:"Uuml",\u0171:"udblac",\u0170:"Udblac",\u0169:"utilde",\u0168:"Utilde",\u0173:"uogon",\u0172:"Uogon",\u016B:"umacr",\u016A:"Umacr","\u{1D533}":"vfr","\u{1D567}":"vopf","\u{1D4CB}":"vscr","\u{1D519}":"Vfr","\u{1D54D}":"Vopf","\u{1D4B1}":"Vscr","\u{1D568}":"wopf","\u{1D4CC}":"wscr","\u{1D534}":"wfr","\u{1D4B2}":"Wscr","\u{1D54E}":"Wopf","\u{1D51A}":"Wfr",\u0175:"wcirc",\u0174:"Wcirc","\u{1D535}":"xfr","\u{1D4CD}":"xscr","\u{1D569}":"xopf","\u{1D54F}":"Xopf","\u{1D51B}":"Xfr","\u{1D4B3}":"Xscr","\u{1D536}":"yfr","\u{1D4CE}":"yscr","\u{1D56A}":"yopf","\u{1D4B4}":"Yscr","\u{1D51C}":"Yfr","\u{1D550}":"Yopf",\u00FD:"yacute",\u00DD:"Yacute",\u0177:"ycirc",\u0176:"Ycirc",\u00FF:"yuml",\u0178:"Yuml","\u{1D4CF}":"zscr","\u{1D537}":"zfr","\u{1D56B}":"zopf",\u2128:"Zfr",\u2124:"Zopf","\u{1D4B5}":"Zscr",\u017A:"zacute",\u0179:"Zacute",\u017E:"zcaron",\u017D:"Zcaron",\u017C:"zdot",\u017B:"Zdot",\u01B5:"imped",\u00FE:"thorn",\u00DE:"THORN",\u0149:"napos",\u03B1:"alpha",\u0391:"Alpha",\u03B2:"beta",\u0392:"Beta",\u03B3:"gamma",\u0393:"Gamma",\u03B4:"delta",\u0394:"Delta",\u03B5:"epsi","\u03F5":"epsiv",\u0395:"Epsilon",\u03DD:"gammad",\u03DC:"Gammad",\u03B6:"zeta",\u0396:"Zeta",\u03B7:"eta",\u0397:"Eta",\u03B8:"theta",\u03D1:"thetav",\u0398:"Theta",\u03B9:"iota",\u0399:"Iota",\u03BA:"kappa",\u03F0:"kappav",\u039A:"Kappa",\u03BB:"lambda",\u039B:"Lambda",\u03BC:"mu",\u00B5:"micro",\u039C:"Mu",\u03BD:"nu",\u039D:"Nu",\u03BE:"xi",\u039E:"Xi",\u03BF:"omicron",\u039F:"Omicron",\u03C0:"pi",\u03D6:"piv",\u03A0:"Pi",\u03C1:"rho",\u03F1:"rhov",\u03A1:"Rho",\u03C3:"sigma",\u03A3:"Sigma",\u03C2:"sigmaf",\u03C4:"tau",\u03A4:"Tau",\u03C5:"upsi",\u03A5:"Upsilon",\u03D2:"Upsi",\u03C6:"phi",\u03D5:"phiv",\u03A6:"Phi",\u03C7:"chi",\u03A7:"Chi",\u03C8:"psi",\u03A8:"Psi",\u03C9:"omega",\u03A9:"ohm",\u0430:"acy",\u0410:"Acy",\u0431:"bcy",\u0411:"Bcy",\u0432:"vcy",\u0412:"Vcy",\u0433:"gcy",\u0413:"Gcy",\u0453:"gjcy",\u0403:"GJcy",\u0434:"dcy",\u0414:"Dcy",\u0452:"djcy",\u0402:"DJcy",\u0435:"iecy",\u0415:"IEcy",\u0451:"iocy",\u0401:"IOcy",\u0454:"jukcy",\u0404:"Jukcy",\u0436:"zhcy",\u0416:"ZHcy",\u0437:"zcy",\u0417:"Zcy",\u0455:"dscy",\u0405:"DScy",\u0438:"icy",\u0418:"Icy",\u0456:"iukcy",\u0406:"Iukcy",\u0457:"yicy",\u0407:"YIcy",\u0439:"jcy",\u0419:"Jcy",\u0458:"jsercy",\u0408:"Jsercy",\u043A:"kcy",\u041A:"Kcy",\u045C:"kjcy",\u040C:"KJcy",\u043B:"lcy",\u041B:"Lcy",\u0459:"ljcy",\u0409:"LJcy",\u043C:"mcy",\u041C:"Mcy",\u043D:"ncy",\u041D:"Ncy",\u045A:"njcy",\u040A:"NJcy",\u043E:"ocy",\u041E:"Ocy",\u043F:"pcy",\u041F:"Pcy",\u0440:"rcy",\u0420:"Rcy",\u0441:"scy",\u0421:"Scy",\u0442:"tcy",\u0422:"Tcy",\u045B:"tshcy",\u040B:"TSHcy",\u0443:"ucy",\u0423:"Ucy",\u045E:"ubrcy",\u040E:"Ubrcy",\u0444:"fcy",\u0424:"Fcy",\u0445:"khcy",\u0425:"KHcy",\u0446:"tscy",\u0426:"TScy",\u0447:"chcy",\u0427:"CHcy",\u045F:"dzcy",\u040F:"DZcy",\u0448:"shcy",\u0428:"SHcy",\u0449:"shchcy",\u0429:"SHCHcy",\u044A:"hardcy",\u042A:"HARDcy",\u044B:"ycy",\u042B:"Ycy",\u044C:"softcy",\u042C:"SOFTcy",\u044D:"ecy",\u042D:"Ecy",\u044E:"yucy",\u042E:"YUcy",\u044F:"yacy",\u042F:"YAcy",\u2135:"aleph",\u2136:"beth",\u2137:"gimel",\u2138:"daleth"},l=/["&'<>`]/g,d={'"':""","&":"&","'":"'","<":"<",">":">","`":"`"},p=/&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/,m=/[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,f=/&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g,h={aacute:"\xE1",Aacute:"\xC1",abreve:"\u0103",Abreve:"\u0102",ac:"\u223E",acd:"\u223F",acE:"\u223E\u0333",acirc:"\xE2",Acirc:"\xC2",acute:"\xB4",acy:"\u0430",Acy:"\u0410",aelig:"\xE6",AElig:"\xC6",af:"\u2061",afr:"\u{1D51E}",Afr:"\u{1D504}",agrave:"\xE0",Agrave:"\xC0",alefsym:"\u2135",aleph:"\u2135",alpha:"\u03B1",Alpha:"\u0391",amacr:"\u0101",Amacr:"\u0100",amalg:"\u2A3F",amp:"&",AMP:"&",and:"\u2227",And:"\u2A53",andand:"\u2A55",andd:"\u2A5C",andslope:"\u2A58",andv:"\u2A5A",ang:"\u2220",ange:"\u29A4",angle:"\u2220",angmsd:"\u2221",angmsdaa:"\u29A8",angmsdab:"\u29A9",angmsdac:"\u29AA",angmsdad:"\u29AB",angmsdae:"\u29AC",angmsdaf:"\u29AD",angmsdag:"\u29AE",angmsdah:"\u29AF",angrt:"\u221F",angrtvb:"\u22BE",angrtvbd:"\u299D",angsph:"\u2222",angst:"\xC5",angzarr:"\u237C",aogon:"\u0105",Aogon:"\u0104",aopf:"\u{1D552}",Aopf:"\u{1D538}",ap:"\u2248",apacir:"\u2A6F",ape:"\u224A",apE:"\u2A70",apid:"\u224B",apos:"'",ApplyFunction:"\u2061",approx:"\u2248",approxeq:"\u224A",aring:"\xE5",Aring:"\xC5",ascr:"\u{1D4B6}",Ascr:"\u{1D49C}",Assign:"\u2254",ast:"*",asymp:"\u2248",asympeq:"\u224D",atilde:"\xE3",Atilde:"\xC3",auml:"\xE4",Auml:"\xC4",awconint:"\u2233",awint:"\u2A11",backcong:"\u224C",backepsilon:"\u03F6",backprime:"\u2035",backsim:"\u223D",backsimeq:"\u22CD",Backslash:"\u2216",Barv:"\u2AE7",barvee:"\u22BD",barwed:"\u2305",Barwed:"\u2306",barwedge:"\u2305",bbrk:"\u23B5",bbrktbrk:"\u23B6",bcong:"\u224C",bcy:"\u0431",Bcy:"\u0411",bdquo:"\u201E",becaus:"\u2235",because:"\u2235",Because:"\u2235",bemptyv:"\u29B0",bepsi:"\u03F6",bernou:"\u212C",Bernoullis:"\u212C",beta:"\u03B2",Beta:"\u0392",beth:"\u2136",between:"\u226C",bfr:"\u{1D51F}",Bfr:"\u{1D505}",bigcap:"\u22C2",bigcirc:"\u25EF",bigcup:"\u22C3",bigodot:"\u2A00",bigoplus:"\u2A01",bigotimes:"\u2A02",bigsqcup:"\u2A06",bigstar:"\u2605",bigtriangledown:"\u25BD",bigtriangleup:"\u25B3",biguplus:"\u2A04",bigvee:"\u22C1",bigwedge:"\u22C0",bkarow:"\u290D",blacklozenge:"\u29EB",blacksquare:"\u25AA",blacktriangle:"\u25B4",blacktriangledown:"\u25BE",blacktriangleleft:"\u25C2",blacktriangleright:"\u25B8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20E5",bnequiv:"\u2261\u20E5",bnot:"\u2310",bNot:"\u2AED",bopf:"\u{1D553}",Bopf:"\u{1D539}",bot:"\u22A5",bottom:"\u22A5",bowtie:"\u22C8",boxbox:"\u29C9",boxdl:"\u2510",boxdL:"\u2555",boxDl:"\u2556",boxDL:"\u2557",boxdr:"\u250C",boxdR:"\u2552",boxDr:"\u2553",boxDR:"\u2554",boxh:"\u2500",boxH:"\u2550",boxhd:"\u252C",boxhD:"\u2565",boxHd:"\u2564",boxHD:"\u2566",boxhu:"\u2534",boxhU:"\u2568",boxHu:"\u2567",boxHU:"\u2569",boxminus:"\u229F",boxplus:"\u229E",boxtimes:"\u22A0",boxul:"\u2518",boxuL:"\u255B",boxUl:"\u255C",boxUL:"\u255D",boxur:"\u2514",boxuR:"\u2558",boxUr:"\u2559",boxUR:"\u255A",boxv:"\u2502",boxV:"\u2551",boxvh:"\u253C",boxvH:"\u256A",boxVh:"\u256B",boxVH:"\u256C",boxvl:"\u2524",boxvL:"\u2561",boxVl:"\u2562",boxVL:"\u2563",boxvr:"\u251C",boxvR:"\u255E",boxVr:"\u255F",boxVR:"\u2560",bprime:"\u2035",breve:"\u02D8",Breve:"\u02D8",brvbar:"\xA6",bscr:"\u{1D4B7}",Bscr:"\u212C",bsemi:"\u204F",bsim:"\u223D",bsime:"\u22CD",bsol:"\\",bsolb:"\u29C5",bsolhsub:"\u27C8",bull:"\u2022",bullet:"\u2022",bump:"\u224E",bumpe:"\u224F",bumpE:"\u2AAE",bumpeq:"\u224F",Bumpeq:"\u224E",cacute:"\u0107",Cacute:"\u0106",cap:"\u2229",Cap:"\u22D2",capand:"\u2A44",capbrcup:"\u2A49",capcap:"\u2A4B",capcup:"\u2A47",capdot:"\u2A40",CapitalDifferentialD:"\u2145",caps:"\u2229\uFE00",caret:"\u2041",caron:"\u02C7",Cayleys:"\u212D",ccaps:"\u2A4D",ccaron:"\u010D",Ccaron:"\u010C",ccedil:"\xE7",Ccedil:"\xC7",ccirc:"\u0109",Ccirc:"\u0108",Cconint:"\u2230",ccups:"\u2A4C",ccupssm:"\u2A50",cdot:"\u010B",Cdot:"\u010A",cedil:"\xB8",Cedilla:"\xB8",cemptyv:"\u29B2",cent:"\xA2",centerdot:"\xB7",CenterDot:"\xB7",cfr:"\u{1D520}",Cfr:"\u212D",chcy:"\u0447",CHcy:"\u0427",check:"\u2713",checkmark:"\u2713",chi:"\u03C7",Chi:"\u03A7",cir:"\u25CB",circ:"\u02C6",circeq:"\u2257",circlearrowleft:"\u21BA",circlearrowright:"\u21BB",circledast:"\u229B",circledcirc:"\u229A",circleddash:"\u229D",CircleDot:"\u2299",circledR:"\xAE",circledS:"\u24C8",CircleMinus:"\u2296",CirclePlus:"\u2295",CircleTimes:"\u2297",cire:"\u2257",cirE:"\u29C3",cirfnint:"\u2A10",cirmid:"\u2AEF",cirscir:"\u29C2",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201D",CloseCurlyQuote:"\u2019",clubs:"\u2663",clubsuit:"\u2663",colon:":",Colon:"\u2237",colone:"\u2254",Colone:"\u2A74",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2A6D",Congruent:"\u2261",conint:"\u222E",Conint:"\u222F",ContourIntegral:"\u222E",copf:"\u{1D554}",Copf:"\u2102",coprod:"\u2210",Coproduct:"\u2210",copy:"\xA9",COPY:"\xA9",copysr:"\u2117",CounterClockwiseContourIntegral:"\u2233",crarr:"\u21B5",cross:"\u2717",Cross:"\u2A2F",cscr:"\u{1D4B8}",Cscr:"\u{1D49E}",csub:"\u2ACF",csube:"\u2AD1",csup:"\u2AD0",csupe:"\u2AD2",ctdot:"\u22EF",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22DE",cuesc:"\u22DF",cularr:"\u21B6",cularrp:"\u293D",cup:"\u222A",Cup:"\u22D3",cupbrcap:"\u2A48",cupcap:"\u2A46",CupCap:"\u224D",cupcup:"\u2A4A",cupdot:"\u228D",cupor:"\u2A45",cups:"\u222A\uFE00",curarr:"\u21B7",curarrm:"\u293C",curlyeqprec:"\u22DE",curlyeqsucc:"\u22DF",curlyvee:"\u22CE",curlywedge:"\u22CF",curren:"\xA4",curvearrowleft:"\u21B6",curvearrowright:"\u21B7",cuvee:"\u22CE",cuwed:"\u22CF",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232D",dagger:"\u2020",Dagger:"\u2021",daleth:"\u2138",darr:"\u2193",dArr:"\u21D3",Darr:"\u21A1",dash:"\u2010",dashv:"\u22A3",Dashv:"\u2AE4",dbkarow:"\u290F",dblac:"\u02DD",dcaron:"\u010F",Dcaron:"\u010E",dcy:"\u0434",Dcy:"\u0414",dd:"\u2146",DD:"\u2145",ddagger:"\u2021",ddarr:"\u21CA",DDotrahd:"\u2911",ddotseq:"\u2A77",deg:"\xB0",Del:"\u2207",delta:"\u03B4",Delta:"\u0394",demptyv:"\u29B1",dfisht:"\u297F",dfr:"\u{1D521}",Dfr:"\u{1D507}",dHar:"\u2965",dharl:"\u21C3",dharr:"\u21C2",DiacriticalAcute:"\xB4",DiacriticalDot:"\u02D9",DiacriticalDoubleAcute:"\u02DD",DiacriticalGrave:"`",DiacriticalTilde:"\u02DC",diam:"\u22C4",diamond:"\u22C4",Diamond:"\u22C4",diamondsuit:"\u2666",diams:"\u2666",die:"\xA8",DifferentialD:"\u2146",digamma:"\u03DD",disin:"\u22F2",div:"\xF7",divide:"\xF7",divideontimes:"\u22C7",divonx:"\u22C7",djcy:"\u0452",DJcy:"\u0402",dlcorn:"\u231E",dlcrop:"\u230D",dollar:"$",dopf:"\u{1D555}",Dopf:"\u{1D53B}",dot:"\u02D9",Dot:"\xA8",DotDot:"\u20DC",doteq:"\u2250",doteqdot:"\u2251",DotEqual:"\u2250",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22A1",doublebarwedge:"\u2306",DoubleContourIntegral:"\u222F",DoubleDot:"\xA8",DoubleDownArrow:"\u21D3",DoubleLeftArrow:"\u21D0",DoubleLeftRightArrow:"\u21D4",DoubleLeftTee:"\u2AE4",DoubleLongLeftArrow:"\u27F8",DoubleLongLeftRightArrow:"\u27FA",DoubleLongRightArrow:"\u27F9",DoubleRightArrow:"\u21D2",DoubleRightTee:"\u22A8",DoubleUpArrow:"\u21D1",DoubleUpDownArrow:"\u21D5",DoubleVerticalBar:"\u2225",downarrow:"\u2193",Downarrow:"\u21D3",DownArrow:"\u2193",DownArrowBar:"\u2913",DownArrowUpArrow:"\u21F5",DownBreve:"\u0311",downdownarrows:"\u21CA",downharpoonleft:"\u21C3",downharpoonright:"\u21C2",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295E",DownLeftVector:"\u21BD",DownLeftVectorBar:"\u2956",DownRightTeeVector:"\u295F",DownRightVector:"\u21C1",DownRightVectorBar:"\u2957",DownTee:"\u22A4",DownTeeArrow:"\u21A7",drbkarow:"\u2910",drcorn:"\u231F",drcrop:"\u230C",dscr:"\u{1D4B9}",Dscr:"\u{1D49F}",dscy:"\u0455",DScy:"\u0405",dsol:"\u29F6",dstrok:"\u0111",Dstrok:"\u0110",dtdot:"\u22F1",dtri:"\u25BF",dtrif:"\u25BE",duarr:"\u21F5",duhar:"\u296F",dwangle:"\u29A6",dzcy:"\u045F",DZcy:"\u040F",dzigrarr:"\u27FF",eacute:"\xE9",Eacute:"\xC9",easter:"\u2A6E",ecaron:"\u011B",Ecaron:"\u011A",ecir:"\u2256",ecirc:"\xEA",Ecirc:"\xCA",ecolon:"\u2255",ecy:"\u044D",Ecy:"\u042D",eDDot:"\u2A77",edot:"\u0117",eDot:"\u2251",Edot:"\u0116",ee:"\u2147",efDot:"\u2252",efr:"\u{1D522}",Efr:"\u{1D508}",eg:"\u2A9A",egrave:"\xE8",Egrave:"\xC8",egs:"\u2A96",egsdot:"\u2A98",el:"\u2A99",Element:"\u2208",elinters:"\u23E7",ell:"\u2113",els:"\u2A95",elsdot:"\u2A97",emacr:"\u0113",Emacr:"\u0112",empty:"\u2205",emptyset:"\u2205",EmptySmallSquare:"\u25FB",emptyv:"\u2205",EmptyVerySmallSquare:"\u25AB",emsp:"\u2003",emsp13:"\u2004",emsp14:"\u2005",eng:"\u014B",ENG:"\u014A",ensp:"\u2002",eogon:"\u0119",Eogon:"\u0118",eopf:"\u{1D556}",Eopf:"\u{1D53C}",epar:"\u22D5",eparsl:"\u29E3",eplus:"\u2A71",epsi:"\u03B5",epsilon:"\u03B5",Epsilon:"\u0395",epsiv:"\u03F5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2A96",eqslantless:"\u2A95",Equal:"\u2A75",equals:"=",EqualTilde:"\u2242",equest:"\u225F",Equilibrium:"\u21CC",equiv:"\u2261",equivDD:"\u2A78",eqvparsl:"\u29E5",erarr:"\u2971",erDot:"\u2253",escr:"\u212F",Escr:"\u2130",esdot:"\u2250",esim:"\u2242",Esim:"\u2A73",eta:"\u03B7",Eta:"\u0397",eth:"\xF0",ETH:"\xD0",euml:"\xEB",Euml:"\xCB",euro:"\u20AC",excl:"!",exist:"\u2203",Exists:"\u2203",expectation:"\u2130",exponentiale:"\u2147",ExponentialE:"\u2147",fallingdotseq:"\u2252",fcy:"\u0444",Fcy:"\u0424",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",ffr:"\u{1D523}",Ffr:"\u{1D509}",filig:"\uFB01",FilledSmallSquare:"\u25FC",FilledVerySmallSquare:"\u25AA",fjlig:"fj",flat:"\u266D",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",fopf:"\u{1D557}",Fopf:"\u{1D53D}",forall:"\u2200",ForAll:"\u2200",fork:"\u22D4",forkv:"\u2AD9",Fouriertrf:"\u2131",fpartint:"\u2A0D",frac12:"\xBD",frac13:"\u2153",frac14:"\xBC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\xBE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044",frown:"\u2322",fscr:"\u{1D4BB}",Fscr:"\u2131",gacute:"\u01F5",gamma:"\u03B3",Gamma:"\u0393",gammad:"\u03DD",Gammad:"\u03DC",gap:"\u2A86",gbreve:"\u011F",Gbreve:"\u011E",Gcedil:"\u0122",gcirc:"\u011D",Gcirc:"\u011C",gcy:"\u0433",Gcy:"\u0413",gdot:"\u0121",Gdot:"\u0120",ge:"\u2265",gE:"\u2267",gel:"\u22DB",gEl:"\u2A8C",geq:"\u2265",geqq:"\u2267",geqslant:"\u2A7E",ges:"\u2A7E",gescc:"\u2AA9",gesdot:"\u2A80",gesdoto:"\u2A82",gesdotol:"\u2A84",gesl:"\u22DB\uFE00",gesles:"\u2A94",gfr:"\u{1D524}",Gfr:"\u{1D50A}",gg:"\u226B",Gg:"\u22D9",ggg:"\u22D9",gimel:"\u2137",gjcy:"\u0453",GJcy:"\u0403",gl:"\u2277",gla:"\u2AA5",glE:"\u2A92",glj:"\u2AA4",gnap:"\u2A8A",gnapprox:"\u2A8A",gne:"\u2A88",gnE:"\u2269",gneq:"\u2A88",gneqq:"\u2269",gnsim:"\u22E7",gopf:"\u{1D558}",Gopf:"\u{1D53E}",grave:"`",GreaterEqual:"\u2265",GreaterEqualLess:"\u22DB",GreaterFullEqual:"\u2267",GreaterGreater:"\u2AA2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2A7E",GreaterTilde:"\u2273",gscr:"\u210A",Gscr:"\u{1D4A2}",gsim:"\u2273",gsime:"\u2A8E",gsiml:"\u2A90",gt:">",Gt:"\u226B",GT:">",gtcc:"\u2AA7",gtcir:"\u2A7A",gtdot:"\u22D7",gtlPar:"\u2995",gtquest:"\u2A7C",gtrapprox:"\u2A86",gtrarr:"\u2978",gtrdot:"\u22D7",gtreqless:"\u22DB",gtreqqless:"\u2A8C",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\uFE00",gvnE:"\u2269\uFE00",Hacek:"\u02C7",hairsp:"\u200A",half:"\xBD",hamilt:"\u210B",hardcy:"\u044A",HARDcy:"\u042A",harr:"\u2194",hArr:"\u21D4",harrcir:"\u2948",harrw:"\u21AD",Hat:"^",hbar:"\u210F",hcirc:"\u0125",Hcirc:"\u0124",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22B9",hfr:"\u{1D525}",Hfr:"\u210C",HilbertSpace:"\u210B",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21FF",homtht:"\u223B",hookleftarrow:"\u21A9",hookrightarrow:"\u21AA",hopf:"\u{1D559}",Hopf:"\u210D",horbar:"\u2015",HorizontalLine:"\u2500",hscr:"\u{1D4BD}",Hscr:"\u210B",hslash:"\u210F",hstrok:"\u0127",Hstrok:"\u0126",HumpDownHump:"\u224E",HumpEqual:"\u224F",hybull:"\u2043",hyphen:"\u2010",iacute:"\xED",Iacute:"\xCD",ic:"\u2063",icirc:"\xEE",Icirc:"\xCE",icy:"\u0438",Icy:"\u0418",Idot:"\u0130",iecy:"\u0435",IEcy:"\u0415",iexcl:"\xA1",iff:"\u21D4",ifr:"\u{1D526}",Ifr:"\u2111",igrave:"\xEC",Igrave:"\xCC",ii:"\u2148",iiiint:"\u2A0C",iiint:"\u222D",iinfin:"\u29DC",iiota:"\u2129",ijlig:"\u0133",IJlig:"\u0132",Im:"\u2111",imacr:"\u012B",Imacr:"\u012A",image:"\u2111",ImaginaryI:"\u2148",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",imof:"\u22B7",imped:"\u01B5",Implies:"\u21D2",in:"\u2208",incare:"\u2105",infin:"\u221E",infintie:"\u29DD",inodot:"\u0131",int:"\u222B",Int:"\u222C",intcal:"\u22BA",integers:"\u2124",Integral:"\u222B",intercal:"\u22BA",Intersection:"\u22C2",intlarhk:"\u2A17",intprod:"\u2A3C",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",iocy:"\u0451",IOcy:"\u0401",iogon:"\u012F",Iogon:"\u012E",iopf:"\u{1D55A}",Iopf:"\u{1D540}",iota:"\u03B9",Iota:"\u0399",iprod:"\u2A3C",iquest:"\xBF",iscr:"\u{1D4BE}",Iscr:"\u2110",isin:"\u2208",isindot:"\u22F5",isinE:"\u22F9",isins:"\u22F4",isinsv:"\u22F3",isinv:"\u2208",it:"\u2062",itilde:"\u0129",Itilde:"\u0128",iukcy:"\u0456",Iukcy:"\u0406",iuml:"\xEF",Iuml:"\xCF",jcirc:"\u0135",Jcirc:"\u0134",jcy:"\u0439",Jcy:"\u0419",jfr:"\u{1D527}",Jfr:"\u{1D50D}",jmath:"\u0237",jopf:"\u{1D55B}",Jopf:"\u{1D541}",jscr:"\u{1D4BF}",Jscr:"\u{1D4A5}",jsercy:"\u0458",Jsercy:"\u0408",jukcy:"\u0454",Jukcy:"\u0404",kappa:"\u03BA",Kappa:"\u039A",kappav:"\u03F0",kcedil:"\u0137",Kcedil:"\u0136",kcy:"\u043A",Kcy:"\u041A",kfr:"\u{1D528}",Kfr:"\u{1D50E}",kgreen:"\u0138",khcy:"\u0445",KHcy:"\u0425",kjcy:"\u045C",KJcy:"\u040C",kopf:"\u{1D55C}",Kopf:"\u{1D542}",kscr:"\u{1D4C0}",Kscr:"\u{1D4A6}",lAarr:"\u21DA",lacute:"\u013A",Lacute:"\u0139",laemptyv:"\u29B4",lagran:"\u2112",lambda:"\u03BB",Lambda:"\u039B",lang:"\u27E8",Lang:"\u27EA",langd:"\u2991",langle:"\u27E8",lap:"\u2A85",Laplacetrf:"\u2112",laquo:"\xAB",larr:"\u2190",lArr:"\u21D0",Larr:"\u219E",larrb:"\u21E4",larrbfs:"\u291F",larrfs:"\u291D",larrhk:"\u21A9",larrlp:"\u21AB",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21A2",lat:"\u2AAB",latail:"\u2919",lAtail:"\u291B",late:"\u2AAD",lates:"\u2AAD\uFE00",lbarr:"\u290C",lBarr:"\u290E",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298B",lbrksld:"\u298F",lbrkslu:"\u298D",lcaron:"\u013E",Lcaron:"\u013D",lcedil:"\u013C",Lcedil:"\u013B",lceil:"\u2308",lcub:"{",lcy:"\u043B",Lcy:"\u041B",ldca:"\u2936",ldquo:"\u201C",ldquor:"\u201E",ldrdhar:"\u2967",ldrushar:"\u294B",ldsh:"\u21B2",le:"\u2264",lE:"\u2266",LeftAngleBracket:"\u27E8",leftarrow:"\u2190",Leftarrow:"\u21D0",LeftArrow:"\u2190",LeftArrowBar:"\u21E4",LeftArrowRightArrow:"\u21C6",leftarrowtail:"\u21A2",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27E6",LeftDownTeeVector:"\u2961",LeftDownVector:"\u21C3",LeftDownVectorBar:"\u2959",LeftFloor:"\u230A",leftharpoondown:"\u21BD",leftharpoonup:"\u21BC",leftleftarrows:"\u21C7",leftrightarrow:"\u2194",Leftrightarrow:"\u21D4",LeftRightArrow:"\u2194",leftrightarrows:"\u21C6",leftrightharpoons:"\u21CB",leftrightsquigarrow:"\u21AD",LeftRightVector:"\u294E",LeftTee:"\u22A3",LeftTeeArrow:"\u21A4",LeftTeeVector:"\u295A",leftthreetimes:"\u22CB",LeftTriangle:"\u22B2",LeftTriangleBar:"\u29CF",LeftTriangleEqual:"\u22B4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVector:"\u21BF",LeftUpVectorBar:"\u2958",LeftVector:"\u21BC",LeftVectorBar:"\u2952",leg:"\u22DA",lEg:"\u2A8B",leq:"\u2264",leqq:"\u2266",leqslant:"\u2A7D",les:"\u2A7D",lescc:"\u2AA8",lesdot:"\u2A7F",lesdoto:"\u2A81",lesdotor:"\u2A83",lesg:"\u22DA\uFE00",lesges:"\u2A93",lessapprox:"\u2A85",lessdot:"\u22D6",lesseqgtr:"\u22DA",lesseqqgtr:"\u2A8B",LessEqualGreater:"\u22DA",LessFullEqual:"\u2266",LessGreater:"\u2276",lessgtr:"\u2276",LessLess:"\u2AA1",lesssim:"\u2272",LessSlantEqual:"\u2A7D",LessTilde:"\u2272",lfisht:"\u297C",lfloor:"\u230A",lfr:"\u{1D529}",Lfr:"\u{1D50F}",lg:"\u2276",lgE:"\u2A91",lHar:"\u2962",lhard:"\u21BD",lharu:"\u21BC",lharul:"\u296A",lhblk:"\u2584",ljcy:"\u0459",LJcy:"\u0409",ll:"\u226A",Ll:"\u22D8",llarr:"\u21C7",llcorner:"\u231E",Lleftarrow:"\u21DA",llhard:"\u296B",lltri:"\u25FA",lmidot:"\u0140",Lmidot:"\u013F",lmoust:"\u23B0",lmoustache:"\u23B0",lnap:"\u2A89",lnapprox:"\u2A89",lne:"\u2A87",lnE:"\u2268",lneq:"\u2A87",lneqq:"\u2268",lnsim:"\u22E6",loang:"\u27EC",loarr:"\u21FD",lobrk:"\u27E6",longleftarrow:"\u27F5",Longleftarrow:"\u27F8",LongLeftArrow:"\u27F5",longleftrightarrow:"\u27F7",Longleftrightarrow:"\u27FA",LongLeftRightArrow:"\u27F7",longmapsto:"\u27FC",longrightarrow:"\u27F6",Longrightarrow:"\u27F9",LongRightArrow:"\u27F6",looparrowleft:"\u21AB",looparrowright:"\u21AC",lopar:"\u2985",lopf:"\u{1D55D}",Lopf:"\u{1D543}",loplus:"\u2A2D",lotimes:"\u2A34",lowast:"\u2217",lowbar:"_",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",loz:"\u25CA",lozenge:"\u25CA",lozf:"\u29EB",lpar:"(",lparlt:"\u2993",lrarr:"\u21C6",lrcorner:"\u231F",lrhar:"\u21CB",lrhard:"\u296D",lrm:"\u200E",lrtri:"\u22BF",lsaquo:"\u2039",lscr:"\u{1D4C1}",Lscr:"\u2112",lsh:"\u21B0",Lsh:"\u21B0",lsim:"\u2272",lsime:"\u2A8D",lsimg:"\u2A8F",lsqb:"[",lsquo:"\u2018",lsquor:"\u201A",lstrok:"\u0142",Lstrok:"\u0141",lt:"<",Lt:"\u226A",LT:"<",ltcc:"\u2AA6",ltcir:"\u2A79",ltdot:"\u22D6",lthree:"\u22CB",ltimes:"\u22C9",ltlarr:"\u2976",ltquest:"\u2A7B",ltri:"\u25C3",ltrie:"\u22B4",ltrif:"\u25C2",ltrPar:"\u2996",lurdshar:"\u294A",luruhar:"\u2966",lvertneqq:"\u2268\uFE00",lvnE:"\u2268\uFE00",macr:"\xAF",male:"\u2642",malt:"\u2720",maltese:"\u2720",map:"\u21A6",Map:"\u2905",mapsto:"\u21A6",mapstodown:"\u21A7",mapstoleft:"\u21A4",mapstoup:"\u21A5",marker:"\u25AE",mcomma:"\u2A29",mcy:"\u043C",Mcy:"\u041C",mdash:"\u2014",mDDot:"\u223A",measuredangle:"\u2221",MediumSpace:"\u205F",Mellintrf:"\u2133",mfr:"\u{1D52A}",Mfr:"\u{1D510}",mho:"\u2127",micro:"\xB5",mid:"\u2223",midast:"*",midcir:"\u2AF0",middot:"\xB7",minus:"\u2212",minusb:"\u229F",minusd:"\u2238",minusdu:"\u2A2A",MinusPlus:"\u2213",mlcp:"\u2ADB",mldr:"\u2026",mnplus:"\u2213",models:"\u22A7",mopf:"\u{1D55E}",Mopf:"\u{1D544}",mp:"\u2213",mscr:"\u{1D4C2}",Mscr:"\u2133",mstpos:"\u223E",mu:"\u03BC",Mu:"\u039C",multimap:"\u22B8",mumap:"\u22B8",nabla:"\u2207",nacute:"\u0144",Nacute:"\u0143",nang:"\u2220\u20D2",nap:"\u2249",napE:"\u2A70\u0338",napid:"\u224B\u0338",napos:"\u0149",napprox:"\u2249",natur:"\u266E",natural:"\u266E",naturals:"\u2115",nbsp:"\xA0",nbump:"\u224E\u0338",nbumpe:"\u224F\u0338",ncap:"\u2A43",ncaron:"\u0148",Ncaron:"\u0147",ncedil:"\u0146",Ncedil:"\u0145",ncong:"\u2247",ncongdot:"\u2A6D\u0338",ncup:"\u2A42",ncy:"\u043D",Ncy:"\u041D",ndash:"\u2013",ne:"\u2260",nearhk:"\u2924",nearr:"\u2197",neArr:"\u21D7",nearrow:"\u2197",nedot:"\u2250\u0338",NegativeMediumSpace:"\u200B",NegativeThickSpace:"\u200B",NegativeThinSpace:"\u200B",NegativeVeryThinSpace:"\u200B",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",NestedGreaterGreater:"\u226B",NestedLessLess:"\u226A",NewLine:`
|
|
43
|
+
`,nexist:"\u2204",nexists:"\u2204",nfr:"\u{1D52B}",Nfr:"\u{1D511}",nge:"\u2271",ngE:"\u2267\u0338",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2A7E\u0338",nges:"\u2A7E\u0338",nGg:"\u22D9\u0338",ngsim:"\u2275",ngt:"\u226F",nGt:"\u226B\u20D2",ngtr:"\u226F",nGtv:"\u226B\u0338",nharr:"\u21AE",nhArr:"\u21CE",nhpar:"\u2AF2",ni:"\u220B",nis:"\u22FC",nisd:"\u22FA",niv:"\u220B",njcy:"\u045A",NJcy:"\u040A",nlarr:"\u219A",nlArr:"\u21CD",nldr:"\u2025",nle:"\u2270",nlE:"\u2266\u0338",nleftarrow:"\u219A",nLeftarrow:"\u21CD",nleftrightarrow:"\u21AE",nLeftrightarrow:"\u21CE",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2A7D\u0338",nles:"\u2A7D\u0338",nless:"\u226E",nLl:"\u22D8\u0338",nlsim:"\u2274",nlt:"\u226E",nLt:"\u226A\u20D2",nltri:"\u22EA",nltrie:"\u22EC",nLtv:"\u226A\u0338",nmid:"\u2224",NoBreak:"\u2060",NonBreakingSpace:"\xA0",nopf:"\u{1D55F}",Nopf:"\u2115",not:"\xAC",Not:"\u2AEC",NotCongruent:"\u2262",NotCupCap:"\u226D",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226F",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226B\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2A7E\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224E\u0338",NotHumpEqual:"\u224F\u0338",notin:"\u2209",notindot:"\u22F5\u0338",notinE:"\u22F9\u0338",notinva:"\u2209",notinvb:"\u22F7",notinvc:"\u22F6",NotLeftTriangle:"\u22EA",NotLeftTriangleBar:"\u29CF\u0338",NotLeftTriangleEqual:"\u22EC",NotLess:"\u226E",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226A\u0338",NotLessSlantEqual:"\u2A7D\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2AA2\u0338",NotNestedLessLess:"\u2AA1\u0338",notni:"\u220C",notniva:"\u220C",notnivb:"\u22FE",notnivc:"\u22FD",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2AAF\u0338",NotPrecedesSlantEqual:"\u22E0",NotReverseElement:"\u220C",NotRightTriangle:"\u22EB",NotRightTriangleBar:"\u29D0\u0338",NotRightTriangleEqual:"\u22ED",NotSquareSubset:"\u228F\u0338",NotSquareSubsetEqual:"\u22E2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22E3",NotSubset:"\u2282\u20D2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2AB0\u0338",NotSucceedsSlantEqual:"\u22E1",NotSucceedsTilde:"\u227F\u0338",NotSuperset:"\u2283\u20D2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",npar:"\u2226",nparallel:"\u2226",nparsl:"\u2AFD\u20E5",npart:"\u2202\u0338",npolint:"\u2A14",npr:"\u2280",nprcue:"\u22E0",npre:"\u2AAF\u0338",nprec:"\u2280",npreceq:"\u2AAF\u0338",nrarr:"\u219B",nrArr:"\u21CF",nrarrc:"\u2933\u0338",nrarrw:"\u219D\u0338",nrightarrow:"\u219B",nRightarrow:"\u21CF",nrtri:"\u22EB",nrtrie:"\u22ED",nsc:"\u2281",nsccue:"\u22E1",nsce:"\u2AB0\u0338",nscr:"\u{1D4C3}",Nscr:"\u{1D4A9}",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22E2",nsqsupe:"\u22E3",nsub:"\u2284",nsube:"\u2288",nsubE:"\u2AC5\u0338",nsubset:"\u2282\u20D2",nsubseteq:"\u2288",nsubseteqq:"\u2AC5\u0338",nsucc:"\u2281",nsucceq:"\u2AB0\u0338",nsup:"\u2285",nsupe:"\u2289",nsupE:"\u2AC6\u0338",nsupset:"\u2283\u20D2",nsupseteq:"\u2289",nsupseteqq:"\u2AC6\u0338",ntgl:"\u2279",ntilde:"\xF1",Ntilde:"\xD1",ntlg:"\u2278",ntriangleleft:"\u22EA",ntrianglelefteq:"\u22EC",ntriangleright:"\u22EB",ntrianglerighteq:"\u22ED",nu:"\u03BD",Nu:"\u039D",num:"#",numero:"\u2116",numsp:"\u2007",nvap:"\u224D\u20D2",nvdash:"\u22AC",nvDash:"\u22AD",nVdash:"\u22AE",nVDash:"\u22AF",nvge:"\u2265\u20D2",nvgt:">\u20D2",nvHarr:"\u2904",nvinfin:"\u29DE",nvlArr:"\u2902",nvle:"\u2264\u20D2",nvlt:"<\u20D2",nvltrie:"\u22B4\u20D2",nvrArr:"\u2903",nvrtrie:"\u22B5\u20D2",nvsim:"\u223C\u20D2",nwarhk:"\u2923",nwarr:"\u2196",nwArr:"\u21D6",nwarrow:"\u2196",nwnear:"\u2927",oacute:"\xF3",Oacute:"\xD3",oast:"\u229B",ocir:"\u229A",ocirc:"\xF4",Ocirc:"\xD4",ocy:"\u043E",Ocy:"\u041E",odash:"\u229D",odblac:"\u0151",Odblac:"\u0150",odiv:"\u2A38",odot:"\u2299",odsold:"\u29BC",oelig:"\u0153",OElig:"\u0152",ofcir:"\u29BF",ofr:"\u{1D52C}",Ofr:"\u{1D512}",ogon:"\u02DB",ograve:"\xF2",Ograve:"\xD2",ogt:"\u29C1",ohbar:"\u29B5",ohm:"\u03A9",oint:"\u222E",olarr:"\u21BA",olcir:"\u29BE",olcross:"\u29BB",oline:"\u203E",olt:"\u29C0",omacr:"\u014D",Omacr:"\u014C",omega:"\u03C9",Omega:"\u03A9",omicron:"\u03BF",Omicron:"\u039F",omid:"\u29B6",ominus:"\u2296",oopf:"\u{1D560}",Oopf:"\u{1D546}",opar:"\u29B7",OpenCurlyDoubleQuote:"\u201C",OpenCurlyQuote:"\u2018",operp:"\u29B9",oplus:"\u2295",or:"\u2228",Or:"\u2A54",orarr:"\u21BB",ord:"\u2A5D",order:"\u2134",orderof:"\u2134",ordf:"\xAA",ordm:"\xBA",origof:"\u22B6",oror:"\u2A56",orslope:"\u2A57",orv:"\u2A5B",oS:"\u24C8",oscr:"\u2134",Oscr:"\u{1D4AA}",oslash:"\xF8",Oslash:"\xD8",osol:"\u2298",otilde:"\xF5",Otilde:"\xD5",otimes:"\u2297",Otimes:"\u2A37",otimesas:"\u2A36",ouml:"\xF6",Ouml:"\xD6",ovbar:"\u233D",OverBar:"\u203E",OverBrace:"\u23DE",OverBracket:"\u23B4",OverParenthesis:"\u23DC",par:"\u2225",para:"\xB6",parallel:"\u2225",parsim:"\u2AF3",parsl:"\u2AFD",part:"\u2202",PartialD:"\u2202",pcy:"\u043F",Pcy:"\u041F",percnt:"%",period:".",permil:"\u2030",perp:"\u22A5",pertenk:"\u2031",pfr:"\u{1D52D}",Pfr:"\u{1D513}",phi:"\u03C6",Phi:"\u03A6",phiv:"\u03D5",phmmat:"\u2133",phone:"\u260E",pi:"\u03C0",Pi:"\u03A0",pitchfork:"\u22D4",piv:"\u03D6",planck:"\u210F",planckh:"\u210E",plankv:"\u210F",plus:"+",plusacir:"\u2A23",plusb:"\u229E",pluscir:"\u2A22",plusdo:"\u2214",plusdu:"\u2A25",pluse:"\u2A72",PlusMinus:"\xB1",plusmn:"\xB1",plussim:"\u2A26",plustwo:"\u2A27",pm:"\xB1",Poincareplane:"\u210C",pointint:"\u2A15",popf:"\u{1D561}",Popf:"\u2119",pound:"\xA3",pr:"\u227A",Pr:"\u2ABB",prap:"\u2AB7",prcue:"\u227C",pre:"\u2AAF",prE:"\u2AB3",prec:"\u227A",precapprox:"\u2AB7",preccurlyeq:"\u227C",Precedes:"\u227A",PrecedesEqual:"\u2AAF",PrecedesSlantEqual:"\u227C",PrecedesTilde:"\u227E",preceq:"\u2AAF",precnapprox:"\u2AB9",precneqq:"\u2AB5",precnsim:"\u22E8",precsim:"\u227E",prime:"\u2032",Prime:"\u2033",primes:"\u2119",prnap:"\u2AB9",prnE:"\u2AB5",prnsim:"\u22E8",prod:"\u220F",Product:"\u220F",profalar:"\u232E",profline:"\u2312",profsurf:"\u2313",prop:"\u221D",Proportion:"\u2237",Proportional:"\u221D",propto:"\u221D",prsim:"\u227E",prurel:"\u22B0",pscr:"\u{1D4C5}",Pscr:"\u{1D4AB}",psi:"\u03C8",Psi:"\u03A8",puncsp:"\u2008",qfr:"\u{1D52E}",Qfr:"\u{1D514}",qint:"\u2A0C",qopf:"\u{1D562}",Qopf:"\u211A",qprime:"\u2057",qscr:"\u{1D4C6}",Qscr:"\u{1D4AC}",quaternions:"\u210D",quatint:"\u2A16",quest:"?",questeq:"\u225F",quot:'"',QUOT:'"',rAarr:"\u21DB",race:"\u223D\u0331",racute:"\u0155",Racute:"\u0154",radic:"\u221A",raemptyv:"\u29B3",rang:"\u27E9",Rang:"\u27EB",rangd:"\u2992",range:"\u29A5",rangle:"\u27E9",raquo:"\xBB",rarr:"\u2192",rArr:"\u21D2",Rarr:"\u21A0",rarrap:"\u2975",rarrb:"\u21E5",rarrbfs:"\u2920",rarrc:"\u2933",rarrfs:"\u291E",rarrhk:"\u21AA",rarrlp:"\u21AC",rarrpl:"\u2945",rarrsim:"\u2974",rarrtl:"\u21A3",Rarrtl:"\u2916",rarrw:"\u219D",ratail:"\u291A",rAtail:"\u291C",ratio:"\u2236",rationals:"\u211A",rbarr:"\u290D",rBarr:"\u290F",RBarr:"\u2910",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298C",rbrksld:"\u298E",rbrkslu:"\u2990",rcaron:"\u0159",Rcaron:"\u0158",rcedil:"\u0157",Rcedil:"\u0156",rceil:"\u2309",rcub:"}",rcy:"\u0440",Rcy:"\u0420",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201D",rdquor:"\u201D",rdsh:"\u21B3",Re:"\u211C",real:"\u211C",realine:"\u211B",realpart:"\u211C",reals:"\u211D",rect:"\u25AD",reg:"\xAE",REG:"\xAE",ReverseElement:"\u220B",ReverseEquilibrium:"\u21CB",ReverseUpEquilibrium:"\u296F",rfisht:"\u297D",rfloor:"\u230B",rfr:"\u{1D52F}",Rfr:"\u211C",rHar:"\u2964",rhard:"\u21C1",rharu:"\u21C0",rharul:"\u296C",rho:"\u03C1",Rho:"\u03A1",rhov:"\u03F1",RightAngleBracket:"\u27E9",rightarrow:"\u2192",Rightarrow:"\u21D2",RightArrow:"\u2192",RightArrowBar:"\u21E5",RightArrowLeftArrow:"\u21C4",rightarrowtail:"\u21A3",RightCeiling:"\u2309",RightDoubleBracket:"\u27E7",RightDownTeeVector:"\u295D",RightDownVector:"\u21C2",RightDownVectorBar:"\u2955",RightFloor:"\u230B",rightharpoondown:"\u21C1",rightharpoonup:"\u21C0",rightleftarrows:"\u21C4",rightleftharpoons:"\u21CC",rightrightarrows:"\u21C9",rightsquigarrow:"\u219D",RightTee:"\u22A2",RightTeeArrow:"\u21A6",RightTeeVector:"\u295B",rightthreetimes:"\u22CC",RightTriangle:"\u22B3",RightTriangleBar:"\u29D0",RightTriangleEqual:"\u22B5",RightUpDownVector:"\u294F",RightUpTeeVector:"\u295C",RightUpVector:"\u21BE",RightUpVectorBar:"\u2954",RightVector:"\u21C0",RightVectorBar:"\u2953",ring:"\u02DA",risingdotseq:"\u2253",rlarr:"\u21C4",rlhar:"\u21CC",rlm:"\u200F",rmoust:"\u23B1",rmoustache:"\u23B1",rnmid:"\u2AEE",roang:"\u27ED",roarr:"\u21FE",robrk:"\u27E7",ropar:"\u2986",ropf:"\u{1D563}",Ropf:"\u211D",roplus:"\u2A2E",rotimes:"\u2A35",RoundImplies:"\u2970",rpar:")",rpargt:"\u2994",rppolint:"\u2A12",rrarr:"\u21C9",Rrightarrow:"\u21DB",rsaquo:"\u203A",rscr:"\u{1D4C7}",Rscr:"\u211B",rsh:"\u21B1",Rsh:"\u21B1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22CC",rtimes:"\u22CA",rtri:"\u25B9",rtrie:"\u22B5",rtrif:"\u25B8",rtriltri:"\u29CE",RuleDelayed:"\u29F4",ruluhar:"\u2968",rx:"\u211E",sacute:"\u015B",Sacute:"\u015A",sbquo:"\u201A",sc:"\u227B",Sc:"\u2ABC",scap:"\u2AB8",scaron:"\u0161",Scaron:"\u0160",sccue:"\u227D",sce:"\u2AB0",scE:"\u2AB4",scedil:"\u015F",Scedil:"\u015E",scirc:"\u015D",Scirc:"\u015C",scnap:"\u2ABA",scnE:"\u2AB6",scnsim:"\u22E9",scpolint:"\u2A13",scsim:"\u227F",scy:"\u0441",Scy:"\u0421",sdot:"\u22C5",sdotb:"\u22A1",sdote:"\u2A66",searhk:"\u2925",searr:"\u2198",seArr:"\u21D8",searrow:"\u2198",sect:"\xA7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",sfr:"\u{1D530}",Sfr:"\u{1D516}",sfrown:"\u2322",sharp:"\u266F",shchcy:"\u0449",SHCHcy:"\u0429",shcy:"\u0448",SHcy:"\u0428",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",shortmid:"\u2223",shortparallel:"\u2225",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",shy:"\xAD",sigma:"\u03C3",Sigma:"\u03A3",sigmaf:"\u03C2",sigmav:"\u03C2",sim:"\u223C",simdot:"\u2A6A",sime:"\u2243",simeq:"\u2243",simg:"\u2A9E",simgE:"\u2AA0",siml:"\u2A9D",simlE:"\u2A9F",simne:"\u2246",simplus:"\u2A24",simrarr:"\u2972",slarr:"\u2190",SmallCircle:"\u2218",smallsetminus:"\u2216",smashp:"\u2A33",smeparsl:"\u29E4",smid:"\u2223",smile:"\u2323",smt:"\u2AAA",smte:"\u2AAC",smtes:"\u2AAC\uFE00",softcy:"\u044C",SOFTcy:"\u042C",sol:"/",solb:"\u29C4",solbar:"\u233F",sopf:"\u{1D564}",Sopf:"\u{1D54A}",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\uFE00",sqcup:"\u2294",sqcups:"\u2294\uFE00",Sqrt:"\u221A",sqsub:"\u228F",sqsube:"\u2291",sqsubset:"\u228F",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",squ:"\u25A1",square:"\u25A1",Square:"\u25A1",SquareIntersection:"\u2293",SquareSubset:"\u228F",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",squarf:"\u25AA",squf:"\u25AA",srarr:"\u2192",sscr:"\u{1D4C8}",Sscr:"\u{1D4AE}",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22C6",star:"\u2606",Star:"\u22C6",starf:"\u2605",straightepsilon:"\u03F5",straightphi:"\u03D5",strns:"\xAF",sub:"\u2282",Sub:"\u22D0",subdot:"\u2ABD",sube:"\u2286",subE:"\u2AC5",subedot:"\u2AC3",submult:"\u2AC1",subne:"\u228A",subnE:"\u2ACB",subplus:"\u2ABF",subrarr:"\u2979",subset:"\u2282",Subset:"\u22D0",subseteq:"\u2286",subseteqq:"\u2AC5",SubsetEqual:"\u2286",subsetneq:"\u228A",subsetneqq:"\u2ACB",subsim:"\u2AC7",subsub:"\u2AD5",subsup:"\u2AD3",succ:"\u227B",succapprox:"\u2AB8",succcurlyeq:"\u227D",Succeeds:"\u227B",SucceedsEqual:"\u2AB0",SucceedsSlantEqual:"\u227D",SucceedsTilde:"\u227F",succeq:"\u2AB0",succnapprox:"\u2ABA",succneqq:"\u2AB6",succnsim:"\u22E9",succsim:"\u227F",SuchThat:"\u220B",sum:"\u2211",Sum:"\u2211",sung:"\u266A",sup:"\u2283",Sup:"\u22D1",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",supdot:"\u2ABE",supdsub:"\u2AD8",supe:"\u2287",supE:"\u2AC6",supedot:"\u2AC4",Superset:"\u2283",SupersetEqual:"\u2287",suphsol:"\u27C9",suphsub:"\u2AD7",suplarr:"\u297B",supmult:"\u2AC2",supne:"\u228B",supnE:"\u2ACC",supplus:"\u2AC0",supset:"\u2283",Supset:"\u22D1",supseteq:"\u2287",supseteqq:"\u2AC6",supsetneq:"\u228B",supsetneqq:"\u2ACC",supsim:"\u2AC8",supsub:"\u2AD4",supsup:"\u2AD6",swarhk:"\u2926",swarr:"\u2199",swArr:"\u21D9",swarrow:"\u2199",swnwar:"\u292A",szlig:"\xDF",Tab:" ",target:"\u2316",tau:"\u03C4",Tau:"\u03A4",tbrk:"\u23B4",tcaron:"\u0165",Tcaron:"\u0164",tcedil:"\u0163",Tcedil:"\u0162",tcy:"\u0442",Tcy:"\u0422",tdot:"\u20DB",telrec:"\u2315",tfr:"\u{1D531}",Tfr:"\u{1D517}",there4:"\u2234",therefore:"\u2234",Therefore:"\u2234",theta:"\u03B8",Theta:"\u0398",thetasym:"\u03D1",thetav:"\u03D1",thickapprox:"\u2248",thicksim:"\u223C",ThickSpace:"\u205F\u200A",thinsp:"\u2009",ThinSpace:"\u2009",thkap:"\u2248",thksim:"\u223C",thorn:"\xFE",THORN:"\xDE",tilde:"\u02DC",Tilde:"\u223C",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",times:"\xD7",timesb:"\u22A0",timesbar:"\u2A31",timesd:"\u2A30",tint:"\u222D",toea:"\u2928",top:"\u22A4",topbot:"\u2336",topcir:"\u2AF1",topf:"\u{1D565}",Topf:"\u{1D54B}",topfork:"\u2ADA",tosa:"\u2929",tprime:"\u2034",trade:"\u2122",TRADE:"\u2122",triangle:"\u25B5",triangledown:"\u25BF",triangleleft:"\u25C3",trianglelefteq:"\u22B4",triangleq:"\u225C",triangleright:"\u25B9",trianglerighteq:"\u22B5",tridot:"\u25EC",trie:"\u225C",triminus:"\u2A3A",TripleDot:"\u20DB",triplus:"\u2A39",trisb:"\u29CD",tritime:"\u2A3B",trpezium:"\u23E2",tscr:"\u{1D4C9}",Tscr:"\u{1D4AF}",tscy:"\u0446",TScy:"\u0426",tshcy:"\u045B",TSHcy:"\u040B",tstrok:"\u0167",Tstrok:"\u0166",twixt:"\u226C",twoheadleftarrow:"\u219E",twoheadrightarrow:"\u21A0",uacute:"\xFA",Uacute:"\xDA",uarr:"\u2191",uArr:"\u21D1",Uarr:"\u219F",Uarrocir:"\u2949",ubrcy:"\u045E",Ubrcy:"\u040E",ubreve:"\u016D",Ubreve:"\u016C",ucirc:"\xFB",Ucirc:"\xDB",ucy:"\u0443",Ucy:"\u0423",udarr:"\u21C5",udblac:"\u0171",Udblac:"\u0170",udhar:"\u296E",ufisht:"\u297E",ufr:"\u{1D532}",Ufr:"\u{1D518}",ugrave:"\xF9",Ugrave:"\xD9",uHar:"\u2963",uharl:"\u21BF",uharr:"\u21BE",uhblk:"\u2580",ulcorn:"\u231C",ulcorner:"\u231C",ulcrop:"\u230F",ultri:"\u25F8",umacr:"\u016B",Umacr:"\u016A",uml:"\xA8",UnderBar:"_",UnderBrace:"\u23DF",UnderBracket:"\u23B5",UnderParenthesis:"\u23DD",Union:"\u22C3",UnionPlus:"\u228E",uogon:"\u0173",Uogon:"\u0172",uopf:"\u{1D566}",Uopf:"\u{1D54C}",uparrow:"\u2191",Uparrow:"\u21D1",UpArrow:"\u2191",UpArrowBar:"\u2912",UpArrowDownArrow:"\u21C5",updownarrow:"\u2195",Updownarrow:"\u21D5",UpDownArrow:"\u2195",UpEquilibrium:"\u296E",upharpoonleft:"\u21BF",upharpoonright:"\u21BE",uplus:"\u228E",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",upsi:"\u03C5",Upsi:"\u03D2",upsih:"\u03D2",upsilon:"\u03C5",Upsilon:"\u03A5",UpTee:"\u22A5",UpTeeArrow:"\u21A5",upuparrows:"\u21C8",urcorn:"\u231D",urcorner:"\u231D",urcrop:"\u230E",uring:"\u016F",Uring:"\u016E",urtri:"\u25F9",uscr:"\u{1D4CA}",Uscr:"\u{1D4B0}",utdot:"\u22F0",utilde:"\u0169",Utilde:"\u0168",utri:"\u25B5",utrif:"\u25B4",uuarr:"\u21C8",uuml:"\xFC",Uuml:"\xDC",uwangle:"\u29A7",vangrt:"\u299C",varepsilon:"\u03F5",varkappa:"\u03F0",varnothing:"\u2205",varphi:"\u03D5",varpi:"\u03D6",varpropto:"\u221D",varr:"\u2195",vArr:"\u21D5",varrho:"\u03F1",varsigma:"\u03C2",varsubsetneq:"\u228A\uFE00",varsubsetneqq:"\u2ACB\uFE00",varsupsetneq:"\u228B\uFE00",varsupsetneqq:"\u2ACC\uFE00",vartheta:"\u03D1",vartriangleleft:"\u22B2",vartriangleright:"\u22B3",vBar:"\u2AE8",Vbar:"\u2AEB",vBarv:"\u2AE9",vcy:"\u0432",Vcy:"\u0412",vdash:"\u22A2",vDash:"\u22A8",Vdash:"\u22A9",VDash:"\u22AB",Vdashl:"\u2AE6",vee:"\u2228",Vee:"\u22C1",veebar:"\u22BB",veeeq:"\u225A",vellip:"\u22EE",verbar:"|",Verbar:"\u2016",vert:"|",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200A",vfr:"\u{1D533}",Vfr:"\u{1D519}",vltri:"\u22B2",vnsub:"\u2282\u20D2",vnsup:"\u2283\u20D2",vopf:"\u{1D567}",Vopf:"\u{1D54D}",vprop:"\u221D",vrtri:"\u22B3",vscr:"\u{1D4CB}",Vscr:"\u{1D4B1}",vsubne:"\u228A\uFE00",vsubnE:"\u2ACB\uFE00",vsupne:"\u228B\uFE00",vsupnE:"\u2ACC\uFE00",Vvdash:"\u22AA",vzigzag:"\u299A",wcirc:"\u0175",Wcirc:"\u0174",wedbar:"\u2A5F",wedge:"\u2227",Wedge:"\u22C0",wedgeq:"\u2259",weierp:"\u2118",wfr:"\u{1D534}",Wfr:"\u{1D51A}",wopf:"\u{1D568}",Wopf:"\u{1D54E}",wp:"\u2118",wr:"\u2240",wreath:"\u2240",wscr:"\u{1D4CC}",Wscr:"\u{1D4B2}",xcap:"\u22C2",xcirc:"\u25EF",xcup:"\u22C3",xdtri:"\u25BD",xfr:"\u{1D535}",Xfr:"\u{1D51B}",xharr:"\u27F7",xhArr:"\u27FA",xi:"\u03BE",Xi:"\u039E",xlarr:"\u27F5",xlArr:"\u27F8",xmap:"\u27FC",xnis:"\u22FB",xodot:"\u2A00",xopf:"\u{1D569}",Xopf:"\u{1D54F}",xoplus:"\u2A01",xotime:"\u2A02",xrarr:"\u27F6",xrArr:"\u27F9",xscr:"\u{1D4CD}",Xscr:"\u{1D4B3}",xsqcup:"\u2A06",xuplus:"\u2A04",xutri:"\u25B3",xvee:"\u22C1",xwedge:"\u22C0",yacute:"\xFD",Yacute:"\xDD",yacy:"\u044F",YAcy:"\u042F",ycirc:"\u0177",Ycirc:"\u0176",ycy:"\u044B",Ycy:"\u042B",yen:"\xA5",yfr:"\u{1D536}",Yfr:"\u{1D51C}",yicy:"\u0457",YIcy:"\u0407",yopf:"\u{1D56A}",Yopf:"\u{1D550}",yscr:"\u{1D4CE}",Yscr:"\u{1D4B4}",yucy:"\u044E",YUcy:"\u042E",yuml:"\xFF",Yuml:"\u0178",zacute:"\u017A",Zacute:"\u0179",zcaron:"\u017E",Zcaron:"\u017D",zcy:"\u0437",Zcy:"\u0417",zdot:"\u017C",Zdot:"\u017B",zeetrf:"\u2128",ZeroWidthSpace:"\u200B",zeta:"\u03B6",Zeta:"\u0396",zfr:"\u{1D537}",Zfr:"\u2128",zhcy:"\u0436",ZHcy:"\u0416",zigrarr:"\u21DD",zopf:"\u{1D56B}",Zopf:"\u2124",zscr:"\u{1D4CF}",Zscr:"\u{1D4B5}",zwj:"\u200D",zwnj:"\u200C"},g={aacute:"\xE1",Aacute:"\xC1",acirc:"\xE2",Acirc:"\xC2",acute:"\xB4",aelig:"\xE6",AElig:"\xC6",agrave:"\xE0",Agrave:"\xC0",amp:"&",AMP:"&",aring:"\xE5",Aring:"\xC5",atilde:"\xE3",Atilde:"\xC3",auml:"\xE4",Auml:"\xC4",brvbar:"\xA6",ccedil:"\xE7",Ccedil:"\xC7",cedil:"\xB8",cent:"\xA2",copy:"\xA9",COPY:"\xA9",curren:"\xA4",deg:"\xB0",divide:"\xF7",eacute:"\xE9",Eacute:"\xC9",ecirc:"\xEA",Ecirc:"\xCA",egrave:"\xE8",Egrave:"\xC8",eth:"\xF0",ETH:"\xD0",euml:"\xEB",Euml:"\xCB",frac12:"\xBD",frac14:"\xBC",frac34:"\xBE",gt:">",GT:">",iacute:"\xED",Iacute:"\xCD",icirc:"\xEE",Icirc:"\xCE",iexcl:"\xA1",igrave:"\xEC",Igrave:"\xCC",iquest:"\xBF",iuml:"\xEF",Iuml:"\xCF",laquo:"\xAB",lt:"<",LT:"<",macr:"\xAF",micro:"\xB5",middot:"\xB7",nbsp:"\xA0",not:"\xAC",ntilde:"\xF1",Ntilde:"\xD1",oacute:"\xF3",Oacute:"\xD3",ocirc:"\xF4",Ocirc:"\xD4",ograve:"\xF2",Ograve:"\xD2",ordf:"\xAA",ordm:"\xBA",oslash:"\xF8",Oslash:"\xD8",otilde:"\xF5",Otilde:"\xD5",ouml:"\xF6",Ouml:"\xD6",para:"\xB6",plusmn:"\xB1",pound:"\xA3",quot:'"',QUOT:'"',raquo:"\xBB",reg:"\xAE",REG:"\xAE",sect:"\xA7",shy:"\xAD",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",szlig:"\xDF",thorn:"\xFE",THORN:"\xDE",times:"\xD7",uacute:"\xFA",Uacute:"\xDA",ucirc:"\xFB",Ucirc:"\xDB",ugrave:"\xF9",Ugrave:"\xD9",uml:"\xA8",uuml:"\xFC",Uuml:"\xDC",yacute:"\xFD",Yacute:"\xDD",yen:"\xA5",yuml:"\xFF"},y={0:"\uFFFD",128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"},C=[1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65e3,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111],b=String.fromCharCode,w={},x=w.hasOwnProperty,v=function(E,M){return x.call(E,M)},T=function(E,M){for(var B=-1,H=E.length;++B<H;)if(E[B]==M)return!0;return!1},k=function(E,M){if(!E)return M;var B={},H;for(H in M)B[H]=v(E,H)?E[H]:M[H];return B},S=function(E,M){var B="";return E>=55296&&E<=57343||E>1114111?(M&&R("character reference outside the permissible Unicode range"),"\uFFFD"):v(y,E)?(M&&R("disallowed character reference"),y[E]):(M&&T(C,E)&&R("disallowed character reference"),E>65535&&(E-=65536,B+=b(E>>>10&1023|55296),E=56320|E&1023),B+=b(E),B)},P=function(E){return"&#x"+E.toString(16).toUpperCase()+";"},q=function(E){return"&#"+E+";"},R=function(E){throw Error("Parse error: "+E)},O=function(E,M){M=k(M,O.options);var B=M.strict;B&&m.test(E)&&R("forbidden code point");var H=M.encodeEverything,F=M.useNamedReferences,oe=M.allowUnsafeSymbols,ee=M.decimal?q:P,Ie=function(ne){return ee(ne.charCodeAt(0))};return H?(E=E.replace(o,function(ne){return F&&v(u,ne)?"&"+u[ne]+";":Ie(ne)}),F&&(E=E.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒").replace(/fj/g,"fj")),F&&(E=E.replace(c,function(ne){return"&"+u[ne]+";"}))):F?(oe||(E=E.replace(l,function(ne){return"&"+u[ne]+";"})),E=E.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒"),E=E.replace(c,function(ne){return"&"+u[ne]+";"})):oe||(E=E.replace(l,Ie)),E.replace(i,function(ne){var Ke=ne.charCodeAt(0),Oe=ne.charCodeAt(1),He=(Ke-55296)*1024+Oe-56320+65536;return ee(He)}).replace(s,Ie)};O.options={allowUnsafeSymbols:!1,encodeEverything:!1,strict:!1,useNamedReferences:!1,decimal:!1};var W=function(E,M){M=k(M,W.options);var B=M.strict;return B&&p.test(E)&&R("malformed character reference"),E.replace(f,function(H,F,oe,ee,Ie,ne,Ke,Oe,He){var Xe,ze,jt,on,xt,_t;return F?(xt=F,h[xt]):oe?(xt=oe,_t=ee,_t&&M.isAttributeValue?(B&&_t=="="&&R("`&` did not start a character reference"),H):(B&&R("named character reference was not terminated by a semicolon"),g[xt]+(_t||""))):Ie?(jt=Ie,ze=ne,B&&!ze&&R("character reference was not terminated by a semicolon"),Xe=parseInt(jt,10),S(Xe,B)):Ke?(on=Ke,ze=Oe,B&&!ze&&R("character reference was not terminated by a semicolon"),Xe=parseInt(on,16),S(Xe,B)):(B&&R("named character reference was not terminated by a semicolon"),H)})};W.options={isAttributeValue:!1,strict:!1};var z=function(E){return E.replace(l,function(M){return d[M]})},I={version:"1.2.0",encode:O,decode:W,escape:z,unescape:W};if(typeof define=="function"&&typeof define.amd=="object"&&define.amd)define(function(){return I});else if(e&&!e.nodeType)if(r)r.exports=I;else for(var _ in I)v(I,_)&&(e[_]=I[_]);else t.he=I})(ai)});var la,Be,qr=A(()=>{"use strict";la=ot(si(),1),Be=class{parentNode;childNodes=[];range=[-1,-1];constructor(e=null,r){this.parentNode=e,r&&(this.range=r)}remove(){if(this.parentNode){typeof this.parentNode.invalidateSelectorCacheRecursively=="function"&&this.parentNode.invalidateSelectorCacheRecursively();let e=this.parentNode.childNodes;this.parentNode.childNodes=e.filter(r=>this!==r),this.parentNode=null}return this}invalidateSelectorCacheRecursively(){}get innerText(){return this.rawText}get textContent(){return la.default.decode(this.rawText)}set textContent(e){this.rawText=la.default.encode(e)}}});var da,j,sr=A(()=>{"use strict";(function(t){t[t.ELEMENT_NODE=1]="ELEMENT_NODE",t[t.TEXT_NODE=3]="TEXT_NODE",t[t.COMMENT_NODE=8]="COMMENT_NODE"})(da||(da={}));j=da});var It,pa=A(()=>{"use strict";qr();sr();It=class t extends Be{rawText;rawTagName;clone(){return new t(this.rawText,null,void 0,this.rawTagName)}constructor(e,r=null,n,i="!--"){super(r,n),this.rawText=e,this.rawTagName=i}nodeType=j.COMMENT_NODE;get text(){return this.rawText}toString(){return`<!--${this.rawText}-->`}}});function bt(t){return t[t.length-1]}var Vu=A(()=>{"use strict"});function ci(t){return!!t&&t.nodeType===j.ELEMENT_NODE}function Gu(t,e){return ci(t)?t.getAttribute(e):void 0}function _b(t){return(t&&t.rawTagName||"").toLowerCase()}function $r(t){return t&&t.childNodes}function ma(t){return t?t.parentNode:null}function Wb(t){return t.text}function Vb(t){let e=t.length,r,n,i;for(;--e>-1;){for(r=n=t[e],t[e]=null,i=!0;n;){if(t.indexOf(n)>-1){i=!1,t.splice(e,1);break}n=ma(n)}i&&(t[e]=r)}return t}function Ku(t,e){return e.some(r=>ci(r)?t(r)||Ku(t,$r(r)):!1)}function Gb(t){let e=ma(t);return e?$r(e):[]}function Kb(t,e){return Gu(t,e)!==void 0}function Xu(t,e){let r=null;for(let n=0,i=e==null?void 0:e.length;n<i&&!r;n++){let o=e[n];if(t(o))r=o;else{let s=$r(o);s&&s.length>0&&(r=Xu(t,s))}}return r}function Ju(t,e){let r=[];for(let n=0,i=e.length;n<i;n++){if(!ci(e[n]))continue;t(e[n])&&r.push(e[n]);let o=$r(e[n]);o&&(r=r.concat(Ju(t,o)))}return r}var ue,fa=A(()=>{"use strict";sr();ue={isTag:ci,getAttributeValue:Gu,getName:_b,getChildren:$r,getParent:ma,getText:Wb,removeSubsets:Vb,existsOne:Ku,getSiblings:Gb,hasAttrib:Kb,findOne:Xu,findAll:Ju}});var cr,Qu=A(()=>{"use strict";cr=class{addClosingSlash;voidTags;constructor(e=!1,r){this.addClosingSlash=e,Array.isArray(r)?this.voidTags=r.reduce((n,i)=>n.add(i.toLowerCase()).add(i.toUpperCase()).add(i),new Set):this.voidTags=["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"].reduce((n,i)=>n.add(i.toLowerCase()).add(i.toUpperCase()).add(i),new Set)}formatNode(e,r,n){let i=this.addClosingSlash,o=i&&r&&!r.endsWith(" ")?" ":"",s=i?`${o}/`:"";return this.isVoidElement(e.toLowerCase())?`<${e}${r}${s}>`:`<${e}${r}>${n}</${e}>`}isVoidElement(e){return this.voidTags.has(e)}}});var Yu,Ue,ha=A(()=>{"use strict";Yu=ot(si(),1);qr();sr();Ue=class t extends Be{rawText;nodeType=j.TEXT_NODE;rawTagName="#text";constructor(e,r=null,n){super(r,n),this.rawText=e}clone(){return new t(this.rawText,null,this.range?[...this.range]:void 0)}get text(){return Yu.default.decode(this.rawText)}get trimmedText(){return this.text.trim()}get trimmedRawText(){return this.rawText.trim()}get isWhitespace(){return/^(\s| )*$/.test(this.rawText)}toString(){return this.rawText}}});function Or(t){return JSON.parse(JSON.stringify(tl.default.decode(t)))}function e2(...t){let e=r=>{for(let n=0;n<r.length;n++){let i=r[n];ga.add(i),ga.add(i.toUpperCase())}};for(let r of t)e(r)}function li(t,e={}){var x,v;let r=new cr((x=e==null?void 0:e.voidTag)==null?void 0:x.closingSlash,(v=e==null?void 0:e.voidTag)==null?void 0:v.tags),n=e.blockTextElements||{script:!0,noscript:!0,style:!0,pre:!0},i=Object.keys(n),o=i.map(T=>new RegExp(`^${T}$`,"i")),s=i.filter(T=>!!n[T]).map(T=>new RegExp(`^${T}$`,"i"));function c(T){return s.some(k=>k.test(T))}function u(T){return o.some(k=>k.test(T))}let l=(T,k)=>[T-w,k-w],d=new Ht("",{},"",null,[0,t.length],r,e),p=d,m=[d],f=-1,h,g;t=`<${zr}>${t}</${zr}>`;let{lowerCaseTagName:y,fixNestedATags:C}=e,b=t.length-(zr.length+2),w=zr.length+2;for(;g=dt.exec(t);){let{0:T,1:k,2:S,3:P,4:q}=g,R=T.length,O=dt.lastIndex-R,W=dt.lastIndex;if(f>-1&&f+R<W){let z=t.substring(f,O);p.appendChild(new Ue(z,p,l(f,O)))}if(f=dt.lastIndex,S!==zr){if(T[1]==="!"){if(e.comment){let z=t.substring(O+4,W-3);p.appendChild(new It(z,p,l(O,W)))}continue}if(y&&(S=S.toLowerCase()),!k){let z={};for(let M;M=t2.exec(P);){let{1:B,2:H}=M,F=H[0]==="'"||H[0]==='"';z[B.toLowerCase()]=F?H.slice(1,H.length-1):H}let I=p.rawTagName;!q&&Zu[I]&&Zu[I][S]&&(m.pop(),p=bt(m)),C&&(S==="a"||S==="A")&&(h!==void 0&&(m.splice(h),p=bt(m)),h=m.length);let _=dt.lastIndex,E=_-R;if(p=p.appendChild(new Ht(S,z,P.slice(1),null,l(E,_),r,e)),m.push(p),u(S)){let M=`</${S}>`,B=y?t.toLocaleLowerCase().indexOf(M,dt.lastIndex):t.indexOf(M,dt.lastIndex),H=B===-1?b:B;if(c(S)){let F=t.substring(_,H);F.length>0&&/\S/.test(F)&&p.appendChild(new Ue(F,p,l(_,H)))}B===-1?f=dt.lastIndex=t.length+1:(f=dt.lastIndex=B+M.length,k="/")}}if(k||q||r.isVoidElement(S))for(;;)if(h!=null&&(S==="a"||S==="A")&&(h=void 0),p.rawTagName===S){p.range[1]=l(-1,Math.max(f,W))[1],m.pop(),p=bt(m);break}else{let z=p.tagName;if(el[z]&&el[z][S]){m.pop(),p=bt(m);continue}break}}}return m}function pt(t,e={}){let r=li(t,e),[n]=r;for(;r.length>1;){let i=r.pop(),o=bt(r);i&&i.parentNode&&i.parentNode.parentNode&&(i.parentNode===o&&i.tagName===o.tagName?e.parseNoneClosedTags!==!0&&(o.removeChild(i),i.childNodes.forEach(s=>{o.parentNode&&o.parentNode.appendChild(s)}),r.pop()):e.parseNoneClosedTags!==!0&&(o.removeChild(i),i.childNodes.forEach(s=>{o.appendChild(s)})))}return n}function ui(t,e){let r=[];for(let n of t)if(typeof n=="string")if(/<[a-zA-Z!]/.test(n)){let o=li(n,e||{})[0];if(o&&o.childNodes)for(let s of o.childNodes)s.parentNode=null,r.push(s)}else r.push(new Ue(n));else n.remove(),r.push(n);return r}function et(t,e){return t.map(r=>(r.parentNode=e,r))}var tl,Xb,Jb,Qb,Yb,Zb,ga,ya,Ht,dt,t2,Zu,el,zr,di=A(()=>{"use strict";ua();tl=ot(si(),1);Vu();fa();Qu();pa();qr();ha();sr();Xb=["h1","h2","h3","h4","h5","h6","header","hgroup"],Jb=["details","dialog","dd","div","dt"],Qb=["fieldset","figcaption","figure","footer","form"],Yb=["table","td","tr"],Zb=["address","article","aside","blockquote","br","hr","li","main","nav","ol","p","pre","section","ul"],ga=new Set;e2(Xb,Jb,Qb,Yb,Zb);ya=class{_set;_afterUpdate;_validate(e){if(/\s/.test(e))throw new Error(`DOMException in DOMTokenList.add: The token '${e}' contains HTML space characters, which are not valid in tokens.`)}constructor(e=[],r=()=>null){this._set=new Set(e),this._afterUpdate=r}add(e){this._validate(e),this._set.add(e),this._afterUpdate(this)}replace(e,r){this._validate(r),this._set.delete(e),this._set.add(r),this._afterUpdate(this)}remove(e){this._set.delete(e)&&this._afterUpdate(this)}toggle(e){this._validate(e),this._set.has(e)?this._set.delete(e):this._set.add(e),this._afterUpdate(this)}contains(e){return this._set.has(e)}get length(){return this._set.size}values(){return this._set.values()}get value(){return Array.from(this._set.values())}toString(){return Array.from(this._set.values()).join(" ")}},Ht=class t extends Be{rawAttrs;voidTag;_attrs;_rawAttrs;_queryCache;_parseOptions;rawTagName;id;classList;nodeType=j.ELEMENT_NODE;get isSelectorCacheEnabled(){var e;return((e=this._parseOptions)==null?void 0:e.selectorCache)!==!1}getQueryCache(){return this._queryCache||(this._queryCache=new Map),this._queryCache}clearQueryCache(){this._queryCache=void 0}invalidateSelectorCacheRecursively(){let e=this;for(;e;)e.clearQueryCache(),e=e.parentNode}quoteAttribute(e){return e==null?"null":JSON.stringify(e.replace(/"/g,""")).replace(/\\t/g," ").replace(/\\n/g,`
|
|
44
44
|
`).replace(/\\r/g,"\r").replace(/\\/g,"")}constructor(e,r,n="",i=null,o,s=new cr,c={}){if(super(i,o),this.rawAttrs=n,this.voidTag=s,this.rawTagName=e,this.rawAttrs=n||"",this.id=r.id||"",this.childNodes=[],this._parseOptions=c,this.classList=new ya(r.class?r.class.split(/\s+/):[],u=>this.setAttribute("class",u.toString())),r.id&&(n||(this.rawAttrs=`id="${r.id}"`)),r.class&&!n){let u=`class="${this.classList.toString()}"`;this.rawAttrs?this.rawAttrs+=` ${u}`:this.rawAttrs=u}}removeChild(e){return this.childNodes=this.childNodes.filter(r=>r!==e),this.invalidateSelectorCacheRecursively(),this}exchangeChild(e,r){let n=this.childNodes;return this.childNodes=n.map(i=>i===e?r:i),this.invalidateSelectorCacheRecursively(),this}get tagName(){return this.rawTagName?this.rawTagName.toUpperCase():this.rawTagName}set tagName(e){this.rawTagName=e.toLowerCase()}get localName(){return this.rawTagName.toLowerCase()}get isVoidElement(){return this.voidTag.isVoidElement(this.localName)}get rawText(){return/^br$/i.test(this.rawTagName)?`
|
|
45
45
|
`:this.childNodes.reduce((e,r)=>e+=r.rawText,"")}get textContent(){return Or(this.rawText)}set textContent(e){let r=[new Ue(e,this)];this.childNodes=r,this.invalidateSelectorCacheRecursively()}get text(){return Or(this.rawText)}get structuredText(){let e=[],r=[e];function n(i){if(i.nodeType===j.ELEMENT_NODE)ga.has(i.rawTagName)?(e.length>0&&r.push(e=[]),i.childNodes.forEach(n),e.length>0&&r.push(e=[])):i.childNodes.forEach(n);else if(i.nodeType===j.TEXT_NODE)if(i.isWhitespace)e.prependWhitespace=!0;else{let o=i.trimmedText;e.prependWhitespace&&(o=` ${o}`,e.prependWhitespace=!1),e.push(o)}}return n(this),r.map(i=>i.join("").replace(/\s{2,}/g," ")).join(`
|
|
46
46
|
`).replace(/\s+$/,"")}toString(){let e=this.rawTagName;if(e){let r=this.rawAttrs?` ${this.rawAttrs}`:"";return this.voidTag.formatNode(e,r,this.innerHTML)}return this.innerHTML}get innerHTML(){return this.childNodes.map(e=>e.toString()).join("")}set innerHTML(e){let r=pt(e,this._parseOptions),n=r.childNodes.length?r.childNodes:[new Ue(e,this)];et(n,this),et(this.childNodes,null),this.childNodes=n,this.invalidateSelectorCacheRecursively()}set_content(e,r={}){if(e instanceof Be)e=[e];else if(typeof e=="string"){r={...this._parseOptions,...r};let n=pt(e,r);e=n.childNodes.length?n.childNodes:[new Ue(n.innerHTML,this)]}return et(this.childNodes,null),et(e,this),this.childNodes=e,this.invalidateSelectorCacheRecursively(),this}replaceWith(...e){let r=this.parentNode;if(!r)return this;let n=e.map(o=>{if(o instanceof Be)return[o];if(typeof o=="string"){let s=pt(o,this._parseOptions);return s.childNodes.length?s.childNodes:[new Ue(o,this)]}return[]}).flat(),i=r.childNodes.findIndex(o=>o===this);return et([this],null),r.childNodes=[...r.childNodes.slice(0,i),...et(n,r),...r.childNodes.slice(i+1)],r.invalidateSelectorCacheRecursively(),this}get outerHTML(){return this.toString()}trimRight(e){for(let r=0;r<this.childNodes.length;r++){let n=this.childNodes[r];if(n.nodeType===j.ELEMENT_NODE)n.trimRight(e);else{let i=n.rawText.search(e);i>-1&&(n.rawText=n.rawText.substr(0,i),this.childNodes.length=r+1)}}return this.invalidateSelectorCacheRecursively(),this}get structure(){let e=[],r=0;function n(o){e.push(" ".repeat(r)+o)}function i(o){let s=o.id?`#${o.id}`:"",c=o.classList.length?`.${o.classList.value.join(".")}`:"";n(`${o.rawTagName}${s}${c}`),r++,o.childNodes.forEach(u=>{u.nodeType===j.ELEMENT_NODE?i(u):u.nodeType===j.TEXT_NODE&&(u.isWhitespace||n("#text"))}),r--}return i(this),e.join(`
|
|
47
|
-
`)}removeWhitespace(){let e=0;this.childNodes.forEach(n=>{if(n.nodeType===j.TEXT_NODE){if(n.isWhitespace)return;n.rawText=n.trimmedRawText}else n.nodeType===j.ELEMENT_NODE&&n.removeWhitespace();this.childNodes[e++]=n}),this.childNodes.length=e,this.invalidateSelectorCacheRecursively();let r=Object.keys(this.rawAttributes).map(n=>{let i=this.rawAttributes[n];return`${n}=${JSON.stringify(i)}`}).join(" ");return this.rawAttrs=r,delete this._rawAttrs,this}querySelectorAll(e){if(this.isSelectorCacheEnabled){let n=this.getQueryCache().get(e);if(n!=null&&n.all)return n.all.slice()}let r=Wu(e,this,{xmlMode:!1,adapter:ue});if(this.isSelectorCacheEnabled){let n=this.getQueryCache().get(e)||{};n.all=r,n.first===void 0&&(n.first=r[0]||null),this.getQueryCache().set(e,n)}return r}querySelector(e){if(this.isSelectorCacheEnabled){let n=this.getQueryCache().get(e);if((n==null?void 0:n.first)!==void 0)return n.first||null;if(n!=null&&n.all){let i=n.all[0]||null;return n.first=i,this.getQueryCache().set(e,n),i}}let r=ca(e,this,{xmlMode:!1,adapter:ue});if(this.isSelectorCacheEnabled){let n=this.getQueryCache().get(e)||{};n.first=r,this.getQueryCache().set(e,n)}return r}getElementsByTagName(e){let r=e.toUpperCase(),n=[],i=[],o=this,s=0;for(;s!==void 0&&o;){let c;do c=o.childNodes[s++];while(s<o.childNodes.length&&c===void 0);if(c===void 0){o=o.parentNode,s=i.pop();continue}c.nodeType===j.ELEMENT_NODE&&((e==="*"||c.tagName===r)&&n.push(c),c.childNodes.length>0&&(i.push(s),o=c,s=0))}return n}getElementById(e){let r=[],n=this,i=0;for(;i!==void 0&&n;){let o;do o=n.childNodes[i++];while(i<n.childNodes.length&&o===void 0);if(o===void 0){n=n.parentNode,i=r.pop();continue}if(o.nodeType===j.ELEMENT_NODE){if(o.id===e)return o;o.childNodes.length>0&&(r.push(i),n=o,i=0)}}return null}closest(e){let r=new Map,n=this,i=null;for(;n;)i&&r.set(n,i),i=n,n=n.parentNode;for(n=this;n;){let o=ca(e,n,{xmlMode:!0,adapter:{...ue,getChildren(s){let c=r.get(s);return c?[c]:[]},getSiblings(s){return[s]}}});if(o)return o;n=n.parentNode}return null}appendChild(e){return this.append(e),e}get attrs(){if(this._attrs)return this._attrs;this._attrs={};let e=this.rawAttributes;for(let r in e){let n=e[r]||"";this._attrs[r.toLowerCase()]=Or(n)}return this._attrs}get attributes(){let e={},r=this.rawAttributes;for(let n in r){let i=r[n]||"";e[n]=Or(i)}return e}get rawAttributes(){if(this._rawAttrs)return this._rawAttrs;let e={};if(this.rawAttrs){let r=/([a-zA-Z()[\]#@$.?:][a-zA-Z0-9-._:()[\]#]*)(?:\s*=\s*((?:'[^']*')|(?:"[^"]*")|\S+))?/g,n;for(;n=r.exec(this.rawAttrs);){let i=n[1],o=n[2]||null;o&&(o[0]==="'"||o[0]==='"')&&(o=o.slice(1,o.length-1)),e[i]=e[i]||o||""}}return this._rawAttrs=e,e}removeAttribute(e){let r=this.rawAttributes;return delete r[e],this._attrs&&delete this._attrs[e],this.rawAttrs=Object.keys(r).map(n=>{let i=this.quoteAttribute(r[n]);return i==="null"||i==='""'?n:`${n}=${i}`}).join(" "),e==="id"&&(this.id=""),this.invalidateSelectorCacheRecursively(),this}hasAttribute(e){return e.toLowerCase()in this.attrs}getAttribute(e){return this.attrs[e.toLowerCase()]}setAttribute(e,r){if(arguments.length<2)throw new Error("Failed to execute 'setAttribute' on 'Element'");let n=e.toLowerCase(),i=this.rawAttributes;for(let o in i)if(o.toLowerCase()===n){e=o;break}return i[e]=String(r),this._attrs&&(this._attrs[n]=Or(i[e])),this.rawAttrs=Object.keys(i).map(o=>{let s=this.quoteAttribute(i[o]);return s==="null"||s==='""'?o:`${o}=${s}`}).join(" "),e==="id"&&(this.id=r),this.invalidateSelectorCacheRecursively(),this}setAttributes(e){return this._attrs&&delete this._attrs,this._rawAttrs&&delete this._rawAttrs,this.rawAttrs=Object.keys(e).map(r=>{let n=e[r];return n==="null"||n==='""'?r:`${r}=${this.quoteAttribute(String(n))}`}).join(" "),this.invalidateSelectorCacheRecursively(),this}insertAdjacentHTML(e,r){if(arguments.length<2)throw new Error("2 arguments required");let n=pt(r,this._parseOptions);if(e==="afterend")this.after(...n.childNodes);else if(e==="afterbegin")this.prepend(...n.childNodes);else if(e==="beforeend")this.append(...n.childNodes);else if(e==="beforebegin")this.before(...n.childNodes);else throw new Error(`The value provided ('${e}') is not one of 'beforebegin', 'afterbegin', 'beforeend', or 'afterend'`);return this}prepend(...e){let r=ui(e,this._parseOptions);et(r,this),this.childNodes.unshift(...r),this.invalidateSelectorCacheRecursively()}append(...e){let r=ui(e,this._parseOptions);et(r,this),this.childNodes.push(...r),this.invalidateSelectorCacheRecursively()}before(...e){if(!this.parentNode)return;let r=ui(e,this.parentNode._parseOptions),n=this.parentNode.childNodes;et(r,this.parentNode),n.splice(n.indexOf(this),0,...r),this.parentNode.invalidateSelectorCacheRecursively()}after(...e){if(!this.parentNode)return;let r=ui(e,this.parentNode._parseOptions),n=this.parentNode.childNodes;et(r,this.parentNode),n.splice(n.indexOf(this)+1,0,...r),this.parentNode.invalidateSelectorCacheRecursively()}get nextSibling(){if(this.parentNode){let e=this.parentNode.childNodes,r=0;for(;r<e.length;){let n=e[r++];if(this===n)return e[r]||null}}return null}get nextElementSibling(){if(this.parentNode){let e=this.parentNode.childNodes,r=0,n=!1;for(;r<e.length;){let i=e[r++];if(n){if(i instanceof t)return i||null}else this===i&&(n=!0)}}return null}get previousSibling(){if(this.parentNode){let e=this.parentNode.childNodes,r=e.length;for(;r>0;){let n=e[--r];if(this===n)return e[r-1]||null}}return null}get previousElementSibling(){if(this.parentNode){let e=this.parentNode.childNodes,r=e.length,n=!1;for(;r>0;){let i=e[--r];if(n){if(i instanceof t)return i||null}else this===i&&(n=!0)}}return null}get children(){let e=[];for(let r of this.childNodes)r instanceof t&&e.push(r);return e}get firstChild(){return this.childNodes[0]}get firstElementChild(){return this.children[0]}get lastChild(){return bt(this.childNodes)}get lastElementChild(){return this.children[this.children.length-1]}get childElementCount(){return this.children.length}get classNames(){return this.classList.toString()}clone(){return pt(this.toString(),this._parseOptions).firstChild}},dt=/<!--[\s\S]*?-->|<(\/?)([a-zA-Z][-.:0-9_a-zA-Z@\xB7\xC0-\xD6\xD8-\xF6\u00F8-\u03A1\u03A3-\u03D9\u03DB-\u03EF\u03F7-\u03FF\u0400-\u04FF\u0500-\u052F\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E00-\u1E9B\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2126\u212A-\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA78E\uA790-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64-\uAB65\uFB00-\uFB06\uFB13-\uFB17\uFF21-\uFF3A\uFF41-\uFF5A\x37F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]*)((?:\s+[^>]*?(?:(?:'[^']*')|(?:"[^"]*"))?)*)\s*(\/?)>/gu,t2=/(?:^|\s)(id|class)\s*=\s*((?:'[^']*')|(?:"[^"]*")|\S+)/gi,Zu={li:{li:!0,LI:!0},LI:{li:!0,LI:!0},p:{p:!0,div:!0,P:!0,DIV:!0},P:{p:!0,div:!0,P:!0,DIV:!0},b:{div:!0,DIV:!0},B:{div:!0,DIV:!0},td:{td:!0,th:!0,TD:!0,TH:!0},TD:{td:!0,th:!0,TD:!0,TH:!0},th:{td:!0,th:!0,TD:!0,TH:!0},TH:{td:!0,th:!0,TD:!0,TH:!0},h1:{h1:!0,H1:!0},H1:{h1:!0,H1:!0},h2:{h2:!0,H2:!0},H2:{h2:!0,H2:!0},h3:{h3:!0,H3:!0},H3:{h3:!0,H3:!0},h4:{h4:!0,H4:!0},H4:{h4:!0,H4:!0},h5:{h5:!0,H5:!0},H5:{h5:!0,H5:!0},h6:{h6:!0,H6:!0},H6:{h6:!0,H6:!0}},el={li:{ul:!0,ol:!0,UL:!0,OL:!0},LI:{ul:!0,ol:!0,UL:!0,OL:!0},a:{div:!0,DIV:!0},A:{div:!0,DIV:!0},b:{div:!0,DIV:!0},B:{div:!0,DIV:!0},i:{div:!0,DIV:!0},I:{div:!0,DIV:!0},p:{div:!0,DIV:!0},P:{div:!0,DIV:!0},td:{tr:!0,table:!0,TR:!0,TABLE:!0},TD:{tr:!0,table:!0,TR:!0,TABLE:!0},th:{tr:!0,table:!0,TR:!0,TABLE:!0},TH:{tr:!0,table:!0,TR:!0,TABLE:!0}},zr="documentfragmentcontainer"});var rl=T(()=>{"use strict";di()});function ba(t,e={}){return li(t,e).length===1}var nl=T(()=>{"use strict";di()});function Re(t,e={}){return pt(t,e)}var jr=T(()=>{"use strict";pa();di();qr();ha();sr();rl();nl();Re.parse=pt;Re.HTMLElement=It;Re.CommentNode=Ht;Re.valid=ba;Re.Node=Be;Re.TextNode=Ue;Re.NodeType=j});var Ve,il=T(()=>{"use strict";ua();jr();fa();Ve=class t{elements;constructor(e){Array.isArray(e)?this.elements=e.filter(r=>r.nodeType===j.ELEMENT_NODE):this.elements=e.nodeType===j.ELEMENT_NODE?[e]:[]}find(e){let r=[];return this.elements.forEach(n=>{r.push(...n.querySelectorAll(e))}),new t(r)}parent(e){let r=[];return this.elements.forEach(n=>{let i=n.parentNode;i&&i.nodeType===j.ELEMENT_NODE&&(!e||Te(i,e,{adapter:ue}))&&(r.includes(i)||r.push(i))}),new t(r)}children(e){let r=[];return this.elements.forEach(n=>{n.childNodes.forEach(i=>{if(i.nodeType===j.ELEMENT_NODE){let o=i;(!e||Te(o,e,{adapter:ue}))&&r.push(o)}})}),new t(r)}siblings(e){let r=[];return this.elements.forEach(n=>{let i=n.parentNode;i&&i.childNodes.forEach(o=>{if(o!==n&&o.nodeType===j.ELEMENT_NODE){let s=o;(!e||Te(s,e,{adapter:ue}))&&(r.includes(s)||r.push(s))}})}),new t(r)}next(e){let r=[];return this.elements.forEach(n=>{let i=n.nextElementSibling;for(;i;){if(!e||Te(i,e,{adapter:ue})){r.push(i);break}break}}),new t(r)}prev(e){let r=[];return this.elements.forEach(n=>{let i=n.previousElementSibling;i&&(!e||Te(i,e,{adapter:ue}))&&r.push(i)}),new t(r)}nextAll(e){let r=[];return this.elements.forEach(n=>{let i=n.nextElementSibling;for(;i;)(!e||Te(i,e,{adapter:ue}))&&r.push(i),i=i.nextElementSibling}),new t(r)}prevAll(e){let r=[];return this.elements.forEach(n=>{let i=n.previousElementSibling;for(;i;)(!e||Te(i,e,{adapter:ue}))&&r.push(i),i=i.previousElementSibling}),new t(r)}closest(e){let r=[];return this.elements.forEach(n=>{let i=n.closest(e);i&&(r.includes(i)||r.push(i))}),new t(r)}first(){return new t(this.elements.slice(0,1))}last(){return new t(this.elements.slice(-1))}eq(e){return e<0&&(e=this.elements.length+e),new t(this.elements.slice(e,e+1))}filter(e){if(typeof e=="string"){let r=this.elements.filter(n=>Te(n,e,{adapter:ue}));return new t(r)}else{let r=this.elements.filter((n,i)=>e(new t(n),i));return new t(r)}}not(e){let r=this.elements.filter(n=>!Te(n,e,{adapter:ue}));return new t(r)}has(e){let r=this.elements.filter(n=>n.querySelector(e)!==null);return new t(r)}add(e){if(e.trim().startsWith("<")){let r=Re(e);return new t([...this.elements,...r.children])}return this}parents(e){let r=[];return this.elements.forEach(n=>{let i=n.parentNode;for(;i&&i.nodeType===j.ELEMENT_NODE;){let o=i;(!e||Te(o,e,{adapter:ue}))&&(r.includes(o)||r.push(o)),i=i.parentNode}}),new t(r)}parentsUntil(e){let r=[];return this.elements.forEach(n=>{let i=n.parentNode;for(;i&&i.nodeType===j.ELEMENT_NODE;){let o=i;if(Te(o,e,{adapter:ue}))break;r.includes(o)||r.push(o),i=i.parentNode}}),new t(r)}nextUntil(e){let r=[];return this.elements.forEach(n=>{let i=n.nextElementSibling;for(;i&&!Te(i,e,{adapter:ue});)r.push(i),i=i.nextElementSibling}),new t(r)}prevUntil(e){let r=[];return this.elements.forEach(n=>{let i=n.previousElementSibling;for(;i&&!Te(i,e,{adapter:ue});)r.push(i),i=i.previousElementSibling}),new t(r)}slice(e,r){return new t(this.elements.slice(e,r))}contents(){let e=[];return this.elements.forEach(r=>{r.childNodes.forEach(n=>{n.nodeType===j.ELEMENT_NODE&&e.push(n)})}),new t(e)}text(){return this.elements.map(e=>e.text).join("")}html(){return this.elements.length>0?this.elements[0].innerHTML:null}outerHtml(){return this.elements.length>0?this.elements[0].outerHTML:""}attr(e){if(this.elements.length>0)return this.elements[0].getAttribute(e)}attrs(){return this.elements.length>0?this.elements[0].attributes:{}}data(e){if(this.elements.length===0)return;let n=this.elements[0].attributes;if(e)return n[`data-${e}`];let i={};for(let o in n)if(o.startsWith("data-")){let s=o.slice(5);i[s]=n[o]}return i}val(){if(this.elements.length===0)return;let e=this.elements[0];if(e.tagName==="INPUT")return e.getAttribute("value");if(e.tagName==="TEXTAREA")return e.text;if(e.tagName==="SELECT"){let r=e.querySelector("option[selected]")||e.querySelector("option");return r?r.getAttribute("value")??r.text:void 0}return e.getAttribute("value")}prop(e){if(this.elements.length===0)return;let r=this.elements[0];return e==="tagName"?r.tagName:e in r?r[e]:this.attr(e)}exists(){return this.elements.length>0}get length(){return this.elements.length}is(e){return this.elements.some(r=>Te(r,e,{adapter:ue}))}hasClass(e){return this.elements.some(r=>r.classList.contains(e))}index(e){if(this.elements.length===0)return-1;let r=this.elements[0],n=r.parentNode;if(!n)return 0;let i=n.childNodes.filter(o=>o.nodeType===j.ELEMENT_NODE);return e?i.findIndex(o=>o===r):i.indexOf(r)}each(e){return this.elements.forEach((r,n)=>{e(new t(r),n)}),this}map(e){return this.elements.map((r,n)=>e(new t(r),n))}toArray(){return this.elements.map(e=>new t(e))}reduce(e,r){let n=r;return this.elements.forEach((i,o)=>{n=e(n,new t(i),o)}),n}some(e){return this.elements.some((r,n)=>e(new t(r),n))}every(e){return this.elements.every((r,n)=>e(new t(r),n))}tagName(){var e;if(this.elements.length>0)return(e=this.elements[0].tagName)==null?void 0:e.toLowerCase()}clone(){let e=this.elements.map(r=>r.clone());return new t(e)}toString(){return this.outerHtml()}get raw(){return this.elements}get(e=0){return this.elements[e]}}});function ol(t,e){if(!t)return"";if(!e)return t;try{return t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//")?t:new URL(t,e).href}catch{return t}}function r2(t,e){if(t){if(t.startsWith("mailto:"))return"mailto";if(t.startsWith("tel:"))return"tel";if(t.startsWith("#"))return"anchor";if(e)try{let r=new URL(e);return new URL(t,e).hostname===r.hostname?"internal":"external"}catch{return}return t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//")?"external":"internal"}}function pi(t,e){let r=(e==null?void 0:e.selector)||"a[href]",n=[];return t.querySelectorAll(r).forEach(i=>{let o=i.getAttribute("href")||"";e!=null&&e.absolute&&(e!=null&&e.baseUrl)&&(o=ol(o,e.baseUrl));let s=i.querySelectorAll("img"),c=i.querySelectorAll("svg");n.push({href:o,text:i.text.trim(),rel:i.getAttribute("rel"),target:i.getAttribute("target"),title:i.getAttribute("title"),type:r2(o,e==null?void 0:e.baseUrl),hasImage:s.length>0,hasImageWithAlt:s.filter(u=>{var l;return!!((l=u.getAttribute("alt"))!=null&&l.trim())}).length>0,hasSvg:c.length>0,hasSvgWithTitle:c.filter(u=>u.querySelectorAll("title").length>0||!!u.getAttribute("aria-label")).length>0,ariaLabel:i.getAttribute("aria-label")})}),n}function mi(t,e){let r=(e==null?void 0:e.selector)||"img[src]",n=[];return t.querySelectorAll(r).forEach(i=>{let o=i.getAttribute("src")||"";e!=null&&e.absolute&&(e!=null&&e.baseUrl)&&(o=ol(o,e.baseUrl));let s=i.getAttribute("width"),c=i.getAttribute("height");n.push({src:o,alt:i.getAttribute("alt"),title:i.getAttribute("title"),width:s?parseInt(s,10):void 0,height:c?parseInt(c,10):void 0,srcset:i.getAttribute("srcset"),loading:i.getAttribute("loading"),decoding:i.getAttribute("decoding")})}),n}function fi(t){let e={},r=t.querySelector("title");e.title=r&&r.text.trim()||void 0;let n=t.querySelector("meta[charset]");if(n)e.charset=n.getAttribute("charset");else{let o=t.querySelector('meta[http-equiv="Content-Type"]'),s=o?o.getAttribute("content"):null;if(s){let c=s.match(/charset=([^;]+)/i);c&&(e.charset=c[1].trim())}}let i=t.querySelector('link[rel="canonical"]');return i&&(e.canonical=i.getAttribute("href")),t.querySelectorAll("meta[name]").forEach(o=>{var u;let s=(u=o.getAttribute("name"))==null?void 0:u.toLowerCase(),c=o.getAttribute("content");if(!(!s||!c))switch(s){case"description":e.description=c;break;case"keywords":e.keywords=c.split(",").map(l=>l.trim()).filter(Boolean);break;case"author":e.author=c;break;case"robots":e.robots=c.split(",").map(l=>l.trim().toLowerCase());break;case"viewport":e.viewport=c;break;default:e[s]=c}}),e}function hi(t){let e={},r=[];return t.querySelectorAll('meta[property^="og:"]').forEach(n=>{let i=n.getAttribute("property"),o=n.getAttribute("content");if(!i||!o)return;let s=i.replace("og:","");switch(s){case"title":e.title=o;break;case"type":e.type=o;break;case"url":e.url=o;break;case"image":r.push(o);break;case"description":e.description=o;break;case"site_name":e.siteName=o;break;case"locale":e.locale=o;break;default:e[s.replace(/_([a-z])/g,(c,u)=>u.toUpperCase())]=o}}),r.length===1?e.image=r[0]:r.length>1&&(e.image=r),e}function gi(t){let e={};return t.querySelectorAll('meta[name^="twitter:"]').forEach(r=>{let n=r.getAttribute("name"),i=r.getAttribute("content");if(!n||!i)return;let o=n.replace("twitter:","");switch(o){case"card":e.card=i;break;case"site":e.site=i;break;case"creator":e.creator=i;break;case"title":e.title=i;break;case"description":e.description=i;break;case"image":e.image=i;break;default:e[o]=i}}),e}function yi(t){let e=[];return t.querySelectorAll('script[type="application/ld+json"]').forEach(r=>{let n=r.innerHTML;if(n)try{let i=JSON.parse(n);i["@graph"]&&Array.isArray(i["@graph"])?e.push(...i["@graph"]):Array.isArray(i)?e.push(...i):e.push(i)}catch{}}),e}function al(t,e){let r=[],n=e||"form";return t.querySelectorAll(n).forEach(i=>{var s;let o=[];i.querySelectorAll("input, select, textarea").forEach(c=>{var m;let u=(m=c.tagName)==null?void 0:m.toLowerCase(),l=c.getAttribute("type")||(u==="textarea"?"textarea":u==="select"?"select":"text"),d=c.getAttribute("value");u==="textarea"&&(d=c.text);let p={name:c.getAttribute("name"),type:l,value:d,placeholder:c.getAttribute("placeholder"),required:c.hasAttribute("required")};if(u==="select"){p.options=[],c.querySelectorAll("option").forEach(h=>{p.options.push({value:h.getAttribute("value")||h.text,text:h.text.trim()})});let f=c.querySelector("option[selected]");f&&(p.value=f.getAttribute("value")||f.text)}o.push(p)}),r.push({action:i.getAttribute("action"),method:(s=i.getAttribute("method"))==null?void 0:s.toUpperCase(),name:i.getAttribute("name"),id:i.getAttribute("id"),fields:o})}),r}function sl(t,e){let r=[],n=e||"table";return t.querySelectorAll(n).forEach(i=>{let o=[],s=[],c=i.querySelector("caption"),u=c&&c.text.trim()||void 0,l=null,d=i.querySelector("thead");if(d&&d.querySelectorAll("th, td").forEach(m=>{o.push(m.text.trim())}),o.length===0){let m=i.querySelector("tr");m&&(m.childNodes.forEach(f=>{if(f.nodeType===j.ELEMENT_NODE){let h=f;["TH","TD"].includes(h.tagName)&&o.push(h.text.trim())}}),o.length>0&&(l=m))}i.querySelectorAll("tr").forEach(m=>{if(m.parentNode&&m.parentNode.tagName==="THEAD"||m===l)return;let f=[];m.querySelectorAll("td, th").forEach(h=>{f.push(h.text.trim())}),f.length>0&&s.push(f)}),(o.length>0||s.length>0)&&r.push({caption:u,headers:o,rows:s})}),r}function cl(t){let e=[];return t.querySelectorAll("script").forEach(r=>{var o;let n=r.getAttribute("src"),i=n||(o=r.innerHTML)==null?void 0:o.trim();!n&&!i||e.push({src:n,type:r.getAttribute("type"),async:r.hasAttribute("async"),defer:r.hasAttribute("defer"),inline:i})}),e}function ul(t){let e=[];return t.querySelectorAll('link[rel="stylesheet"]').forEach(r=>{e.push({href:r.getAttribute("href"),media:r.getAttribute("media")})}),t.querySelectorAll("style").forEach(r=>{var i;let n=(i=r.innerHTML)==null?void 0:i.trim();n&&e.push({media:r.getAttribute("media"),inline:n})}),e}var va=T(()=>{"use strict";jr()});var ll={};Ee(ll,{ScrapeDocument:()=>wa});var wa,dl=T(()=>{"use strict";il();jr();va();wa=class t{rootElement;options;constructor(e,r){this.rootElement=e,this.options=r||{}}static async create(e,r){let n=Re(e);return new t(n,r)}static createSync(e,r){let n=Re(e);return new t(n,r)}select(e){let r=this.rootElement.querySelectorAll(e);return new Ve(r)}selectFirst(e){let r=this.rootElement.querySelector(e);return new Ve(r?[r]:[])}selectAll(e){return this.rootElement.querySelectorAll(e).map(n=>new Ve(n))}query(e){return this.select(e)}queryAll(e){return this.selectAll(e)}text(e){let r=this.rootElement.querySelector(e);return r?r.text.trim():""}texts(e){return this.rootElement.querySelectorAll(e).map(n=>n.text.trim()).filter(n=>n.length>0)}attr(e,r){let n=this.rootElement.querySelector(e);return n?n.getAttribute(r):void 0}attrs(e,r){let n=this.rootElement.querySelectorAll(e),i=[];return n.forEach(o=>{let s=o.getAttribute(r);s!==void 0&&i.push(s)}),i}innerHtml(e){let r=this.rootElement.querySelector(e);return r?r.innerHTML:null}outerHtml(e){let r=this.rootElement.querySelector(e);return r?r.outerHTML:""}links(e){return pi(this.rootElement,{...e,baseUrl:this.options.baseUrl})}images(e){return mi(this.rootElement,{...e,baseUrl:this.options.baseUrl})}meta(){return fi(this.rootElement)}openGraph(){return hi(this.rootElement)}twitterCard(){return gi(this.rootElement)}jsonLd(){return yi(this.rootElement)}forms(e){return al(this.rootElement,e)}tables(e){return sl(this.rootElement,e)}scripts(){return cl(this.rootElement)}styles(){return ul(this.rootElement)}extract(e){let r={};for(let[n,i]of Object.entries(e)){let o=this.extractField(i);o===void 0?typeof i=="object"&&i.optional===!0||(r[n]=void 0):r[n]=o}return r}extractField(e){if(typeof e=="string")return this.text(e)||void 0;let{selector:r,attribute:n,multiple:i,transform:o}=e,s="default"in e?e.default:void 0;if(i){let c=this.rootElement.querySelectorAll(r),u=[];return c.forEach(l=>{let d;n?d=l.getAttribute(n)||"":d=l.text.trim(),d&&u.push(o?o(d):d)}),u.length===0&&s!==void 0?s:u}else{let c=this.rootElement.querySelector(r);if(!c)return s;let u;return n?u=c.getAttribute(n)||"":u=c.text.trim(),u?o?o(u):u:s}}title(){let e=this.rootElement.querySelector("title");return(e?e.text.trim():"")||void 0}body(){let e=this.rootElement.querySelector("body");return new Ve(e?[e]:[])}head(){let e=this.rootElement.querySelector("head");return new Ve(e?[e]:[])}html(){return this.rootElement.outerHTML}root(){return new Ve(this.rootElement)}exists(e){return this.rootElement.querySelector(e)!==null}count(e){return this.rootElement.querySelectorAll(e).length}findByText(e,r){let n=[];return(r?this.rootElement.querySelectorAll(r):this.rootElement.querySelectorAll("*")).forEach(o=>{o.text.includes(e)&&n.push(new Ve(o))}),n}findByExactText(e,r){let n=[];return(r?this.rootElement.querySelectorAll(r):this.rootElement.querySelectorAll("*")).forEach(o=>{o.text.trim()===e&&n.push(new Ve(o))}),n}findByData(e,r){let n=r!==void 0?`[data-${e}="${r}"]`:`[data-${e}]`;return this.selectAll(n)}get raw(){return this.rootElement}get baseUrl(){return this.options.baseUrl}}});var bi,tC,ka,Sa=T(()=>{bi=()=>{},tC=globalThis.performance,ka=()=>({on:bi,stdout:{on:bi},stderr:{on:bi},kill:bi})});function ml(t){let e=t.getReader();return new bn({async read(){try{let{done:r,value:n}=await e.read();r?this.push(null):this.push(n)}catch(r){this.destroy(r)}},destroy(r,n){e.cancel().finally(()=>n(r))}})}function Ta(t){return new ReadableStream({start(e){t.on("data",r=>{e.enqueue(new Uint8Array(r))}),t.on("end",()=>{e.close()}),t.on("error",r=>{e.error(r)})},cancel(){t.destroy()}})}var Aa=T(()=>{"use strict";vn();yn()});var i2,tt,Ca=T(()=>{"use strict";uo();co();Aa();Nn();Fn();V();pn();hn();i2=[101,103,204,205,304],tt=class t{timings;connection;raw;constructor(e,r={}){if(this.timings=r.timings,this.connection=r.connection,e instanceof Response)this.raw=e;else{let n=i2.includes(e.statusCode)?null:e.body;this.raw=new Response(n,{status:e.statusCode,statusText:String(e.statusCode),headers:e.headers})}}get status(){return this.raw.status}get statusText(){return this.raw.statusText}get headers(){return this.raw.headers}get ok(){return this.raw.ok}get url(){return this.raw.url}get cache(){return ft(this.headers,this.status).cache}get rateLimit(){return ft(this.headers,this.status).rateLimit}links(){return Mn(this.headers)}get headerInfo(){return ft(this.headers,this.status)}async json(){return await this.raw.json()}async yaml(e){let r=await this.raw.text();return dn(r,e)}async csv(e){let r=await this.raw.text();return fn(r,e)}async text(){return this.raw.text()}async cleanText(){let e=await this.text();return Rn(e)}async blob(){return this.raw.blob()}read(){return this.raw.body}toNodeStream(){return this.raw.body?ml(this.raw.body):null}async pipe(e){let r=this.toNodeStream();if(!r)throw new pe("Response has no body to pipe",{streamType:"response",retriable:!0});return new Promise((n,i)=>{r.pipe(e),r.on("end",n),r.on("error",i),e.on("error",i)})}clone(){return new t(this.raw.clone(),{timings:this.timings,connection:this.connection})}sse(){return Pn(this.raw)}async*download(){if(!this.raw.body)return;let e=this.headers.get("content-length"),r=e?parseInt(e,10):void 0,n=0,i=Date.now(),o=0,s=0,c=i,u=0,l=.3,d=m=>{let f=Date.now(),h=f-c,g=n-s;if(h>0){let C=g/h*1e3;u=u===0?C:u*(1-l)+C*l}s=n,c=f;let y;return r&&(y=m?100:Math.min(n/r*100,99.9)),{loaded:n,transferred:n,total:r,percent:y,rate:u,estimated:r&&u>0?(r-n)/u*1e3:void 0,direction:"download"}},p=this.raw.body.getReader();try{for(yield d(!1);;){let{done:m,value:f}=await p.read();if(m){yield d(!0);break}if(f){n+=f.byteLength;let h=Date.now();h-o>100&&(yield d(!1),o=h)}}}finally{p.releaseLock()}}async*[Symbol.asyncIterator](){if(!this.raw.body)return;let e=this.raw.body.getReader();try{for(;;){let{done:r,value:n}=await e.read();if(r)break;n&&(yield n)}}finally{e.releaseLock()}}}});var qt,vi,hC,wi=T(()=>{qt=(...t)=>t.join("/"),vi=t=>t.split("/").slice(0,-1).join("/"),hC=globalThis.performance});function a2(){return"curl-impersonate-chrome"}function Ea(){return qt(o2,a2())}async function fl(){try{return await Zi.access(Ea()),!0}catch{return!1}}var o2,hl=T(()=>{"use strict";At();wi();Bn();Sa();At();vn();yn();o2=qt(cc(),".recker","bin")});var gl={};Ee(gl,{CurlTransport:()=>Da});var Da,yl=T(()=>{"use strict";Sa();Ca();V();hl();Da=class{async dispatch(e){return new Promise(async(r,n)=>{let i=["-X",e.method,e.url,"-i","-s","--compressed","--no-keepalive"];e.headers.forEach((l,d)=>{i.push("-H",`${d}: ${l}`)}),e.body&&typeof e.body=="string"&&i.push("-d",e.body);let o=process.env.RECKER_CURL_BIN;o||(await fl()?o=Ea():o="curl");let s=ka(o,i),c=[],u=[];s.stdout.on("data",l=>c.push(l)),s.stderr.on("data",l=>u.push(l)),s.on("error",l=>{n(new je(`Failed to spawn curl: ${l.message}`,"ERR_CURL_SPAWN",e))}),s.on("close",l=>{if(l!==0){let w=Buffer.concat(u).toString();n(new je(`Curl exited with code ${l}: ${w}`,"ERR_CURL_EXIT",e));return}let d=Buffer.concat(c),p=d.indexOf(`\r
|
|
47
|
+
`)}removeWhitespace(){let e=0;this.childNodes.forEach(n=>{if(n.nodeType===j.TEXT_NODE){if(n.isWhitespace)return;n.rawText=n.trimmedRawText}else n.nodeType===j.ELEMENT_NODE&&n.removeWhitespace();this.childNodes[e++]=n}),this.childNodes.length=e,this.invalidateSelectorCacheRecursively();let r=Object.keys(this.rawAttributes).map(n=>{let i=this.rawAttributes[n];return`${n}=${JSON.stringify(i)}`}).join(" ");return this.rawAttrs=r,delete this._rawAttrs,this}querySelectorAll(e){if(this.isSelectorCacheEnabled){let n=this.getQueryCache().get(e);if(n!=null&&n.all)return n.all.slice()}let r=Wu(e,this,{xmlMode:!1,adapter:ue});if(this.isSelectorCacheEnabled){let n=this.getQueryCache().get(e)||{};n.all=r,n.first===void 0&&(n.first=r[0]||null),this.getQueryCache().set(e,n)}return r}querySelector(e){if(this.isSelectorCacheEnabled){let n=this.getQueryCache().get(e);if((n==null?void 0:n.first)!==void 0)return n.first||null;if(n!=null&&n.all){let i=n.all[0]||null;return n.first=i,this.getQueryCache().set(e,n),i}}let r=ca(e,this,{xmlMode:!1,adapter:ue});if(this.isSelectorCacheEnabled){let n=this.getQueryCache().get(e)||{};n.first=r,this.getQueryCache().set(e,n)}return r}getElementsByTagName(e){let r=e.toUpperCase(),n=[],i=[],o=this,s=0;for(;s!==void 0&&o;){let c;do c=o.childNodes[s++];while(s<o.childNodes.length&&c===void 0);if(c===void 0){o=o.parentNode,s=i.pop();continue}c.nodeType===j.ELEMENT_NODE&&((e==="*"||c.tagName===r)&&n.push(c),c.childNodes.length>0&&(i.push(s),o=c,s=0))}return n}getElementById(e){let r=[],n=this,i=0;for(;i!==void 0&&n;){let o;do o=n.childNodes[i++];while(i<n.childNodes.length&&o===void 0);if(o===void 0){n=n.parentNode,i=r.pop();continue}if(o.nodeType===j.ELEMENT_NODE){if(o.id===e)return o;o.childNodes.length>0&&(r.push(i),n=o,i=0)}}return null}closest(e){let r=new Map,n=this,i=null;for(;n;)i&&r.set(n,i),i=n,n=n.parentNode;for(n=this;n;){let o=ca(e,n,{xmlMode:!0,adapter:{...ue,getChildren(s){let c=r.get(s);return c?[c]:[]},getSiblings(s){return[s]}}});if(o)return o;n=n.parentNode}return null}appendChild(e){return this.append(e),e}get attrs(){if(this._attrs)return this._attrs;this._attrs={};let e=this.rawAttributes;for(let r in e){let n=e[r]||"";this._attrs[r.toLowerCase()]=Or(n)}return this._attrs}get attributes(){let e={},r=this.rawAttributes;for(let n in r){let i=r[n]||"";e[n]=Or(i)}return e}get rawAttributes(){if(this._rawAttrs)return this._rawAttrs;let e={};if(this.rawAttrs){let r=/([a-zA-Z()[\]#@$.?:][a-zA-Z0-9-._:()[\]#]*)(?:\s*=\s*((?:'[^']*')|(?:"[^"]*")|\S+))?/g,n;for(;n=r.exec(this.rawAttrs);){let i=n[1],o=n[2]||null;o&&(o[0]==="'"||o[0]==='"')&&(o=o.slice(1,o.length-1)),e[i]=e[i]||o||""}}return this._rawAttrs=e,e}removeAttribute(e){let r=this.rawAttributes;return delete r[e],this._attrs&&delete this._attrs[e],this.rawAttrs=Object.keys(r).map(n=>{let i=this.quoteAttribute(r[n]);return i==="null"||i==='""'?n:`${n}=${i}`}).join(" "),e==="id"&&(this.id=""),this.invalidateSelectorCacheRecursively(),this}hasAttribute(e){return e.toLowerCase()in this.attrs}getAttribute(e){return this.attrs[e.toLowerCase()]}setAttribute(e,r){if(arguments.length<2)throw new Error("Failed to execute 'setAttribute' on 'Element'");let n=e.toLowerCase(),i=this.rawAttributes;for(let o in i)if(o.toLowerCase()===n){e=o;break}return i[e]=String(r),this._attrs&&(this._attrs[n]=Or(i[e])),this.rawAttrs=Object.keys(i).map(o=>{let s=this.quoteAttribute(i[o]);return s==="null"||s==='""'?o:`${o}=${s}`}).join(" "),e==="id"&&(this.id=r),this.invalidateSelectorCacheRecursively(),this}setAttributes(e){return this._attrs&&delete this._attrs,this._rawAttrs&&delete this._rawAttrs,this.rawAttrs=Object.keys(e).map(r=>{let n=e[r];return n==="null"||n==='""'?r:`${r}=${this.quoteAttribute(String(n))}`}).join(" "),this.invalidateSelectorCacheRecursively(),this}insertAdjacentHTML(e,r){if(arguments.length<2)throw new Error("2 arguments required");let n=pt(r,this._parseOptions);if(e==="afterend")this.after(...n.childNodes);else if(e==="afterbegin")this.prepend(...n.childNodes);else if(e==="beforeend")this.append(...n.childNodes);else if(e==="beforebegin")this.before(...n.childNodes);else throw new Error(`The value provided ('${e}') is not one of 'beforebegin', 'afterbegin', 'beforeend', or 'afterend'`);return this}prepend(...e){let r=ui(e,this._parseOptions);et(r,this),this.childNodes.unshift(...r),this.invalidateSelectorCacheRecursively()}append(...e){let r=ui(e,this._parseOptions);et(r,this),this.childNodes.push(...r),this.invalidateSelectorCacheRecursively()}before(...e){if(!this.parentNode)return;let r=ui(e,this.parentNode._parseOptions),n=this.parentNode.childNodes;et(r,this.parentNode),n.splice(n.indexOf(this),0,...r),this.parentNode.invalidateSelectorCacheRecursively()}after(...e){if(!this.parentNode)return;let r=ui(e,this.parentNode._parseOptions),n=this.parentNode.childNodes;et(r,this.parentNode),n.splice(n.indexOf(this)+1,0,...r),this.parentNode.invalidateSelectorCacheRecursively()}get nextSibling(){if(this.parentNode){let e=this.parentNode.childNodes,r=0;for(;r<e.length;){let n=e[r++];if(this===n)return e[r]||null}}return null}get nextElementSibling(){if(this.parentNode){let e=this.parentNode.childNodes,r=0,n=!1;for(;r<e.length;){let i=e[r++];if(n){if(i instanceof t)return i||null}else this===i&&(n=!0)}}return null}get previousSibling(){if(this.parentNode){let e=this.parentNode.childNodes,r=e.length;for(;r>0;){let n=e[--r];if(this===n)return e[r-1]||null}}return null}get previousElementSibling(){if(this.parentNode){let e=this.parentNode.childNodes,r=e.length,n=!1;for(;r>0;){let i=e[--r];if(n){if(i instanceof t)return i||null}else this===i&&(n=!0)}}return null}get children(){let e=[];for(let r of this.childNodes)r instanceof t&&e.push(r);return e}get firstChild(){return this.childNodes[0]}get firstElementChild(){return this.children[0]}get lastChild(){return bt(this.childNodes)}get lastElementChild(){return this.children[this.children.length-1]}get childElementCount(){return this.children.length}get classNames(){return this.classList.toString()}clone(){return pt(this.toString(),this._parseOptions).firstChild}},dt=/<!--[\s\S]*?-->|<(\/?)([a-zA-Z][-.:0-9_a-zA-Z@\xB7\xC0-\xD6\xD8-\xF6\u00F8-\u03A1\u03A3-\u03D9\u03DB-\u03EF\u03F7-\u03FF\u0400-\u04FF\u0500-\u052F\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E00-\u1E9B\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2126\u212A-\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA78E\uA790-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64-\uAB65\uFB00-\uFB06\uFB13-\uFB17\uFF21-\uFF3A\uFF41-\uFF5A\x37F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]*)((?:\s+[^>]*?(?:(?:'[^']*')|(?:"[^"]*"))?)*)\s*(\/?)>/gu,t2=/(?:^|\s)(id|class)\s*=\s*((?:'[^']*')|(?:"[^"]*")|\S+)/gi,Zu={li:{li:!0,LI:!0},LI:{li:!0,LI:!0},p:{p:!0,div:!0,P:!0,DIV:!0},P:{p:!0,div:!0,P:!0,DIV:!0},b:{div:!0,DIV:!0},B:{div:!0,DIV:!0},td:{td:!0,th:!0,TD:!0,TH:!0},TD:{td:!0,th:!0,TD:!0,TH:!0},th:{td:!0,th:!0,TD:!0,TH:!0},TH:{td:!0,th:!0,TD:!0,TH:!0},h1:{h1:!0,H1:!0},H1:{h1:!0,H1:!0},h2:{h2:!0,H2:!0},H2:{h2:!0,H2:!0},h3:{h3:!0,H3:!0},H3:{h3:!0,H3:!0},h4:{h4:!0,H4:!0},H4:{h4:!0,H4:!0},h5:{h5:!0,H5:!0},H5:{h5:!0,H5:!0},h6:{h6:!0,H6:!0},H6:{h6:!0,H6:!0}},el={li:{ul:!0,ol:!0,UL:!0,OL:!0},LI:{ul:!0,ol:!0,UL:!0,OL:!0},a:{div:!0,DIV:!0},A:{div:!0,DIV:!0},b:{div:!0,DIV:!0},B:{div:!0,DIV:!0},i:{div:!0,DIV:!0},I:{div:!0,DIV:!0},p:{div:!0,DIV:!0},P:{div:!0,DIV:!0},td:{tr:!0,table:!0,TR:!0,TABLE:!0},TD:{tr:!0,table:!0,TR:!0,TABLE:!0},th:{tr:!0,table:!0,TR:!0,TABLE:!0},TH:{tr:!0,table:!0,TR:!0,TABLE:!0}},zr="documentfragmentcontainer"});var rl=A(()=>{"use strict";di()});function ba(t,e={}){return li(t,e).length===1}var nl=A(()=>{"use strict";di()});function Re(t,e={}){return pt(t,e)}var jr=A(()=>{"use strict";pa();di();qr();ha();sr();rl();nl();Re.parse=pt;Re.HTMLElement=Ht;Re.CommentNode=It;Re.valid=ba;Re.Node=Be;Re.TextNode=Ue;Re.NodeType=j});var Ve,il=A(()=>{"use strict";ua();jr();fa();Ve=class t{elements;constructor(e){Array.isArray(e)?this.elements=e.filter(r=>r.nodeType===j.ELEMENT_NODE):this.elements=e.nodeType===j.ELEMENT_NODE?[e]:[]}find(e){let r=[];return this.elements.forEach(n=>{r.push(...n.querySelectorAll(e))}),new t(r)}parent(e){let r=[];return this.elements.forEach(n=>{let i=n.parentNode;i&&i.nodeType===j.ELEMENT_NODE&&(!e||Se(i,e,{adapter:ue}))&&(r.includes(i)||r.push(i))}),new t(r)}children(e){let r=[];return this.elements.forEach(n=>{n.childNodes.forEach(i=>{if(i.nodeType===j.ELEMENT_NODE){let o=i;(!e||Se(o,e,{adapter:ue}))&&r.push(o)}})}),new t(r)}siblings(e){let r=[];return this.elements.forEach(n=>{let i=n.parentNode;i&&i.childNodes.forEach(o=>{if(o!==n&&o.nodeType===j.ELEMENT_NODE){let s=o;(!e||Se(s,e,{adapter:ue}))&&(r.includes(s)||r.push(s))}})}),new t(r)}next(e){let r=[];return this.elements.forEach(n=>{let i=n.nextElementSibling;for(;i;){if(!e||Se(i,e,{adapter:ue})){r.push(i);break}break}}),new t(r)}prev(e){let r=[];return this.elements.forEach(n=>{let i=n.previousElementSibling;i&&(!e||Se(i,e,{adapter:ue}))&&r.push(i)}),new t(r)}nextAll(e){let r=[];return this.elements.forEach(n=>{let i=n.nextElementSibling;for(;i;)(!e||Se(i,e,{adapter:ue}))&&r.push(i),i=i.nextElementSibling}),new t(r)}prevAll(e){let r=[];return this.elements.forEach(n=>{let i=n.previousElementSibling;for(;i;)(!e||Se(i,e,{adapter:ue}))&&r.push(i),i=i.previousElementSibling}),new t(r)}closest(e){let r=[];return this.elements.forEach(n=>{let i=n.closest(e);i&&(r.includes(i)||r.push(i))}),new t(r)}first(){return new t(this.elements.slice(0,1))}last(){return new t(this.elements.slice(-1))}eq(e){return e<0&&(e=this.elements.length+e),new t(this.elements.slice(e,e+1))}filter(e){if(typeof e=="string"){let r=this.elements.filter(n=>Se(n,e,{adapter:ue}));return new t(r)}else{let r=this.elements.filter((n,i)=>e(new t(n),i));return new t(r)}}not(e){let r=this.elements.filter(n=>!Se(n,e,{adapter:ue}));return new t(r)}has(e){let r=this.elements.filter(n=>n.querySelector(e)!==null);return new t(r)}add(e){if(e.trim().startsWith("<")){let r=Re(e);return new t([...this.elements,...r.children])}return this}parents(e){let r=[];return this.elements.forEach(n=>{let i=n.parentNode;for(;i&&i.nodeType===j.ELEMENT_NODE;){let o=i;(!e||Se(o,e,{adapter:ue}))&&(r.includes(o)||r.push(o)),i=i.parentNode}}),new t(r)}parentsUntil(e){let r=[];return this.elements.forEach(n=>{let i=n.parentNode;for(;i&&i.nodeType===j.ELEMENT_NODE;){let o=i;if(Se(o,e,{adapter:ue}))break;r.includes(o)||r.push(o),i=i.parentNode}}),new t(r)}nextUntil(e){let r=[];return this.elements.forEach(n=>{let i=n.nextElementSibling;for(;i&&!Se(i,e,{adapter:ue});)r.push(i),i=i.nextElementSibling}),new t(r)}prevUntil(e){let r=[];return this.elements.forEach(n=>{let i=n.previousElementSibling;for(;i&&!Se(i,e,{adapter:ue});)r.push(i),i=i.previousElementSibling}),new t(r)}slice(e,r){return new t(this.elements.slice(e,r))}contents(){let e=[];return this.elements.forEach(r=>{r.childNodes.forEach(n=>{n.nodeType===j.ELEMENT_NODE&&e.push(n)})}),new t(e)}text(){return this.elements.map(e=>e.text).join("")}html(){return this.elements.length>0?this.elements[0].innerHTML:null}outerHtml(){return this.elements.length>0?this.elements[0].outerHTML:""}attr(e){if(this.elements.length>0)return this.elements[0].getAttribute(e)}attrs(){return this.elements.length>0?this.elements[0].attributes:{}}data(e){if(this.elements.length===0)return;let n=this.elements[0].attributes;if(e)return n[`data-${e}`];let i={};for(let o in n)if(o.startsWith("data-")){let s=o.slice(5);i[s]=n[o]}return i}val(){if(this.elements.length===0)return;let e=this.elements[0];if(e.tagName==="INPUT")return e.getAttribute("value");if(e.tagName==="TEXTAREA")return e.text;if(e.tagName==="SELECT"){let r=e.querySelector("option[selected]")||e.querySelector("option");return r?r.getAttribute("value")??r.text:void 0}return e.getAttribute("value")}prop(e){if(this.elements.length===0)return;let r=this.elements[0];return e==="tagName"?r.tagName:e in r?r[e]:this.attr(e)}exists(){return this.elements.length>0}get length(){return this.elements.length}is(e){return this.elements.some(r=>Se(r,e,{adapter:ue}))}hasClass(e){return this.elements.some(r=>r.classList.contains(e))}index(e){if(this.elements.length===0)return-1;let r=this.elements[0],n=r.parentNode;if(!n)return 0;let i=n.childNodes.filter(o=>o.nodeType===j.ELEMENT_NODE);return e?i.findIndex(o=>o===r):i.indexOf(r)}each(e){return this.elements.forEach((r,n)=>{e(new t(r),n)}),this}map(e){return this.elements.map((r,n)=>e(new t(r),n))}toArray(){return this.elements.map(e=>new t(e))}reduce(e,r){let n=r;return this.elements.forEach((i,o)=>{n=e(n,new t(i),o)}),n}some(e){return this.elements.some((r,n)=>e(new t(r),n))}every(e){return this.elements.every((r,n)=>e(new t(r),n))}tagName(){var e;if(this.elements.length>0)return(e=this.elements[0].tagName)==null?void 0:e.toLowerCase()}clone(){let e=this.elements.map(r=>r.clone());return new t(e)}toString(){return this.outerHtml()}get raw(){return this.elements}get(e=0){return this.elements[e]}}});function ol(t,e){if(!t)return"";if(!e)return t;try{return t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//")?t:new URL(t,e).href}catch{return t}}function r2(t,e){if(t){if(t.startsWith("mailto:"))return"mailto";if(t.startsWith("tel:"))return"tel";if(t.startsWith("#"))return"anchor";if(e)try{let r=new URL(e);return new URL(t,e).hostname===r.hostname?"internal":"external"}catch{return}return t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//")?"external":"internal"}}function pi(t,e){let r=(e==null?void 0:e.selector)||"a[href]",n=[];return t.querySelectorAll(r).forEach(i=>{let o=i.getAttribute("href")||"";e!=null&&e.absolute&&(e!=null&&e.baseUrl)&&(o=ol(o,e.baseUrl));let s=i.querySelectorAll("img"),c=i.querySelectorAll("svg");n.push({href:o,text:i.text.trim(),rel:i.getAttribute("rel"),target:i.getAttribute("target"),title:i.getAttribute("title"),type:r2(o,e==null?void 0:e.baseUrl),hasImage:s.length>0,hasImageWithAlt:s.filter(u=>{var l;return!!((l=u.getAttribute("alt"))!=null&&l.trim())}).length>0,hasSvg:c.length>0,hasSvgWithTitle:c.filter(u=>u.querySelectorAll("title").length>0||!!u.getAttribute("aria-label")).length>0,ariaLabel:i.getAttribute("aria-label")})}),n}function mi(t,e){let r=(e==null?void 0:e.selector)||"img[src]",n=[];return t.querySelectorAll(r).forEach(i=>{let o=i.getAttribute("src")||"";e!=null&&e.absolute&&(e!=null&&e.baseUrl)&&(o=ol(o,e.baseUrl));let s=i.getAttribute("width"),c=i.getAttribute("height");n.push({src:o,alt:i.getAttribute("alt"),title:i.getAttribute("title"),width:s?parseInt(s,10):void 0,height:c?parseInt(c,10):void 0,srcset:i.getAttribute("srcset"),loading:i.getAttribute("loading"),decoding:i.getAttribute("decoding")})}),n}function fi(t){let e={},r=t.querySelector("title");e.title=r&&r.text.trim()||void 0;let n=t.querySelector("meta[charset]");if(n)e.charset=n.getAttribute("charset");else{let o=t.querySelector('meta[http-equiv="Content-Type"]'),s=o?o.getAttribute("content"):null;if(s){let c=s.match(/charset=([^;]+)/i);c&&(e.charset=c[1].trim())}}let i=t.querySelector('link[rel="canonical"]');return i&&(e.canonical=i.getAttribute("href")),t.querySelectorAll("meta[name]").forEach(o=>{var u;let s=(u=o.getAttribute("name"))==null?void 0:u.toLowerCase(),c=o.getAttribute("content");if(!(!s||!c))switch(s){case"description":e.description=c;break;case"keywords":e.keywords=c.split(",").map(l=>l.trim()).filter(Boolean);break;case"author":e.author=c;break;case"robots":e.robots=c.split(",").map(l=>l.trim().toLowerCase());break;case"viewport":e.viewport=c;break;default:e[s]=c}}),e}function hi(t){let e={},r=[];return t.querySelectorAll('meta[property^="og:"]').forEach(n=>{let i=n.getAttribute("property"),o=n.getAttribute("content");if(!i||!o)return;let s=i.replace("og:","");switch(s){case"title":e.title=o;break;case"type":e.type=o;break;case"url":e.url=o;break;case"image":r.push(o);break;case"description":e.description=o;break;case"site_name":e.siteName=o;break;case"locale":e.locale=o;break;default:e[s.replace(/_([a-z])/g,(c,u)=>u.toUpperCase())]=o}}),r.length===1?e.image=r[0]:r.length>1&&(e.image=r),e}function gi(t){let e={};return t.querySelectorAll('meta[name^="twitter:"]').forEach(r=>{let n=r.getAttribute("name"),i=r.getAttribute("content");if(!n||!i)return;let o=n.replace("twitter:","");switch(o){case"card":e.card=i;break;case"site":e.site=i;break;case"creator":e.creator=i;break;case"title":e.title=i;break;case"description":e.description=i;break;case"image":e.image=i;break;default:e[o]=i}}),e}function yi(t){let e=[];return t.querySelectorAll('script[type="application/ld+json"]').forEach(r=>{let n=r.innerHTML;if(n)try{let i=JSON.parse(n);i["@graph"]&&Array.isArray(i["@graph"])?e.push(...i["@graph"]):Array.isArray(i)?e.push(...i):e.push(i)}catch{}}),e}function al(t,e){let r=[],n=e||"form";return t.querySelectorAll(n).forEach(i=>{var s;let o=[];i.querySelectorAll("input, select, textarea").forEach(c=>{var m;let u=(m=c.tagName)==null?void 0:m.toLowerCase(),l=c.getAttribute("type")||(u==="textarea"?"textarea":u==="select"?"select":"text"),d=c.getAttribute("value");u==="textarea"&&(d=c.text);let p={name:c.getAttribute("name"),type:l,value:d,placeholder:c.getAttribute("placeholder"),required:c.hasAttribute("required")};if(u==="select"){p.options=[],c.querySelectorAll("option").forEach(h=>{p.options.push({value:h.getAttribute("value")||h.text,text:h.text.trim()})});let f=c.querySelector("option[selected]");f&&(p.value=f.getAttribute("value")||f.text)}o.push(p)}),r.push({action:i.getAttribute("action"),method:(s=i.getAttribute("method"))==null?void 0:s.toUpperCase(),name:i.getAttribute("name"),id:i.getAttribute("id"),fields:o})}),r}function sl(t,e){let r=[],n=e||"table";return t.querySelectorAll(n).forEach(i=>{let o=[],s=[],c=i.querySelector("caption"),u=c&&c.text.trim()||void 0,l=null,d=i.querySelector("thead");if(d&&d.querySelectorAll("th, td").forEach(m=>{o.push(m.text.trim())}),o.length===0){let m=i.querySelector("tr");m&&(m.childNodes.forEach(f=>{if(f.nodeType===j.ELEMENT_NODE){let h=f;["TH","TD"].includes(h.tagName)&&o.push(h.text.trim())}}),o.length>0&&(l=m))}i.querySelectorAll("tr").forEach(m=>{if(m.parentNode&&m.parentNode.tagName==="THEAD"||m===l)return;let f=[];m.querySelectorAll("td, th").forEach(h=>{f.push(h.text.trim())}),f.length>0&&s.push(f)}),(o.length>0||s.length>0)&&r.push({caption:u,headers:o,rows:s})}),r}function cl(t){let e=[];return t.querySelectorAll("script").forEach(r=>{var o;let n=r.getAttribute("src"),i=n||(o=r.innerHTML)==null?void 0:o.trim();!n&&!i||e.push({src:n,type:r.getAttribute("type"),async:r.hasAttribute("async"),defer:r.hasAttribute("defer"),inline:i})}),e}function ul(t){let e=[];return t.querySelectorAll('link[rel="stylesheet"]').forEach(r=>{e.push({href:r.getAttribute("href"),media:r.getAttribute("media")})}),t.querySelectorAll("style").forEach(r=>{var i;let n=(i=r.innerHTML)==null?void 0:i.trim();n&&e.push({media:r.getAttribute("media"),inline:n})}),e}var va=A(()=>{"use strict";jr()});var ll={};Ee(ll,{ScrapeDocument:()=>wa});var wa,dl=A(()=>{"use strict";il();jr();va();wa=class t{rootElement;options;constructor(e,r){this.rootElement=e,this.options=r||{}}static async create(e,r){let n=Re(e);return new t(n,r)}static createSync(e,r){let n=Re(e);return new t(n,r)}select(e){let r=this.rootElement.querySelectorAll(e);return new Ve(r)}selectFirst(e){let r=this.rootElement.querySelector(e);return new Ve(r?[r]:[])}selectAll(e){return this.rootElement.querySelectorAll(e).map(n=>new Ve(n))}query(e){return this.select(e)}queryAll(e){return this.selectAll(e)}text(e){let r=this.rootElement.querySelector(e);return r?r.text.trim():""}texts(e){return this.rootElement.querySelectorAll(e).map(n=>n.text.trim()).filter(n=>n.length>0)}attr(e,r){let n=this.rootElement.querySelector(e);return n?n.getAttribute(r):void 0}attrs(e,r){let n=this.rootElement.querySelectorAll(e),i=[];return n.forEach(o=>{let s=o.getAttribute(r);s!==void 0&&i.push(s)}),i}innerHtml(e){let r=this.rootElement.querySelector(e);return r?r.innerHTML:null}outerHtml(e){let r=this.rootElement.querySelector(e);return r?r.outerHTML:""}links(e){return pi(this.rootElement,{...e,baseUrl:this.options.baseUrl})}images(e){return mi(this.rootElement,{...e,baseUrl:this.options.baseUrl})}meta(){return fi(this.rootElement)}openGraph(){return hi(this.rootElement)}twitterCard(){return gi(this.rootElement)}jsonLd(){return yi(this.rootElement)}forms(e){return al(this.rootElement,e)}tables(e){return sl(this.rootElement,e)}scripts(){return cl(this.rootElement)}styles(){return ul(this.rootElement)}extract(e){let r={};for(let[n,i]of Object.entries(e)){let o=this.extractField(i);o===void 0?typeof i=="object"&&i.optional===!0||(r[n]=void 0):r[n]=o}return r}extractField(e){if(typeof e=="string")return this.text(e)||void 0;let{selector:r,attribute:n,multiple:i,transform:o}=e,s="default"in e?e.default:void 0;if(i){let c=this.rootElement.querySelectorAll(r),u=[];return c.forEach(l=>{let d;n?d=l.getAttribute(n)||"":d=l.text.trim(),d&&u.push(o?o(d):d)}),u.length===0&&s!==void 0?s:u}else{let c=this.rootElement.querySelector(r);if(!c)return s;let u;return n?u=c.getAttribute(n)||"":u=c.text.trim(),u?o?o(u):u:s}}title(){let e=this.rootElement.querySelector("title");return(e?e.text.trim():"")||void 0}body(){let e=this.rootElement.querySelector("body");return new Ve(e?[e]:[])}head(){let e=this.rootElement.querySelector("head");return new Ve(e?[e]:[])}html(){return this.rootElement.outerHTML}root(){return new Ve(this.rootElement)}exists(e){return this.rootElement.querySelector(e)!==null}count(e){return this.rootElement.querySelectorAll(e).length}findByText(e,r){let n=[];return(r?this.rootElement.querySelectorAll(r):this.rootElement.querySelectorAll("*")).forEach(o=>{o.text.includes(e)&&n.push(new Ve(o))}),n}findByExactText(e,r){let n=[];return(r?this.rootElement.querySelectorAll(r):this.rootElement.querySelectorAll("*")).forEach(o=>{o.text.trim()===e&&n.push(new Ve(o))}),n}findByData(e,r){let n=r!==void 0?`[data-${e}="${r}"]`:`[data-${e}]`;return this.selectAll(n)}get raw(){return this.rootElement}get baseUrl(){return this.options.baseUrl}}});var bi,tC,ka,Ta=A(()=>{bi=()=>{},tC=globalThis.performance,ka=()=>({on:bi,stdout:{on:bi},stderr:{on:bi},kill:bi})});function ml(t){let e=t.getReader();return new bn({async read(){try{let{done:r,value:n}=await e.read();r?this.push(null):this.push(n)}catch(r){this.destroy(r)}},destroy(r,n){e.cancel().finally(()=>n(r))}})}function Sa(t){return new ReadableStream({start(e){t.on("data",r=>{e.enqueue(new Uint8Array(r))}),t.on("end",()=>{e.close()}),t.on("error",r=>{e.error(r)})},cancel(){t.destroy()}})}var Aa=A(()=>{"use strict";vn();yn()});var i2,tt,Ca=A(()=>{"use strict";uo();co();Aa();Nn();Fn();V();pn();hn();i2=[101,103,204,205,304],tt=class t{timings;connection;raw;constructor(e,r={}){if(this.timings=r.timings,this.connection=r.connection,e instanceof Response)this.raw=e;else{let n=i2.includes(e.statusCode)?null:e.body;this.raw=new Response(n,{status:e.statusCode,statusText:String(e.statusCode),headers:e.headers})}}get status(){return this.raw.status}get statusText(){return this.raw.statusText}get headers(){return this.raw.headers}get ok(){return this.raw.ok}get url(){return this.raw.url}get cache(){return ft(this.headers,this.status).cache}get rateLimit(){return ft(this.headers,this.status).rateLimit}links(){return Mn(this.headers)}get headerInfo(){return ft(this.headers,this.status)}async json(){return await this.raw.json()}async yaml(e){let r=await this.raw.text();return dn(r,e)}async csv(e){let r=await this.raw.text();return fn(r,e)}async text(){return this.raw.text()}async cleanText(){let e=await this.text();return Rn(e)}async blob(){return this.raw.blob()}read(){return this.raw.body}toNodeStream(){return this.raw.body?ml(this.raw.body):null}async pipe(e){let r=this.toNodeStream();if(!r)throw new pe("Response has no body to pipe",{streamType:"response",retriable:!0});return new Promise((n,i)=>{r.pipe(e),r.on("end",n),r.on("error",i),e.on("error",i)})}clone(){return new t(this.raw.clone(),{timings:this.timings,connection:this.connection})}sse(){return Pn(this.raw)}async*download(){if(!this.raw.body)return;let e=this.headers.get("content-length"),r=e?parseInt(e,10):void 0,n=0,i=Date.now(),o=0,s=0,c=i,u=0,l=.3,d=m=>{let f=Date.now(),h=f-c,g=n-s;if(h>0){let C=g/h*1e3;u=u===0?C:u*(1-l)+C*l}s=n,c=f;let y;return r&&(y=m?100:Math.min(n/r*100,99.9)),{loaded:n,transferred:n,total:r,percent:y,rate:u,estimated:r&&u>0?(r-n)/u*1e3:void 0,direction:"download"}},p=this.raw.body.getReader();try{for(yield d(!1);;){let{done:m,value:f}=await p.read();if(m){yield d(!0);break}if(f){n+=f.byteLength;let h=Date.now();h-o>100&&(yield d(!1),o=h)}}}finally{p.releaseLock()}}async*[Symbol.asyncIterator](){if(!this.raw.body)return;let e=this.raw.body.getReader();try{for(;;){let{done:r,value:n}=await e.read();if(r)break;n&&(yield n)}}finally{e.releaseLock()}}}});var qt,vi,hC,wi=A(()=>{qt=(...t)=>t.join("/"),vi=t=>t.split("/").slice(0,-1).join("/"),hC=globalThis.performance});function a2(){return"curl-impersonate-chrome"}function Ea(){return qt(o2,a2())}async function fl(){try{return await Zi.access(Ea()),!0}catch{return!1}}var o2,hl=A(()=>{"use strict";At();wi();Bn();Ta();At();vn();yn();o2=qt(cc(),".recker","bin")});var gl={};Ee(gl,{CurlTransport:()=>Da});var Da,yl=A(()=>{"use strict";Ta();Ca();V();hl();Da=class{async dispatch(e){return new Promise(async(r,n)=>{let i=["-X",e.method,e.url,"-i","-s","--compressed","--no-keepalive"];e.headers.forEach((l,d)=>{i.push("-H",`${d}: ${l}`)}),e.body&&typeof e.body=="string"&&i.push("-d",e.body);let o=process.env.RECKER_CURL_BIN;o||(await fl()?o=Ea():o="curl");let s=ka(o,i),c=[],u=[];s.stdout.on("data",l=>c.push(l)),s.stderr.on("data",l=>u.push(l)),s.on("error",l=>{n(new je(`Failed to spawn curl: ${l.message}`,"ERR_CURL_SPAWN",e))}),s.on("close",l=>{if(l!==0){let T=Buffer.concat(u).toString();n(new je(`Curl exited with code ${l}: ${T}`,"ERR_CURL_EXIT",e));return}let d=Buffer.concat(c),p=d.indexOf(`\r
|
|
48
48
|
\r
|
|
49
49
|
`),m=4;if(p===-1&&(p=d.indexOf(`
|
|
50
50
|
|
|
51
|
-
`),m=2),p!==-1){let
|
|
51
|
+
`),m=2),p!==-1){let T=d.subarray(0,Math.min(20,p)).toString();if(T.startsWith("HTTP/1.1 100")||T.startsWith("HTTP/2 100")){let k=p+m,S=d.indexOf(`\r
|
|
52
52
|
\r
|
|
53
|
-
`,S);A!==-1&&(p=A,m=4)}}if(p===-1){let w=new Response(d,{status:200,statusText:"OK"});r(new tt(w,{connection:{protocol:"curl"}}));return}let f=d.subarray(0,p).toString(),h=d.subarray(p+m),g=f.split(/\r?\n/),y=g[0],C=200,b="OK",x=y.match(/HTTP\/[\d\.]+ (\d+) ?(.*)/);x&&(C=parseInt(x[1],10),b=x[2]||"");let k=new Headers;for(let w=1;w<g.length;w++){let S=g[w],A=S.indexOf(":");if(A>0){let P=S.substring(0,A).trim(),q=S.substring(A+1).trim();k.append(P,q)}}let v=new Response(h,{status:C,statusText:b,headers:k});r(new tt(v,{timings:{},connection:{protocol:"curl"}}))})})}}});var bl={};Ee(bl,{Agent:()=>Rv,AsyncLocalStorage:()=>fv,AsyncResource:()=>hv,Buffer:()=>yv,Client:()=>Pv,EventEmitter:()=>C2,PassThrough:()=>T2,ProxyAgent:()=>Lv,Readable:()=>x2,Server:()=>K2,Socket:()=>G2,TLSSocket:()=>X2,Transform:()=>S2,WebSocket:()=>Nv,Writable:()=>k2,arch:()=>q2,basename:()=>y2,brotliCompress:()=>ov,brotliDecompress:()=>cv,channel:()=>gv,connect:()=>V2,cpus:()=>$2,createCipheriv:()=>F2,createConnection:()=>W2,createDecipheriv:()=>M2,createHash:()=>E2,createHmac:()=>D2,createPrivateKey:()=>R2,createReadStream:()=>u2,createSign:()=>L2,createWriteStream:()=>c2,deepStrictEqual:()=>wv,default:()=>s2,deflate:()=>iv,deflateSync:()=>dv,dirname:()=>g2,errors:()=>Dv,exec:()=>Av,execSync:()=>Cv,existsSync:()=>p2,extname:()=>b2,finished:()=>A2,format:()=>H2,freemem:()=>O2,gunzip:()=>av,gunzipSync:()=>uv,gzip:()=>nv,gzipSync:()=>lv,homedir:()=>j2,inflate:()=>sv,inflateSync:()=>pv,inspect:()=>U2,join:()=>h2,lookup:()=>J2,mkdir:()=>$t,ok:()=>bv,performance:()=>mv,pipeline:()=>w2,platform:()=>I2,promises:()=>Mv,promisify:()=>B2,randomBytes:()=>P2,randomUUID:()=>N2,readFile:()=>La,readFileSync:()=>l2,readdir:()=>f2,rejects:()=>kv,request:()=>Ev,resolve:()=>v2,resolve4:()=>Q2,resolve6:()=>Y2,resolveCname:()=>rv,resolveMx:()=>Z2,resolveNs:()=>tv,resolveTxt:()=>ev,rm:()=>Na,spawn:()=>Sv,spawnSync:()=>Tv,stat:()=>m2,strictEqual:()=>vv,throws:()=>xv,tmpdir:()=>_2,totalmem:()=>z2,unlink:()=>Pa,writeFile:()=>Ra,writeFileSync:()=>d2});var le,J,Ae,s2,c2,u2,l2,d2,p2,$t,La,Ra,Pa,Na,m2,f2,h2,g2,y2,b2,v2,w2,x2,k2,S2,T2,A2,C2,E2,D2,L2,R2,P2,N2,M2,F2,B2,U2,H2,I2,q2,$2,O2,z2,j2,_2,W2,V2,G2,K2,X2,J2,Q2,Y2,Z2,ev,tv,rv,nv,iv,ov,av,sv,cv,uv,lv,dv,pv,mv,fv,hv,gv,yv,bv,vv,wv,xv,kv,Sv,Tv,Av,Cv,Ev,Dv,Lv,Rv,Pv,Nv,Mv,xi=T(()=>{le=()=>{},J=()=>Promise.resolve(),Ae=class{constructor(){}},s2={},c2=le,u2=le,l2=()=>"",d2=le,p2=()=>!1,$t=J,La=J,Ra=J,Pa=J,Na=J,m2=J,f2=J,h2=(...t)=>t.join("/"),g2=t=>t.split("/").slice(0,-1).join("/"),y2=t=>t.split("/").pop()||"",b2=t=>{let e=t.match(/\.[^.]+$/);return e?e[0]:""},v2=(...t)=>t.join("/"),w2=J,x2=Ae,k2=Ae,S2=Ae,T2=Ae,A2=J,C2=class{on(){return this}off(){return this}emit(){return!1}once(){return this}addListener(){return this}removeListener(){return this}},E2=()=>({update:()=>({digest:()=>""})}),D2=()=>({update:()=>({digest:()=>""})}),L2=()=>({update:()=>({}),sign:()=>""}),R2=()=>({}),P2=t=>new Uint8Array(t),N2=()=>crypto.randomUUID(),M2=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:le}),F2=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:le}),B2=t=>t,U2=t=>JSON.stringify(t),H2=(...t)=>t.join(" "),I2=()=>"browser",q2=()=>"unknown",$2=()=>[],O2=()=>0,z2=()=>0,j2=()=>"/",_2=()=>"/tmp",W2=le,V2=le,G2=Ae,K2=Ae,X2=Ae,J2=(t,e)=>e(null,"127.0.0.1",4),Q2=J,Y2=J,Z2=J,ev=J,tv=J,rv=J,nv=(t,e)=>e(null,t),iv=(t,e)=>e(null,t),ov=(t,e)=>e(null,t),av=(t,e)=>e(null,t),sv=(t,e)=>e(null,t),cv=(t,e)=>e(null,t),uv=t=>t,lv=t=>t,dv=t=>t,pv=t=>t,mv=globalThis.performance,fv=class{getStore(){}run(t,e){return e()}enterWith(){}},hv=Ae,gv=()=>({subscribe:le,unsubscribe:le,publish:le,hasSubscribers:!1}),yv={from:t=>new Uint8Array(typeof t=="string"?new TextEncoder().encode(t):t),alloc:t=>new Uint8Array(t),allocUnsafe:t=>new Uint8Array(t),isBuffer:()=>!1},bv=le,vv=le,wv=le,xv=le,kv=J,Sv=()=>({on:le,stdout:{on:le},stderr:{on:le},kill:le}),Tv=()=>({status:0,stdout:"",stderr:""}),Av=le,Cv=()=>"",Ev=J,Dv={ConnectTimeoutError:Ae,HeadersTimeoutError:Ae,BodyTimeoutError:Ae},Lv=Ae,Rv=Ae,Pv=Ae,Nv=Ae,Mv={readFile:J,writeFile:J,access:J,stat:J,mkdir:J,unlink:J,readdir:J}});var Fv,vl,wl,FC,Ma=T(()=>{Fv=()=>{},vl=()=>({update:()=>({digest:()=>""})}),wl=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:Fv}),FC=globalThis.performance});var xl={};Ee(xl,{FileStorage:()=>Fa});var Fa,kl=T(()=>{"use strict";xi();wi();Ma();At();Fa=class{dir;constructor(e=".recker/cache"){this.dir=e}getHash(e){return vl("md5").update(e).digest("hex")}getPath(e){return qt(this.dir,`${this.getHash(e)}.json`)}async ensureDir(){Gt(this.dir)||await $t(this.dir,{recursive:!0})}async get(e){try{let r=this.getPath(e);if(!Gt(r))return;let n=await La(r,"utf-8");return JSON.parse(n)}catch{return}}async set(e,r,n){await this.ensureDir();let i=this.getPath(e);await Ra(i,JSON.stringify(r),"utf-8")}async delete(e){let r=this.getPath(e);Gt(r)&&await Pa(r)}async clear(){Gt(this.dir)&&await Na(this.dir,{recursive:!0,force:!0})}}});var Bv,ur,$C,Ba,vt,Sl,ki,Tl,Ua=T(()=>{Bv=()=>Promise.resolve(),ur=class{constructor(){}},$C=globalThis.performance,Ba=Bv,vt={ConnectTimeoutError:ur,HeadersTimeoutError:ur,BodyTimeoutError:ur},Sl=ur,ki=ur,Tl=ur});var Al,jC,Cl=T(()=>{Al={},jC=globalThis.performance});var El,WC,Dl=T(()=>{El={},WC=globalThis.performance});var Ha,GC,Ll=T(()=>{Ha={},GC=globalThis.performance});var rt,Rl=T(()=>{rt=globalThis.performance});function Ia(t){let e=Ti.get(t);return process.env.DEBUG_TIMING&&console.log(`[TIMING] getTimingForHost(${t}):`,e?"found":"NOT FOUND","map size:",Ti.size),e}function Pl(t){return Ai.get(t)??0}function qa(t,e){return(Ai.get(t)??0)>e}function Nl(t={}){let e=t.timeout??1e4,r=t.allowH2??!1,n=t.keepAliveInitialDelay??6e4,i=t.maxCachedSessions??100,o=t.localAddress;return function(c,u){let{hostname:l,protocol:d,port:p,servername:m}=c,f=d==="https:",h=Number(p)||(f?443:80),g={dns:0,tcp:0,tls:0,total:0},y=rt.now();C();async function C(){try{let b=rt.now(),x;try{x=(await Ha.lookup(l,{family:4})).address}catch(S){try{x=(await Ha.lookup(l,{family:6})).address}catch{u(S,null);return}}g.dns=rt.now()-b;let k=rt.now(),v=Al.connect({host:x,port:h,localAddress:o});v.setNoDelay(!0),v.setKeepAlive(!0,n);let w=setTimeout(()=>{v.destroy(new Error(`Connect timeout after ${e}ms`))},e);v.once("error",S=>{clearTimeout(w),u(S,null)}),v.once("connect",()=>{if(g.tcp=rt.now()-k,clearTimeout(w),!f){g.total=rt.now()-y,Ti.set(l,{...g}),Si++,Ai.set(l,Si),u(null,v);return}let S=rt.now(),A=m||l,P=`${A}:${h}`,q=_r.get(P),R=El.connect({socket:v,servername:A,session:q,ALPNProtocols:r?["h2","http/1.1"]:["http/1.1"],rejectUnauthorized:!0});R.on("session",O=>{if(_r.size>=i){let W=_r.keys().next().value;W&&_r.delete(W)}_r.set(P,O)}),R.once("error",O=>{u(O,null)}),R.once("secureConnect",()=>{g.tls=rt.now()-S,g.total=rt.now()-y,Ti.set(l,{...g}),Si++,Ai.set(l,Si),process.env.DEBUG_TIMING&&console.log(`[TIMING] Stored for ${l}:`,g),u(null,R)})})}catch(b){u(b,null)}}}}var Ti,Ai,Si,_r,$a=T(()=>{"use strict";Cl();Dl();Ll();Rl();Ti=new Map,Ai=new Map,Si=0,_r=new Map});var Fl={};Ee(Fl,{AgentManager:()=>lr,analyzeBatchDomains:()=>Hv,createAgent:()=>Uv,extractDomain:()=>Ml});function Uv(t={}){return new lr(t).getGlobalAgent()}function Ml(t){try{return new URL(t).hostname}catch{return null}}function Hv(t){let e=new Set;for(let r of t){let n=Ml(r);n&&e.add(n)}return{strategy:e.size<=1?"single":"multi",domains:e}}var lr,Oa=T(()=>{"use strict";Ua();En();$a();lr=class{globalAgent;domainAgents;options;protocolCache;constructor(e={},r){this.domainAgents=new Map,this.protocolCache=r,this.options={connections:e.connections??10,pipelining:e.pipelining??1,keepAlive:e.keepAlive??!0,keepAliveTimeout:e.keepAliveTimeout??4*1e3,keepAliveMaxTimeout:e.keepAliveMaxTimeout??600*1e3,keepAliveTimeoutThreshold:e.keepAliveTimeoutThreshold??1*1e3,connectTimeout:e.connectTimeout??10*1e3,perDomainPooling:e.perDomainPooling??!0,localAddress:e.localAddress,maxRequestsPerClient:e.maxRequestsPerClient??0,maxCachedSessions:e.maxCachedSessions??100,maxHeaderSize:e.maxHeaderSize,clientTtl:e.clientTtl??null,allowH2:e.allowH2,maxConcurrentStreams:e.maxConcurrentStreams}}getGlobalAgent(){return this.globalAgent||(this.globalAgent=this.createAgent(this.options)),this.globalAgent}getAgentForDomain(e,r){if(!this.options.perDomainPooling)return this.getGlobalAgent();let n=this.domainAgents.get(e);if(!n){let i={...this.options,...r};n=this.createAgent(i),this.domainAgents.set(e,n)}return n}getAgentForUrl(e){try{let r=new URL(e);return this.getAgentForDomain(r.hostname)}catch{return this.getGlobalAgent()}}getAdaptiveAgentForUrl(e,r){var u;let n=mt(e),i=new URL(n).hostname;if(this.options.perDomainPooling){let l=this.domainAgents.get(i);if(l)return l}let o=(u=this.protocolCache)==null?void 0:u.get(n),s=this.getAdaptiveOptions(o,r);if(!this.options.perDomainPooling)return this.getGlobalAgent();let c=this.createAgent(s);return this.domainAgents.set(i,c),c}getAdaptiveOptions(e,r){let n={...this.options};return e==="h2"||e==="h3"?{...n,connections:Math.min(n.connections,2),pipelining:1,allowH2:!0,maxConcurrentStreams:n.maxConcurrentStreams??100,...r}:e==="http/1.1"?{...n,connections:Math.max(n.connections,6),pipelining:2,allowH2:!1,...r}:{...n,allowH2:n.allowH2??!0,...r}}setProtocolCache(e){this.protocolCache=e}createBatchAgent(e,r,n){let i=Math.max(1,Math.min(Math.ceil(e/2),50,r)),o=r>20&&e>5?2:1,s={...this.options,connections:(n==null?void 0:n.connections)??i,pipelining:(n==null?void 0:n.pipelining)??o,...n};return this.createAgent(s)}createStressTestAgent(e){let n=Math.min(Math.ceil(e/10),100);return this.createAgent({connections:n,pipelining:10,keepAliveTimeout:3e4,keepAliveMaxTimeout:12e4,connectTimeout:5e3})}createAgent(e){let r=Nl({timeout:e.connectTimeout,allowH2:e.allowH2,keepAliveInitialDelay:e.keepAliveTimeout,maxCachedSessions:e.maxCachedSessions,localAddress:e.localAddress});return new ki({connections:e.connections,pipelining:e.pipelining,maxHeaderSize:e.maxHeaderSize,maxRequestsPerClient:e.maxRequestsPerClient,maxCachedSessions:e.maxCachedSessions,clientTtl:e.clientTtl??null,keepAliveTimeout:e.keepAliveTimeout,keepAliveMaxTimeout:e.keepAliveMaxTimeout,keepAliveTimeoutThreshold:e.keepAliveTimeoutThreshold,connectTimeout:e.connectTimeout,socketPath:void 0,allowH2:e.allowH2,maxConcurrentStreams:e.maxConcurrentStreams,connect:r})}getStats(){return{agentCount:1+this.domainAgents.size,domains:Array.from(this.domainAgents.keys()),totalConnections:(1+this.domainAgents.size)*this.options.connections}}async closeDomainAgent(e){let r=this.domainAgents.get(e);r&&(await r.close(),this.domainAgents.delete(e))}async closeAll(){let e=[];this.globalAgent&&(e.push(this.globalAgent.close()),this.globalAgent=void 0);for(let r of this.domainAgents.values())e.push(r.close());this.domainAgents.clear(),await Promise.all(e)}async destroy(){let e=[];this.globalAgent&&(e.push(this.globalAgent.destroy()),this.globalAgent=void 0);for(let r of this.domainAgents.values())e.push(r.destroy());this.domainAgents.clear(),await Promise.all(e)}}});var dr,Bl=T(()=>{dr=globalThis.performance});var o3,Ul,Hl=T(()=>{o3=globalThis.performance,Ul=class{getStore(){}run(t,e){return e()}enterWith(){}}});var za,c3,Wr,Il=T(()=>{za=()=>{},c3=globalThis.performance,Wr=()=>({subscribe:za,unsubscribe:za,publish:za,hasSubscribers:!1})});var ja,l3,ql=T(()=>{ja=(t,e)=>e(null,"127.0.0.1",4),l3=globalThis.performance});var $l,p3,Ol=T(()=>{$l=t=>t,p3=globalThis.performance});function zl(t){return(e,r,n)=>{var i;if((i=t.override)!=null&&i[e]){let o=t.override[e],s=o.includes(":")?6:4;return n(null,o,s)}ja(e,r,n)}}var g3,jl=T(()=>{"use strict";ql();Ol();g3=$l(ja)});var Jl={};Ee(Jl,{UndiciTransport:()=>_a});function zv(t){return(t==null?void 0:t.cause)??(t==null?void 0:t.reason)}function _l(t){return t instanceof Y?!0:!t||typeof t!="object"?!1:t.name==="TimeoutError"}function Wl(t,e,r){if(!r)return!1;if(e!==void 0)return!0;let n=zv(t),i=t==null?void 0:t.message,o=typeof i=="string"&&(i.includes("Request timed out (total time exceeded)")||i.includes("timed out (total time exceeded)")),s=typeof i=="string"&&i.toLowerCase()==="request was aborted";return t instanceof Y||_l(n)||_l(t)||t instanceof vt.RequestAbortedError||o||s||(t==null?void 0:t.code)==="ABORT_ERR"||(t==null?void 0:t.code)==="UND_ERR_REQUEST_TIMEOUT"}function jv(t,e){return{connectTimeout:(t==null?void 0:t.connect)??(t==null?void 0:t.secureConnect)??(e==null?void 0:e.connectTimeout),headersTimeout:(t==null?void 0:t.response)??(e==null?void 0:e.headersTimeout),bodyTimeout:(t==null?void 0:t.send)??(e==null?void 0:e.bodyTimeout),totalTimeout:t==null?void 0:t.request}}function Ci(t){if(!t)return;let e={};return t.minVersion&&(e.minVersion=t.minVersion),t.maxVersion&&(e.maxVersion=t.maxVersion),t.ciphers&&(e.ciphers=t.ciphers),t.honorCipherOrder!==void 0&&(e.honorCipherOrder=t.honorCipherOrder),t.ca&&(e.ca=t.ca),t.cert&&(e.cert=t.cert),t.key&&(e.key=t.key),t.passphrase&&(e.passphrase=t.passphrase),t.rejectUnauthorized!==void 0&&(e.rejectUnauthorized=t.rejectUnauthorized),t.alpnProtocols&&(e.ALPNProtocols=t.alpnProtocols),t.sessionTimeout!==void 0&&(e.sessionTimeout=t.sessionTimeout),t.sessionIdContext&&(e.sessionIdContext=t.sessionIdContext),t.servername!==void 0&&(e.servername=t.servername===!1?"":t.servername),e}function Vl(t){if(t.explicit)return t.explicit;let{proxyAgent:e,agentManager:r,dnsAgent:n,url:i,bypass:o}=t,s=Vv(i,o);if(e&&!s)return e;if(r)return r.getAgentForUrl(i);if(n)return n}function _v(t){switch(t.toLowerCase().replace(":","")){case"http":return"http";case"https":return"https";case"socks4":return"socks4";case"socks4a":return"socks4a";case"socks5":case"socks":return"socks5";default:return}}function Wv(t,e){let[r,n]=e.split("/");if(!n)return t===r;let i=parseInt(n,10);if(isNaN(i))return!1;let o=t.split(".").map(Number),s=r.split(".").map(Number);if(o.length!==4||s.length!==4||o.some(isNaN)||s.some(isNaN))return!1;let c=o[0]<<24|o[1]<<16|o[2]<<8|o[3],u=s[0]<<24|s[1]<<16|s[2]<<8|s[3],l=~((1<<32-i)-1);return(c&l)===(u&l)}function Vv(t,e){if(!e||e.length===0)return!1;let r="",n="";try{let i=new URL(t);r=i.hostname,n=i.port}catch{return!1}for(let i of e){if(i==="*")return!0;if(i.includes("/")){if(Wv(r,i))return!0;continue}if(i.includes(":")&&!i.includes("/")){let[o,s]=i.split(":");if(r===o&&(!s||n===s))return!0;continue}if(i.startsWith("*.")){let o=i.slice(1);if(r.endsWith(o))return!0;continue}if(i.startsWith(".")){if(r.endsWith(i))return!0;continue}if(r===i)return!0}return!1}function Gl(t){if(!t)return;if(typeof t.get=="function"){let n=t.get("content-length");return n?parseInt(n,10):void 0}let e=t["content-length"]??t["Content-Length"];if(e===void 0)return;let r=parseInt(Array.isArray(e)?e[0]:e,10);return Number.isFinite(r)?r:void 0}function Ei(t,e){if(!e)return t;if(typeof Response<"u"&&t instanceof Response){if(!t.body)return t;let o=Gl(t.headers),s=Fe(t.body,e,{total:o,direction:"download"});return new Response(s,{status:t.status,statusText:t.statusText,headers:t.headers})}let r=Gl(t.headers),n=t.body;if(!n)return t;let i=Fe(Ta(n),e,{total:r,direction:"download"});return new Response(i,{status:t.statusCode,headers:t.headers})}function Kl(t,e,r){if(t instanceof FormData||!e||!t)return t;if(typeof ReadableStream<"u"&&t instanceof ReadableStream)return Fe(t,e,{total:r,direction:"upload"});if(typeof Blob<"u"&&t instanceof Blob)return Fe(t.stream(),e,{total:t.size,direction:"upload"});if(Gv(t)){let n=Ta(t);return Fe(n,e,{total:r,direction:"upload"})}if(t instanceof ArrayBuffer||ArrayBuffer.isView(t)){let n=t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength);return Xl(n,e)}if(typeof t=="string"){let i=new TextEncoder().encode(t);return Xl(i,e)}return t}function Xl(t,e,r=64*1024){let n=0,i=t.byteLength,o=new ReadableStream({pull(s){if(n>=i){s.close();return}let c=Math.min(n+r,i);s.enqueue(t.slice(n,c)),n=c}});return Fe(o,e,{total:i,direction:"upload"})}function Gv(t){return t&&typeof t.pipe=="function"&&typeof t.on=="function"}var Iv,qv,$v,Ov,Vr,_a,Ql=T(()=>{"use strict";Ua();Ca();V();Bl();Hl();Il();jl();Oa();no();Aa();En();$a();Iv=Wr("undici:request:create"),qv=Wr("undici:request:bodySent"),$v=Wr("undici:request:headers"),Ov=Wr("undici:client:connect"),Vr=new Ul;Iv.subscribe(t=>{var r;let e=Vr.getStore();if(e){e.requestStartTime===0&&(e.requestStartTime=dr.now()),e.timings.dns||e.timings.tcp||e.timings.tls||(e.timings={queuing:0,dns:0,tcp:0,tls:0,firstByte:0,content:0,total:0},e.connection={});let i=t;if((r=i==null?void 0:i.request)!=null&&r.origin&&!e.requestCorrelationId)try{e.requestCorrelationId=new URL(i.request.origin).hostname}catch{}}});qv.subscribe(t=>{let e=Vr.getStore();e!=null&&e.hooks&&e.hooks.onRequestSent&&e.hooks.onRequestSent()});$v.subscribe(t=>{let e=t,r=Vr.getStore();if(!r||!e)return;let i=dr.now()-r.requestStartTime;if(e.timing){let{timing:o}=e;r.timings.queuing=o.queuing,r.timings.dns=o.dns,r.timings.tcp=o.tcp,r.timings.tls=o.tls,r.timings.firstByte=o.response,r.timings.content=o.body,r.timings.total=o.ended}else r.timings.firstByte=i;if(r.hooks){let o=r.timings.dns??0,s=r.timings.tcp??0,c=r.timings.tls??0;if(r.hooks.onDnsLookup&&o>0&&r.hooks.onDnsLookup({domain:e.request.origin,duration:o}),r.hooks.onTcpConnect&&s>0&&r.hooks.onTcpConnect({remoteAddress:"",duration:s}),r.hooks.onTlsHandshake&&c>0&&r.hooks.onTlsHandshake({protocol:"",cipher:"",duration:c}),r.hooks.onResponseStart){let u=new Headers;for(let l=0;l<e.response.headers.length;l+=2)u.append(e.response.headers[l],e.response.headers[l+1]);r.hooks.onResponseStart({status:e.response.statusCode,headers:u})}}});Ov.subscribe(t=>{var n,i,o,s,c,u;let e=t,r=Vr.getStore();if(r&&e&&e.socket){let{socket:l}=e;r.connection.remoteAddress=l.remoteAddress,r.connection.remotePort=l.remotePort,r.connection.localAddress=l.localAddress,r.connection.localPort=l.localPort;let d=l.alpnProtocol||(l.tlsSocket?l.tlsSocket.getProtocol():void 0);if(r.connection.protocol=d,r.connection.cipher=l.tlsSocket?(n=l.tlsSocket.getCipher())==null?void 0:n.name:void 0,r.hooks&&(r.hooks.onTcpConnect&&r.hooks.onTcpConnect({remoteAddress:l.remoteAddress,duration:0}),r.hooks.onTlsHandshake&&l.tlsSocket&&r.hooks.onTlsHandshake({protocol:d||"unknown",cipher:((i=l.tlsSocket.getCipher())==null?void 0:i.name)||"unknown",duration:0})),d==="h2"){let p=l.session||l,m=p.state,f=p.remoteSettings,h=p.localSettings;if(r.connection.http2={streamId:l.streamId,streamWeight:l.weight,streamDependency:l.dependency,serverPush:!!l.serverPush,settingsReceived:!!f,maxConcurrentStreams:f==null?void 0:f.maxConcurrentStreams,currentStreams:m==null?void 0:m.streamCount,pendingStreams:m==null?void 0:m.pendingStreamCount,localWindowSize:(m==null?void 0:m.localWindowSize)??(m==null?void 0:m.effectiveLocalWindowSize),remoteWindowSize:m==null?void 0:m.effectiveRecvDataLength,localSettings:h?{...h}:void 0,remoteSettings:f?{...f}:void 0},(o=r.hooks)!=null&&o.onHttp2Session){let g=l.origin||((s=e.connectParams)==null?void 0:s.hostname)||"";r.hooks.onHttp2Session({origin:g,event:"connect",maxConcurrentStreams:f==null?void 0:f.maxConcurrentStreams,activeStreams:m==null?void 0:m.streamCount,localSettings:h?{...h}:void 0,remoteSettings:f?{...f}:void 0})}if((c=r.hooks)!=null&&c.onHttp2Stream&&l.streamId){let g=l.origin||((u=e.connectParams)==null?void 0:u.hostname)||"";r.hooks.onHttp2Stream({streamId:l.streamId,origin:g,event:"open",state:"open",pushed:!!l.serverPush})}}if(d==="h3"||d!=null&&d.startsWith("h3-")){let p=l.stats,m=l.handshakeConfirmed;r.connection.http3={quicVersion:d,zeroRTT:l.zeroRTT||!1,maxStreams:l.maxStreams,handshakeConfirmed:typeof m=="boolean"?m:void 0},p&&typeof p.rtt=="number"&&(r.connection.rtt=p.rtt)}r.connection.reused=!!l.reused}});_a=class{baseUrl;options;proxyAgent;dnsAgent;agentManager;proxyBypassList;tlsOptions;socketClient;observability;protocolCache;constructor(e,r={}){if(this.baseUrl=e||"",this.options=r,this.tlsOptions=r.tls,this.observability=r.observability!==!1,r.protocolCache===!0?this.protocolCache=Cn():r.protocolCache instanceof xr&&(this.protocolCache=r.protocolCache),r.proxy){let n=typeof r.proxy=="string"?{url:r.proxy}:r.proxy,i=new URL(n.url),o=n.type||_v(i.protocol);if(o!=null&&o.startsWith("socks"))throw new je(`SOCKS proxy (${o}) is not supported. Use an HTTP/HTTPS proxy or a SOCKS-to-HTTP bridge.`,"ERR_UNSUPPORTED_PROXY_TYPE");let s=n.auth?`${n.auth.username}:${n.auth.password}`:void 0,c=s?n.url.replace("://",`://${s}@`):n.url;this.proxyBypassList=n.bypass;let u={uri:c,headers:n.headers,token:n.token,proxyTunnel:n.tunnel,requestTls:Ci(n.requestTls??r.tls),proxyTls:Ci(n.proxyTls)};n.connectTimeout&&(u.connectTimeout=n.connectTimeout),n.http2&&(u.requestTls||(u.requestTls={}),u.requestTls.ALPNProtocols=["h2","http/1.1"]),this.proxyAgent=new Sl(u)}if(this.agentManager=r.agent,r.dns&&!this.agentManager){let n=zl(r.dns);this.dnsAgent=new ki({connect:{lookup:n}})}this.agentManager||(this.agentManager=new lr({connections:r.connections,pipelining:r.pipelining,keepAlive:r.keepAlive,keepAliveTimeout:r.keepAliveTimeout,keepAliveMaxTimeout:r.keepAliveMaxTimeout,connectTimeout:r.connectTimeout,perDomainPooling:r.perDomainPooling,localAddress:r.localAddress})),r.socketPath&&e&&(this.socketClient=new Tl(e,{socketPath:r.socketPath}))}updateProtocolCache(e,r){if(!this.protocolCache||!(r!=null&&r.protocol))return;let n=to(r.protocol);n&&this.protocolCache.set(e,n)}recordProtocolFailure(e,r){var i,o,s,c;if(!this.protocolCache)return;let n=((i=r.message)==null?void 0:i.includes("HTTP/2"))||((o=r.message)==null?void 0:o.includes("h2"))||((s=r.message)==null?void 0:s.includes("GOAWAY"))||((c=r.message)==null?void 0:c.includes("stream"));this.protocolCache.recordFailure(e,n)}shouldUseHttp2(e){return this.protocolCache?this.protocolCache.shouldTryHttp2(e):!0}getProtocolCache(){return this.protocolCache}async dispatch(e){let r=Object.fromEntries(e.headers),n=r["content-length"],i=n?parseInt(n,10):void 0,o;if(this.baseUrl)if(e.url.startsWith(this.baseUrl))o=e.url;else if(e.url.startsWith("http://")||e.url.startsWith("https://"))o=e.url;else{let y=this.baseUrl.endsWith("/")?this.baseUrl.slice(0,-1):this.baseUrl,C=e.url.startsWith("/")?e.url:"/"+e.url;o=y+C}else o=e.url;let s=!!e.beforeRedirect,c=e.maxRedirects??20,u=e.followRedirects!==!1,l=jv(e.timeout,{connectTimeout:this.options.connectTimeout,headersTimeout:this.options.headersTimeout,bodyTimeout:this.options.bodyTimeout}),d,p,m,f,h;if(!this.observability)return this.dispatchFast(e,r,o,l,s,c,u,i);let g={timings:{},connection:{},requestStartTime:0,requestCorrelationId:"",hooks:e._hooks};return Vr.run(g,async()=>{var y,C;try{let b=dr.now();g.requestStartTime===0&&(g.requestStartTime=b);let x=0,k=e.method,v=e.body,w={...r},S=e.signal;if(l.totalTimeout){if(d=new AbortController,f=new Y(e,{phase:"request",timeout:l.totalTimeout}),e.signal){let A=e.signal;S=d.signal;let P=()=>{m=A.reason??new Error("Request aborted by external signal"),d.abort(m)};A.aborted?(m=A.reason??new Error("Request aborted by external signal"),d.abort(m)):(A.addEventListener("abort",P,{once:!0}),h=()=>A.removeEventListener("abort",P))}else S=d.signal;p=setTimeout(()=>{m=f,d.abort(m)},l.totalTimeout)}for(;;){let A=this.socketClient||Vl({explicit:e._dispatcher,proxyAgent:this.proxyAgent,agentManager:this.agentManager,dnsAgent:this.dnsAgent,url:o,bypass:this.proxyBypassList}),P=x===0?Kl(v,e.onUploadProgress,i):v,q=P;if(q instanceof FormData){let F=new Response(q);q=F.body,F.headers.forEach((oe,ee)=>{ee.toLowerCase()==="content-type"?(w[ee]=oe,delete w["Content-Type"]):w[ee]||(w[ee]=oe)})}let R={method:k,headers:w,body:q,signal:S,dispatcher:A,connectTimeout:l.connectTimeout,headersTimeout:l.headersTimeout,bodyTimeout:l.bodyTimeout,maxRedirections:0};q&&(q instanceof ReadableStream||typeof q.pipe=="function"||q[Symbol.asyncIterator])&&(R.duplex="half");let O=Ci(this.tlsOptions);O&&(R.tls=O);let W=e.http2!==void 0?e.http2:(y=this.options.http2)==null?void 0:y.enabled;if(W?R.allowH2=!0:e.http2===!1&&(R.allowH2=!1),W&&this.options.http2&&(this.options.http2.maxConcurrentStreams!==void 0&&(R.maxConcurrentStreams=this.options.http2.maxConcurrentStreams),this.options.http2.pipelining!==void 0&&(R.pipelining=this.options.http2.pipelining)),W&&this.options.expectContinue!==void 0&&q){let F=this.options.expectContinue;(F===!0||typeof F=="number"&&i!==void 0&&i>F)&&(R.expectContinue=!0)}let z,H=0;try{H=Pl(new URL(o).hostname)}catch{}if(this.socketClient){let F=new URL(o).pathname+new URL(o).search;z=await this.socketClient.request({path:F||"/",method:k,headers:w,body:P,signal:e.signal})}else z=await Ba(o,R);let _=z.statusCode;if(_>=300&&_<400&&u&&x<c){let F=z.headers.location,oe=Array.isArray(F)?F[0]:F;if(oe){let ee=new URL(oe,o).toString();if(s){let He=new Headers;for(let[Oe,Ie]of Object.entries(z.headers))Ie!==void 0&&(Array.isArray(Ie)?Ie.forEach(Xe=>He.append(Oe,Xe)):He.set(Oe,Ie));let ne={from:o,to:ee,status:_,headers:He},Ke=await e.beforeRedirect(ne);if(Ke===!1){let Oe=e.onDownloadProgress?Ei(z,e.onDownloadProgress):z;this.updateProtocolCache(o,g.connection);try{let Ie=new URL(o).hostname;if(qa(Ie,H)){let ze=Ia(Ie);ze&&!g.timings.dns&&!g.timings.tcp&&!g.timings.tls&&(g.timings.dns=ze.dns,g.timings.tcp=ze.tcp,g.timings.tls=ze.tls)}else!g.timings.dns&&!g.timings.tcp&&!g.timings.tls&&(g.timings.dns=0,g.timings.tcp=0,g.timings.tls=0)}catch{}return new tt(Oe,{timings:g.timings,connection:g.connection})}typeof Ke=="string"?o=Ke:o=ee}else o=ee;(_===303||(_===301||_===302)&&k!=="GET"&&k!=="HEAD")&&(k="GET",v=null,delete w["content-type"],delete w["content-length"],delete w["Content-Type"],delete w["Content-Length"]),await z.body.arrayBuffer().catch(()=>{}),x++;continue}}let M=e.onDownloadProgress?Ei(z,e.onDownloadProgress):z,B=dr.now()-b,I=dr.now()-g.requestStartTime;g.timings.firstByte||(g.timings.firstByte=B),g.timings.total||(g.timings.total=I),this.updateProtocolCache(o,g.connection);try{let F=new URL(o).hostname;if(qa(F,H)){let ee=Ia(F);ee&&!g.timings.dns&&!g.timings.tcp&&!g.timings.tls&&(g.timings.dns=ee.dns,g.timings.tcp=ee.tcp,g.timings.tls=ee.tls)}else!g.timings.dns&&!g.timings.tcp&&!g.timings.tls&&(g.timings.dns=0,g.timings.tcp=0,g.timings.tls=0)}catch{}return new tt(M,{timings:g.timings,connection:g.connection})}}catch(b){if(this.recordProtocolFailure(o,b),b instanceof vt.ConnectTimeoutError||b.code==="UND_ERR_CONNECT_TIMEOUT")throw new Y(e,{phase:"connect",timeout:l.connectTimeout});if(b instanceof vt.HeadersTimeoutError||b.code==="UND_ERR_HEADERS_TIMEOUT")throw new Y(e,{phase:"response",timeout:l.headersTimeout});if(b instanceof vt.BodyTimeoutError||b.code==="UND_ERR_BODY_TIMEOUT")throw new Y(e,{phase:"send",timeout:l.bodyTimeout});if(Wl(b,m,l.totalTimeout))throw f??new Y(e,{phase:"request",timeout:l.totalTimeout});let x=b.code||((C=b==null?void 0:b.cause)==null?void 0:C.code);if(x==="UND_ERR_HEADERS_OVERFLOW")throw new St(16*1024,void 0,e);let k=_i(b);throw k?(k.request=e,k):new je(b.message,x,e)}finally{typeof h=="function"&&h(),p&&clearTimeout(p)}})}async dispatchFast(e,r,n,i,o,s,c,u){var h,g;let l,d,p,m,f;try{let y=0,C=e.method,b=e.body,x={...r},k=e.signal;if(i.totalTimeout){if(l=new AbortController,m=new Y(e,{phase:"request",timeout:i.totalTimeout}),e.signal){let v=e.signal;k=l.signal;let w=()=>{p=v.reason??new Error("Request aborted by external signal"),l.abort(p)};v.aborted?(p=v.reason??new Error("Request aborted by external signal"),l.abort(p)):(v.addEventListener("abort",w,{once:!0}),f=()=>v.removeEventListener("abort",w))}else k=l.signal;d=setTimeout(()=>{p=m,l.abort(p)},i.totalTimeout)}for(;;){let v=this.socketClient||Vl({explicit:e._dispatcher,proxyAgent:this.proxyAgent,agentManager:this.agentManager,dnsAgent:this.dnsAgent,url:n,bypass:this.proxyBypassList}),w=y===0?Kl(b,e.onUploadProgress,u):b,S=w;if(S instanceof FormData){let H=new Response(S);S=H.body,H.headers.forEach((_,E)=>{E.toLowerCase()==="content-type"?(x[E]=_,delete x["Content-Type"]):x[E]||(x[E]=_)})}let A={method:C,headers:x,body:S,signal:k,dispatcher:v,connectTimeout:i.connectTimeout,headersTimeout:i.headersTimeout,bodyTimeout:i.bodyTimeout,maxRedirections:0};S&&(S instanceof ReadableStream||typeof S.pipe=="function"||S[Symbol.asyncIterator])&&(A.duplex="half");let P=Ci(this.tlsOptions);P&&(A.tls=P);let q=e.http2!==void 0?e.http2:(h=this.options.http2)==null?void 0:h.enabled;if(q?A.allowH2=!0:e.http2===!1&&(A.allowH2=!1),q&&this.options.http2&&(this.options.http2.maxConcurrentStreams!==void 0&&(A.maxConcurrentStreams=this.options.http2.maxConcurrentStreams),this.options.http2.pipelining!==void 0&&(A.pipelining=this.options.http2.pipelining)),q&&this.options.expectContinue!==void 0&&S){let H=this.options.expectContinue;(H===!0||typeof H=="number"&&u!==void 0&&u>H)&&(A.expectContinue=!0)}let R;if(this.socketClient){let H=new URL(n).pathname+new URL(n).search;R=await this.socketClient.request({path:H||"/",method:C,headers:x,body:w,signal:e.signal})}else R=await Ba(n,A);let O=R.statusCode;if(O>=300&&O<400&&c&&y<s){let H=R.headers.location,_=Array.isArray(H)?H[0]:H;if(_){let E=new URL(_,n).toString();if(o){let M=new Headers;for(let[F,oe]of Object.entries(R.headers))oe!==void 0&&(Array.isArray(oe)?oe.forEach(ee=>M.append(F,ee)):M.set(F,oe));let B={from:n,to:E,status:O,headers:M},I=await e.beforeRedirect(B);if(I===!1){let F=e.onDownloadProgress?Ei(R,e.onDownloadProgress):R;return new tt(F,{timings:{},connection:{}})}typeof I=="string"?n=I:n=E}else n=E;(O===303||(O===301||O===302)&&C!=="GET"&&C!=="HEAD")&&(C="GET",b=null,delete x["content-type"],delete x["content-length"],delete x["Content-Type"],delete x["Content-Length"]),await R.body.arrayBuffer().catch(()=>{}),y++;continue}}let z=e.onDownloadProgress?Ei(R,e.onDownloadProgress):R;return new tt(z,{timings:{},connection:{}})}}catch(y){if(y instanceof vt.ConnectTimeoutError||y.code==="UND_ERR_CONNECT_TIMEOUT")throw new Y(e,{phase:"connect",timeout:i.connectTimeout});if(y instanceof vt.HeadersTimeoutError||y.code==="UND_ERR_HEADERS_TIMEOUT")throw new Y(e,{phase:"response",timeout:i.headersTimeout});if(y instanceof vt.BodyTimeoutError||y.code==="UND_ERR_BODY_TIMEOUT")throw new Y(e,{phase:"send",timeout:i.bodyTimeout});if(Wl(y,p,i.totalTimeout))throw m??new Y(e,{phase:"request",timeout:i.totalTimeout});let C=y.code||((g=y==null?void 0:y.cause)==null?void 0:g.code);if(C==="UND_ERR_HEADERS_OVERFLOW")throw new St(16*1024,void 0,e);let b=_i(y);throw b?(b.request=e,b):new je(y.message,C,e)}finally{typeof f=="function"&&f(),d&&clearTimeout(d)}}}});var rd={};Ee(rd,{HlsPromise:()=>Ri,hls:()=>Kv});async function Di(t,e,r){let i=await(await t.get(e,{signal:r.signal,headers:r.headers,useCurl:r.useCurl})).blob(),o=Buffer.from(await i.arrayBuffer());if(o.length>=2&&o[0]===31&&o[1]===139)try{return sc(o).toString("utf-8")}catch{}return o.toString("utf-8")}function Va(t,e){let r={},n=t.substring(e.length),i=/([A-Z0-9-]+)=(?:"([^"]*)"|([^,]*))/g,o;for(;(o=i.exec(n))!==null;)r[o[1]]=o[2]??o[3];return r}function Li(t,e){if(t.startsWith("http://")||t.startsWith("https://"))return t;try{let r=new URL(e),n=r.pathname.substring(0,r.pathname.lastIndexOf("/")+1);return new URL(t,r.origin+n).toString()}catch{return t}}function Yl(t,e){let r=t.split(`
|
|
53
|
+
`,k);S!==-1&&(p=S,m=4)}}if(p===-1){let T=new Response(d,{status:200,statusText:"OK"});r(new tt(T,{connection:{protocol:"curl"}}));return}let f=d.subarray(0,p).toString(),h=d.subarray(p+m),g=f.split(/\r?\n/),y=g[0],C=200,b="OK",w=y.match(/HTTP\/[\d\.]+ (\d+) ?(.*)/);w&&(C=parseInt(w[1],10),b=w[2]||"");let x=new Headers;for(let T=1;T<g.length;T++){let k=g[T],S=k.indexOf(":");if(S>0){let P=k.substring(0,S).trim(),q=k.substring(S+1).trim();x.append(P,q)}}let v=new Response(h,{status:C,statusText:b,headers:x});r(new tt(v,{timings:{},connection:{protocol:"curl"}}))})})}}});var bl={};Ee(bl,{Agent:()=>Rv,AsyncLocalStorage:()=>fv,AsyncResource:()=>hv,Buffer:()=>yv,Client:()=>Pv,EventEmitter:()=>C2,PassThrough:()=>S2,ProxyAgent:()=>Lv,Readable:()=>x2,Server:()=>K2,Socket:()=>G2,TLSSocket:()=>X2,Transform:()=>T2,WebSocket:()=>Nv,Writable:()=>k2,arch:()=>q2,basename:()=>y2,brotliCompress:()=>ov,brotliDecompress:()=>cv,channel:()=>gv,connect:()=>V2,cpus:()=>$2,createCipheriv:()=>F2,createConnection:()=>W2,createDecipheriv:()=>M2,createHash:()=>E2,createHmac:()=>D2,createPrivateKey:()=>R2,createReadStream:()=>u2,createSign:()=>L2,createWriteStream:()=>c2,deepStrictEqual:()=>wv,default:()=>s2,deflate:()=>iv,deflateSync:()=>dv,dirname:()=>g2,errors:()=>Dv,exec:()=>Av,execSync:()=>Cv,existsSync:()=>p2,extname:()=>b2,finished:()=>A2,format:()=>I2,freemem:()=>O2,gunzip:()=>av,gunzipSync:()=>uv,gzip:()=>nv,gzipSync:()=>lv,homedir:()=>j2,inflate:()=>sv,inflateSync:()=>pv,inspect:()=>U2,join:()=>h2,lookup:()=>J2,mkdir:()=>$t,ok:()=>bv,performance:()=>mv,pipeline:()=>w2,platform:()=>H2,promises:()=>Mv,promisify:()=>B2,randomBytes:()=>P2,randomUUID:()=>N2,readFile:()=>La,readFileSync:()=>l2,readdir:()=>f2,rejects:()=>kv,request:()=>Ev,resolve:()=>v2,resolve4:()=>Q2,resolve6:()=>Y2,resolveCname:()=>rv,resolveMx:()=>Z2,resolveNs:()=>tv,resolveTxt:()=>ev,rm:()=>Na,spawn:()=>Tv,spawnSync:()=>Sv,stat:()=>m2,strictEqual:()=>vv,throws:()=>xv,tmpdir:()=>_2,totalmem:()=>z2,unlink:()=>Pa,writeFile:()=>Ra,writeFileSync:()=>d2});var le,J,Ae,s2,c2,u2,l2,d2,p2,$t,La,Ra,Pa,Na,m2,f2,h2,g2,y2,b2,v2,w2,x2,k2,T2,S2,A2,C2,E2,D2,L2,R2,P2,N2,M2,F2,B2,U2,I2,H2,q2,$2,O2,z2,j2,_2,W2,V2,G2,K2,X2,J2,Q2,Y2,Z2,ev,tv,rv,nv,iv,ov,av,sv,cv,uv,lv,dv,pv,mv,fv,hv,gv,yv,bv,vv,wv,xv,kv,Tv,Sv,Av,Cv,Ev,Dv,Lv,Rv,Pv,Nv,Mv,xi=A(()=>{le=()=>{},J=()=>Promise.resolve(),Ae=class{constructor(){}},s2={},c2=le,u2=le,l2=()=>"",d2=le,p2=()=>!1,$t=J,La=J,Ra=J,Pa=J,Na=J,m2=J,f2=J,h2=(...t)=>t.join("/"),g2=t=>t.split("/").slice(0,-1).join("/"),y2=t=>t.split("/").pop()||"",b2=t=>{let e=t.match(/\.[^.]+$/);return e?e[0]:""},v2=(...t)=>t.join("/"),w2=J,x2=Ae,k2=Ae,T2=Ae,S2=Ae,A2=J,C2=class{on(){return this}off(){return this}emit(){return!1}once(){return this}addListener(){return this}removeListener(){return this}},E2=()=>({update:()=>({digest:()=>""})}),D2=()=>({update:()=>({digest:()=>""})}),L2=()=>({update:()=>({}),sign:()=>""}),R2=()=>({}),P2=t=>new Uint8Array(t),N2=()=>crypto.randomUUID(),M2=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:le}),F2=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:le}),B2=t=>t,U2=t=>JSON.stringify(t),I2=(...t)=>t.join(" "),H2=()=>"browser",q2=()=>"unknown",$2=()=>[],O2=()=>0,z2=()=>0,j2=()=>"/",_2=()=>"/tmp",W2=le,V2=le,G2=Ae,K2=Ae,X2=Ae,J2=(t,e)=>e(null,"127.0.0.1",4),Q2=J,Y2=J,Z2=J,ev=J,tv=J,rv=J,nv=(t,e)=>e(null,t),iv=(t,e)=>e(null,t),ov=(t,e)=>e(null,t),av=(t,e)=>e(null,t),sv=(t,e)=>e(null,t),cv=(t,e)=>e(null,t),uv=t=>t,lv=t=>t,dv=t=>t,pv=t=>t,mv=globalThis.performance,fv=class{getStore(){}run(t,e){return e()}enterWith(){}},hv=Ae,gv=()=>({subscribe:le,unsubscribe:le,publish:le,hasSubscribers:!1}),yv={from:t=>new Uint8Array(typeof t=="string"?new TextEncoder().encode(t):t),alloc:t=>new Uint8Array(t),allocUnsafe:t=>new Uint8Array(t),isBuffer:()=>!1},bv=le,vv=le,wv=le,xv=le,kv=J,Tv=()=>({on:le,stdout:{on:le},stderr:{on:le},kill:le}),Sv=()=>({status:0,stdout:"",stderr:""}),Av=le,Cv=()=>"",Ev=J,Dv={ConnectTimeoutError:Ae,HeadersTimeoutError:Ae,BodyTimeoutError:Ae},Lv=Ae,Rv=Ae,Pv=Ae,Nv=Ae,Mv={readFile:J,writeFile:J,access:J,stat:J,mkdir:J,unlink:J,readdir:J}});var Fv,vl,wl,FC,Ma=A(()=>{Fv=()=>{},vl=()=>({update:()=>({digest:()=>""})}),wl=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:Fv}),FC=globalThis.performance});var xl={};Ee(xl,{FileStorage:()=>Fa});var Fa,kl=A(()=>{"use strict";xi();wi();Ma();At();Fa=class{dir;constructor(e=".recker/cache"){this.dir=e}getHash(e){return vl("md5").update(e).digest("hex")}getPath(e){return qt(this.dir,`${this.getHash(e)}.json`)}async ensureDir(){Gt(this.dir)||await $t(this.dir,{recursive:!0})}async get(e){try{let r=this.getPath(e);if(!Gt(r))return;let n=await La(r,"utf-8");return JSON.parse(n)}catch{return}}async set(e,r,n){await this.ensureDir();let i=this.getPath(e);await Ra(i,JSON.stringify(r),"utf-8")}async delete(e){let r=this.getPath(e);Gt(r)&&await Pa(r)}async clear(){Gt(this.dir)&&await Na(this.dir,{recursive:!0,force:!0})}}});var Bv,ur,$C,Ba,vt,Tl,ki,Sl,Ua=A(()=>{Bv=()=>Promise.resolve(),ur=class{constructor(){}},$C=globalThis.performance,Ba=Bv,vt={ConnectTimeoutError:ur,HeadersTimeoutError:ur,BodyTimeoutError:ur},Tl=ur,ki=ur,Sl=ur});var Al,jC,Cl=A(()=>{Al={},jC=globalThis.performance});var El,WC,Dl=A(()=>{El={},WC=globalThis.performance});var Ia,GC,Ll=A(()=>{Ia={},GC=globalThis.performance});var rt,Rl=A(()=>{rt=globalThis.performance});function Ha(t){let e=Si.get(t);return process.env.DEBUG_TIMING&&console.log(`[TIMING] getTimingForHost(${t}):`,e?"found":"NOT FOUND","map size:",Si.size),e}function Pl(t){return Ai.get(t)??0}function qa(t,e){return(Ai.get(t)??0)>e}function Nl(t={}){let e=t.timeout??1e4,r=t.allowH2??!1,n=t.keepAliveInitialDelay??6e4,i=t.maxCachedSessions??100,o=t.localAddress;return function(c,u){let{hostname:l,protocol:d,port:p,servername:m}=c,f=d==="https:",h=Number(p)||(f?443:80),g={dns:0,tcp:0,tls:0,total:0},y=rt.now();C();async function C(){try{let b=rt.now(),w;try{w=(await Ia.lookup(l,{family:4})).address}catch(k){try{w=(await Ia.lookup(l,{family:6})).address}catch{u(k,null);return}}g.dns=rt.now()-b;let x=rt.now(),v=Al.connect({host:w,port:h,localAddress:o});v.setNoDelay(!0),v.setKeepAlive(!0,n);let T=setTimeout(()=>{v.destroy(new Error(`Connect timeout after ${e}ms`))},e);v.once("error",k=>{clearTimeout(T),u(k,null)}),v.once("connect",()=>{if(g.tcp=rt.now()-x,clearTimeout(T),!f){g.total=rt.now()-y,Si.set(l,{...g}),Ti++,Ai.set(l,Ti),u(null,v);return}let k=rt.now(),S=m||l,P=`${S}:${h}`,q=_r.get(P),R=El.connect({socket:v,servername:S,session:q,ALPNProtocols:r?["h2","http/1.1"]:["http/1.1"],rejectUnauthorized:!0});R.on("session",O=>{if(_r.size>=i){let W=_r.keys().next().value;W&&_r.delete(W)}_r.set(P,O)}),R.once("error",O=>{u(O,null)}),R.once("secureConnect",()=>{g.tls=rt.now()-k,g.total=rt.now()-y,Si.set(l,{...g}),Ti++,Ai.set(l,Ti),process.env.DEBUG_TIMING&&console.log(`[TIMING] Stored for ${l}:`,g),u(null,R)})})}catch(b){u(b,null)}}}}var Si,Ai,Ti,_r,$a=A(()=>{"use strict";Cl();Dl();Ll();Rl();Si=new Map,Ai=new Map,Ti=0,_r=new Map});var Fl={};Ee(Fl,{AgentManager:()=>lr,analyzeBatchDomains:()=>Iv,createAgent:()=>Uv,extractDomain:()=>Ml});function Uv(t={}){return new lr(t).getGlobalAgent()}function Ml(t){try{return new URL(t).hostname}catch{return null}}function Iv(t){let e=new Set;for(let r of t){let n=Ml(r);n&&e.add(n)}return{strategy:e.size<=1?"single":"multi",domains:e}}var lr,Oa=A(()=>{"use strict";Ua();En();$a();lr=class{globalAgent;domainAgents;options;protocolCache;constructor(e={},r){this.domainAgents=new Map,this.protocolCache=r,this.options={connections:e.connections??10,pipelining:e.pipelining??1,keepAlive:e.keepAlive??!0,keepAliveTimeout:e.keepAliveTimeout??4*1e3,keepAliveMaxTimeout:e.keepAliveMaxTimeout??600*1e3,keepAliveTimeoutThreshold:e.keepAliveTimeoutThreshold??1*1e3,connectTimeout:e.connectTimeout??10*1e3,perDomainPooling:e.perDomainPooling??!0,localAddress:e.localAddress,maxRequestsPerClient:e.maxRequestsPerClient??0,maxCachedSessions:e.maxCachedSessions??100,maxHeaderSize:e.maxHeaderSize,clientTtl:e.clientTtl??null,allowH2:e.allowH2,maxConcurrentStreams:e.maxConcurrentStreams}}getGlobalAgent(){return this.globalAgent||(this.globalAgent=this.createAgent(this.options)),this.globalAgent}getAgentForDomain(e,r){if(!this.options.perDomainPooling)return this.getGlobalAgent();let n=this.domainAgents.get(e);if(!n){let i={...this.options,...r};n=this.createAgent(i),this.domainAgents.set(e,n)}return n}getAgentForUrl(e){try{let r=new URL(e);return this.getAgentForDomain(r.hostname)}catch{return this.getGlobalAgent()}}getAdaptiveAgentForUrl(e,r){var u;let n=mt(e),i=new URL(n).hostname;if(this.options.perDomainPooling){let l=this.domainAgents.get(i);if(l)return l}let o=(u=this.protocolCache)==null?void 0:u.get(n),s=this.getAdaptiveOptions(o,r);if(!this.options.perDomainPooling)return this.getGlobalAgent();let c=this.createAgent(s);return this.domainAgents.set(i,c),c}getAdaptiveOptions(e,r){let n={...this.options};return e==="h2"||e==="h3"?{...n,connections:Math.min(n.connections,2),pipelining:1,allowH2:!0,maxConcurrentStreams:n.maxConcurrentStreams??100,...r}:e==="http/1.1"?{...n,connections:Math.max(n.connections,6),pipelining:2,allowH2:!1,...r}:{...n,allowH2:n.allowH2??!0,...r}}setProtocolCache(e){this.protocolCache=e}createBatchAgent(e,r,n){let i=Math.max(1,Math.min(Math.ceil(e/2),50,r)),o=r>20&&e>5?2:1,s={...this.options,connections:(n==null?void 0:n.connections)??i,pipelining:(n==null?void 0:n.pipelining)??o,...n};return this.createAgent(s)}createStressTestAgent(e){let n=Math.min(Math.ceil(e/10),100);return this.createAgent({connections:n,pipelining:10,keepAliveTimeout:3e4,keepAliveMaxTimeout:12e4,connectTimeout:5e3})}createAgent(e){let r=Nl({timeout:e.connectTimeout,allowH2:e.allowH2,keepAliveInitialDelay:e.keepAliveTimeout,maxCachedSessions:e.maxCachedSessions,localAddress:e.localAddress});return new ki({connections:e.connections,pipelining:e.pipelining,maxHeaderSize:e.maxHeaderSize,maxRequestsPerClient:e.maxRequestsPerClient,maxCachedSessions:e.maxCachedSessions,clientTtl:e.clientTtl??null,keepAliveTimeout:e.keepAliveTimeout,keepAliveMaxTimeout:e.keepAliveMaxTimeout,keepAliveTimeoutThreshold:e.keepAliveTimeoutThreshold,connectTimeout:e.connectTimeout,socketPath:void 0,allowH2:e.allowH2,maxConcurrentStreams:e.maxConcurrentStreams,connect:r})}getStats(){return{agentCount:1+this.domainAgents.size,domains:Array.from(this.domainAgents.keys()),totalConnections:(1+this.domainAgents.size)*this.options.connections}}async closeDomainAgent(e){let r=this.domainAgents.get(e);r&&(await r.close(),this.domainAgents.delete(e))}async closeAll(){let e=[];this.globalAgent&&(e.push(this.globalAgent.close()),this.globalAgent=void 0);for(let r of this.domainAgents.values())e.push(r.close());this.domainAgents.clear(),await Promise.all(e)}async destroy(){let e=[];this.globalAgent&&(e.push(this.globalAgent.destroy()),this.globalAgent=void 0);for(let r of this.domainAgents.values())e.push(r.destroy());this.domainAgents.clear(),await Promise.all(e)}}});var dr,Bl=A(()=>{dr=globalThis.performance});var o3,Ul,Il=A(()=>{o3=globalThis.performance,Ul=class{getStore(){}run(t,e){return e()}enterWith(){}}});var za,c3,Wr,Hl=A(()=>{za=()=>{},c3=globalThis.performance,Wr=()=>({subscribe:za,unsubscribe:za,publish:za,hasSubscribers:!1})});var ja,l3,ql=A(()=>{ja=(t,e)=>e(null,"127.0.0.1",4),l3=globalThis.performance});var $l,p3,Ol=A(()=>{$l=t=>t,p3=globalThis.performance});function zl(t){return(e,r,n)=>{var i;if((i=t.override)!=null&&i[e]){let o=t.override[e],s=o.includes(":")?6:4;return n(null,o,s)}ja(e,r,n)}}var g3,jl=A(()=>{"use strict";ql();Ol();g3=$l(ja)});var Jl={};Ee(Jl,{UndiciTransport:()=>_a});function zv(t){return(t==null?void 0:t.cause)??(t==null?void 0:t.reason)}function _l(t){return t instanceof Y?!0:!t||typeof t!="object"?!1:t.name==="TimeoutError"}function Wl(t,e,r){if(!r)return!1;if(e!==void 0)return!0;let n=zv(t),i=t==null?void 0:t.message,o=typeof i=="string"&&(i.includes("Request timed out (total time exceeded)")||i.includes("timed out (total time exceeded)")),s=typeof i=="string"&&i.toLowerCase()==="request was aborted";return t instanceof Y||_l(n)||_l(t)||t instanceof vt.RequestAbortedError||o||s||(t==null?void 0:t.code)==="ABORT_ERR"||(t==null?void 0:t.code)==="UND_ERR_REQUEST_TIMEOUT"}function jv(t,e){return{connectTimeout:(t==null?void 0:t.connect)??(t==null?void 0:t.secureConnect)??(e==null?void 0:e.connectTimeout),headersTimeout:(t==null?void 0:t.response)??(e==null?void 0:e.headersTimeout),bodyTimeout:(t==null?void 0:t.send)??(e==null?void 0:e.bodyTimeout),totalTimeout:t==null?void 0:t.request}}function Ci(t){if(!t)return;let e={};return t.minVersion&&(e.minVersion=t.minVersion),t.maxVersion&&(e.maxVersion=t.maxVersion),t.ciphers&&(e.ciphers=t.ciphers),t.honorCipherOrder!==void 0&&(e.honorCipherOrder=t.honorCipherOrder),t.ca&&(e.ca=t.ca),t.cert&&(e.cert=t.cert),t.key&&(e.key=t.key),t.passphrase&&(e.passphrase=t.passphrase),t.rejectUnauthorized!==void 0&&(e.rejectUnauthorized=t.rejectUnauthorized),t.alpnProtocols&&(e.ALPNProtocols=t.alpnProtocols),t.sessionTimeout!==void 0&&(e.sessionTimeout=t.sessionTimeout),t.sessionIdContext&&(e.sessionIdContext=t.sessionIdContext),t.servername!==void 0&&(e.servername=t.servername===!1?"":t.servername),e}function Vl(t){if(t.explicit)return t.explicit;let{proxyAgent:e,agentManager:r,dnsAgent:n,url:i,bypass:o}=t,s=Vv(i,o);if(e&&!s)return e;if(r)return r.getAgentForUrl(i);if(n)return n}function _v(t){switch(t.toLowerCase().replace(":","")){case"http":return"http";case"https":return"https";case"socks4":return"socks4";case"socks4a":return"socks4a";case"socks5":case"socks":return"socks5";default:return}}function Wv(t,e){let[r,n]=e.split("/");if(!n)return t===r;let i=parseInt(n,10);if(isNaN(i))return!1;let o=t.split(".").map(Number),s=r.split(".").map(Number);if(o.length!==4||s.length!==4||o.some(isNaN)||s.some(isNaN))return!1;let c=o[0]<<24|o[1]<<16|o[2]<<8|o[3],u=s[0]<<24|s[1]<<16|s[2]<<8|s[3],l=~((1<<32-i)-1);return(c&l)===(u&l)}function Vv(t,e){if(!e||e.length===0)return!1;let r="",n="";try{let i=new URL(t);r=i.hostname,n=i.port}catch{return!1}for(let i of e){if(i==="*")return!0;if(i.includes("/")){if(Wv(r,i))return!0;continue}if(i.includes(":")&&!i.includes("/")){let[o,s]=i.split(":");if(r===o&&(!s||n===s))return!0;continue}if(i.startsWith("*.")){let o=i.slice(1);if(r.endsWith(o))return!0;continue}if(i.startsWith(".")){if(r.endsWith(i))return!0;continue}if(r===i)return!0}return!1}function Gl(t){if(!t)return;if(typeof t.get=="function"){let n=t.get("content-length");return n?parseInt(n,10):void 0}let e=t["content-length"]??t["Content-Length"];if(e===void 0)return;let r=parseInt(Array.isArray(e)?e[0]:e,10);return Number.isFinite(r)?r:void 0}function Ei(t,e){if(!e)return t;if(typeof Response<"u"&&t instanceof Response){if(!t.body)return t;let o=Gl(t.headers),s=Fe(t.body,e,{total:o,direction:"download"});return new Response(s,{status:t.status,statusText:t.statusText,headers:t.headers})}let r=Gl(t.headers),n=t.body;if(!n)return t;let i=Fe(Sa(n),e,{total:r,direction:"download"});return new Response(i,{status:t.statusCode,headers:t.headers})}function Kl(t,e,r){if(t instanceof FormData||!e||!t)return t;if(typeof ReadableStream<"u"&&t instanceof ReadableStream)return Fe(t,e,{total:r,direction:"upload"});if(typeof Blob<"u"&&t instanceof Blob)return Fe(t.stream(),e,{total:t.size,direction:"upload"});if(Gv(t)){let n=Sa(t);return Fe(n,e,{total:r,direction:"upload"})}if(t instanceof ArrayBuffer||ArrayBuffer.isView(t)){let n=t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength);return Xl(n,e)}if(typeof t=="string"){let i=new TextEncoder().encode(t);return Xl(i,e)}return t}function Xl(t,e,r=64*1024){let n=0,i=t.byteLength,o=new ReadableStream({pull(s){if(n>=i){s.close();return}let c=Math.min(n+r,i);s.enqueue(t.slice(n,c)),n=c}});return Fe(o,e,{total:i,direction:"upload"})}function Gv(t){return t&&typeof t.pipe=="function"&&typeof t.on=="function"}var Hv,qv,$v,Ov,Vr,_a,Ql=A(()=>{"use strict";Ua();Ca();V();Bl();Il();Hl();jl();Oa();no();Aa();En();$a();Hv=Wr("undici:request:create"),qv=Wr("undici:request:bodySent"),$v=Wr("undici:request:headers"),Ov=Wr("undici:client:connect"),Vr=new Ul;Hv.subscribe(t=>{var r;let e=Vr.getStore();if(e){e.requestStartTime===0&&(e.requestStartTime=dr.now()),e.timings.dns||e.timings.tcp||e.timings.tls||(e.timings={queuing:0,dns:0,tcp:0,tls:0,firstByte:0,content:0,total:0},e.connection={});let i=t;if((r=i==null?void 0:i.request)!=null&&r.origin&&!e.requestCorrelationId)try{e.requestCorrelationId=new URL(i.request.origin).hostname}catch{}}});qv.subscribe(t=>{let e=Vr.getStore();e!=null&&e.hooks&&e.hooks.onRequestSent&&e.hooks.onRequestSent()});$v.subscribe(t=>{let e=t,r=Vr.getStore();if(!r||!e)return;let i=dr.now()-r.requestStartTime;if(e.timing){let{timing:o}=e;r.timings.queuing=o.queuing,r.timings.dns=o.dns,r.timings.tcp=o.tcp,r.timings.tls=o.tls,r.timings.firstByte=o.response,r.timings.content=o.body,r.timings.total=o.ended}else r.timings.firstByte=i;if(r.hooks){let o=r.timings.dns??0,s=r.timings.tcp??0,c=r.timings.tls??0;if(r.hooks.onDnsLookup&&o>0&&r.hooks.onDnsLookup({domain:e.request.origin,duration:o}),r.hooks.onTcpConnect&&s>0&&r.hooks.onTcpConnect({remoteAddress:"",duration:s}),r.hooks.onTlsHandshake&&c>0&&r.hooks.onTlsHandshake({protocol:"",cipher:"",duration:c}),r.hooks.onResponseStart){let u=new Headers;for(let l=0;l<e.response.headers.length;l+=2)u.append(e.response.headers[l],e.response.headers[l+1]);r.hooks.onResponseStart({status:e.response.statusCode,headers:u})}}});Ov.subscribe(t=>{var n,i,o,s,c,u;let e=t,r=Vr.getStore();if(r&&e&&e.socket){let{socket:l}=e;r.connection.remoteAddress=l.remoteAddress,r.connection.remotePort=l.remotePort,r.connection.localAddress=l.localAddress,r.connection.localPort=l.localPort;let d=l.alpnProtocol||(l.tlsSocket?l.tlsSocket.getProtocol():void 0);if(r.connection.protocol=d,r.connection.cipher=l.tlsSocket?(n=l.tlsSocket.getCipher())==null?void 0:n.name:void 0,r.hooks&&(r.hooks.onTcpConnect&&r.hooks.onTcpConnect({remoteAddress:l.remoteAddress,duration:0}),r.hooks.onTlsHandshake&&l.tlsSocket&&r.hooks.onTlsHandshake({protocol:d||"unknown",cipher:((i=l.tlsSocket.getCipher())==null?void 0:i.name)||"unknown",duration:0})),d==="h2"){let p=l.session||l,m=p.state,f=p.remoteSettings,h=p.localSettings;if(r.connection.http2={streamId:l.streamId,streamWeight:l.weight,streamDependency:l.dependency,serverPush:!!l.serverPush,settingsReceived:!!f,maxConcurrentStreams:f==null?void 0:f.maxConcurrentStreams,currentStreams:m==null?void 0:m.streamCount,pendingStreams:m==null?void 0:m.pendingStreamCount,localWindowSize:(m==null?void 0:m.localWindowSize)??(m==null?void 0:m.effectiveLocalWindowSize),remoteWindowSize:m==null?void 0:m.effectiveRecvDataLength,localSettings:h?{...h}:void 0,remoteSettings:f?{...f}:void 0},(o=r.hooks)!=null&&o.onHttp2Session){let g=l.origin||((s=e.connectParams)==null?void 0:s.hostname)||"";r.hooks.onHttp2Session({origin:g,event:"connect",maxConcurrentStreams:f==null?void 0:f.maxConcurrentStreams,activeStreams:m==null?void 0:m.streamCount,localSettings:h?{...h}:void 0,remoteSettings:f?{...f}:void 0})}if((c=r.hooks)!=null&&c.onHttp2Stream&&l.streamId){let g=l.origin||((u=e.connectParams)==null?void 0:u.hostname)||"";r.hooks.onHttp2Stream({streamId:l.streamId,origin:g,event:"open",state:"open",pushed:!!l.serverPush})}}if(d==="h3"||d!=null&&d.startsWith("h3-")){let p=l.stats,m=l.handshakeConfirmed;r.connection.http3={quicVersion:d,zeroRTT:l.zeroRTT||!1,maxStreams:l.maxStreams,handshakeConfirmed:typeof m=="boolean"?m:void 0},p&&typeof p.rtt=="number"&&(r.connection.rtt=p.rtt)}r.connection.reused=!!l.reused}});_a=class{baseUrl;options;proxyAgent;dnsAgent;agentManager;proxyBypassList;tlsOptions;socketClient;observability;protocolCache;constructor(e,r={}){if(this.baseUrl=e||"",this.options=r,this.tlsOptions=r.tls,this.observability=r.observability!==!1,r.protocolCache===!0?this.protocolCache=Cn():r.protocolCache instanceof xr&&(this.protocolCache=r.protocolCache),r.proxy){let n=typeof r.proxy=="string"?{url:r.proxy}:r.proxy,i=new URL(n.url),o=n.type||_v(i.protocol);if(o!=null&&o.startsWith("socks"))throw new je(`SOCKS proxy (${o}) is not supported. Use an HTTP/HTTPS proxy or a SOCKS-to-HTTP bridge.`,"ERR_UNSUPPORTED_PROXY_TYPE");let s=n.auth?`${n.auth.username}:${n.auth.password}`:void 0,c=s?n.url.replace("://",`://${s}@`):n.url;this.proxyBypassList=n.bypass;let u={uri:c,headers:n.headers,token:n.token,proxyTunnel:n.tunnel,requestTls:Ci(n.requestTls??r.tls),proxyTls:Ci(n.proxyTls)};n.connectTimeout&&(u.connectTimeout=n.connectTimeout),n.http2&&(u.requestTls||(u.requestTls={}),u.requestTls.ALPNProtocols=["h2","http/1.1"]),this.proxyAgent=new Tl(u)}if(this.agentManager=r.agent,r.dns&&!this.agentManager){let n=zl(r.dns);this.dnsAgent=new ki({connect:{lookup:n}})}this.agentManager||(this.agentManager=new lr({connections:r.connections,pipelining:r.pipelining,keepAlive:r.keepAlive,keepAliveTimeout:r.keepAliveTimeout,keepAliveMaxTimeout:r.keepAliveMaxTimeout,connectTimeout:r.connectTimeout,perDomainPooling:r.perDomainPooling,localAddress:r.localAddress})),r.socketPath&&e&&(this.socketClient=new Sl(e,{socketPath:r.socketPath}))}updateProtocolCache(e,r){if(!this.protocolCache||!(r!=null&&r.protocol))return;let n=to(r.protocol);n&&this.protocolCache.set(e,n)}recordProtocolFailure(e,r){var i,o,s,c;if(!this.protocolCache)return;let n=((i=r.message)==null?void 0:i.includes("HTTP/2"))||((o=r.message)==null?void 0:o.includes("h2"))||((s=r.message)==null?void 0:s.includes("GOAWAY"))||((c=r.message)==null?void 0:c.includes("stream"));this.protocolCache.recordFailure(e,n)}shouldUseHttp2(e){return this.protocolCache?this.protocolCache.shouldTryHttp2(e):!0}getProtocolCache(){return this.protocolCache}async dispatch(e){let r=Object.fromEntries(e.headers),n=r["content-length"],i=n?parseInt(n,10):void 0,o;if(this.baseUrl)if(e.url.startsWith(this.baseUrl))o=e.url;else if(e.url.startsWith("http://")||e.url.startsWith("https://"))o=e.url;else{let y=this.baseUrl.endsWith("/")?this.baseUrl.slice(0,-1):this.baseUrl,C=e.url.startsWith("/")?e.url:"/"+e.url;o=y+C}else o=e.url;let s=!!e.beforeRedirect,c=e.maxRedirects??20,u=e.followRedirects!==!1,l=jv(e.timeout,{connectTimeout:this.options.connectTimeout,headersTimeout:this.options.headersTimeout,bodyTimeout:this.options.bodyTimeout}),d,p,m,f,h;if(!this.observability)return this.dispatchFast(e,r,o,l,s,c,u,i);let g={timings:{},connection:{},requestStartTime:0,requestCorrelationId:"",hooks:e._hooks};return Vr.run(g,async()=>{var y,C;try{let b=dr.now();g.requestStartTime===0&&(g.requestStartTime=b);let w=0,x=e.method,v=e.body,T={...r},k=e.signal;if(l.totalTimeout){if(d=new AbortController,f=new Y(e,{phase:"request",timeout:l.totalTimeout}),e.signal){let S=e.signal;k=d.signal;let P=()=>{m=S.reason??new Error("Request aborted by external signal"),d.abort(m)};S.aborted?(m=S.reason??new Error("Request aborted by external signal"),d.abort(m)):(S.addEventListener("abort",P,{once:!0}),h=()=>S.removeEventListener("abort",P))}else k=d.signal;p=setTimeout(()=>{m=f,d.abort(m)},l.totalTimeout)}for(;;){let S=this.socketClient||Vl({explicit:e._dispatcher,proxyAgent:this.proxyAgent,agentManager:this.agentManager,dnsAgent:this.dnsAgent,url:o,bypass:this.proxyBypassList}),P=w===0?Kl(v,e.onUploadProgress,i):v,q=P;if(q instanceof FormData){let F=new Response(q);q=F.body,F.headers.forEach((oe,ee)=>{ee.toLowerCase()==="content-type"?(T[ee]=oe,delete T["Content-Type"]):T[ee]||(T[ee]=oe)})}let R={method:x,headers:T,body:q,signal:k,dispatcher:S,connectTimeout:l.connectTimeout,headersTimeout:l.headersTimeout,bodyTimeout:l.bodyTimeout,maxRedirections:0};q&&(q instanceof ReadableStream||typeof q.pipe=="function"||q[Symbol.asyncIterator])&&(R.duplex="half");let O=Ci(this.tlsOptions);O&&(R.tls=O);let W=e.http2!==void 0?e.http2:(y=this.options.http2)==null?void 0:y.enabled;if(W?R.allowH2=!0:e.http2===!1&&(R.allowH2=!1),W&&this.options.http2&&(this.options.http2.maxConcurrentStreams!==void 0&&(R.maxConcurrentStreams=this.options.http2.maxConcurrentStreams),this.options.http2.pipelining!==void 0&&(R.pipelining=this.options.http2.pipelining)),W&&this.options.expectContinue!==void 0&&q){let F=this.options.expectContinue;(F===!0||typeof F=="number"&&i!==void 0&&i>F)&&(R.expectContinue=!0)}let z,I=0;try{I=Pl(new URL(o).hostname)}catch{}if(this.socketClient){let F=new URL(o).pathname+new URL(o).search;z=await this.socketClient.request({path:F||"/",method:x,headers:T,body:P,signal:e.signal})}else z=await Ba(o,R);let _=z.statusCode;if(_>=300&&_<400&&u&&w<c){let F=z.headers.location,oe=Array.isArray(F)?F[0]:F;if(oe){let ee=new URL(oe,o).toString();if(s){let Ie=new Headers;for(let[Oe,He]of Object.entries(z.headers))He!==void 0&&(Array.isArray(He)?He.forEach(Xe=>Ie.append(Oe,Xe)):Ie.set(Oe,He));let ne={from:o,to:ee,status:_,headers:Ie},Ke=await e.beforeRedirect(ne);if(Ke===!1){let Oe=e.onDownloadProgress?Ei(z,e.onDownloadProgress):z;this.updateProtocolCache(o,g.connection);try{let He=new URL(o).hostname;if(qa(He,I)){let ze=Ha(He);ze&&!g.timings.dns&&!g.timings.tcp&&!g.timings.tls&&(g.timings.dns=ze.dns,g.timings.tcp=ze.tcp,g.timings.tls=ze.tls)}else!g.timings.dns&&!g.timings.tcp&&!g.timings.tls&&(g.timings.dns=0,g.timings.tcp=0,g.timings.tls=0)}catch{}return new tt(Oe,{timings:g.timings,connection:g.connection})}typeof Ke=="string"?o=Ke:o=ee}else o=ee;(_===303||(_===301||_===302)&&x!=="GET"&&x!=="HEAD")&&(x="GET",v=null,delete T["content-type"],delete T["content-length"],delete T["Content-Type"],delete T["Content-Length"]),await z.body.arrayBuffer().catch(()=>{}),w++;continue}}let M=e.onDownloadProgress?Ei(z,e.onDownloadProgress):z,B=dr.now()-b,H=dr.now()-g.requestStartTime;g.timings.firstByte||(g.timings.firstByte=B),g.timings.total||(g.timings.total=H),this.updateProtocolCache(o,g.connection);try{let F=new URL(o).hostname;if(qa(F,I)){let ee=Ha(F);ee&&!g.timings.dns&&!g.timings.tcp&&!g.timings.tls&&(g.timings.dns=ee.dns,g.timings.tcp=ee.tcp,g.timings.tls=ee.tls)}else!g.timings.dns&&!g.timings.tcp&&!g.timings.tls&&(g.timings.dns=0,g.timings.tcp=0,g.timings.tls=0)}catch{}return new tt(M,{timings:g.timings,connection:g.connection})}}catch(b){if(this.recordProtocolFailure(o,b),b instanceof vt.ConnectTimeoutError||b.code==="UND_ERR_CONNECT_TIMEOUT")throw new Y(e,{phase:"connect",timeout:l.connectTimeout});if(b instanceof vt.HeadersTimeoutError||b.code==="UND_ERR_HEADERS_TIMEOUT")throw new Y(e,{phase:"response",timeout:l.headersTimeout});if(b instanceof vt.BodyTimeoutError||b.code==="UND_ERR_BODY_TIMEOUT")throw new Y(e,{phase:"send",timeout:l.bodyTimeout});if(Wl(b,m,l.totalTimeout))throw f??new Y(e,{phase:"request",timeout:l.totalTimeout});let w=b.code||((C=b==null?void 0:b.cause)==null?void 0:C.code);if(w==="UND_ERR_HEADERS_OVERFLOW")throw new Tt(16*1024,void 0,e);let x=_i(b);throw x?(x.request=e,x):new je(b.message,w,e)}finally{typeof h=="function"&&h(),p&&clearTimeout(p)}})}async dispatchFast(e,r,n,i,o,s,c,u){var h,g;let l,d,p,m,f;try{let y=0,C=e.method,b=e.body,w={...r},x=e.signal;if(i.totalTimeout){if(l=new AbortController,m=new Y(e,{phase:"request",timeout:i.totalTimeout}),e.signal){let v=e.signal;x=l.signal;let T=()=>{p=v.reason??new Error("Request aborted by external signal"),l.abort(p)};v.aborted?(p=v.reason??new Error("Request aborted by external signal"),l.abort(p)):(v.addEventListener("abort",T,{once:!0}),f=()=>v.removeEventListener("abort",T))}else x=l.signal;d=setTimeout(()=>{p=m,l.abort(p)},i.totalTimeout)}for(;;){let v=this.socketClient||Vl({explicit:e._dispatcher,proxyAgent:this.proxyAgent,agentManager:this.agentManager,dnsAgent:this.dnsAgent,url:n,bypass:this.proxyBypassList}),T=y===0?Kl(b,e.onUploadProgress,u):b,k=T;if(k instanceof FormData){let I=new Response(k);k=I.body,I.headers.forEach((_,E)=>{E.toLowerCase()==="content-type"?(w[E]=_,delete w["Content-Type"]):w[E]||(w[E]=_)})}let S={method:C,headers:w,body:k,signal:x,dispatcher:v,connectTimeout:i.connectTimeout,headersTimeout:i.headersTimeout,bodyTimeout:i.bodyTimeout,maxRedirections:0};k&&(k instanceof ReadableStream||typeof k.pipe=="function"||k[Symbol.asyncIterator])&&(S.duplex="half");let P=Ci(this.tlsOptions);P&&(S.tls=P);let q=e.http2!==void 0?e.http2:(h=this.options.http2)==null?void 0:h.enabled;if(q?S.allowH2=!0:e.http2===!1&&(S.allowH2=!1),q&&this.options.http2&&(this.options.http2.maxConcurrentStreams!==void 0&&(S.maxConcurrentStreams=this.options.http2.maxConcurrentStreams),this.options.http2.pipelining!==void 0&&(S.pipelining=this.options.http2.pipelining)),q&&this.options.expectContinue!==void 0&&k){let I=this.options.expectContinue;(I===!0||typeof I=="number"&&u!==void 0&&u>I)&&(S.expectContinue=!0)}let R;if(this.socketClient){let I=new URL(n).pathname+new URL(n).search;R=await this.socketClient.request({path:I||"/",method:C,headers:w,body:T,signal:e.signal})}else R=await Ba(n,S);let O=R.statusCode;if(O>=300&&O<400&&c&&y<s){let I=R.headers.location,_=Array.isArray(I)?I[0]:I;if(_){let E=new URL(_,n).toString();if(o){let M=new Headers;for(let[F,oe]of Object.entries(R.headers))oe!==void 0&&(Array.isArray(oe)?oe.forEach(ee=>M.append(F,ee)):M.set(F,oe));let B={from:n,to:E,status:O,headers:M},H=await e.beforeRedirect(B);if(H===!1){let F=e.onDownloadProgress?Ei(R,e.onDownloadProgress):R;return new tt(F,{timings:{},connection:{}})}typeof H=="string"?n=H:n=E}else n=E;(O===303||(O===301||O===302)&&C!=="GET"&&C!=="HEAD")&&(C="GET",b=null,delete w["content-type"],delete w["content-length"],delete w["Content-Type"],delete w["Content-Length"]),await R.body.arrayBuffer().catch(()=>{}),y++;continue}}let z=e.onDownloadProgress?Ei(R,e.onDownloadProgress):R;return new tt(z,{timings:{},connection:{}})}}catch(y){if(y instanceof vt.ConnectTimeoutError||y.code==="UND_ERR_CONNECT_TIMEOUT")throw new Y(e,{phase:"connect",timeout:i.connectTimeout});if(y instanceof vt.HeadersTimeoutError||y.code==="UND_ERR_HEADERS_TIMEOUT")throw new Y(e,{phase:"response",timeout:i.headersTimeout});if(y instanceof vt.BodyTimeoutError||y.code==="UND_ERR_BODY_TIMEOUT")throw new Y(e,{phase:"send",timeout:i.bodyTimeout});if(Wl(y,p,i.totalTimeout))throw m??new Y(e,{phase:"request",timeout:i.totalTimeout});let C=y.code||((g=y==null?void 0:y.cause)==null?void 0:g.code);if(C==="UND_ERR_HEADERS_OVERFLOW")throw new Tt(16*1024,void 0,e);let b=_i(y);throw b?(b.request=e,b):new je(y.message,C,e)}finally{typeof f=="function"&&f(),d&&clearTimeout(d)}}}});var rd={};Ee(rd,{HlsPromise:()=>Ri,hls:()=>Kv});async function Di(t,e,r){let i=await(await t.get(e,{signal:r.signal,headers:r.headers,useCurl:r.useCurl})).blob(),o=Buffer.from(await i.arrayBuffer());if(o.length>=2&&o[0]===31&&o[1]===139)try{return sc(o).toString("utf-8")}catch{}return o.toString("utf-8")}function Va(t,e){let r={},n=t.substring(e.length),i=/([A-Z0-9-]+)=(?:"([^"]*)"|([^,]*))/g,o;for(;(o=i.exec(n))!==null;)r[o[1]]=o[2]??o[3];return r}function Li(t,e){if(t.startsWith("http://")||t.startsWith("https://"))return t;try{let r=new URL(e),n=r.pathname.substring(0,r.pathname.lastIndexOf("/")+1);return new URL(t,r.origin+n).toString()}catch{return t}}function Yl(t,e){let r=t.split(`
|
|
54
54
|
`),n=[],i={};for(let o of r){let s=o.trim();if(s)if(s.startsWith("#EXT-X-STREAM-INF:")){let c=Va(s,"#EXT-X-STREAM-INF:");i={bandwidth:c.BANDWIDTH?parseInt(c.BANDWIDTH,10):void 0,resolution:c.RESOLUTION,codecs:c.CODECS,name:c.NAME}}else!s.startsWith("#")&&i.bandwidth!==void 0&&(n.push({...i,url:Li(s,e)}),i={})}return{variants:n,isMaster:!0}}function Zl(t,e=0){let r=t.split("@"),n=parseInt(r[0],10),i=r[1]?parseInt(r[1],10):e;return{length:n,offset:i}}function Wa(t,e){let r=t.split(`
|
|
55
|
-
`),n=[],i=5,o=0,s=0,c=!1,u,l=0,d,p=!1,m,f,h,g=0,y=0;for(let C of r){let b=C.trim();if(b)if(b.startsWith("#EXT-X-TARGETDURATION:"))i=parseInt(b.split(":")[1],10);else if(b.startsWith("#EXT-X-MEDIA-SEQUENCE:"))o=parseInt(b.split(":")[1],10);else if(b.startsWith("#EXT-X-DISCONTINUITY-SEQUENCE:"))s=parseInt(b.split(":")[1],10);else if(b.startsWith("#EXT-X-PLAYLIST-TYPE:"))u=b.split(":")[1];else if(b==="#EXT-X-ENDLIST")c=!0;else if(b==="#EXT-X-DISCONTINUITY")p=!0;else if(b.startsWith("#EXT-X-PROGRAM-DATE-TIME:"))m=new Date(b.split(":").slice(1).join(":"));else if(b.startsWith("#EXT-X-KEY:")){let x=Va(b,"#EXT-X-KEY:");x.METHOD==="NONE"?d=void 0:d={method:x.METHOD,uri:x.URI?Li(x.URI,e):void 0,iv:x.IV}}else if(b.startsWith("#EXT-X-BYTERANGE:")){let x=b.substring(17);f=Zl(x,g),g=f.offset+f.length}else if(b.startsWith("#EXT-X-MAP:")){let x=Va(b,"#EXT-X-MAP:");h={url:Li(x.URI,e),byteRange:x.BYTERANGE?Zl(x.BYTERANGE):void 0}}else if(b.startsWith("#EXTINF:")){let x=b.substring(8).split(",")[0];l=parseFloat(x)}else b.startsWith("#")||(n.push({url:Li(b,e),duration:l,sequence:o+y,key:d,discontinuity:p,programDateTime:m,byteRange:f,initSegment:h}),f&&(g=f.offset+f.length),y++,p=!1,m=void 0,f=void 0)}return{segments:n,targetDuration:i,mediaSequence:o,endList:c,playlistType:u,discontinuitySequence:s}}function ed(t){return t.includes("#EXT-X-STREAM-INF")}function td(t,e){if(!t.length)throw new Error("No variants found in master playlist");let r=[...t].sort((n,i)=>(n.bandwidth??0)-(i.bandwidth??0));if(e==="lowest")return r[0];if(e==="highest"||e===void 0)return r[r.length-1];if(e.resolution){let n=t.find(i=>i.resolution===e.resolution);if(n)return n}if(e.bandwidth){let n=e.bandwidth;return r.reduce((i,o)=>{let s=Math.abs((i.bandwidth??0)-n);return Math.abs((o.bandwidth??0)-n)<s?o:i})}return r[r.length-1]}function Kv(t,e,r={}){return new Ri(t,e,r)}var Ri,nd=T(()=>{"use strict";At();xi();wi();Ma();mo();Ri=class{client;manifestUrl;options;seenSequences=new Set;downloadedBytes=0;downloadedSegments=0;startTime=0;aborted=!1;abortController=new AbortController;keyCache=new Map;initSegmentCache=new Map;initSegmentPrepended=new Set;defaultRetryStatusCodes=[403,404,408,429,500,502,503,504];consecutiveErrors=0;constructor(e,r,n={}){if(this.client=e,this.manifestUrl=r,this.options={mode:"merge",format:"ts",concurrency:5,...n},this.options.format!=="ts")throw new Error(`Format '${this.options.format}' requires ffmpeg. Use format: 'ts' or install ffmpeg.`)}get[Symbol.toStringTag](){return"HlsPromise"}then(e,r){return Promise.reject(new Error("HlsPromise requires .download(), .stream(), or .pipe() to execute")).then(e,r)}catch(e){return this.then(null,e)}finally(e){return this.then(()=>{e==null||e()},()=>{e==null||e()})}cancel(){this.aborted=!0,this.abortController.abort()}async download(e){this.startTime=Date.now();let r=await this.resolveMediaPlaylist();if(this.options.mode==="chunks")await this.downloadChunks(r,e);else{if(typeof e!="string")throw new Error("Merge mode requires a string path, not a function");await this.downloadMerged(r,e)}}async*stream(){this.startTime=Date.now();let e=await this.resolveMediaPlaylist(),r=this.isLiveMode(),n=this.getMaxDuration(),i=this.options.concurrency??5,o=2e3;for(;!this.aborted;){if(this.consecutiveErrors>=this.getMaxConsecutiveErrors())throw new Error(`Too many consecutive errors (${this.consecutiveErrors}). Limit: ${this.getMaxConsecutiveErrors()}. Stopping download.`);let s;try{s=await this.fetchMediaPlaylist(e)}catch(u){if(r&&this.consecutiveErrors<this.getMaxConsecutiveErrors()){this.options.onError&&this.options.onError(new Error(`Playlist fetch failed: ${u.message}. Retrying...`)),await this.sleep(o);continue}throw u}o=Math.max(1e3,s.targetDuration*1e3/2);let c=s.segments.filter(u=>!this.seenSequences.has(u.sequence));for(let u of c)this.seenSequences.add(u.sequence);if(c.length>0&&(yield*this.downloadSegmentsConcurrent(c,i,s,r,n)),!r||s.endList||n&&Date.now()-this.startTime>n)break;await this.sleep(o)}}async*downloadSegmentsConcurrent(e,r,n,i,o){let s=new Map,c=new Map,u=0,l=0,d=p=>{let m=e[p],f=this.downloadSegment(m).then(h=>({index:p,data:h?{sequence:m.sequence,duration:m.duration,data:h,url:m.url,downloadedAt:new Date}:null}));c.set(p,f)};for(;l<e.length&&c.size<r;)d(l++);for(;u<e.length&&!(this.aborted||o&&Date.now()-this.startTime>o);){if(this.consecutiveErrors>=this.getMaxConsecutiveErrors())throw new Error(`Too many consecutive errors (${this.consecutiveErrors}). Limit: ${this.getMaxConsecutiveErrors()}. Stopping download.`);if(c.size>0){let p=await Promise.race(c.values());c.delete(p.index),s.set(p.index,p.data),l<e.length&&c.size<r&&d(l++)}for(;s.has(u);){let p=s.get(u);s.delete(u),u++,p&&(this.downloadedSegments++,this.downloadedBytes+=p.data.byteLength,this.emitProgress(n,i),this.options.onSegment&&await this.options.onSegment(p),yield p)}}}async pipe(e){try{for await(let r of this.stream())e.write(r.data)||await new Promise(i=>e.once("drain",i))}finally{"end"in e&&typeof e.end=="function"&&e.end()}}async info(){let e=await Di(this.client,this.manifestUrl,{signal:this.abortController.signal,headers:this.options.headers,useCurl:this.options.useCurl});if(ed(e)){let i=Yl(e,this.manifestUrl),o=td(i.variants,this.options.quality),s=await Di(this.client,o.url,{signal:this.abortController.signal,headers:this.options.headers,useCurl:this.options.useCurl}),c=Wa(s,o.url),u=c.endList?c.segments.reduce((l,d)=>l+d.duration,0):void 0;return{master:i,playlist:c,selectedVariant:o,isLive:!c.endList,totalDuration:u}}let r=Wa(e,this.manifestUrl),n=r.endList?r.segments.reduce((i,o)=>i+o.duration,0):void 0;return{playlist:r,isLive:!r.endList,totalDuration:n}}async resolveMediaPlaylist(){let e={...this.options.headers},r=await Di(this.client,this.manifestUrl,{signal:this.abortController.signal,headers:e,useCurl:this.options.useCurl});if(!ed(r))return this.manifestUrl;let n=Yl(r,this.manifestUrl);return td(n.variants,this.options.quality).url}async fetchMediaPlaylist(e){let r=await this.withRetry(async()=>Di(this.client,e,{signal:this.abortController.signal,headers:this.options.headers,useCurl:this.options.useCurl}),"Fetch playlist",!1);if(!r)throw new Error("Failed to fetch media playlist");return Wa(r,e)}async getKey(e){if(this.keyCache.has(e))return this.keyCache.get(e);let i=await(await(await this.client.get(e,{headers:this.options.headers,signal:this.abortController.signal,useCurl:this.options.useCurl})).blob()).arrayBuffer(),o=Buffer.from(i);if(o.length!==16)throw new Error(`Invalid AES-128 key length: ${o.length} bytes (expected 16)`);return this.keyCache.set(e,o),o}generateIV(e){let r=Buffer.alloc(16);return r.writeBigUInt64BE(BigInt(e),8),r}parseIV(e){let r=e.startsWith("0x")||e.startsWith("0X")?e.slice(2):e;return Buffer.from(r.padStart(32,"0"),"hex")}decryptSegment(e,r,n){let i=wl("aes-128-cbc",r,n);return i.setAutoPadding(!0),Buffer.concat([i.update(e),i.final()])}async getInitSegment(e){var u,l;let r=`${e.url}:${((u=e.byteRange)==null?void 0:u.offset)??0}:${((l=e.byteRange)==null?void 0:l.length)??0}`;if(this.initSegmentCache.has(r))return this.initSegmentCache.get(r);let n={...this.options.headers};if(e.byteRange){let{offset:d,length:p}=e.byteRange;n.Range=`bytes=${d}-${d+p-1}`}let s=await(await(await this.client.get(e.url,{headers:n,signal:this.abortController.signal,useCurl:this.options.useCurl})).blob()).arrayBuffer(),c=Buffer.from(s);return this.initSegmentCache.set(r,c),c}async downloadSegment(e){return await this.withRetry(async()=>{var u;let n={...this.options.headers};if(e.byteRange){let{offset:l,length:d}=e.byteRange;n.Range=`bytes=${l}-${l+d-1}`}let s=await(await(await this.client.get(e.url,{headers:n,signal:this.abortController.signal,useCurl:this.options.useCurl})).blob()).arrayBuffer(),c=Buffer.from(s);if(e.key&&e.key.method==="AES-128"){if(!e.key.uri)throw new Error("AES-128 encryption specified but no key URI provided");let l=await this.getKey(e.key.uri),d=e.key.iv?this.parseIV(e.key.iv):this.generateIV(e.sequence);c=this.decryptSegment(c,l,d)}else if(e.key&&e.key.method==="SAMPLE-AES")throw new Error("SAMPLE-AES encryption is not supported. This typically requires DRM handling.");if(e.initSegment){let l=`${e.initSegment.url}:${((u=e.initSegment.byteRange)==null?void 0:u.offset)??0}`;if(!this.initSegmentPrepended.has(l)){let d=await this.getInitSegment(e.initSegment);c=Buffer.concat([d,c]),this.initSegmentPrepended.add(l)}}return new Uint8Array(c)},`Segment ${e.sequence}`,!0)}async downloadMerged(e,r){await $t(vi(r),{recursive:!0});let n=vr(r,{flags:"a"});try{await this.pipe(n)}catch(i){throw n.destroy(),i}}async downloadChunks(e,r){let n=typeof r=="string"?o=>qt(r,`segment-${o.sequence}.ts`):r,i=typeof r=="string"?r:vi(n({sequence:0,duration:0,url:""}));await $t(i,{recursive:!0});for await(let o of this.stream()){let s=n({sequence:o.sequence,duration:o.duration,url:o.url});await $t(vi(s),{recursive:!0});let c=vr(s);await new Promise((u,l)=>{c.write(o.data,d=>{d?l(d):(c.end(),u())})})}}isLiveMode(){return this.options.live===!0||typeof this.options.live=="object"}getMaxDuration(){if(typeof this.options.live=="object"&&this.options.live.duration)return this.options.live.duration}emitProgress(e,r){this.options.onProgress&&this.options.onProgress({downloadedSegments:this.downloadedSegments,totalSegments:r?void 0:e.segments.length,downloadedBytes:this.downloadedBytes,currentSegment:Math.max(...this.seenSequences),isLive:r,elapsed:Date.now()-this.startTime})}sleep(e){return new Promise(r=>{let n=setTimeout(r,e);this.abortController.signal.addEventListener("abort",()=>{clearTimeout(n),r()},{once:!0})})}getRetryConfig(){let e=this.isLiveMode(),r=this.options.retry||{};return{maxAttempts:r.maxAttempts??(e?5:3),delay:r.delay??1e3,maxDelay:r.maxDelay??3e4,backoff:r.backoff??2,jitter:r.jitter??!0,statusCodes:r.statusCodes??this.defaultRetryStatusCodes}}getMaxConsecutiveErrors(){let e=this.isLiveMode();return this.options.maxConsecutiveErrors??(e?10:3)}calculateRetryDelay(e,r){let n=r.delay*Math.pow(r.backoff,e);if(n=Math.min(n,r.maxDelay),r.jitter){let i=n*.25;n=n-i+Math.random()*i*2}return Math.round(n)}isRetryableError(e,r){var i;if(e.code==="ECONNRESET"||e.code==="ETIMEDOUT"||e.code==="ENOTFOUND")return!0;let n=e.status||e.statusCode||((i=e.response)==null?void 0:i.status);return!!(n&&r.statusCodes.includes(n))}async withRetry(e,r,n=!1){let i=this.getRetryConfig(),o=this.isLiveMode(),s=null;for(let c=0;c<=i.maxAttempts;c++){if(this.aborted)throw new Error("Aborted");try{let u=await e();return this.consecutiveErrors=0,u}catch(u){if(s=u,!this.isRetryableError(u,i)){if(this.options.onError&&this.options.onError(u),n&&o)return this.consecutiveErrors++,null;throw u}if(c<i.maxAttempts){let l=this.calculateRetryDelay(c,i);if(this.options.onError){let d=new Error(`${r}: ${u.message}. Retrying in ${l}ms (attempt ${c+1}/${i.maxAttempts})`);d.cause=u,d.isRetry=!0,this.options.onError(d)}await this.sleep(l)}}}if(this.consecutiveErrors++,this.options.onError&&s&&this.options.onError(s),n&&o)return null;throw s||new Error(`${r}: All retry attempts failed`)}}});var id={};Ee(id,{Agent:()=>Sx,AsyncLocalStorage:()=>sx,AsyncResource:()=>cx,Buffer:()=>lx,Client:()=>Tx,EventEmitter:()=>vw,PassThrough:()=>yw,ProxyAgent:()=>kx,Readable:()=>fw,Server:()=>Ow,Socket:()=>$w,TLSSocket:()=>zw,Transform:()=>gw,WebSocket:()=>Ax,Writable:()=>hw,arch:()=>Nw,basename:()=>lw,brotliCompress:()=>Yw,brotliDecompress:()=>tx,channel:()=>ux,connect:()=>qw,cpus:()=>Mw,createCipheriv:()=>Ew,createConnection:()=>Iw,createDecipheriv:()=>Cw,createHash:()=>ww,createHmac:()=>xw,createPrivateKey:()=>Sw,createReadStream:()=>Qv,createSign:()=>kw,createWriteStream:()=>Jv,deepStrictEqual:()=>mx,default:()=>Xv,deflate:()=>Qw,deflateSync:()=>ix,dirname:()=>uw,errors:()=>xx,exec:()=>bx,execSync:()=>vx,existsSync:()=>ew,extname:()=>dw,finished:()=>bw,format:()=>Rw,freemem:()=>Fw,gunzip:()=>Zw,gunzipSync:()=>rx,gzip:()=>Jw,gzipSync:()=>nx,homedir:()=>Uw,inflate:()=>ex,inflateSync:()=>ox,inspect:()=>Lw,join:()=>cw,lookup:()=>jw,mkdir:()=>tw,ok:()=>dx,performance:()=>ax,pipeline:()=>mw,platform:()=>Pw,promises:()=>Cx,promisify:()=>Dw,randomBytes:()=>Tw,randomUUID:()=>Aw,readFile:()=>rw,readFileSync:()=>Yv,readdir:()=>sw,rejects:()=>hx,request:()=>wx,resolve:()=>pw,resolve4:()=>_w,resolve6:()=>Ww,resolveCname:()=>Xw,resolveMx:()=>Vw,resolveNs:()=>Kw,resolveTxt:()=>Gw,rm:()=>ow,spawn:()=>gx,spawnSync:()=>yx,stat:()=>aw,strictEqual:()=>px,throws:()=>fx,tmpdir:()=>Hw,totalmem:()=>Bw,unlink:()=>iw,writeFile:()=>nw,writeFileSync:()=>Zv});var de,Q,Ce,Xv,Jv,Qv,Yv,Zv,ew,tw,rw,nw,iw,ow,aw,sw,cw,uw,lw,dw,pw,mw,fw,hw,gw,yw,bw,vw,ww,xw,kw,Sw,Tw,Aw,Cw,Ew,Dw,Lw,Rw,Pw,Nw,Mw,Fw,Bw,Uw,Hw,Iw,qw,$w,Ow,zw,jw,_w,Ww,Vw,Gw,Kw,Xw,Jw,Qw,Yw,Zw,ex,tx,rx,nx,ix,ox,ax,sx,cx,ux,lx,dx,px,mx,fx,hx,gx,yx,bx,vx,wx,xx,kx,Sx,Tx,Ax,Cx,od=T(()=>{de=()=>{},Q=()=>Promise.resolve(),Ce=class{constructor(){}},Xv={},Jv=de,Qv=de,Yv=()=>"",Zv=de,ew=()=>!1,tw=Q,rw=Q,nw=Q,iw=Q,ow=Q,aw=Q,sw=Q,cw=(...t)=>t.join("/"),uw=t=>t.split("/").slice(0,-1).join("/"),lw=t=>t.split("/").pop()||"",dw=t=>{let e=t.match(/\.[^.]+$/);return e?e[0]:""},pw=(...t)=>t.join("/"),mw=Q,fw=Ce,hw=Ce,gw=Ce,yw=Ce,bw=Q,vw=class{on(){return this}off(){return this}emit(){return!1}once(){return this}addListener(){return this}removeListener(){return this}},ww=()=>({update:()=>({digest:()=>""})}),xw=()=>({update:()=>({digest:()=>""})}),kw=()=>({update:()=>({}),sign:()=>""}),Sw=()=>({}),Tw=t=>new Uint8Array(t),Aw=()=>crypto.randomUUID(),Cw=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:de}),Ew=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:de}),Dw=t=>t,Lw=t=>JSON.stringify(t),Rw=(...t)=>t.join(" "),Pw=()=>"browser",Nw=()=>"unknown",Mw=()=>[],Fw=()=>0,Bw=()=>0,Uw=()=>"/",Hw=()=>"/tmp",Iw=de,qw=de,$w=Ce,Ow=Ce,zw=Ce,jw=(t,e)=>e(null,"127.0.0.1",4),_w=Q,Ww=Q,Vw=Q,Gw=Q,Kw=Q,Xw=Q,Jw=(t,e)=>e(null,t),Qw=(t,e)=>e(null,t),Yw=(t,e)=>e(null,t),Zw=(t,e)=>e(null,t),ex=(t,e)=>e(null,t),tx=(t,e)=>e(null,t),rx=t=>t,nx=t=>t,ix=t=>t,ox=t=>t,ax=globalThis.performance,sx=class{getStore(){}run(t,e){return e()}enterWith(){}},cx=Ce,ux=()=>({subscribe:de,unsubscribe:de,publish:de,hasSubscribers:!1}),lx={from:t=>new Uint8Array(typeof t=="string"?new TextEncoder().encode(t):t),alloc:t=>new Uint8Array(t),allocUnsafe:t=>new Uint8Array(t),isBuffer:()=>!1},dx=de,px=de,mx=de,fx=de,hx=Q,gx=()=>({on:de,stdout:{on:de},stderr:{on:de},kill:de}),yx=()=>({status:0,stdout:"",stderr:""}),bx=de,vx=()=>"",wx=Q,xx={ConnectTimeoutError:Ce,HeadersTimeoutError:Ce,BodyTimeoutError:Ce},kx=Ce,Sx=Ce,Tx=Ce,Ax=Ce,Cx={readFile:Q,writeFile:Q,access:Q,stat:Q,mkdir:Q,unlink:Q,readdir:Q}});V();function Rs(t){if(t==null){let e=new $("fnOrPromise cannot be null or undefined",void 0,void 0,["Pass a valid function or promise to tryFn.","Check the caller to ensure an undefined value is not passed."]);return e.stack=new Error().stack,[!1,e,void 0]}if(typeof t=="function")try{let e=t();return e==null?[!0,null,e]:typeof e.then=="function"?e.then(r=>[!0,null,r]).catch(r=>{if(r instanceof Error&&Object.isExtensible(r)){let n=Object.getOwnPropertyDescriptor(r,"stack");!n||n.writable&&n.configurable}return[!1,Vi(r,"Function threw an error"),void 0]}):[!0,null,e]}catch(e){return[!1,Vi(e,"Function threw an error"),void 0]}return typeof t.then=="function"?Promise.resolve(t).then(e=>[!0,null,e]).catch(e=>[!1,Vi(e,"Promise rejected"),void 0]):[!0,null,t]}function Vi(t,e){return t instanceof Error?t:new $(`${e}: ${String(t)}`,void 0,void 0,["Inspect the original value being thrown.","Ensure errors are instances of Error or ReckerError.","Add contextual information when throwing custom errors."])}V();pn();hn();function m0(){var t,e;return typeof globalThis<"u"&&!!((e=(t=globalThis.process)==null?void 0:t.versions)!=null&&e.node)}var wr=class{promise;abortController;constructor(e,r){this.promise=e,this.abortController=r}get[Symbol.toStringTag](){return"RequestPromise"}then(e,r){return this.promise.then(e,r)}catch(e){return this.promise.catch(e)}finally(e){return this.promise.finally(e)}cancel(){this.abortController&&this.abortController.abort()}async json(){return(await this.promise).json()}async yaml(e){let n=await(await this.promise).text();return dn(n,e)}async csv(e){let n=await(await this.promise).text();return fn(n,e)}async text(){return(await this.promise).text()}async cleanText(){return(await this.promise).cleanText()}async blob(){return(await this.promise).blob()}async read(){return(await this.promise).read()}async write(e){if(!m0())throw new pe("write() is only supported in Node.js environments.",{streamType:"response",retriable:!1});let n=(await this.promise).read();if(!n)throw new pe("Response has no body to write",{streamType:"response",retriable:!0});let[{createWriteStream:i},{pipeline:o},{Readable:s}]=await Promise.all([Promise.resolve().then(()=>(At(),Fs)),Promise.resolve().then(()=>(yn(),Hs)),Promise.resolve().then(()=>(vn(),qs))]),c=s.fromWeb(n),u=i(e);await o(c,u)}async parse(e){let r=await this.json();return e.parse(r)}async safe(){return Rs(()=>this.json())}async*sse(){yield*(await this.promise).sse()}async*download(){yield*(await this.promise).download()}async*[Symbol.asyncIterator](){yield*await this.promise}};V();var Kt={debug:(t,...e)=>{typeof t=="object"?console.debug(t,...e):console.debug(t,...e)},info:(t,...e)=>{typeof t=="object"?console.info(t,...e):console.info(t,...e)},warn:(t,...e)=>{typeof t=="object"?console.warn(t,...e):console.warn(t,...e)},error:(t,...e)=>{typeof t=="object"?console.error(t,...e):console.error(t,...e)}},$s={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}};function Os(t,e){let r={debug:0,info:1,warn:2,error:3},n=r[e];return{debug:(...i)=>{r.debug>=n&&t.debug(...i)},info:(...i)=>{r.info>=n&&t.info(...i)},warn:(...i)=>{r.warn>=n&&t.warn(...i)},error:(...i)=>{r.error>=n&&t.error(...i)}}}var wn={balanced:{maxConcurrentStreams:100,initialWindowSize:65535,maxHeaderListSize:16384,enablePush:0},performance:{maxConcurrentStreams:128,initialWindowSize:1048576,maxHeaderListSize:32768,enablePush:0},"low-latency":{maxConcurrentStreams:250,initialWindowSize:65535,maxHeaderListSize:16384,enablePush:0},"low-memory":{maxConcurrentStreams:50,initialWindowSize:32768,maxHeaderListSize:8192,enablePush:0}};var Xt=class t{config;systemMessage=null;messages=[];constructor(e={}){this.config={maxPairs:e.maxPairs??12,systemPrompt:e.systemPrompt??""},this.config.systemPrompt&&(this.systemMessage={role:"system",content:this.config.systemPrompt})}setSystemPrompt(e){this.config.systemPrompt=e,e?this.systemMessage={role:"system",content:e}:this.systemMessage=null}getSystemPrompt(){return this.config.systemPrompt}addUserMessage(e){this.messages.push({role:"user",content:e}),this.prune()}addAssistantMessage(e){this.messages.push({role:"assistant",content:e}),this.prune()}addMessage(e){if(e.role==="system"){this.setSystemPrompt(typeof e.content=="string"?e.content:"");return}this.messages.push(e),this.prune()}buildMessages(e){return this.addUserMessage(e),this.getMessages()}recordResponse(e){this.addAssistantMessage(e)}getMessages(){let e=[];return this.systemMessage&&e.push(this.systemMessage),e.push(...this.messages),e}getConversation(){return this.messages}getPairCount(){var r;let e=0;for(let n=0;n<this.messages.length-1;n+=2)this.messages[n].role==="user"&&((r=this.messages[n+1])==null?void 0:r.role)==="assistant"&&e++;return e}clear(){this.messages=[]}reset(){this.messages=[],this.systemMessage=null,this.config.systemPrompt=""}setConfig(e){e.maxPairs!==void 0&&(this.config.maxPairs=e.maxPairs,this.prune()),e.systemPrompt!==void 0&&this.setSystemPrompt(e.systemPrompt)}getConfig(){return{...this.config}}prune(){let e=this.config.maxPairs*2;if(this.messages.length>e){let r=this.messages.length-e,n=Math.ceil(r/2)*2;this.messages=this.messages.slice(n)}}isEmpty(){return this.messages.length===0}getMessageCount(){return this.messages.length}toJSON(){var e;return{config:this.config,systemPrompt:(e=this.systemMessage)==null?void 0:e.content,messages:[...this.messages]}}static fromJSON(e){let r=new t(e.config);if(e.systemPrompt&&r.setSystemPrompt(e.systemPrompt),e.messages)for(let n of e.messages)r.addMessage(n);return r}};var xn=class extends Error{constructor(e){super(e),this.name="AIConfigurationError"}},f0={openai:"/chat/completions",anthropic:"/messages",google:"/models/{model}:generateContent",groq:"/chat/completions",mistral:"/chat/completions",cohere:"/chat",together:"/chat/completions",perplexity:"/chat/completions",deepseek:"/chat/completions",fireworks:"/chat/completions",xai:"/chat/completions",replicate:"/predictions",huggingface:"/models/{model}/v1/chat/completions",ollama:"/api/chat","azure-openai":"/chat/completions","cloudflare-workers-ai":"/ai/run/@cf/meta/llama-2-7b-chat-int8",custom:"/chat/completions"},Jt=class{client;config;memory;constructor(e,r){this.client=e,this.config=r,this.memory=new Xt(r.memory)}get provider(){return this.config.provider}get model(){return this.config.model}async chat(e){let r=this.memory.buildMessages(e),n=await this.makeRequest(r,!1);return this.memory.recordResponse(n.content),n}async chatStream(e){let r=this.memory.buildMessages(e),n=await this.makeStreamRequest(r);return this.wrapStreamWithMemory(n)}async prompt(e){let r=[{role:"user",content:e}];return this.makeRequest(r,!1)}async promptStream(e){let r=[{role:"user",content:e}];return this.makeStreamRequest(r)}clearMemory(){this.memory.clear()}getMemory(){return this.memory.getConversation()}setMemoryConfig(e){this.memory.setConfig(e)}getMemoryConfig(){return this.memory.getConfig()}async makeRequest(e,r){let n=performance.now(),i=this.buildRequestBody(e,r),o=this.getEndpoint(),c=await(await this.client.post(o,{json:i,headers:this.getExtraHeaders()})).json();return this.parseResponse(c,n)}async makeStreamRequest(e){let r=this.buildRequestBody(e,!0),n=this.getEndpoint(),i=await this.client.post(n,{json:r,headers:this.getExtraHeaders()});return this.parseSSEStream(i.raw)}buildRequestBody(e,r){let n=this.config.provider;return n==="anthropic"?this.buildAnthropicBody(e,r):n==="google"?this.buildGoogleBody(e,r):n==="cohere"?this.buildCohereBody(e,r):{model:this.config.model,messages:e.map(i=>({role:i.role,content:i.content})),stream:r,...r&&{stream_options:{include_usage:!0}}}}buildAnthropicBody(e,r){let n=e.filter(o=>o.role==="system"),i=e.filter(o=>o.role!=="system");return{model:this.config.model,max_tokens:4096,system:n.map(o=>o.content).join(`
|
|
55
|
+
`),n=[],i=5,o=0,s=0,c=!1,u,l=0,d,p=!1,m,f,h,g=0,y=0;for(let C of r){let b=C.trim();if(b)if(b.startsWith("#EXT-X-TARGETDURATION:"))i=parseInt(b.split(":")[1],10);else if(b.startsWith("#EXT-X-MEDIA-SEQUENCE:"))o=parseInt(b.split(":")[1],10);else if(b.startsWith("#EXT-X-DISCONTINUITY-SEQUENCE:"))s=parseInt(b.split(":")[1],10);else if(b.startsWith("#EXT-X-PLAYLIST-TYPE:"))u=b.split(":")[1];else if(b==="#EXT-X-ENDLIST")c=!0;else if(b==="#EXT-X-DISCONTINUITY")p=!0;else if(b.startsWith("#EXT-X-PROGRAM-DATE-TIME:"))m=new Date(b.split(":").slice(1).join(":"));else if(b.startsWith("#EXT-X-KEY:")){let w=Va(b,"#EXT-X-KEY:");w.METHOD==="NONE"?d=void 0:d={method:w.METHOD,uri:w.URI?Li(w.URI,e):void 0,iv:w.IV}}else if(b.startsWith("#EXT-X-BYTERANGE:")){let w=b.substring(17);f=Zl(w,g),g=f.offset+f.length}else if(b.startsWith("#EXT-X-MAP:")){let w=Va(b,"#EXT-X-MAP:");h={url:Li(w.URI,e),byteRange:w.BYTERANGE?Zl(w.BYTERANGE):void 0}}else if(b.startsWith("#EXTINF:")){let w=b.substring(8).split(",")[0];l=parseFloat(w)}else b.startsWith("#")||(n.push({url:Li(b,e),duration:l,sequence:o+y,key:d,discontinuity:p,programDateTime:m,byteRange:f,initSegment:h}),f&&(g=f.offset+f.length),y++,p=!1,m=void 0,f=void 0)}return{segments:n,targetDuration:i,mediaSequence:o,endList:c,playlistType:u,discontinuitySequence:s}}function ed(t){return t.includes("#EXT-X-STREAM-INF")}function td(t,e){if(!t.length)throw new Error("No variants found in master playlist");let r=[...t].sort((n,i)=>(n.bandwidth??0)-(i.bandwidth??0));if(e==="lowest")return r[0];if(e==="highest"||e===void 0)return r[r.length-1];if(e.resolution){let n=t.find(i=>i.resolution===e.resolution);if(n)return n}if(e.bandwidth){let n=e.bandwidth;return r.reduce((i,o)=>{let s=Math.abs((i.bandwidth??0)-n);return Math.abs((o.bandwidth??0)-n)<s?o:i})}return r[r.length-1]}function Kv(t,e,r={}){return new Ri(t,e,r)}var Ri,nd=A(()=>{"use strict";At();xi();wi();Ma();mo();Ri=class{client;manifestUrl;options;seenSequences=new Set;downloadedBytes=0;downloadedSegments=0;startTime=0;aborted=!1;abortController=new AbortController;keyCache=new Map;initSegmentCache=new Map;initSegmentPrepended=new Set;defaultRetryStatusCodes=[403,404,408,429,500,502,503,504];consecutiveErrors=0;constructor(e,r,n={}){if(this.client=e,this.manifestUrl=r,this.options={mode:"merge",format:"ts",concurrency:5,...n},this.options.format!=="ts")throw new Error(`Format '${this.options.format}' requires ffmpeg. Use format: 'ts' or install ffmpeg.`)}get[Symbol.toStringTag](){return"HlsPromise"}then(e,r){return Promise.reject(new Error("HlsPromise requires .download(), .stream(), or .pipe() to execute")).then(e,r)}catch(e){return this.then(null,e)}finally(e){return this.then(()=>{e==null||e()},()=>{e==null||e()})}cancel(){this.aborted=!0,this.abortController.abort()}async download(e){this.startTime=Date.now();let r=await this.resolveMediaPlaylist();if(this.options.mode==="chunks")await this.downloadChunks(r,e);else{if(typeof e!="string")throw new Error("Merge mode requires a string path, not a function");await this.downloadMerged(r,e)}}async*stream(){this.startTime=Date.now();let e=await this.resolveMediaPlaylist(),r=this.isLiveMode(),n=this.getMaxDuration(),i=this.options.concurrency??5,o=2e3;for(;!this.aborted;){if(this.consecutiveErrors>=this.getMaxConsecutiveErrors())throw new Error(`Too many consecutive errors (${this.consecutiveErrors}). Limit: ${this.getMaxConsecutiveErrors()}. Stopping download.`);let s;try{s=await this.fetchMediaPlaylist(e)}catch(u){if(r&&this.consecutiveErrors<this.getMaxConsecutiveErrors()){this.options.onError&&this.options.onError(new Error(`Playlist fetch failed: ${u.message}. Retrying...`)),await this.sleep(o);continue}throw u}o=Math.max(1e3,s.targetDuration*1e3/2);let c=s.segments.filter(u=>!this.seenSequences.has(u.sequence));for(let u of c)this.seenSequences.add(u.sequence);if(c.length>0&&(yield*this.downloadSegmentsConcurrent(c,i,s,r,n)),!r||s.endList||n&&Date.now()-this.startTime>n)break;await this.sleep(o)}}async*downloadSegmentsConcurrent(e,r,n,i,o){let s=new Map,c=new Map,u=0,l=0,d=p=>{let m=e[p],f=this.downloadSegment(m).then(h=>({index:p,data:h?{sequence:m.sequence,duration:m.duration,data:h,url:m.url,downloadedAt:new Date}:null}));c.set(p,f)};for(;l<e.length&&c.size<r;)d(l++);for(;u<e.length&&!(this.aborted||o&&Date.now()-this.startTime>o);){if(this.consecutiveErrors>=this.getMaxConsecutiveErrors())throw new Error(`Too many consecutive errors (${this.consecutiveErrors}). Limit: ${this.getMaxConsecutiveErrors()}. Stopping download.`);if(c.size>0){let p=await Promise.race(c.values());c.delete(p.index),s.set(p.index,p.data),l<e.length&&c.size<r&&d(l++)}for(;s.has(u);){let p=s.get(u);s.delete(u),u++,p&&(this.downloadedSegments++,this.downloadedBytes+=p.data.byteLength,this.emitProgress(n,i),this.options.onSegment&&await this.options.onSegment(p),yield p)}}}async pipe(e){try{for await(let r of this.stream())e.write(r.data)||await new Promise(i=>e.once("drain",i))}finally{"end"in e&&typeof e.end=="function"&&e.end()}}async info(){let e=await Di(this.client,this.manifestUrl,{signal:this.abortController.signal,headers:this.options.headers,useCurl:this.options.useCurl});if(ed(e)){let i=Yl(e,this.manifestUrl),o=td(i.variants,this.options.quality),s=await Di(this.client,o.url,{signal:this.abortController.signal,headers:this.options.headers,useCurl:this.options.useCurl}),c=Wa(s,o.url),u=c.endList?c.segments.reduce((l,d)=>l+d.duration,0):void 0;return{master:i,playlist:c,selectedVariant:o,isLive:!c.endList,totalDuration:u}}let r=Wa(e,this.manifestUrl),n=r.endList?r.segments.reduce((i,o)=>i+o.duration,0):void 0;return{playlist:r,isLive:!r.endList,totalDuration:n}}async resolveMediaPlaylist(){let e={...this.options.headers},r=await Di(this.client,this.manifestUrl,{signal:this.abortController.signal,headers:e,useCurl:this.options.useCurl});if(!ed(r))return this.manifestUrl;let n=Yl(r,this.manifestUrl);return td(n.variants,this.options.quality).url}async fetchMediaPlaylist(e){let r=await this.withRetry(async()=>Di(this.client,e,{signal:this.abortController.signal,headers:this.options.headers,useCurl:this.options.useCurl}),"Fetch playlist",!1);if(!r)throw new Error("Failed to fetch media playlist");return Wa(r,e)}async getKey(e){if(this.keyCache.has(e))return this.keyCache.get(e);let i=await(await(await this.client.get(e,{headers:this.options.headers,signal:this.abortController.signal,useCurl:this.options.useCurl})).blob()).arrayBuffer(),o=Buffer.from(i);if(o.length!==16)throw new Error(`Invalid AES-128 key length: ${o.length} bytes (expected 16)`);return this.keyCache.set(e,o),o}generateIV(e){let r=Buffer.alloc(16);return r.writeBigUInt64BE(BigInt(e),8),r}parseIV(e){let r=e.startsWith("0x")||e.startsWith("0X")?e.slice(2):e;return Buffer.from(r.padStart(32,"0"),"hex")}decryptSegment(e,r,n){let i=wl("aes-128-cbc",r,n);return i.setAutoPadding(!0),Buffer.concat([i.update(e),i.final()])}async getInitSegment(e){var u,l;let r=`${e.url}:${((u=e.byteRange)==null?void 0:u.offset)??0}:${((l=e.byteRange)==null?void 0:l.length)??0}`;if(this.initSegmentCache.has(r))return this.initSegmentCache.get(r);let n={...this.options.headers};if(e.byteRange){let{offset:d,length:p}=e.byteRange;n.Range=`bytes=${d}-${d+p-1}`}let s=await(await(await this.client.get(e.url,{headers:n,signal:this.abortController.signal,useCurl:this.options.useCurl})).blob()).arrayBuffer(),c=Buffer.from(s);return this.initSegmentCache.set(r,c),c}async downloadSegment(e){return await this.withRetry(async()=>{var u;let n={...this.options.headers};if(e.byteRange){let{offset:l,length:d}=e.byteRange;n.Range=`bytes=${l}-${l+d-1}`}let s=await(await(await this.client.get(e.url,{headers:n,signal:this.abortController.signal,useCurl:this.options.useCurl})).blob()).arrayBuffer(),c=Buffer.from(s);if(e.key&&e.key.method==="AES-128"){if(!e.key.uri)throw new Error("AES-128 encryption specified but no key URI provided");let l=await this.getKey(e.key.uri),d=e.key.iv?this.parseIV(e.key.iv):this.generateIV(e.sequence);c=this.decryptSegment(c,l,d)}else if(e.key&&e.key.method==="SAMPLE-AES")throw new Error("SAMPLE-AES encryption is not supported. This typically requires DRM handling.");if(e.initSegment){let l=`${e.initSegment.url}:${((u=e.initSegment.byteRange)==null?void 0:u.offset)??0}`;if(!this.initSegmentPrepended.has(l)){let d=await this.getInitSegment(e.initSegment);c=Buffer.concat([d,c]),this.initSegmentPrepended.add(l)}}return new Uint8Array(c)},`Segment ${e.sequence}`,!0)}async downloadMerged(e,r){await $t(vi(r),{recursive:!0});let n=vr(r,{flags:"a"});try{await this.pipe(n)}catch(i){throw n.destroy(),i}}async downloadChunks(e,r){let n=typeof r=="string"?o=>qt(r,`segment-${o.sequence}.ts`):r,i=typeof r=="string"?r:vi(n({sequence:0,duration:0,url:""}));await $t(i,{recursive:!0});for await(let o of this.stream()){let s=n({sequence:o.sequence,duration:o.duration,url:o.url});await $t(vi(s),{recursive:!0});let c=vr(s);await new Promise((u,l)=>{c.write(o.data,d=>{d?l(d):(c.end(),u())})})}}isLiveMode(){return this.options.live===!0||typeof this.options.live=="object"}getMaxDuration(){if(typeof this.options.live=="object"&&this.options.live.duration)return this.options.live.duration}emitProgress(e,r){this.options.onProgress&&this.options.onProgress({downloadedSegments:this.downloadedSegments,totalSegments:r?void 0:e.segments.length,downloadedBytes:this.downloadedBytes,currentSegment:Math.max(...this.seenSequences),isLive:r,elapsed:Date.now()-this.startTime})}sleep(e){return new Promise(r=>{let n=setTimeout(r,e);this.abortController.signal.addEventListener("abort",()=>{clearTimeout(n),r()},{once:!0})})}getRetryConfig(){let e=this.isLiveMode(),r=this.options.retry||{};return{maxAttempts:r.maxAttempts??(e?5:3),delay:r.delay??1e3,maxDelay:r.maxDelay??3e4,backoff:r.backoff??2,jitter:r.jitter??!0,statusCodes:r.statusCodes??this.defaultRetryStatusCodes}}getMaxConsecutiveErrors(){let e=this.isLiveMode();return this.options.maxConsecutiveErrors??(e?10:3)}calculateRetryDelay(e,r){let n=r.delay*Math.pow(r.backoff,e);if(n=Math.min(n,r.maxDelay),r.jitter){let i=n*.25;n=n-i+Math.random()*i*2}return Math.round(n)}isRetryableError(e,r){var i;if(e.code==="ECONNRESET"||e.code==="ETIMEDOUT"||e.code==="ENOTFOUND")return!0;let n=e.status||e.statusCode||((i=e.response)==null?void 0:i.status);return!!(n&&r.statusCodes.includes(n))}async withRetry(e,r,n=!1){let i=this.getRetryConfig(),o=this.isLiveMode(),s=null;for(let c=0;c<=i.maxAttempts;c++){if(this.aborted)throw new Error("Aborted");try{let u=await e();return this.consecutiveErrors=0,u}catch(u){if(s=u,!this.isRetryableError(u,i)){if(this.options.onError&&this.options.onError(u),n&&o)return this.consecutiveErrors++,null;throw u}if(c<i.maxAttempts){let l=this.calculateRetryDelay(c,i);if(this.options.onError){let d=new Error(`${r}: ${u.message}. Retrying in ${l}ms (attempt ${c+1}/${i.maxAttempts})`);d.cause=u,d.isRetry=!0,this.options.onError(d)}await this.sleep(l)}}}if(this.consecutiveErrors++,this.options.onError&&s&&this.options.onError(s),n&&o)return null;throw s||new Error(`${r}: All retry attempts failed`)}}});var id={};Ee(id,{Agent:()=>Tx,AsyncLocalStorage:()=>sx,AsyncResource:()=>cx,Buffer:()=>lx,Client:()=>Sx,EventEmitter:()=>vw,PassThrough:()=>yw,ProxyAgent:()=>kx,Readable:()=>fw,Server:()=>Ow,Socket:()=>$w,TLSSocket:()=>zw,Transform:()=>gw,WebSocket:()=>Ax,Writable:()=>hw,arch:()=>Nw,basename:()=>lw,brotliCompress:()=>Yw,brotliDecompress:()=>tx,channel:()=>ux,connect:()=>qw,cpus:()=>Mw,createCipheriv:()=>Ew,createConnection:()=>Hw,createDecipheriv:()=>Cw,createHash:()=>ww,createHmac:()=>xw,createPrivateKey:()=>Tw,createReadStream:()=>Qv,createSign:()=>kw,createWriteStream:()=>Jv,deepStrictEqual:()=>mx,default:()=>Xv,deflate:()=>Qw,deflateSync:()=>ix,dirname:()=>uw,errors:()=>xx,exec:()=>bx,execSync:()=>vx,existsSync:()=>ew,extname:()=>dw,finished:()=>bw,format:()=>Rw,freemem:()=>Fw,gunzip:()=>Zw,gunzipSync:()=>rx,gzip:()=>Jw,gzipSync:()=>nx,homedir:()=>Uw,inflate:()=>ex,inflateSync:()=>ox,inspect:()=>Lw,join:()=>cw,lookup:()=>jw,mkdir:()=>tw,ok:()=>dx,performance:()=>ax,pipeline:()=>mw,platform:()=>Pw,promises:()=>Cx,promisify:()=>Dw,randomBytes:()=>Sw,randomUUID:()=>Aw,readFile:()=>rw,readFileSync:()=>Yv,readdir:()=>sw,rejects:()=>hx,request:()=>wx,resolve:()=>pw,resolve4:()=>_w,resolve6:()=>Ww,resolveCname:()=>Xw,resolveMx:()=>Vw,resolveNs:()=>Kw,resolveTxt:()=>Gw,rm:()=>ow,spawn:()=>gx,spawnSync:()=>yx,stat:()=>aw,strictEqual:()=>px,throws:()=>fx,tmpdir:()=>Iw,totalmem:()=>Bw,unlink:()=>iw,writeFile:()=>nw,writeFileSync:()=>Zv});var de,Q,Ce,Xv,Jv,Qv,Yv,Zv,ew,tw,rw,nw,iw,ow,aw,sw,cw,uw,lw,dw,pw,mw,fw,hw,gw,yw,bw,vw,ww,xw,kw,Tw,Sw,Aw,Cw,Ew,Dw,Lw,Rw,Pw,Nw,Mw,Fw,Bw,Uw,Iw,Hw,qw,$w,Ow,zw,jw,_w,Ww,Vw,Gw,Kw,Xw,Jw,Qw,Yw,Zw,ex,tx,rx,nx,ix,ox,ax,sx,cx,ux,lx,dx,px,mx,fx,hx,gx,yx,bx,vx,wx,xx,kx,Tx,Sx,Ax,Cx,od=A(()=>{de=()=>{},Q=()=>Promise.resolve(),Ce=class{constructor(){}},Xv={},Jv=de,Qv=de,Yv=()=>"",Zv=de,ew=()=>!1,tw=Q,rw=Q,nw=Q,iw=Q,ow=Q,aw=Q,sw=Q,cw=(...t)=>t.join("/"),uw=t=>t.split("/").slice(0,-1).join("/"),lw=t=>t.split("/").pop()||"",dw=t=>{let e=t.match(/\.[^.]+$/);return e?e[0]:""},pw=(...t)=>t.join("/"),mw=Q,fw=Ce,hw=Ce,gw=Ce,yw=Ce,bw=Q,vw=class{on(){return this}off(){return this}emit(){return!1}once(){return this}addListener(){return this}removeListener(){return this}},ww=()=>({update:()=>({digest:()=>""})}),xw=()=>({update:()=>({digest:()=>""})}),kw=()=>({update:()=>({}),sign:()=>""}),Tw=()=>({}),Sw=t=>new Uint8Array(t),Aw=()=>crypto.randomUUID(),Cw=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:de}),Ew=()=>({update:t=>t,final:()=>new Uint8Array(0),setAutoPadding:de}),Dw=t=>t,Lw=t=>JSON.stringify(t),Rw=(...t)=>t.join(" "),Pw=()=>"browser",Nw=()=>"unknown",Mw=()=>[],Fw=()=>0,Bw=()=>0,Uw=()=>"/",Iw=()=>"/tmp",Hw=de,qw=de,$w=Ce,Ow=Ce,zw=Ce,jw=(t,e)=>e(null,"127.0.0.1",4),_w=Q,Ww=Q,Vw=Q,Gw=Q,Kw=Q,Xw=Q,Jw=(t,e)=>e(null,t),Qw=(t,e)=>e(null,t),Yw=(t,e)=>e(null,t),Zw=(t,e)=>e(null,t),ex=(t,e)=>e(null,t),tx=(t,e)=>e(null,t),rx=t=>t,nx=t=>t,ix=t=>t,ox=t=>t,ax=globalThis.performance,sx=class{getStore(){}run(t,e){return e()}enterWith(){}},cx=Ce,ux=()=>({subscribe:de,unsubscribe:de,publish:de,hasSubscribers:!1}),lx={from:t=>new Uint8Array(typeof t=="string"?new TextEncoder().encode(t):t),alloc:t=>new Uint8Array(t),allocUnsafe:t=>new Uint8Array(t),isBuffer:()=>!1},dx=de,px=de,mx=de,fx=de,hx=Q,gx=()=>({on:de,stdout:{on:de},stderr:{on:de},kill:de}),yx=()=>({status:0,stdout:"",stderr:""}),bx=de,vx=()=>"",wx=Q,xx={ConnectTimeoutError:Ce,HeadersTimeoutError:Ce,BodyTimeoutError:Ce},kx=Ce,Tx=Ce,Sx=Ce,Ax=Ce,Cx={readFile:Q,writeFile:Q,access:Q,stat:Q,mkdir:Q,unlink:Q,readdir:Q}});V();function Rs(t){if(t==null){let e=new $("fnOrPromise cannot be null or undefined",void 0,void 0,["Pass a valid function or promise to tryFn.","Check the caller to ensure an undefined value is not passed."]);return e.stack=new Error().stack,[!1,e,void 0]}if(typeof t=="function")try{let e=t();return e==null?[!0,null,e]:typeof e.then=="function"?e.then(r=>[!0,null,r]).catch(r=>{if(r instanceof Error&&Object.isExtensible(r)){let n=Object.getOwnPropertyDescriptor(r,"stack");!n||n.writable&&n.configurable}return[!1,Vi(r,"Function threw an error"),void 0]}):[!0,null,e]}catch(e){return[!1,Vi(e,"Function threw an error"),void 0]}return typeof t.then=="function"?Promise.resolve(t).then(e=>[!0,null,e]).catch(e=>[!1,Vi(e,"Promise rejected"),void 0]):[!0,null,t]}function Vi(t,e){return t instanceof Error?t:new $(`${e}: ${String(t)}`,void 0,void 0,["Inspect the original value being thrown.","Ensure errors are instances of Error or ReckerError.","Add contextual information when throwing custom errors."])}V();pn();hn();function m0(){var t,e;return typeof globalThis<"u"&&!!((e=(t=globalThis.process)==null?void 0:t.versions)!=null&&e.node)}var wr=class{promise;abortController;constructor(e,r){this.promise=e,this.abortController=r}get[Symbol.toStringTag](){return"RequestPromise"}then(e,r){return this.promise.then(e,r)}catch(e){return this.promise.catch(e)}finally(e){return this.promise.finally(e)}cancel(){this.abortController&&this.abortController.abort()}async json(){return(await this.promise).json()}async yaml(e){let n=await(await this.promise).text();return dn(n,e)}async csv(e){let n=await(await this.promise).text();return fn(n,e)}async text(){return(await this.promise).text()}async cleanText(){return(await this.promise).cleanText()}async blob(){return(await this.promise).blob()}async read(){return(await this.promise).read()}async write(e){if(!m0())throw new pe("write() is only supported in Node.js environments.",{streamType:"response",retriable:!1});let n=(await this.promise).read();if(!n)throw new pe("Response has no body to write",{streamType:"response",retriable:!0});let[{createWriteStream:i},{pipeline:o},{Readable:s}]=await Promise.all([Promise.resolve().then(()=>(At(),Fs)),Promise.resolve().then(()=>(yn(),Is)),Promise.resolve().then(()=>(vn(),qs))]),c=s.fromWeb(n),u=i(e);await o(c,u)}async parse(e){let r=await this.json();return e.parse(r)}async safe(){return Rs(()=>this.json())}async*sse(){yield*(await this.promise).sse()}async*download(){yield*(await this.promise).download()}async*[Symbol.asyncIterator](){yield*await this.promise}};V();var Kt={debug:(t,...e)=>{typeof t=="object"?console.debug(t,...e):console.debug(t,...e)},info:(t,...e)=>{typeof t=="object"?console.info(t,...e):console.info(t,...e)},warn:(t,...e)=>{typeof t=="object"?console.warn(t,...e):console.warn(t,...e)},error:(t,...e)=>{typeof t=="object"?console.error(t,...e):console.error(t,...e)}},$s={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}};function Os(t,e){let r={debug:0,info:1,warn:2,error:3},n=r[e];return{debug:(...i)=>{r.debug>=n&&t.debug(...i)},info:(...i)=>{r.info>=n&&t.info(...i)},warn:(...i)=>{r.warn>=n&&t.warn(...i)},error:(...i)=>{r.error>=n&&t.error(...i)}}}var wn={balanced:{maxConcurrentStreams:100,initialWindowSize:65535,maxHeaderListSize:16384,enablePush:0},performance:{maxConcurrentStreams:128,initialWindowSize:1048576,maxHeaderListSize:32768,enablePush:0},"low-latency":{maxConcurrentStreams:250,initialWindowSize:65535,maxHeaderListSize:16384,enablePush:0},"low-memory":{maxConcurrentStreams:50,initialWindowSize:32768,maxHeaderListSize:8192,enablePush:0}};var Xt=class t{config;systemMessage=null;messages=[];constructor(e={}){this.config={maxPairs:e.maxPairs??12,systemPrompt:e.systemPrompt??""},this.config.systemPrompt&&(this.systemMessage={role:"system",content:this.config.systemPrompt})}setSystemPrompt(e){this.config.systemPrompt=e,e?this.systemMessage={role:"system",content:e}:this.systemMessage=null}getSystemPrompt(){return this.config.systemPrompt}addUserMessage(e){this.messages.push({role:"user",content:e}),this.prune()}addAssistantMessage(e){this.messages.push({role:"assistant",content:e}),this.prune()}addMessage(e){if(e.role==="system"){this.setSystemPrompt(typeof e.content=="string"?e.content:"");return}this.messages.push(e),this.prune()}buildMessages(e){return this.addUserMessage(e),this.getMessages()}recordResponse(e){this.addAssistantMessage(e)}getMessages(){let e=[];return this.systemMessage&&e.push(this.systemMessage),e.push(...this.messages),e}getConversation(){return this.messages}getPairCount(){var r;let e=0;for(let n=0;n<this.messages.length-1;n+=2)this.messages[n].role==="user"&&((r=this.messages[n+1])==null?void 0:r.role)==="assistant"&&e++;return e}clear(){this.messages=[]}reset(){this.messages=[],this.systemMessage=null,this.config.systemPrompt=""}setConfig(e){e.maxPairs!==void 0&&(this.config.maxPairs=e.maxPairs,this.prune()),e.systemPrompt!==void 0&&this.setSystemPrompt(e.systemPrompt)}getConfig(){return{...this.config}}prune(){let e=this.config.maxPairs*2;if(this.messages.length>e){let r=this.messages.length-e,n=Math.ceil(r/2)*2;this.messages=this.messages.slice(n)}}isEmpty(){return this.messages.length===0}getMessageCount(){return this.messages.length}toJSON(){var e;return{config:this.config,systemPrompt:(e=this.systemMessage)==null?void 0:e.content,messages:[...this.messages]}}static fromJSON(e){let r=new t(e.config);if(e.systemPrompt&&r.setSystemPrompt(e.systemPrompt),e.messages)for(let n of e.messages)r.addMessage(n);return r}};var xn=class extends Error{constructor(e){super(e),this.name="AIConfigurationError"}},f0={openai:"/chat/completions",anthropic:"/messages",google:"/models/{model}:generateContent",groq:"/chat/completions",mistral:"/chat/completions",cohere:"/chat",together:"/chat/completions",perplexity:"/chat/completions",deepseek:"/chat/completions",fireworks:"/chat/completions",xai:"/chat/completions",replicate:"/predictions",huggingface:"/models/{model}/v1/chat/completions",ollama:"/api/chat","azure-openai":"/chat/completions","cloudflare-workers-ai":"/ai/run/@cf/meta/llama-2-7b-chat-int8",custom:"/chat/completions"},Jt=class{client;config;memory;constructor(e,r){this.client=e,this.config=r,this.memory=new Xt(r.memory)}get provider(){return this.config.provider}get model(){return this.config.model}async chat(e){let r=this.memory.buildMessages(e),n=await this.makeRequest(r,!1);return this.memory.recordResponse(n.content),n}async chatStream(e){let r=this.memory.buildMessages(e),n=await this.makeStreamRequest(r);return this.wrapStreamWithMemory(n)}async prompt(e){let r=[{role:"user",content:e}];return this.makeRequest(r,!1)}async promptStream(e){let r=[{role:"user",content:e}];return this.makeStreamRequest(r)}clearMemory(){this.memory.clear()}getMemory(){return this.memory.getConversation()}setMemoryConfig(e){this.memory.setConfig(e)}getMemoryConfig(){return this.memory.getConfig()}async makeRequest(e,r){let n=performance.now(),i=this.buildRequestBody(e,r),o=this.getEndpoint(),c=await(await this.client.post(o,{json:i,headers:this.getExtraHeaders()})).json();return this.parseResponse(c,n)}async makeStreamRequest(e){let r=this.buildRequestBody(e,!0),n=this.getEndpoint(),i=await this.client.post(n,{json:r,headers:this.getExtraHeaders()});return this.parseSSEStream(i.raw)}buildRequestBody(e,r){let n=this.config.provider;return n==="anthropic"?this.buildAnthropicBody(e,r):n==="google"?this.buildGoogleBody(e,r):n==="cohere"?this.buildCohereBody(e,r):{model:this.config.model,messages:e.map(i=>({role:i.role,content:i.content})),stream:r,...r&&{stream_options:{include_usage:!0}}}}buildAnthropicBody(e,r){let n=e.filter(o=>o.role==="system"),i=e.filter(o=>o.role!=="system");return{model:this.config.model,max_tokens:4096,system:n.map(o=>o.content).join(`
|
|
56
56
|
`)||void 0,messages:i.map(o=>({role:o.role==="assistant"?"assistant":"user",content:o.content})),stream:r}}buildGoogleBody(e,r){let n=e.filter(o=>o.role!=="system").map(o=>({role:o.role==="assistant"?"model":"user",parts:[{text:o.content}]})),i=e.filter(o=>o.role==="system").map(o=>o.content).join(`
|
|
57
57
|
`);return{contents:n,...i&&{systemInstruction:{parts:[{text:i}]}},generationConfig:{maxOutputTokens:4096}}}buildCohereBody(e,r){let n=e.slice(0,-1).map(o=>({role:o.role==="assistant"?"CHATBOT":"USER",message:o.content})),i=e[e.length-1];return{model:this.config.model,message:typeof i.content=="string"?i.content:"",chat_history:n.length>0?n:void 0,stream:r}}getEndpoint(){let e=f0[this.config.provider]||"/chat/completions";return e=e.replace("{model}",this.config.model),e}getExtraHeaders(){let e={};return this.config.headers&&Object.assign(e,this.config.headers),e}parseResponse(e,r){let n=this.config.provider,i=performance.now();return n==="anthropic"?this.parseAnthropicResponse(e,r,i):n==="google"?this.parseGoogleResponse(e,r,i):n==="cohere"?this.parseCohereResponse(e,r,i):this.parseOpenAIResponse(e,r,i)}parseOpenAIResponse(e,r,n){var c,u,l,d,p,m,f,h;let i=e,o=((l=(u=(c=i.choices)==null?void 0:c[0])==null?void 0:u.message)==null?void 0:l.content)||"",s={inputTokens:((d=i.usage)==null?void 0:d.prompt_tokens)||0,outputTokens:((p=i.usage)==null?void 0:p.completion_tokens)||0,totalTokens:((m=i.usage)==null?void 0:m.total_tokens)||0};return{content:o,usage:s,latency:this.buildLatency(r,n,s.outputTokens),model:i.model||this.config.model,provider:this.config.provider,cached:!1,finishReason:(h=(f=i.choices)==null?void 0:f[0])==null?void 0:h.finish_reason,raw:e}}parseAnthropicResponse(e,r,n){var u,l,d,p,m;let i=e,o=(u=i.content)==null?void 0:u.find(f=>f.type==="text"),s=(o==null?void 0:o.text)||"",c={inputTokens:((l=i.usage)==null?void 0:l.input_tokens)||0,outputTokens:((d=i.usage)==null?void 0:d.output_tokens)||0,totalTokens:(((p=i.usage)==null?void 0:p.input_tokens)||0)+(((m=i.usage)==null?void 0:m.output_tokens)||0)};return{content:s,usage:c,latency:this.buildLatency(r,n,c.outputTokens),model:i.model||this.config.model,provider:"anthropic",cached:!1,finishReason:i.stop_reason==="end_turn"?"stop":void 0,raw:e}}parseGoogleResponse(e,r,n){var c,u,l,d,p,m,f,h,g,y;let i=e,o=((p=(d=(l=(u=(c=i.candidates)==null?void 0:c[0])==null?void 0:u.content)==null?void 0:l.parts)==null?void 0:d[0])==null?void 0:p.text)||"",s={inputTokens:((m=i.usageMetadata)==null?void 0:m.promptTokenCount)||0,outputTokens:((f=i.usageMetadata)==null?void 0:f.candidatesTokenCount)||0,totalTokens:((h=i.usageMetadata)==null?void 0:h.totalTokenCount)||0};return{content:o,usage:s,latency:this.buildLatency(r,n,s.outputTokens),model:this.config.model,provider:"google",cached:!1,finishReason:((y=(g=i.candidates)==null?void 0:g[0])==null?void 0:y.finishReason)==="STOP"?"stop":void 0,raw:e}}parseCohereResponse(e,r,n){var c,u,l,d,p,m,f,h;let i=e,o=i.text||"",s={inputTokens:((u=(c=i.meta)==null?void 0:c.tokens)==null?void 0:u.input_tokens)||0,outputTokens:((d=(l=i.meta)==null?void 0:l.tokens)==null?void 0:d.output_tokens)||0,totalTokens:(((m=(p=i.meta)==null?void 0:p.tokens)==null?void 0:m.input_tokens)||0)+(((h=(f=i.meta)==null?void 0:f.tokens)==null?void 0:h.output_tokens)||0)};return{content:o,usage:s,latency:this.buildLatency(r,n,s.outputTokens),model:this.config.model,provider:"cohere",cached:!1,finishReason:i.finish_reason==="COMPLETE"?"stop":void 0,raw:e}}buildLatency(e,r,n){let i=r-e;return{ttft:i,tps:n>0?n/(i/1e3):0,total:i}}async*parseSSEStream(e){var c;let r=(c=e.body)==null?void 0:c.getReader();if(!r)throw new Error("No response body");let n=new TextDecoder,i="",o,s=performance.now();try{for(;;){let{done:u,value:l}=await r.read();if(u)break;i+=n.decode(l,{stream:!0});let d=i.split(`
|
|
58
|
-
`);i=d.pop()||"";for(let p of d){let m=p.trim();if(!(!m||m==="data: [DONE]")&&m.startsWith("data: ")){let f=m.slice(6);try{let h=this.parseStreamChunk(f);h&&(!o&&h.type==="text"&&(o=performance.now()),yield h)}catch{}}}}}finally{r.releaseLock()}}parseStreamChunk(e){let r=JSON.parse(e);return this.config.provider==="anthropic"?this.parseAnthropicStreamChunk(r):this.parseOpenAIStreamChunk(r)}parseOpenAIStreamChunk(e){var n,i;let r=(n=e.choices)==null?void 0:n[0];return r?(i=r.delta)!=null&&i.content?{type:"text",content:r.delta.content}:r.finish_reason?{type:"done",finishReason:r.finish_reason}:null:e.usage?{type:"usage",usage:{inputTokens:e.usage.prompt_tokens||0,outputTokens:e.usage.completion_tokens||0,totalTokens:e.usage.total_tokens||0}}:null}parseAnthropicStreamChunk(e){var r,n;return e.type==="content_block_delta"&&((r=e.delta)==null?void 0:r.type)==="text_delta"?{type:"text",content:e.delta.text||""}:e.type==="message_stop"?{type:"done",finishReason:"stop"}:e.type==="message_delta"&&((n=e.message)!=null&&n.usage)?{type:"usage",usage:{inputTokens:e.message.usage.input_tokens||0,outputTokens:e.message.usage.output_tokens||0,totalTokens:(e.message.usage.input_tokens||0)+(e.message.usage.output_tokens||0)}}:null}async*wrapStreamWithMemory(e){let r="";for await(let n of e)n.type==="text"&&(r+=n.content),yield n;r&&this.memory.recordResponse(r)}};var zs=0;function js(t={}){zs+=1;let e=`${Date.now().toString(36)}-${zs.toString(36)}-${Math.random().toString(16).slice(2,8)}`;return{requestId:e,correlationId:t.correlationId||e,tenant:t.tenant,policyTags:t.policyTags??[],policySource:t.policySource,createdAt:Date.now(),traceId:t.traceId}}function Qt(t,e){return t&&(t._runtime=e,t)}function st(t){return t._runtime}function h0(t){if(t!==void 0)return typeof t=="number"?{request:t}:t}var Ct=class t{url;method;headers;body;signal;throwHttpErrors;timeout;onUploadProgress;onDownloadProgress;maxResponseSize;beforeRedirect;maxRedirects;followRedirects;http2;useCurl;correlationId;tenant;policyTags;policySource;traceId;constructor(e,r={}){this.url=e,this.method=r.method||"GET",this.headers=r.headers instanceof Headers?r.headers:new Headers(r.headers),this.body=r.body||null,this.signal=r.signal,this.throwHttpErrors=r.throwHttpErrors!==void 0?r.throwHttpErrors:!0,this.timeout=h0(r.timeout),this.onUploadProgress=r.onUploadProgress,this.onDownloadProgress=r.onDownloadProgress,this.maxResponseSize=r.maxResponseSize,this.beforeRedirect=r.beforeRedirect,this.maxRedirects=r.maxRedirects,this.followRedirects=r.followRedirects,this.http2=r.http2,this.useCurl=r.useCurl,this.correlationId=r.correlationId,this.tenant=r.tenant,this.policyTags=r.policyTags??[],this.policySource=r.policySource,this.traceId=r.traceId}withHeader(e,r){let n=st(this),i=new Headers(this.headers);i.set(e,r);let o=new t(this.url,{method:this.method,headers:i,body:this.body,signal:this.signal,throwHttpErrors:this.throwHttpErrors,timeout:this.timeout,onUploadProgress:this.onUploadProgress,onDownloadProgress:this.onDownloadProgress,maxResponseSize:this.maxResponseSize,beforeRedirect:this.beforeRedirect,maxRedirects:this.maxRedirects,followRedirects:this.followRedirects,http2:this.http2,useCurl:this.useCurl,correlationId:this.correlationId,tenant:this.tenant,policyTags:this.policyTags,policySource:this.policySource,traceId:this.traceId});return n?Qt(o,n):o}withBody(e){let r=st(this),n=new t(this.url,{method:this.method,headers:this.headers,body:e,signal:this.signal,throwHttpErrors:this.throwHttpErrors,timeout:this.timeout,onUploadProgress:this.onUploadProgress,onDownloadProgress:this.onDownloadProgress,maxResponseSize:this.maxResponseSize,beforeRedirect:this.beforeRedirect,maxRedirects:this.maxRedirects,followRedirects:this.followRedirects,http2:this.http2,useCurl:this.useCurl,correlationId:this.correlationId,tenant:this.tenant,policyTags:this.policyTags,policySource:this.policySource,traceId:this.traceId});return r?Qt(n,r):n}};V();function kn(t){if(typeof t!="object"||t===null||t instanceof Blob||t instanceof FormData||t instanceof URLSearchParams||t instanceof ArrayBuffer||t instanceof ReadableStream)return!1;if(typeof File<"u")try{if(t instanceof File)return!1}catch{}return!0}function _s(t){return t==null?{body:void 0}:typeof t=="string"?{body:t,contentType:"text/plain; charset=utf-8"}:t instanceof FormData?{body:t,contentType:void 0}:t instanceof URLSearchParams?{body:t.toString(),contentType:"application/x-www-form-urlencoded"}:t instanceof Blob||Et(t)?{body:t,contentType:t.type||"application/octet-stream"}:t instanceof ArrayBuffer?{body:t,contentType:"application/octet-stream"}:t instanceof ReadableStream?{body:t,contentType:"application/octet-stream"}:kn(t)?g0(t)?{body:Sn(t),contentType:void 0}:{body:JSON.stringify(t),contentType:"application/json"}:Array.isArray(t)?{body:JSON.stringify(t),contentType:"application/json"}:{body:String(t),contentType:"text/plain; charset=utf-8"}}function Sn(t){let e=new FormData;for(let[r,n]of Object.entries(t))if(n!=null){if(Array.isArray(n)){n.forEach(i=>{i instanceof Blob||Et(i)?e.append(r,i):e.append(r,String(i))});continue}if(n instanceof Blob||Et(n)){e.append(r,n);continue}if(typeof n=="object"){e.append(r,JSON.stringify(n));continue}e.append(r,String(n))}return e}function j1(t){return Sn(t)}function Et(t){return typeof File>"u"?!1:t instanceof File}function g0(t){if(!t)return!1;if(t instanceof Blob||Et(t))return!0;if(t instanceof FormData){for(let e of t.values())if(e instanceof Blob||Et(e))return!0}if(kn(t)){for(let e of Object.values(t))if(e instanceof Blob||Et(e)||Array.isArray(e)&&e.some(r=>r instanceof Blob||Et(r)))return!0}return!1}V();var Tn=class{concurrency;requestsPerInterval;interval;queue=[];active=0;windowStart=0;startedInWindow=0;waitingTimer;constructor(e={}){this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.requestsPerInterval=e.requestsPerInterval,this.interval=e.interval}run(e,r){return r!=null&&r.aborted?Promise.reject(r.reason??new $("Request aborted before enqueue",void 0,void 0,["Ensure the AbortSignal is not already aborted when calling the request.","Remove or reset the signal before enqueueing."])):new Promise((n,i)=>{let o={fn:e,resolve:n,reject:i,signal:r};if(r){let s=()=>{this._removeFromQueue(o),i(r.reason??new $("Request aborted while queued",void 0,void 0,["Avoid aborting immediately after queuing.","Increase timeouts or adjust rate limits if cancellations are unintended."])),this._schedule()};r.addEventListener("abort",s,{once:!0}),o.abortCleanup=()=>r.removeEventListener("abort",s)}this.queue.push(o),this._schedule()})}_removeFromQueue(e){let r=this.queue.indexOf(e);r>=0&&this.queue.splice(r,1)}_canStart(e){return this.active>=this.concurrency?!1:this.requestsPerInterval==null||this.interval==null||(e-this.windowStart>=this.interval&&(this.windowStart=e,this.startedInWindow=0),this.startedInWindow<this.requestsPerInterval)}_schedule(){var r,n;if(this.waitingTimer)return;let e=Date.now();for(;this.queue.length>0&&this._canStart(Date.now());){let i=this.queue.shift();if((r=i.signal)!=null&&r.aborted){(n=i.abortCleanup)==null||n.call(i),i.reject(i.signal.reason??new $("Request aborted while queued",void 0,void 0,["Avoid aborting immediately after queuing.","Increase timeouts or adjust rate limits if cancellations are unintended."]));continue}this.active++,this.startedInWindow++;let o=i.abortCleanup;o&&(o(),i.abortCleanup=void 0),Promise.resolve().then(()=>i.fn()).then(s=>i.resolve(s)).catch(s=>i.reject(s)).finally(()=>{this.active--,this._schedule()})}if(this.queue.length>0&&this.requestsPerInterval!=null&&this.interval!=null&&!this._canStart(Date.now())){let i=Math.max(0,this.windowStart+this.interval-Date.now());this.waitingTimer=setTimeout(()=>{this.waitingTimer=void 0,this._schedule()},i)}}asMiddleware(){return async(e,r)=>this.run(()=>r(e),e.signal)}};function Ws(){return{on:()=>()=>{},emit:()=>{}}}var y0="request";function Vs(t,e){return t.__reckerManifest=Gs(t,e),t}function b0(t,e={}){return Gs(t,e)}function An(t){return t.__reckerManifest}function Gs(t,e){return{name:(e==null?void 0:e.name)||v0(t),version:(e==null?void 0:e.version)||"1",scope:(e==null?void 0:e.scope)||y0,priority:(e==null?void 0:e.priority)??0,dependsOn:(e==null?void 0:e.dependsOn)||[],setup:e==null?void 0:e.setup,teardown:e==null?void 0:e.teardown}}function v0(t){return t.name&&t.name!=="anonymous"?t.name:`plugin-${Math.random().toString(16).slice(2,10)}`}function w0(t,e,r){if(e.has(t))throw new Error(`Invalid plugin manifest: duplicate plugin name '${t}'. ${r}`);e.add(t)}function x0(t,e){return`${e} -> ${t.join(" -> ")} -> ${e}`}function k0(t){return t.join(" -> ")}function Ks(t){return t.map((e,r)=>({plugin:e,manifest:b0(e,An(e)),registrationIndex:r}))}function Xs(t){let e=new Map,r=new Set;t.forEach(l=>{let p=l.manifest.name;w0(p,r,"Use explicit `manifest.name` to avoid collisions for anonymous plugin factories."),e.set(p,l)});let n=new Map,i=new Map;t.forEach(l=>{let{name:d,dependsOn:p}=l.manifest;i.set(d,0),n.set(d,new Set);for(let m of p){if(!e.has(m))throw new Error(`Invalid plugin dependency for '${d}': missing plugin '${m}'. Available plugins: `+Array.from(e.keys()).sort().join(", "));n.get(m).add(d),i.set(d,(i.get(d)||0)+1)}});let o=[];e.forEach((l,d)=>{(i.get(d)||0)===0&&o.push(d)});let s=[],c=l=>l.sort((d,p)=>{let m=e.get(d),f=e.get(p),h=f.manifest.priority-m.manifest.priority;return h!==0?h:m.registrationIndex-f.registrationIndex});for(;o.length>0;){let l=c(o).splice(0,1)[0],d=o.indexOf(l);d>=0&&o.splice(d,1);let p=e.get(l);if(!p)continue;s.push(p);let m=n.get(l);if(m)for(let f of m){let h=(i.get(f)||0)-1;i.set(f,h),h===0&&o.push(f)}}if(s.length!==t.length){let l=Array.from(i.entries()).filter(([,p])=>p>0).map(([p])=>p),d=S0(l,n);throw new Error(`Invalid plugin manifest: circular dependency detected. Unresolved nodes: ${k0(l)}. `+(d?`Detected cycle: ${d}.`:"Refactor dependency graph to a DAG."))}let u=s.map(l=>`${l.manifest.name}:${l.manifest.scope}:${l.manifest.priority}`);return{ordered:s,debugOrder:u}}function S0(t,e){let r=new Set,n=new Set,i=(o,s)=>{if(n.has(o)){let u=s.indexOf(o);return u>=0?x0(s.slice(u),o):null}if(r.has(o))return null;r.add(o),n.add(o);let c=e.get(o)||new Set;for(let u of c){let l=i(u,[...s,u]);if(l)return l}return n.delete(o),null};for(let o of t){let s=i(o,[o]);if(s)return s}return null}var T0=1*1e3;function Js(t){var d,p,m,f;let e;typeof t.concurrency=="number"?e={max:t.concurrency}:t.concurrency&&typeof t.concurrency=="object"?e=t.concurrency:e={};let r=e.max??1/0,n=e.requestsPerInterval??1/0,i=e.interval??T0,o=Qs(t.http2),s=o.enabled??!1,c=A0(e.agent,r,s,o.maxConcurrentStreams),u=E0((d=e.http2)==null?void 0:d.maxConcurrentStreams,r,s),l;return((p=e.runner)==null?void 0:p.concurrency)!==void 0?l=e.runner.concurrency:r!==1/0?l=r:l=1/0,{max:r,requestsPerInterval:n,interval:i,runner:{concurrency:l,retries:(m=e.runner)==null?void 0:m.retries,retryDelay:(f=e.runner)==null?void 0:f.retryDelay},agent:{...c,connections:c.connections},http2:{maxConcurrentStreams:u}}}function Qs(t){return t?typeof t=="boolean"?{enabled:t,preset:"balanced"}:typeof t=="string"?{enabled:!0,preset:t}:{...t,enabled:t.enabled??!0,preset:t.preset??"balanced"}:{}}function Ys(t){let e=Qs(t);if(!e.enabled)return{enabled:!1,resolvedSettings:wn.balanced};let r=e.preset??"balanced",n=wn[r]??wn.balanced,i={...n,...e.settings,maxConcurrentStreams:e.maxConcurrentStreams??n.maxConcurrentStreams};return{enabled:!0,preset:r,maxConcurrentStreams:i.maxConcurrentStreams,pipelining:e.pipelining,settings:i,resolvedSettings:i}}function A0(t,e,r,n){let o={...{pipelining:1,keepAlive:!0,keepAliveTimeout:4e3,keepAliveMaxTimeout:6e5,keepAliveTimeoutThreshold:1e3,connectTimeout:1e4,perDomainPooling:!0,maxCachedSessions:100,maxRequestsPerClient:0,clientTtl:null},...t},s;return(t==null?void 0:t.connections)==="auto"||(t==null?void 0:t.connections)===void 0?s=C0(e,r,n,o.pipelining??1):s=t.connections,{...o,connections:s}}function C0(t,e,r,n=1){if(e)return Math.max(1,Math.ceil(t/(r??100)));{let i=n>1?n:2;return Math.max(1,Math.min(Math.ceil(t/i),50))}}function E0(t,e,r){return r?t==="auto"||t===void 0?Math.min(Math.max(e,100),200):t:100}En();var D0="0.0.0-dev";function Dn(){return`recker/${D0}`}var L0={chrome_windows:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",chrome_mac:"Mozilla/5.0 (Macintosh; Intel Mac OS X 10157) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",chrome_linux:"Mozilla/5.0 (X11; Linux x8664) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",firefox_windows:"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0",firefox_mac:"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:121.0) Gecko/20100101 Firefox/121.0",firefox_linux:"Mozilla/5.0 (X11; Linux x8664; rv:121.0) Gecko/20100101 Firefox/121.0",safari_mac:"Mozilla/5.0 (Macintosh; Intel Mac OS X 10157) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15",edge_windows:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",edge_mac:"Mozilla/5.0 (Macintosh; Intel Mac OS X 10157) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",opera_windows:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 OPR/105.0.0.0",opera_mac:"Mozilla/5.0 (Macintosh; Intel Mac OS X 10157) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 OPR/105.0.0.0",safari_iphone:"Mozilla/5.0 (iPhone; CPU iPhone OS 170 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1",safari_ipad:"Mozilla/5.0 (iPad; CPU OS 170 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1",chrome_ios:"Mozilla/5.0 (iPhone; CPU iPhone OS 170 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/120.0.6099.119 Mobile/15E148 Safari/604.1",chrome_android:"Mozilla/5.0 (Linux; Android 14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.144 Mobile Safari/537.36",chrome_android_tablet:"Mozilla/5.0 (Linux; Android 14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.144 Safari/537.36",firefox_android:"Mozilla/5.0 (Android 14; Mobile; rv:121.0) Gecko/121.0 Firefox/121.0",samsung_browser:"Mozilla/5.0 (Linux; Android 14) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/23.0 Chrome/115.0.0.0 Mobile Safari/537.36",googlebot:"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",googlebot_mobile:"Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.144 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",recker:Dn()};function R0(t){return L0[t]}var Zs={desktop:{chrome:["chrome_windows","chrome_mac","chrome_linux"],firefox:["firefox_windows","firefox_mac","firefox_linux"],safari:["safari_mac"],edge:["edge_windows","edge_mac"],opera:["opera_windows","opera_mac"]},mobile:{ios:["safari_iphone","safari_ipad","chrome_ios"],android:["chrome_android","chrome_android_tablet","firefox_android","samsung_browser"]},bot:["googlebot","googlebot_mobile"],default:["recker"]};function Y1(t){let e=t.split("."),r=[];if(e.length===1){let i=Zs[e[0]];Array.isArray(i)?r=i:typeof i=="object"&&(r=Object.values(i).flat())}else if(e.length===2){let i=Zs[e[0]];typeof i=="object"&&e[1]in i&&(r=i[e[1]])}if(r.length===0)return Dn();let n=Math.floor(Math.random()*r.length);return R0(r[n])}function P0(t){let e=t.toLowerCase();return e.includes("bot")||e.includes("crawler")||e.includes("spider")?"bot":e.includes("ipad")||e.includes("tablet")||e.includes("android")&&!e.includes("mobile")?"tablet":e.includes("mobile")||e.includes("iphone")?"mobile":e.includes("windows")||e.includes("macintosh")||e.includes("linux")&&!e.includes("android")?"desktop":"unknown"}function Z1(t){let e=P0(t);return e==="mobile"||e==="tablet"}var Ln="__INJECT_VERSION__",ct=null;async function ro(){var t;if(ct)return ct;if(Ln!=="__INJECT_VERSION__")return ct=Ln,ct;try{ct=((t=(await import("../package.json")).default)==null?void 0:t.version)||"0.0.0-dev"}catch{ct="0.0.0-dev"}return ct}function ec(){return ct||(Ln!=="__INJECT_VERSION__"?Ln:"0.0.0-dev")}async function tc(){return{version:await ro(),name:"recker",nodeVersion:process.version,platform:process.platform,arch:process.arch}}no();V();function ic(t){let e=t.get("content-length");if(!e)return;let r=parseInt(e,10);return Number.isFinite(r)?r:void 0}function rc(t){return(t==null?void 0:t.cause)??(t==null?void 0:t.reason)}function io(t){return t instanceof Y?!0:!t||typeof t!="object"?!1:t.name==="TimeoutError"}function oo(t,e){if(!e||!t.body)return t;let r=ic(t.headers),n=Fe(t.body,e,{total:r,direction:"download"});return new Response(n,{status:t.status,statusText:t.statusText,headers:t.headers})}function nc(t){return new ReadableStream({start(e){e.enqueue(t),e.close()}})}function N0(t,e,r){if(!e||!t||typeof FormData<"u"&&t instanceof FormData)return t;if(typeof ReadableStream<"u"&&t instanceof ReadableStream)return Fe(t,e,{total:r,direction:"upload"});if(typeof Blob<"u"&&t instanceof Blob)return Fe(t.stream(),e,{total:t.size,direction:"upload"});if(t instanceof ArrayBuffer||ArrayBuffer.isView(t)){let n=t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength);return Fe(nc(n),e,{total:n.byteLength,direction:"upload"})}if(typeof t=="string"){let i=new TextEncoder().encode(t);return Fe(nc(i),e,{total:i.byteLength,direction:"upload"})}return t}var Dt=class{options;constructor(e={}){this.options=e}async dispatch(e){var C,b;let r=performance.now(),n,i,o=typeof e.timeout=="number"?e.timeout:(C=e.timeout)==null?void 0:C.request,s=e.signal,c=o?new Y(e,{phase:"request",timeout:o}):void 0;o&&!s&&(i=new AbortController,s=i.signal,n=setTimeout(()=>{M0(i,c)},o));let u=e.followRedirects!==!1,l=e.maxRedirects??20,d=!!e.beforeRedirect||e.followRedirects===!1||e.maxRedirects!==void 0,p=e.url,m=e.method,f=e.body,h=new Headers(e.headers),g=ic(h),y=0;try{for(;;){let x=y===0?N0(f,e.onUploadProgress,g):f,k={method:m,headers:h,body:x,signal:s,credentials:this.options.credentials,cache:this.options.cache,keepalive:this.options.keepalive??!0,redirect:d?"manual":"follow",duplex:x?"half":void 0},v=await globalThis.fetch(p,k);if(d){let P=v.status;if(P>=300&&P<400&&u&&y<l){let R=v.headers.get("location");if(!R||v.type==="opaqueredirect"){let z=oo(v,e.onDownloadProgress),H=performance.now()-r;return new kr(z,{total:H,firstByte:H})}let O=new URL(R,p).toString(),W=O;if(e.beforeRedirect){let z={from:p,to:O,status:P,headers:v.headers},H=await e.beforeRedirect(z);if(H===!1){let _=oo(v,e.onDownloadProgress),E=performance.now()-r;return new kr(_,{total:E,firstByte:E})}typeof H=="string"&&(W=H)}(P===303||(P===301||P===302)&&m!=="GET"&&m!=="HEAD")&&(m="GET",f=null,h.delete("content-type"),h.delete("content-length")),await((b=v.body)==null?void 0:b.cancel()),p=W,y++;continue}}let w=oo(v,e.onDownloadProgress),S=performance.now()-r,A={total:S,firstByte:S};return new kr(w,A)}}catch(x){if(o&&(x.name==="AbortError"||x.name==="TimeoutError")){let k=rc(x);if(io(k)||io(rc(s))||i&&io(c))throw k instanceof Y?k:c??x}throw x}finally{n&&clearTimeout(n)}}};function M0(t,e){t.signal.aborted||(e?t.abort(e):t.abort())}var kr=class t{raw;timings;constructor(e,r){this.raw=e,this.timings=r}get status(){return this.raw.status}get statusText(){return this.raw.statusText}get headers(){return this.raw.headers}get ok(){return this.raw.ok}get url(){return this.raw.url}get connection(){return{}}json(){return this.raw.json()}text(){return this.raw.text()}blob(){return this.raw.blob()}async cleanText(){return(await this.text()).replace(/<[^>]*>?/gm,"")}read(){return this.raw.body}clone(){return new t(this.raw.clone(),this.timings)}async*sse(){if(!this.raw.body)return;let r=this.raw.body.pipeThrough(new TextDecoderStream).getReader(),n="";for(;;){let{done:i,value:o}=await r.read();if(i)break;n+=o;let s=n.split(`
|
|
58
|
+
`);i=d.pop()||"";for(let p of d){let m=p.trim();if(!(!m||m==="data: [DONE]")&&m.startsWith("data: ")){let f=m.slice(6);try{let h=this.parseStreamChunk(f);h&&(!o&&h.type==="text"&&(o=performance.now()),yield h)}catch{}}}}}finally{r.releaseLock()}}parseStreamChunk(e){let r=JSON.parse(e);return this.config.provider==="anthropic"?this.parseAnthropicStreamChunk(r):this.parseOpenAIStreamChunk(r)}parseOpenAIStreamChunk(e){var n,i;let r=(n=e.choices)==null?void 0:n[0];return r?(i=r.delta)!=null&&i.content?{type:"text",content:r.delta.content}:r.finish_reason?{type:"done",finishReason:r.finish_reason}:null:e.usage?{type:"usage",usage:{inputTokens:e.usage.prompt_tokens||0,outputTokens:e.usage.completion_tokens||0,totalTokens:e.usage.total_tokens||0}}:null}parseAnthropicStreamChunk(e){var r,n;return e.type==="content_block_delta"&&((r=e.delta)==null?void 0:r.type)==="text_delta"?{type:"text",content:e.delta.text||""}:e.type==="message_stop"?{type:"done",finishReason:"stop"}:e.type==="message_delta"&&((n=e.message)!=null&&n.usage)?{type:"usage",usage:{inputTokens:e.message.usage.input_tokens||0,outputTokens:e.message.usage.output_tokens||0,totalTokens:(e.message.usage.input_tokens||0)+(e.message.usage.output_tokens||0)}}:null}async*wrapStreamWithMemory(e){let r="";for await(let n of e)n.type==="text"&&(r+=n.content),yield n;r&&this.memory.recordResponse(r)}};var zs=0;function js(t={}){zs+=1;let e=`${Date.now().toString(36)}-${zs.toString(36)}-${Math.random().toString(16).slice(2,8)}`;return{requestId:e,correlationId:t.correlationId||e,tenant:t.tenant,policyTags:t.policyTags??[],policySource:t.policySource,createdAt:Date.now(),traceId:t.traceId}}function Qt(t,e){return t&&(t._runtime=e,t)}function st(t){return t._runtime}function h0(t){if(t!==void 0)return typeof t=="number"?{request:t}:t}var Ct=class t{url;method;headers;body;signal;throwHttpErrors;timeout;onUploadProgress;onDownloadProgress;maxResponseSize;beforeRedirect;maxRedirects;followRedirects;http2;useCurl;correlationId;tenant;policyTags;policySource;traceId;constructor(e,r={}){this.url=e,this.method=r.method||"GET",this.headers=r.headers instanceof Headers?r.headers:new Headers(r.headers),this.body=r.body||null,this.signal=r.signal,this.throwHttpErrors=r.throwHttpErrors!==void 0?r.throwHttpErrors:!0,this.timeout=h0(r.timeout),this.onUploadProgress=r.onUploadProgress,this.onDownloadProgress=r.onDownloadProgress,this.maxResponseSize=r.maxResponseSize,this.beforeRedirect=r.beforeRedirect,this.maxRedirects=r.maxRedirects,this.followRedirects=r.followRedirects,this.http2=r.http2,this.useCurl=r.useCurl,this.correlationId=r.correlationId,this.tenant=r.tenant,this.policyTags=r.policyTags??[],this.policySource=r.policySource,this.traceId=r.traceId}withHeader(e,r){let n=st(this),i=new Headers(this.headers);i.set(e,r);let o=new t(this.url,{method:this.method,headers:i,body:this.body,signal:this.signal,throwHttpErrors:this.throwHttpErrors,timeout:this.timeout,onUploadProgress:this.onUploadProgress,onDownloadProgress:this.onDownloadProgress,maxResponseSize:this.maxResponseSize,beforeRedirect:this.beforeRedirect,maxRedirects:this.maxRedirects,followRedirects:this.followRedirects,http2:this.http2,useCurl:this.useCurl,correlationId:this.correlationId,tenant:this.tenant,policyTags:this.policyTags,policySource:this.policySource,traceId:this.traceId});return n?Qt(o,n):o}withBody(e){let r=st(this),n=new t(this.url,{method:this.method,headers:this.headers,body:e,signal:this.signal,throwHttpErrors:this.throwHttpErrors,timeout:this.timeout,onUploadProgress:this.onUploadProgress,onDownloadProgress:this.onDownloadProgress,maxResponseSize:this.maxResponseSize,beforeRedirect:this.beforeRedirect,maxRedirects:this.maxRedirects,followRedirects:this.followRedirects,http2:this.http2,useCurl:this.useCurl,correlationId:this.correlationId,tenant:this.tenant,policyTags:this.policyTags,policySource:this.policySource,traceId:this.traceId});return r?Qt(n,r):n}};V();function kn(t){if(typeof t!="object"||t===null||t instanceof Blob||t instanceof FormData||t instanceof URLSearchParams||t instanceof ArrayBuffer||t instanceof ReadableStream)return!1;if(typeof File<"u")try{if(t instanceof File)return!1}catch{}return!0}function _s(t){return t==null?{body:void 0}:typeof t=="string"?{body:t,contentType:"text/plain; charset=utf-8"}:t instanceof FormData?{body:t,contentType:void 0}:t instanceof URLSearchParams?{body:t.toString(),contentType:"application/x-www-form-urlencoded"}:t instanceof Blob||Et(t)?{body:t,contentType:t.type||"application/octet-stream"}:t instanceof ArrayBuffer?{body:t,contentType:"application/octet-stream"}:t instanceof ReadableStream?{body:t,contentType:"application/octet-stream"}:kn(t)?g0(t)?{body:Tn(t),contentType:void 0}:{body:JSON.stringify(t),contentType:"application/json"}:Array.isArray(t)?{body:JSON.stringify(t),contentType:"application/json"}:{body:String(t),contentType:"text/plain; charset=utf-8"}}function Tn(t){let e=new FormData;for(let[r,n]of Object.entries(t))if(n!=null){if(Array.isArray(n)){n.forEach(i=>{i instanceof Blob||Et(i)?e.append(r,i):e.append(r,String(i))});continue}if(n instanceof Blob||Et(n)){e.append(r,n);continue}if(typeof n=="object"){e.append(r,JSON.stringify(n));continue}e.append(r,String(n))}return e}function j1(t){return Tn(t)}function Et(t){return typeof File>"u"?!1:t instanceof File}function g0(t){if(!t)return!1;if(t instanceof Blob||Et(t))return!0;if(t instanceof FormData){for(let e of t.values())if(e instanceof Blob||Et(e))return!0}if(kn(t)){for(let e of Object.values(t))if(e instanceof Blob||Et(e)||Array.isArray(e)&&e.some(r=>r instanceof Blob||Et(r)))return!0}return!1}V();var Sn=class{concurrency;requestsPerInterval;interval;queue=[];active=0;windowStart=0;startedInWindow=0;waitingTimer;constructor(e={}){this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.requestsPerInterval=e.requestsPerInterval,this.interval=e.interval}run(e,r){return r!=null&&r.aborted?Promise.reject(r.reason??new $("Request aborted before enqueue",void 0,void 0,["Ensure the AbortSignal is not already aborted when calling the request.","Remove or reset the signal before enqueueing."])):new Promise((n,i)=>{let o={fn:e,resolve:n,reject:i,signal:r};if(r){let s=()=>{this._removeFromQueue(o),i(r.reason??new $("Request aborted while queued",void 0,void 0,["Avoid aborting immediately after queuing.","Increase timeouts or adjust rate limits if cancellations are unintended."])),this._schedule()};r.addEventListener("abort",s,{once:!0}),o.abortCleanup=()=>r.removeEventListener("abort",s)}this.queue.push(o),this._schedule()})}_removeFromQueue(e){let r=this.queue.indexOf(e);r>=0&&this.queue.splice(r,1)}_canStart(e){return this.active>=this.concurrency?!1:this.requestsPerInterval==null||this.interval==null||(e-this.windowStart>=this.interval&&(this.windowStart=e,this.startedInWindow=0),this.startedInWindow<this.requestsPerInterval)}_schedule(){var r,n;if(this.waitingTimer)return;let e=Date.now();for(;this.queue.length>0&&this._canStart(Date.now());){let i=this.queue.shift();if((r=i.signal)!=null&&r.aborted){(n=i.abortCleanup)==null||n.call(i),i.reject(i.signal.reason??new $("Request aborted while queued",void 0,void 0,["Avoid aborting immediately after queuing.","Increase timeouts or adjust rate limits if cancellations are unintended."]));continue}this.active++,this.startedInWindow++;let o=i.abortCleanup;o&&(o(),i.abortCleanup=void 0),Promise.resolve().then(()=>i.fn()).then(s=>i.resolve(s)).catch(s=>i.reject(s)).finally(()=>{this.active--,this._schedule()})}if(this.queue.length>0&&this.requestsPerInterval!=null&&this.interval!=null&&!this._canStart(Date.now())){let i=Math.max(0,this.windowStart+this.interval-Date.now());this.waitingTimer=setTimeout(()=>{this.waitingTimer=void 0,this._schedule()},i)}}asMiddleware(){return async(e,r)=>this.run(()=>r(e),e.signal)}};function Ws(){return{on:()=>()=>{},emit:()=>{}}}var y0="request";function Vs(t,e){return t.__reckerManifest=Gs(t,e),t}function b0(t,e={}){return Gs(t,e)}function An(t){return t.__reckerManifest}function Gs(t,e){return{name:(e==null?void 0:e.name)||v0(t),version:(e==null?void 0:e.version)||"1",scope:(e==null?void 0:e.scope)||y0,priority:(e==null?void 0:e.priority)??0,dependsOn:(e==null?void 0:e.dependsOn)||[],setup:e==null?void 0:e.setup,teardown:e==null?void 0:e.teardown}}function v0(t){return t.name&&t.name!=="anonymous"?t.name:`plugin-${Math.random().toString(16).slice(2,10)}`}function w0(t,e,r){if(e.has(t))throw new Error(`Invalid plugin manifest: duplicate plugin name '${t}'. ${r}`);e.add(t)}function x0(t,e){return`${e} -> ${t.join(" -> ")} -> ${e}`}function k0(t){return t.join(" -> ")}function Ks(t){return t.map((e,r)=>({plugin:e,manifest:b0(e,An(e)),registrationIndex:r}))}function Xs(t){let e=new Map,r=new Set;t.forEach(l=>{let p=l.manifest.name;w0(p,r,"Use explicit `manifest.name` to avoid collisions for anonymous plugin factories."),e.set(p,l)});let n=new Map,i=new Map;t.forEach(l=>{let{name:d,dependsOn:p}=l.manifest;i.set(d,0),n.set(d,new Set);for(let m of p){if(!e.has(m))throw new Error(`Invalid plugin dependency for '${d}': missing plugin '${m}'. Available plugins: `+Array.from(e.keys()).sort().join(", "));n.get(m).add(d),i.set(d,(i.get(d)||0)+1)}});let o=[];e.forEach((l,d)=>{(i.get(d)||0)===0&&o.push(d)});let s=[],c=l=>l.sort((d,p)=>{let m=e.get(d),f=e.get(p),h=f.manifest.priority-m.manifest.priority;return h!==0?h:m.registrationIndex-f.registrationIndex});for(;o.length>0;){let l=c(o).splice(0,1)[0],d=o.indexOf(l);d>=0&&o.splice(d,1);let p=e.get(l);if(!p)continue;s.push(p);let m=n.get(l);if(m)for(let f of m){let h=(i.get(f)||0)-1;i.set(f,h),h===0&&o.push(f)}}if(s.length!==t.length){let l=Array.from(i.entries()).filter(([,p])=>p>0).map(([p])=>p),d=T0(l,n);throw new Error(`Invalid plugin manifest: circular dependency detected. Unresolved nodes: ${k0(l)}. `+(d?`Detected cycle: ${d}.`:"Refactor dependency graph to a DAG."))}let u=s.map(l=>`${l.manifest.name}:${l.manifest.scope}:${l.manifest.priority}`);return{ordered:s,debugOrder:u}}function T0(t,e){let r=new Set,n=new Set,i=(o,s)=>{if(n.has(o)){let u=s.indexOf(o);return u>=0?x0(s.slice(u),o):null}if(r.has(o))return null;r.add(o),n.add(o);let c=e.get(o)||new Set;for(let u of c){let l=i(u,[...s,u]);if(l)return l}return n.delete(o),null};for(let o of t){let s=i(o,[o]);if(s)return s}return null}var S0=1*1e3;function Js(t){var d,p,m,f;let e;typeof t.concurrency=="number"?e={max:t.concurrency}:t.concurrency&&typeof t.concurrency=="object"?e=t.concurrency:e={};let r=e.max??1/0,n=e.requestsPerInterval??1/0,i=e.interval??S0,o=Qs(t.http2),s=o.enabled??!1,c=A0(e.agent,r,s,o.maxConcurrentStreams),u=E0((d=e.http2)==null?void 0:d.maxConcurrentStreams,r,s),l;return((p=e.runner)==null?void 0:p.concurrency)!==void 0?l=e.runner.concurrency:r!==1/0?l=r:l=1/0,{max:r,requestsPerInterval:n,interval:i,runner:{concurrency:l,retries:(m=e.runner)==null?void 0:m.retries,retryDelay:(f=e.runner)==null?void 0:f.retryDelay},agent:{...c,connections:c.connections},http2:{maxConcurrentStreams:u}}}function Qs(t){return t?typeof t=="boolean"?{enabled:t,preset:"balanced"}:typeof t=="string"?{enabled:!0,preset:t}:{...t,enabled:t.enabled??!0,preset:t.preset??"balanced"}:{}}function Ys(t){let e=Qs(t);if(!e.enabled)return{enabled:!1,resolvedSettings:wn.balanced};let r=e.preset??"balanced",n=wn[r]??wn.balanced,i={...n,...e.settings,maxConcurrentStreams:e.maxConcurrentStreams??n.maxConcurrentStreams};return{enabled:!0,preset:r,maxConcurrentStreams:i.maxConcurrentStreams,pipelining:e.pipelining,settings:i,resolvedSettings:i}}function A0(t,e,r,n){let o={...{pipelining:1,keepAlive:!0,keepAliveTimeout:4e3,keepAliveMaxTimeout:6e5,keepAliveTimeoutThreshold:1e3,connectTimeout:1e4,perDomainPooling:!0,maxCachedSessions:100,maxRequestsPerClient:0,clientTtl:null},...t},s;return(t==null?void 0:t.connections)==="auto"||(t==null?void 0:t.connections)===void 0?s=C0(e,r,n,o.pipelining??1):s=t.connections,{...o,connections:s}}function C0(t,e,r,n=1){if(e)return Math.max(1,Math.ceil(t/(r??100)));{let i=n>1?n:2;return Math.max(1,Math.min(Math.ceil(t/i),50))}}function E0(t,e,r){return r?t==="auto"||t===void 0?Math.min(Math.max(e,100),200):t:100}En();var D0="0.0.0-dev";function Dn(){return`recker/${D0}`}var L0={chrome_windows:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",chrome_mac:"Mozilla/5.0 (Macintosh; Intel Mac OS X 10157) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",chrome_linux:"Mozilla/5.0 (X11; Linux x8664) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",firefox_windows:"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0",firefox_mac:"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:121.0) Gecko/20100101 Firefox/121.0",firefox_linux:"Mozilla/5.0 (X11; Linux x8664; rv:121.0) Gecko/20100101 Firefox/121.0",safari_mac:"Mozilla/5.0 (Macintosh; Intel Mac OS X 10157) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15",edge_windows:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",edge_mac:"Mozilla/5.0 (Macintosh; Intel Mac OS X 10157) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0",opera_windows:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 OPR/105.0.0.0",opera_mac:"Mozilla/5.0 (Macintosh; Intel Mac OS X 10157) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 OPR/105.0.0.0",safari_iphone:"Mozilla/5.0 (iPhone; CPU iPhone OS 170 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1",safari_ipad:"Mozilla/5.0 (iPad; CPU OS 170 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1",chrome_ios:"Mozilla/5.0 (iPhone; CPU iPhone OS 170 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/120.0.6099.119 Mobile/15E148 Safari/604.1",chrome_android:"Mozilla/5.0 (Linux; Android 14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.144 Mobile Safari/537.36",chrome_android_tablet:"Mozilla/5.0 (Linux; Android 14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.144 Safari/537.36",firefox_android:"Mozilla/5.0 (Android 14; Mobile; rv:121.0) Gecko/121.0 Firefox/121.0",samsung_browser:"Mozilla/5.0 (Linux; Android 14) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/23.0 Chrome/115.0.0.0 Mobile Safari/537.36",googlebot:"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",googlebot_mobile:"Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.144 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",recker:Dn()};function R0(t){return L0[t]}var Zs={desktop:{chrome:["chrome_windows","chrome_mac","chrome_linux"],firefox:["firefox_windows","firefox_mac","firefox_linux"],safari:["safari_mac"],edge:["edge_windows","edge_mac"],opera:["opera_windows","opera_mac"]},mobile:{ios:["safari_iphone","safari_ipad","chrome_ios"],android:["chrome_android","chrome_android_tablet","firefox_android","samsung_browser"]},bot:["googlebot","googlebot_mobile"],default:["recker"]};function Y1(t){let e=t.split("."),r=[];if(e.length===1){let i=Zs[e[0]];Array.isArray(i)?r=i:typeof i=="object"&&(r=Object.values(i).flat())}else if(e.length===2){let i=Zs[e[0]];typeof i=="object"&&e[1]in i&&(r=i[e[1]])}if(r.length===0)return Dn();let n=Math.floor(Math.random()*r.length);return R0(r[n])}function P0(t){let e=t.toLowerCase();return e.includes("bot")||e.includes("crawler")||e.includes("spider")?"bot":e.includes("ipad")||e.includes("tablet")||e.includes("android")&&!e.includes("mobile")?"tablet":e.includes("mobile")||e.includes("iphone")?"mobile":e.includes("windows")||e.includes("macintosh")||e.includes("linux")&&!e.includes("android")?"desktop":"unknown"}function Z1(t){let e=P0(t);return e==="mobile"||e==="tablet"}var Ln="__INJECT_VERSION__",ct=null;async function ro(){var t;if(ct)return ct;if(Ln!=="__INJECT_VERSION__")return ct=Ln,ct;try{ct=((t=(await import("../package.json")).default)==null?void 0:t.version)||"0.0.0-dev"}catch{ct="0.0.0-dev"}return ct}function ec(){return ct||(Ln!=="__INJECT_VERSION__"?Ln:"0.0.0-dev")}async function tc(){return{version:await ro(),name:"recker",nodeVersion:process.version,platform:process.platform,arch:process.arch}}no();V();function ic(t){let e=t.get("content-length");if(!e)return;let r=parseInt(e,10);return Number.isFinite(r)?r:void 0}function rc(t){return(t==null?void 0:t.cause)??(t==null?void 0:t.reason)}function io(t){return t instanceof Y?!0:!t||typeof t!="object"?!1:t.name==="TimeoutError"}function oo(t,e){if(!e||!t.body)return t;let r=ic(t.headers),n=Fe(t.body,e,{total:r,direction:"download"});return new Response(n,{status:t.status,statusText:t.statusText,headers:t.headers})}function nc(t){return new ReadableStream({start(e){e.enqueue(t),e.close()}})}function N0(t,e,r){if(!e||!t||typeof FormData<"u"&&t instanceof FormData)return t;if(typeof ReadableStream<"u"&&t instanceof ReadableStream)return Fe(t,e,{total:r,direction:"upload"});if(typeof Blob<"u"&&t instanceof Blob)return Fe(t.stream(),e,{total:t.size,direction:"upload"});if(t instanceof ArrayBuffer||ArrayBuffer.isView(t)){let n=t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength);return Fe(nc(n),e,{total:n.byteLength,direction:"upload"})}if(typeof t=="string"){let i=new TextEncoder().encode(t);return Fe(nc(i),e,{total:i.byteLength,direction:"upload"})}return t}var Dt=class{options;constructor(e={}){this.options=e}async dispatch(e){var C,b;let r=performance.now(),n,i,o=typeof e.timeout=="number"?e.timeout:(C=e.timeout)==null?void 0:C.request,s=e.signal,c=o?new Y(e,{phase:"request",timeout:o}):void 0;o&&!s&&(i=new AbortController,s=i.signal,n=setTimeout(()=>{M0(i,c)},o));let u=e.followRedirects!==!1,l=e.maxRedirects??20,d=!!e.beforeRedirect||e.followRedirects===!1||e.maxRedirects!==void 0,p=e.url,m=e.method,f=e.body,h=new Headers(e.headers),g=ic(h),y=0;try{for(;;){let w=y===0?N0(f,e.onUploadProgress,g):f,x={method:m,headers:h,body:w,signal:s,credentials:this.options.credentials,cache:this.options.cache,keepalive:this.options.keepalive??!0,redirect:d?"manual":"follow",duplex:w?"half":void 0},v=await globalThis.fetch(p,x);if(d){let P=v.status;if(P>=300&&P<400&&u&&y<l){let R=v.headers.get("location");if(!R||v.type==="opaqueredirect"){let z=oo(v,e.onDownloadProgress),I=performance.now()-r;return new kr(z,{total:I,firstByte:I})}let O=new URL(R,p).toString(),W=O;if(e.beforeRedirect){let z={from:p,to:O,status:P,headers:v.headers},I=await e.beforeRedirect(z);if(I===!1){let _=oo(v,e.onDownloadProgress),E=performance.now()-r;return new kr(_,{total:E,firstByte:E})}typeof I=="string"&&(W=I)}(P===303||(P===301||P===302)&&m!=="GET"&&m!=="HEAD")&&(m="GET",f=null,h.delete("content-type"),h.delete("content-length")),await((b=v.body)==null?void 0:b.cancel()),p=W,y++;continue}}let T=oo(v,e.onDownloadProgress),k=performance.now()-r,S={total:k,firstByte:k};return new kr(T,S)}}catch(w){if(o&&(w.name==="AbortError"||w.name==="TimeoutError")){let x=rc(w);if(io(x)||io(rc(s))||i&&io(c))throw x instanceof Y?x:c??w}throw w}finally{n&&clearTimeout(n)}}};function M0(t,e){t.signal.aborted||(e?t.abort(e):t.abort())}var kr=class t{raw;timings;constructor(e,r){this.raw=e,this.timings=r}get status(){return this.raw.status}get statusText(){return this.raw.statusText}get headers(){return this.raw.headers}get ok(){return this.raw.ok}get url(){return this.raw.url}get connection(){return{}}json(){return this.raw.json()}text(){return this.raw.text()}blob(){return this.raw.blob()}async cleanText(){return(await this.text()).replace(/<[^>]*>?/gm,"")}read(){return this.raw.body}clone(){return new t(this.raw.clone(),this.timings)}async*sse(){if(!this.raw.body)return;let r=this.raw.body.pipeThrough(new TextDecoderStream).getReader(),n="";for(;;){let{done:i,value:o}=await r.read();if(i)break;n+=o;let s=n.split(`
|
|
59
59
|
|
|
60
60
|
`);n=s.pop()||"";for(let c of s){if(!c.trim())continue;let u="",l,d,p,m=c.split(`
|
|
61
61
|
`);for(let f of m)f.startsWith("data: ")?u=u?u+`
|
|
62
|
-
`+f.slice(6):f.slice(6):f.startsWith("event: ")?l=f.slice(7):f.startsWith("id: ")?d=f.slice(4):f.startsWith("retry: ")&&(p=parseInt(f.slice(7),10));u&&(yield{data:u,event:l,id:d,retry:p})}}}async*download(){if(!this.raw.body)return;let e=this.raw.body.getReader(),r=0,n=Number(this.raw.headers.get("content-length"))||void 0;for(;;){let{done:i,value:o}=await e.read();if(i)break;r+=o.length,yield{loaded:r,transferred:r,total:n,percent:n?r/n*100:void 0,direction:"download"}}}async*[Symbol.asyncIterator](){if(!this.raw.body)return;let e=this.raw.body.getReader();for(;;){let{done:r,value:n}=await e.read();if(r)break;yield n}}};async function*ao(t,e,r={},n={}){let i=e,o=1,s=n.maxPages||1/0;for(;i&&o<=s;){let c=await t.request(i,{...r,method:"GET"}),u=await c.json();if(yield{data:u,response:c,pageNumber:o},o++,n.getNextUrl){i=n.getNextUrl(c,u,i);continue}if(n.nextCursorPath){let d=n.nextCursorPath.split("."),p=u;for(let m of d)if(p&&typeof p=="object")p=p[m];else{p=void 0;break}if(p){let m=n.pageParam||"cursor",f=i.startsWith("http"),h=new URL(f?i:`http://dummy-base${i.startsWith("/")?"":"/"}${i}`);h.searchParams.set(m,String(p)),f?i=h.toString():i=h.pathname+h.search}else i=null;continue}if(n.pageParam){let d=i.startsWith("http"),p=new URL(d?i:`http://dummy-base${i.startsWith("/")?"":"/"}${i}`),m=n.pageParam,f=parseInt(p.searchParams.get(m)||String(o-1),10),h=!1;if(Array.isArray(u)&&u.length===0&&(h=!0),u&&Array.isArray(u.data)&&u.data.length===0&&(h=!0),u&&Array.isArray(u.items)&&u.items.length===0&&(h=!0),h)i=null;else{let g=(isNaN(f)?1:f)+1;p.searchParams.set(m,String(g)),i=d?p.toString():p.pathname+p.search}continue}let l=c.headers.get("link");if(l){let d=l.match(/<([^>]+)>;\s*rel="next"/);i=d?d[1]:null}else i=null}}async function*oc(t,e,r={},n={}){for await(let i of ao(t,e,r,n)){let o=i.data,s=[];n.getItems?s=n.getItems(o):n.resultsPath?s=n.resultsPath.split(".").reduce((c,u)=>c==null?void 0:c[u],o)||[]:Array.isArray(o)?s=o:o&&Array.isArray(o.data)?s=o.data:o&&Array.isArray(o.items)?s=o.items:s=[o];for(let c of s)yield c}}V();function so(t,e,r,n,i){let o;switch(n){case"linear":o=e*t;break;case"exponential":o=Math.pow(2,t-1)*e;break;case"decorrelated":let s=t===1?e:Math.pow(2,t-2)*e;o=Math.random()*(s*3-e)+e;break;default:o=e*t}if(o=Math.min(o,r),i){let s=o*.25,c=Math.random()*s*2-s;o+=c}return Math.max(0,Math.floor(o))}function F0(t){if(!t)return;let e=parseInt(t,10);if(!isNaN(e)&&e>=0)return e*1e3;let r=Date.parse(t);if(!isNaN(r)){let n=r-Date.now();return n>0?n:void 0}}function ac(t={}){let e=t.maxAttempts||3,r=t.delay||1e3,n=t.maxDelay||3e4,i=t.backoff||"exponential",o=t.jitter!==!1,s=t.statusCodes||[408,429,500,502,503,504],c=t.onRetry,u=t.respectRetryAfter!==!1,l=p=>{if(p instanceof je||p instanceof Y)return!0;if(p instanceof Je)return s.includes(p.status);let m=Wi(p);if(m&&m.canRetry===!1)return!1;if(m)return m.canRetry;if(p&&typeof p=="object"&&"code"in p){let f=p.code;return f==="ECONNRESET"||f==="ETIMEDOUT"||f==="ENOTFOUND"}return!1},d=t.shouldRetry||l;return p=>{let m=(h,g,y,C)=>{let b=p.runtimeEventBus;if(!(b!=null&&b.emit))return;let x=st(C);if(!x)return;let k=Wi(h);b.emit("request:retry",{context:x,req:C,attempt:g,delayMs:y,reason:(k==null?void 0:k.reason)||(h==null?void 0:h.message)||"retry requested"})},f=async(h,g)=>{var C,b;let y=0;for(;;)try{y++;let x=await g(h);if(y<e&&!x.ok&&s.includes(x.status)){let k;if(u){let w=F0(x.headers.get("Retry-After"));k=w!==void 0?Math.min(w,n):so(y,r,n,i,o)}else k=so(y,r,n,i,o);let v=new Je(x,h);if(m(v,y,k,h),c&&c(y,v,k),(C=p.hooks)!=null&&C.onRetry)for(let w of p.hooks.onRetry)await w(v,y,k,h);await new Promise(w=>setTimeout(w,k));continue}return x}catch(x){if(y<e&&d(x)){let k=so(y,r,n,i,o);if(m(x,y,k,h),c&&c(y,x,k),(b=p.hooks)!=null&&b.onRetry)for(let v of p.hooks.onRetry)await v(x,y,k,h);await new Promise(v=>setTimeout(v,k));continue}throw x}};p.use(f)}}var Yt=class{store=new Map;async get(e){let r=this.store.get(e);return r?r.expiresAt>0&&r.expiresAt<=Date.now()?(this.store.delete(e),null):r.value:null}async set(e,r,n){if(!Number.isFinite(n)||n<=0){this.store.delete(e);return}this.store.set(e,{value:r,expiresAt:Date.now()+n})}async delete(e){this.store.delete(e)}};co();uo();Nn();Fn();var Zt=typeof TextEncoder<"u"?new TextEncoder:null,Ye=globalThis.Buffer;function Q0(){var t,e;return typeof globalThis<"u"&&!!((e=(t=globalThis.process)==null?void 0:t.versions)!=null&&e.node)}var wo=class{factory;storage;resolving;constructor(e){this.factory=e}async getStorage(){return this.storage||(this.resolving||(this.resolving=this.factory().then(e=>(this.storage=e,e))),this.storage=await this.resolving),this.storage}async get(e){return(await this.getStorage()).get(e)}async set(e,r,n){return(await this.getStorage()).set(e,r,n)}async delete(e){return(await this.getStorage()).delete(e)}};function Y0(){return Q0()?new wo(async()=>{let{MemoryStorage:t}=await Promise.resolve().then(()=>(bo(),yo));return new t}):new Yt}function Z0(t){if(t==null)return null;if(typeof t=="string")return Zt?Zt.encode(t):Ye?Ye.from(t,"utf8"):null;if(typeof URLSearchParams<"u"&&t instanceof URLSearchParams){let e=t.toString();return Zt?Zt.encode(e):Ye?Ye.from(e,"utf8"):null}if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);if(typeof Blob<"u"&&t instanceof Blob)return null;if(typeof t=="object")try{let e=JSON.stringify(t);return Zt?Zt.encode(e):Ye?Ye.from(e,"utf8"):null}catch{return null}return null}function ey(t){let e=0xcbf29ce484222325n,r=0x100000001b3n;for(let n of t)e^=BigInt(n),e=e*r&0xffffffffffffffffn;return e.toString(16).padStart(16,"0")}function ty(t){if(!t)return!0;let e=t.toLowerCase();return!!(e.startsWith("text/")||e.includes("json")||e.includes("xml")||e.includes("yaml")||e.includes("csv")||e.includes("javascript")||e.includes("ecmascript")||e.includes("x-www-form-urlencoded")||e.includes("graphql")||e.includes("event-stream")||e.includes("+json")||e.includes("+xml"))}function ry(t){if(Ye)return Ye.from(t).toString("base64");if(typeof btoa<"u"){let e="";for(let n=0;n<t.length;n+=32768){let i=t.subarray(n,n+32768);e+=String.fromCharCode(...i)}return btoa(e)}return null}function ny(t){if(Ye)return Ye.from(t,"base64");if(typeof atob<"u"){let e=atob(t),r=new Uint8Array(e.length);for(let n=0;n<e.length;n++)r[n]=e.charCodeAt(n);return r}return null}async function Lt(t){let e=t.headers.get("content-type");if(ty(e))return{body:await t.text(),bodyEncoding:"utf8"};let r=await t.arrayBuffer(),n=new Uint8Array(r),i=ry(n);return i===null?null:{body:i,bodyEncoding:"base64"}}var Tr=class t{raw;timings;constructor(e,r){this.raw=e,this.timings=r}get status(){return this.raw.status}get statusText(){return this.raw.statusText}get headers(){return this.raw.headers}get ok(){return this.raw.ok}get url(){return this.raw.url}get connection(){return{}}get cache(){return ft(this.headers,this.status).cache}get rateLimit(){return ft(this.headers,this.status).rateLimit}links(){return Mn(this.headers)}get headerInfo(){return ft(this.headers,this.status)}json(){return this.raw.json()}text(){return this.raw.text()}async cleanText(){return Rn(await this.text())}blob(){return this.raw.blob()}read(){return this.raw.body}clone(){return new t(this.raw.clone(),this.timings)}sse(){return Pn(this.raw)}async*download(){if(!this.raw.body)return;let e=this.raw.body.getReader(),r=0,n=Number(this.raw.headers.get("content-length"))||void 0;for(;;){let{done:i,value:o}=await e.read();if(i)break;r+=o.length,yield{loaded:r,transferred:r,total:n,percent:n?r/n*100:void 0,direction:"download"}}}async*[Symbol.asyncIterator](){if(!this.raw.body)return;let e=this.raw.body.getReader();for(;;){let{done:r,value:n}=await e.read();if(r)break;yield n}}};function iy(t){if(!t)return{};let e={},r=t.toLowerCase().split(",").map(n=>n.trim());for(let n of r)if(n.startsWith("max-age="))e.maxAge=parseInt(n.slice(8),10);else if(n.startsWith("min-fresh="))e.minFresh=parseInt(n.slice(10),10);else if(n.startsWith("max-stale")){let i=n.indexOf("=");i!==-1?e.maxStale=parseInt(n.slice(i+1),10):e.maxStale=1/0}else n==="only-if-cached"?e.onlyIfCached=!0:n==="no-cache"?e.noCache=!0:n==="no-store"&&(e.noStore=!0);return e}function Hn(t){if(!t)return{};let e={},r=t.toLowerCase().split(",").map(n=>n.trim());for(let n of r)n.startsWith("max-age=")?e.maxAge=parseInt(n.slice(8),10):n.startsWith("s-maxage=")?e.sMaxAge=parseInt(n.slice(9),10):n.startsWith("stale-while-revalidate=")?e.staleWhileRevalidate=parseInt(n.slice(23),10):n.startsWith("stale-if-error=")?e.staleIfError=parseInt(n.slice(15),10):n==="no-cache"?e.noCache=!0:n==="no-store"?e.noStore=!0:n==="must-revalidate"?e.mustRevalidate=!0:n==="private"?e.isPrivate=!0:n==="public"&&(e.isPublic=!0);return e}function xo(t,e){let r=(e-t.timestamp)/1e3;if(t.sMaxAge!==void 0)return r<t.sMaxAge;if(t.maxAge!==void 0)return r<t.maxAge;if(t.expires!==void 0)return e<t.expires;if(t.lastModified){let n=new Date(t.lastModified).getTime();if(!isNaN(n)){let i=t.headers.date?new Date(t.headers.date).getTime():t.timestamp;if(!isNaN(i)&&i>n){let s=(i-n)/1e3*.1;return r<s}}}return!1}function vo(t,e,r){let n=(e-t.timestamp)/1e3,i=t.sMaxAge??t.maxAge??1/0,o=i-n,s=xo(t,e);if(r.maxAge!==void 0&&n>r.maxAge)return{allowed:!1,reason:"exceeds-request-max-age"};if(r.minFresh!==void 0&&(!s||o<r.minFresh))return{allowed:!1,reason:"insufficient-freshness"};if(r.onlyIfCached)return{allowed:!0};if(!s&&r.maxStale===void 0)return{allowed:!1,reason:"stale-not-acceptable"};if(!s&&r.maxStale!==void 0){let c=n-i;if(r.maxStale!==1/0&&c>r.maxStale)return{allowed:!1,reason:"exceeds-max-stale"}}return{allowed:!0}}function oy(t,e){if(!t.staleWhileRevalidate)return!1;let r=(e-t.timestamp)/1e3,n=t.sMaxAge??t.maxAge??0;return r-n<t.staleWhileRevalidate}function mc(t,e){let r=new Headers(t.headers);return e.etag&&r.set("If-None-Match",e.etag),e.lastModified&&r.set("If-Modified-Since",e.lastModified),new Ct(t.url,{method:t.method,headers:r,body:t.body,signal:t.signal,throwHttpErrors:!1,timeout:t.timeout,onUploadProgress:t.onUploadProgress,onDownloadProgress:t.onDownloadProgress,maxResponseSize:t.maxResponseSize})}async function Rt(t,e,r,n,i,o){if(n.vary){let s=o(r,n.vary);await t.set(s,n,i);let c={...n,body:""};await t.set(e,c,i)}else await t.set(e,n,i)}async function Pt(t,e,r){let n={};t.headers.forEach((c,u)=>{n[u]=c});let i=Hn(t.headers.get("Cache-Control")),o,s=t.headers.get("Expires");if(s){let c=new Date(s);isNaN(c.getTime())||(o=c.getTime())}return{status:t.status,statusText:t.statusText,headers:n,body:e.body,bodyEncoding:e.bodyEncoding,timestamp:r,etag:t.headers.get("ETag")||void 0,lastModified:t.headers.get("Last-Modified")||void 0,vary:t.headers.get("Vary")||void 0,expires:o,...i}}function ht(t,e){let r=new Headers(t.headers);if(r.set("X-Cache",e),r.set("X-Cache-Age",String(Math.floor((Date.now()-t.timestamp)/1e3))),e==="stale"||e==="stale-error"){let o=e==="stale"?110:111,s=e==="stale"?"Response is Stale":"Revalidation Failed",c=r.get("Warning");c?r.set("Warning",`${c}, ${o} - "${s}"`):r.set("Warning",`${o} - "${s}"`)}let n=t.bodyEncoding==="base64"?ny(t.body)??t.body:t.body,i=new Response(n,{status:t.status,statusText:t.statusText,headers:r});return new Tr(i)}function fc(t={}){let e=t.storage||Y0(),r=t.strategy||"cache-first",n=t.ttl||60*1e3,i=t.methods||["GET"],o=t.respectCacheControl!==!1,s=t.forceRevalidate===!0,c=t.keyGenerator||((l,d)=>{let p=`${l.method}:${l.url}`;if(l.method!=="GET"&&l.method!=="HEAD"&&l.body)try{let m=Z0(l.body);m&&m.length>0&&(p+=`:${ey(m)}`)}catch{}if(d&&t.respectVary!==!1){let m=d.split(",").map(h=>h.trim().toLowerCase()),f=[];for(let h of m){if(h==="*")return`${p}:vary-*:${Date.now()}`;let g=l.headers.get(h);g&&f.push(`${h}=${g}`)}f.length>0&&(p+=`:vary:${f.join("|")}`)}return p}),u=async(l,d)=>{if(["POST","PUT","PATCH","DELETE","PROPPATCH","MKCOL","COPY","MOVE","LOCK","UNLOCK","LINK","UNLINK","PURGE"].includes(l.method)){let b=await d(l);return b.ok&&(await e.delete(`GET:${l.url}`),await e.delete(`HEAD:${l.url}`)),b}if(!i.includes(l.method))return d(l);let m=o?iy(l.headers.get("Cache-Control")):{};if(o&&m.noStore)return d(l);if(o){let b=l.headers.get("Pragma");if(b!=null&&b.includes("no-cache"))return d(l)}let f=c(l),h=f,g=Date.now(),y;if(t.respectVary!==!1){let b=await e.get(f);b!=null&&b.vary?(h=c(l,b.vary),y=await e.get(h)):b!=null&&b.body?y=b:y=void 0}else y=await e.get(h);if(m.onlyIfCached){if(!y){let x=new Response(null,{status:504,statusText:"Gateway Timeout"});return new Tr(x)}if(!vo(y,g,m).allowed){let x=new Response(null,{status:504,statusText:"Gateway Timeout"});return new Tr(x)}return ht(y,xo(y,g)?"hit":"stale")}let C=Object.keys(m).length>0;if(y&&o&&C&&r==="network-first"&&(vo(y,g,m).allowed||(y=void 0)),r==="network-only"){let b=await d(l);if(b.ok&&o&&!Hn(b.headers.get("Cache-Control")).noStore){let k=b.raw.clone(),v=await Lt(k);if(!v)return b;let w=await Pt(b,v,g),S=(w.sMaxAge??w.maxAge??n/1e3)*1e3;await Rt(e,f,l,w,S,c)}return b}if(r==="rfc-compliant"||r==="revalidate"){if(y){let x=xo(y,g),k=vo(y,g,m),v=y.etag||y.lastModified;if(!k.allowed&&!v)y=void 0;else{if(x&&!s&&!y.noCache&&!m.noCache)return ht(y,"hit");if(!x&&m.maxStale!==void 0&&!s&&!m.noCache)return ht(y,"stale")}}if(y){let x=mc(l,y);try{let k=await d(x);if(k.status===304){let v={...y,timestamp:g,etag:k.headers.get("ETag")||y.etag,lastModified:k.headers.get("Last-Modified")||y.lastModified},w=(v.sMaxAge??v.maxAge??n/1e3)*1e3,S=Math.max(w,n);return await e.set(h,v,S),ht(v,"revalidated")}if(k.ok&&!Hn(k.headers.get("Cache-Control")).noStore){let w=k.raw.clone(),S=await Lt(w);if(!S)return k;let A=await Pt(k,S,g),P=(A.sMaxAge??A.maxAge??n/1e3)*1e3,q=Math.max(P,n);await Rt(e,f,l,A,q,c)}return k}catch(k){if(y.staleIfError&&oy(y,g))return ht(y,"stale-error");throw k}}let b=await d(l);if(b.ok&&!Hn(b.headers.get("Cache-Control")).noStore){let k=b.raw.clone(),v=await Lt(k);if(!v)return b;let w=await Pt(b,v,g),S=(w.sMaxAge??w.maxAge??n/1e3)*1e3,A=Math.max(S,n);await Rt(e,f,l,w,A,c)}return b}if(r==="cache-first"){if(y)return ht(y,"hit");let b=await d(l);if(b.ok){let x=b.raw.clone(),k=await Lt(x);if(!k)return b;let v=await Pt(b,k,g);await Rt(e,f,l,v,n,c)}return b}if(r==="stale-while-revalidate"){if(y){let x=ht(y,"stale");return(async()=>{try{let k=mc(l,y),v=await d(k);if(v.status===304){let w={...y,timestamp:Date.now()};await e.set(h,w,n)}else if(v.ok){let w=v.raw.clone(),S=await Lt(w);if(!S)return;let A=await Pt(v,S,Date.now()),P=(A.sMaxAge??A.maxAge??n/1e3)*1e3,q=Math.max(P,n);await Rt(e,f,l,A,q,c)}}catch{}})(),x}let b=await d(l);if(b.ok){let x=b.raw.clone(),k=await Lt(x);if(!k)return b;let v=await Pt(b,k,g);await Rt(e,f,l,v,n,c)}return b}if(r==="network-first")try{let b=await d(l);if(b.ok){let x=b.raw.clone(),k=await Lt(x);if(!k)return b;let v=await Pt(b,k,g),w=(v.sMaxAge??v.maxAge??n/1e3)*1e3,S=Math.max(w,n);await Rt(e,f,l,v,S,c)}return b}catch(b){if(y)return ht(y,"stale-error");throw b}return d(l)};return l=>{l.use(u)}}function hc(t={}){let e=new Map,r=t.keyGenerator||(i=>i.method+":"+i.url),n=async(i,o)=>{if(i.method!=="GET"&&i.method!=="HEAD")return o(i);let s=r(i);if(e.has(s))return(await e.get(s)).clone();let c=o(i).then(u=>u).finally(()=>{e.delete(s)});e.set(s,c);try{let u=await c;return u.clone?u.clone():u}catch(u){throw u}};return i=>{i.use(n)}}function gc(t){let e={};if(!t)return e;let r=t.split(";");for(let n of r){let[i,...o]=n.split("="),s=i==null?void 0:i.trim(),c=o.join("=").trim();s&&(e[s]=decodeURIComponent(c||""))}return e}function ay(t,e){return e?gc(e)[t]||null:typeof document<"u"&&document.cookie&&gc(document.cookie)[t]||null}function yc(t={}){let{cookieName:e="XSRF-TOKEN",headerName:r="X-XSRF-TOKEN",token:n,cookies:i}=t;return async(o,s)=>{let c=n||ay(e,i);return c&&(o.headers.has(r)||o.headers.set(r,c)),s(o)}}function bc(t){return t?t===!0?yc():yc(t):null}V();var Ze=typeof TextEncoder<"u"?new TextEncoder:null,ye=globalThis.Buffer;function sy(){var t,e;return typeof globalThis<"u"&&!!((e=(t=globalThis.process)==null?void 0:t.versions)!=null&&e.node)}var ko=null;async function cy(){return ko||(ko=(async()=>{let t="node:zlib",e="node:util",r=await import(t),n=await import(e),i=n.promisify(r.gzip),o=n.promisify(r.deflate),s=n.promisify(r.brotliCompress);return{gzip:async c=>i(ye?ye.from(c):c),deflate:async c=>o(ye?ye.from(c):c),brotli:async c=>s(ye?ye.from(c):c)}})()),ko}function uy(t){return t?["text/","application/json","application/xml","application/javascript","application/x-www-form-urlencoded"].some(r=>t.includes(r)):!0}function ly(t){if(!t)return 0;if(typeof t=="string")return Ze?Ze.encode(t).length:ye?ye.from(t,"utf8").length:t.length;if(t instanceof ArrayBuffer||ArrayBuffer.isView(t))return t.byteLength;if(typeof Blob<"u"&&t instanceof Blob)return t.size;if(typeof t=="object")try{let e=JSON.stringify(t);return Ze?Ze.encode(e).length:ye?ye.from(e,"utf8").length:e.length}catch{return 0}return 0}function dy(t){if(!t)return null;if(typeof t=="string")return Ze?Ze.encode(t):ye?ye.from(t,"utf8"):null;if(typeof URLSearchParams<"u"&&t instanceof URLSearchParams){let e=t.toString();return Ze?Ze.encode(e):ye?ye.from(e,"utf8"):null}if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);if(typeof Blob<"u"&&t instanceof Blob)return null;if(typeof t=="object")try{let e=JSON.stringify(t);return Ze?Ze.encode(e):ye?ye.from(e,"utf8"):null}catch{return null}return null}async function py(t,e){if(sy()){let r=await cy();switch(e){case"gzip":return r.gzip(t);case"deflate":return r.deflate(t);case"br":return r.brotli(t);default:break}}if(typeof CompressionStream<"u"){if(e==="br")throw new he("Brotli compression is not available in browser environments.",{feature:e});let r=new CompressionStream(e),n=r.writable.getWriter(),i=t.buffer instanceof ArrayBuffer?t:new Uint8Array(t);await n.write(i),await n.close();let o=await new Response(r.readable).arrayBuffer();return new Uint8Array(o)}throw new he(`Unsupported compression algorithm: ${e}`,{feature:e})}function vc(t={}){let{algorithm:e="gzip",threshold:r=1024,force:n=!1,methods:i=["POST","PUT","PATCH"]}=t;return async(o,s)=>{if(!i.includes(o.method)||!o.body||o.headers.has("Content-Encoding"))return s(o);let u=o.headers.get("Content-Type");if(!uy(u))return s(o);let l=ly(o.body);if(!n&&l<r)return s(o);let d=dy(o.body);if(!d)return s(o);try{let p=await py(d,e);if(!n&&p.length>=d.length)return s(o);let m=new Headers(o.headers);m.set("Content-Encoding",e),m.set("Content-Length",p.length.toString());let f={...o,body:p,headers:m};return s(f)}catch{return s(o)}}}function wc(t){return t?t===!0?vc():vc(t):null}function my(t){let e=t.replace(/<\?xml[^?]*\?>/gi,"").replace(/<!--[\s\S]*?-->/g,"").trim();return xc(e)}function xc(t){let e=t.match(/^<(\w+)([^>]*)>([\s\S]*)<\/\1>$/);if(!e){let u=t.match(/^<(\w+)([^/>]*)\/>$/);if(u){let[,l,d]=u,p=So(d);return Object.keys(p).length>0?{[l]:p}:{[l]:null}}return qn(t.trim())}let[,r,n,i]=e,o=So(n),s=fy(i),c={};if(Object.keys(o).length>0&&(c["@attributes"]=o),typeof s=="string")return Object.keys(o).length>0?(c["#text"]=s,{[r]:c}):{[r]:s};if(Array.isArray(s))for(let u of s)for(let[l,d]of Object.entries(u))c[l]!==void 0?(Array.isArray(c[l])||(c[l]=[c[l]]),c[l].push(d)):c[l]=d;return{[r]:Object.keys(c).length>0?c:null}}function So(t){let e={},r=/(\w+)=["']([^"']*)["']/g,n;for(;(n=r.exec(t))!==null;)e[n[1]]=qn(n[2]);return e}function fy(t){let e=t.trim();if(!e)return"";if(!e.startsWith("<"))return qn(e);let r=[],n=e;for(;n.length>0&&(n=n.trim(),!!n);){let i=n.match(/^<(\w+)([^>]*)>/);if(!i){let p=n.indexOf("<");if(p>0){let m=n.substring(0,p).trim();m&&r.push({"#text":qn(m)}),n=n.substring(p);continue}break}let[o,s,c]=i;if(c.endsWith("/")||n.substring(o.length-1,o.length+1)==="/>"){let p=n.match(/^<(\w+)([^/>]*)\/?>/);if(p){let m=So(p[2]);r.push({[s]:Object.keys(m).length>0?{"@attributes":m}:null}),n=n.substring(p[0].length);continue}}let u=`</${s}>`,l=1,d=o.length;for(;l>0&&d<n.length;){let p=n.indexOf(`<${s}`,d),m=n.indexOf(u,d);if(m===-1)break;if(p!==-1&&p<m)n.substring(p).match(/^<\w+[^>]*\/>/)||l++,d=p+1;else if(l--,l===0){let f=n.substring(0,m+u.length);r.push(xc(f)),n=n.substring(m+u.length)}else d=m+1}if(l>0)break}return r}function qn(t){return t.replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&").replace(/"/g,'"').replace(/'/g,"'").replace(/&#(\d+);/g,(e,r)=>String.fromCharCode(parseInt(r,10))).replace(/&#x([0-9a-fA-F]+);/g,(e,r)=>String.fromCharCode(parseInt(r,16)))}function Ar(t,e){if(t==null)return e?`<${e}/>`:"";if(typeof t!="object")return e?`<${e}>${In(String(t))}</${e}>`:In(String(t));let r=Object.keys(t);if(r.length===1&&!e){let s=r[0];return Ar(t[s],s)}let n="",i="",o="";for(let s of r){let c=t[s];if(s==="@attributes")for(let[u,l]of Object.entries(c))i+=` ${u}="${In(String(l))}"`;else if(s==="#text")o=In(String(c));else if(Array.isArray(c))for(let u of c)n+=Ar(u,s);else n+=Ar(c,s)}return e?n||o?`<${e}${i}>${o}${n}</${e}>`:`<${e}${i}/>`:n}function In(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}async function Ok(t,e=my){let n=await(await t).text();return e(n)}pn();hn();V();var To=class{listeners=new Map;on(e,r){let n=this.listeners.get(e)??new Set;return n.add(r),this.listeners.set(e,n),this}once(e,r){let n=(...i)=>{this.off(e,n),r(...i)};return this.on(e,n)}off(e,r){let n=this.listeners.get(e);return n&&(n.delete(r),n.size===0&&this.listeners.delete(e)),this}removeListener(e,r){return this.off(e,r)}emit(e,...r){let n=this.listeners.get(e);if(!n)return!1;for(let i of[...n])i(...r);return!0}},$n=class extends To{concurrency;retries;retryDelay;queue=[];activeCount=0;paused=!1;stats={total:0,successful:0,failed:0};startTime=0;pendingRetries=0;isCancelled=!1;cancelReason=new _e("Request runner cancelled");retryTimers=new Map;timeoutId;abortUnsubscribe;constructor(e={}){super(),this.concurrency=e.concurrency||5,this.retries=e.retries??0,this.retryDelay=e.retryDelay??0}add(e,r={}){this.queueTask({id:r.id||Math.random().toString(36).slice(2),fn:e,priority:r.priority||0,retries:r.retries??this.retries,resolve:r.resolve}),r.trackTotal!==!1&&this.stats.total++,this.processNext()}async run(e,r,n={}){if(this.queue=[],this.activeCount=0,this.pendingRetries=0,this.stats={total:0,successful:0,failed:0},this.isCancelled=!1,this.retryTimers.size>0){for(let[,i]of this.retryTimers)clearTimeout(i);this.retryTimers.clear()}if(this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=void 0),this.abortUnsubscribe&&(this.abortUnsubscribe(),this.abortUnsubscribe=void 0),this.startTime=Date.now(),this.stats={total:e.length,successful:0,failed:0},this.isCancelled=!1,this.cancelReason=new _e("Request runner cancelled",{queueName:"request-runner",request:void 0}),n.signal){let i=n.signal;if(i.aborted){let o=i.reason instanceof Error?i.reason:new _e("Request runner signal was aborted",{queueName:"request-runner",request:void 0});this.cancelAll(o)}else{let o=()=>{let s=i.reason instanceof Error?i.reason:new _e("Request runner signal was aborted",{queueName:"request-runner",request:void 0});this.cancelAll(s)};i.addEventListener("abort",o,{once:!0}),this.abortUnsubscribe=()=>i.removeEventListener("abort",o)}}if(n.deadlineMs!==void 0){let i=n.deadlineMs;i<=0?this.cancelAll(new _e("Request runner deadline elapsed",{queueName:"request-runner",request:void 0})):this.timeoutId=setTimeout(()=>{this.cancelAll(new _e("Request runner deadline exceeded",{queueName:"request-runner",request:void 0}))},i)}try{let i=e.map((s,c)=>new Promise(u=>{this.add(()=>r(s,c),{priority:n.priority,id:String(c),retries:n.retries,resolve:u,trackTotal:!1})}));return{results:await Promise.all(i),stats:{...this.stats,duration:Date.now()-this.startTime}}}finally{this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=void 0),this.abortUnsubscribe&&(this.abortUnsubscribe(),this.abortUnsubscribe=void 0)}}queueTask(e){this.queue.push(e),this.queue.sort((r,n)=>n.priority-r.priority)}scheduleRetry(e,r){if(this.isCancelled){this.resolveTask(e,this.cancelReason);return}if(r<=0){this.queueTask(e),this.processNext();return}let n=`${e.id}-${Date.now()}-${Math.random().toString(16).slice(2,8)}`,i=()=>{this.retryTimers.delete(n),this.pendingRetries--,!this.isCancelled&&(this.queueTask(e),this.processNext())};this.retryTimers.set(n,setTimeout(()=>{if(this.isCancelled){this.pendingRetries--,this.retryTimers.delete(n),this.resolveTask(e,this.cancelReason);return}i()},r)),this.pendingRetries++}async processNext(){var r;if(this.isCancelled){this.resolveQueue();return}if(this.paused||this.activeCount>=this.concurrency||this.queue.length===0)return;let e=this.queue.shift();if(e){this.activeCount++,this.emit("taskStart",e);try{let n=await e.fn();this.stats.successful++,(r=e.resolve)==null||r.call(e,n),this.emit("taskComplete",{task:e,result:n})}catch(n){if(this.isCancelled){this.resolveTask(e,this.cancelReason);return}let i=e.retries??0;i>0?(e.retries=i-1,this.emit("taskRetry",{task:e,error:n,remaining:e.retries,delay:this.retryDelay}),this.scheduleRetry(e,this.retryDelay)):(this.resolveTask(e,n),this.emit("taskError",{task:e,error:n}))}finally{this.activeCount--,this.emit("progress",this.getProgress()),this.activeCount===0&&this.queue.length===0&&this.pendingRetries===0&&this.emit("drained"),this.processNext()}}}cancelAll(e){if(!this.isCancelled){this.isCancelled=!0,this.cancelReason=e;for(let[,r]of this.retryTimers)clearTimeout(r);this.retryTimers.clear(),this.pendingRetries=0,this.resolveQueue()}}resolveQueue(){for(;this.queue.length>0;){let e=this.queue.shift();e&&this.resolveTask(e,this.cancelReason)}}resolveTask(e,r){var n;e.resolve&&(this.stats.failed++,(n=e.resolve)==null||n.call(e,r))}getProgress(){let e=this.stats.successful+this.stats.failed;return{total:this.stats.total,completed:e,pending:this.queue.length,active:this.activeCount,percent:this.stats.total>0?e/this.stats.total*100:0}}};V();var Co=class{listeners=new Map;on(e,r){let n=this.listeners.get(e)??new Set;return n.add(r),this.listeners.set(e,n),this}once(e,r){let n=(...i)=>{this.off(e,n),r(...i)};return this.on(e,n)}off(e,r){let n=this.listeners.get(e);return n&&(n.delete(r),n.size===0&&this.listeners.delete(e)),this}removeListener(e,r){return this.off(e,r)}emit(e,...r){let n=this.listeners.get(e);if(!n)return!1;for(let i of[...n])i(...r);return!0}},On={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3};function Eo(){var t,e;return typeof globalThis<"u"&&!!((e=(t=globalThis.process)==null?void 0:t.versions)!=null&&e.node)}var Ao=null;async function kc(){return Ao||(Ao=import("undici")),Ao}async function hy(){if(Eo())return(await kc()).WebSocket;let t=globalThis.WebSocket;if(!t)throw new he("WebSocket is not available in this environment.",{feature:"websocket"});return t}function gy(t){return!!(t&&typeof t.getReader=="function")}var zn=class extends Co{ws=null;url;options;reconnectAttempts=0;reconnectTimer;heartbeatTimer;isClosed=!1;isReconnecting=!1;pongWatchdog;backoff;closedByUser=!1;constructor(e,r={}){super(),this.url=e,this.options={protocols:r.protocols||[],headers:r.headers||{},reconnect:r.reconnect??!1,reconnectDelay:r.reconnectDelay??1e3,maxReconnectAttempts:r.maxReconnectAttempts??5,heartbeatInterval:r.heartbeatInterval??3e4,heartbeatTimeout:r.heartbeatTimeout??1e4,dispatcher:r.dispatcher,proxy:r.proxy,tls:r.tls,perMessageDeflate:r.perMessageDeflate??!1},this.backoff={base:this.options.reconnectDelay,factor:2,jitter:!0,max:3e4}}async connect(){let e=await hy(),r=Eo(),n=r?{headers:this.options.headers,dispatcher:this.options.dispatcher,perMessageDeflate:this.options.perMessageDeflate}:void 0;if(r&&this.options.proxy){let i=typeof this.options.proxy=="string"?{url:this.options.proxy}:this.options.proxy,o=await kc();n.dispatcher=new o.ProxyAgent(i.url)}return r&&this.options.tls&&(n.tls=this.options.tls),new Promise((i,o)=>{try{this.ws=r?new e(this.url,this.options.protocols,n):new e(this.url,this.options.protocols),this.ws.addEventListener("open",()=>{this.reconnectAttempts=0,this.isReconnecting=!1,this.startHeartbeat(),this.emit("open"),i()}),this.ws.addEventListener("message",s=>{let c=s.data,u={data:c,isBinary:typeof c!="string"};this.emit("message",u),this.stopPongWatchdog()}),this.ws.addEventListener("close",s=>{this.stopHeartbeat(),this.stopPongWatchdog(),this.emit("close",s.code,s.reason),!this.closedByUser&&!this.isClosed&&this.options.reconnect&&this.attemptReconnect()}),this.ws.addEventListener("error",s=>{let c=(s==null?void 0:s.error)instanceof Error?s.error:new sn("WebSocket connection error",{host:this.url,retriable:!0});this.emit("error",c),o(c)})}catch(s){o(s)}})}async send(e,r){if(!this.ws||this.ws.readyState!==On.OPEN)throw new cn("WebSocket is not connected",{expectedState:"open",actualState:this.ws?"closed":"not-created"});let n=(r==null?void 0:r.awaitDrain)??!1,i=(r==null?void 0:r.highWaterMark)??16*1024;this.ws.send(e),n&&await this.waitForDrain(i)}async sendStream(e,r){if(gy(e)){let n=e.getReader();for(;;){let{done:i,value:o}=await n.read();if(i)break;await this.send(o,r)}return}for await(let n of e)await this.send(n,r)}sendJSON(e){this.send(JSON.stringify(e))}close(e=1e3,r=""){this.isClosed=!0,this.closedByUser=!0,this.stopHeartbeat(),this.clearReconnectTimer(),this.ws&&(this.ws.close(e,r),this.ws=null)}ping(){if(!this.ws||this.ws.readyState!==On.OPEN)return;let e=this.ws;if(typeof e.ping=="function")try{e.ping();return}catch{}try{this.ws.send("__heartbeat__")}catch{}}get readyState(){var e;return((e=this.ws)==null?void 0:e.readyState)??On.CLOSED}get isConnected(){var e;return((e=this.ws)==null?void 0:e.readyState)===On.OPEN}toReadable(){if(!this.ws)return null;let e=this.ws;return e.readable&&typeof e.readable.getReader=="function"?e.readable:null}async pipeFrom(e,r){await this.sendStream(e,r)}async pipeTo(e){var n;let r=this.toReadable();if(!r)throw new pe("WebSocket has no readable stream",{streamType:"websocket",retriable:!1});if(e&&typeof e.getWriter=="function"){await r.pipeTo(e);return}if(Eo()){let i="node:stream",o="node:stream/promises",s=await import(i),c=await import(o),u=typeof((n=s.Readable)==null?void 0:n.fromWeb)=="function"?s.Readable.fromWeb(r):s.Readable.from(r);await c.pipeline(u,e);return}throw new pe("Destination stream is not supported in this environment",{streamType:"websocket",retriable:!1})}async*[Symbol.asyncIterator](){let e=[],r=null,n=!1,i=s=>{r?(r(s),r=null):e.push(s)},o=()=>{n=!0,r&&(r(null),r=null)};this.on("message",i),this.on("close",o);try{for(;;)if(e.length>0)yield e.shift();else{if(n)break;let s=await new Promise(c=>{r=c});if(s)yield s;else break}}finally{this.off("message",i),this.off("close",o)}}attemptReconnect(){if(this.isReconnecting)return;if(this.options.maxReconnectAttempts>0&&this.reconnectAttempts>=this.options.maxReconnectAttempts){this.emit("max-reconnect-attempts");return}this.isReconnecting=!0,this.reconnectAttempts++;let e=this.backoff.base*Math.pow(this.backoff.factor,this.reconnectAttempts-1),r=this.backoff.max?Math.min(e,this.backoff.max):e,n=this.backoff.jitter?yy(r):r;this.emit("reconnecting",this.reconnectAttempts,n),this.reconnectTimer=setTimeout(()=>{this.connect().catch(i=>{this.emit("reconnect-error",i)})},n)}clearReconnectTimer(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=void 0)}startHeartbeat(){this.options.heartbeatInterval<=0||(this.heartbeatTimer=setInterval(()=>{this.isConnected&&(this.ping(),this.startPongWatchdog())},this.options.heartbeatInterval))}stopHeartbeat(){this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=void 0),this.stopPongWatchdog()}startPongWatchdog(){this.stopPongWatchdog(),!(this.options.heartbeatTimeout<=0)&&(this.pongWatchdog=setTimeout(()=>{var e;this.emit("heartbeat-timeout"),!this.closedByUser&&this.options.reconnect&&((e=this.ws)==null||e.close(4e3,"heartbeat timeout"))},this.options.heartbeatTimeout))}stopPongWatchdog(){this.pongWatchdog&&(clearTimeout(this.pongWatchdog),this.pongWatchdog=void 0)}getBufferedAmount(){var e;return((e=this.ws)==null?void 0:e.bufferedAmount)??0}async waitForDrain(e){this.getBufferedAmount()<=e||await new Promise(n=>{let i=()=>{this.getBufferedAmount()<=e||!this.isConnected?n():setTimeout(i,10)};setTimeout(i,10)})}};function yy(t){let e=.2*t;return t-e+Math.random()*(2*e)}V();function by(){var t,e;return typeof globalThis<"u"&&!!((e=(t=globalThis.process)==null?void 0:t.versions)!=null&&e.node)}var Do=null;async function vy(){if(!by())throw new he("WHOIS is only available in Node.js environments.",{feature:"whois"});return Do||(Do=import("node:net")),Do}var wy={com:"whois.verisign-grs.com",net:"whois.verisign-grs.com",org:"whois.pir.org",info:"whois.afilias.net",biz:"whois.biz",us:"whois.nic.us",uk:"whois.nic.uk",ca:"whois.cira.ca",de:"whois.denic.de",fr:"whois.afnic.fr",au:"whois.aunic.net",jp:"whois.jprs.jp",cn:"whois.cnnic.cn",ru:"whois.tcinet.ru",br:"whois.registro.br",eu:"whois.eu",io:"whois.nic.io",co:"whois.nic.co",me:"whois.nic.me",tv:"whois.nic.tv",cc:"whois.nic.cc",ws:"whois.website.ws",mobi:"whois.dotmobiregistry.net",asia:"whois.nic.asia",tel:"whois.nic.tel",pro:"whois.registrypro.pro",aero:"whois.aero",cat:"whois.cat",coop:"whois.nic.coop",jobs:"whois.nic.jobs",museum:"whois.museum",travel:"whois.nic.travel",xxx:"whois.nic.xxx",app:"whois.nic.google",dev:"whois.nic.google",ai:"whois.nic.ai"};function xy(t){let e=t.toLowerCase().split(".");return e[e.length-1]}function ky(t,e){if(e)return e;let r=/^(\d{1,3}\.){3}\d{1,3}$/,n=/^([0-9a-fA-F]{0,4}:){2,7}[0-9a-fA-F]{0,4}$/;if(r.test(t)||n.test(t))return"whois.arin.net";let i=xy(t);return wy[i]||"whois.iana.org"}function Sy(t){let e={},r=t.split(`
|
|
63
|
-
`);for(let n of r){if(n.startsWith("%")||n.startsWith("#")||!n.trim())continue;let i=n.indexOf(":");if(i===-1)continue;let o=n.substring(0,i).trim().toLowerCase(),s=n.substring(i+1).trim();!o||!s||(e[o]?Array.isArray(e[o])?e[o].push(s):e[o]=[e[o],s]:e[o]=s)}return e}function
|
|
64
|
-
`);for(let r of e)if(r.includes("whois server:")||r.includes("referral url:")){let n=r.match(/whois\.[\w.-]+/);if(n)return n[0]}return null}async function
|
|
65
|
-
`)}),u.on("data",d=>{c+=d.toString("utf-8")}),u.on("end",()=>{clearTimeout(l),o(c)}),u.on("error",d=>{clearTimeout(l);let p=(d==null?void 0:d.message)||(d==null?void 0:d.code)||"Connection failed",m=new $(`WHOIS query failed: ${p}`,void 0,void 0,["Verify the WHOIS server is reachable and correct.","Check network/firewall settings blocking WHOIS port 43.","Retry the query; transient network issues can occur."]);m.code=d==null?void 0:d.code,s(m)}),u.on("close",d=>{if(clearTimeout(l),d&&!c){let p=new $("WHOIS connection closed unexpectedly",void 0,void 0,["The WHOIS server may be rate limiting requests.","Try again in a few seconds.","Some TLDs have unreliable WHOIS servers."]);p.code="ECONNRESET",s(p)}})})}async function Lo(t,e={}){let{server:r,port:n=43,timeout:i=1e4,follow:o=!0}=e,s=t.trim().toLowerCase(),c=ky(s,r),u=await Sc(c,s,n,i);if(o&&!r){let d=Ty(u);d&&d!==c&&(c=d,u=await Sc(c,s,n,i))}let l=Sy(u);return{raw:u,query:s,server:c,data:l}}async function Tc(t,e){try{let n=(await Lo(t,e)).raw.toLowerCase();return["no match","not found","no entries found","no data found","status: available","status: free"].some(o=>n.includes(o))}catch{return!1}}var Ay=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,Cy=/^[\u0020-\u003A\u003D-\u007E]*$/,Cr=class{cookies=new Map;getCookieString(e){let r=new URL(e),n=r.hostname,i=r.pathname||"/",o=r.protocol==="https:",s=Date.now(),c=[];for(let[u,l]of this.cookies.entries())if(this.domainMatches(n,u)){for(let[d,p]of l.entries())if(this.pathMatches(i,d))for(let m of p.values()){if(this.isExpired(m,s)){p.delete(m.name);continue}m.secure&&!o||c.push(m)}}return c.sort((u,l)=>{let d=l.path.length-u.path.length;return d!==0?d:u.createdAt-l.createdAt}),c.map(u=>`${u.name}=${u.value}`).join("; ")}setCookie(e,r){let n=new URL(r),i=n.hostname,o=n.pathname||"/",s=this.parseCookie(e,i,o);if(!s||!this.domainMatches(i,s.domain))return;this.cookies.has(s.domain)||this.cookies.set(s.domain,new Map);let c=this.cookies.get(s.domain);c.has(s.path)||c.set(s.path,new Map),c.get(s.path).set(s.name,s)}clear(){this.cookies.clear()}clearDomain(e){this.cookies.delete(e)}getAllCookies(){let e=[];for(let r of this.cookies.values())for(let n of r.values())for(let i of n.values())e.push(i);return e}parseCookie(e,r,n){let i=e.split(";").map(m=>m.trim());if(i.length===0||!i[0])return null;let[o,...s]=i,c=o.indexOf("=");if(c===-1)return null;let u=o.substring(0,c).trim(),l=o.substring(c+1).trim();if(!u)return null;let d=this.decode(l),p={name:u,value:d,domain:r,path:this.defaultPath(n),secure:!1,httpOnly:!1,createdAt:Date.now()};for(let m of s){let f=m.toLowerCase();if(f==="secure")p.secure=!0;else if(f==="httponly")p.httpOnly=!0;else if(f==="partitioned")p.partitioned=!0;else if(f.startsWith("domain=")){let h=m.substring(7).trim();h.startsWith(".")&&(h=h.substring(1)),Ay.test(h)&&(p.domain=h.toLowerCase())}else if(f.startsWith("path=")){let h=m.substring(5).trim();(!h||Cy.test(h))&&(p.path=h||"/")}else if(f.startsWith("expires=")){let h=m.substring(8).trim(),g=new Date(h);Number.isFinite(g.valueOf())&&(p.expires=g)}else if(f.startsWith("max-age=")){let h=m.substring(8).trim();/^-?\d+$/.test(h)&&(p.maxAge=parseInt(h,10))}else if(f.startsWith("samesite=")){let h=m.substring(9).trim().toLowerCase();h==="strict"?p.sameSite="Strict":h==="lax"?p.sameSite="Lax":h==="none"&&(p.sameSite="None")}else if(f.startsWith("priority=")){let h=m.substring(9).trim().toLowerCase();h==="low"?p.priority="Low":h==="medium"?p.priority="Medium":h==="high"&&(p.priority="High")}}return p}decode(e){if(e.indexOf("%")===-1)return e;try{return decodeURIComponent(e)}catch{return e}}domainMatches(e,r){let n=e.toLowerCase(),i=r.toLowerCase();return!!(n===i||n.endsWith("."+i))}pathMatches(e,r){return!!(e===r||e.startsWith(r)&&(r.endsWith("/")||e[r.length]==="/"))}defaultPath(e){if(!e||!e.startsWith("/"))return"/";let r=e.lastIndexOf("/");return r===0?"/":e.substring(0,r)}isExpired(e,r){if(e.maxAge!==void 0){if(e.maxAge<=0)return!0;let n=e.createdAt+e.maxAge*1e3;return r>=n}return e.expires?r>=e.expires.getTime():!1}};var xa=null;async function n2(){return xa||(xa=(await Promise.resolve().then(()=>(dl(),ll))).ScrapeDocument),xa}function pl(t){let e=Promise.resolve(t),r=async i=>{let o=await n2(),s=await e,c=await s.text();return o.create(c,{baseUrl:(i==null?void 0:i.baseUrl)||s.url,...i})},n=e;return n.scrape=async i=>r(i),n.links=async i=>(await r()).links(i),n.images=async i=>(await r()).images(i),n.meta=async()=>(await r()).meta(),n.openGraph=async()=>(await r()).openGraph(),n.twitterCard=async()=>(await r()).twitterCard(),n.jsonLd=async()=>(await r()).jsonLd(),n.forms=async i=>(await r()).forms(i),n.tables=async i=>(await r()).tables(i),n.scripts=async()=>(await r()).scripts(),n.styles=async()=>(await r()).styles(),n.extract=async i=>(await r()).extract(i),n}function Gr(){var t,e;return typeof globalThis<"u"&&!!((e=(t=globalThis.process)==null?void 0:t.versions)!=null&&e.node)}var Pi=class{factory;transport;resolving;dispatchFn;constructor(e){this.factory=e,this.dispatchFn=this.initialDispatch.bind(this)}async initialDispatch(e){return this.transport||(this.resolving||(this.resolving=this.factory().then(r=>(this.transport=r,this.dispatchFn=n=>this.transport.dispatch(n),r))),this.transport=await this.resolving),this.transport.dispatch(e)}dispatch(e){return this.dispatchFn(e)}async warmup(){!this.transport&&!this.resolving&&(this.resolving=this.factory().then(e=>(this.transport=e,this.dispatchFn=r=>this.transport.dispatch(r),e))),await this.resolving}};function ad(){return Gr()?new Pi(async()=>{let{CurlTransport:t}=await Promise.resolve().then(()=>(yl(),gl));return new t}):{async dispatch(t){throw new Me("Curl transport is only available in Node.js environments.",{configKey:"useCurl",request:t})}}}var Ni=class{factory;storage;resolving;constructor(e){this.factory=e}async getStorage(){return this.storage||(this.resolving||(this.resolving=this.factory().then(e=>(this.storage=e,e))),this.storage=await this.resolving),this.storage}async get(e){return(await this.getStorage()).get(e)}async set(e,r,n){return(await this.getStorage()).set(e,r,n)}async delete(e){return(await this.getStorage()).delete(e)}};function Ex(t){if(!Gr())throw new Me("File cache storage is only available in Node.js environments.",{configKey:"cache.driver"});return new Ni(async()=>{let{FileStorage:e}=await Promise.resolve().then(()=>(kl(),xl));return new e(t)})}function Dx(){return Gr()?new Ni(async()=>{let{MemoryStorage:t}=await Promise.resolve().then(()=>(bo(),yo));return new t}):new Yt}var Ga=class{instancePromise;constructor(e){this.instancePromise=e()}get[Symbol.toStringTag](){return"HlsPromise"}then(e,r){return this.instancePromise.then(({instance:n})=>n.then(e,r))}catch(e){return this.then(null,e)}finally(e){return this.instancePromise.then(({instance:r})=>r.finally(e))}cancel(){this.instancePromise.then(({instance:e})=>e.cancel()).catch(()=>{})}async download(e){let{instance:r}=await this.instancePromise;return r.download(e)}async*stream(){let{instance:e}=await this.instancePromise;yield*e.stream()}async pipe(e){let{instance:r}=await this.instancePromise;return r.pipe(e)}async info(){let{instance:e}=await this.instancePromise;return e.info()}},Mi=class{static get version(){return ec()}static getVersion(){return ro()}static getVersionInfo(){return tc()}baseUrl;middlewares;hooks;transport;curlTransport;defaultHeaders;defaultHeadersObj;defaultParams;paginationConfig;handler;fastHandler;logger;debugEnabled;agentManager;concurrencyConfig;requestPool;maxResponseSize;runtimeEventBus;shouldEmitRuntimeEvents;runtimeEventBusProviderAttached=!1;runtimeEventListenerCount=0;cookieJar;cookieIgnoreInvalid=!1;defaultTimeout;http2Enabled=!1;transportKind="custom";canFastPath=!1;_aiConfig;_ai;constructor(e={}){var p,m,f,h,g,y,C,b,x,k;this.baseUrl=e.baseUrl||"",this.middlewares=e.middlewares||[],this.defaultTimeout=e.timeout,this.hooks={beforeRequest:((p=e.hooks)==null?void 0:p.beforeRequest)||[],afterResponse:((m=e.hooks)==null?void 0:m.afterResponse)||[],onError:((f=e.hooks)==null?void 0:f.onError)||[],onRetry:((h=e.hooks)==null?void 0:h.onRetry)||[],onUrlResolved:((g=e.hooks)==null?void 0:g.onUrlResolved)||[]},this.defaultHeaders={"User-Agent":Dn(),...e.headers||{}},this.defaultHeadersObj=new Headers(this.defaultHeaders),this.defaultParams=((y=e.defaults)==null?void 0:y.params)||{},this.paginationConfig=e.pagination,this.maxResponseSize=e.maxResponseSize;let r=e.runtimeEventBus;r?this.runtimeEventBus={on:(v,w)=>r.on(v,w),emit:(v,w)=>r.emit(v,w)}:this.runtimeEventBus=Ws(),this.shouldEmitRuntimeEvents=r!==void 0,this.runtimeEventBusProviderAttached=r!==void 0,this.debugEnabled=e.debug===!0,this.debugEnabled?this.logger=e.logger??Kt:e.logger&&(this.logger=e.logger),this.concurrencyConfig=Js({concurrency:e.concurrency,http2:e.http2});let n=Ys(e.http2);if(this.http2Enabled=n.enabled??!1,e.transport)this.transport=e.transport,this.transportKind="custom";else if(e.useCurl)this.debugEnabled&&console.log("[DEBUG] Using Curl Transport"),this.transport=ad(),this.transportKind="curl";else if(Gr()){this.debugEnabled&&console.log("[DEBUG] Using Undici Transport");let v={...this.concurrencyConfig.agent,allowH2:n.enabled,maxConcurrentStreams:(C=n.resolvedSettings)==null?void 0:C.maxConcurrentStreams},w={proxy:e.proxy,http2:n.enabled?n:void 0,dns:e.dns,socketPath:e.socketPath,tls:e.tls,observability:e.observability,expectContinue:e.expectContinue,protocolCache:!0};this.transport=new Pi(async()=>{if(!this.agentManager){let A=Cn(),{AgentManager:P}=await Promise.resolve().then(()=>(Oa(),Fl));this.agentManager=new P(v,A)}let{UndiciTransport:S}=await Promise.resolve().then(()=>(Ql(),Jl));return new S(this.baseUrl||void 0,{...w,agent:this.agentManager})}),this.transportKind="undici"}else this.debugEnabled&&console.log("[DEBUG] Using Fetch Transport"),this.transport=new Dt,this.transportKind="fetch";let i=(v,w={})=>{let S=An(v);o.push(Vs(v,{...S,...w}))},o=[];if(e.retry&&i(ac(e.retry),{name:"recker:retry",priority:120,scope:"request"}),this.concurrencyConfig.max<1/0||this.concurrencyConfig.requestsPerInterval<1/0?(this.requestPool=new Tn({concurrency:this.concurrencyConfig.max,requestsPerInterval:this.concurrencyConfig.requestsPerInterval,interval:this.concurrencyConfig.interval}),i(v=>{v.middlewares.unshift(this.requestPool.asMiddleware())},{name:"recker:request-pool",priority:130,scope:"runtime"}),this.debugEnabled&&this.logger&&this.logger.debug(`Global concurrency limit: ${this.concurrencyConfig.max} concurrent requests`)):this.debugEnabled&&this.logger&&this.logger.debug("No global concurrency limit (allows unlimited parallel batches)"),e.dedup&&i(hc(e.dedup),{name:"recker:dedup",priority:110,scope:"request"}),e.cache){let v;e.cache.storage?v=e.cache.storage:e.cache.driver==="file"?v=Ex(e.cache.fileStoragePath):v=Dx(),i(fc({...e.cache,storage:v}),{name:"recker:cache",priority:100,scope:"request"})}e.plugins&&e.plugins.forEach((v,w)=>{let S=An(v);i(v,{name:(S==null?void 0:S.name)||`user-plugin:${w}`,priority:(S==null?void 0:S.priority)??90-w,scope:(S==null?void 0:S.scope)||"request"})});let{ordered:s,debugOrder:c}=Xs(Ks(o));if(s.forEach(({plugin:v})=>{v(this)}),this.debugEnabled&&this.logger&&this.logger.debug(`Applied plugins in order: ${c.join(" | ")}`),e.compression){let v=wc(e.compression);v&&this.middlewares.push(v)}if(e.xsrf){let v=bc(e.xsrf);v&&this.middlewares.push(v)}e.cookies&&this.setupCookieJar(e.cookies),e._aiConfig&&(this._aiConfig=e._aiConfig),this.maxResponseSize!==void 0&&this.middlewares.push(this.createMaxSizeMiddleware(this.maxResponseSize)),this.debugEnabled&&this.logger&&this.middlewares.unshift(this.createLoggingMiddleware(this.logger)),this.handler=this.composeMiddlewares(),this.fastHandler=this.composeFastHandler();let u=(((b=this.hooks.beforeRequest)==null?void 0:b.length)??0)>0||(((x=this.hooks.afterResponse)==null?void 0:x.length)??0)>0||(((k=this.hooks.onError)==null?void 0:k.length)??0)>0,l=!!this.cookieJar||!!this.defaultTimeout||this.maxResponseSize!==void 0||this.debugEnabled,d=this.middlewares.length>0;this.canFastPath=!u&&!l&&!d}createLoggingMiddleware(e){return async(r,n)=>{let i=Date.now();e.debug({type:"request",method:r.method,url:r.url},`\u2192 ${r.method} ${r.url}`);try{let o=await n(r),s=Date.now()-i;return e.debug({type:"response",method:r.method,url:r.url,status:o.status,duration:s,timings:o.timings},`\u2190 ${o.status} ${r.method} ${r.url} (${s}ms)`),o}catch(o){let s=Date.now()-i,c=o;throw e.error({type:"error",method:r.method,url:r.url,error:c.message,errorName:c.name,duration:s},`\u2716 ${r.method} ${r.url} - ${c.message}`),o}}}createMaxSizeMiddleware(e){return async(r,n)=>{let i=await n(r),o=r.maxResponseSize??e;if(o===void 0)return i;let s=i.headers.get("Content-Length");if(s){let c=parseInt(s,10);if(!isNaN(c)&&c>o)throw new St(o,c,r)}return i}}setupCookieJar(e){e===!0?this.cookieJar=new Cr:typeof e=="object"&&(e.jar===!0?this.cookieJar=new Cr:e.jar&&typeof e.jar=="object"&&(this.cookieJar=e.jar),this.cookieIgnoreInvalid=e.ignoreInvalid??!1),this.cookieJar&&this.middlewares.push(this.createCookieMiddleware())}createCookieMiddleware(){return async(e,r)=>{let n=this.cookieJar;try{let s=await n.getCookieString(e.url);if(s){let c=e.headers.get("cookie"),u=c?`${c}; ${s}`:s;e.headers.set("cookie",u)}}catch(s){if(!this.cookieIgnoreInvalid)throw s}let i=await r(e),o=i.headers.get("set-cookie");if(o){let s=this.splitSetCookieHeader(o);for(let c of s)try{await n.setCookie(c,e.url)}catch(u){if(!this.cookieIgnoreInvalid)throw u}}return i}}splitSetCookieHeader(e){return e.split(/,(?=\s*[a-zA-Z0-9_-]+=)/g).map(r=>r.trim())}async dispatch(e){let r=st(e),n=r?Date.now():0;r&&this.runtimeEventBus.emit("transport:start",{context:r,req:e});try{if(e.useCurl&&this.transportKind!=="curl"){this.curlTransport||(this.curlTransport=ad());let o=await this.curlTransport.dispatch(e);return r&&this.runtimeEventBus.emit("transport:finish",{context:r,req:e,durationMs:Date.now()-n}),o}let i=await this.transport.dispatch(e);return r&&this.runtimeEventBus.emit("transport:finish",{context:r,req:e,durationMs:Date.now()-n}),i}catch(i){throw r&&this.runtimeEventBus.emit("transport:error",{context:r,req:e,error:i instanceof Error?i:new Error(String(i))}),i}}composeMiddlewares(){var i,o;let e=[...this.middlewares],r=this,n=async s=>{let c=await r.dispatch(s);if(s.throwHttpErrors!==!1&&!c.ok&&c.status!==304)throw new Je(c,s);return c};return((i=this.hooks.beforeRequest)!=null&&i.length||(o=this.hooks.afterResponse)!=null&&o.length)&&e.unshift(this.hooksMiddleware),e.length===0?n:e.reduceRight((s,c)=>u=>c(u,s),n)}composeFastHandler(){let e=this;return async r=>{let n=await e.dispatch(r);if(r.throwHttpErrors!==!1&&!n.ok&&n.status!==304)throw new Je(n,r);return n}}hooksMiddleware=async(e,r)=>{let n=e;if(this.hooks.beforeRequest&&this.hooks.beforeRequest.length>0)for(let i of this.hooks.beforeRequest){let o=await i(n);o&&(n=o)}try{let i=await r(n);if(this.hooks.afterResponse&&this.hooks.afterResponse.length>0)for(let o of this.hooks.afterResponse){let s=await o(n,i);s&&(i=s)}return i}catch(i){if(this.hooks.onError&&this.hooks.onError.length>0)for(let o of this.hooks.onError){let s=await o(i,n);if(s)return s}throw i}};use(e){return this.middlewares.push(e),this.handler=this.composeMiddlewares(),this.canFastPath=!1,this}beforeRequest(e){return this.hooks.beforeRequest||(this.hooks.beforeRequest=[]),this.hooks.beforeRequest.push(e),this.handler=this.composeMiddlewares(),this.canFastPath=!1,this}afterResponse(e){return this.hooks.afterResponse||(this.hooks.afterResponse=[]),this.hooks.afterResponse.push(e),this.handler=this.composeMiddlewares(),this.canFastPath=!1,this}onError(e){return this.hooks.onError||(this.hooks.onError=[]),this.hooks.onError.push(e),this.handler=this.composeMiddlewares(),this.canFastPath=!1,this}onRuntimeEvent(e,r){this.shouldEmitRuntimeEvents=!0,this.runtimeEventListenerCount+=1;let n=this.runtimeEventBus.on(e,r);return()=>{n(),this.runtimeEventListenerCount>0&&(this.runtimeEventListenerCount-=1),!this.runtimeEventBusProviderAttached&&this.runtimeEventListenerCount===0&&(this.shouldEmitRuntimeEvents=!1)}}buildUrl(e,r){let n=r&&Object.keys(r).length>0,i=Object.keys(this.defaultParams).length>0;if(!n&&!i){if(e.startsWith("http://")||e.startsWith("https://"))return e;if(this.baseUrl){let d=this.baseUrl.endsWith("/")?this.baseUrl.slice(0,-1):this.baseUrl,p=e.startsWith("/")?e:"/"+e;return d+p}return e}let o=e,s={...this.defaultParams,...r},c=new Set;o.includes(":")&&(o=o.replace(/:([a-zA-Z0-9_]+)/g,(d,p)=>{if(s&&p in s)return c.add(p),encodeURIComponent(String(s[p]));throw new un(`Missing required path parameter: ${p}`,{field:p,value:void 0})}));let u;if(o.startsWith("http://")||o.startsWith("https://"))u=o;else if(this.baseUrl){let d=this.baseUrl.endsWith("/")?this.baseUrl.slice(0,-1):this.baseUrl,p=o.startsWith("/")?o:"/"+o;u=d+p}else throw new Me("Relative path provided without a baseUrl or explicit transport.",{configKey:"baseUrl"});let l=Object.keys(s).filter(d=>!c.has(d));if(l.length>0){let d=l.map(m=>`${encodeURIComponent(m)}=${encodeURIComponent(String(s[m]))}`),p=u.includes("?")?"&":"?";return u+p+d.join("&")}return u}request(e,r={}){var b,x;let n=this.buildUrl(e,r.params),i=(((b=this.hooks.beforeRequest)==null?void 0:b.length)??0)>0||this.middlewares.length>0,o=this.shouldEmitRuntimeEvents||!!r.correlationId||!!r.tenant||!!r.traceId||!!r.policySource||(((x=r.policyTags)==null?void 0:x.length)??0)>0,s=()=>js({correlationId:r.correlationId,tenant:r.tenant,policyTags:r.policyTags,policySource:r.policySource,traceId:r.traceId});if(this.canFastPath&&!r.headers&&!r.timeout&&!r.signal&&r.maxResponseSize===void 0){let k=new Ct(n,{method:r.method||"GET",body:r.body,headers:this.defaultHeadersObj,throwHttpErrors:r.throwHttpErrors});o&&(k=Qt(k,s()));let v=st(k),w=Date.now();v&&this.runtimeEventBus.emit("request:start",{context:v,req:k});let S=this.fastHandler(k);return v&&(S=S.then(A=>(this.runtimeEventBus.emit("request:success",{context:v,req:k,res:A,durationMs:Date.now()-w}),A),A=>{let P=A instanceof Error?A:new Error(String(A));throw this.runtimeEventBus.emit("request:failed",{context:v,req:k,error:P,durationMs:Date.now()-w}),A})),new wr(S)}let u;r.headers?(u=new Headers(this.defaultHeadersObj),(r.headers instanceof Headers?r.headers:new Headers(r.headers)).forEach((v,w)=>u.set(w,v))):i?u=new Headers(this.defaultHeadersObj):u=this.defaultHeadersObj;let l=r.timeout||r.signal||this.defaultTimeout,d,p=r.signal,m,f;if(l){if(d=new AbortController,p=d.signal,r.signal){let v=r.signal,w=()=>d.abort(v.reason);v.aborted?w():(v.addEventListener("abort",w,{once:!0}),f=()=>v.removeEventListener("abort",w))}let k=r.timeout??this.defaultTimeout;if(k){let v=typeof k=="number"?k:k.request;v&&(m=setTimeout(()=>d.abort(new Y(h,{phase:"request",timeout:v})),v))}}let h=new Ct(n,{...r,headers:u,signal:p,maxResponseSize:r.maxResponseSize??this.maxResponseSize});o&&(h=Qt(h,s()));let g=st(h),y=Date.now();g&&this.runtimeEventBus.emit("request:start",{context:g,req:h});let C=this.handler(h);return g&&(C=C.then(k=>(this.runtimeEventBus.emit("request:success",{context:g,req:h,res:k,durationMs:Date.now()-y}),k),k=>{let v=k instanceof Error?k:new Error(String(k));throw this.runtimeEventBus.emit("request:failed",{context:g,req:h,error:v,durationMs:Date.now()-y}),k})),(m||f)&&C.finally(()=>{m&&clearTimeout(m),f==null||f()}).catch(()=>{}),new wr(C,d)}get(e,r={}){return this.request(e,{...r,method:"GET"})}async warmup(){this.transport&&"warmup"in this.transport&&typeof this.transport.warmup=="function"&&await this.transport.warmup()}async batch(e,r={}){let n=r.mapResponse??(c=>c),i=r.concurrency??this.concurrencyConfig.runner.concurrency;return await new $n({concurrency:i,retries:this.concurrencyConfig.runner.retries,retryDelay:this.concurrencyConfig.runner.retryDelay}).run(e,async c=>{let u=await this.request(c.path,c.options);return n(u)},{signal:r.signal,deadlineMs:r.deadlineMs})}multi(e,r={}){return this.batch(e,r)}requestWithBody(e,r,n,i){let o=n,s=i;if((s===void 0||typeof s=="object"&&s!==null&&Object.keys(s).length===0)&&kn(n)){let k=n;(k.json!==void 0||k.form!==void 0||k.xml!==void 0||k.yaml!==void 0||k.csv!==void 0||k.body!==void 0||k.headers!==void 0||k.timeout!==void 0||k.retry!==void 0||k.hooks!==void 0||k.searchParams!==void 0||k.params!==void 0)&&(s=n,o=void 0)}s=s||{};let{json:u,form:l,xml:d,yaml:p,csv:m,...f}=s,h=o,g;l!==void 0?(h=Sn(l),g=void 0):u!==void 0?(h=JSON.stringify(u),g="application/json"):d!==void 0?(h=`<?xml version="1.0" encoding="UTF-8"?>
|
|
66
|
-
`+Ar(d),g="application/xml"):p!==void 0?(h=Ns(p),g="application/yaml"):m!==void 0?(h=Ms(m),g="text/csv"):f.body!==void 0&&(h=f.body);let{body:y,contentType:C}=_s(h),b=new Headers(f.headers),
|
|
62
|
+
`+f.slice(6):f.slice(6):f.startsWith("event: ")?l=f.slice(7):f.startsWith("id: ")?d=f.slice(4):f.startsWith("retry: ")&&(p=parseInt(f.slice(7),10));u&&(yield{data:u,event:l,id:d,retry:p})}}}async*download(){if(!this.raw.body)return;let e=this.raw.body.getReader(),r=0,n=Number(this.raw.headers.get("content-length"))||void 0;for(;;){let{done:i,value:o}=await e.read();if(i)break;r+=o.length,yield{loaded:r,transferred:r,total:n,percent:n?r/n*100:void 0,direction:"download"}}}async*[Symbol.asyncIterator](){if(!this.raw.body)return;let e=this.raw.body.getReader();for(;;){let{done:r,value:n}=await e.read();if(r)break;yield n}}};async function*ao(t,e,r={},n={}){let i=e,o=1,s=n.maxPages||1/0;for(;i&&o<=s;){let c=await t.request(i,{...r,method:"GET"}),u=await c.json();if(yield{data:u,response:c,pageNumber:o},o++,n.getNextUrl){i=n.getNextUrl(c,u,i);continue}if(n.nextCursorPath){let d=n.nextCursorPath.split("."),p=u;for(let m of d)if(p&&typeof p=="object")p=p[m];else{p=void 0;break}if(p){let m=n.pageParam||"cursor",f=i.startsWith("http"),h=new URL(f?i:`http://dummy-base${i.startsWith("/")?"":"/"}${i}`);h.searchParams.set(m,String(p)),f?i=h.toString():i=h.pathname+h.search}else i=null;continue}if(n.pageParam){let d=i.startsWith("http"),p=new URL(d?i:`http://dummy-base${i.startsWith("/")?"":"/"}${i}`),m=n.pageParam,f=parseInt(p.searchParams.get(m)||String(o-1),10),h=!1;if(Array.isArray(u)&&u.length===0&&(h=!0),u&&Array.isArray(u.data)&&u.data.length===0&&(h=!0),u&&Array.isArray(u.items)&&u.items.length===0&&(h=!0),h)i=null;else{let g=(isNaN(f)?1:f)+1;p.searchParams.set(m,String(g)),i=d?p.toString():p.pathname+p.search}continue}let l=c.headers.get("link");if(l){let d=l.match(/<([^>]+)>;\s*rel="next"/);i=d?d[1]:null}else i=null}}async function*oc(t,e,r={},n={}){for await(let i of ao(t,e,r,n)){let o=i.data,s=[];n.getItems?s=n.getItems(o):n.resultsPath?s=n.resultsPath.split(".").reduce((c,u)=>c==null?void 0:c[u],o)||[]:Array.isArray(o)?s=o:o&&Array.isArray(o.data)?s=o.data:o&&Array.isArray(o.items)?s=o.items:s=[o];for(let c of s)yield c}}V();function so(t,e,r,n,i){let o;switch(n){case"linear":o=e*t;break;case"exponential":o=Math.pow(2,t-1)*e;break;case"decorrelated":let s=t===1?e:Math.pow(2,t-2)*e;o=Math.random()*(s*3-e)+e;break;default:o=e*t}if(o=Math.min(o,r),i){let s=o*.25,c=Math.random()*s*2-s;o+=c}return Math.max(0,Math.floor(o))}function F0(t){if(!t)return;let e=parseInt(t,10);if(!isNaN(e)&&e>=0)return e*1e3;let r=Date.parse(t);if(!isNaN(r)){let n=r-Date.now();return n>0?n:void 0}}function ac(t={}){let e=t.maxAttempts||3,r=t.delay||1e3,n=t.maxDelay||3e4,i=t.backoff||"exponential",o=t.jitter!==!1,s=t.statusCodes||[408,429,500,502,503,504],c=t.onRetry,u=t.respectRetryAfter!==!1,l=p=>{if(p instanceof je||p instanceof Y)return!0;if(p instanceof Je)return s.includes(p.status);let m=Wi(p);if(m&&m.canRetry===!1)return!1;if(m)return m.canRetry;if(p&&typeof p=="object"&&"code"in p){let f=p.code;return f==="ECONNRESET"||f==="ETIMEDOUT"||f==="ENOTFOUND"}return!1},d=t.shouldRetry||l;return p=>{let m=(h,g,y,C)=>{let b=p.runtimeEventBus;if(!(b!=null&&b.emit))return;let w=st(C);if(!w)return;let x=Wi(h);b.emit("request:retry",{context:w,req:C,attempt:g,delayMs:y,reason:(x==null?void 0:x.reason)||(h==null?void 0:h.message)||"retry requested"})},f=async(h,g)=>{var C,b;let y=0;for(;;)try{y++;let w=await g(h);if(y<e&&!w.ok&&s.includes(w.status)){let x;if(u){let T=F0(w.headers.get("Retry-After"));x=T!==void 0?Math.min(T,n):so(y,r,n,i,o)}else x=so(y,r,n,i,o);let v=new Je(w,h);if(m(v,y,x,h),c&&c(y,v,x),(C=p.hooks)!=null&&C.onRetry)for(let T of p.hooks.onRetry)await T(v,y,x,h);await new Promise(T=>setTimeout(T,x));continue}return w}catch(w){if(y<e&&d(w)){let x=so(y,r,n,i,o);if(m(w,y,x,h),c&&c(y,w,x),(b=p.hooks)!=null&&b.onRetry)for(let v of p.hooks.onRetry)await v(w,y,x,h);await new Promise(v=>setTimeout(v,x));continue}throw w}};p.use(f)}}var Yt=class{store=new Map;async get(e){let r=this.store.get(e);return r?r.expiresAt>0&&r.expiresAt<=Date.now()?(this.store.delete(e),null):r.value:null}async set(e,r,n){if(!Number.isFinite(n)||n<=0){this.store.delete(e);return}this.store.set(e,{value:r,expiresAt:Date.now()+n})}async delete(e){this.store.delete(e)}};co();uo();Nn();Fn();var Zt=typeof TextEncoder<"u"?new TextEncoder:null,Ye=globalThis.Buffer;function Q0(){var t,e;return typeof globalThis<"u"&&!!((e=(t=globalThis.process)==null?void 0:t.versions)!=null&&e.node)}var wo=class{factory;storage;resolving;constructor(e){this.factory=e}async getStorage(){return this.storage||(this.resolving||(this.resolving=this.factory().then(e=>(this.storage=e,e))),this.storage=await this.resolving),this.storage}async get(e){return(await this.getStorage()).get(e)}async set(e,r,n){return(await this.getStorage()).set(e,r,n)}async delete(e){return(await this.getStorage()).delete(e)}};function Y0(){return Q0()?new wo(async()=>{let{MemoryStorage:t}=await Promise.resolve().then(()=>(bo(),yo));return new t}):new Yt}function Z0(t){if(t==null)return null;if(typeof t=="string")return Zt?Zt.encode(t):Ye?Ye.from(t,"utf8"):null;if(typeof URLSearchParams<"u"&&t instanceof URLSearchParams){let e=t.toString();return Zt?Zt.encode(e):Ye?Ye.from(e,"utf8"):null}if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);if(typeof Blob<"u"&&t instanceof Blob)return null;if(typeof t=="object")try{let e=JSON.stringify(t);return Zt?Zt.encode(e):Ye?Ye.from(e,"utf8"):null}catch{return null}return null}function ey(t){let e=0xcbf29ce484222325n,r=0x100000001b3n;for(let n of t)e^=BigInt(n),e=e*r&0xffffffffffffffffn;return e.toString(16).padStart(16,"0")}function ty(t){if(!t)return!0;let e=t.toLowerCase();return!!(e.startsWith("text/")||e.includes("json")||e.includes("xml")||e.includes("yaml")||e.includes("csv")||e.includes("javascript")||e.includes("ecmascript")||e.includes("x-www-form-urlencoded")||e.includes("graphql")||e.includes("event-stream")||e.includes("+json")||e.includes("+xml"))}function ry(t){if(Ye)return Ye.from(t).toString("base64");if(typeof btoa<"u"){let e="";for(let n=0;n<t.length;n+=32768){let i=t.subarray(n,n+32768);e+=String.fromCharCode(...i)}return btoa(e)}return null}function ny(t){if(Ye)return Ye.from(t,"base64");if(typeof atob<"u"){let e=atob(t),r=new Uint8Array(e.length);for(let n=0;n<e.length;n++)r[n]=e.charCodeAt(n);return r}return null}async function Lt(t){let e=t.headers.get("content-type");if(ty(e))return{body:await t.text(),bodyEncoding:"utf8"};let r=await t.arrayBuffer(),n=new Uint8Array(r),i=ry(n);return i===null?null:{body:i,bodyEncoding:"base64"}}var Sr=class t{raw;timings;constructor(e,r){this.raw=e,this.timings=r}get status(){return this.raw.status}get statusText(){return this.raw.statusText}get headers(){return this.raw.headers}get ok(){return this.raw.ok}get url(){return this.raw.url}get connection(){return{}}get cache(){return ft(this.headers,this.status).cache}get rateLimit(){return ft(this.headers,this.status).rateLimit}links(){return Mn(this.headers)}get headerInfo(){return ft(this.headers,this.status)}json(){return this.raw.json()}text(){return this.raw.text()}async cleanText(){return Rn(await this.text())}blob(){return this.raw.blob()}read(){return this.raw.body}clone(){return new t(this.raw.clone(),this.timings)}sse(){return Pn(this.raw)}async*download(){if(!this.raw.body)return;let e=this.raw.body.getReader(),r=0,n=Number(this.raw.headers.get("content-length"))||void 0;for(;;){let{done:i,value:o}=await e.read();if(i)break;r+=o.length,yield{loaded:r,transferred:r,total:n,percent:n?r/n*100:void 0,direction:"download"}}}async*[Symbol.asyncIterator](){if(!this.raw.body)return;let e=this.raw.body.getReader();for(;;){let{done:r,value:n}=await e.read();if(r)break;yield n}}};function iy(t){if(!t)return{};let e={},r=t.toLowerCase().split(",").map(n=>n.trim());for(let n of r)if(n.startsWith("max-age="))e.maxAge=parseInt(n.slice(8),10);else if(n.startsWith("min-fresh="))e.minFresh=parseInt(n.slice(10),10);else if(n.startsWith("max-stale")){let i=n.indexOf("=");i!==-1?e.maxStale=parseInt(n.slice(i+1),10):e.maxStale=1/0}else n==="only-if-cached"?e.onlyIfCached=!0:n==="no-cache"?e.noCache=!0:n==="no-store"&&(e.noStore=!0);return e}function In(t){if(!t)return{};let e={},r=t.toLowerCase().split(",").map(n=>n.trim());for(let n of r)n.startsWith("max-age=")?e.maxAge=parseInt(n.slice(8),10):n.startsWith("s-maxage=")?e.sMaxAge=parseInt(n.slice(9),10):n.startsWith("stale-while-revalidate=")?e.staleWhileRevalidate=parseInt(n.slice(23),10):n.startsWith("stale-if-error=")?e.staleIfError=parseInt(n.slice(15),10):n==="no-cache"?e.noCache=!0:n==="no-store"?e.noStore=!0:n==="must-revalidate"?e.mustRevalidate=!0:n==="private"?e.isPrivate=!0:n==="public"&&(e.isPublic=!0);return e}function xo(t,e){let r=(e-t.timestamp)/1e3;if(t.sMaxAge!==void 0)return r<t.sMaxAge;if(t.maxAge!==void 0)return r<t.maxAge;if(t.expires!==void 0)return e<t.expires;if(t.lastModified){let n=new Date(t.lastModified).getTime();if(!isNaN(n)){let i=t.headers.date?new Date(t.headers.date).getTime():t.timestamp;if(!isNaN(i)&&i>n){let s=(i-n)/1e3*.1;return r<s}}}return!1}function vo(t,e,r){let n=(e-t.timestamp)/1e3,i=t.sMaxAge??t.maxAge??1/0,o=i-n,s=xo(t,e);if(r.maxAge!==void 0&&n>r.maxAge)return{allowed:!1,reason:"exceeds-request-max-age"};if(r.minFresh!==void 0&&(!s||o<r.minFresh))return{allowed:!1,reason:"insufficient-freshness"};if(r.onlyIfCached)return{allowed:!0};if(!s&&r.maxStale===void 0)return{allowed:!1,reason:"stale-not-acceptable"};if(!s&&r.maxStale!==void 0){let c=n-i;if(r.maxStale!==1/0&&c>r.maxStale)return{allowed:!1,reason:"exceeds-max-stale"}}return{allowed:!0}}function oy(t,e){if(!t.staleWhileRevalidate)return!1;let r=(e-t.timestamp)/1e3,n=t.sMaxAge??t.maxAge??0;return r-n<t.staleWhileRevalidate}function mc(t,e){let r=new Headers(t.headers);return e.etag&&r.set("If-None-Match",e.etag),e.lastModified&&r.set("If-Modified-Since",e.lastModified),new Ct(t.url,{method:t.method,headers:r,body:t.body,signal:t.signal,throwHttpErrors:!1,timeout:t.timeout,onUploadProgress:t.onUploadProgress,onDownloadProgress:t.onDownloadProgress,maxResponseSize:t.maxResponseSize})}async function Rt(t,e,r,n,i,o){if(n.vary){let s=o(r,n.vary);await t.set(s,n,i);let c={...n,body:""};await t.set(e,c,i)}else await t.set(e,n,i)}async function Pt(t,e,r){let n={};t.headers.forEach((c,u)=>{n[u]=c});let i=In(t.headers.get("Cache-Control")),o,s=t.headers.get("Expires");if(s){let c=new Date(s);isNaN(c.getTime())||(o=c.getTime())}return{status:t.status,statusText:t.statusText,headers:n,body:e.body,bodyEncoding:e.bodyEncoding,timestamp:r,etag:t.headers.get("ETag")||void 0,lastModified:t.headers.get("Last-Modified")||void 0,vary:t.headers.get("Vary")||void 0,expires:o,...i}}function ht(t,e){let r=new Headers(t.headers);if(r.set("X-Cache",e),r.set("X-Cache-Age",String(Math.floor((Date.now()-t.timestamp)/1e3))),e==="stale"||e==="stale-error"){let o=e==="stale"?110:111,s=e==="stale"?"Response is Stale":"Revalidation Failed",c=r.get("Warning");c?r.set("Warning",`${c}, ${o} - "${s}"`):r.set("Warning",`${o} - "${s}"`)}let n=t.bodyEncoding==="base64"?ny(t.body)??t.body:t.body,i=new Response(n,{status:t.status,statusText:t.statusText,headers:r});return new Sr(i)}function fc(t={}){let e=t.storage||Y0(),r=t.strategy||"cache-first",n=t.ttl||60*1e3,i=t.methods||["GET"],o=t.respectCacheControl!==!1,s=t.forceRevalidate===!0,c=t.keyGenerator||((l,d)=>{let p=`${l.method}:${l.url}`;if(l.method!=="GET"&&l.method!=="HEAD"&&l.body)try{let m=Z0(l.body);m&&m.length>0&&(p+=`:${ey(m)}`)}catch{}if(d&&t.respectVary!==!1){let m=d.split(",").map(h=>h.trim().toLowerCase()),f=[];for(let h of m){if(h==="*")return`${p}:vary-*:${Date.now()}`;let g=l.headers.get(h);g&&f.push(`${h}=${g}`)}f.length>0&&(p+=`:vary:${f.join("|")}`)}return p}),u=async(l,d)=>{if(["POST","PUT","PATCH","DELETE","PROPPATCH","MKCOL","COPY","MOVE","LOCK","UNLOCK","LINK","UNLINK","PURGE"].includes(l.method)){let b=await d(l);return b.ok&&(await e.delete(`GET:${l.url}`),await e.delete(`HEAD:${l.url}`)),b}if(!i.includes(l.method))return d(l);let m=o?iy(l.headers.get("Cache-Control")):{};if(o&&m.noStore)return d(l);if(o){let b=l.headers.get("Pragma");if(b!=null&&b.includes("no-cache"))return d(l)}let f=c(l),h=f,g=Date.now(),y;if(t.respectVary!==!1){let b=await e.get(f);b!=null&&b.vary?(h=c(l,b.vary),y=await e.get(h)):b!=null&&b.body?y=b:y=void 0}else y=await e.get(h);if(m.onlyIfCached){if(!y){let w=new Response(null,{status:504,statusText:"Gateway Timeout"});return new Sr(w)}if(!vo(y,g,m).allowed){let w=new Response(null,{status:504,statusText:"Gateway Timeout"});return new Sr(w)}return ht(y,xo(y,g)?"hit":"stale")}let C=Object.keys(m).length>0;if(y&&o&&C&&r==="network-first"&&(vo(y,g,m).allowed||(y=void 0)),r==="network-only"){let b=await d(l);if(b.ok&&o&&!In(b.headers.get("Cache-Control")).noStore){let x=b.raw.clone(),v=await Lt(x);if(!v)return b;let T=await Pt(b,v,g),k=(T.sMaxAge??T.maxAge??n/1e3)*1e3;await Rt(e,f,l,T,k,c)}return b}if(r==="rfc-compliant"||r==="revalidate"){if(y){let w=xo(y,g),x=vo(y,g,m),v=y.etag||y.lastModified;if(!x.allowed&&!v)y=void 0;else{if(w&&!s&&!y.noCache&&!m.noCache)return ht(y,"hit");if(!w&&m.maxStale!==void 0&&!s&&!m.noCache)return ht(y,"stale")}}if(y){let w=mc(l,y);try{let x=await d(w);if(x.status===304){let v={...y,timestamp:g,etag:x.headers.get("ETag")||y.etag,lastModified:x.headers.get("Last-Modified")||y.lastModified},T=(v.sMaxAge??v.maxAge??n/1e3)*1e3,k=Math.max(T,n);return await e.set(h,v,k),ht(v,"revalidated")}if(x.ok&&!In(x.headers.get("Cache-Control")).noStore){let T=x.raw.clone(),k=await Lt(T);if(!k)return x;let S=await Pt(x,k,g),P=(S.sMaxAge??S.maxAge??n/1e3)*1e3,q=Math.max(P,n);await Rt(e,f,l,S,q,c)}return x}catch(x){if(y.staleIfError&&oy(y,g))return ht(y,"stale-error");throw x}}let b=await d(l);if(b.ok&&!In(b.headers.get("Cache-Control")).noStore){let x=b.raw.clone(),v=await Lt(x);if(!v)return b;let T=await Pt(b,v,g),k=(T.sMaxAge??T.maxAge??n/1e3)*1e3,S=Math.max(k,n);await Rt(e,f,l,T,S,c)}return b}if(r==="cache-first"){if(y)return ht(y,"hit");let b=await d(l);if(b.ok){let w=b.raw.clone(),x=await Lt(w);if(!x)return b;let v=await Pt(b,x,g);await Rt(e,f,l,v,n,c)}return b}if(r==="stale-while-revalidate"){if(y){let w=ht(y,"stale");return(async()=>{try{let x=mc(l,y),v=await d(x);if(v.status===304){let T={...y,timestamp:Date.now()};await e.set(h,T,n)}else if(v.ok){let T=v.raw.clone(),k=await Lt(T);if(!k)return;let S=await Pt(v,k,Date.now()),P=(S.sMaxAge??S.maxAge??n/1e3)*1e3,q=Math.max(P,n);await Rt(e,f,l,S,q,c)}}catch{}})(),w}let b=await d(l);if(b.ok){let w=b.raw.clone(),x=await Lt(w);if(!x)return b;let v=await Pt(b,x,g);await Rt(e,f,l,v,n,c)}return b}if(r==="network-first")try{let b=await d(l);if(b.ok){let w=b.raw.clone(),x=await Lt(w);if(!x)return b;let v=await Pt(b,x,g),T=(v.sMaxAge??v.maxAge??n/1e3)*1e3,k=Math.max(T,n);await Rt(e,f,l,v,k,c)}return b}catch(b){if(y)return ht(y,"stale-error");throw b}return d(l)};return l=>{l.use(u)}}function hc(t={}){let e=new Map,r=t.keyGenerator||(i=>i.method+":"+i.url),n=async(i,o)=>{if(i.method!=="GET"&&i.method!=="HEAD")return o(i);let s=r(i);if(e.has(s))return(await e.get(s)).clone();let c=o(i).then(u=>u).finally(()=>{e.delete(s)});e.set(s,c);try{let u=await c;return u.clone?u.clone():u}catch(u){throw u}};return i=>{i.use(n)}}function gc(t){let e={};if(!t)return e;let r=t.split(";");for(let n of r){let[i,...o]=n.split("="),s=i==null?void 0:i.trim(),c=o.join("=").trim();s&&(e[s]=decodeURIComponent(c||""))}return e}function ay(t,e){return e?gc(e)[t]||null:typeof document<"u"&&document.cookie&&gc(document.cookie)[t]||null}function yc(t={}){let{cookieName:e="XSRF-TOKEN",headerName:r="X-XSRF-TOKEN",token:n,cookies:i}=t;return async(o,s)=>{let c=n||ay(e,i);return c&&(o.headers.has(r)||o.headers.set(r,c)),s(o)}}function bc(t){return t?t===!0?yc():yc(t):null}V();var Ze=typeof TextEncoder<"u"?new TextEncoder:null,ye=globalThis.Buffer;function sy(){var t,e;return typeof globalThis<"u"&&!!((e=(t=globalThis.process)==null?void 0:t.versions)!=null&&e.node)}var ko=null;async function cy(){return ko||(ko=(async()=>{let t="node:zlib",e="node:util",r=await import(t),n=await import(e),i=n.promisify(r.gzip),o=n.promisify(r.deflate),s=n.promisify(r.brotliCompress);return{gzip:async c=>i(ye?ye.from(c):c),deflate:async c=>o(ye?ye.from(c):c),brotli:async c=>s(ye?ye.from(c):c)}})()),ko}function uy(t){return t?["text/","application/json","application/xml","application/javascript","application/x-www-form-urlencoded"].some(r=>t.includes(r)):!0}function ly(t){if(!t)return 0;if(typeof t=="string")return Ze?Ze.encode(t).length:ye?ye.from(t,"utf8").length:t.length;if(t instanceof ArrayBuffer||ArrayBuffer.isView(t))return t.byteLength;if(typeof Blob<"u"&&t instanceof Blob)return t.size;if(typeof t=="object")try{let e=JSON.stringify(t);return Ze?Ze.encode(e).length:ye?ye.from(e,"utf8").length:e.length}catch{return 0}return 0}function dy(t){if(!t)return null;if(typeof t=="string")return Ze?Ze.encode(t):ye?ye.from(t,"utf8"):null;if(typeof URLSearchParams<"u"&&t instanceof URLSearchParams){let e=t.toString();return Ze?Ze.encode(e):ye?ye.from(e,"utf8"):null}if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);if(typeof Blob<"u"&&t instanceof Blob)return null;if(typeof t=="object")try{let e=JSON.stringify(t);return Ze?Ze.encode(e):ye?ye.from(e,"utf8"):null}catch{return null}return null}async function py(t,e){if(sy()){let r=await cy();switch(e){case"gzip":return r.gzip(t);case"deflate":return r.deflate(t);case"br":return r.brotli(t);default:break}}if(typeof CompressionStream<"u"){if(e==="br")throw new he("Brotli compression is not available in browser environments.",{feature:e});let r=new CompressionStream(e),n=r.writable.getWriter(),i=t.buffer instanceof ArrayBuffer?t:new Uint8Array(t);await n.write(i),await n.close();let o=await new Response(r.readable).arrayBuffer();return new Uint8Array(o)}throw new he(`Unsupported compression algorithm: ${e}`,{feature:e})}function vc(t={}){let{algorithm:e="gzip",threshold:r=1024,force:n=!1,methods:i=["POST","PUT","PATCH"]}=t;return async(o,s)=>{if(!i.includes(o.method)||!o.body||o.headers.has("Content-Encoding"))return s(o);let u=o.headers.get("Content-Type");if(!uy(u))return s(o);let l=ly(o.body);if(!n&&l<r)return s(o);let d=dy(o.body);if(!d)return s(o);try{let p=await py(d,e);if(!n&&p.length>=d.length)return s(o);let m=new Headers(o.headers);m.set("Content-Encoding",e),m.set("Content-Length",p.length.toString());let f={...o,body:p,headers:m};return s(f)}catch{return s(o)}}}function wc(t){return t?t===!0?vc():vc(t):null}function my(t){let e=t.replace(/<\?xml[^?]*\?>/gi,"").replace(/<!--[\s\S]*?-->/g,"").trim();return xc(e)}function xc(t){let e=t.match(/^<(\w+)([^>]*)>([\s\S]*)<\/\1>$/);if(!e){let u=t.match(/^<(\w+)([^/>]*)\/>$/);if(u){let[,l,d]=u,p=To(d);return Object.keys(p).length>0?{[l]:p}:{[l]:null}}return qn(t.trim())}let[,r,n,i]=e,o=To(n),s=fy(i),c={};if(Object.keys(o).length>0&&(c["@attributes"]=o),typeof s=="string")return Object.keys(o).length>0?(c["#text"]=s,{[r]:c}):{[r]:s};if(Array.isArray(s))for(let u of s)for(let[l,d]of Object.entries(u))c[l]!==void 0?(Array.isArray(c[l])||(c[l]=[c[l]]),c[l].push(d)):c[l]=d;return{[r]:Object.keys(c).length>0?c:null}}function To(t){let e={},r=/(\w+)=["']([^"']*)["']/g,n;for(;(n=r.exec(t))!==null;)e[n[1]]=qn(n[2]);return e}function fy(t){let e=t.trim();if(!e)return"";if(!e.startsWith("<"))return qn(e);let r=[],n=e;for(;n.length>0&&(n=n.trim(),!!n);){let i=n.match(/^<(\w+)([^>]*)>/);if(!i){let p=n.indexOf("<");if(p>0){let m=n.substring(0,p).trim();m&&r.push({"#text":qn(m)}),n=n.substring(p);continue}break}let[o,s,c]=i;if(c.endsWith("/")||n.substring(o.length-1,o.length+1)==="/>"){let p=n.match(/^<(\w+)([^/>]*)\/?>/);if(p){let m=To(p[2]);r.push({[s]:Object.keys(m).length>0?{"@attributes":m}:null}),n=n.substring(p[0].length);continue}}let u=`</${s}>`,l=1,d=o.length;for(;l>0&&d<n.length;){let p=n.indexOf(`<${s}`,d),m=n.indexOf(u,d);if(m===-1)break;if(p!==-1&&p<m)n.substring(p).match(/^<\w+[^>]*\/>/)||l++,d=p+1;else if(l--,l===0){let f=n.substring(0,m+u.length);r.push(xc(f)),n=n.substring(m+u.length)}else d=m+1}if(l>0)break}return r}function qn(t){return t.replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&").replace(/"/g,'"').replace(/'/g,"'").replace(/&#(\d+);/g,(e,r)=>String.fromCharCode(parseInt(r,10))).replace(/&#x([0-9a-fA-F]+);/g,(e,r)=>String.fromCharCode(parseInt(r,16)))}function Ar(t,e){if(t==null)return e?`<${e}/>`:"";if(typeof t!="object")return e?`<${e}>${Hn(String(t))}</${e}>`:Hn(String(t));let r=Object.keys(t);if(r.length===1&&!e){let s=r[0];return Ar(t[s],s)}let n="",i="",o="";for(let s of r){let c=t[s];if(s==="@attributes")for(let[u,l]of Object.entries(c))i+=` ${u}="${Hn(String(l))}"`;else if(s==="#text")o=Hn(String(c));else if(Array.isArray(c))for(let u of c)n+=Ar(u,s);else n+=Ar(c,s)}return e?n||o?`<${e}${i}>${o}${n}</${e}>`:`<${e}${i}/>`:n}function Hn(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}async function Ok(t,e=my){let n=await(await t).text();return e(n)}pn();hn();V();var So=class{listeners=new Map;on(e,r){let n=this.listeners.get(e)??new Set;return n.add(r),this.listeners.set(e,n),this}once(e,r){let n=(...i)=>{this.off(e,n),r(...i)};return this.on(e,n)}off(e,r){let n=this.listeners.get(e);return n&&(n.delete(r),n.size===0&&this.listeners.delete(e)),this}removeListener(e,r){return this.off(e,r)}emit(e,...r){let n=this.listeners.get(e);if(!n)return!1;for(let i of[...n])i(...r);return!0}},$n=class extends So{concurrency;retries;retryDelay;queue=[];activeCount=0;paused=!1;stats={total:0,successful:0,failed:0};startTime=0;pendingRetries=0;isCancelled=!1;cancelReason=new _e("Request runner cancelled");retryTimers=new Map;timeoutId;abortUnsubscribe;constructor(e={}){super(),this.concurrency=e.concurrency||5,this.retries=e.retries??0,this.retryDelay=e.retryDelay??0}add(e,r={}){this.queueTask({id:r.id||Math.random().toString(36).slice(2),fn:e,priority:r.priority||0,retries:r.retries??this.retries,resolve:r.resolve}),r.trackTotal!==!1&&this.stats.total++,this.processNext()}async run(e,r,n={}){if(this.queue=[],this.activeCount=0,this.pendingRetries=0,this.stats={total:0,successful:0,failed:0},this.isCancelled=!1,this.retryTimers.size>0){for(let[,i]of this.retryTimers)clearTimeout(i);this.retryTimers.clear()}if(this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=void 0),this.abortUnsubscribe&&(this.abortUnsubscribe(),this.abortUnsubscribe=void 0),this.startTime=Date.now(),this.stats={total:e.length,successful:0,failed:0},this.isCancelled=!1,this.cancelReason=new _e("Request runner cancelled",{queueName:"request-runner",request:void 0}),n.signal){let i=n.signal;if(i.aborted){let o=i.reason instanceof Error?i.reason:new _e("Request runner signal was aborted",{queueName:"request-runner",request:void 0});this.cancelAll(o)}else{let o=()=>{let s=i.reason instanceof Error?i.reason:new _e("Request runner signal was aborted",{queueName:"request-runner",request:void 0});this.cancelAll(s)};i.addEventListener("abort",o,{once:!0}),this.abortUnsubscribe=()=>i.removeEventListener("abort",o)}}if(n.deadlineMs!==void 0){let i=n.deadlineMs;i<=0?this.cancelAll(new _e("Request runner deadline elapsed",{queueName:"request-runner",request:void 0})):this.timeoutId=setTimeout(()=>{this.cancelAll(new _e("Request runner deadline exceeded",{queueName:"request-runner",request:void 0}))},i)}try{let i=e.map((s,c)=>new Promise(u=>{this.add(()=>r(s,c),{priority:n.priority,id:String(c),retries:n.retries,resolve:u,trackTotal:!1})}));return{results:await Promise.all(i),stats:{...this.stats,duration:Date.now()-this.startTime}}}finally{this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=void 0),this.abortUnsubscribe&&(this.abortUnsubscribe(),this.abortUnsubscribe=void 0)}}queueTask(e){this.queue.push(e),this.queue.sort((r,n)=>n.priority-r.priority)}scheduleRetry(e,r){if(this.isCancelled){this.resolveTask(e,this.cancelReason);return}if(r<=0){this.queueTask(e),this.processNext();return}let n=`${e.id}-${Date.now()}-${Math.random().toString(16).slice(2,8)}`,i=()=>{this.retryTimers.delete(n),this.pendingRetries--,!this.isCancelled&&(this.queueTask(e),this.processNext())};this.retryTimers.set(n,setTimeout(()=>{if(this.isCancelled){this.pendingRetries--,this.retryTimers.delete(n),this.resolveTask(e,this.cancelReason);return}i()},r)),this.pendingRetries++}async processNext(){var r;if(this.isCancelled){this.resolveQueue();return}if(this.paused||this.activeCount>=this.concurrency||this.queue.length===0)return;let e=this.queue.shift();if(e){this.activeCount++,this.emit("taskStart",e);try{let n=await e.fn();this.stats.successful++,(r=e.resolve)==null||r.call(e,n),this.emit("taskComplete",{task:e,result:n})}catch(n){if(this.isCancelled){this.resolveTask(e,this.cancelReason);return}let i=e.retries??0;i>0?(e.retries=i-1,this.emit("taskRetry",{task:e,error:n,remaining:e.retries,delay:this.retryDelay}),this.scheduleRetry(e,this.retryDelay)):(this.resolveTask(e,n),this.emit("taskError",{task:e,error:n}))}finally{this.activeCount--,this.emit("progress",this.getProgress()),this.activeCount===0&&this.queue.length===0&&this.pendingRetries===0&&this.emit("drained"),this.processNext()}}}cancelAll(e){if(!this.isCancelled){this.isCancelled=!0,this.cancelReason=e;for(let[,r]of this.retryTimers)clearTimeout(r);this.retryTimers.clear(),this.pendingRetries=0,this.resolveQueue()}}resolveQueue(){for(;this.queue.length>0;){let e=this.queue.shift();e&&this.resolveTask(e,this.cancelReason)}}resolveTask(e,r){var n;e.resolve&&(this.stats.failed++,(n=e.resolve)==null||n.call(e,r))}getProgress(){let e=this.stats.successful+this.stats.failed;return{total:this.stats.total,completed:e,pending:this.queue.length,active:this.activeCount,percent:this.stats.total>0?e/this.stats.total*100:0}}};V();var Co=class{listeners=new Map;on(e,r){let n=this.listeners.get(e)??new Set;return n.add(r),this.listeners.set(e,n),this}once(e,r){let n=(...i)=>{this.off(e,n),r(...i)};return this.on(e,n)}off(e,r){let n=this.listeners.get(e);return n&&(n.delete(r),n.size===0&&this.listeners.delete(e)),this}removeListener(e,r){return this.off(e,r)}emit(e,...r){let n=this.listeners.get(e);if(!n)return!1;for(let i of[...n])i(...r);return!0}},On={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3};function Eo(){var t,e;return typeof globalThis<"u"&&!!((e=(t=globalThis.process)==null?void 0:t.versions)!=null&&e.node)}var Ao=null;async function kc(){return Ao||(Ao=import("undici")),Ao}async function hy(){if(Eo())return(await kc()).WebSocket;let t=globalThis.WebSocket;if(!t)throw new he("WebSocket is not available in this environment.",{feature:"websocket"});return t}function gy(t){return!!(t&&typeof t.getReader=="function")}var zn=class extends Co{ws=null;url;options;reconnectAttempts=0;reconnectTimer;heartbeatTimer;isClosed=!1;isReconnecting=!1;pongWatchdog;backoff;closedByUser=!1;constructor(e,r={}){super(),this.url=e,this.options={protocols:r.protocols||[],headers:r.headers||{},reconnect:r.reconnect??!1,reconnectDelay:r.reconnectDelay??1e3,maxReconnectAttempts:r.maxReconnectAttempts??5,heartbeatInterval:r.heartbeatInterval??3e4,heartbeatTimeout:r.heartbeatTimeout??1e4,dispatcher:r.dispatcher,proxy:r.proxy,tls:r.tls,perMessageDeflate:r.perMessageDeflate??!1},this.backoff={base:this.options.reconnectDelay,factor:2,jitter:!0,max:3e4}}async connect(){let e=await hy(),r=Eo(),n=r?{headers:this.options.headers,dispatcher:this.options.dispatcher,perMessageDeflate:this.options.perMessageDeflate}:void 0;if(r&&this.options.proxy){let i=typeof this.options.proxy=="string"?{url:this.options.proxy}:this.options.proxy,o=await kc();n.dispatcher=new o.ProxyAgent(i.url)}return r&&this.options.tls&&(n.tls=this.options.tls),new Promise((i,o)=>{try{this.ws=r?new e(this.url,this.options.protocols,n):new e(this.url,this.options.protocols),this.ws.addEventListener("open",()=>{this.reconnectAttempts=0,this.isReconnecting=!1,this.startHeartbeat(),this.emit("open"),i()}),this.ws.addEventListener("message",s=>{let c=s.data,u={data:c,isBinary:typeof c!="string"};this.emit("message",u),this.stopPongWatchdog()}),this.ws.addEventListener("close",s=>{this.stopHeartbeat(),this.stopPongWatchdog(),this.emit("close",s.code,s.reason),!this.closedByUser&&!this.isClosed&&this.options.reconnect&&this.attemptReconnect()}),this.ws.addEventListener("error",s=>{let c=(s==null?void 0:s.error)instanceof Error?s.error:new sn("WebSocket connection error",{host:this.url,retriable:!0});this.emit("error",c),o(c)})}catch(s){o(s)}})}async send(e,r){if(!this.ws||this.ws.readyState!==On.OPEN)throw new cn("WebSocket is not connected",{expectedState:"open",actualState:this.ws?"closed":"not-created"});let n=(r==null?void 0:r.awaitDrain)??!1,i=(r==null?void 0:r.highWaterMark)??16*1024;this.ws.send(e),n&&await this.waitForDrain(i)}async sendStream(e,r){if(gy(e)){let n=e.getReader();for(;;){let{done:i,value:o}=await n.read();if(i)break;await this.send(o,r)}return}for await(let n of e)await this.send(n,r)}sendJSON(e){this.send(JSON.stringify(e))}close(e=1e3,r=""){this.isClosed=!0,this.closedByUser=!0,this.stopHeartbeat(),this.clearReconnectTimer(),this.ws&&(this.ws.close(e,r),this.ws=null)}ping(){if(!this.ws||this.ws.readyState!==On.OPEN)return;let e=this.ws;if(typeof e.ping=="function")try{e.ping();return}catch{}try{this.ws.send("__heartbeat__")}catch{}}get readyState(){var e;return((e=this.ws)==null?void 0:e.readyState)??On.CLOSED}get isConnected(){var e;return((e=this.ws)==null?void 0:e.readyState)===On.OPEN}toReadable(){if(!this.ws)return null;let e=this.ws;return e.readable&&typeof e.readable.getReader=="function"?e.readable:null}async pipeFrom(e,r){await this.sendStream(e,r)}async pipeTo(e){var n;let r=this.toReadable();if(!r)throw new pe("WebSocket has no readable stream",{streamType:"websocket",retriable:!1});if(e&&typeof e.getWriter=="function"){await r.pipeTo(e);return}if(Eo()){let i="node:stream",o="node:stream/promises",s=await import(i),c=await import(o),u=typeof((n=s.Readable)==null?void 0:n.fromWeb)=="function"?s.Readable.fromWeb(r):s.Readable.from(r);await c.pipeline(u,e);return}throw new pe("Destination stream is not supported in this environment",{streamType:"websocket",retriable:!1})}async*[Symbol.asyncIterator](){let e=[],r=null,n=!1,i=s=>{r?(r(s),r=null):e.push(s)},o=()=>{n=!0,r&&(r(null),r=null)};this.on("message",i),this.on("close",o);try{for(;;)if(e.length>0)yield e.shift();else{if(n)break;let s=await new Promise(c=>{r=c});if(s)yield s;else break}}finally{this.off("message",i),this.off("close",o)}}attemptReconnect(){if(this.isReconnecting)return;if(this.options.maxReconnectAttempts>0&&this.reconnectAttempts>=this.options.maxReconnectAttempts){this.emit("max-reconnect-attempts");return}this.isReconnecting=!0,this.reconnectAttempts++;let e=this.backoff.base*Math.pow(this.backoff.factor,this.reconnectAttempts-1),r=this.backoff.max?Math.min(e,this.backoff.max):e,n=this.backoff.jitter?yy(r):r;this.emit("reconnecting",this.reconnectAttempts,n),this.reconnectTimer=setTimeout(()=>{this.connect().catch(i=>{this.emit("reconnect-error",i)})},n)}clearReconnectTimer(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=void 0)}startHeartbeat(){this.options.heartbeatInterval<=0||(this.heartbeatTimer=setInterval(()=>{this.isConnected&&(this.ping(),this.startPongWatchdog())},this.options.heartbeatInterval))}stopHeartbeat(){this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=void 0),this.stopPongWatchdog()}startPongWatchdog(){this.stopPongWatchdog(),!(this.options.heartbeatTimeout<=0)&&(this.pongWatchdog=setTimeout(()=>{var e;this.emit("heartbeat-timeout"),!this.closedByUser&&this.options.reconnect&&((e=this.ws)==null||e.close(4e3,"heartbeat timeout"))},this.options.heartbeatTimeout))}stopPongWatchdog(){this.pongWatchdog&&(clearTimeout(this.pongWatchdog),this.pongWatchdog=void 0)}getBufferedAmount(){var e;return((e=this.ws)==null?void 0:e.bufferedAmount)??0}async waitForDrain(e){this.getBufferedAmount()<=e||await new Promise(n=>{let i=()=>{this.getBufferedAmount()<=e||!this.isConnected?n():setTimeout(i,10)};setTimeout(i,10)})}};function yy(t){let e=.2*t;return t-e+Math.random()*(2*e)}V();function by(){var t,e;return typeof globalThis<"u"&&!!((e=(t=globalThis.process)==null?void 0:t.versions)!=null&&e.node)}var Do=null;async function vy(){if(!by())throw new he("WHOIS is only available in Node.js environments.",{feature:"whois"});return Do||(Do=import("node:net")),Do}var wy={com:"whois.verisign-grs.com",net:"whois.verisign-grs.com",org:"whois.pir.org",info:"whois.afilias.net",biz:"whois.biz",us:"whois.nic.us",uk:"whois.nic.uk",ca:"whois.cira.ca",de:"whois.denic.de",fr:"whois.afnic.fr",au:"whois.aunic.net",jp:"whois.jprs.jp",cn:"whois.cnnic.cn",ru:"whois.tcinet.ru",br:"whois.registro.br",eu:"whois.eu",io:"whois.nic.io",co:"whois.nic.co",me:"whois.nic.me",tv:"whois.nic.tv",cc:"whois.nic.cc",ws:"whois.website.ws",mobi:"whois.dotmobiregistry.net",asia:"whois.nic.asia",tel:"whois.nic.tel",pro:"whois.registrypro.pro",aero:"whois.aero",cat:"whois.cat",coop:"whois.nic.coop",jobs:"whois.nic.jobs",museum:"whois.museum",travel:"whois.nic.travel",xxx:"whois.nic.xxx",app:"whois.nic.google",dev:"whois.nic.google",ai:"whois.nic.ai"};function xy(t){let e=t.toLowerCase().split(".");return e[e.length-1]}function ky(t,e){if(e)return e;let r=/^(\d{1,3}\.){3}\d{1,3}$/,n=/^([0-9a-fA-F]{0,4}:){2,7}[0-9a-fA-F]{0,4}$/;if(r.test(t)||n.test(t))return"whois.arin.net";let i=xy(t);return wy[i]||"whois.iana.org"}function Ty(t){let e={},r=t.split(`
|
|
63
|
+
`);for(let n of r){if(n.startsWith("%")||n.startsWith("#")||!n.trim())continue;let i=n.indexOf(":");if(i===-1)continue;let o=n.substring(0,i).trim().toLowerCase(),s=n.substring(i+1).trim();!o||!s||(e[o]?Array.isArray(e[o])?e[o].push(s):e[o]=[e[o],s]:e[o]=s)}return e}function Sy(t){let e=t.toLowerCase().split(`
|
|
64
|
+
`);for(let r of e)if(r.includes("whois server:")||r.includes("referral url:")){let n=r.match(/whois\.[\w.-]+/);if(n)return n[0]}return null}async function Tc(t,e,r,n){let{createConnection:i}=await vy();return new Promise((o,s)=>{let c="",u=null,l=setTimeout(()=>{u==null||u.destroy(),s(new $(`WHOIS query timed out after ${n}ms`,void 0,void 0,["Increase the WHOIS timeout for slower registries.","Check network connectivity to the WHOIS server.","Retry the query; some registries respond slowly under load."]))},n);u=i({host:t,port:r},()=>{u.write(e+`\r
|
|
65
|
+
`)}),u.on("data",d=>{c+=d.toString("utf-8")}),u.on("end",()=>{clearTimeout(l),o(c)}),u.on("error",d=>{clearTimeout(l);let p=(d==null?void 0:d.message)||(d==null?void 0:d.code)||"Connection failed",m=new $(`WHOIS query failed: ${p}`,void 0,void 0,["Verify the WHOIS server is reachable and correct.","Check network/firewall settings blocking WHOIS port 43.","Retry the query; transient network issues can occur."]);m.code=d==null?void 0:d.code,s(m)}),u.on("close",d=>{if(clearTimeout(l),d&&!c){let p=new $("WHOIS connection closed unexpectedly",void 0,void 0,["The WHOIS server may be rate limiting requests.","Try again in a few seconds.","Some TLDs have unreliable WHOIS servers."]);p.code="ECONNRESET",s(p)}})})}async function Lo(t,e={}){let{server:r,port:n=43,timeout:i=1e4,follow:o=!0}=e,s=t.trim().toLowerCase(),c=ky(s,r),u=await Tc(c,s,n,i);if(o&&!r){let d=Sy(u);d&&d!==c&&(c=d,u=await Tc(c,s,n,i))}let l=Ty(u);return{raw:u,query:s,server:c,data:l}}async function Sc(t,e){try{let n=(await Lo(t,e)).raw.toLowerCase();return["no match","not found","no entries found","no data found","status: available","status: free"].some(o=>n.includes(o))}catch{return!1}}var Ay=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,Cy=/^[\u0020-\u003A\u003D-\u007E]*$/,Cr=class{cookies=new Map;getCookieString(e){let r=new URL(e),n=r.hostname,i=r.pathname||"/",o=r.protocol==="https:",s=Date.now(),c=[];for(let[u,l]of this.cookies.entries())if(this.domainMatches(n,u)){for(let[d,p]of l.entries())if(this.pathMatches(i,d))for(let m of p.values()){if(this.isExpired(m,s)){p.delete(m.name);continue}m.secure&&!o||c.push(m)}}return c.sort((u,l)=>{let d=l.path.length-u.path.length;return d!==0?d:u.createdAt-l.createdAt}),c.map(u=>`${u.name}=${u.value}`).join("; ")}setCookie(e,r){let n=new URL(r),i=n.hostname,o=n.pathname||"/",s=this.parseCookie(e,i,o);if(!s||!this.domainMatches(i,s.domain))return;this.cookies.has(s.domain)||this.cookies.set(s.domain,new Map);let c=this.cookies.get(s.domain);c.has(s.path)||c.set(s.path,new Map),c.get(s.path).set(s.name,s)}clear(){this.cookies.clear()}clearDomain(e){this.cookies.delete(e)}getAllCookies(){let e=[];for(let r of this.cookies.values())for(let n of r.values())for(let i of n.values())e.push(i);return e}parseCookie(e,r,n){let i=e.split(";").map(m=>m.trim());if(i.length===0||!i[0])return null;let[o,...s]=i,c=o.indexOf("=");if(c===-1)return null;let u=o.substring(0,c).trim(),l=o.substring(c+1).trim();if(!u)return null;let d=this.decode(l),p={name:u,value:d,domain:r,path:this.defaultPath(n),secure:!1,httpOnly:!1,createdAt:Date.now()};for(let m of s){let f=m.toLowerCase();if(f==="secure")p.secure=!0;else if(f==="httponly")p.httpOnly=!0;else if(f==="partitioned")p.partitioned=!0;else if(f.startsWith("domain=")){let h=m.substring(7).trim();h.startsWith(".")&&(h=h.substring(1)),Ay.test(h)&&(p.domain=h.toLowerCase())}else if(f.startsWith("path=")){let h=m.substring(5).trim();(!h||Cy.test(h))&&(p.path=h||"/")}else if(f.startsWith("expires=")){let h=m.substring(8).trim(),g=new Date(h);Number.isFinite(g.valueOf())&&(p.expires=g)}else if(f.startsWith("max-age=")){let h=m.substring(8).trim();/^-?\d+$/.test(h)&&(p.maxAge=parseInt(h,10))}else if(f.startsWith("samesite=")){let h=m.substring(9).trim().toLowerCase();h==="strict"?p.sameSite="Strict":h==="lax"?p.sameSite="Lax":h==="none"&&(p.sameSite="None")}else if(f.startsWith("priority=")){let h=m.substring(9).trim().toLowerCase();h==="low"?p.priority="Low":h==="medium"?p.priority="Medium":h==="high"&&(p.priority="High")}}return p}decode(e){if(e.indexOf("%")===-1)return e;try{return decodeURIComponent(e)}catch{return e}}domainMatches(e,r){let n=e.toLowerCase(),i=r.toLowerCase();return!!(n===i||n.endsWith("."+i))}pathMatches(e,r){return!!(e===r||e.startsWith(r)&&(r.endsWith("/")||e[r.length]==="/"))}defaultPath(e){if(!e||!e.startsWith("/"))return"/";let r=e.lastIndexOf("/");return r===0?"/":e.substring(0,r)}isExpired(e,r){if(e.maxAge!==void 0){if(e.maxAge<=0)return!0;let n=e.createdAt+e.maxAge*1e3;return r>=n}return e.expires?r>=e.expires.getTime():!1}};var xa=null;async function n2(){return xa||(xa=(await Promise.resolve().then(()=>(dl(),ll))).ScrapeDocument),xa}function pl(t){let e=Promise.resolve(t),r=async i=>{let o=await n2(),s=await e,c=await s.text();return o.create(c,{baseUrl:(i==null?void 0:i.baseUrl)||s.url,...i})},n=e;return n.scrape=async i=>r(i),n.links=async i=>(await r()).links(i),n.images=async i=>(await r()).images(i),n.meta=async()=>(await r()).meta(),n.openGraph=async()=>(await r()).openGraph(),n.twitterCard=async()=>(await r()).twitterCard(),n.jsonLd=async()=>(await r()).jsonLd(),n.forms=async i=>(await r()).forms(i),n.tables=async i=>(await r()).tables(i),n.scripts=async()=>(await r()).scripts(),n.styles=async()=>(await r()).styles(),n.extract=async i=>(await r()).extract(i),n}function Gr(){var t,e;return typeof globalThis<"u"&&!!((e=(t=globalThis.process)==null?void 0:t.versions)!=null&&e.node)}var Pi=class{factory;transport;resolving;dispatchFn;constructor(e){this.factory=e,this.dispatchFn=this.initialDispatch.bind(this)}async initialDispatch(e){return this.transport||(this.resolving||(this.resolving=this.factory().then(r=>(this.transport=r,this.dispatchFn=n=>this.transport.dispatch(n),r))),this.transport=await this.resolving),this.transport.dispatch(e)}dispatch(e){return this.dispatchFn(e)}async warmup(){!this.transport&&!this.resolving&&(this.resolving=this.factory().then(e=>(this.transport=e,this.dispatchFn=r=>this.transport.dispatch(r),e))),await this.resolving}};function ad(){return Gr()?new Pi(async()=>{let{CurlTransport:t}=await Promise.resolve().then(()=>(yl(),gl));return new t}):{async dispatch(t){throw new Me("Curl transport is only available in Node.js environments.",{configKey:"useCurl",request:t})}}}var Ni=class{factory;storage;resolving;constructor(e){this.factory=e}async getStorage(){return this.storage||(this.resolving||(this.resolving=this.factory().then(e=>(this.storage=e,e))),this.storage=await this.resolving),this.storage}async get(e){return(await this.getStorage()).get(e)}async set(e,r,n){return(await this.getStorage()).set(e,r,n)}async delete(e){return(await this.getStorage()).delete(e)}};function Ex(t){if(!Gr())throw new Me("File cache storage is only available in Node.js environments.",{configKey:"cache.driver"});return new Ni(async()=>{let{FileStorage:e}=await Promise.resolve().then(()=>(kl(),xl));return new e(t)})}function Dx(){return Gr()?new Ni(async()=>{let{MemoryStorage:t}=await Promise.resolve().then(()=>(bo(),yo));return new t}):new Yt}var Ga=class{instancePromise;constructor(e){this.instancePromise=e()}get[Symbol.toStringTag](){return"HlsPromise"}then(e,r){return this.instancePromise.then(({instance:n})=>n.then(e,r))}catch(e){return this.then(null,e)}finally(e){return this.instancePromise.then(({instance:r})=>r.finally(e))}cancel(){this.instancePromise.then(({instance:e})=>e.cancel()).catch(()=>{})}async download(e){let{instance:r}=await this.instancePromise;return r.download(e)}async*stream(){let{instance:e}=await this.instancePromise;yield*e.stream()}async pipe(e){let{instance:r}=await this.instancePromise;return r.pipe(e)}async info(){let{instance:e}=await this.instancePromise;return e.info()}},Mi=class{static get version(){return ec()}static getVersion(){return ro()}static getVersionInfo(){return tc()}baseUrl;middlewares;hooks;transport;curlTransport;defaultHeaders;defaultHeadersObj;defaultParams;paginationConfig;handler;fastHandler;logger;debugEnabled;agentManager;concurrencyConfig;requestPool;maxResponseSize;runtimeEventBus;shouldEmitRuntimeEvents;runtimeEventBusProviderAttached=!1;runtimeEventListenerCount=0;cookieJar;cookieIgnoreInvalid=!1;defaultTimeout;http2Enabled=!1;transportKind="custom";canFastPath=!1;_aiConfig;_ai;constructor(e={}){var p,m,f,h,g,y,C,b,w,x;this.baseUrl=e.baseUrl||"",this.middlewares=e.middlewares||[],this.defaultTimeout=e.timeout,this.hooks={beforeRequest:((p=e.hooks)==null?void 0:p.beforeRequest)||[],afterResponse:((m=e.hooks)==null?void 0:m.afterResponse)||[],onError:((f=e.hooks)==null?void 0:f.onError)||[],onRetry:((h=e.hooks)==null?void 0:h.onRetry)||[],onUrlResolved:((g=e.hooks)==null?void 0:g.onUrlResolved)||[]},this.defaultHeaders={"User-Agent":Dn(),...e.headers||{}},this.defaultHeadersObj=new Headers(this.defaultHeaders),this.defaultParams=((y=e.defaults)==null?void 0:y.params)||{},this.paginationConfig=e.pagination,this.maxResponseSize=e.maxResponseSize;let r=e.runtimeEventBus;r?this.runtimeEventBus={on:(v,T)=>r.on(v,T),emit:(v,T)=>r.emit(v,T)}:this.runtimeEventBus=Ws(),this.shouldEmitRuntimeEvents=r!==void 0,this.runtimeEventBusProviderAttached=r!==void 0,this.debugEnabled=e.debug===!0,this.debugEnabled?this.logger=e.logger??Kt:e.logger&&(this.logger=e.logger),this.concurrencyConfig=Js({concurrency:e.concurrency,http2:e.http2});let n=Ys(e.http2);if(this.http2Enabled=n.enabled??!1,e.transport)this.transport=e.transport,this.transportKind="custom";else if(e.useCurl)this.debugEnabled&&console.log("[DEBUG] Using Curl Transport"),this.transport=ad(),this.transportKind="curl";else if(Gr()){this.debugEnabled&&console.log("[DEBUG] Using Undici Transport");let v={...this.concurrencyConfig.agent,allowH2:n.enabled,maxConcurrentStreams:(C=n.resolvedSettings)==null?void 0:C.maxConcurrentStreams},T={proxy:e.proxy,http2:n.enabled?n:void 0,dns:e.dns,socketPath:e.socketPath,tls:e.tls,observability:e.observability,expectContinue:e.expectContinue,protocolCache:!0};this.transport=new Pi(async()=>{if(!this.agentManager){let S=Cn(),{AgentManager:P}=await Promise.resolve().then(()=>(Oa(),Fl));this.agentManager=new P(v,S)}let{UndiciTransport:k}=await Promise.resolve().then(()=>(Ql(),Jl));return new k(this.baseUrl||void 0,{...T,agent:this.agentManager})}),this.transportKind="undici"}else this.debugEnabled&&console.log("[DEBUG] Using Fetch Transport"),this.transport=new Dt,this.transportKind="fetch";let i=(v,T={})=>{let k=An(v);o.push(Vs(v,{...k,...T}))},o=[];if(e.retry&&i(ac(e.retry),{name:"recker:retry",priority:120,scope:"request"}),this.concurrencyConfig.max<1/0||this.concurrencyConfig.requestsPerInterval<1/0?(this.requestPool=new Sn({concurrency:this.concurrencyConfig.max,requestsPerInterval:this.concurrencyConfig.requestsPerInterval,interval:this.concurrencyConfig.interval}),i(v=>{v.middlewares.unshift(this.requestPool.asMiddleware())},{name:"recker:request-pool",priority:130,scope:"runtime"}),this.debugEnabled&&this.logger&&this.logger.debug(`Global concurrency limit: ${this.concurrencyConfig.max} concurrent requests`)):this.debugEnabled&&this.logger&&this.logger.debug("No global concurrency limit (allows unlimited parallel batches)"),e.dedup&&i(hc(e.dedup),{name:"recker:dedup",priority:110,scope:"request"}),e.cache){let v;e.cache.storage?v=e.cache.storage:e.cache.driver==="file"?v=Ex(e.cache.fileStoragePath):v=Dx(),i(fc({...e.cache,storage:v}),{name:"recker:cache",priority:100,scope:"request"})}e.plugins&&e.plugins.forEach((v,T)=>{let k=An(v);i(v,{name:(k==null?void 0:k.name)||`user-plugin:${T}`,priority:(k==null?void 0:k.priority)??90-T,scope:(k==null?void 0:k.scope)||"request"})});let{ordered:s,debugOrder:c}=Xs(Ks(o));if(s.forEach(({plugin:v})=>{v(this)}),this.debugEnabled&&this.logger&&this.logger.debug(`Applied plugins in order: ${c.join(" | ")}`),e.compression){let v=wc(e.compression);v&&this.middlewares.push(v)}if(e.xsrf){let v=bc(e.xsrf);v&&this.middlewares.push(v)}e.cookies&&this.setupCookieJar(e.cookies),e._aiConfig&&(this._aiConfig=e._aiConfig),this.maxResponseSize!==void 0&&this.middlewares.push(this.createMaxSizeMiddleware(this.maxResponseSize)),this.debugEnabled&&this.logger&&this.middlewares.unshift(this.createLoggingMiddleware(this.logger)),this.handler=this.composeMiddlewares(),this.fastHandler=this.composeFastHandler();let u=(((b=this.hooks.beforeRequest)==null?void 0:b.length)??0)>0||(((w=this.hooks.afterResponse)==null?void 0:w.length)??0)>0||(((x=this.hooks.onError)==null?void 0:x.length)??0)>0,l=!!this.cookieJar||!!this.defaultTimeout||this.maxResponseSize!==void 0||this.debugEnabled,d=this.middlewares.length>0;this.canFastPath=!u&&!l&&!d}createLoggingMiddleware(e){return async(r,n)=>{let i=Date.now();e.debug({type:"request",method:r.method,url:r.url},`\u2192 ${r.method} ${r.url}`);try{let o=await n(r),s=Date.now()-i;return e.debug({type:"response",method:r.method,url:r.url,status:o.status,duration:s,timings:o.timings},`\u2190 ${o.status} ${r.method} ${r.url} (${s}ms)`),o}catch(o){let s=Date.now()-i,c=o;throw e.error({type:"error",method:r.method,url:r.url,error:c.message,errorName:c.name,duration:s},`\u2716 ${r.method} ${r.url} - ${c.message}`),o}}}createMaxSizeMiddleware(e){return async(r,n)=>{let i=await n(r),o=r.maxResponseSize??e;if(o===void 0)return i;let s=i.headers.get("Content-Length");if(s){let c=parseInt(s,10);if(!isNaN(c)&&c>o)throw new Tt(o,c,r)}return i}}setupCookieJar(e){e===!0?this.cookieJar=new Cr:typeof e=="object"&&(e.jar===!0?this.cookieJar=new Cr:e.jar&&typeof e.jar=="object"&&(this.cookieJar=e.jar),this.cookieIgnoreInvalid=e.ignoreInvalid??!1),this.cookieJar&&this.middlewares.push(this.createCookieMiddleware())}createCookieMiddleware(){return async(e,r)=>{let n=this.cookieJar;try{let s=await n.getCookieString(e.url);if(s){let c=e.headers.get("cookie"),u=c?`${c}; ${s}`:s;e.headers.set("cookie",u)}}catch(s){if(!this.cookieIgnoreInvalid)throw s}let i=await r(e),o=i.headers.get("set-cookie");if(o){let s=this.splitSetCookieHeader(o);for(let c of s)try{await n.setCookie(c,e.url)}catch(u){if(!this.cookieIgnoreInvalid)throw u}}return i}}splitSetCookieHeader(e){return e.split(/,(?=\s*[a-zA-Z0-9_-]+=)/g).map(r=>r.trim())}async dispatch(e){let r=st(e),n=r?Date.now():0;r&&this.runtimeEventBus.emit("transport:start",{context:r,req:e});try{if(e.useCurl&&this.transportKind!=="curl"){this.curlTransport||(this.curlTransport=ad());let o=await this.curlTransport.dispatch(e);return r&&this.runtimeEventBus.emit("transport:finish",{context:r,req:e,durationMs:Date.now()-n}),o}let i=await this.transport.dispatch(e);return r&&this.runtimeEventBus.emit("transport:finish",{context:r,req:e,durationMs:Date.now()-n}),i}catch(i){throw r&&this.runtimeEventBus.emit("transport:error",{context:r,req:e,error:i instanceof Error?i:new Error(String(i))}),i}}composeMiddlewares(){var i,o;let e=[...this.middlewares],r=this,n=async s=>{let c=await r.dispatch(s);if(s.throwHttpErrors!==!1&&!c.ok&&c.status!==304)throw new Je(c,s);return c};return((i=this.hooks.beforeRequest)!=null&&i.length||(o=this.hooks.afterResponse)!=null&&o.length)&&e.unshift(this.hooksMiddleware),e.length===0?n:e.reduceRight((s,c)=>u=>c(u,s),n)}composeFastHandler(){let e=this;return async r=>{let n=await e.dispatch(r);if(r.throwHttpErrors!==!1&&!n.ok&&n.status!==304)throw new Je(n,r);return n}}hooksMiddleware=async(e,r)=>{let n=e;if(this.hooks.beforeRequest&&this.hooks.beforeRequest.length>0)for(let i of this.hooks.beforeRequest){let o=await i(n);o&&(n=o)}try{let i=await r(n);if(this.hooks.afterResponse&&this.hooks.afterResponse.length>0)for(let o of this.hooks.afterResponse){let s=await o(n,i);s&&(i=s)}return i}catch(i){if(this.hooks.onError&&this.hooks.onError.length>0)for(let o of this.hooks.onError){let s=await o(i,n);if(s)return s}throw i}};use(e){return this.middlewares.push(e),this.handler=this.composeMiddlewares(),this.canFastPath=!1,this}beforeRequest(e){return this.hooks.beforeRequest||(this.hooks.beforeRequest=[]),this.hooks.beforeRequest.push(e),this.handler=this.composeMiddlewares(),this.canFastPath=!1,this}afterResponse(e){return this.hooks.afterResponse||(this.hooks.afterResponse=[]),this.hooks.afterResponse.push(e),this.handler=this.composeMiddlewares(),this.canFastPath=!1,this}onError(e){return this.hooks.onError||(this.hooks.onError=[]),this.hooks.onError.push(e),this.handler=this.composeMiddlewares(),this.canFastPath=!1,this}onRuntimeEvent(e,r){this.shouldEmitRuntimeEvents=!0,this.runtimeEventListenerCount+=1;let n=this.runtimeEventBus.on(e,r);return()=>{n(),this.runtimeEventListenerCount>0&&(this.runtimeEventListenerCount-=1),!this.runtimeEventBusProviderAttached&&this.runtimeEventListenerCount===0&&(this.shouldEmitRuntimeEvents=!1)}}buildUrl(e,r){let n=r&&Object.keys(r).length>0,i=Object.keys(this.defaultParams).length>0;if(!n&&!i){if(e.startsWith("http://")||e.startsWith("https://"))return e;if(this.baseUrl){let d=this.baseUrl.endsWith("/")?this.baseUrl.slice(0,-1):this.baseUrl,p=e.startsWith("/")?e:"/"+e;return d+p}return e}let o=e,s={...this.defaultParams,...r},c=new Set;o.includes(":")&&(o=o.replace(/:([a-zA-Z0-9_]+)/g,(d,p)=>{if(s&&p in s)return c.add(p),encodeURIComponent(String(s[p]));throw new un(`Missing required path parameter: ${p}`,{field:p,value:void 0})}));let u;if(o.startsWith("http://")||o.startsWith("https://"))u=o;else if(this.baseUrl){let d=this.baseUrl.endsWith("/")?this.baseUrl.slice(0,-1):this.baseUrl,p=o.startsWith("/")?o:"/"+o;u=d+p}else throw new Me("Relative path provided without a baseUrl or explicit transport.",{configKey:"baseUrl"});let l=Object.keys(s).filter(d=>!c.has(d));if(l.length>0){let d=l.map(m=>`${encodeURIComponent(m)}=${encodeURIComponent(String(s[m]))}`),p=u.includes("?")?"&":"?";return u+p+d.join("&")}return u}request(e,r={}){var b,w;let n=this.buildUrl(e,r.params),i=(((b=this.hooks.beforeRequest)==null?void 0:b.length)??0)>0||this.middlewares.length>0,o=this.shouldEmitRuntimeEvents||!!r.correlationId||!!r.tenant||!!r.traceId||!!r.policySource||(((w=r.policyTags)==null?void 0:w.length)??0)>0,s=()=>js({correlationId:r.correlationId,tenant:r.tenant,policyTags:r.policyTags,policySource:r.policySource,traceId:r.traceId});if(this.canFastPath&&!r.headers&&!r.timeout&&!r.signal&&r.maxResponseSize===void 0){let x=new Ct(n,{method:r.method||"GET",body:r.body,headers:this.defaultHeadersObj,throwHttpErrors:r.throwHttpErrors});o&&(x=Qt(x,s()));let v=st(x),T=Date.now();v&&this.runtimeEventBus.emit("request:start",{context:v,req:x});let k=this.fastHandler(x);return v&&(k=k.then(S=>(this.runtimeEventBus.emit("request:success",{context:v,req:x,res:S,durationMs:Date.now()-T}),S),S=>{let P=S instanceof Error?S:new Error(String(S));throw this.runtimeEventBus.emit("request:failed",{context:v,req:x,error:P,durationMs:Date.now()-T}),S})),new wr(k)}let u;r.headers?(u=new Headers(this.defaultHeadersObj),(r.headers instanceof Headers?r.headers:new Headers(r.headers)).forEach((v,T)=>u.set(T,v))):i?u=new Headers(this.defaultHeadersObj):u=this.defaultHeadersObj;let l=r.timeout||r.signal||this.defaultTimeout,d,p=r.signal,m,f;if(l){if(d=new AbortController,p=d.signal,r.signal){let v=r.signal,T=()=>d.abort(v.reason);v.aborted?T():(v.addEventListener("abort",T,{once:!0}),f=()=>v.removeEventListener("abort",T))}let x=r.timeout??this.defaultTimeout;if(x){let v=typeof x=="number"?x:x.request;v&&(m=setTimeout(()=>d.abort(new Y(h,{phase:"request",timeout:v})),v))}}let h=new Ct(n,{...r,headers:u,signal:p,maxResponseSize:r.maxResponseSize??this.maxResponseSize});o&&(h=Qt(h,s()));let g=st(h),y=Date.now();g&&this.runtimeEventBus.emit("request:start",{context:g,req:h});let C=this.handler(h);return g&&(C=C.then(x=>(this.runtimeEventBus.emit("request:success",{context:g,req:h,res:x,durationMs:Date.now()-y}),x),x=>{let v=x instanceof Error?x:new Error(String(x));throw this.runtimeEventBus.emit("request:failed",{context:g,req:h,error:v,durationMs:Date.now()-y}),x})),(m||f)&&C.finally(()=>{m&&clearTimeout(m),f==null||f()}).catch(()=>{}),new wr(C,d)}get(e,r={}){return this.request(e,{...r,method:"GET"})}async warmup(){this.transport&&"warmup"in this.transport&&typeof this.transport.warmup=="function"&&await this.transport.warmup()}async batch(e,r={}){let n=r.mapResponse??(c=>c),i=r.concurrency??this.concurrencyConfig.runner.concurrency;return await new $n({concurrency:i,retries:this.concurrencyConfig.runner.retries,retryDelay:this.concurrencyConfig.runner.retryDelay}).run(e,async c=>{let u=await this.request(c.path,c.options);return n(u)},{signal:r.signal,deadlineMs:r.deadlineMs})}multi(e,r={}){return this.batch(e,r)}requestWithBody(e,r,n,i){let o=n,s=i;if((s===void 0||typeof s=="object"&&s!==null&&Object.keys(s).length===0)&&kn(n)){let x=n;(x.json!==void 0||x.form!==void 0||x.xml!==void 0||x.yaml!==void 0||x.csv!==void 0||x.body!==void 0||x.headers!==void 0||x.timeout!==void 0||x.retry!==void 0||x.hooks!==void 0||x.searchParams!==void 0||x.params!==void 0)&&(s=n,o=void 0)}s=s||{};let{json:u,form:l,xml:d,yaml:p,csv:m,...f}=s,h=o,g;l!==void 0?(h=Tn(l),g=void 0):u!==void 0?(h=JSON.stringify(u),g="application/json"):d!==void 0?(h=`<?xml version="1.0" encoding="UTF-8"?>
|
|
66
|
+
`+Ar(d),g="application/xml"):p!==void 0?(h=Ns(p),g="application/yaml"):m!==void 0?(h=Ms(m),g="text/csv"):f.body!==void 0&&(h=f.body);let{body:y,contentType:C}=_s(h),b=new Headers(f.headers),w=g??C;return w&&!b.has("Content-Type")&&b.set("Content-Type",w),this.request(r,{...f,method:e,body:y,headers:b})}post(e,r,n={}){return this.requestWithBody("POST",e,r,n)}put(e,r,n={}){return this.requestWithBody("PUT",e,r,n)}patch(e,r,n={}){return this.requestWithBody("PATCH",e,r,n)}delete(e,r={}){return this.request(e,{...r,method:"DELETE"})}head(e,r={}){return this.request(e,{...r,method:"HEAD"})}options(e,r={}){return this.request(e,{...r,method:"OPTIONS"})}trace(e,r={}){return this.request(e,{...r,method:"TRACE"})}connect(e,r={}){return this.request(e,{...r,method:"CONNECT"})}purge(e,r={}){return this.request(e,{...r,method:"PURGE"})}propfind(e,r,n={}){return this.requestWithBody("PROPFIND",e,r,n)}proppatch(e,r,n={}){return this.requestWithBody("PROPPATCH",e,r,n)}mkcol(e,r={}){return this.request(e,{...r,method:"MKCOL"})}copy(e,r={}){return this.request(e,{...r,method:"COPY"})}move(e,r={}){return this.request(e,{...r,method:"MOVE"})}lock(e,r,n={}){return this.requestWithBody("LOCK",e,r,n)}unlock(e,r={}){return this.request(e,{...r,method:"UNLOCK"})}link(e,r,n={}){return this.requestWithBody("LINK",e,r,n)}unlink(e,r,n={}){return this.requestWithBody("UNLINK",e,r,n)}scrape(e,r={}){let n=r.method||"GET",i=this.request(e,{...r,method:n});return pl(i)}paginate(e,r={}){var m,f,h,g;let{getItems:n,getNextUrl:i,maxPages:o,pageParam:s,limitParam:c,resultsPath:u,nextCursorPath:l,...d}=r,p={getItems:n,getNextUrl:i,maxPages:o,pageParam:s||((m=this.paginationConfig)==null?void 0:m.pageParam),limitParam:c||((f=this.paginationConfig)==null?void 0:f.limitParam),resultsPath:u||((h=this.paginationConfig)==null?void 0:h.resultsPath),nextCursorPath:l||((g=this.paginationConfig)==null?void 0:g.nextCursorPath)};return oc(this,e,d,p)}pages(e,r={}){var p,m,f;let{getNextUrl:n,maxPages:i,pageParam:o,limitParam:s,resultsPath:c,nextCursorPath:u,...l}=r,d={getNextUrl:n,maxPages:i,pageParam:o||((p=this.paginationConfig)==null?void 0:p.pageParam),limitParam:s||((m=this.paginationConfig)==null?void 0:m.limitParam),nextCursorPath:u||((f=this.paginationConfig)==null?void 0:f.nextCursorPath)};return ao(this,e,l,d)}page(e,r,n={}){var s;let i=n.pageParam||((s=this.paginationConfig)==null?void 0:s.pageParam)||"page",o={...n.params,[i]:r};return this.request(e,{...n,params:o})}async getAll(e,r={}){let n=[];for await(let i of this.paginate(e,r))n.push(i);return n}websocket(e,r={}){let n;if(e.startsWith("ws://")||e.startsWith("wss://"))n=e;else if(this.baseUrl){let s=this.baseUrl.replace(/^http/,"ws");n=new URL(e,s).toString()}else throw new Me("WebSocket requires either a full ws:// URL or a baseUrl",{configKey:"baseUrl"});let i={};this.defaultHeaders&&new Headers(this.defaultHeaders).forEach((c,u)=>{i[u]=c});let o={...i,...r.headers};return new zn(n,{...r,headers:o})}ws(e,r={}){return this.websocket(e,r)}async whois(e,r){return Lo(e,r)}async isDomainAvailable(e,r){return Sc(e,r)}hls(e,r={}){if(!Gr())throw new he("HLS is only available in Node.js environments.",{feature:"hls"});let n=async()=>{let{HlsPromise:i}=await Promise.resolve().then(()=>(nd(),rd));return{instance:new i(this,e,r)}};return new Ga(n)}get metadata(){return{handlerProtocol:"http/1.1"}}async handle(e,r){let n=e.protocol||"https:",i=e.hostname,o=e.port,s=e.path||"/",c=`${n}//${i}`;if(o&&!(n==="https:"&&o===443||n==="http:"&&o===80)&&(c+=`:${o}`),c+=s,e.query){let m=new URLSearchParams;for(let[h,g]of Object.entries(e.query))if(g!=null)if(Array.isArray(g))for(let y of g)m.append(h,y);else m.set(h,g);let f=m.toString();f&&(c+=(c.includes("?")?"&":"?")+f)}let u={};if(e.headers)for(let[m,f]of Object.entries(e.headers))f!==void 0&&(m.startsWith(":")||(u[m]=Array.isArray(f)?f.join(", "):f));let l=await this.request(c,{method:e.method||"GET",headers:u,body:e.body,signal:r==null?void 0:r.abortSignal,timeout:r==null?void 0:r.requestTimeout,throwHttpErrors:!1}),d={};l.headers.forEach((m,f)=>{d[f]=m});let p;if(l.raw.body){let{Readable:m}=await Promise.resolve().then(()=>(od(),id));p=m.fromWeb(l.raw.body)}return{response:{statusCode:l.status,reason:l.statusText,headers:d,body:p}}}updateHttpClientConfig(e,r){}httpHandlerConfigs(){return{http2:this.http2Enabled,maxSockets:this.concurrencyConfig.agent.connections,keepAlive:!0}}async destroy(){this.agentManager&&await this.agentManager.destroy(),this.requestPool=void 0}get ai(){if(!this._ai){if(!this._aiConfig)throw new Me("AI features require an AI-enabled preset. Use createClient(openai({...})), createClient(anthropic({...})), etc.",{configKey:"_aiConfig"});this._ai=new Jt(this,this._aiConfig)}return this._ai}get hasAI(){return this._aiConfig!==void 0}};function Ka(t={}){return new Mi(t)}var Lx=`
|
|
67
67
|
self.onmessage = async (event) => {
|
|
68
68
|
const { id, method, url, headers, body, timeout } = event.data;
|
|
69
69
|
|
|
@@ -121,19 +121,19 @@ self.onmessage = async (event) => {
|
|
|
121
121
|
});
|
|
122
122
|
}
|
|
123
123
|
};
|
|
124
|
-
`,sd=class t{workers=[];workerIndex=0;pendingRequests=new Map;workerUrl;constructor(e={}){let r=e.poolSize??(typeof navigator<"u"?navigator.hardwareConcurrency:4)??4,n=new Blob([Lx],{type:"application/javascript"});this.workerUrl=URL.createObjectURL(n);for(let i=0;i<r;i++)this.createWorker()}static isSupported(){return typeof Worker<"u"}createWorker(){let e=new Worker(this.workerUrl);e.onmessage=r=>{let{id:n,success:i,error:o,...s}=r.data,c=this.pendingRequests.get(n);if(c)if(this.pendingRequests.delete(n),i)c.resolve(new Xa(s));else{let u=new Error((o==null?void 0:o.message)||"Worker request failed");u.name=(o==null?void 0:o.name)||"WorkerError",c.reject(u)}},e.onerror=r=>{console.error("[WorkerTransport] Worker error:",r.message)},this.workers.push(e)}getNextWorker(){let e=this.workers[this.workerIndex];return this.workerIndex=(this.workerIndex+1)%this.workers.length,e}async dispatch(e){var c;if(!t.isSupported())throw new Error("Web Workers are not supported in this environment");let r=crypto.randomUUID(),n=this.getNextWorker(),i=typeof e.timeout=="number"?e.timeout:(c=e.timeout)==null?void 0:c.request,o={};e.headers&&(e.headers instanceof Headers?e.headers.forEach((u,l)=>{o[l]=u}):typeof e.headers=="object"&&Object.assign(o,e.headers));let s;return e.body&&(typeof e.body=="string"||e.body instanceof ArrayBuffer?s=e.body:e.body instanceof Blob?s=await e.body.arrayBuffer():typeof e.body=="object"&&(s=JSON.stringify(e.body))),new Promise((u,l)=>{this.pendingRequests.set(r,{resolve:u,reject:l}),e.signal&&e.signal.addEventListener("abort",()=>{let d=this.pendingRequests.get(r);if(d){this.pendingRequests.delete(r);let p=new Error("Request aborted");p.name="AbortError",d.reject(p)}}),n.postMessage({id:r,method:e.method,url:e.url,headers:o,body:s,timeout:i})})}terminate(){for(let e of this.workers)e.terminate();this.workers=[],URL.revokeObjectURL(this.workerUrl);for(let e of this.pendingRequests.values())e.reject(new Error("Transport terminated"));this.pendingRequests.clear()}get pendingCount(){return this.pendingRequests.size}},Xa=class t{status;statusText;headers;ok;url;timings;connection={};raw;bodyBuffer;bodyUsed=!1;constructor(e){if(this.status=e.status??0,this.statusText=e.statusText??"",this.ok=e.ok??!1,this.url=e.url??"",this.timings=e.timings??{total:0},this.bodyBuffer=e.body??new ArrayBuffer(0),this.headers=new Headers,e.headers)for(let[r,n]of Object.entries(e.headers))this.headers.set(r,n);this.raw=new Response(this.bodyBuffer,{status:this.status,statusText:this.statusText,headers:this.headers})}checkBodyUsed(){if(this.bodyUsed)throw new Error("Body has already been consumed");this.bodyUsed=!0}async json(){this.checkBodyUsed();let e=new TextDecoder().decode(this.bodyBuffer);return JSON.parse(e)}async text(){return this.checkBodyUsed(),new TextDecoder().decode(this.bodyBuffer)}async blob(){return this.checkBodyUsed(),new Blob([this.bodyBuffer])}async cleanText(){return(await this.text()).replace(/<[^>]*>?/gm,"")}read(){if(this.bodyUsed)return null;this.bodyUsed=!0;let e=this.bodyBuffer;return new ReadableStream({start(r){r.enqueue(new Uint8Array(e)),r.close()}})}clone(){let e=this.bodyBuffer.slice(0),r={};return this.headers.forEach((n,i)=>{r[i]=n}),new t({status:this.status,statusText:this.statusText,ok:this.ok,url:this.url,timings:this.timings,body:e,headers:r})}async*sse(){throw new Error("SSE is not supported in WorkerTransport. Use FetchTransport for SSE.")}async*download(){let e=this.bodyBuffer.byteLength;yield{loaded:e,transferred:e,total:e,percent:100,direction:"download"}}async*[Symbol.asyncIterator](){this.bodyUsed||(this.bodyUsed=!0,yield new Uint8Array(this.bodyBuffer))}};var Ja=class extends Error{limit;window;key;constructor(e,r,n){super(`Rate limit exceeded for ${n}: ${e} requests per ${r}ms`),this.limit=e,this.window=r,this.key=n,this.name="RateLimitExceededError"}};function Rx(t){let e={},r=t.get("x-ratelimit-remaining")||t.get("ratelimit-remaining");r!==null&&(e.remaining=parseInt(r,10));let n=t.get("x-ratelimit-reset")||t.get("ratelimit-reset");if(n!==null){let o=parseFloat(n);o<1e9?e.reset=Date.now()+o*1e3:e.reset=o*1e3}let i=t.get("retry-after");if(i!==null)if(/^\d+$/.test(i))e.retryAfter=parseInt(i,10)*1e3;else{let o=Date.parse(i);isNaN(o)||(e.retryAfter=Math.max(0,o-Date.now()))}return e}function gE(t){let e=t.limit,r=t.window||1e3,n=t.strategy||"queue",i=t.adaptive||!1,o=new Map,s=t.keyGenerator||(l=>{try{return new URL(l.url).hostname}catch{return"global"}}),c=l=>{let d=Date.now();if(d<l.blockedUntil)return;d-l.lastRefill>r&&(l.tokens=e,l.lastRefill=d)},u=l=>{let d=Date.now();if(d<l.blockedUntil){let p=l.blockedUntil-d;setTimeout(()=>u(l),p);return}for(c(l);l.queue.length>0&&l.tokens>0;){l.tokens--;let p=l.queue.shift();p&&p.resolve()}if(l.queue.length>0){let p=r-(Date.now()-l.lastRefill);setTimeout(()=>u(l),Math.max(0,p))}};return l=>{let d=async(m,f)=>{let h=s(m),g=o.get(h);if(g||(g={tokens:e,lastRefill:Date.now(),queue:[],blockedUntil:0},o.set(h,g)),Date.now()<g.blockedUntil?g.tokens=0:c(g),g.tokens>0){g.tokens--;let C=await f(m);return i&&p(g,C),C}if(n==="throw")throw new Ja(e,r,h);if(n==="drop")throw new Error(`Request dropped due to rate limit (${h})`);return new Promise((C,b)=>{if(g.queue.push({resolve:async()=>{try{let
|
|
125
|
-
`)}var Fi=class extends Error{service;constructor(e){super(`Circuit breaker is OPEN for ${e}`),this.service=e,this.name="CircuitBreakerError"}};function
|
|
126
|
-
`)){let o=i.indexOf(":");if(o>0){let s=i.slice(0,o).trim().toLowerCase(),c=i.slice(o+1).trim();n[s]=c}}return n}var Ya=class{client;options;constructor(e,r){this.client=e,this.options={baseUrl:r.baseUrl,metadata:r.metadata??{},timeout:r.timeout??3e4,textFormat:r.textFormat??!0}}async unary(e,r,n,i,o){let s=`${this.options.baseUrl}/${e}/${r}`,c=i.encode(n),u=cd(c),l=this.options.textFormat?"application/grpc-web-text":"application/grpc-web+proto",d=this.options.textFormat?btoa(String.fromCharCode(...u)):u,m={headers:{"Content-Type":l,Accept:l,"X-Grpc-Web":"1",...this.options.metadata,...o==null?void 0:o.metadata},timeout:(o==null?void 0:o.timeout)??this.options.timeout,signal:o==null?void 0:o.signal},f=await this.client.post(s,d,m);return this.parseUnaryResponse(f,i)}async*serverStream(e,r,n,i,o){let s=`${this.options.baseUrl}/${e}/${r}`,c=i.encode(n),u=cd(c),l=this.options.textFormat?"application/grpc-web-text":"application/grpc-web+proto",d=this.options.textFormat?btoa(String.fromCharCode(...u)):u,p={"Content-Type":l,Accept:l,"X-Grpc-Web":"1",...this.options.metadata,...o==null?void 0:o.metadata},f=(await this.client.post(s,d,{headers:p,timeout:(o==null?void 0:o.timeout)??this.options.timeout,signal:o==null?void 0:o.signal})).read();if(!f)throw new pr({code:Xr.INTERNAL,message:"No response body"},{});let h=f.getReader(),g=new Uint8Array(0);try{for(;;){let{done:y,value:C}=await h.read();if(C){let b=C;if(this.options.textFormat){let
|
|
124
|
+
`,sd=class t{workers=[];workerIndex=0;pendingRequests=new Map;workerUrl;constructor(e={}){let r=e.poolSize??(typeof navigator<"u"?navigator.hardwareConcurrency:4)??4,n=new Blob([Lx],{type:"application/javascript"});this.workerUrl=URL.createObjectURL(n);for(let i=0;i<r;i++)this.createWorker()}static isSupported(){return typeof Worker<"u"}createWorker(){let e=new Worker(this.workerUrl);e.onmessage=r=>{let{id:n,success:i,error:o,...s}=r.data,c=this.pendingRequests.get(n);if(c)if(this.pendingRequests.delete(n),i)c.resolve(new Xa(s));else{let u=new Error((o==null?void 0:o.message)||"Worker request failed");u.name=(o==null?void 0:o.name)||"WorkerError",c.reject(u)}},e.onerror=r=>{console.error("[WorkerTransport] Worker error:",r.message)},this.workers.push(e)}getNextWorker(){let e=this.workers[this.workerIndex];return this.workerIndex=(this.workerIndex+1)%this.workers.length,e}async dispatch(e){var c;if(!t.isSupported())throw new Error("Web Workers are not supported in this environment");let r=crypto.randomUUID(),n=this.getNextWorker(),i=typeof e.timeout=="number"?e.timeout:(c=e.timeout)==null?void 0:c.request,o={};e.headers&&(e.headers instanceof Headers?e.headers.forEach((u,l)=>{o[l]=u}):typeof e.headers=="object"&&Object.assign(o,e.headers));let s;return e.body&&(typeof e.body=="string"||e.body instanceof ArrayBuffer?s=e.body:e.body instanceof Blob?s=await e.body.arrayBuffer():typeof e.body=="object"&&(s=JSON.stringify(e.body))),new Promise((u,l)=>{this.pendingRequests.set(r,{resolve:u,reject:l}),e.signal&&e.signal.addEventListener("abort",()=>{let d=this.pendingRequests.get(r);if(d){this.pendingRequests.delete(r);let p=new Error("Request aborted");p.name="AbortError",d.reject(p)}}),n.postMessage({id:r,method:e.method,url:e.url,headers:o,body:s,timeout:i})})}terminate(){for(let e of this.workers)e.terminate();this.workers=[],URL.revokeObjectURL(this.workerUrl);for(let e of this.pendingRequests.values())e.reject(new Error("Transport terminated"));this.pendingRequests.clear()}get pendingCount(){return this.pendingRequests.size}},Xa=class t{status;statusText;headers;ok;url;timings;connection={};raw;bodyBuffer;bodyUsed=!1;constructor(e){if(this.status=e.status??0,this.statusText=e.statusText??"",this.ok=e.ok??!1,this.url=e.url??"",this.timings=e.timings??{total:0},this.bodyBuffer=e.body??new ArrayBuffer(0),this.headers=new Headers,e.headers)for(let[r,n]of Object.entries(e.headers))this.headers.set(r,n);this.raw=new Response(this.bodyBuffer,{status:this.status,statusText:this.statusText,headers:this.headers})}checkBodyUsed(){if(this.bodyUsed)throw new Error("Body has already been consumed");this.bodyUsed=!0}async json(){this.checkBodyUsed();let e=new TextDecoder().decode(this.bodyBuffer);return JSON.parse(e)}async text(){return this.checkBodyUsed(),new TextDecoder().decode(this.bodyBuffer)}async blob(){return this.checkBodyUsed(),new Blob([this.bodyBuffer])}async cleanText(){return(await this.text()).replace(/<[^>]*>?/gm,"")}read(){if(this.bodyUsed)return null;this.bodyUsed=!0;let e=this.bodyBuffer;return new ReadableStream({start(r){r.enqueue(new Uint8Array(e)),r.close()}})}clone(){let e=this.bodyBuffer.slice(0),r={};return this.headers.forEach((n,i)=>{r[i]=n}),new t({status:this.status,statusText:this.statusText,ok:this.ok,url:this.url,timings:this.timings,body:e,headers:r})}async*sse(){throw new Error("SSE is not supported in WorkerTransport. Use FetchTransport for SSE.")}async*download(){let e=this.bodyBuffer.byteLength;yield{loaded:e,transferred:e,total:e,percent:100,direction:"download"}}async*[Symbol.asyncIterator](){this.bodyUsed||(this.bodyUsed=!0,yield new Uint8Array(this.bodyBuffer))}};var Ja=class extends Error{limit;window;key;constructor(e,r,n){super(`Rate limit exceeded for ${n}: ${e} requests per ${r}ms`),this.limit=e,this.window=r,this.key=n,this.name="RateLimitExceededError"}};function Rx(t){let e={},r=t.get("x-ratelimit-remaining")||t.get("ratelimit-remaining");r!==null&&(e.remaining=parseInt(r,10));let n=t.get("x-ratelimit-reset")||t.get("ratelimit-reset");if(n!==null){let o=parseFloat(n);o<1e9?e.reset=Date.now()+o*1e3:e.reset=o*1e3}let i=t.get("retry-after");if(i!==null)if(/^\d+$/.test(i))e.retryAfter=parseInt(i,10)*1e3;else{let o=Date.parse(i);isNaN(o)||(e.retryAfter=Math.max(0,o-Date.now()))}return e}function gE(t){let e=t.limit,r=t.window||1e3,n=t.strategy||"queue",i=t.adaptive||!1,o=new Map,s=t.keyGenerator||(l=>{try{return new URL(l.url).hostname}catch{return"global"}}),c=l=>{let d=Date.now();if(d<l.blockedUntil)return;d-l.lastRefill>r&&(l.tokens=e,l.lastRefill=d)},u=l=>{let d=Date.now();if(d<l.blockedUntil){let p=l.blockedUntil-d;setTimeout(()=>u(l),p);return}for(c(l);l.queue.length>0&&l.tokens>0;){l.tokens--;let p=l.queue.shift();p&&p.resolve()}if(l.queue.length>0){let p=r-(Date.now()-l.lastRefill);setTimeout(()=>u(l),Math.max(0,p))}};return l=>{let d=async(m,f)=>{let h=s(m),g=o.get(h);if(g||(g={tokens:e,lastRefill:Date.now(),queue:[],blockedUntil:0},o.set(h,g)),Date.now()<g.blockedUntil?g.tokens=0:c(g),g.tokens>0){g.tokens--;let C=await f(m);return i&&p(g,C),C}if(n==="throw")throw new Ja(e,r,h);if(n==="drop")throw new Error(`Request dropped due to rate limit (${h})`);return new Promise((C,b)=>{if(g.queue.push({resolve:async()=>{try{let w=await f(m);i&&p(g,w),C(w)}catch(w){b(w)}},reject:b}),g.queue.length===1){let w=r-(Date.now()-g.lastRefill);setTimeout(()=>u(g),Math.max(0,w))}})};function p(m,f){let h=Rx(f.headers),g=0;h.retryAfter?g=h.retryAfter:h.remaining!==void 0&&h.remaining<=0&&h.reset&&(g=Math.max(0,h.reset-Date.now())),g>0&&(m.blockedUntil=Date.now()+g,m.tokens=0,m.queue.length>0&&setTimeout(()=>u(m),0))}l.use(d)}}function vE(t={}){let e=t.logger||Kt,r=t.level||"info",n=t.showHeaders||!1,i=t.showBody||!1,o=t.showTimings!==!1,s=new WeakMap,c=r==="debug"?e.debug.bind(e):e.info.bind(e);return u=>{u.beforeRequest(l=>{s.set(l,performance.now());let d={type:"request",method:l.method,url:l.url};if(n){let p={};l.headers.forEach((m,f)=>{f.toLowerCase()==="authorization"?p[f]="[REDACTED]":p[f]=m}),d.headers=p}if(i&&l.body)if(typeof l.body=="string")try{d.body=JSON.parse(l.body)}catch{d.body=l.body}else d.body="[Stream/Binary]";c(d,`\u2192 ${l.method} ${l.url}`)}),u.afterResponse((l,d)=>{let p=s.get(l),m=p?Math.round(performance.now()-p):0,f={type:"response",method:l.method,url:l.url,status:d.status,statusText:d.statusText,ok:d.ok,duration:m};if(n){let g={};d.headers.forEach((y,C)=>g[C]=y),f.headers=g}o&&d.timings&&(f.timings=d.timings);let h=d.headers.get("content-length");h&&(f.size=parseInt(h,10)),c(f,`\u2190 ${d.status} ${l.method} ${l.url} (${m}ms)`)}),u.onError((l,d)=>{let p=s.get(d),m=p?Math.round(performance.now()-p):0;e.error({type:"error",method:d.method,url:d.url,error:l.message,errorName:l.name,duration:m},`\u2716 ${d.method} ${d.url} - ${l.message}`)})}}function wE(t){let e=["curl"];return t.method!=="GET"&&e.push(`-X ${t.method}`),e.push(`'${t.url}'`),t.headers.forEach((r,n)=>{let i=n.toLowerCase()==="authorization"?"[REDACTED]":r;e.push(`-H '${n}: ${i}'`)}),t.body&&(typeof t.body=="string"?e.push(`-d '${t.body}'`):t.body instanceof URLSearchParams?e.push(`-d '${t.body.toString()}'`):e.push("-d '[Body]'")),e.join(` \\
|
|
125
|
+
`)}var Fi=class extends Error{service;constructor(e){super(`Circuit breaker is OPEN for ${e}`),this.service=e,this.name="CircuitBreakerError"}};function TE(t={}){let e=t.threshold||5,r=t.resetTimeout||30*1e3,n=new Map,i=s=>{try{return new URL(s.url).hostname}catch{return"unknown"}},o=t.shouldTrip||((s,c)=>c?c.status>=500:!0);return s=>{s.beforeRequest(l=>{let d=i(l),p=n.get(d);if(p||(p={failures:0,lastFailureTime:0,state:"CLOSED"},n.set(d,p)),p.state==="OPEN")if(Date.now()-p.lastFailureTime>r)p.state="HALF_OPEN",t.onStateChange&&t.onStateChange("HALF_OPEN",d);else throw new Fi(d)}),s.afterResponse((l,d)=>{let p=i(l),m=n.get(p);if(!m)return;o(null,d)?u(m,p):c(m,p)}),s.onError((l,d)=>{if(l instanceof Fi)throw l;let p=i(d),m=n.get(p);if(!m)return;o(l,void 0)&&u(m,p)});function c(l,d){l.state==="HALF_OPEN"?(l.state="CLOSED",l.failures=0,t.onStateChange&&t.onStateChange("CLOSED",d)):l.state==="CLOSED"&&(l.failures=0)}function u(l,d){l.failures++,l.lastFailureTime=Date.now(),(l.state==="HALF_OPEN"||l.state==="CLOSED"&&l.failures>=e)&&(l.state="OPEN",t.onStateChange&&t.onStateChange("OPEN",d))}}}function AE(t={}){let e=new Map;return t.store&&t.store instanceof Map&&e.set("*",t.store),r=>{r.beforeRequest(n=>{let o=new URL(n.url).hostname,s=[],c=u=>{u&&u.forEach((l,d)=>{s.push(`${d}=${l}`)})};c(e.get(o));for(let[u,l]of e.entries())u!=="*"&&u!==o&&o.endsWith(u)&&c(l),u==="*"&&c(l);if(s.length>0){let u=n.headers.get("cookie"),l=s.join("; ");n.headers.set("cookie",u?`${u}; ${l}`:l)}}),r.afterResponse((n,i)=>{let o=i.headers.get("set-cookie");if(!o)return;let c=new URL(n.url).hostname;Px(o).forEach(l=>{var b;let d=l.split(";"),[p]=d;if(!p)return;let[m,...f]=p.split("=");if(!m)return;let h=f.join("=").trim(),g=c,y=d.find(w=>w.trim().toLowerCase().startsWith("domain="));if(y){let w=(b=y.split("=")[1])==null?void 0:b.trim();w&&(g=w)}e.has(g)||e.set(g,new Map),e.get(g).set(m.trim(),h),t.store&&t.store.set(m.trim(),h)})})}}function Px(t){return t.split(/,(?=\s*[a-zA-Z0-9_]+=[^;])/g)}V();var Bi=class extends ${errors;response;constructor(e,r,n){var s;let i=((s=e==null?void 0:e[0])==null?void 0:s.message)||"GraphQL response contains errors",o=["Check the GraphQL query and variables for schema compliance.","Inspect the GraphQL errors array for details.","Fix validation errors before retrying; network errors may be retriable."];super(i,n,r,o,!1),this.errors=e,this.response=r,this.name="GraphQLError"}};function DE(t={}){let e=t.throwOnErrors!==!1,r=async(n,i)=>{let o=await i(n),s=o.headers.get("content-type");if(e&&s&&s.includes("application/json")){let c=o.clone();try{let u=await c.json();if(u&&Array.isArray(u.errors)&&u.errors.length>0)throw new Bi(u.errors,o)}catch(u){if(u instanceof Bi)throw u}}return o};return n=>{n.use(r)}}async function LE(t,e,r={},n={}){let i=e.match(/(query|mutation|subscription)\s+([a-zA-Z0-9_]+)/),o=i?i[2]:void 0,s={query:e,variables:r,operationName:o};if(n.method==="GET"){let u={query:e,variables:JSON.stringify(r),...o&&{operationName:o}};return n.params={...n.params,...u},(await t.get("",n).json()).data}return(await t.post("",s,n).json()).data}function PE(){return t=>{t.afterResponse((e,r)=>{let n=r.headers.get("server-timing");if(!n)return;let i=n.split(",").map(o=>{let s=o.split(";"),c=s[0].trim(),u,l;for(let d=1;d<s.length;d++){let[p,m]=s[d].split("=").map(f=>f.trim());p==="dur"&&(u=parseFloat(m)),p==="desc"&&(l=m==null?void 0:m.replace(/"/g,""))}return{name:c,duration:u,description:l}});r.serverTimings=i})}}var Kr={PARSE_ERROR:-32700,INVALID_REQUEST:-32600,METHOD_NOT_FOUND:-32601,INVALID_PARAMS:-32602,INTERNAL_ERROR:-32603,SERVER_ERROR:-32e3},Ui=class extends Error{code;data;constructor(e){super(e.message),this.name="JsonRpcException",this.code=e.code,this.data=e.data}static isParseError(e){return e.code===Kr.PARSE_ERROR}static isInvalidRequest(e){return e.code===Kr.INVALID_REQUEST}static isMethodNotFound(e){return e.code===Kr.METHOD_NOT_FOUND}static isInvalidParams(e){return e.code===Kr.INVALID_PARAMS}static isInternalError(e){return e.code===Kr.INTERNAL_ERROR}static isServerError(e){return e.code>=-32099&&e.code<=-32e3}},Qa=class{client;options;idCounter=0;constructor(e,r){this.client=e,this.options={endpoint:r.endpoint,requestOptions:r.requestOptions??{},autoId:r.autoId??!0,idGenerator:r.idGenerator??(()=>++this.idCounter),throwOnError:r.throwOnError??!0}}async call(e,r,n){let i=this.options.autoId?this.options.idGenerator():null,o={jsonrpc:"2.0",method:e,id:i};r!==void 0&&(o.params=r);let s=await this.sendRequest(o,n);if(s.error){if(this.options.throwOnError)throw new Ui(s.error);return}return s.result}async notify(e,r,n){let i={jsonrpc:"2.0",method:e};r!==void 0&&(i.params=r),await this.client.post(this.options.endpoint,{...this.options.requestOptions,...n,json:i})}async batch(e,r){let n=e.map((c,u)=>({jsonrpc:"2.0",method:c.method,params:c.params,id:c.id??(this.options.autoId?this.options.idGenerator():u)})),o=await(await this.client.post(this.options.endpoint,{...this.options.requestOptions,...r,json:n})).json(),s=o.filter(c=>!!c.error).map(c=>c.error);return{responses:o,errors:s,hasErrors:s.length>0}}getFromBatch(e,r){let n=e.responses.find(i=>i.id===r);if(n!=null&&n.error&&this.options.throwOnError)throw new Ui(n.error);return n==null?void 0:n.result}proxy(){return new Proxy({},{get:(e,r)=>(...n)=>n.length===1&&typeof n[0]=="object"&&n[0]!==null&&!Array.isArray(n[0])?this.call(r,n[0]):this.call(r,n)})}async sendRequest(e,r){return(await this.client.post(this.options.endpoint,{...this.options.requestOptions,...r,json:e})).json()}};function Nx(t,e){return new Qa(t,e)}function ME(){return t=>{t.jsonrpc=(e,r)=>Nx(t,{endpoint:e,...r})}}var Xr={OK:0,CANCELLED:1,UNKNOWN:2,INVALID_ARGUMENT:3,DEADLINE_EXCEEDED:4,NOT_FOUND:5,ALREADY_EXISTS:6,PERMISSION_DENIED:7,RESOURCE_EXHAUSTED:8,FAILED_PRECONDITION:9,ABORTED:10,OUT_OF_RANGE:11,UNIMPLEMENTED:12,INTERNAL:13,UNAVAILABLE:14,DATA_LOSS:15,UNAUTHENTICATED:16},pr=class t extends Error{code;metadata;details;constructor(e,r={}){super(e.message),this.name="GrpcError",this.code=e.code,this.metadata=r,this.details=e.details}static fromCode(e,r){return new t({code:e,message:r},{})}};function Mx(){let t=new TextEncoder,e=new TextDecoder;return{encode(r){return t.encode(JSON.stringify(r))},decode(r){return JSON.parse(e.decode(r))}}}function cd(t,e=!1){let r=new Uint8Array(5+t.length);return r[0]=e?128:0,new DataView(r.buffer).setUint32(1,t.length,!1),r.set(t,5),r}function ud(t){let e=[],r=0;for(;r<t.length&&!(r+5>t.length);){let i=(t[r]&128)!==0,s=new DataView(t.buffer,t.byteOffset+r+1,4).getUint32(0,!1);if(r+5+s>t.length)break;let c=t.slice(r+5,r+5+s);e.push({isTrailers:i,payload:c}),r+=5+s}return e}function ld(t){let r=new TextDecoder().decode(t),n={};for(let i of r.split(`\r
|
|
126
|
+
`)){let o=i.indexOf(":");if(o>0){let s=i.slice(0,o).trim().toLowerCase(),c=i.slice(o+1).trim();n[s]=c}}return n}var Ya=class{client;options;constructor(e,r){this.client=e,this.options={baseUrl:r.baseUrl,metadata:r.metadata??{},timeout:r.timeout??3e4,textFormat:r.textFormat??!0}}async unary(e,r,n,i,o){let s=`${this.options.baseUrl}/${e}/${r}`,c=i.encode(n),u=cd(c),l=this.options.textFormat?"application/grpc-web-text":"application/grpc-web+proto",d=this.options.textFormat?btoa(String.fromCharCode(...u)):u,m={headers:{"Content-Type":l,Accept:l,"X-Grpc-Web":"1",...this.options.metadata,...o==null?void 0:o.metadata},timeout:(o==null?void 0:o.timeout)??this.options.timeout,signal:o==null?void 0:o.signal},f=await this.client.post(s,d,m);return this.parseUnaryResponse(f,i)}async*serverStream(e,r,n,i,o){let s=`${this.options.baseUrl}/${e}/${r}`,c=i.encode(n),u=cd(c),l=this.options.textFormat?"application/grpc-web-text":"application/grpc-web+proto",d=this.options.textFormat?btoa(String.fromCharCode(...u)):u,p={"Content-Type":l,Accept:l,"X-Grpc-Web":"1",...this.options.metadata,...o==null?void 0:o.metadata},f=(await this.client.post(s,d,{headers:p,timeout:(o==null?void 0:o.timeout)??this.options.timeout,signal:o==null?void 0:o.signal})).read();if(!f)throw new pr({code:Xr.INTERNAL,message:"No response body"},{});let h=f.getReader(),g=new Uint8Array(0);try{for(;;){let{done:y,value:C}=await h.read();if(C){let b=C;if(this.options.textFormat){let T=new TextDecoder().decode(C),k=atob(T);b=new Uint8Array(k.length);for(let S=0;S<k.length;S++)b[S]=k.charCodeAt(S)}let w=new Uint8Array(g.length+b.length);w.set(g),w.set(b,g.length),g=w;let x=ud(g),v=0;for(let T of x)if(v+=5+T.payload.length,T.isTrailers){let k=ld(T.payload),S=parseInt(k["grpc-status"]??"0",10),P=k["grpc-message"]??"";if(S!==Xr.OK)throw new pr({code:S,message:P},k)}else yield i.decode(T.payload);v>0&&(g=g.slice(v))}if(y)break}}finally{h.releaseLock()}}service(e,r){let n={};for(let[i,o]of Object.entries(r))n[i]=async(s,c)=>{let u=Mx();return this.unary(e,i,s,u,c)};return n}async parseUnaryResponse(e,r){let n;if(this.options.textFormat){let l=await e.text(),d=atob(l);n=new Uint8Array(d.length);for(let p=0;p<d.length;p++)n[p]=d.charCodeAt(p)}else{let l=await e.blob();n=new Uint8Array(await l.arrayBuffer())}let i=ud(n),o,s={},c={code:Xr.OK,message:""};for(let l of i)l.isTrailers?(s=ld(l.payload),c={code:parseInt(s["grpc-status"]??"0",10),message:s["grpc-message"]??""}):o=r.decode(l.payload);let u=e.headers.get("grpc-status");if(u&&(c.code=parseInt(u,10),c.message=e.headers.get("grpc-message")??""),c.code!==Xr.OK)throw new pr(c,s);if(o===void 0)throw new pr({code:Xr.INTERNAL,message:"No message in response"},s);return{message:o,metadata:s,status:c}}};function Fx(t,e){return new Ya(t,e)}function BE(){return t=>{t.grpcWeb=e=>{var n;let r=(e==null?void 0:e.baseUrl)??((n=t.config)==null?void 0:n.baseUrl)??"";return Fx(t,{baseUrl:r,...e})}}}function Za(t){return t==null?"<nil/>":typeof t=="boolean"?`<boolean>${t?"1":"0"}</boolean>`:typeof t=="number"?Number.isInteger(t)?`<int>${t}</int>`:`<double>${t}</double>`:typeof t=="string"?`<string>${Jr(t)}</string>`:t instanceof Date?`<dateTime.iso8601>${t.toISOString()}</dateTime.iso8601>`:t instanceof Uint8Array||Buffer.isBuffer(t)?`<base64>${Buffer.from(t).toString("base64")}</base64>`:Array.isArray(t)?`<array><data>${t.map(r=>`<value>${Za(r)}</value>`).join("")}</data></array>`:typeof t=="object"?`<struct>${Object.entries(t).map(([r,n])=>`<member><name>${Jr(r)}</name><value>${Za(n)}</value></member>`).join("")}</struct>`:`<string>${String(t)}</string>`}function Ii(t){let e=t.trim();if(e.includes("<nil/>")||e.includes("<nil></nil>"))return null;if(e.startsWith("<array>")||e.includes("<array>")){let u=e.match(/<array>\s*<data>([\s\S]*)<\/data>\s*<\/array>/);if(u){let l=[],p=u[1].split(/<\/value>/);for(let m of p){let f=m.indexOf("<value>");if(f!==-1){let h=m.slice(f+7);l.push(Ii(h.trim()))}}return l}}if(e.startsWith("<struct>")||e.includes("<struct>")){let u=e.match(/<struct>([\s\S]*)<\/struct>/);if(u){let l={},d=u[1].split(/<\/member>/);for(let p of d){let m=p.indexOf("<member>");if(m!==-1){let f=p.slice(m+8),h=f.match(/<name>([\s\S]*?)<\/name>/),g=f.match(/<value>([\s\S]*)<\/value>/s);h&&g&&(l[Ot(h[1].trim())]=Ii(g[1].trim()))}}return l}}let r=e.match(/^<(?:int|i4|i8)>(-?\d+)<\/(?:int|i4|i8)>$/);if(r)return parseInt(r[1],10);let n=e.match(/^<boolean>([01])<\/boolean>$/);if(n)return n[1]==="1";let i=e.match(/^<double>(-?[\d.]+(?:[eE][+-]?\d+)?)<\/double>$/);if(i)return parseFloat(i[1]);let o=e.match(/^<string>([\s\S]*?)<\/string>$/);if(o)return Ot(o[1]);let s=e.match(/^<dateTime\.iso8601>([\s\S]*?)<\/dateTime\.iso8601>$/);if(s)return new Date(s[1]);let c=e.match(/^<base64>([\s\S]*?)<\/base64>$/);return c?Buffer.from(c[1],"base64"):e}var es=class{client;endpoint;requestOptions;constructor(e,r){this.client=e,this.endpoint=r.endpoint,this.requestOptions=r.requestOptions??{}}async call(e,r=[]){let n=r.map(c=>`<param><value>${Za(c)}</value></param>`).join(""),i=`<?xml version="1.0"?>
|
|
127
127
|
<methodCall>
|
|
128
128
|
<methodName>${Jr(e)}</methodName>
|
|
129
129
|
<params>${n}</params>
|
|
130
|
-
</methodCall>`,s=await(await this.client.post(this.endpoint,i,{...this.requestOptions,headers:{"Content-Type":"text/xml",...this.requestOptions.headers}})).text();return this.parseResponse(s)}parseResponse(e){let r=e.match(/<fault>\s*<value>([\s\S]+)<\/value>\s*<\/fault>/);if(r){let i=
|
|
130
|
+
</methodCall>`,s=await(await this.client.post(this.endpoint,i,{...this.requestOptions,headers:{"Content-Type":"text/xml",...this.requestOptions.headers}})).text();return this.parseResponse(s)}parseResponse(e){let r=e.match(/<fault>\s*<value>([\s\S]+)<\/value>\s*<\/fault>/);if(r){let i=Ii(r[1]);return{success:!1,fault:{faultCode:i.faultCode??0,faultString:i.faultString??"Unknown error"}}}let n=e.match(/<params>\s*<param>\s*<value>([\s\S]+)<\/value>\s*<\/param>\s*<\/params>/);return n?{success:!0,result:Ii(n[1])}:{success:!0}}},Bx={"1.1":{envelope:"http://schemas.xmlsoap.org/soap/envelope/",contentType:"text/xml; charset=utf-8"},"1.2":{envelope:"http://www.w3.org/2003/05/soap-envelope",contentType:"application/soap+xml; charset=utf-8"}},ts=class{client;options;constructor(e,r){this.client=e,this.options={endpoint:r.endpoint,version:r.version??"1.2",namespace:r.namespace??"",namespacePrefix:r.namespacePrefix??"ns",wsdl:r.wsdl,soapHeaders:r.soapHeaders??{},requestOptions:r.requestOptions??{}}}async call(e,r={},n){let i=Bx[this.options.version],o=this.options.namespacePrefix,s=this.options.namespace,c={...this.options.soapHeaders,...n==null?void 0:n.soapHeaders},u="";Object.keys(c).length>0&&(u=`<soap:Header>${this.objectToXml(c,o)}</soap:Header>`);let l=this.objectToXml(r,o),d=s?`<${o}:${e} xmlns:${o}="${s}">${l}</${o}:${e}>`:`<${e}>${l}</${e}>`,p=`<?xml version="1.0" encoding="utf-8"?>
|
|
131
131
|
<soap:Envelope xmlns:soap="${i.envelope}">
|
|
132
132
|
${u}
|
|
133
133
|
<soap:Body>
|
|
134
134
|
${d}
|
|
135
135
|
</soap:Body>
|
|
136
|
-
</soap:Envelope>`,m={"Content-Type":i.contentType};if(this.options.version==="1.1"){let g=(n==null?void 0:n.soapAction)??`${s}/${e}`;m.SOAPAction=`"${g}"`}let h=await(await this.client.post(this.options.endpoint,p,{...this.options.requestOptions,headers:{...m,...this.options.requestOptions.headers}})).text();return this.parseResponse(h,e)}async getWsdl(){return this.options.wsdl?(await this.client.get(this.options.wsdl)).text():null}objectToXml(e,r){return Object.entries(e).map(([n,i])=>{let o=r?`${r}:${n}`:n;return i==null?`<${o} xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>`:typeof i=="object"&&!Array.isArray(i)&&!(i instanceof Date)?`<${o}>${this.objectToXml(i)}</${o}>`:Array.isArray(i)?i.map(s=>typeof s=="object"?`<${o}>${this.objectToXml(s)}</${o}>`:`<${o}>${Jr(String(s))}</${o}>`).join(""):i instanceof Date?`<${o}>${i.toISOString()}</${o}>`:`<${o}>${Jr(String(i))}</${o}>`}).join("")}parseResponse(e,r){let n=e.match(/<(?:soap:|SOAP-ENV:|)[Ff]ault[^>]*>([\s\S]*?)<\/(?:soap:|SOAP-ENV:|)[Ff]ault>/i);if(n){let d=n[1],p=d.match(/<faultcode[^>]*>([\s\S]*?)<\/faultcode>/i),m=d.match(/<faultstring[^>]*>([\s\S]*?)<\/faultstring>/i),f=d.match(/<faultactor[^>]*>([\s\S]*?)<\/faultactor>/i),h=d.match(/<detail[^>]*>([\s\S]*?)<\/detail>/i),g=d.match(/<(?:\w+:)?Code[^>]*>[\s\S]*?<(?:\w+:)?Value[^>]*>([\s\S]*?)<\/(?:\w+:)?Value>/i),y=d.match(/<(?:\w+:)?Reason[^>]*>[\s\S]*?<(?:\w+:)?Text[^>]*>([\s\S]*?)<\/(?:\w+:)?Text>/i);return{success:!1,fault:{code:Ot((p==null?void 0:p[1])??(g==null?void 0:g[1])??"Unknown"),string:Ot((m==null?void 0:m[1])??(y==null?void 0:y[1])??"Unknown error"),actor:f?Ot(f[1]):void 0,detail:h?h[1]:void 0},rawXml:e}}let i=e.match(/<(?:soap:|SOAP-ENV:|)[Bb]ody[^>]*>([\s\S]*?)<\/(?:soap:|SOAP-ENV:|)[Bb]ody>/i);if(!i)return{success:!1,fault:{code:"ParseError",string:"Could not parse SOAP response body"},rawXml:e};let o=i[1].trim(),s=new RegExp(`<(?:\\w+:)?${r}(?:Response|Result)[^>]*>([\\s\\S]*?)<\\/(?:\\w+:)?${r}(?:Response|Result)>`,"i"),c=o.match(s),u=c?c[1]:o;return{success:!0,result:this.parseXmlToObject(u),rawXml:e}}parseXmlToObject(e){let r=e.trim();if(!r.startsWith("<"))return Ot(r);let n={},i=/<([^\/][^>\s]*)[^>]*>([\s\S]*?)<\/\1>/g,o,s=!1;for(;(o=i.exec(r))!==null;){s=!0;let[,c,u]=o,l=c.includes(":")?c.split(":")[1]:c,d=this.parseXmlToObject(u);l in n?Array.isArray(n[l])?n[l].push(d):n[l]=[n[l],d]:n[l]=d}return s?n:Ot(r)}};function Jr(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Ot(t){return t.replace(/'/g,"'").replace(/"/g,'"').replace(/>/g,">").replace(/</g,"<").replace(/&/g,"&")}function Ux(t,e){return new es(t,e)}function
|
|
136
|
+
</soap:Envelope>`,m={"Content-Type":i.contentType};if(this.options.version==="1.1"){let g=(n==null?void 0:n.soapAction)??`${s}/${e}`;m.SOAPAction=`"${g}"`}let h=await(await this.client.post(this.options.endpoint,p,{...this.options.requestOptions,headers:{...m,...this.options.requestOptions.headers}})).text();return this.parseResponse(h,e)}async getWsdl(){return this.options.wsdl?(await this.client.get(this.options.wsdl)).text():null}objectToXml(e,r){return Object.entries(e).map(([n,i])=>{let o=r?`${r}:${n}`:n;return i==null?`<${o} xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>`:typeof i=="object"&&!Array.isArray(i)&&!(i instanceof Date)?`<${o}>${this.objectToXml(i)}</${o}>`:Array.isArray(i)?i.map(s=>typeof s=="object"?`<${o}>${this.objectToXml(s)}</${o}>`:`<${o}>${Jr(String(s))}</${o}>`).join(""):i instanceof Date?`<${o}>${i.toISOString()}</${o}>`:`<${o}>${Jr(String(i))}</${o}>`}).join("")}parseResponse(e,r){let n=e.match(/<(?:soap:|SOAP-ENV:|)[Ff]ault[^>]*>([\s\S]*?)<\/(?:soap:|SOAP-ENV:|)[Ff]ault>/i);if(n){let d=n[1],p=d.match(/<faultcode[^>]*>([\s\S]*?)<\/faultcode>/i),m=d.match(/<faultstring[^>]*>([\s\S]*?)<\/faultstring>/i),f=d.match(/<faultactor[^>]*>([\s\S]*?)<\/faultactor>/i),h=d.match(/<detail[^>]*>([\s\S]*?)<\/detail>/i),g=d.match(/<(?:\w+:)?Code[^>]*>[\s\S]*?<(?:\w+:)?Value[^>]*>([\s\S]*?)<\/(?:\w+:)?Value>/i),y=d.match(/<(?:\w+:)?Reason[^>]*>[\s\S]*?<(?:\w+:)?Text[^>]*>([\s\S]*?)<\/(?:\w+:)?Text>/i);return{success:!1,fault:{code:Ot((p==null?void 0:p[1])??(g==null?void 0:g[1])??"Unknown"),string:Ot((m==null?void 0:m[1])??(y==null?void 0:y[1])??"Unknown error"),actor:f?Ot(f[1]):void 0,detail:h?h[1]:void 0},rawXml:e}}let i=e.match(/<(?:soap:|SOAP-ENV:|)[Bb]ody[^>]*>([\s\S]*?)<\/(?:soap:|SOAP-ENV:|)[Bb]ody>/i);if(!i)return{success:!1,fault:{code:"ParseError",string:"Could not parse SOAP response body"},rawXml:e};let o=i[1].trim(),s=new RegExp(`<(?:\\w+:)?${r}(?:Response|Result)[^>]*>([\\s\\S]*?)<\\/(?:\\w+:)?${r}(?:Response|Result)>`,"i"),c=o.match(s),u=c?c[1]:o;return{success:!0,result:this.parseXmlToObject(u),rawXml:e}}parseXmlToObject(e){let r=e.trim();if(!r.startsWith("<"))return Ot(r);let n={},i=/<([^\/][^>\s]*)[^>]*>([\s\S]*?)<\/\1>/g,o,s=!1;for(;(o=i.exec(r))!==null;){s=!0;let[,c,u]=o,l=c.includes(":")?c.split(":")[1]:c,d=this.parseXmlToObject(u);l in n?Array.isArray(n[l])?n[l].push(d):n[l]=[n[l],d]:n[l]=d}return s?n:Ot(r)}};function Jr(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Ot(t){return t.replace(/'/g,"'").replace(/"/g,'"').replace(/>/g,">").replace(/</g,"<").replace(/&/g,"&")}function Ux(t,e){return new es(t,e)}function Ix(t,e){return new ts(t,e)}function IE(){return t=>{t.soap=e=>Ix(t,e),t.xmlrpc=(e,r)=>Ux(t,{endpoint:e,requestOptions:r})}}V();var rs=class extends Error{code;target;details;innererror;constructor(e){super(e.message),this.name="ODataException",this.code=e.code,this.target=e.target,this.details=e.details,this.innererror=e.innererror}},ns=class{client;entitySet;entityKey;queryOptions={};requestOptions;constructor(e,r){this.client=e,this.entitySet=r}key(e){return this.entityKey=e,this}select(...e){return this.queryOptions.$select=e,this}expand(...e){return e.some(n=>typeof n!="string")?this.queryOptions.$expand=e:this.queryOptions.$expand=e,this}filter(e){if(typeof e=="function"){let r=new is;this.queryOptions.$filter=e(r).build()}else this.queryOptions.$filter=e;return this}orderBy(e,r="asc"){let n=this.queryOptions.$orderby,i={property:e,direction:r};return Array.isArray(n)?n.push(i):n?this.queryOptions.$orderby=[{property:n,direction:"asc"},i]:this.queryOptions.$orderby=[i],this}top(e){return this.queryOptions.$top=e,this}skip(e){return this.queryOptions.$skip=e,this}count(e=!0){return this.queryOptions.$count=e,this}search(e){return this.queryOptions.$search=e,this}custom(e,r){return this.queryOptions[e]=r,this}options(e){return this.requestOptions=e,this}async get(){return this.client.get(this.entitySet,this.entityKey,this.queryOptions,this.requestOptions)}async*getAll(){let e=await this.get();for(;e.value;){for(let r of e.value)yield r;if(e["@odata.nextLink"])e=await this.client.getNextPage(e["@odata.nextLink"]);else break}}toUrl(){return this.client.buildUrl(this.entitySet,this.entityKey,this.queryOptions)}},is=class t{parts=[];eq(e,r){return this.parts.push(`${e} eq ${this.formatValue(r)}`),this}ne(e,r){return this.parts.push(`${e} ne ${this.formatValue(r)}`),this}gt(e,r){return this.parts.push(`${e} gt ${this.formatValue(r)}`),this}ge(e,r){return this.parts.push(`${e} ge ${this.formatValue(r)}`),this}lt(e,r){return this.parts.push(`${e} lt ${this.formatValue(r)}`),this}le(e,r){return this.parts.push(`${e} le ${this.formatValue(r)}`),this}contains(e,r){return this.parts.push(`contains(${e},'${this.escapeString(r)}')`),this}startswith(e,r){return this.parts.push(`startswith(${e},'${this.escapeString(r)}')`),this}endswith(e,r){return this.parts.push(`endswith(${e},'${this.escapeString(r)}')`),this}isNull(e){return this.parts.push(`${e} eq null`),this}isNotNull(e){return this.parts.push(`${e} ne null`),this}in(e,r){let n=r.map(i=>this.formatValue(i)).join(",");return this.parts.push(`${e} in (${n})`),this}and(){return this.parts.length>0&&this.parts.push("and"),this}or(){return this.parts.length>0&&this.parts.push("or"),this}not(){return this.parts.push("not"),this}group(e){let r=new t,n=e(r).build();return this.parts.push(`(${n})`),this}raw(e){return this.parts.push(e),this}build(){return this.parts.join(" ")}formatValue(e){return e===null?"null":typeof e=="string"?`'${this.escapeString(e)}'`:typeof e=="boolean"||typeof e=="number"?e.toString():e instanceof Date?e.toISOString():typeof e=="object"?JSON.stringify(e):String(e)}escapeString(e){return e.replace(/'/g,"''")}},os=class{client;options;constructor(e,r){this.client=e,this.options={serviceRoot:r.serviceRoot.replace(/\/$/,""),version:r.version??"4.0",maxPageSize:r.maxPageSize??100,requestOptions:r.requestOptions??{}}}query(e){return new ns(this,e)}async get(e,r,n,i){let o=this.buildUrl(e,r,n);return await this.request("GET",o,void 0,i)}async getById(e,r,n,i){return await this.get(e,r,n,i)}async getNextPage(e){let r=await this.client.get(e,{...this.options.requestOptions,headers:this.getHeaders()});return this.handleResponse(r)}async create(e,r,n){let i=this.buildUrl(e);return this.request("POST",i,r,n)}async update(e,r,n,i){let o=this.buildUrl(e,r);return this.request("PATCH",o,n,i)}async replace(e,r,n,i){let o=this.buildUrl(e,r);return this.request("PUT",o,n,i)}async delete(e,r,n){let i=this.buildUrl(e,r);await this.request("DELETE",i,void 0,n)}async action(e,r,n){let i=`${this.options.serviceRoot}/${e}`;return this.request("POST",i,r,n)}async function(e,r,n){let i=`${this.options.serviceRoot}/${e}`;if(r&&Object.keys(r).length>0){let o=Object.entries(r).map(([s,c])=>`${s}=${this.formatKeyValue(c)}`).join(",");i+=`(${o})`}return this.request("GET",i,void 0,n)}async batch(e,r){let n=`batch_${Date.now()}_${Math.random().toString(36).slice(2)}`,i=`${this.options.serviceRoot}/$batch`,o="";for(let u of e){if(o+=`--${n}\r
|
|
137
137
|
`,o+=`Content-Type: application/http\r
|
|
138
138
|
`,o+=`Content-Transfer-Encoding: binary\r
|
|
139
139
|
\r
|
|
@@ -143,7 +143,7 @@ self.onmessage = async (event) => {
|
|
|
143
143
|
\r
|
|
144
144
|
`,o+=JSON.stringify(u.body)),o+=`\r
|
|
145
145
|
`}o+=`--${n}--\r
|
|
146
|
-
`;let c=await(await this.client.post(i,o,{...this.options.requestOptions,...r,headers:{...this.getHeaders(),"Content-Type":`multipart/mixed; boundary=${n}`,...r==null?void 0:r.headers}})).text();return this.parseBatchResponse(c)}async getMetadata(){return(await this.client.get(`${this.options.serviceRoot}/$metadata`,{...this.options.requestOptions,headers:{Accept:"application/xml"}})).text()}buildUrl(e,r,n){let i=`${this.options.serviceRoot}/${e}`;if(r!==void 0&&(i+=`(${this.formatKey(r)})`),n){let o=this.buildQueryString(n);o&&(i+=`?${o}`)}return i}getHeaders(){return{Accept:"application/json","Content-Type":"application/json","OData-Version":this.options.version,"OData-MaxVersion":"4.01"}}async request(e,r,n,i){let o={...this.options.requestOptions,...i,throwHttpErrors:!1,headers:{...this.getHeaders(),...i==null?void 0:i.headers}},s;switch(e){case"GET":s=await this.client.get(r,o);break;case"POST":s=await this.client.post(r,n,o);break;case"PUT":s=await this.client.put(r,n,o);break;case"PATCH":s=await this.client.patch(r,n,o);break;case"DELETE":s=await this.client.delete(r,o);break;default:throw new he(`Unsupported HTTP method: ${e}`,{feature:e})}return this.handleResponse(s)}async handleResponse(e){if(e.status===204)return;let r=await e.json();if(!e.ok){let n=r;throw n.error?new rs(n.error):new Je(e)}return r}formatKey(e){return typeof e=="string"?`'${e.replace(/'/g,"''")}'`:typeof e=="number"?e.toString():Object.entries(e).map(([r,n])=>`${r}=${this.formatKeyValue(n)}`).join(",")}formatKeyValue(e){return typeof e=="string"?`'${e.replace(/'/g,"''")}'`:e===null?"null":e instanceof Date?e.toISOString():String(e)}buildQueryString(e){let r=[];if(e.$select){let n=Array.isArray(e.$select)?e.$select.join(","):e.$select;r.push(`$select=${encodeURIComponent(n)}`)}if(e.$expand){let n=this.formatExpand(e.$expand);r.push(`$expand=${encodeURIComponent(n)}`)}if(e.$filter){let n=typeof e.$filter=="string"?e.$filter:this.formatFilterExpression(e.$filter);r.push(`$filter=${encodeURIComponent(n)}`)}if(e.$orderby){let n=this.formatOrderBy(e.$orderby);r.push(`$orderby=${encodeURIComponent(n)}`)}e.$top!==void 0&&r.push(`$top=${e.$top}`),e.$skip!==void 0&&r.push(`$skip=${e.$skip}`),e.$count!==void 0&&r.push(`$count=${e.$count}`),e.$search&&r.push(`$search=${encodeURIComponent(e.$search)}`),e.$format&&r.push(`$format=${e.$format}`);for(let[n,i]of Object.entries(e))!n.startsWith("$")&&i!==void 0&&r.push(`${n}=${encodeURIComponent(String(i))}`);return r.join("&")}formatExpand(e){return typeof e=="string"?e:Array.isArray(e)?e.map(r=>typeof r=="string"?r:this.formatExpandOption(r)).join(","):""}formatExpandOption(e){let r=e.property,n=[];if(e.select&&n.push(`$select=${e.select.join(",")}`),e.filter){let i=typeof e.filter=="string"?e.filter:this.formatFilterExpression(e.filter);n.push(`$filter=${i}`)}return e.orderby&&n.push(`$orderby=${this.formatOrderBy(e.orderby)}`),e.top!==void 0&&n.push(`$top=${e.top}`),e.skip!==void 0&&n.push(`$skip=${e.skip}`),e.count!==void 0&&n.push(`$count=${e.count}`),e.expand&&n.push(`$expand=${this.formatExpand(e.expand)}`),n.length>0&&(r+=`(${n.join(";")})`),r}formatOrderBy(e){return typeof e=="string"?e:e.map(r=>`${r.property} ${r.direction??"asc"}`).join(",")}formatFilterExpression(e){if(e.raw)return e.raw;let r=[];if(e.eq&&r.push(`${e.eq[0]} eq ${this.formatFilterValue(e.eq[1])}`),e.ne&&r.push(`${e.ne[0]} ne ${this.formatFilterValue(e.ne[1])}`),e.gt&&r.push(`${e.gt[0]} gt ${this.formatFilterValue(e.gt[1])}`),e.ge&&r.push(`${e.ge[0]} ge ${this.formatFilterValue(e.ge[1])}`),e.lt&&r.push(`${e.lt[0]} lt ${this.formatFilterValue(e.lt[1])}`),e.le&&r.push(`${e.le[0]} le ${this.formatFilterValue(e.le[1])}`),e.contains&&r.push(`contains(${e.contains[0]},'${e.contains[1]}')`),e.startswith&&r.push(`startswith(${e.startswith[0]},'${e.startswith[1]}')`),e.endswith&&r.push(`endswith(${e.endswith[0]},'${e.endswith[1]}')`),e.and){let n=e.and.map(i=>this.formatFilterExpression(i));r.push(`(${n.join(" and ")})`)}if(e.or){let n=e.or.map(i=>this.formatFilterExpression(i));r.push(`(${n.join(" or ")})`)}return e.not&&r.push(`not (${this.formatFilterExpression(e.not)})`),r.join(" and ")}formatFilterValue(e){return e===null?"null":typeof e=="string"?`'${e.replace(/'/g,"''")}'`:typeof e=="boolean"||typeof e=="number"?e.toString():e instanceof Date?e.toISOString():String(e)}parseBatchResponse(e){let r=[],n=e.match(/--batch[^\r\n]+/);if(!n)return r;let i=n[0],o=e.split(i).slice(1,-1);for(let s of o){let c=s.match(/HTTP\/\d\.\d\s+(\d+)/),u=s.match(/\r\n\r\n({[\s\S]*})/);r.push({status:c?parseInt(c[1],10):0,body:u?JSON.parse(u[1]):null})}return r}};function Ix(t,e){return new os(t,e)}function $E(){return t=>{t.odata=(e,r)=>Ix(t,{serviceRoot:e,...r})}}var as=class{entries=[];isRecording=!1;onEntry;start(){this.isRecording=!0,this.entries=[]}stop(){this.isRecording=!1}clear(){this.entries=[]}getEntries(){return this.entries}setOnEntry(e){this.onEntry=e}generateHar(){return{log:{version:"1.2",creator:{name:"Recker",version:"1.0.0"},pages:[],entries:this.entries}}}download(e="recker-session.har"){if(typeof Blob>"u"||typeof document>"u")throw new Error("download() is only supported in browser. Use save() in Node.js");let r=this.generateHar(),n=new Blob([JSON.stringify(r,null,2)],{type:"application/json"}),i=URL.createObjectURL(n),o=document.createElement("a");o.href=i,o.download=e,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(i)}async save(e){if(typeof window<"u")throw new Error("save() is only supported in Node.js. Use download() in browser");try{let r=await Promise.resolve().then(()=>(xi(),bl)),n=this.generateHar();await r.writeFile(e,JSON.stringify(n,null,2))}catch(r){throw new Error(`Failed to save HAR: ${r.message}`)}}plugin(){return e=>{e.hooks.afterResponse||(e.hooks.afterResponse=[]),e.hooks.afterResponse.push(async(r,n)=>{var o,s,c,u,l;if(!this.isRecording)return;let i={startedDateTime:new Date().toISOString(),time:((o=n.timings)==null?void 0:o.total)||0,request:{method:r.method,url:r.url,httpVersion:"HTTP/1.1",headers:this.mapHeaders(r.headers),queryString:[],cookies:[],headersSize:-1,bodySize:-1},response:{status:n.status,statusText:n.statusText,httpVersion:"HTTP/1.1",headers:this.mapHeaders(n.headers),cookies:[],content:{size:-1,mimeType:n.headers.get("content-type")||"",text:"[Body capture disabled]"},redirectURL:"",headersSize:-1,bodySize:-1},cache:{},timings:{send:0,wait:((s=n.timings)==null?void 0:s.firstByte)||0,receive:(((c=n.timings)==null?void 0:c.total)||0)-(((u=n.timings)==null?void 0:u.firstByte)||0)}};return this.entries.push(i),(l=this.onEntry)==null||l.call(this,i),n})}}mapHeaders(e){let r=[];return e.forEach((n,i)=>r.push({name:i,value:n})),r}},Qr=new as,zE=t=>(Qr.start(),t!=null&&t.onEntry&&Qr.setOnEntry(t.onEntry),Qr.plugin());function dd(t){return async(e,r)=>{if(t.latency&&t.latency>0&&await new Promise(n=>setTimeout(n,t.latency)),t.errorRate&&t.errorRate>0&&Math.random()<t.errorRate)throw new Error(t.errorMessage||"Simulated Network Error (Packet Loss)");return r(e)}}var qx="recker-cache",nt="entries";var pd=class{dbPromise;constructor(e=qx){this.dbPromise=this.openDB(e)}openDB(e){return new Promise((r,n)=>{if(typeof indexedDB>"u"){n(new Error("IndexedDB is not supported in this environment"));return}let i=indexedDB.open(e,1);i.onupgradeneeded=o=>{let s=o.target.result;s.objectStoreNames.contains(nt)||s.createObjectStore(nt,{keyPath:"key"})},i.onsuccess=o=>{r(o.target.result)},i.onerror=o=>{n(o.target.error)}})}async get(e){let r=await this.dbPromise;return new Promise((n,i)=>{let c=r.transaction(nt,"readonly").objectStore(nt).get(e);c.onsuccess=()=>{let u=c.result;if(!u){n(null);return}if(u.expiresAt&&Date.now()>u.expiresAt){this.delete(e).catch(()=>{}),n(null);return}n(u.value)},c.onerror=()=>i(c.error)})}async set(e,r,n){let i=await this.dbPromise;return new Promise((o,s)=>{let u=i.transaction(nt,"readwrite").objectStore(nt),l=Date.now()+n,d={key:e,value:r,expiresAt:l},p=u.put(d);p.onsuccess=()=>o(),p.onerror=()=>s(p.error)})}async delete(e){let r=await this.dbPromise;return new Promise((n,i)=>{let c=r.transaction(nt,"readwrite").objectStore(nt).delete(e);c.onsuccess=()=>n(),c.onerror=()=>i(c.error)})}async clear(){let e=await this.dbPromise;return new Promise((r,n)=>{let s=e.transaction(nt,"readwrite").objectStore(nt).clear();s.onsuccess=()=>r(),s.onerror=()=>n(s.error)})}};Nn();Fn();var $x={utf8:"utf-8",utf_8:"utf-8",utf16:"utf-16",utf_16:"utf-16",utf16le:"utf-16le",utf16be:"utf-16be",latin1:"iso-8859-1","latin-1":"iso-8859-1","iso8859-1":"iso-8859-1","iso_8859-1":"iso-8859-1",cp1252:"windows-1252",win1252:"windows-1252","us-ascii":"ascii",usascii:"ascii",gbk:"gbk",gb2312:"gb2312",gb18030:"gb18030","shift-jis":"shift_jis",shiftjis:"shift_jis",sjis:"shift_jis","euc-jp":"euc-jp",eucjp:"euc-jp","iso-2022-jp":"iso-2022-jp","euc-kr":"euc-kr",euckr:"euc-kr"};function zt(t){let e=t.toLowerCase().trim();return $x[e]||e}function Ox(t){if(!t)return null;let e=t.match(/charset=["']?([^"';\s]+)["']?/i);return e?zt(e[1]):null}function md(t){return t.length<2?null:t.length>=4&&t[0]===0&&t[1]===0&&t[2]===254&&t[3]===255?{charset:"utf-32be",source:"bom",confidence:"high"}:t.length>=4&&t[0]===255&&t[1]===254&&t[2]===0&&t[3]===0?{charset:"utf-32le",source:"bom",confidence:"high"}:t.length>=3&&t[0]===239&&t[1]===187&&t[2]===191?{charset:"utf-8",source:"bom",confidence:"high"}:t[0]===254&&t[1]===255?{charset:"utf-16be",source:"bom",confidence:"high"}:t[0]===255&&t[1]===254?{charset:"utf-16le",source:"bom",confidence:"high"}:null}function zx(t){let e=md(t);if(!e)return t;switch(e.charset){case"utf-8":return t.slice(3);case"utf-16le":case"utf-16be":return t.slice(2);case"utf-32le":case"utf-32be":return t.slice(4);default:return t}}function jx(t){let e=t.match(/<\?xml[^?]*encoding=["']([^"']+)["'][^?]*\?>/i);return e?zt(e[1]):null}function _x(t){let e=t.slice(0,1024),r=e.match(/<meta[^>]+charset=["']?([^"'>\s]+)["']?/i);if(r)return zt(r[1]);let n=e.match(/<meta[^>]+http-equiv=["']?Content-Type["']?[^>]+content=["']?[^"'>]*charset=([^"'>\s;]+)/i);if(n)return zt(n[1]);let i=e.match(/<meta[^>]+content=["']?[^"'>]*charset=([^"'>\s;]+)[^>]+http-equiv=["']?Content-Type["']?/i);return i?zt(i[1]):null}function VE(t,e){let r=Ox(e||null);if(r)return{charset:r,source:"header",confidence:"high"};let n=md(t);if(n)return n;let o=new TextDecoder("utf-8",{fatal:!1}).decode(t.slice(0,1024));if(o.trimStart().startsWith("<?xml")){let s=jx(o);if(s)return{charset:s,source:"xml",confidence:"medium"}}if(o.toLowerCase().includes("<html")||o.toLowerCase().includes("<!doctype html")){let s=_x(o);if(s)return{charset:s,source:"html-meta",confidence:"medium"}}return{charset:"utf-8",source:"default",confidence:"low"}}function GE(t,e){let r="utf-8";typeof e=="string"?r=zt(e):e&&(r=e.charset);let n=zx(t);try{return new TextDecoder(r).decode(n)}catch{return new TextDecoder("utf-8",{fatal:!1}).decode(n)}}function KE(){return["utf-8","utf-16le","utf-16be","iso-8859-1","iso-8859-2","iso-8859-3","iso-8859-4","iso-8859-5","iso-8859-6","iso-8859-7","iso-8859-8","iso-8859-9","iso-8859-10","iso-8859-11","iso-8859-13","iso-8859-14","iso-8859-15","iso-8859-16","windows-1250","windows-1251","windows-1252","windows-1253","windows-1254","windows-1255","windows-1256","windows-1257","windows-1258","koi8-r","koi8-u","gbk","gb2312","gb18030","big5","big5-hkscs","shift_jis","euc-jp","iso-2022-jp","euc-kr"]}function XE(t){try{return new TextDecoder(zt(t)),!0}catch{return!1}}jr();va();var Wx=new Set(["a","an","the","and","or","but","if","because","as","what","when","where","how","who","which","this","that","these","those","is","are","was","were","be","been","being","have","has","had","do","does","did","at","by","for","from","in","into","of","off","on","onto","out","over","to","up","with","about","some","any","it","its","you","your","we","our","they","their","he","his","she","her","i","my","me","not","no","can","will","just","o","a","os","as","um","uma","uns","umas","e","ou","mas","se","porque","como","quando","onde","que","quem","qual","este","esta","esse","essa","aquele","aquela","isto","isso","aquilo","\xE9","s\xE3o","foi","foram","ser","sendo","ter","tem","tinha","fazer","faz","fez","em","no","na","nos","nas","de","do","da","dos","das","por","para","com","sem","sobre","sob","ante","at\xE9","ao","aos","eu","meu","minha","voc\xEA","seu","sua","n\xF3s","nosso","nossa","eles","elas","dele","dela","n\xE3o","sim","muito","muita","mais","pelo","pela","pelos","pelas","num","numa","est\xE1","est\xE3o"]);function Vx(t){return t.toLowerCase().replace(/[^\w\s\u00C0-\u00FF]/g,"").split(/\s+/).filter(e=>e.length>2).filter(e=>!Wx.has(e))}function fd(t,e=20){let r=[t.title,t.title,t.description,t.keywords,t.keywords,t.visibleText].filter(Boolean).join(" "),n=Vx(r),i=n.length,o={};for(let c of n)o[c]=(o[c]||0)+1;let s=Object.entries(o).map(([c,u])=>({word:c,count:u,density:i>0?parseFloat((u/i*100).toFixed(2)):0})).sort((c,u)=>u.count-c.count).slice(0,e);return{totalWords:i,uniqueWords:Object.keys(o).length,topKeywords:s}}function a(t,e,r,n){return{id:t.id,name:t.name,category:t.category,severity:t.severity,status:e,message:r,...n}}var U={title:{min:30,ideal:{min:50,max:60},max:70},metaDescription:{min:70,ideal:{min:120,max:155},max:160},og:{title:{min:30,ideal:{min:40,max:60},max:90},description:{min:55,ideal:{min:110,max:155},max:200},image:{dimensions:{width:1200,height:630},minDimensions:{width:600,height:315},ratio:1.91,maxSizeKb:300,maxSizeKbAbsolute:1e3,formats:["jpg","jpeg","png","webp"]},meta:{maxUrlLength:2e3,maxDescriptionEmojis:2,maxCapsPercentage:30},fallbacks:{requireMetaTitle:!0,requireMetaDescription:!0}},twitter:{title:{min:30,ideal:{min:40,max:55},max:70},description:{min:70,ideal:{min:125,max:200},max:200},image:{summary:{min:{width:144,height:144},max:{width:4096,height:4096}},summaryLarge:{min:{width:300,height:157},max:{width:4096,height:4096}},maxSizeMb:5}},headings:{h1:{count:1,minLength:20,maxLength:70},h2:{min:2,max:8}},images:{alt:{minLength:10,idealLength:{min:80,max:120},maxLength:150},maxSizeKb:100,maxSizeKbAcceptable:500},links:{minInternal:3,maxExternal:100,genericTexts:["clique aqui","click here","saiba mais","learn more","read more","leia mais","here","aqui"]},content:{minWordsSimple:150,minWordsRanking:300,minWordsAuthority:800,idealWordsAuthority:2500,maxWordsPerSentence:25,maxWordsPerParagraph:90,minWordsPerParagraph:40,minWordsPerH2Section:150,minWordsPerH3Section:50,imageWordRatio:{min:200,max:300},keywordDensity:{min:.8,max:2},redundancyTolerance:3},url:{maxLength:75,maxLengthAbsolute:2048},mobile:{minFontSize:16,minTouchTarget:48},thinContent:{minWords:150,veryThinWords:100},timing:{ttfb:{excellent:200,good:500,acceptable:800,poor:800},total:{excellent:1e3,good:2500,acceptable:4e3,poor:4e3},dns:{excellent:20,good:50,acceptable:100,poor:100},tcp:{excellent:50,good:100,acceptable:200,poor:200},tls:{excellent:100,good:200,acceptable:300,poor:300},download:{htmlSmall:{sizeKb:50,excellent:100,good:200,acceptable:400},htmlMedium:{sizeKb:200,excellent:300,good:500,acceptable:800},htmlLarge:{excellent:500,good:800,acceptable:1200}}},responseSize:{html:{good:102400,warning:512e3,poor:1048576},total:{good:1048576,warning:3145728,poor:5242880}}};var hd=[{id:"title-exists",name:"Title Tag Exists",category:"title",severity:"error",description:"Page must have a title tag",check:t=>t.title?a({id:"title-exists",name:"Title Tag Exists",category:"title",severity:"error"},"info","Not applicable (page has title tag)",{recommendation:"This rule checks for the presence of a title tag"}):a({id:"title-exists",name:"Title Tag",category:"title",severity:"error"},"fail","Missing title tag",{recommendation:"Add a unique, descriptive title tag between 50-60 characters",evidence:{expected:"<title>Your Page Title - Brand Name</title>",found:"No <title> tag found in <head>",impact:"Search engines cannot display your page title in results, reducing click-through rate",example:`<head>
|
|
146
|
+
`;let c=await(await this.client.post(i,o,{...this.options.requestOptions,...r,headers:{...this.getHeaders(),"Content-Type":`multipart/mixed; boundary=${n}`,...r==null?void 0:r.headers}})).text();return this.parseBatchResponse(c)}async getMetadata(){return(await this.client.get(`${this.options.serviceRoot}/$metadata`,{...this.options.requestOptions,headers:{Accept:"application/xml"}})).text()}buildUrl(e,r,n){let i=`${this.options.serviceRoot}/${e}`;if(r!==void 0&&(i+=`(${this.formatKey(r)})`),n){let o=this.buildQueryString(n);o&&(i+=`?${o}`)}return i}getHeaders(){return{Accept:"application/json","Content-Type":"application/json","OData-Version":this.options.version,"OData-MaxVersion":"4.01"}}async request(e,r,n,i){let o={...this.options.requestOptions,...i,throwHttpErrors:!1,headers:{...this.getHeaders(),...i==null?void 0:i.headers}},s;switch(e){case"GET":s=await this.client.get(r,o);break;case"POST":s=await this.client.post(r,n,o);break;case"PUT":s=await this.client.put(r,n,o);break;case"PATCH":s=await this.client.patch(r,n,o);break;case"DELETE":s=await this.client.delete(r,o);break;default:throw new he(`Unsupported HTTP method: ${e}`,{feature:e})}return this.handleResponse(s)}async handleResponse(e){if(e.status===204)return;let r=await e.json();if(!e.ok){let n=r;throw n.error?new rs(n.error):new Je(e)}return r}formatKey(e){return typeof e=="string"?`'${e.replace(/'/g,"''")}'`:typeof e=="number"?e.toString():Object.entries(e).map(([r,n])=>`${r}=${this.formatKeyValue(n)}`).join(",")}formatKeyValue(e){return typeof e=="string"?`'${e.replace(/'/g,"''")}'`:e===null?"null":e instanceof Date?e.toISOString():String(e)}buildQueryString(e){let r=[];if(e.$select){let n=Array.isArray(e.$select)?e.$select.join(","):e.$select;r.push(`$select=${encodeURIComponent(n)}`)}if(e.$expand){let n=this.formatExpand(e.$expand);r.push(`$expand=${encodeURIComponent(n)}`)}if(e.$filter){let n=typeof e.$filter=="string"?e.$filter:this.formatFilterExpression(e.$filter);r.push(`$filter=${encodeURIComponent(n)}`)}if(e.$orderby){let n=this.formatOrderBy(e.$orderby);r.push(`$orderby=${encodeURIComponent(n)}`)}e.$top!==void 0&&r.push(`$top=${e.$top}`),e.$skip!==void 0&&r.push(`$skip=${e.$skip}`),e.$count!==void 0&&r.push(`$count=${e.$count}`),e.$search&&r.push(`$search=${encodeURIComponent(e.$search)}`),e.$format&&r.push(`$format=${e.$format}`);for(let[n,i]of Object.entries(e))!n.startsWith("$")&&i!==void 0&&r.push(`${n}=${encodeURIComponent(String(i))}`);return r.join("&")}formatExpand(e){return typeof e=="string"?e:Array.isArray(e)?e.map(r=>typeof r=="string"?r:this.formatExpandOption(r)).join(","):""}formatExpandOption(e){let r=e.property,n=[];if(e.select&&n.push(`$select=${e.select.join(",")}`),e.filter){let i=typeof e.filter=="string"?e.filter:this.formatFilterExpression(e.filter);n.push(`$filter=${i}`)}return e.orderby&&n.push(`$orderby=${this.formatOrderBy(e.orderby)}`),e.top!==void 0&&n.push(`$top=${e.top}`),e.skip!==void 0&&n.push(`$skip=${e.skip}`),e.count!==void 0&&n.push(`$count=${e.count}`),e.expand&&n.push(`$expand=${this.formatExpand(e.expand)}`),n.length>0&&(r+=`(${n.join(";")})`),r}formatOrderBy(e){return typeof e=="string"?e:e.map(r=>`${r.property} ${r.direction??"asc"}`).join(",")}formatFilterExpression(e){if(e.raw)return e.raw;let r=[];if(e.eq&&r.push(`${e.eq[0]} eq ${this.formatFilterValue(e.eq[1])}`),e.ne&&r.push(`${e.ne[0]} ne ${this.formatFilterValue(e.ne[1])}`),e.gt&&r.push(`${e.gt[0]} gt ${this.formatFilterValue(e.gt[1])}`),e.ge&&r.push(`${e.ge[0]} ge ${this.formatFilterValue(e.ge[1])}`),e.lt&&r.push(`${e.lt[0]} lt ${this.formatFilterValue(e.lt[1])}`),e.le&&r.push(`${e.le[0]} le ${this.formatFilterValue(e.le[1])}`),e.contains&&r.push(`contains(${e.contains[0]},'${e.contains[1]}')`),e.startswith&&r.push(`startswith(${e.startswith[0]},'${e.startswith[1]}')`),e.endswith&&r.push(`endswith(${e.endswith[0]},'${e.endswith[1]}')`),e.and){let n=e.and.map(i=>this.formatFilterExpression(i));r.push(`(${n.join(" and ")})`)}if(e.or){let n=e.or.map(i=>this.formatFilterExpression(i));r.push(`(${n.join(" or ")})`)}return e.not&&r.push(`not (${this.formatFilterExpression(e.not)})`),r.join(" and ")}formatFilterValue(e){return e===null?"null":typeof e=="string"?`'${e.replace(/'/g,"''")}'`:typeof e=="boolean"||typeof e=="number"?e.toString():e instanceof Date?e.toISOString():String(e)}parseBatchResponse(e){let r=[],n=e.match(/--batch[^\r\n]+/);if(!n)return r;let i=n[0],o=e.split(i).slice(1,-1);for(let s of o){let c=s.match(/HTTP\/\d\.\d\s+(\d+)/),u=s.match(/\r\n\r\n({[\s\S]*})/);r.push({status:c?parseInt(c[1],10):0,body:u?JSON.parse(u[1]):null})}return r}};function Hx(t,e){return new os(t,e)}function $E(){return t=>{t.odata=(e,r)=>Hx(t,{serviceRoot:e,...r})}}var as=class{entries=[];isRecording=!1;onEntry;start(){this.isRecording=!0,this.entries=[]}stop(){this.isRecording=!1}clear(){this.entries=[]}getEntries(){return this.entries}setOnEntry(e){this.onEntry=e}generateHar(){return{log:{version:"1.2",creator:{name:"Recker",version:"1.0.0"},pages:[],entries:this.entries}}}download(e="recker-session.har"){if(typeof Blob>"u"||typeof document>"u")throw new Error("download() is only supported in browser. Use save() in Node.js");let r=this.generateHar(),n=new Blob([JSON.stringify(r,null,2)],{type:"application/json"}),i=URL.createObjectURL(n),o=document.createElement("a");o.href=i,o.download=e,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(i)}async save(e){if(typeof window<"u")throw new Error("save() is only supported in Node.js. Use download() in browser");try{let r=await Promise.resolve().then(()=>(xi(),bl)),n=this.generateHar();await r.writeFile(e,JSON.stringify(n,null,2))}catch(r){throw new Error(`Failed to save HAR: ${r.message}`)}}plugin(){return e=>{e.hooks.afterResponse||(e.hooks.afterResponse=[]),e.hooks.afterResponse.push(async(r,n)=>{var o,s,c,u,l;if(!this.isRecording)return;let i={startedDateTime:new Date().toISOString(),time:((o=n.timings)==null?void 0:o.total)||0,request:{method:r.method,url:r.url,httpVersion:"HTTP/1.1",headers:this.mapHeaders(r.headers),queryString:[],cookies:[],headersSize:-1,bodySize:-1},response:{status:n.status,statusText:n.statusText,httpVersion:"HTTP/1.1",headers:this.mapHeaders(n.headers),cookies:[],content:{size:-1,mimeType:n.headers.get("content-type")||"",text:"[Body capture disabled]"},redirectURL:"",headersSize:-1,bodySize:-1},cache:{},timings:{send:0,wait:((s=n.timings)==null?void 0:s.firstByte)||0,receive:(((c=n.timings)==null?void 0:c.total)||0)-(((u=n.timings)==null?void 0:u.firstByte)||0)}};return this.entries.push(i),(l=this.onEntry)==null||l.call(this,i),n})}}mapHeaders(e){let r=[];return e.forEach((n,i)=>r.push({name:i,value:n})),r}},Qr=new as,zE=t=>(Qr.start(),t!=null&&t.onEntry&&Qr.setOnEntry(t.onEntry),Qr.plugin());function dd(t){return async(e,r)=>{if(t.latency&&t.latency>0&&await new Promise(n=>setTimeout(n,t.latency)),t.errorRate&&t.errorRate>0&&Math.random()<t.errorRate)throw new Error(t.errorMessage||"Simulated Network Error (Packet Loss)");return r(e)}}var qx="recker-cache",nt="entries";var pd=class{dbPromise;constructor(e=qx){this.dbPromise=this.openDB(e)}openDB(e){return new Promise((r,n)=>{if(typeof indexedDB>"u"){n(new Error("IndexedDB is not supported in this environment"));return}let i=indexedDB.open(e,1);i.onupgradeneeded=o=>{let s=o.target.result;s.objectStoreNames.contains(nt)||s.createObjectStore(nt,{keyPath:"key"})},i.onsuccess=o=>{r(o.target.result)},i.onerror=o=>{n(o.target.error)}})}async get(e){let r=await this.dbPromise;return new Promise((n,i)=>{let c=r.transaction(nt,"readonly").objectStore(nt).get(e);c.onsuccess=()=>{let u=c.result;if(!u){n(null);return}if(u.expiresAt&&Date.now()>u.expiresAt){this.delete(e).catch(()=>{}),n(null);return}n(u.value)},c.onerror=()=>i(c.error)})}async set(e,r,n){let i=await this.dbPromise;return new Promise((o,s)=>{let u=i.transaction(nt,"readwrite").objectStore(nt),l=Date.now()+n,d={key:e,value:r,expiresAt:l},p=u.put(d);p.onsuccess=()=>o(),p.onerror=()=>s(p.error)})}async delete(e){let r=await this.dbPromise;return new Promise((n,i)=>{let c=r.transaction(nt,"readwrite").objectStore(nt).delete(e);c.onsuccess=()=>n(),c.onerror=()=>i(c.error)})}async clear(){let e=await this.dbPromise;return new Promise((r,n)=>{let s=e.transaction(nt,"readwrite").objectStore(nt).clear();s.onsuccess=()=>r(),s.onerror=()=>n(s.error)})}};Nn();Fn();var $x={utf8:"utf-8",utf_8:"utf-8",utf16:"utf-16",utf_16:"utf-16",utf16le:"utf-16le",utf16be:"utf-16be",latin1:"iso-8859-1","latin-1":"iso-8859-1","iso8859-1":"iso-8859-1","iso_8859-1":"iso-8859-1",cp1252:"windows-1252",win1252:"windows-1252","us-ascii":"ascii",usascii:"ascii",gbk:"gbk",gb2312:"gb2312",gb18030:"gb18030","shift-jis":"shift_jis",shiftjis:"shift_jis",sjis:"shift_jis","euc-jp":"euc-jp",eucjp:"euc-jp","iso-2022-jp":"iso-2022-jp","euc-kr":"euc-kr",euckr:"euc-kr"};function zt(t){let e=t.toLowerCase().trim();return $x[e]||e}function Ox(t){if(!t)return null;let e=t.match(/charset=["']?([^"';\s]+)["']?/i);return e?zt(e[1]):null}function md(t){return t.length<2?null:t.length>=4&&t[0]===0&&t[1]===0&&t[2]===254&&t[3]===255?{charset:"utf-32be",source:"bom",confidence:"high"}:t.length>=4&&t[0]===255&&t[1]===254&&t[2]===0&&t[3]===0?{charset:"utf-32le",source:"bom",confidence:"high"}:t.length>=3&&t[0]===239&&t[1]===187&&t[2]===191?{charset:"utf-8",source:"bom",confidence:"high"}:t[0]===254&&t[1]===255?{charset:"utf-16be",source:"bom",confidence:"high"}:t[0]===255&&t[1]===254?{charset:"utf-16le",source:"bom",confidence:"high"}:null}function zx(t){let e=md(t);if(!e)return t;switch(e.charset){case"utf-8":return t.slice(3);case"utf-16le":case"utf-16be":return t.slice(2);case"utf-32le":case"utf-32be":return t.slice(4);default:return t}}function jx(t){let e=t.match(/<\?xml[^?]*encoding=["']([^"']+)["'][^?]*\?>/i);return e?zt(e[1]):null}function _x(t){let e=t.slice(0,1024),r=e.match(/<meta[^>]+charset=["']?([^"'>\s]+)["']?/i);if(r)return zt(r[1]);let n=e.match(/<meta[^>]+http-equiv=["']?Content-Type["']?[^>]+content=["']?[^"'>]*charset=([^"'>\s;]+)/i);if(n)return zt(n[1]);let i=e.match(/<meta[^>]+content=["']?[^"'>]*charset=([^"'>\s;]+)[^>]+http-equiv=["']?Content-Type["']?/i);return i?zt(i[1]):null}function VE(t,e){let r=Ox(e||null);if(r)return{charset:r,source:"header",confidence:"high"};let n=md(t);if(n)return n;let o=new TextDecoder("utf-8",{fatal:!1}).decode(t.slice(0,1024));if(o.trimStart().startsWith("<?xml")){let s=jx(o);if(s)return{charset:s,source:"xml",confidence:"medium"}}if(o.toLowerCase().includes("<html")||o.toLowerCase().includes("<!doctype html")){let s=_x(o);if(s)return{charset:s,source:"html-meta",confidence:"medium"}}return{charset:"utf-8",source:"default",confidence:"low"}}function GE(t,e){let r="utf-8";typeof e=="string"?r=zt(e):e&&(r=e.charset);let n=zx(t);try{return new TextDecoder(r).decode(n)}catch{return new TextDecoder("utf-8",{fatal:!1}).decode(n)}}function KE(){return["utf-8","utf-16le","utf-16be","iso-8859-1","iso-8859-2","iso-8859-3","iso-8859-4","iso-8859-5","iso-8859-6","iso-8859-7","iso-8859-8","iso-8859-9","iso-8859-10","iso-8859-11","iso-8859-13","iso-8859-14","iso-8859-15","iso-8859-16","windows-1250","windows-1251","windows-1252","windows-1253","windows-1254","windows-1255","windows-1256","windows-1257","windows-1258","koi8-r","koi8-u","gbk","gb2312","gb18030","big5","big5-hkscs","shift_jis","euc-jp","iso-2022-jp","euc-kr"]}function XE(t){try{return new TextDecoder(zt(t)),!0}catch{return!1}}jr();va();var Wx=new Set(["a","an","the","and","or","but","if","because","as","what","when","where","how","who","which","this","that","these","those","is","are","was","were","be","been","being","have","has","had","do","does","did","at","by","for","from","in","into","of","off","on","onto","out","over","to","up","with","about","some","any","it","its","you","your","we","our","they","their","he","his","she","her","i","my","me","not","no","can","will","just","o","a","os","as","um","uma","uns","umas","e","ou","mas","se","porque","como","quando","onde","que","quem","qual","este","esta","esse","essa","aquele","aquela","isto","isso","aquilo","\xE9","s\xE3o","foi","foram","ser","sendo","ter","tem","tinha","fazer","faz","fez","em","no","na","nos","nas","de","do","da","dos","das","por","para","com","sem","sobre","sob","ante","at\xE9","ao","aos","eu","meu","minha","voc\xEA","seu","sua","n\xF3s","nosso","nossa","eles","elas","dele","dela","n\xE3o","sim","muito","muita","mais","pelo","pela","pelos","pelas","num","numa","est\xE1","est\xE3o"]);function Vx(t){return t.toLowerCase().replace(/[^\w\s\u00C0-\u00FF]/g,"").split(/\s+/).filter(e=>e.length>2).filter(e=>!Wx.has(e))}function fd(t,e=20){let r=[t.title,t.title,t.description,t.keywords,t.keywords,t.visibleText].filter(Boolean).join(" "),n=Vx(r),i=n.length,o={};for(let c of n)o[c]=(o[c]||0)+1;let s=Object.entries(o).map(([c,u])=>({word:c,count:u,density:i>0?parseFloat((u/i*100).toFixed(2)):0})).sort((c,u)=>u.count-c.count).slice(0,e);return{totalWords:i,uniqueWords:Object.keys(o).length,topKeywords:s}}function a(t,e,r,n){return{id:t.id,name:t.name,category:t.category,severity:t.severity,status:e,message:r,...n}}var U={title:{min:30,ideal:{min:50,max:60},max:70},metaDescription:{min:70,ideal:{min:120,max:155},max:160},og:{title:{min:30,ideal:{min:40,max:60},max:90},description:{min:55,ideal:{min:110,max:155},max:200},image:{dimensions:{width:1200,height:630},minDimensions:{width:600,height:315},ratio:1.91,maxSizeKb:300,maxSizeKbAbsolute:1e3,formats:["jpg","jpeg","png","webp"]},meta:{maxUrlLength:2e3,maxDescriptionEmojis:2,maxCapsPercentage:30},fallbacks:{requireMetaTitle:!0,requireMetaDescription:!0}},twitter:{title:{min:30,ideal:{min:40,max:55},max:70},description:{min:70,ideal:{min:125,max:200},max:200},image:{summary:{min:{width:144,height:144},max:{width:4096,height:4096}},summaryLarge:{min:{width:300,height:157},max:{width:4096,height:4096}},maxSizeMb:5}},headings:{h1:{count:1,minLength:20,maxLength:70},h2:{min:2,max:8}},images:{alt:{minLength:10,idealLength:{min:80,max:120},maxLength:150},maxSizeKb:100,maxSizeKbAcceptable:500},links:{minInternal:3,maxExternal:100,genericTexts:["clique aqui","click here","saiba mais","learn more","read more","leia mais","here","aqui"]},content:{minWordsSimple:150,minWordsRanking:300,minWordsAuthority:800,idealWordsAuthority:2500,maxWordsPerSentence:25,maxWordsPerParagraph:90,minWordsPerParagraph:40,minWordsPerH2Section:150,minWordsPerH3Section:50,imageWordRatio:{min:200,max:300},keywordDensity:{min:.8,max:2},redundancyTolerance:3},url:{maxLength:75,maxLengthAbsolute:2048},mobile:{minFontSize:16,minTouchTarget:48},thinContent:{minWords:150,veryThinWords:100},timing:{ttfb:{excellent:200,good:500,acceptable:800,poor:800},total:{excellent:1e3,good:2500,acceptable:4e3,poor:4e3},dns:{excellent:20,good:50,acceptable:100,poor:100},tcp:{excellent:50,good:100,acceptable:200,poor:200},tls:{excellent:100,good:200,acceptable:300,poor:300},download:{htmlSmall:{sizeKb:50,excellent:100,good:200,acceptable:400},htmlMedium:{sizeKb:200,excellent:300,good:500,acceptable:800},htmlLarge:{excellent:500,good:800,acceptable:1200}}},responseSize:{html:{good:102400,warning:512e3,poor:1048576},total:{good:1048576,warning:3145728,poor:5242880}}};var hd=[{id:"title-exists",name:"Title Tag Exists",category:"title",severity:"error",description:"Page must have a title tag",check:t=>t.title?a({id:"title-exists",name:"Title Tag Exists",category:"title",severity:"error"},"info","Not applicable (page has title tag)",{recommendation:"This rule checks for the presence of a title tag"}):a({id:"title-exists",name:"Title Tag",category:"title",severity:"error"},"fail","Missing title tag",{recommendation:"Add a unique, descriptive title tag between 50-60 characters",evidence:{expected:"<title>Your Page Title - Brand Name</title>",found:"No <title> tag found in <head>",impact:"Search engines cannot display your page title in results, reducing click-through rate",example:`<head>
|
|
147
147
|
<title>Product Name - Buy Online | YourStore</title>
|
|
148
148
|
</head>`}})},{id:"title-length",name:"Title Length",category:"title",severity:"warning",description:"Title should be between 50-60 characters",check:t=>{if(!t.title)return a({id:"title-length",name:"Title Length",category:"title",severity:"warning"},"info","Not applicable (no title tag)",{recommendation:"This rule checks title length when a title tag is present"});let e=t.titleLength??t.title.length,{min:r,ideal:n,max:i}=U.title;return e<r?a({id:"title-length",name:"Title Length",category:"title",severity:"warning"},"warn",`Title too short (${e} chars, min: ${r})`,{value:e,recommendation:`Expand title to ${n.min}-${n.max} characters. Ensure it includes target keywords and encourages clicks.`,evidence:{found:`${e} characters`,expected:`${n.min}-${n.max} characters`,impact:"Short titles limit keyword potential and may be replaced by Google."}}):e>i?a({id:"title-length",name:"Title Length",category:"title",severity:"warning"},"warn",`Title too long (${e} chars, will be truncated after ~60)`,{value:e,recommendation:`Shorten title to under ${n.max} characters to ensure visibility in SERPs.`,evidence:{found:`${e} characters`,expected:`< ${i} characters`,impact:"Truncated titles may lose click-through rate if key information is hidden."}}):e>=n.min&&e<=n.max?a({id:"title-length",name:"Title Length",category:"title",severity:"warning"},"pass",`Title length ideal (${e} chars)`,{value:e}):a({id:"title-length",name:"Title Length",category:"title",severity:"warning"},"pass",`Title length OK (${e} chars)`,{value:e})}},{id:"title-no-caps",name:"Title Case",category:"title",severity:"warning",description:"Title should not be ALL CAPS",check:t=>{if(!t.title)return a({id:"title-no-caps",name:"Title Case",category:"title",severity:"warning"},"info","Not applicable (no title tag)",{recommendation:"This rule checks title capitalization when a title tag is present"});let e=t.title.split(/\s+/).filter(n=>n.length>3);return e.filter(n=>n===n.toUpperCase()&&/[A-Z]/.test(n)).length>e.length/2?a({id:"title-no-caps",name:"Title Case",category:"title",severity:"warning"},"warn","Title appears to be ALL CAPS",{recommendation:"Use title case or sentence case for better readability and click-through rate.",evidence:{found:t.title,expected:"Normal capitalization (Title Case or Sentence case)",impact:"ALL CAPS titles look spammy and may be ignored by users. Google may also rewrite them.",example:'Instead of "BUY SHOES ONLINE NOW", use "Buy Shoes Online - Free Shipping"'}}):a({id:"title-no-caps",name:"Title Case",category:"title",severity:"warning"},"info","Not applicable (title uses proper capitalization)",{recommendation:"This rule checks for excessive ALL CAPS usage in title"})}},{id:"title-h1-different",name:"Title vs H1",category:"title",severity:"warning",description:"Title and H1 should be similar but not identical",check:t=>{if(!t.title||!t.h1Text)return a({id:"title-h1-different",name:"Title vs H1",category:"title",severity:"warning"},"info","Not applicable (missing title or H1)",{recommendation:"This rule compares title and H1 when both are present"});let e=t.title.toLowerCase().trim(),r=t.h1Text.toLowerCase().trim();return e===r?a({id:"title-h1-different",name:"Title vs H1",category:"title",severity:"warning"},"warn","Title and H1 are identical",{recommendation:"Consider making H1 slightly different from title for variety",evidence:{found:`Both are: "${t.title}"`,expected:"Similar but not identical text (variation helps SEO)",impact:"Identical title and H1 waste an opportunity to include related keywords and may appear redundant",example:`Title: "Buy Running Shoes Online - Free Shipping"
|
|
149
149
|
H1: "Best Running Shoes - Shop Now"`}}):a({id:"title-h1-different",name:"Title vs H1",category:"title",severity:"warning"},"info","Not applicable (title and H1 are different)",{recommendation:"This rule checks if title and H1 are identical"})}},{id:"meta-description-exists",name:"Meta Description Exists",category:"meta",severity:"error",description:"Page must have a meta description",check:t=>t.metaDescription?a({id:"meta-description-exists",name:"Meta Description Exists",category:"meta",severity:"error"},"info","Not applicable (page has meta description)",{recommendation:"This rule checks for the presence of a meta description"}):a({id:"meta-description-exists",name:"Meta Description",category:"meta",severity:"error"},"fail","Missing meta description",{recommendation:"Add a compelling meta description (120-155 characters) that summarizes the page content",evidence:{expected:'<meta name="description" content="Your page description here...">',found:"No meta description tag found",impact:"Search engines may generate their own snippet, which may not be optimal for click-through rate",example:'<meta name="description" content="Shop the best deals on electronics. Free shipping on orders over $50. 30-day returns.">'}})},{id:"meta-description-length",name:"Meta Description Length",category:"meta",severity:"warning",description:"Meta description should be 120-155 characters",check:t=>{if(!t.metaDescription)return a({id:"meta-description-length",name:"Meta Description Length",category:"meta",severity:"warning"},"info","Not applicable (no meta description)",{recommendation:"This rule checks meta description length when present"});let e=t.metaDescriptionLength??t.metaDescription.length,{min:r,ideal:n,max:i}=U.metaDescription;return e<r?a({id:"meta-description-length",name:"Meta Description Length",category:"meta",severity:"warning"},"warn",`Description too short (${e} chars, min: ${r})`,{value:e,recommendation:`Expand to ${n.min}-${n.max} characters. Summarize content and include keywords naturally.`,evidence:{found:`${e} characters`,expected:`${n.min}-${n.max} characters`,impact:"Short descriptions may be ignored by search engines in favor of auto-generated snippets."}}):e>i?a({id:"meta-description-length",name:"Meta Description Length",category:"meta",severity:"warning"},"warn",`Description may be truncated (${e} chars, max: ${i})`,{value:e,recommendation:`Shorten to under ${i} characters. Ensure the most important info is at the start.`,evidence:{found:`${e} characters`,expected:`< ${i} characters`,impact:"Truncated descriptions look unprofessional and may lower CTR."}}):e>=n.min&&e<=n.max?a({id:"meta-description-length",name:"Meta Description Length",category:"meta",severity:"warning"},"pass",`Description length ideal (${e} chars)`,{value:e}):a({id:"meta-description-length",name:"Meta Description Length",category:"meta",severity:"warning"},"pass",`Description length OK (${e} chars)`,{value:e})}},{id:"meta-description-unique",name:"Description Quality",category:"meta",severity:"info",description:"Meta description should be unique and compelling",check:t=>{if(!t.metaDescription)return a({id:"meta-description-unique",name:"Description Quality",category:"meta",severity:"info"},"info","Not applicable (no meta description)",{recommendation:"This rule checks meta description quality when present"});let e=t.metaDescription.toLowerCase(),r=["lorem ipsum","description here","todo","placeholder","change this"];for(let n of r)if(e.includes(n))return a({id:"meta-description-unique",name:"Description Quality",category:"meta",severity:"info"},"warn","Meta description appears to be a placeholder",{recommendation:"Replace with a unique, compelling description for better CTR",evidence:{found:`Contains placeholder text: "${n}"`,expected:"Unique, compelling description that summarizes page content",impact:"Placeholder text looks unprofessional and will hurt click-through rates in search results",example:'Instead of "Description here", use "Shop premium running shoes with free shipping on orders over $50. 30-day returns."'}});return a({id:"meta-description-unique",name:"Description Quality",category:"meta",severity:"info"},"info","Not applicable (description has good quality)",{recommendation:"This rule checks for placeholder patterns in meta description"})}},{id:"og-title-exists",name:"OG Title Exists",category:"og",severity:"error",description:"og:title must be defined (do not rely on <title>)",check:t=>t.ogTitle?a({id:"og-title-exists",name:"OG Title Exists",category:"og",severity:"error"},"info","Not applicable (page has og:title)",{recommendation:"This rule checks for the presence of og:title meta tag"}):a({id:"og-title-exists",name:"OG Title",category:"og",severity:"error"},"fail","Missing og:title",{recommendation:"Add og:title meta tag for better social sharing on Facebook, LinkedIn, etc.",evidence:{expected:'<meta property="og:title" content="Your Page Title">',found:"No og:title meta tag found",impact:"Social platforms may use <title> or auto-generate a title, which may not be optimal",example:'<meta property="og:title" content="Amazing Product - 50% Off Today Only!">'}})},{id:"og-title-length",name:"OG Title Length",category:"og",severity:"warning",description:"og:title should be 60-70 characters (max 90)",check:t=>{if(!t.ogTitle)return a({id:"og-title-length",name:"OG Title Length",category:"og",severity:"warning"},"info","Not applicable (no og:title)",{recommendation:"This rule checks og:title length when present"});let e=t.ogTitle.length,{ideal:r,max:n}=U.og.title;return e>n?a({id:"og-title-length",name:"OG Title Length",category:"og",severity:"warning"},"warn",`og:title too long (${e} chars, truncates at ~${n})`,{value:e,recommendation:`Shorten to ${r.max} characters`,evidence:{found:`${e} characters`,expected:`${r.min}-${r.max} characters (max ${n})`,impact:"Long titles get truncated on Facebook, LinkedIn, and other platforms, potentially hiding key information",example:'Instead of a 100-char title, use "Amazing Product - 50% Off Today | YourBrand" (48 chars)'}}):e>=r.min&&e<=r.max?a({id:"og-title-length",name:"OG Title Length",category:"og",severity:"warning"},"pass",`og:title length ideal (${e} chars)`,{value:e}):a({id:"og-title-length",name:"OG Title Length",category:"og",severity:"warning"},"pass",`og:title length OK (${e} chars)`,{value:e})}},{id:"og-title-no-emoji",name:"OG Title No Emoji",category:"og",severity:"warning",description:"og:title should not contain emojis (some networks remove them)",check:t=>t.ogTitle?/[\u{1F300}-\u{1F9FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]/u.test(t.ogTitle)?a({id:"og-title-no-emoji",name:"OG Title Emoji",category:"og",severity:"warning"},"warn","og:title contains emojis (some networks remove them)",{recommendation:"Remove emojis from og:title for consistent display",evidence:{found:`Title contains emojis: "${t.ogTitle}"`,expected:"Text without emoji characters",impact:"Facebook, LinkedIn, and some other platforms strip emojis from titles, causing inconsistent display",example:'Instead of "\u{1F680} Amazing Product", use "Amazing Product - Fast Delivery"'}}):a({id:"og-title-no-emoji",name:"OG Title No Emoji",category:"og",severity:"warning"},"info","Not applicable (og:title has no emojis)",{recommendation:"This rule checks for emoji characters in og:title"}):a({id:"og-title-no-emoji",name:"OG Title No Emoji",category:"og",severity:"warning"},"info","Not applicable (no og:title)",{recommendation:"This rule checks for emojis in og:title when present"})},{id:"og-description-exists",name:"OG Description Exists",category:"og",severity:"error",description:"og:description must be defined",check:t=>t.ogDescription?a({id:"og-description-exists",name:"OG Description Exists",category:"og",severity:"error"},"info","Not applicable (page has og:description)",{recommendation:"This rule checks for the presence of og:description meta tag"}):a({id:"og-description-exists",name:"OG Description",category:"og",severity:"error"},"fail","Missing og:description",{recommendation:"Add og:description for compelling social media previews",evidence:{expected:'<meta property="og:description" content="Your description here...">',found:"No og:description meta tag found",impact:"Social shares may have no description or use auto-generated text",example:'<meta property="og:description" content="Discover our latest collection. Shop now and get free shipping on orders over $50.">'}})},{id:"og-description-length",name:"OG Description Length",category:"og",severity:"warning",description:"og:description should be 110-155 characters (max 200)",check:t=>{if(!t.ogDescription)return a({id:"og-description-length",name:"OG Description Length",category:"og",severity:"warning"},"info","Not applicable (no og:description)",{recommendation:"This rule checks og:description length when present"});let e=t.ogDescription.length,{ideal:r,max:n}=U.og.description;return e>n?a({id:"og-description-length",name:"OG Description Length",category:"og",severity:"warning"},"warn",`og:description too long (${e} chars, truncates at ~${n})`,{value:e,recommendation:`Shorten to ${r.max} characters`,evidence:{found:`${e} characters`,expected:`${r.min}-${r.max} characters (max ${n})`,impact:"Descriptions longer than 200 chars get truncated on social platforms, hiding important information",example:'Keep description concise: "Shop premium running shoes. Free shipping over $50. 30-day returns." (85 chars)'}}):e>=r.min&&e<=r.max?a({id:"og-description-length",name:"OG Description Length",category:"og",severity:"warning"},"pass",`og:description length ideal (${e} chars)`,{value:e}):a({id:"og-description-length",name:"OG Description Length",category:"og",severity:"warning"},"pass",`og:description length OK (${e} chars)`,{value:e})}},{id:"og-image-exists",name:"OG Image Exists",category:"og",severity:"error",description:"og:image must be defined and publicly accessible",check:t=>t.ogImage?a({id:"og-image-exists",name:"OG Image Exists",category:"og",severity:"error"},"info","Not applicable (page has og:image)",{recommendation:"This rule checks for the presence of og:image meta tag"}):a({id:"og-image-exists",name:"OG Image",category:"og",severity:"error"},"fail","Missing og:image",{recommendation:"Add og:image with a publicly accessible image (1200\xD7630px recommended)",evidence:{expected:'<meta property="og:image" content="https://yoursite.com/image.jpg">',found:"No og:image meta tag found",impact:"Social shares will have no image preview, significantly reducing engagement",example:`<meta property="og:image" content="https://yoursite.com/og-image.jpg">
|
|
@@ -265,7 +265,7 @@ Twitter: @johndoe
|
|
|
265
265
|
Last update: 2025/01/15
|
|
266
266
|
Language: English
|
|
267
267
|
Standards: HTML5, CSS3
|
|
268
|
-
Components: React, Node.js`,learnMore:"https://humanstxt.org/"}})}];var Sd=[{id:"https-required",name:"HTTPS",category:"security",severity:"error",description:"Page must be served over HTTPS",check:t=>t.isHttps===!1?a({id:"https-required",name:"HTTPS",category:"security",severity:"error"},"fail","Page is not served over HTTPS",{recommendation:"Enable HTTPS for all pages",evidence:{found:"HTTP",expected:"HTTPS",impact:'Browsers show "Not Secure" warning, affects SEO ranking',learnMore:"https://web.dev/why-https-matters/"}}):t.isHttps===!0?a({id:"https-required",name:"HTTPS",category:"security",severity:"error"},"pass","Page is served over HTTPS"):a({id:"https-required",name:"HTTPS",category:"security",severity:"error"},"info","Not applicable (HTTPS status unavailable)",{recommendation:"This rule checks if the page is served over HTTPS when protocol information is available"})},{id:"mixed-content",name:"Mixed Content",category:"security",severity:"error",description:"HTTPS pages should not load HTTP resources",check:t=>t.hasMixedContent?a({id:"mixed-content",name:"Mixed Content",category:"security",severity:"error"},"fail","Page has mixed content (HTTP resources on HTTPS page)",{recommendation:"Update all resources to use HTTPS",evidence:{found:"Mixed content detected",expected:"All resources over HTTPS",impact:"Browsers may block HTTP resources, breaking functionality",learnMore:"https://web.dev/what-is-mixed-content/"}}):a({id:"mixed-content",name:"Mixed Content",category:"security",severity:"error"},"info","Not applicable (no mixed content detected or HTTPS not used)",{recommendation:"This rule checks for HTTP resources on HTTPS pages when mixed content is detected"})},{id:"http-redirect",name:"HTTP to HTTPS Redirect",category:"security",severity:"warning",description:"HTTP traffic should redirect to HTTPS",check:t=>t.httpRedirectsToHttps===void 0?a({id:"http-redirect",name:"HTTP to HTTPS Redirect",category:"security",severity:"warning"},"info","Not applicable (HTTP redirect status unavailable)",{recommendation:"This rule checks if HTTP traffic redirects to HTTPS when redirect information is available"}):t.httpRedirectsToHttps?a({id:"http-redirect",name:"HTTP to HTTPS Redirect",category:"security",severity:"warning"},"pass","HTTP redirects to HTTPS"):a({id:"http-redirect",name:"HTTP to HTTPS Redirect",category:"security",severity:"warning"},"warn","HTTP does not redirect to HTTPS",{recommendation:"Configure server to redirect all HTTP traffic to HTTPS",evidence:{expected:"301/302 redirect from HTTP to HTTPS",impact:"Users accessing via HTTP may stay on insecure connection",learnMore:"https://web.dev/redirect-http-to-https/"}})},{id:"internal-links-https",name:"Internal Links Use HTTPS",category:"security",severity:"warning",description:"Internal links should use HTTPS to avoid mixed content and redirect chains",check:t=>{var e;if(t.internalHttpLinks===void 0)return a({id:"internal-links-https",name:"Internal Links Use HTTPS",category:"security",severity:"warning"},"info","Not applicable (internal link data unavailable)",{recommendation:"This rule checks internal links for HTTPS usage when link analysis is available"});if(t.internalHttpLinks>0){let r=((e=t.internalHttpLinkUrls)==null?void 0:e.slice(0,3))||[];return a({id:"internal-links-https",name:"Internal Links Use HTTPS",category:"security",severity:"warning"},"warn",`${t.internalHttpLinks} internal link(s) use HTTP instead of HTTPS`,{value:t.internalHttpLinks,recommendation:"Update all internal links to use HTTPS URLs",evidence:{found:`${t.internalHttpLinks} HTTP internal links${r.length>0?`: ${r.join(", ")}`:""}`,expected:"All internal links should use HTTPS",impact:"HTTP links cause unnecessary redirects, slow page loads, and may trigger mixed content warnings. Search engines prefer sites with consistent HTTPS usage.",learnMore:"https://web.dev/why-https-matters/"}})}return a({id:"internal-links-https",name:"Internal Links Use HTTPS",category:"security",severity:"warning"},"pass","All internal links use HTTPS")}},{id:"security-csp-exists",name:"Content Security Policy (CSP)",category:"security",severity:"warning",description:"Content Security Policy header should be present to mitigate XSS attacks.",check:t=>t.responseHeaders?t.responseHeaders["content-security-policy"]||t.responseHeaders["Content-Security-Policy"]?a({id:"security-csp-exists",name:"Content Security Policy",category:"security",severity:"warning"},"pass","Content-Security-Policy header is present"):a({id:"security-csp-exists",name:"Content Security Policy",category:"security",severity:"warning"},"warn","Content-Security-Policy header is missing",{recommendation:"Implement a strong Content-Security-Policy to prevent XSS attacks",evidence:{expected:"Content-Security-Policy header",impact:"Page is vulnerable to XSS and data injection attacks",learnMore:"https://web.dev/csp/"}}):a({id:"security-csp-exists",name:"Content Security Policy",category:"security",severity:"warning"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for CSP headers when HTTP response headers are available"})},{id:"security-csp-xss-effective",name:"CSP XSS Effectiveness",category:"security",severity:"warning",description:"CSP should be effective against XSS attacks",check:t=>{if(!t.responseHeaders)return a({id:"security-csp-xss-effective",name:"CSP XSS Effectiveness",category:"security",severity:"warning"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks CSP effectiveness when HTTP response headers are available"});let e=t.responseHeaders["content-security-policy"]||t.responseHeaders["Content-Security-Policy"];if(!e)return a({id:"security-csp-xss-effective",name:"CSP XSS Effectiveness",category:"security",severity:"warning"},"info","Not applicable (CSP header not present)",{recommendation:"This rule checks CSP effectiveness when a Content-Security-Policy header exists"});let r=String(e).toLowerCase(),n=[];return r.includes("'unsafe-inline'")&&!r.includes("'strict-dynamic'")&&!r.includes("'nonce-")&&n.push("unsafe-inline without nonce/strict-dynamic"),r.includes("'unsafe-eval'")&&n.push("unsafe-eval allows code execution"),r.includes("data:")&&(r.includes("script-src")||!r.includes("default-src"))&&n.push("data: URIs can be exploited for XSS"),r.match(/script-src[^;]*\*/)&&n.push("Wildcard in script-src"),n.length>0?a({id:"security-csp-xss-effective",name:"CSP XSS Effectiveness",category:"security",severity:"warning"},"warn",`CSP may not be effective against XSS: ${n.join(", ")}`,{recommendation:"Use nonce-based CSP or strict-dynamic for better XSS protection",evidence:{found:n,expected:"No unsafe-inline, unsafe-eval, or wildcards",impact:"Attackers may be able to execute malicious scripts",learnMore:"https://web.dev/strict-csp/"}}):a({id:"security-csp-xss-effective",name:"CSP XSS Effectiveness",category:"security",severity:"warning"},"pass","CSP appears effective against XSS attacks")}},{id:"security-csp-directives",name:"CSP Required Directives",category:"security",severity:"error",description:"CSP should have script-src and object-src directives to prevent unsafe script execution",check:t=>{if(!t.responseHeaders)return a({id:"security-csp-directives",name:"CSP Required Directives",category:"security",severity:"error"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks CSP directives when HTTP response headers are available"});let e=t.responseHeaders["content-security-policy"]||t.responseHeaders["Content-Security-Policy"];if(!e)return a({id:"security-csp-directives",name:"CSP Required Directives",category:"security",severity:"error"},"info","Not applicable (CSP header not present)",{recommendation:"This rule checks CSP directives when a Content-Security-Policy header exists"});let r=String(e).toLowerCase(),n=[];if(!r.includes("script-src")&&!r.includes("default-src")&&n.push({directive:"script-src",severity:"High",impact:"Allows execution of unsafe scripts from any source"}),!r.includes("object-src")&&!r.includes("default-src")&&n.push({directive:"object-src",severity:"High",impact:"Allows injection of plugins that execute unsafe scripts"}),r.includes("base-uri")||n.push({directive:"base-uri",severity:"Medium",impact:"Allows attackers to change the base URL for relative links"}),n.length>0){let i=n.filter(o=>o.severity==="High");return i.length>0?a({id:"security-csp-directives",name:"CSP Required Directives",category:"security",severity:"error"},"fail",`Missing critical CSP directives: ${i.map(o=>o.directive).join(", ")}`,{recommendation:"Add script-src and object-src directives. Consider setting object-src to 'none' if plugins are not needed.",evidence:{found:n.map(o=>`${o.directive} (${o.severity}): ${o.impact}`),expected:"script-src 'self'; object-src 'none'; base-uri 'self'",impact:"Page is vulnerable to script injection attacks",learnMore:"https://web.dev/csp/"}}):a({id:"security-csp-directives",name:"CSP Required Directives",category:"security",severity:"error"},"warn",`Missing recommended CSP directives: ${n.map(o=>o.directive).join(", ")}`,{recommendation:"Add base-uri directive to prevent base tag hijacking",evidence:{found:n.map(o=>`${o.directive}: ${o.impact}`),expected:"base-uri 'self'"}})}return a({id:"security-csp-directives",name:"CSP Required Directives",category:"security",severity:"error"},"pass","CSP has required script-src and object-src directives")}},{id:"security-hsts-exists",name:"Strict-Transport-Security (HSTS)",category:"security",severity:"warning",description:"HSTS header forces secure connections and improves SEO indirectly.",check:t=>{if(!t.responseHeaders)return a({id:"security-hsts-exists",name:"HSTS Header",category:"security",severity:"warning"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for HSTS headers when HTTP response headers are available"});let e=t.responseHeaders["strict-transport-security"]||t.responseHeaders["Strict-Transport-Security"];return e?a({id:"security-hsts-exists",name:"HSTS Header",category:"security",severity:"warning"},"pass",`Strict-Transport-Security header is present: ${e}`):a({id:"security-hsts-exists",name:"HSTS Header",category:"security",severity:"warning"},"warn","Strict-Transport-Security header is missing",{recommendation:"Implement HSTS to force secure connections",evidence:{expected:"Strict-Transport-Security header",impact:"Users may connect over insecure HTTP on first visit",learnMore:"https://web.dev/security-headers/#hsts"}})}},{id:"security-hsts-strong",name:"Strong HSTS Policy",category:"security",severity:"info",description:"HSTS should have a strong policy with long max-age and includeSubDomains",check:t=>{if(!t.responseHeaders)return a({id:"security-hsts-strong",name:"Strong HSTS Policy",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks HSTS policy strength when HTTP response headers are available"});let e=t.responseHeaders["strict-transport-security"]||t.responseHeaders["Strict-Transport-Security"];if(!e)return a({id:"security-hsts-strong",name:"Strong HSTS Policy",category:"security",severity:"info"},"info","Not applicable (HSTS header not present)",{recommendation:"This rule checks HSTS policy strength when a Strict-Transport-Security header exists"});let r=String(e).toLowerCase(),n=[],i=r.match(/max-age\s*=\s*(\d+)/),o=i?parseInt(i[1],10):0,s=31536e3;return o<s&&n.push(`max-age is ${o}s (recommended: ${s}s / 1 year)`),r.includes("includesubdomains")||n.push("Missing includeSubDomains"),r.includes("preload")||n.push("Missing preload (optional but recommended)"),n.length>0?a({id:"security-hsts-strong",name:"Strong HSTS Policy",category:"security",severity:"info"},"info",`HSTS policy could be stronger: ${n.join("; ")}`,{recommendation:"Use max-age=31536000; includeSubDomains; preload",evidence:{found:e,expected:"max-age=31536000; includeSubDomains; preload",learnMore:"https://hstspreload.org/"}}):a({id:"security-hsts-strong",name:"Strong HSTS Policy",category:"security",severity:"info"},"pass","Strong HSTS policy with long max-age and includeSubDomains")}},{id:"security-coop",name:"Cross-Origin-Opener-Policy (COOP)",category:"security",severity:"info",description:"COOP ensures proper origin isolation for security",check:t=>{if(!t.responseHeaders)return a({id:"security-coop",name:"Cross-Origin-Opener-Policy",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for COOP headers when HTTP response headers are available"});let e=t.responseHeaders["cross-origin-opener-policy"]||t.responseHeaders["Cross-Origin-Opener-Policy"];if(!e)return a({id:"security-coop",name:"Cross-Origin-Opener-Policy",category:"security",severity:"info"},"info","Cross-Origin-Opener-Policy header is missing",{recommendation:"Add COOP header to isolate your origin from attackers",evidence:{expected:"Cross-Origin-Opener-Policy: same-origin",impact:"Lack of origin isolation may enable cross-origin attacks",learnMore:"https://web.dev/coop-coep/"}});let r=String(e).toLowerCase();if(r==="same-origin")return a({id:"security-coop",name:"Cross-Origin-Opener-Policy",category:"security",severity:"info"},"pass","COOP: same-origin (full isolation)");if(r==="same-origin-allow-popups")return a({id:"security-coop",name:"Cross-Origin-Opener-Policy",category:"security",severity:"info"},"pass","COOP: same-origin-allow-popups");let n=Array.isArray(e)?e.join(", "):String(e);return a({id:"security-coop",name:"Cross-Origin-Opener-Policy",category:"security",severity:"info"},"info",`COOP: ${n}`,{value:n})}},{id:"security-coep",name:"Cross-Origin-Embedder-Policy (COEP)",category:"security",severity:"info",description:"COEP prevents loading cross-origin resources without explicit permission",check:t=>{if(!t.responseHeaders)return a({id:"security-coep",name:"Cross-Origin-Embedder-Policy",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for COEP headers when HTTP response headers are available"});let e=t.responseHeaders["cross-origin-embedder-policy"]||t.responseHeaders["Cross-Origin-Embedder-Policy"];return e?a({id:"security-coep",name:"Cross-Origin-Embedder-Policy",category:"security",severity:"info"},"pass",`COEP: ${e}`):a({id:"security-coep",name:"Cross-Origin-Embedder-Policy",category:"security",severity:"info"},"info","Cross-Origin-Embedder-Policy header is missing",{recommendation:"Add COEP header for cross-origin isolation",evidence:{expected:"Cross-Origin-Embedder-Policy: require-corp",impact:"Required for SharedArrayBuffer and high-resolution timers",learnMore:"https://web.dev/coop-coep/"}})}},{id:"security-trusted-types",name:"Trusted Types",category:"security",severity:"info",description:"Trusted Types help prevent DOM-based XSS attacks",check:t=>{if(!t.responseHeaders)return a({id:"security-trusted-types",name:"Trusted Types",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for Trusted Types in CSP when HTTP response headers are available"});let e=t.responseHeaders["content-security-policy"]||t.responseHeaders["Content-Security-Policy"];return e?String(e).toLowerCase().includes("require-trusted-types-for")?a({id:"security-trusted-types",name:"Trusted Types",category:"security",severity:"info"},"pass","Trusted Types policy enabled via CSP"):a({id:"security-trusted-types",name:"Trusted Types",category:"security",severity:"info"},"info","Trusted Types not enabled",{recommendation:"Add require-trusted-types-for to CSP for DOM XSS protection",evidence:{expected:"Content-Security-Policy: require-trusted-types-for 'script'",impact:"DOM manipulation may be vulnerable to XSS attacks",learnMore:"https://web.dev/trusted-types/"}}):a({id:"security-trusted-types",name:"Trusted Types",category:"security",severity:"info"},"info","Not applicable (CSP header not present)",{recommendation:"This rule checks for Trusted Types when a Content-Security-Policy header exists"})}},{id:"security-xfo-exists",name:"X-Frame-Options",category:"security",severity:"warning",description:"X-Frame-Options header should be present to prevent clickjacking.",check:t=>{if(!t.responseHeaders)return a({id:"security-xfo-exists",name:"X-Frame-Options",category:"security",severity:"warning"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for X-Frame-Options headers when HTTP response headers are available"});let e=t.responseHeaders["x-frame-options"]||t.responseHeaders["X-Frame-Options"];return e?a({id:"security-xfo-exists",name:"X-Frame-Options",category:"security",severity:"warning"},"pass",`X-Frame-Options header is present: ${e}`):a({id:"security-xfo-exists",name:"X-Frame-Options",category:"security",severity:"warning"},"warn","X-Frame-Options header is missing",{recommendation:"Implement X-Frame-Options to prevent clickjacking attacks",evidence:{expected:"X-Frame-Options: DENY or SAMEORIGIN",impact:"Page can be embedded in malicious iframes for clickjacking",learnMore:"https://web.dev/security-headers/#xfo"}})}},{id:"security-frame-ancestors",name:"CSP frame-ancestors",category:"security",severity:"info",description:"CSP frame-ancestors is the modern replacement for X-Frame-Options",check:t=>{if(!t.responseHeaders)return a({id:"security-frame-ancestors",name:"CSP frame-ancestors",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for CSP frame-ancestors when HTTP response headers are available"});let e=t.responseHeaders["content-security-policy"]||t.responseHeaders["Content-Security-Policy"],r=t.responseHeaders["x-frame-options"]||t.responseHeaders["X-Frame-Options"];return!e&&!r?a({id:"security-frame-ancestors",name:"CSP frame-ancestors",category:"security",severity:"info"},"info","Not applicable (neither CSP nor X-Frame-Options present)",{recommendation:"This rule checks CSP frame-ancestors when clickjacking protection headers are present"}):e&&String(e).toLowerCase().includes("frame-ancestors")?a({id:"security-frame-ancestors",name:"CSP frame-ancestors",category:"security",severity:"info"},"pass","CSP frame-ancestors directive present (modern clickjacking protection)"):r&&!e?a({id:"security-frame-ancestors",name:"CSP frame-ancestors",category:"security",severity:"info"},"info","Using X-Frame-Options; consider migrating to CSP frame-ancestors",{recommendation:"Use CSP frame-ancestors for better control over framing",evidence:{found:`X-Frame-Options: ${r}`,expected:"Content-Security-Policy: frame-ancestors 'self'",learnMore:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors"}}):a({id:"security-frame-ancestors",name:"CSP frame-ancestors",category:"security",severity:"info"},"info","Not applicable (clickjacking protection configured without frame-ancestors)",{recommendation:"This rule checks modern frame-ancestors directive in CSP for enhanced clickjacking protection"})}},{id:"security-cors-config",name:"CORS Configuration",category:"security",severity:"warning",description:"Review Access-Control-Allow-Origin header for proper CORS configuration.",check:t=>{if(!t.responseHeaders)return a({id:"security-cors-config",name:"CORS Configuration",category:"security",severity:"warning"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks CORS configuration when HTTP response headers are available"});let e=t.responseHeaders["access-control-allow-origin"]||t.responseHeaders["Access-Control-Allow-Origin"];return e==="*"?a({id:"security-cors-config",name:"CORS Configuration",category:"security",severity:"warning"},"warn",'Access-Control-Allow-Origin is set to "*"',{recommendation:"Avoid wildcard (*) in Access-Control-Allow-Origin for sensitive content",evidence:{found:"*",expected:"Specific origins only",impact:"Any website can make requests to your API"}}):e?a({id:"security-cors-config",name:"CORS Configuration",category:"security",severity:"warning"},"pass",`Access-Control-Allow-Origin: ${e}`):a({id:"security-cors-config",name:"CORS Configuration",category:"security",severity:"warning"},"info","Access-Control-Allow-Origin header is missing",{recommendation:"Configure CORS if resources are consumed cross-origin"})}},{id:"security-xcto-exists",name:"X-Content-Type-Options",category:"security",severity:"warning",description:"X-Content-Type-Options header prevents MIME sniffing attacks.",check:t=>{if(!t.responseHeaders)return a({id:"security-xcto-exists",name:"X-Content-Type-Options",category:"security",severity:"warning"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for X-Content-Type-Options headers when HTTP response headers are available"});let e=t.responseHeaders["x-content-type-options"]||t.responseHeaders["X-Content-Type-Options"];return e?a({id:"security-xcto-exists",name:"X-Content-Type-Options",category:"security",severity:"warning"},"pass",`X-Content-Type-Options: ${e}`):a({id:"security-xcto-exists",name:"X-Content-Type-Options",category:"security",severity:"warning"},"warn","X-Content-Type-Options header is missing",{recommendation:"Implement X-Content-Type-Options: nosniff",evidence:{expected:"X-Content-Type-Options: nosniff",impact:"Browser may interpret files incorrectly, leading to security issues"}})}},{id:"security-rp-exists",name:"Referrer-Policy",category:"security",severity:"info",description:"Referrer-Policy controls how much referrer information is sent with requests.",check:t=>{if(!t.responseHeaders)return a({id:"security-rp-exists",name:"Referrer-Policy",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for Referrer-Policy headers when HTTP response headers are available"});let e=t.responseHeaders["referrer-policy"]||t.responseHeaders["Referrer-Policy"];return e?a({id:"security-rp-exists",name:"Referrer-Policy",category:"security",severity:"info"},"pass",`Referrer-Policy: ${e}`):a({id:"security-rp-exists",name:"Referrer-Policy",category:"security",severity:"info"},"info","Referrer-Policy header is missing",{recommendation:"Implement Referrer-Policy for privacy (e.g., strict-origin-when-cross-origin)",evidence:{expected:"Referrer-Policy: strict-origin-when-cross-origin",impact:"Full URLs may leak in referrer headers"}})}},{id:"security-pp-exists",name:"Permissions-Policy",category:"security",severity:"info",description:"Permissions-Policy controls browser features available to the page.",check:t=>t.responseHeaders?t.responseHeaders["permissions-policy"]||t.responseHeaders["Permissions-Policy"]?a({id:"security-pp-exists",name:"Permissions-Policy",category:"security",severity:"info"},"pass","Permissions-Policy header is present"):a({id:"security-pp-exists",name:"Permissions-Policy",category:"security",severity:"info"},"info","Permissions-Policy header is missing",{recommendation:"Disable unused browser features (e.g., camera=(), microphone=())",evidence:{expected:"Permissions-Policy header",impact:"Third-party code may access browser features unnecessarily"}}):a({id:"security-pp-exists",name:"Permissions-Policy",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for Permissions-Policy headers when HTTP response headers are available"})},{id:"security-xxss",name:"X-XSS-Protection",category:"security",severity:"info",description:"X-XSS-Protection is deprecated but may still provide protection in older browsers",check:t=>{if(!t.responseHeaders)return a({id:"security-xxss",name:"X-XSS-Protection",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for deprecated X-XSS-Protection headers when HTTP response headers are available"});let e=t.responseHeaders["x-xss-protection"]||t.responseHeaders["X-XSS-Protection"];return e&&String(e).includes("1")?a({id:"security-xxss",name:"X-XSS-Protection",category:"security",severity:"info"},"info","X-XSS-Protection is enabled but deprecated",{recommendation:"Use Content-Security-Policy instead; X-XSS-Protection can be disabled",evidence:{found:e,expected:"CSP for XSS protection",impact:"X-XSS-Protection can introduce vulnerabilities in some cases",learnMore:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection"}}):a({id:"security-xxss",name:"X-XSS-Protection",category:"security",severity:"info"},"info","Not applicable (X-XSS-Protection not present or disabled)",{recommendation:"This rule checks for deprecated X-XSS-Protection headers when present"})}},{id:"security-corp",name:"Cross-Origin-Resource-Policy (CORP)",category:"security",severity:"info",description:"CORP restricts which origins can load your resources",check:t=>{if(!t.responseHeaders)return a({id:"security-corp",name:"Cross-Origin-Resource-Policy",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for CORP headers when HTTP response headers are available"});let e=t.responseHeaders["cross-origin-resource-policy"]||t.responseHeaders["Cross-Origin-Resource-Policy"];return e?a({id:"security-corp",name:"Cross-Origin-Resource-Policy",category:"security",severity:"info"},"pass",`CORP: ${e}`):a({id:"security-corp",name:"Cross-Origin-Resource-Policy",category:"security",severity:"info"},"info","Cross-Origin-Resource-Policy header is missing",{recommendation:"Consider adding CORP to control resource loading",evidence:{expected:"Cross-Origin-Resource-Policy: same-origin or same-site",impact:"Resources may be loaded by any origin",learnMore:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Resource-Policy"}})}},{id:"security-ssl-valid",name:"SSL Certificate Valid",category:"security",severity:"error",description:"SSL certificate must be valid and not expired",check:t=>t.sslCertificate===void 0?a({id:"security-ssl-valid",name:"SSL Certificate Valid",category:"security",severity:"error"},"info","Not applicable (SSL certificate information unavailable)",{recommendation:"This rule checks SSL certificate validity when certificate information is available"}):t.sslCertificate.valid?a({id:"security-ssl-valid",name:"SSL Certificate Valid",category:"security",severity:"error"},"pass","SSL certificate is valid"):a({id:"security-ssl-valid",name:"SSL Certificate Valid",category:"security",severity:"error"},"fail","SSL certificate is invalid",{recommendation:"Renew or replace the SSL certificate immediately",evidence:{found:t.sslCertificate.error||"Invalid certificate",impact:"Browsers will show security warnings, users may not trust the site"}})},{id:"security-ssl-expiry",name:"SSL Certificate Expiry",category:"security",severity:"warning",description:"SSL certificate should not expire within 30 days",check:t=>{var i;if(!((i=t.sslCertificate)!=null&&i.expiryDate))return a({id:"security-ssl-expiry",name:"SSL Certificate Expiry",category:"security",severity:"warning"},"info","Not applicable (SSL certificate expiry date unavailable)",{recommendation:"This rule checks SSL certificate expiration when certificate expiry information is available"});let e=new Date(t.sslCertificate.expiryDate),r=new Date,n=Math.floor((e.getTime()-r.getTime())/(1e3*60*60*24));return n<0?a({id:"security-ssl-expiry",name:"SSL Certificate Expiry",category:"security",severity:"warning"},"fail","SSL certificate has expired",{recommendation:"Renew the SSL certificate immediately",evidence:{found:`Expired ${Math.abs(n)} days ago`,impact:"Site is showing security warnings to all visitors"}}):n<7?a({id:"security-ssl-expiry",name:"SSL Certificate Expiry",category:"security",severity:"warning"},"fail",`SSL certificate expires in ${n} days`,{recommendation:"Renew the SSL certificate urgently",evidence:{found:`Expires: ${e.toISOString().split("T")[0]}`,impact:"Certificate will expire very soon"}}):n<30?a({id:"security-ssl-expiry",name:"SSL Certificate Expiry",category:"security",severity:"warning"},"warn",`SSL certificate expires in ${n} days`,{recommendation:"Plan to renew the SSL certificate soon",evidence:{found:`Expires: ${e.toISOString().split("T")[0]}`}}):a({id:"security-ssl-expiry",name:"SSL Certificate Expiry",category:"security",severity:"warning"},"pass",`SSL certificate valid for ${n} days`)}},{id:"security-ssl-name-match",name:"SSL Certificate Name Match",category:"security",severity:"error",description:"SSL certificate CN/SAN must match the domain",check:t=>{var e;return((e=t.sslCertificate)==null?void 0:e.nameMismatch)===void 0?a({id:"security-ssl-name-match",name:"SSL Certificate Name Match",category:"security",severity:"error"},"info","Not applicable (SSL certificate name match information unavailable)",{recommendation:"This rule checks SSL certificate name matching when certificate domain information is available"}):t.sslCertificate.nameMismatch?a({id:"security-ssl-name-match",name:"SSL Certificate Name Match",category:"security",severity:"error"},"fail","SSL certificate name mismatch",{recommendation:"Get a certificate that matches your domain name",evidence:{found:t.sslCertificate.commonName||"Unknown",expected:t.sslCertificate.expectedDomain||"Domain name",impact:"Browsers will show certificate warning"}}):a({id:"security-ssl-name-match",name:"SSL Certificate Name Match",category:"security",severity:"error"},"pass","SSL certificate matches domain")}},{id:"security-tls-version",name:"TLS Version",category:"security",severity:"error",description:"Server should use TLS 1.2 or higher",check:t=>{if(!t.tlsVersion)return a({id:"security-tls-version",name:"TLS Version",category:"security",severity:"error"},"info","Not applicable (TLS version information unavailable)",{recommendation:"This rule checks TLS version when TLS connection information is available"});let e=t.tlsVersion;return["SSLv2","SSLv3","TLSv1","TLSv1.0","TLSv1.1"].includes(e)?a({id:"security-tls-version",name:"TLS Version",category:"security",severity:"error"},"fail",`Insecure TLS version: ${e}`,{recommendation:"Upgrade to TLS 1.2 or TLS 1.3",evidence:{found:e,expected:"TLSv1.2 or TLSv1.3",impact:"Old TLS versions have known vulnerabilities"}}):a({id:"security-tls-version",name:"TLS Version",category:"security",severity:"error"},"pass",`Using ${e}`)}},{id:"security-ssl-issuer",name:"SSL Certificate Issuer",category:"security",severity:"info",description:"SSL certificate should be from a trusted CA",check:t=>{var n;if(!((n=t.sslCertificate)!=null&&n.issuer))return a({id:"security-ssl-issuer",name:"SSL Certificate Issuer",category:"security",severity:"info"},"info","Not applicable (SSL certificate issuer information unavailable)",{recommendation:"This rule checks SSL certificate issuer when certificate issuer information is available"});let e=t.sslCertificate.issuer;return e.toLowerCase().includes("self-signed")||t.sslCertificate.selfSigned===!0?a({id:"security-ssl-issuer",name:"SSL Certificate Issuer",category:"security",severity:"info"},"warn","Self-signed SSL certificate detected",{recommendation:"Use a certificate from a trusted Certificate Authority",evidence:{found:e,impact:"Self-signed certificates show warnings in browsers"}}):a({id:"security-ssl-issuer",name:"SSL Certificate Issuer",category:"security",severity:"info"},"pass",`Certificate issued by: ${e}`)}},{id:"security-password-on-http",name:"Password Fields on HTTP",category:"security",severity:"error",description:"Password fields must only appear on HTTPS pages",check:t=>t.hasPasswordField===void 0?a({id:"security-password-on-http",name:"Password Fields on HTTP",category:"security",severity:"error"},"info","Not applicable (password field information unavailable)",{recommendation:"This rule checks for password fields on insecure pages when password field data is available"}):t.hasPasswordField&&t.isHttps===!1?a({id:"security-password-on-http",name:"Password Fields on HTTP",category:"security",severity:"error"},"fail","Password field on insecure HTTP page",{recommendation:"Enable HTTPS for all pages with password fields",evidence:{impact:"Passwords sent over HTTP can be intercepted"}}):t.hasPasswordField&&t.isHttps===!0?a({id:"security-password-on-http",name:"Password Fields on HTTP",category:"security",severity:"error"},"pass","Password fields are on HTTPS"):a({id:"security-password-on-http",name:"Password Fields on HTTP",category:"security",severity:"error"},"info","Not applicable (no password fields detected)",{recommendation:"This rule checks if password fields are only used on HTTPS pages when password fields are present"})},{id:"security-forms-on-http",name:"Forms on HTTP",category:"security",severity:"warning",description:"Forms should only submit to HTTPS endpoints",check:t=>t.formsOnHttp===void 0?a({id:"security-forms-on-http",name:"Forms on HTTP",category:"security",severity:"warning"},"info","Not applicable (form submission data unavailable)",{recommendation:"This rule checks if forms submit to HTTPS endpoints when form data is available"}):t.formsOnHttp>0?a({id:"security-forms-on-http",name:"Forms on HTTP",category:"security",severity:"warning"},"warn",`${t.formsOnHttp} form(s) submit to HTTP`,{value:t.formsOnHttp,recommendation:"Update form actions to use HTTPS",evidence:{impact:"Form data sent over HTTP can be intercepted"}}):a({id:"security-forms-on-http",name:"Forms on HTTP",category:"security",severity:"warning"},"pass","All forms submit to HTTPS")},{id:"security-server-disclosure",name:"Server Version Disclosure",category:"security",severity:"info",description:"Server header should not reveal detailed version information",check:t=>{if(!t.responseHeaders)return a({id:"security-server-disclosure",name:"Server Version Disclosure",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for server version disclosure when HTTP response headers are available"});let e=t.responseHeaders.server||t.responseHeaders.Server;if(!e)return a({id:"security-server-disclosure",name:"Server Version Disclosure",category:"security",severity:"info"},"info","Not applicable (Server header not present)",{recommendation:"This rule checks for server version disclosure when Server header is present"});let r=String(e);return/\d+\.\d+/.test(r)?a({id:"security-server-disclosure",name:"Server Version Disclosure",category:"security",severity:"info"},"info",`Server header reveals version: ${r}`,{recommendation:"Configure server to hide version information",evidence:{found:r,impact:"Attackers can target known vulnerabilities"}}):a({id:"security-server-disclosure",name:"Server Version Disclosure",category:"security",severity:"info"},"info","Not applicable (Server header not present or does not disclose version)",{recommendation:"This rule checks if the Server header reveals version information"})}},{id:"security-x-powered-by",name:"X-Powered-By Header",category:"security",severity:"info",description:"X-Powered-By header reveals technology stack",check:t=>{if(!t.responseHeaders)return a({id:"security-x-powered-by",name:"X-Powered-By Header",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for X-Powered-By header disclosure when HTTP response headers are available"});let e=t.responseHeaders["x-powered-by"]||t.responseHeaders["X-Powered-By"];return e?a({id:"security-x-powered-by",name:"X-Powered-By Header",category:"security",severity:"info"},"info",`X-Powered-By header present: ${e}`,{recommendation:"Remove X-Powered-By header to reduce attack surface",evidence:{found:String(e),impact:"Reveals technology stack to potential attackers"}}):a({id:"security-x-powered-by",name:"X-Powered-By Header",category:"security",severity:"info"},"info","Not applicable (X-Powered-By header not present)",{recommendation:"This rule checks for X-Powered-By header disclosure when the header is present"})}},{id:"ssl-sni-support",name:"SNI Support",category:"security",severity:"info",description:"Server should support Server Name Indication (SNI)",check:t=>t.sniSupported===void 0?a({id:"ssl-sni-support",name:"SNI Support",category:"security",severity:"info"},"info","Not applicable (SNI support information unavailable)",{recommendation:"This rule checks for SNI support when SNI information is available"}):t.sniSupported?a({id:"ssl-sni-support",name:"SNI Support",category:"security",severity:"info"},"info","Not applicable (SNI is supported)",{recommendation:"This rule checks for SNI support issues when SNI is not supported"}):a({id:"ssl-sni-support",name:"SNI Support",category:"security",severity:"info"},"info","Server may not support SNI",{recommendation:"Ensure web server supports SNI for proper HTTPS functionality",evidence:{impact:"Some older browsers may have issues with SSL certificates without SNI support"}})},{id:"sitemap-https-urls",name:"HTTPS URLs in Sitemap",category:"security",severity:"warning",description:"Sitemap should only contain HTTPS URLs",check:t=>t.sitemapHttpUrls===void 0?a({id:"sitemap-https-urls",name:"HTTPS URLs in Sitemap",category:"security",severity:"warning"},"info","Not applicable (sitemap URL data unavailable)",{recommendation:"This rule checks sitemap URLs for HTTPS usage when sitemap data is available"}):t.sitemapHttpUrls>0?a({id:"sitemap-https-urls",name:"HTTPS URLs in Sitemap",category:"security",severity:"warning"},"warn",`Sitemap contains ${t.sitemapHttpUrls} HTTP URLs`,{value:t.sitemapHttpUrls,recommendation:"Replace all HTTP URLs in sitemap.xml with HTTPS versions",evidence:{found:`${t.sitemapHttpUrls} HTTP URLs`,expected:"All URLs should use HTTPS",impact:"HTTP URLs in sitemap can cause mixed content issues and indexing confusion"}}):a({id:"sitemap-https-urls",name:"HTTPS URLs in Sitemap",category:"security",severity:"warning"},"pass","All sitemap URLs use HTTPS")},{id:"security-hsts",name:"HSTS Header",category:"security",severity:"info",description:"HTTPS sites should implement HSTS for security",check:t=>t.isHttps?t.hasHsts===void 0?a({id:"security-hsts",name:"HSTS Header",category:"security",severity:"info"},"info","Not applicable (HSTS status unavailable)",{recommendation:"This rule checks for HSTS headers when HSTS information is available"}):t.hasHsts?a({id:"security-hsts",name:"HSTS Header",category:"security",severity:"info"},"pass","HSTS header is present"):a({id:"security-hsts",name:"HSTS Header",category:"security",severity:"info"},"info","Missing Strict-Transport-Security header",{recommendation:"Implement HSTS to enforce HTTPS connections",evidence:{expected:"Strict-Transport-Security: max-age=31536000; includeSubDomains",impact:"Without HSTS, browsers may still attempt insecure HTTP connections",learnMore:"https://web.dev/strict-transport-security/"}}):a({id:"security-hsts",name:"HSTS Header",category:"security",severity:"info"},"info","Not applicable (page is not served over HTTPS)",{recommendation:"This rule checks HSTS implementation on HTTPS sites only"})}];var Td=[{id:"json-ld-exists",name:"Structured Data",category:"structured-data",severity:"info",description:"Page should have JSON-LD structured data",check:t=>{var r;if(t.jsonLdCount===void 0)return a({id:"json-ld-exists",name:"Structured Data",category:"structured-data",severity:"info"},"info","Not applicable (JSON-LD count data unavailable)",{recommendation:"This rule checks for JSON-LD structured data to enable rich snippets in search results"});if(t.jsonLdCount===0)return a({id:"json-ld-exists",name:"Structured Data",category:"structured-data",severity:"info"},"info","No JSON-LD structured data found",{recommendation:"Add Schema.org structured data to enable rich snippets in search results.",evidence:{found:"No structured data",expected:"At least one JSON-LD block with Schema.org markup",impact:"Pages with structured data can get rich results like star ratings, prices, FAQs, and more.",example:'<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":"Page Title"}<\/script>',learnMore:"https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data"}});let e=((r=t.jsonLdTypes)==null?void 0:r.join(", "))||"unknown";return a({id:"json-ld-exists",name:"Structured Data",category:"structured-data",severity:"info"},"pass",`${t.jsonLdCount} JSON-LD block(s) found: ${e}`,{value:e})}},{id:"schema-standard-types",name:"Schema Types",category:"structured-data",severity:"info",description:"Use standard Schema.org types",check:t=>{if(!t.jsonLdTypes||t.jsonLdTypes.length===0)return a({id:"schema-standard-types",name:"Schema Types",category:"structured-data",severity:"info"},"info","Not applicable (no JSON-LD types detected)",{recommendation:"This rule checks for standard Schema.org types when structured data is present"});let e=["WebSite","WebPage","Article","Product","BreadcrumbList","Organization","Person","LocalBusiness","Recipe","Event","JobPosting","FAQPage","HowTo","VideoObject","SoftwareApplication","Review"];return t.jsonLdTypes.some(n=>e.includes(n))?a({id:"schema-standard-types",name:"Schema Types",category:"structured-data",severity:"info"},"pass","Using standard Schema.org types",{value:t.jsonLdTypes.join(", ")}):a({id:"schema-standard-types",name:"Schema Types",category:"structured-data",severity:"info"},"info","Using uncommon Schema.org types",{value:t.jsonLdTypes.join(", "),recommendation:`Consider using standard types like ${e.slice(0,3).join(", ")}`})}},{id:"breadcrumbs-presence",name:"Breadcrumbs Presence",category:"structured-data",severity:"info",description:"Breadcrumbs improve navigation and SEO structure",check:t=>!t.hasBreadcrumbsHtml&&!t.hasBreadcrumbsSchema?a({id:"breadcrumbs-presence",name:"Breadcrumbs Presence",category:"structured-data",severity:"info"},"info","No breadcrumbs found (HTML or Schema.org)",{recommendation:"Add breadcrumbs to help users understand their location in your site hierarchy.",evidence:{found:"No breadcrumbs",expected:"HTML breadcrumb navigation with BreadcrumbList schema",impact:"Breadcrumbs appear in Google search results and improve user navigation.",example:'<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://example.com/"},{"@type":"ListItem","position":2,"name":"Category","item":"https://example.com/category/"}]}<\/script>',learnMore:"https://developers.google.com/search/docs/appearance/structured-data/breadcrumb"}}):t.hasBreadcrumbsHtml&&t.hasBreadcrumbsSchema?a({id:"breadcrumbs-presence",name:"Breadcrumbs Presence",category:"structured-data",severity:"info"},"pass","Breadcrumbs found (HTML + Schema.org)",{value:"HTML + BreadcrumbList schema"}):t.hasBreadcrumbsSchema?a({id:"breadcrumbs-presence",name:"Breadcrumbs Presence",category:"structured-data",severity:"info"},"pass","Breadcrumbs schema found",{value:"BreadcrumbList schema"}):a({id:"breadcrumbs-presence",name:"Breadcrumbs Presence",category:"structured-data",severity:"info"},"info","HTML breadcrumbs found, consider adding Schema.org markup",{recommendation:"Add BreadcrumbList schema for better search visibility.",evidence:{found:"HTML breadcrumbs only",expected:"BreadcrumbList schema markup",impact:"Schema.org breadcrumbs enable rich results in search.",learnMore:"https://developers.google.com/search/docs/appearance/structured-data/breadcrumb"}})},{id:"schema-organization",name:"Organization Schema",category:"structured-data",severity:"info",description:"Organization schema helps search engines understand your business identity",check:t=>{var r;return t.jsonLdTypes?t.jsonLdTypes.some(n=>["Organization","LocalBusiness","Corporation","NGO","EducationalOrganization","GovernmentOrganization","MedicalOrganization","SportsOrganization"].includes(n))?a({id:"schema-organization",name:"Organization Schema",category:"structured-data",severity:"info"},"pass","Organization schema found",{value:t.jsonLdTypes.find(n=>n.includes("Organization")||n==="LocalBusiness"||n==="Corporation")}):t.isStartPage||(r=t.url)!=null&&r.endsWith("/")||t.hasAboutPageLink?a({id:"schema-organization",name:"Organization Schema",category:"structured-data",severity:"info"},"info","No Organization schema found",{recommendation:"Add Organization schema to establish your brand identity with search engines.",evidence:{found:"No Organization-type schema",expected:"Organization, LocalBusiness, or similar schema",impact:"Organization schema can trigger Knowledge Panel and improves E-E-A-T signals.",example:'{"@context":"https://schema.org","@type":"Organization","name":"Company Name","url":"https://example.com","logo":"https://example.com/logo.png","sameAs":["https://twitter.com/company","https://linkedin.com/company/name"]}',learnMore:"https://developers.google.com/search/docs/appearance/structured-data/organization"}}):a({id:"schema-organization",name:"Organization Schema",category:"structured-data",severity:"info"},"info","Not applicable (not a homepage or about page)",{recommendation:"Organization schema is typically used on homepage or about pages"}):a({id:"schema-organization",name:"Organization Schema",category:"structured-data",severity:"info"},"info","Not applicable (JSON-LD types data unavailable)",{recommendation:"This rule checks for Organization schema when structured data is present"})}},{id:"schema-faq",name:"FAQ Schema",category:"structured-data",severity:"info",description:"FAQ pages should have FAQPage schema for rich results",check:t=>{if(!t.jsonLdTypes)return a({id:"schema-faq",name:"FAQ Schema",category:"structured-data",severity:"info"},"info","Not applicable (JSON-LD types data unavailable)",{recommendation:"This rule checks for FAQPage schema when FAQ content is detected"});let e=t.jsonLdTypes.includes("FAQPage"),r=t.hasQuestionHeadings,n=t.faqCount||0;return!e&&(r||n>=3)?a({id:"schema-faq",name:"FAQ Schema",category:"structured-data",severity:"info"},"info","FAQ content detected but no FAQPage schema found",{recommendation:"Add FAQPage schema to get FAQ rich results in search.",evidence:{found:`${n} FAQ-like items detected`,expected:"FAQPage schema with Question/Answer items",impact:"FAQ rich results take more SERP space and increase CTR by up to 30%.",example:'{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Question text?","acceptedAnswer":{"@type":"Answer","text":"Answer text"}}]}',learnMore:"https://developers.google.com/search/docs/appearance/structured-data/faqpage"}}):e?a({id:"schema-faq",name:"FAQ Schema",category:"structured-data",severity:"info"},"pass","FAQPage schema found"):a({id:"schema-faq",name:"FAQ Schema",category:"structured-data",severity:"info"},"info","Not applicable (no FAQ content detected)",{recommendation:"This rule suggests FAQPage schema when FAQ-like content is present"})}},{id:"schema-article",name:"Article Schema",category:"structured-data",severity:"info",description:"Blog posts and articles should have Article schema",check:t=>{if(!t.jsonLdTypes)return a({id:"schema-article",name:"Article Schema",category:"structured-data",severity:"info"},"info","Not applicable (JSON-LD types data unavailable)",{recommendation:"This rule checks for Article schema on blog posts and news articles"});let e=t.jsonLdTypes.some(n=>["Article","NewsArticle","BlogPosting","TechArticle","ScholarlyArticle"].includes(n)),r=t.hasArticle||t.ogType==="article"||t.ogArticlePublishedTime||t.ogArticleAuthor;return!e&&r?a({id:"schema-article",name:"Article Schema",category:"structured-data",severity:"info"},"info","Article content detected but no Article schema found",{recommendation:"Add Article schema for blog posts and news articles.",evidence:{found:"Article-like content without Article schema",expected:"Article, BlogPosting, or NewsArticle schema",impact:"Article schema enables article-specific rich results and improves content indexing.",example:'{"@context":"https://schema.org","@type":"Article","headline":"Article Title","author":{"@type":"Person","name":"Author Name"},"datePublished":"2024-01-15","dateModified":"2024-01-20"}',learnMore:"https://developers.google.com/search/docs/appearance/structured-data/article"}}):e?a({id:"schema-article",name:"Article Schema",category:"structured-data",severity:"info"},"pass",`Article schema found: ${t.jsonLdTypes.find(n=>n.includes("Article")||n==="BlogPosting")}`):a({id:"schema-article",name:"Article Schema",category:"structured-data",severity:"info"},"info","Not applicable (no article-like content detected)",{recommendation:"This rule suggests Article schema when article-like content is detected"})}},{id:"schema-website",name:"WebSite Schema",category:"structured-data",severity:"info",description:"Homepage should have WebSite schema for sitelinks searchbox",check:t=>{var r;if(!t.jsonLdTypes)return a({id:"schema-website",name:"WebSite Schema",category:"structured-data",severity:"info"},"info","Not applicable (JSON-LD types data unavailable)",{recommendation:"This rule checks for WebSite schema on homepage to enable sitelinks searchbox"});let e=t.jsonLdTypes.includes("WebSite");return!t.isStartPage&&!((r=t.url)!=null&&r.match(/^https?:\/\/[^\/]+\/?$/))?a({id:"schema-website",name:"WebSite Schema",category:"structured-data",severity:"info"},"info","Not applicable (not a homepage)",{recommendation:"WebSite schema is typically used on the homepage for sitelinks searchbox"}):e?a({id:"schema-website",name:"WebSite Schema",category:"structured-data",severity:"info"},"pass","WebSite schema found"):a({id:"schema-website",name:"WebSite Schema",category:"structured-data",severity:"info"},"info","No WebSite schema found on homepage",{recommendation:"Add WebSite schema to enable sitelinks searchbox in Google results.",evidence:{found:"No WebSite schema",expected:"WebSite schema with SearchAction for sitelinks searchbox",impact:"WebSite schema can show a search box directly in Google search results.",example:'{"@context":"https://schema.org","@type":"WebSite","url":"https://example.com","name":"Site Name","potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://example.com/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}',learnMore:"https://developers.google.com/search/docs/appearance/structured-data/sitelinks-searchbox"}})}},{id:"schema-person",name:"Person Schema",category:"structured-data",severity:"info",description:"Person schema strengthens E-E-A-T signals and helps AI understand authorship",check:t=>{var i,o,s;if(!t.jsonLdTypes)return a({id:"schema-person",name:"Person Schema",category:"structured-data",severity:"info"},"info","Not applicable (JSON-LD types data unavailable)",{recommendation:"This rule checks for Person schema to strengthen E-E-A-T signals"});let e=t.jsonLdTypes.includes("Person"),r=t.jsonLdTypes.some(c=>["Article","NewsArticle","BlogPosting","TechArticle"].includes(c)),n=((i=t.url)==null?void 0:i.toLowerCase().includes("/about"))||((o=t.url)==null?void 0:o.toLowerCase().includes("/team"))||((s=t.url)==null?void 0:s.toLowerCase().includes("/author"));return!e&&(r||n)?a({id:"schema-person",name:"Person Schema",category:"structured-data",severity:"info"},"info","No Person schema found",{recommendation:"Add Person schema to establish authorship and strengthen E-E-A-T signals.",evidence:{found:"No Person schema",expected:"Person schema with name, jobTitle, and sameAs properties",impact:"Person schema helps Google and AI systems understand content authorship and expertise. 72% of top-ranking pages use some type of schema.",example:'{"@context":"https://schema.org","@type":"Person","name":"John Doe","jobTitle":"SEO Specialist","url":"https://example.com/team/john","sameAs":["https://twitter.com/johndoe","https://linkedin.com/in/johndoe"]}',learnMore:"https://developers.google.com/search/docs/appearance/structured-data/profile-page"}}):e?a({id:"schema-person",name:"Person Schema",category:"structured-data",severity:"info"},"pass","Person schema found (strengthens E-E-A-T)"):a({id:"schema-person",name:"Person Schema",category:"structured-data",severity:"info"},"info","Not applicable (not an article or about/team page)",{recommendation:"Person schema is recommended for article pages and about/team pages"})}},{id:"schema-review",name:"Review Schema",category:"structured-data",severity:"info",description:"Review and AggregateRating schema enables star ratings in search results",check:t=>{if(!t.jsonLdTypes)return a({id:"schema-review",name:"Review Schema",category:"structured-data",severity:"info"},"info","Not applicable (JSON-LD types data unavailable)",{recommendation:"This rule checks for Review schema to enable star ratings in search results"});let e=t.jsonLdTypes.some(i=>["Review","AggregateRating"].includes(i)),r=t.jsonLdTypes.includes("Product"),n=t.jsonLdTypes.some(i=>["LocalBusiness","Restaurant","Hotel","Store"].includes(i));return!e&&(r||n||t.isProductPage)?a({id:"schema-review",name:"Review Schema",category:"structured-data",severity:"info"},"info","No Review/Rating schema found",{recommendation:"Add Review or AggregateRating schema to show star ratings in search results.",evidence:{found:"No Review schema",expected:"Review or AggregateRating schema",impact:"Pages with schema receive 40% higher CTR than pages without. Star ratings significantly increase click-through rates.",example:'{"@context":"https://schema.org","@type":"AggregateRating","ratingValue":"4.5","reviewCount":"89","bestRating":"5"}',learnMore:"https://developers.google.com/search/docs/appearance/structured-data/review-snippet"}}):e?a({id:"schema-review",name:"Review Schema",category:"structured-data",severity:"info"},"pass","Review/Rating schema found"):a({id:"schema-review",name:"Review Schema",category:"structured-data",severity:"info"},"info","Not applicable (not a product or local business page)",{recommendation:"Review schema is recommended for product and local business pages"})}},{id:"schema-service",name:"Service Schema",category:"structured-data",severity:"info",description:"Service businesses should use Service schema to describe offerings",check:t=>{var i,o;if(!t.jsonLdTypes)return a({id:"schema-service",name:"Service Schema",category:"structured-data",severity:"info"},"info","Not applicable (JSON-LD types data unavailable)",{recommendation:"This rule checks for Service schema to describe business service offerings"});let e=t.jsonLdTypes.some(s=>["Service","ProfessionalService","FinancialService","LegalService"].includes(s)),r=t.jsonLdTypes.some(s=>["LocalBusiness","ProfessionalService","LegalService","FinancialService","AccountingService","AutoRepair","Dentist","MedicalClinic"].includes(s)),n=((i=t.url)==null?void 0:i.toLowerCase().includes("/service"))||((o=t.url)==null?void 0:o.toLowerCase().includes("/pricing"));return!e&&(r||n)?a({id:"schema-service",name:"Service Schema",category:"structured-data",severity:"info"},"info","No Service schema found",{recommendation:"Add Service schema to help AI understand your specific service offerings.",evidence:{found:"LocalBusiness without Service schema",expected:"Service schema with provider, areaServed, and offers",impact:"Service schema helps AI systems accurately represent your business services in generated responses.",example:'{"@context":"https://schema.org","@type":"Service","name":"Tax Preparation","provider":{"@type":"LocalBusiness","name":"ABC Accounting"},"areaServed":"Austin, TX","offers":{"@type":"Offer","price":"150","priceCurrency":"USD"}}',learnMore:"https://schema.org/Service"}}):e?a({id:"schema-service",name:"Service Schema",category:"structured-data",severity:"info"},"pass","Service schema found"):a({id:"schema-service",name:"Service Schema",category:"structured-data",severity:"info"},"info","Not applicable (not a local business or service page)",{recommendation:"Service schema is recommended for service business pages"})}},{id:"schema-sameas",name:"Schema sameAs (Social Links)",category:"structured-data",severity:"info",description:"sameAs property links your entity to social profiles, improving AI visibility",check:t=>{var n;if(!t.jsonLdTypes)return a({id:"schema-sameas",name:"Schema sameAs (Social Links)",category:"structured-data",severity:"info"},"info","Not applicable (JSON-LD types data unavailable)",{recommendation:"This rule checks for sameAs property to link entities to social profiles"});if(!t.jsonLdTypes.some(i=>["Organization","LocalBusiness","Person","Corporation"].includes(i)))return a({id:"schema-sameas",name:"Schema sameAs (Social Links)",category:"structured-data",severity:"info"},"info","Not applicable (no Organization or Person schema detected)",{recommendation:"This rule applies when Organization or Person schema is present"});if(t.socialLinksFound&&t.socialLinksFound.length>0){let i=((n=t.socialLinksFound)==null?void 0:n.length)??0;return a({id:"schema-sameas",name:"Schema sameAs",category:"structured-data",severity:"info"},"info","Social links found - ensure they are included in schema sameAs property",{recommendation:"Add sameAs property to your Organization/Person schema with all social profile URLs.",evidence:{found:`${i} social profile(s) on page`,expected:"sameAs array in Organization or Person schema",impact:"sameAs helps AI systems connect your brand across platforms and improves Knowledge Panel eligibility.",example:'"sameAs": ["https://twitter.com/company", "https://linkedin.com/company/name", "https://facebook.com/company"]',learnMore:"https://developers.google.com/search/docs/appearance/structured-data/organization"}})}return a({id:"schema-sameas",name:"Schema sameAs",category:"structured-data",severity:"info"},"pass","Organization/Person schema present (verify sameAs includes social profiles)")}},{id:"schema-ai-completeness",name:"Schema Completeness for AI",category:"structured-data",severity:"info",description:"Comprehensive structured data improves AI citations and visibility",check:t=>{if(!t.jsonLdTypes||t.jsonLdTypes.length===0)return a({id:"schema-ai-completeness",name:"Schema Completeness for AI",category:"structured-data",severity:"info"},"info","Not applicable (no JSON-LD types detected)",{recommendation:"This rule checks for comprehensive structured data to improve AI citations"});let e=["Organization","LocalBusiness","Person","Product","Service","FAQPage","Article","BlogPosting","WebSite","BreadcrumbList"],r=t.jsonLdTypes.filter(n=>e.includes(n));if(r.length>=3)return a({id:"schema-ai-completeness",name:"Schema AI Completeness",category:"structured-data",severity:"info"},"pass",`Comprehensive schema found (${r.length} key types)`,{value:r.join(", "),evidence:{found:r,impact:"Comprehensive structured data significantly increases chances of AI citations."}});if(r.length>=1){let n=e.filter(i=>!r.includes(i)).slice(0,3);return a({id:"schema-ai-completeness",name:"Schema AI Completeness",category:"structured-data",severity:"info"},"info",`Basic schema found (${r.length} key type(s))`,{value:r.join(", "),recommendation:"Add more schema types for better AI visibility.",evidence:{found:r,expected:"Multiple schema types for comprehensive coverage",impact:"AI systems prioritize sites with comprehensive structured data for citations.",issue:`Consider adding: ${n.join(", ")}`}})}return a({id:"schema-ai-completeness",name:"Schema AI Completeness",category:"structured-data",severity:"info"},"info","Not applicable (no key schema types detected)",{recommendation:"This rule analyzes schema completeness when important schema types are present"})}}];var Ad=[{id:"a11y-buttons-accessible-name",name:"Buttons Accessible Name",category:"accessibility",severity:"error",description:"Buttons must have an accessible name (text content, aria-label, or title)",check:t=>{if(t.buttonsWithoutAriaLabel===void 0)return a({id:"a11y-buttons-accessible-name",name:"Buttons Accessible Name",category:"accessibility",severity:"error"},"info","Not applicable (no button data available)",{recommendation:"This rule checks that all buttons have accessible names via text content, aria-label, or title attributes"});let e=t.buttonsWithoutAriaLabel;return e>0?a({id:"a11y-buttons-accessible-name",name:"Buttons Accessible Name",category:"accessibility",severity:"error"},"fail",`${e} button(s) do not have an accessible name`,{value:e,recommendation:"Add text content, aria-label, aria-labelledby, or title to all buttons",evidence:{found:e,expected:0,impact:"Screen reader users cannot determine the button purpose",learnMore:"https://dequeuniversity.com/rules/axe/4.4/button-name"}}):a({id:"a11y-buttons-accessible-name",name:"Buttons Accessible Name",category:"accessibility",severity:"error"},"pass","All buttons have accessible names")}},{id:"a11y-images-alt",name:"Image Alt Attributes",category:"accessibility",severity:"error",description:"Image elements must have [alt] attributes",check:t=>{if(t.imagesWithoutAlt===void 0)return a({id:"a11y-images-alt",name:"Image Alt Attributes",category:"accessibility",severity:"error"},"info","Not applicable (no image data available)",{recommendation:"This rule checks that all images have alt attributes for screen readers"});let e=t.imagesWithoutAlt;return e>0?a({id:"a11y-images-alt",name:"Image Alt Attributes",category:"accessibility",severity:"error"},"fail",`${e} image(s) do not have [alt] attributes`,{value:e,recommendation:'Add alt="" for decorative images or descriptive alt text for informative images',evidence:{found:e,expected:0,impact:"Screen readers cannot convey image content to blind users",learnMore:"https://dequeuniversity.com/rules/axe/4.4/image-alt"}}):a({id:"a11y-images-alt",name:"Image Alt Attributes",category:"accessibility",severity:"error"},"pass","All images have [alt] attributes")}},{id:"a11y-links-discernible-name",name:"Links Discernible Name",category:"accessibility",severity:"error",description:"Links must have a discernible name",check:t=>{if(t.linksWithoutText===void 0&&t.linksWithoutAriaLabel===void 0)return a({id:"a11y-links-discernible-name",name:"Links Discernible Name",category:"accessibility",severity:"error"},"info","Not applicable (no link data available)",{recommendation:"This rule checks that all links have discernible names via text content, aria-label, or title"});let e=t.linksWithoutText??0,r=t.linksWithoutAriaLabel??0,n=Math.max(e,r);return n>0?a({id:"a11y-links-discernible-name",name:"Links Discernible Name",category:"accessibility",severity:"error"},"fail",`${n} link(s) do not have a discernible name`,{value:n,recommendation:"Add text content, aria-label, aria-labelledby, or title to links",evidence:{found:n,expected:0,impact:"Screen reader users cannot understand link destinations",learnMore:"https://dequeuniversity.com/rules/axe/4.4/link-name"}}):a({id:"a11y-links-discernible-name",name:"Links Discernible Name",category:"accessibility",severity:"error"},"pass","All links have discernible names")}},{id:"a11y-form-labels",name:"Form Input Labels",category:"accessibility",severity:"error",description:"Form elements must have associated labels",check:t=>{if(t.inputsWithoutLabel===void 0)return a({id:"a11y-form-labels",name:"Form Input Labels",category:"accessibility",severity:"error"},"info","Not applicable (no form input data available)",{recommendation:"This rule checks that all form inputs have associated labels for accessibility"});let e=t.inputsWithoutLabel;return e>0?a({id:"a11y-form-labels",name:"Form Input Labels",category:"accessibility",severity:"error"},"fail",`${e} form input(s) without associated label`,{value:e,recommendation:'Add <label for="id">, aria-label, or aria-labelledby to all form inputs',evidence:{found:e,expected:0,impact:"Users cannot identify input purpose, critical for screen reader users",learnMore:"https://dequeuniversity.com/rules/axe/4.4/label"}}):a({id:"a11y-form-labels",name:"Form Input Labels",category:"accessibility",severity:"error"},"pass","All form inputs have associated labels")}},{id:"a11y-heading-order",name:"Heading Order",category:"accessibility",severity:"warning",description:"Heading elements should be in sequentially-descending order",check:t=>{var e;return t.headingHierarchyValid===void 0?a({id:"a11y-heading-order",name:"Heading Order",category:"accessibility",severity:"warning"},"info","Not applicable (no heading data available)",{recommendation:"This rule checks that headings follow a logical order (H1 \u2192 H2 \u2192 H3) without skipping levels"}):t.headingHierarchyValid?a({id:"a11y-heading-order",name:"Heading Order",category:"accessibility",severity:"warning"},"pass","Headings are in sequentially-descending order"):a({id:"a11y-heading-order",name:"Heading Order",category:"accessibility",severity:"warning"},"warn","Heading elements are not in sequentially-descending order",{recommendation:"Ensure headings follow a logical order (H1 \u2192 H2 \u2192 H3) without skipping levels",evidence:{found:((e=t.headingSkippedLevels)==null?void 0:e.join(", "))||"Skipped levels detected",expected:"Sequential heading hierarchy",impact:"Impacts keyboard navigation for screen reader users",learnMore:"https://dequeuniversity.com/rules/axe/4.4/heading-order"}})}},{id:"a11y-tabindex",name:"Tabindex Values",category:"accessibility",severity:"warning",description:"No element should have a [tabindex] value greater than 0",check:t=>{if(t.elementsWithHighTabindex===void 0)return a({id:"a11y-tabindex",name:"Tabindex Values",category:"accessibility",severity:"warning"},"info","Not applicable (no tabindex data available)",{recommendation:"This rule checks that no element has a tabindex value greater than 0, which can confuse keyboard users"});let e=t.elementsWithHighTabindex;return e>0?a({id:"a11y-tabindex",name:"Tabindex Values",category:"accessibility",severity:"warning"},"warn",`${e} element(s) have tabindex > 0`,{value:e,recommendation:'Remove positive tabindex values; use tabindex="0" or "-1" instead',evidence:{found:e,expected:0,impact:"Creates confusing focus order for keyboard users",learnMore:"https://dequeuniversity.com/rules/axe/4.4/tabindex"}}):a({id:"a11y-tabindex",name:"Tabindex Values",category:"accessibility",severity:"warning"},"pass","No elements have tabindex > 0")}},{id:"a11y-aria-valid-attrs",name:"Valid ARIA Attributes",category:"accessibility",severity:"error",description:"[aria-*] attributes must be valid and not misspelled",check:t=>{if(t.invalidAriaAttributes===void 0)return a({id:"a11y-aria-valid-attrs",name:"Valid ARIA Attributes",category:"accessibility",severity:"error"},"info","Not applicable (no ARIA attribute data available)",{recommendation:"This rule checks that all aria-* attributes are valid and not misspelled"});let e=t.invalidAriaAttributes;return e>0?a({id:"a11y-aria-valid-attrs",name:"Valid ARIA Attributes",category:"accessibility",severity:"error"},"fail",`${e} invalid or misspelled aria-* attribute(s) found`,{value:e,recommendation:"Verify ARIA attributes are spelled correctly and valid",evidence:{found:e,expected:0,impact:"Invalid ARIA provides no accessibility benefit",learnMore:"https://dequeuniversity.com/rules/axe/4.4/aria-valid-attr"}}):a({id:"a11y-aria-valid-attrs",name:"Valid ARIA Attributes",category:"accessibility",severity:"error"},"pass","All ARIA attributes are valid")}},{id:"a11y-aria-valid-values",name:"ARIA Attribute Values",category:"accessibility",severity:"error",description:"[aria-*] attributes must have valid values",check:t=>{if(t.invalidAriaValues===void 0)return a({id:"a11y-aria-valid-values",name:"ARIA Attribute Values",category:"accessibility",severity:"error"},"info","Not applicable (no ARIA value data available)",{recommendation:"This rule checks that all aria-* attributes have valid values"});let e=t.invalidAriaValues;return e>0?a({id:"a11y-aria-valid-values",name:"ARIA Attribute Values",category:"accessibility",severity:"error"},"fail",`${e} aria-* attribute(s) have invalid values`,{value:e,recommendation:'Use valid values for ARIA attributes (e.g., aria-live="polite")',evidence:{found:e,expected:0,impact:"Invalid values prevent assistive technologies from working correctly",learnMore:"https://dequeuniversity.com/rules/axe/4.4/aria-valid-attr-value"}}):a({id:"a11y-aria-valid-values",name:"ARIA Attribute Values",category:"accessibility",severity:"error"},"pass","All ARIA attribute values are valid")}},{id:"a11y-aria-roles",name:"Valid ARIA Roles",category:"accessibility",severity:"error",description:"[role] values must be valid",check:t=>{if(t.invalidAriaRoles===void 0)return a({id:"a11y-aria-roles",name:"Valid ARIA Roles",category:"accessibility",severity:"error"},"info","Not applicable (no ARIA role data available)",{recommendation:"This rule checks that all role values are valid ARIA roles"});let e=t.invalidAriaRoles;return e>0?a({id:"a11y-aria-roles",name:"Valid ARIA Roles",category:"accessibility",severity:"error"},"fail",`${e} invalid [role] value(s) found`,{value:e,recommendation:"Use valid ARIA role values (e.g., button, dialog, navigation)",evidence:{found:e,expected:0,impact:"Invalid roles confuse assistive technologies",learnMore:"https://dequeuniversity.com/rules/axe/4.4/aria-roles"}}):a({id:"a11y-aria-roles",name:"Valid ARIA Roles",category:"accessibility",severity:"error"},"pass","All [role] values are valid")}},{id:"a11y-aria-required-attrs",name:"Required ARIA Attributes",category:"accessibility",severity:"error",description:"[role]s must have all required [aria-*] attributes",check:t=>{if(t.missingRequiredAriaAttrs===void 0)return a({id:"a11y-aria-required-attrs",name:"Required ARIA Attributes",category:"accessibility",severity:"error"},"info","Not applicable (no required ARIA attribute data available)",{recommendation:"This rule checks that elements with ARIA roles have all required aria-* attributes"});let e=t.missingRequiredAriaAttrs;return e>0?a({id:"a11y-aria-required-attrs",name:"Required ARIA Attributes",category:"accessibility",severity:"error"},"fail",`${e} element(s) with roles missing required aria-* attributes`,{value:e,recommendation:'Add required ARIA attributes for each role (e.g., role="slider" requires aria-valuenow)',evidence:{found:e,expected:0,impact:"Missing attributes break assistive technology functionality",learnMore:"https://dequeuniversity.com/rules/axe/4.4/aria-required-attr"}}):a({id:"a11y-aria-required-attrs",name:"Required ARIA Attributes",category:"accessibility",severity:"error"},"pass","All roles have required ARIA attributes")}},{id:"a11y-aria-hidden-body",name:"ARIA Hidden Body",category:"accessibility",severity:"error",description:'[aria-hidden="true"] must not be present on the document <body>',check:t=>t.hasAriaHiddenBody===void 0?a({id:"a11y-aria-hidden-body",name:"ARIA Hidden Body",category:"accessibility",severity:"error"},"info","Not applicable (no body element data available)",{recommendation:"This rule checks that aria-hidden is not present on the document body"}):t.hasAriaHiddenBody?a({id:"a11y-aria-hidden-body",name:"ARIA Hidden Body",category:"accessibility",severity:"error"},"fail",'aria-hidden="true" is present on document <body>',{recommendation:"Remove aria-hidden from <body> element",evidence:{found:'aria-hidden="true" on body',expected:"No aria-hidden on body",impact:"Entire page content hidden from assistive technologies",learnMore:"https://dequeuniversity.com/rules/axe/4.4/aria-hidden-body"}}):a({id:"a11y-aria-hidden-body",name:"ARIA Hidden Body",category:"accessibility",severity:"error"},"pass","aria-hidden is not present on <body>")},{id:"a11y-aria-hidden-focus",name:"ARIA Hidden Focusable",category:"accessibility",severity:"error",description:'[aria-hidden="true"] elements must not contain focusable descendants',check:t=>{if(t.ariaHiddenFocusableCount===void 0)return a({id:"a11y-aria-hidden-focus",name:"ARIA Hidden Focusable",category:"accessibility",severity:"error"},"info","Not applicable (no aria-hidden focusable data available)",{recommendation:"This rule checks that aria-hidden elements do not contain focusable descendants"});let e=t.ariaHiddenFocusableCount;return e>0?a({id:"a11y-aria-hidden-focus",name:"ARIA Hidden Focusable",category:"accessibility",severity:"error"},"fail",`${e} aria-hidden element(s) contain focusable descendants`,{value:e,recommendation:"Remove focusable elements from aria-hidden containers or remove aria-hidden",evidence:{found:e,expected:0,impact:"Focus can move to invisible elements, confusing users",learnMore:"https://dequeuniversity.com/rules/axe/4.4/aria-hidden-focus"}}):a({id:"a11y-aria-hidden-focus",name:"ARIA Hidden Focusable",category:"accessibility",severity:"error"},"pass","No focusable elements inside aria-hidden containers")}},{id:"a11y-aria-deprecated",name:"Deprecated ARIA Roles",category:"accessibility",severity:"warning",description:"Deprecated ARIA roles should not be used",check:t=>{if(t.deprecatedAriaRoles===void 0)return a({id:"a11y-aria-deprecated",name:"Deprecated ARIA Roles",category:"accessibility",severity:"warning"},"info","Not applicable (no deprecated ARIA role data available)",{recommendation:"This rule checks that deprecated ARIA roles are not used"});let e=t.deprecatedAriaRoles;return e>0?a({id:"a11y-aria-deprecated",name:"Deprecated ARIA Roles",category:"accessibility",severity:"warning"},"warn",`${e} deprecated ARIA role(s) found`,{value:e,recommendation:"Replace deprecated roles with current alternatives",evidence:{found:e,expected:0,impact:"Deprecated roles may not work in future browsers",learnMore:"https://www.w3.org/TR/wai-aria-1.2/"}}):a({id:"a11y-aria-deprecated",name:"Deprecated ARIA Roles",category:"accessibility",severity:"warning"},"pass","No deprecated ARIA roles used")}},{id:"a11y-aria-ids-unique",name:"ARIA IDs Unique",category:"accessibility",severity:"error",description:"ARIA IDs must be unique",check:t=>{if(t.duplicateAriaIds===void 0)return a({id:"a11y-aria-ids-unique",name:"ARIA IDs Unique",category:"accessibility",severity:"error"},"info","Not applicable (no ARIA ID data available)",{recommendation:"This rule checks that all IDs referenced by aria-labelledby, aria-describedby, etc. are unique"});let e=t.duplicateAriaIds;return e>0?a({id:"a11y-aria-ids-unique",name:"ARIA IDs Unique",category:"accessibility",severity:"error"},"fail",`${e} duplicate ARIA ID(s) found`,{value:e,recommendation:"Ensure all IDs referenced by aria-labelledby, aria-describedby, etc. are unique",evidence:{found:e,expected:0,impact:"References to duplicate IDs produce unpredictable behavior",learnMore:"https://dequeuniversity.com/rules/axe/4.4/duplicate-id-aria"}}):a({id:"a11y-aria-ids-unique",name:"ARIA IDs Unique",category:"accessibility",severity:"error"},"pass","All ARIA IDs are unique")}},{id:"a11y-dialog-name",name:"Dialog Accessible Name",category:"accessibility",severity:"error",description:'Elements with role="dialog" or role="alertdialog" must have accessible names',check:t=>{if(t.dialogsWithoutName===void 0)return a({id:"a11y-dialog-name",name:"Dialog Accessible Name",category:"accessibility",severity:"error"},"info","Not applicable (no dialog data available)",{recommendation:'This rule checks that elements with role="dialog" or role="alertdialog" have accessible names'});let e=t.dialogsWithoutName;return e>0?a({id:"a11y-dialog-name",name:"Dialog Accessible Name",category:"accessibility",severity:"error"},"fail",`${e} dialog(s) without accessible name`,{value:e,recommendation:"Add aria-label or aria-labelledby to dialog elements",evidence:{found:e,expected:0,impact:"Screen reader users cannot identify dialog purpose",learnMore:"https://dequeuniversity.com/rules/axe/4.4/aria-dialog-name"}}):a({id:"a11y-dialog-name",name:"Dialog Accessible Name",category:"accessibility",severity:"error"},"pass","All dialogs have accessible names")}},{id:"a11y-main-landmark",name:"Main Landmark",category:"accessibility",severity:"warning",description:"Document should have a main landmark",check:t=>t.hasMain===void 0?a({id:"a11y-main-landmark",name:"Main Landmark",category:"accessibility",severity:"warning"},"info","Not applicable (no main landmark data available)",{recommendation:'This rule checks that document has a <main> element or role="main" for screen reader navigation'}):t.hasMain?a({id:"a11y-main-landmark",name:"Main Landmark",category:"accessibility",severity:"warning"},"pass","Document has a main landmark"):a({id:"a11y-main-landmark",name:"Main Landmark",category:"accessibility",severity:"warning"},"warn","Document does not have a <main> landmark",{recommendation:'Add a <main> element or role="main" to identify the main content area',evidence:{found:'No <main> element or role="main"',expected:'<main> or role="main"',impact:"Screen reader users cannot quickly navigate to main content",example:`<main>
|
|
268
|
+
Components: React, Node.js`,learnMore:"https://humanstxt.org/"}})}];var Td=[{id:"https-required",name:"HTTPS",category:"security",severity:"error",description:"Page must be served over HTTPS",check:t=>t.isHttps===!1?a({id:"https-required",name:"HTTPS",category:"security",severity:"error"},"fail","Page is not served over HTTPS",{recommendation:"Enable HTTPS for all pages",evidence:{found:"HTTP",expected:"HTTPS",impact:'Browsers show "Not Secure" warning, affects SEO ranking',learnMore:"https://web.dev/why-https-matters/"}}):t.isHttps===!0?a({id:"https-required",name:"HTTPS",category:"security",severity:"error"},"pass","Page is served over HTTPS"):a({id:"https-required",name:"HTTPS",category:"security",severity:"error"},"info","Not applicable (HTTPS status unavailable)",{recommendation:"This rule checks if the page is served over HTTPS when protocol information is available"})},{id:"mixed-content",name:"Mixed Content",category:"security",severity:"error",description:"HTTPS pages should not load HTTP resources",check:t=>t.hasMixedContent?a({id:"mixed-content",name:"Mixed Content",category:"security",severity:"error"},"fail","Page has mixed content (HTTP resources on HTTPS page)",{recommendation:"Update all resources to use HTTPS",evidence:{found:"Mixed content detected",expected:"All resources over HTTPS",impact:"Browsers may block HTTP resources, breaking functionality",learnMore:"https://web.dev/what-is-mixed-content/"}}):a({id:"mixed-content",name:"Mixed Content",category:"security",severity:"error"},"info","Not applicable (no mixed content detected or HTTPS not used)",{recommendation:"This rule checks for HTTP resources on HTTPS pages when mixed content is detected"})},{id:"http-redirect",name:"HTTP to HTTPS Redirect",category:"security",severity:"warning",description:"HTTP traffic should redirect to HTTPS",check:t=>t.httpRedirectsToHttps===void 0?a({id:"http-redirect",name:"HTTP to HTTPS Redirect",category:"security",severity:"warning"},"info","Not applicable (HTTP redirect status unavailable)",{recommendation:"This rule checks if HTTP traffic redirects to HTTPS when redirect information is available"}):t.httpRedirectsToHttps?a({id:"http-redirect",name:"HTTP to HTTPS Redirect",category:"security",severity:"warning"},"pass","HTTP redirects to HTTPS"):a({id:"http-redirect",name:"HTTP to HTTPS Redirect",category:"security",severity:"warning"},"warn","HTTP does not redirect to HTTPS",{recommendation:"Configure server to redirect all HTTP traffic to HTTPS",evidence:{expected:"301/302 redirect from HTTP to HTTPS",impact:"Users accessing via HTTP may stay on insecure connection",learnMore:"https://web.dev/redirect-http-to-https/"}})},{id:"internal-links-https",name:"Internal Links Use HTTPS",category:"security",severity:"warning",description:"Internal links should use HTTPS to avoid mixed content and redirect chains",check:t=>{var e;if(t.internalHttpLinks===void 0)return a({id:"internal-links-https",name:"Internal Links Use HTTPS",category:"security",severity:"warning"},"info","Not applicable (internal link data unavailable)",{recommendation:"This rule checks internal links for HTTPS usage when link analysis is available"});if(t.internalHttpLinks>0){let r=((e=t.internalHttpLinkUrls)==null?void 0:e.slice(0,3))||[];return a({id:"internal-links-https",name:"Internal Links Use HTTPS",category:"security",severity:"warning"},"warn",`${t.internalHttpLinks} internal link(s) use HTTP instead of HTTPS`,{value:t.internalHttpLinks,recommendation:"Update all internal links to use HTTPS URLs",evidence:{found:`${t.internalHttpLinks} HTTP internal links${r.length>0?`: ${r.join(", ")}`:""}`,expected:"All internal links should use HTTPS",impact:"HTTP links cause unnecessary redirects, slow page loads, and may trigger mixed content warnings. Search engines prefer sites with consistent HTTPS usage.",learnMore:"https://web.dev/why-https-matters/"}})}return a({id:"internal-links-https",name:"Internal Links Use HTTPS",category:"security",severity:"warning"},"pass","All internal links use HTTPS")}},{id:"security-csp-exists",name:"Content Security Policy (CSP)",category:"security",severity:"warning",description:"Content Security Policy header should be present to mitigate XSS attacks.",check:t=>t.responseHeaders?t.responseHeaders["content-security-policy"]||t.responseHeaders["Content-Security-Policy"]?a({id:"security-csp-exists",name:"Content Security Policy",category:"security",severity:"warning"},"pass","Content-Security-Policy header is present"):a({id:"security-csp-exists",name:"Content Security Policy",category:"security",severity:"warning"},"warn","Content-Security-Policy header is missing",{recommendation:"Implement a strong Content-Security-Policy to prevent XSS attacks",evidence:{expected:"Content-Security-Policy header",impact:"Page is vulnerable to XSS and data injection attacks",learnMore:"https://web.dev/csp/"}}):a({id:"security-csp-exists",name:"Content Security Policy",category:"security",severity:"warning"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for CSP headers when HTTP response headers are available"})},{id:"security-csp-xss-effective",name:"CSP XSS Effectiveness",category:"security",severity:"warning",description:"CSP should be effective against XSS attacks",check:t=>{if(!t.responseHeaders)return a({id:"security-csp-xss-effective",name:"CSP XSS Effectiveness",category:"security",severity:"warning"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks CSP effectiveness when HTTP response headers are available"});let e=t.responseHeaders["content-security-policy"]||t.responseHeaders["Content-Security-Policy"];if(!e)return a({id:"security-csp-xss-effective",name:"CSP XSS Effectiveness",category:"security",severity:"warning"},"info","Not applicable (CSP header not present)",{recommendation:"This rule checks CSP effectiveness when a Content-Security-Policy header exists"});let r=String(e).toLowerCase(),n=[];return r.includes("'unsafe-inline'")&&!r.includes("'strict-dynamic'")&&!r.includes("'nonce-")&&n.push("unsafe-inline without nonce/strict-dynamic"),r.includes("'unsafe-eval'")&&n.push("unsafe-eval allows code execution"),r.includes("data:")&&(r.includes("script-src")||!r.includes("default-src"))&&n.push("data: URIs can be exploited for XSS"),r.match(/script-src[^;]*\*/)&&n.push("Wildcard in script-src"),n.length>0?a({id:"security-csp-xss-effective",name:"CSP XSS Effectiveness",category:"security",severity:"warning"},"warn",`CSP may not be effective against XSS: ${n.join(", ")}`,{recommendation:"Use nonce-based CSP or strict-dynamic for better XSS protection",evidence:{found:n,expected:"No unsafe-inline, unsafe-eval, or wildcards",impact:"Attackers may be able to execute malicious scripts",learnMore:"https://web.dev/strict-csp/"}}):a({id:"security-csp-xss-effective",name:"CSP XSS Effectiveness",category:"security",severity:"warning"},"pass","CSP appears effective against XSS attacks")}},{id:"security-csp-directives",name:"CSP Required Directives",category:"security",severity:"error",description:"CSP should have script-src and object-src directives to prevent unsafe script execution",check:t=>{if(!t.responseHeaders)return a({id:"security-csp-directives",name:"CSP Required Directives",category:"security",severity:"error"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks CSP directives when HTTP response headers are available"});let e=t.responseHeaders["content-security-policy"]||t.responseHeaders["Content-Security-Policy"];if(!e)return a({id:"security-csp-directives",name:"CSP Required Directives",category:"security",severity:"error"},"info","Not applicable (CSP header not present)",{recommendation:"This rule checks CSP directives when a Content-Security-Policy header exists"});let r=String(e).toLowerCase(),n=[];if(!r.includes("script-src")&&!r.includes("default-src")&&n.push({directive:"script-src",severity:"High",impact:"Allows execution of unsafe scripts from any source"}),!r.includes("object-src")&&!r.includes("default-src")&&n.push({directive:"object-src",severity:"High",impact:"Allows injection of plugins that execute unsafe scripts"}),r.includes("base-uri")||n.push({directive:"base-uri",severity:"Medium",impact:"Allows attackers to change the base URL for relative links"}),n.length>0){let i=n.filter(o=>o.severity==="High");return i.length>0?a({id:"security-csp-directives",name:"CSP Required Directives",category:"security",severity:"error"},"fail",`Missing critical CSP directives: ${i.map(o=>o.directive).join(", ")}`,{recommendation:"Add script-src and object-src directives. Consider setting object-src to 'none' if plugins are not needed.",evidence:{found:n.map(o=>`${o.directive} (${o.severity}): ${o.impact}`),expected:"script-src 'self'; object-src 'none'; base-uri 'self'",impact:"Page is vulnerable to script injection attacks",learnMore:"https://web.dev/csp/"}}):a({id:"security-csp-directives",name:"CSP Required Directives",category:"security",severity:"error"},"warn",`Missing recommended CSP directives: ${n.map(o=>o.directive).join(", ")}`,{recommendation:"Add base-uri directive to prevent base tag hijacking",evidence:{found:n.map(o=>`${o.directive}: ${o.impact}`),expected:"base-uri 'self'"}})}return a({id:"security-csp-directives",name:"CSP Required Directives",category:"security",severity:"error"},"pass","CSP has required script-src and object-src directives")}},{id:"security-hsts-exists",name:"Strict-Transport-Security (HSTS)",category:"security",severity:"warning",description:"HSTS header forces secure connections and improves SEO indirectly.",check:t=>{if(!t.responseHeaders)return a({id:"security-hsts-exists",name:"HSTS Header",category:"security",severity:"warning"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for HSTS headers when HTTP response headers are available"});let e=t.responseHeaders["strict-transport-security"]||t.responseHeaders["Strict-Transport-Security"];return e?a({id:"security-hsts-exists",name:"HSTS Header",category:"security",severity:"warning"},"pass",`Strict-Transport-Security header is present: ${e}`):a({id:"security-hsts-exists",name:"HSTS Header",category:"security",severity:"warning"},"warn","Strict-Transport-Security header is missing",{recommendation:"Implement HSTS to force secure connections",evidence:{expected:"Strict-Transport-Security header",impact:"Users may connect over insecure HTTP on first visit",learnMore:"https://web.dev/security-headers/#hsts"}})}},{id:"security-hsts-strong",name:"Strong HSTS Policy",category:"security",severity:"info",description:"HSTS should have a strong policy with long max-age and includeSubDomains",check:t=>{if(!t.responseHeaders)return a({id:"security-hsts-strong",name:"Strong HSTS Policy",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks HSTS policy strength when HTTP response headers are available"});let e=t.responseHeaders["strict-transport-security"]||t.responseHeaders["Strict-Transport-Security"];if(!e)return a({id:"security-hsts-strong",name:"Strong HSTS Policy",category:"security",severity:"info"},"info","Not applicable (HSTS header not present)",{recommendation:"This rule checks HSTS policy strength when a Strict-Transport-Security header exists"});let r=String(e).toLowerCase(),n=[],i=r.match(/max-age\s*=\s*(\d+)/),o=i?parseInt(i[1],10):0,s=31536e3;return o<s&&n.push(`max-age is ${o}s (recommended: ${s}s / 1 year)`),r.includes("includesubdomains")||n.push("Missing includeSubDomains"),r.includes("preload")||n.push("Missing preload (optional but recommended)"),n.length>0?a({id:"security-hsts-strong",name:"Strong HSTS Policy",category:"security",severity:"info"},"info",`HSTS policy could be stronger: ${n.join("; ")}`,{recommendation:"Use max-age=31536000; includeSubDomains; preload",evidence:{found:e,expected:"max-age=31536000; includeSubDomains; preload",learnMore:"https://hstspreload.org/"}}):a({id:"security-hsts-strong",name:"Strong HSTS Policy",category:"security",severity:"info"},"pass","Strong HSTS policy with long max-age and includeSubDomains")}},{id:"security-coop",name:"Cross-Origin-Opener-Policy (COOP)",category:"security",severity:"info",description:"COOP ensures proper origin isolation for security",check:t=>{if(!t.responseHeaders)return a({id:"security-coop",name:"Cross-Origin-Opener-Policy",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for COOP headers when HTTP response headers are available"});let e=t.responseHeaders["cross-origin-opener-policy"]||t.responseHeaders["Cross-Origin-Opener-Policy"];if(!e)return a({id:"security-coop",name:"Cross-Origin-Opener-Policy",category:"security",severity:"info"},"info","Cross-Origin-Opener-Policy header is missing",{recommendation:"Add COOP header to isolate your origin from attackers",evidence:{expected:"Cross-Origin-Opener-Policy: same-origin",impact:"Lack of origin isolation may enable cross-origin attacks",learnMore:"https://web.dev/coop-coep/"}});let r=String(e).toLowerCase();if(r==="same-origin")return a({id:"security-coop",name:"Cross-Origin-Opener-Policy",category:"security",severity:"info"},"pass","COOP: same-origin (full isolation)");if(r==="same-origin-allow-popups")return a({id:"security-coop",name:"Cross-Origin-Opener-Policy",category:"security",severity:"info"},"pass","COOP: same-origin-allow-popups");let n=Array.isArray(e)?e.join(", "):String(e);return a({id:"security-coop",name:"Cross-Origin-Opener-Policy",category:"security",severity:"info"},"info",`COOP: ${n}`,{value:n})}},{id:"security-coep",name:"Cross-Origin-Embedder-Policy (COEP)",category:"security",severity:"info",description:"COEP prevents loading cross-origin resources without explicit permission",check:t=>{if(!t.responseHeaders)return a({id:"security-coep",name:"Cross-Origin-Embedder-Policy",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for COEP headers when HTTP response headers are available"});let e=t.responseHeaders["cross-origin-embedder-policy"]||t.responseHeaders["Cross-Origin-Embedder-Policy"];return e?a({id:"security-coep",name:"Cross-Origin-Embedder-Policy",category:"security",severity:"info"},"pass",`COEP: ${e}`):a({id:"security-coep",name:"Cross-Origin-Embedder-Policy",category:"security",severity:"info"},"info","Cross-Origin-Embedder-Policy header is missing",{recommendation:"Add COEP header for cross-origin isolation",evidence:{expected:"Cross-Origin-Embedder-Policy: require-corp",impact:"Required for SharedArrayBuffer and high-resolution timers",learnMore:"https://web.dev/coop-coep/"}})}},{id:"security-trusted-types",name:"Trusted Types",category:"security",severity:"info",description:"Trusted Types help prevent DOM-based XSS attacks",check:t=>{if(!t.responseHeaders)return a({id:"security-trusted-types",name:"Trusted Types",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for Trusted Types in CSP when HTTP response headers are available"});let e=t.responseHeaders["content-security-policy"]||t.responseHeaders["Content-Security-Policy"];return e?String(e).toLowerCase().includes("require-trusted-types-for")?a({id:"security-trusted-types",name:"Trusted Types",category:"security",severity:"info"},"pass","Trusted Types policy enabled via CSP"):a({id:"security-trusted-types",name:"Trusted Types",category:"security",severity:"info"},"info","Trusted Types not enabled",{recommendation:"Add require-trusted-types-for to CSP for DOM XSS protection",evidence:{expected:"Content-Security-Policy: require-trusted-types-for 'script'",impact:"DOM manipulation may be vulnerable to XSS attacks",learnMore:"https://web.dev/trusted-types/"}}):a({id:"security-trusted-types",name:"Trusted Types",category:"security",severity:"info"},"info","Not applicable (CSP header not present)",{recommendation:"This rule checks for Trusted Types when a Content-Security-Policy header exists"})}},{id:"security-xfo-exists",name:"X-Frame-Options",category:"security",severity:"warning",description:"X-Frame-Options header should be present to prevent clickjacking.",check:t=>{if(!t.responseHeaders)return a({id:"security-xfo-exists",name:"X-Frame-Options",category:"security",severity:"warning"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for X-Frame-Options headers when HTTP response headers are available"});let e=t.responseHeaders["x-frame-options"]||t.responseHeaders["X-Frame-Options"];return e?a({id:"security-xfo-exists",name:"X-Frame-Options",category:"security",severity:"warning"},"pass",`X-Frame-Options header is present: ${e}`):a({id:"security-xfo-exists",name:"X-Frame-Options",category:"security",severity:"warning"},"warn","X-Frame-Options header is missing",{recommendation:"Implement X-Frame-Options to prevent clickjacking attacks",evidence:{expected:"X-Frame-Options: DENY or SAMEORIGIN",impact:"Page can be embedded in malicious iframes for clickjacking",learnMore:"https://web.dev/security-headers/#xfo"}})}},{id:"security-frame-ancestors",name:"CSP frame-ancestors",category:"security",severity:"info",description:"CSP frame-ancestors is the modern replacement for X-Frame-Options",check:t=>{if(!t.responseHeaders)return a({id:"security-frame-ancestors",name:"CSP frame-ancestors",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for CSP frame-ancestors when HTTP response headers are available"});let e=t.responseHeaders["content-security-policy"]||t.responseHeaders["Content-Security-Policy"],r=t.responseHeaders["x-frame-options"]||t.responseHeaders["X-Frame-Options"];return!e&&!r?a({id:"security-frame-ancestors",name:"CSP frame-ancestors",category:"security",severity:"info"},"info","Not applicable (neither CSP nor X-Frame-Options present)",{recommendation:"This rule checks CSP frame-ancestors when clickjacking protection headers are present"}):e&&String(e).toLowerCase().includes("frame-ancestors")?a({id:"security-frame-ancestors",name:"CSP frame-ancestors",category:"security",severity:"info"},"pass","CSP frame-ancestors directive present (modern clickjacking protection)"):r&&!e?a({id:"security-frame-ancestors",name:"CSP frame-ancestors",category:"security",severity:"info"},"info","Using X-Frame-Options; consider migrating to CSP frame-ancestors",{recommendation:"Use CSP frame-ancestors for better control over framing",evidence:{found:`X-Frame-Options: ${r}`,expected:"Content-Security-Policy: frame-ancestors 'self'",learnMore:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors"}}):a({id:"security-frame-ancestors",name:"CSP frame-ancestors",category:"security",severity:"info"},"info","Not applicable (clickjacking protection configured without frame-ancestors)",{recommendation:"This rule checks modern frame-ancestors directive in CSP for enhanced clickjacking protection"})}},{id:"security-cors-config",name:"CORS Configuration",category:"security",severity:"warning",description:"Review Access-Control-Allow-Origin header for proper CORS configuration.",check:t=>{if(!t.responseHeaders)return a({id:"security-cors-config",name:"CORS Configuration",category:"security",severity:"warning"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks CORS configuration when HTTP response headers are available"});let e=t.responseHeaders["access-control-allow-origin"]||t.responseHeaders["Access-Control-Allow-Origin"];return e==="*"?a({id:"security-cors-config",name:"CORS Configuration",category:"security",severity:"warning"},"warn",'Access-Control-Allow-Origin is set to "*"',{recommendation:"Avoid wildcard (*) in Access-Control-Allow-Origin for sensitive content",evidence:{found:"*",expected:"Specific origins only",impact:"Any website can make requests to your API"}}):e?a({id:"security-cors-config",name:"CORS Configuration",category:"security",severity:"warning"},"pass",`Access-Control-Allow-Origin: ${e}`):a({id:"security-cors-config",name:"CORS Configuration",category:"security",severity:"warning"},"info","Access-Control-Allow-Origin header is missing",{recommendation:"Configure CORS if resources are consumed cross-origin"})}},{id:"security-xcto-exists",name:"X-Content-Type-Options",category:"security",severity:"warning",description:"X-Content-Type-Options header prevents MIME sniffing attacks.",check:t=>{if(!t.responseHeaders)return a({id:"security-xcto-exists",name:"X-Content-Type-Options",category:"security",severity:"warning"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for X-Content-Type-Options headers when HTTP response headers are available"});let e=t.responseHeaders["x-content-type-options"]||t.responseHeaders["X-Content-Type-Options"];return e?a({id:"security-xcto-exists",name:"X-Content-Type-Options",category:"security",severity:"warning"},"pass",`X-Content-Type-Options: ${e}`):a({id:"security-xcto-exists",name:"X-Content-Type-Options",category:"security",severity:"warning"},"warn","X-Content-Type-Options header is missing",{recommendation:"Implement X-Content-Type-Options: nosniff",evidence:{expected:"X-Content-Type-Options: nosniff",impact:"Browser may interpret files incorrectly, leading to security issues"}})}},{id:"security-rp-exists",name:"Referrer-Policy",category:"security",severity:"info",description:"Referrer-Policy controls how much referrer information is sent with requests.",check:t=>{if(!t.responseHeaders)return a({id:"security-rp-exists",name:"Referrer-Policy",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for Referrer-Policy headers when HTTP response headers are available"});let e=t.responseHeaders["referrer-policy"]||t.responseHeaders["Referrer-Policy"];return e?a({id:"security-rp-exists",name:"Referrer-Policy",category:"security",severity:"info"},"pass",`Referrer-Policy: ${e}`):a({id:"security-rp-exists",name:"Referrer-Policy",category:"security",severity:"info"},"info","Referrer-Policy header is missing",{recommendation:"Implement Referrer-Policy for privacy (e.g., strict-origin-when-cross-origin)",evidence:{expected:"Referrer-Policy: strict-origin-when-cross-origin",impact:"Full URLs may leak in referrer headers"}})}},{id:"security-pp-exists",name:"Permissions-Policy",category:"security",severity:"info",description:"Permissions-Policy controls browser features available to the page.",check:t=>t.responseHeaders?t.responseHeaders["permissions-policy"]||t.responseHeaders["Permissions-Policy"]?a({id:"security-pp-exists",name:"Permissions-Policy",category:"security",severity:"info"},"pass","Permissions-Policy header is present"):a({id:"security-pp-exists",name:"Permissions-Policy",category:"security",severity:"info"},"info","Permissions-Policy header is missing",{recommendation:"Disable unused browser features (e.g., camera=(), microphone=())",evidence:{expected:"Permissions-Policy header",impact:"Third-party code may access browser features unnecessarily"}}):a({id:"security-pp-exists",name:"Permissions-Policy",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for Permissions-Policy headers when HTTP response headers are available"})},{id:"security-xxss",name:"X-XSS-Protection",category:"security",severity:"info",description:"X-XSS-Protection is deprecated but may still provide protection in older browsers",check:t=>{if(!t.responseHeaders)return a({id:"security-xxss",name:"X-XSS-Protection",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for deprecated X-XSS-Protection headers when HTTP response headers are available"});let e=t.responseHeaders["x-xss-protection"]||t.responseHeaders["X-XSS-Protection"];return e&&String(e).includes("1")?a({id:"security-xxss",name:"X-XSS-Protection",category:"security",severity:"info"},"info","X-XSS-Protection is enabled but deprecated",{recommendation:"Use Content-Security-Policy instead; X-XSS-Protection can be disabled",evidence:{found:e,expected:"CSP for XSS protection",impact:"X-XSS-Protection can introduce vulnerabilities in some cases",learnMore:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection"}}):a({id:"security-xxss",name:"X-XSS-Protection",category:"security",severity:"info"},"info","Not applicable (X-XSS-Protection not present or disabled)",{recommendation:"This rule checks for deprecated X-XSS-Protection headers when present"})}},{id:"security-corp",name:"Cross-Origin-Resource-Policy (CORP)",category:"security",severity:"info",description:"CORP restricts which origins can load your resources",check:t=>{if(!t.responseHeaders)return a({id:"security-corp",name:"Cross-Origin-Resource-Policy",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for CORP headers when HTTP response headers are available"});let e=t.responseHeaders["cross-origin-resource-policy"]||t.responseHeaders["Cross-Origin-Resource-Policy"];return e?a({id:"security-corp",name:"Cross-Origin-Resource-Policy",category:"security",severity:"info"},"pass",`CORP: ${e}`):a({id:"security-corp",name:"Cross-Origin-Resource-Policy",category:"security",severity:"info"},"info","Cross-Origin-Resource-Policy header is missing",{recommendation:"Consider adding CORP to control resource loading",evidence:{expected:"Cross-Origin-Resource-Policy: same-origin or same-site",impact:"Resources may be loaded by any origin",learnMore:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Resource-Policy"}})}},{id:"security-ssl-valid",name:"SSL Certificate Valid",category:"security",severity:"error",description:"SSL certificate must be valid and not expired",check:t=>t.sslCertificate===void 0?a({id:"security-ssl-valid",name:"SSL Certificate Valid",category:"security",severity:"error"},"info","Not applicable (SSL certificate information unavailable)",{recommendation:"This rule checks SSL certificate validity when certificate information is available"}):t.sslCertificate.valid?a({id:"security-ssl-valid",name:"SSL Certificate Valid",category:"security",severity:"error"},"pass","SSL certificate is valid"):a({id:"security-ssl-valid",name:"SSL Certificate Valid",category:"security",severity:"error"},"fail","SSL certificate is invalid",{recommendation:"Renew or replace the SSL certificate immediately",evidence:{found:t.sslCertificate.error||"Invalid certificate",impact:"Browsers will show security warnings, users may not trust the site"}})},{id:"security-ssl-expiry",name:"SSL Certificate Expiry",category:"security",severity:"warning",description:"SSL certificate should not expire within 30 days",check:t=>{var i;if(!((i=t.sslCertificate)!=null&&i.expiryDate))return a({id:"security-ssl-expiry",name:"SSL Certificate Expiry",category:"security",severity:"warning"},"info","Not applicable (SSL certificate expiry date unavailable)",{recommendation:"This rule checks SSL certificate expiration when certificate expiry information is available"});let e=new Date(t.sslCertificate.expiryDate),r=new Date,n=Math.floor((e.getTime()-r.getTime())/(1e3*60*60*24));return n<0?a({id:"security-ssl-expiry",name:"SSL Certificate Expiry",category:"security",severity:"warning"},"fail","SSL certificate has expired",{recommendation:"Renew the SSL certificate immediately",evidence:{found:`Expired ${Math.abs(n)} days ago`,impact:"Site is showing security warnings to all visitors"}}):n<7?a({id:"security-ssl-expiry",name:"SSL Certificate Expiry",category:"security",severity:"warning"},"fail",`SSL certificate expires in ${n} days`,{recommendation:"Renew the SSL certificate urgently",evidence:{found:`Expires: ${e.toISOString().split("T")[0]}`,impact:"Certificate will expire very soon"}}):n<30?a({id:"security-ssl-expiry",name:"SSL Certificate Expiry",category:"security",severity:"warning"},"warn",`SSL certificate expires in ${n} days`,{recommendation:"Plan to renew the SSL certificate soon",evidence:{found:`Expires: ${e.toISOString().split("T")[0]}`}}):a({id:"security-ssl-expiry",name:"SSL Certificate Expiry",category:"security",severity:"warning"},"pass",`SSL certificate valid for ${n} days`)}},{id:"security-ssl-name-match",name:"SSL Certificate Name Match",category:"security",severity:"error",description:"SSL certificate CN/SAN must match the domain",check:t=>{var e;return((e=t.sslCertificate)==null?void 0:e.nameMismatch)===void 0?a({id:"security-ssl-name-match",name:"SSL Certificate Name Match",category:"security",severity:"error"},"info","Not applicable (SSL certificate name match information unavailable)",{recommendation:"This rule checks SSL certificate name matching when certificate domain information is available"}):t.sslCertificate.nameMismatch?a({id:"security-ssl-name-match",name:"SSL Certificate Name Match",category:"security",severity:"error"},"fail","SSL certificate name mismatch",{recommendation:"Get a certificate that matches your domain name",evidence:{found:t.sslCertificate.commonName||"Unknown",expected:t.sslCertificate.expectedDomain||"Domain name",impact:"Browsers will show certificate warning"}}):a({id:"security-ssl-name-match",name:"SSL Certificate Name Match",category:"security",severity:"error"},"pass","SSL certificate matches domain")}},{id:"security-tls-version",name:"TLS Version",category:"security",severity:"error",description:"Server should use TLS 1.2 or higher",check:t=>{if(!t.tlsVersion)return a({id:"security-tls-version",name:"TLS Version",category:"security",severity:"error"},"info","Not applicable (TLS version information unavailable)",{recommendation:"This rule checks TLS version when TLS connection information is available"});let e=t.tlsVersion;return["SSLv2","SSLv3","TLSv1","TLSv1.0","TLSv1.1"].includes(e)?a({id:"security-tls-version",name:"TLS Version",category:"security",severity:"error"},"fail",`Insecure TLS version: ${e}`,{recommendation:"Upgrade to TLS 1.2 or TLS 1.3",evidence:{found:e,expected:"TLSv1.2 or TLSv1.3",impact:"Old TLS versions have known vulnerabilities"}}):a({id:"security-tls-version",name:"TLS Version",category:"security",severity:"error"},"pass",`Using ${e}`)}},{id:"security-ssl-issuer",name:"SSL Certificate Issuer",category:"security",severity:"info",description:"SSL certificate should be from a trusted CA",check:t=>{var n;if(!((n=t.sslCertificate)!=null&&n.issuer))return a({id:"security-ssl-issuer",name:"SSL Certificate Issuer",category:"security",severity:"info"},"info","Not applicable (SSL certificate issuer information unavailable)",{recommendation:"This rule checks SSL certificate issuer when certificate issuer information is available"});let e=t.sslCertificate.issuer;return e.toLowerCase().includes("self-signed")||t.sslCertificate.selfSigned===!0?a({id:"security-ssl-issuer",name:"SSL Certificate Issuer",category:"security",severity:"info"},"warn","Self-signed SSL certificate detected",{recommendation:"Use a certificate from a trusted Certificate Authority",evidence:{found:e,impact:"Self-signed certificates show warnings in browsers"}}):a({id:"security-ssl-issuer",name:"SSL Certificate Issuer",category:"security",severity:"info"},"pass",`Certificate issued by: ${e}`)}},{id:"security-password-on-http",name:"Password Fields on HTTP",category:"security",severity:"error",description:"Password fields must only appear on HTTPS pages",check:t=>t.hasPasswordField===void 0?a({id:"security-password-on-http",name:"Password Fields on HTTP",category:"security",severity:"error"},"info","Not applicable (password field information unavailable)",{recommendation:"This rule checks for password fields on insecure pages when password field data is available"}):t.hasPasswordField&&t.isHttps===!1?a({id:"security-password-on-http",name:"Password Fields on HTTP",category:"security",severity:"error"},"fail","Password field on insecure HTTP page",{recommendation:"Enable HTTPS for all pages with password fields",evidence:{impact:"Passwords sent over HTTP can be intercepted"}}):t.hasPasswordField&&t.isHttps===!0?a({id:"security-password-on-http",name:"Password Fields on HTTP",category:"security",severity:"error"},"pass","Password fields are on HTTPS"):a({id:"security-password-on-http",name:"Password Fields on HTTP",category:"security",severity:"error"},"info","Not applicable (no password fields detected)",{recommendation:"This rule checks if password fields are only used on HTTPS pages when password fields are present"})},{id:"security-forms-on-http",name:"Forms on HTTP",category:"security",severity:"warning",description:"Forms should only submit to HTTPS endpoints",check:t=>t.formsOnHttp===void 0?a({id:"security-forms-on-http",name:"Forms on HTTP",category:"security",severity:"warning"},"info","Not applicable (form submission data unavailable)",{recommendation:"This rule checks if forms submit to HTTPS endpoints when form data is available"}):t.formsOnHttp>0?a({id:"security-forms-on-http",name:"Forms on HTTP",category:"security",severity:"warning"},"warn",`${t.formsOnHttp} form(s) submit to HTTP`,{value:t.formsOnHttp,recommendation:"Update form actions to use HTTPS",evidence:{impact:"Form data sent over HTTP can be intercepted"}}):a({id:"security-forms-on-http",name:"Forms on HTTP",category:"security",severity:"warning"},"pass","All forms submit to HTTPS")},{id:"security-server-disclosure",name:"Server Version Disclosure",category:"security",severity:"info",description:"Server header should not reveal detailed version information",check:t=>{if(!t.responseHeaders)return a({id:"security-server-disclosure",name:"Server Version Disclosure",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for server version disclosure when HTTP response headers are available"});let e=t.responseHeaders.server||t.responseHeaders.Server;if(!e)return a({id:"security-server-disclosure",name:"Server Version Disclosure",category:"security",severity:"info"},"info","Not applicable (Server header not present)",{recommendation:"This rule checks for server version disclosure when Server header is present"});let r=String(e);return/\d+\.\d+/.test(r)?a({id:"security-server-disclosure",name:"Server Version Disclosure",category:"security",severity:"info"},"info",`Server header reveals version: ${r}`,{recommendation:"Configure server to hide version information",evidence:{found:r,impact:"Attackers can target known vulnerabilities"}}):a({id:"security-server-disclosure",name:"Server Version Disclosure",category:"security",severity:"info"},"info","Not applicable (Server header not present or does not disclose version)",{recommendation:"This rule checks if the Server header reveals version information"})}},{id:"security-x-powered-by",name:"X-Powered-By Header",category:"security",severity:"info",description:"X-Powered-By header reveals technology stack",check:t=>{if(!t.responseHeaders)return a({id:"security-x-powered-by",name:"X-Powered-By Header",category:"security",severity:"info"},"info","Not applicable (response headers unavailable)",{recommendation:"This rule checks for X-Powered-By header disclosure when HTTP response headers are available"});let e=t.responseHeaders["x-powered-by"]||t.responseHeaders["X-Powered-By"];return e?a({id:"security-x-powered-by",name:"X-Powered-By Header",category:"security",severity:"info"},"info",`X-Powered-By header present: ${e}`,{recommendation:"Remove X-Powered-By header to reduce attack surface",evidence:{found:String(e),impact:"Reveals technology stack to potential attackers"}}):a({id:"security-x-powered-by",name:"X-Powered-By Header",category:"security",severity:"info"},"info","Not applicable (X-Powered-By header not present)",{recommendation:"This rule checks for X-Powered-By header disclosure when the header is present"})}},{id:"ssl-sni-support",name:"SNI Support",category:"security",severity:"info",description:"Server should support Server Name Indication (SNI)",check:t=>t.sniSupported===void 0?a({id:"ssl-sni-support",name:"SNI Support",category:"security",severity:"info"},"info","Not applicable (SNI support information unavailable)",{recommendation:"This rule checks for SNI support when SNI information is available"}):t.sniSupported?a({id:"ssl-sni-support",name:"SNI Support",category:"security",severity:"info"},"info","Not applicable (SNI is supported)",{recommendation:"This rule checks for SNI support issues when SNI is not supported"}):a({id:"ssl-sni-support",name:"SNI Support",category:"security",severity:"info"},"info","Server may not support SNI",{recommendation:"Ensure web server supports SNI for proper HTTPS functionality",evidence:{impact:"Some older browsers may have issues with SSL certificates without SNI support"}})},{id:"sitemap-https-urls",name:"HTTPS URLs in Sitemap",category:"security",severity:"warning",description:"Sitemap should only contain HTTPS URLs",check:t=>t.sitemapHttpUrls===void 0?a({id:"sitemap-https-urls",name:"HTTPS URLs in Sitemap",category:"security",severity:"warning"},"info","Not applicable (sitemap URL data unavailable)",{recommendation:"This rule checks sitemap URLs for HTTPS usage when sitemap data is available"}):t.sitemapHttpUrls>0?a({id:"sitemap-https-urls",name:"HTTPS URLs in Sitemap",category:"security",severity:"warning"},"warn",`Sitemap contains ${t.sitemapHttpUrls} HTTP URLs`,{value:t.sitemapHttpUrls,recommendation:"Replace all HTTP URLs in sitemap.xml with HTTPS versions",evidence:{found:`${t.sitemapHttpUrls} HTTP URLs`,expected:"All URLs should use HTTPS",impact:"HTTP URLs in sitemap can cause mixed content issues and indexing confusion"}}):a({id:"sitemap-https-urls",name:"HTTPS URLs in Sitemap",category:"security",severity:"warning"},"pass","All sitemap URLs use HTTPS")},{id:"security-hsts",name:"HSTS Header",category:"security",severity:"info",description:"HTTPS sites should implement HSTS for security",check:t=>t.isHttps?t.hasHsts===void 0?a({id:"security-hsts",name:"HSTS Header",category:"security",severity:"info"},"info","Not applicable (HSTS status unavailable)",{recommendation:"This rule checks for HSTS headers when HSTS information is available"}):t.hasHsts?a({id:"security-hsts",name:"HSTS Header",category:"security",severity:"info"},"pass","HSTS header is present"):a({id:"security-hsts",name:"HSTS Header",category:"security",severity:"info"},"info","Missing Strict-Transport-Security header",{recommendation:"Implement HSTS to enforce HTTPS connections",evidence:{expected:"Strict-Transport-Security: max-age=31536000; includeSubDomains",impact:"Without HSTS, browsers may still attempt insecure HTTP connections",learnMore:"https://web.dev/strict-transport-security/"}}):a({id:"security-hsts",name:"HSTS Header",category:"security",severity:"info"},"info","Not applicable (page is not served over HTTPS)",{recommendation:"This rule checks HSTS implementation on HTTPS sites only"})}];var Sd=[{id:"json-ld-exists",name:"Structured Data",category:"structured-data",severity:"info",description:"Page should have JSON-LD structured data",check:t=>{var r;if(t.jsonLdCount===void 0)return a({id:"json-ld-exists",name:"Structured Data",category:"structured-data",severity:"info"},"info","Not applicable (JSON-LD count data unavailable)",{recommendation:"This rule checks for JSON-LD structured data to enable rich snippets in search results"});if(t.jsonLdCount===0)return a({id:"json-ld-exists",name:"Structured Data",category:"structured-data",severity:"info"},"info","No JSON-LD structured data found",{recommendation:"Add Schema.org structured data to enable rich snippets in search results.",evidence:{found:"No structured data",expected:"At least one JSON-LD block with Schema.org markup",impact:"Pages with structured data can get rich results like star ratings, prices, FAQs, and more.",example:'<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":"Page Title"}<\/script>',learnMore:"https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data"}});let e=((r=t.jsonLdTypes)==null?void 0:r.join(", "))||"unknown";return a({id:"json-ld-exists",name:"Structured Data",category:"structured-data",severity:"info"},"pass",`${t.jsonLdCount} JSON-LD block(s) found: ${e}`,{value:e})}},{id:"schema-standard-types",name:"Schema Types",category:"structured-data",severity:"info",description:"Use standard Schema.org types",check:t=>{if(!t.jsonLdTypes||t.jsonLdTypes.length===0)return a({id:"schema-standard-types",name:"Schema Types",category:"structured-data",severity:"info"},"info","Not applicable (no JSON-LD types detected)",{recommendation:"This rule checks for standard Schema.org types when structured data is present"});let e=["WebSite","WebPage","Article","Product","BreadcrumbList","Organization","Person","LocalBusiness","Recipe","Event","JobPosting","FAQPage","HowTo","VideoObject","SoftwareApplication","Review"];return t.jsonLdTypes.some(n=>e.includes(n))?a({id:"schema-standard-types",name:"Schema Types",category:"structured-data",severity:"info"},"pass","Using standard Schema.org types",{value:t.jsonLdTypes.join(", ")}):a({id:"schema-standard-types",name:"Schema Types",category:"structured-data",severity:"info"},"info","Using uncommon Schema.org types",{value:t.jsonLdTypes.join(", "),recommendation:`Consider using standard types like ${e.slice(0,3).join(", ")}`})}},{id:"breadcrumbs-presence",name:"Breadcrumbs Presence",category:"structured-data",severity:"info",description:"Breadcrumbs improve navigation and SEO structure",check:t=>!t.hasBreadcrumbsHtml&&!t.hasBreadcrumbsSchema?a({id:"breadcrumbs-presence",name:"Breadcrumbs Presence",category:"structured-data",severity:"info"},"info","No breadcrumbs found (HTML or Schema.org)",{recommendation:"Add breadcrumbs to help users understand their location in your site hierarchy.",evidence:{found:"No breadcrumbs",expected:"HTML breadcrumb navigation with BreadcrumbList schema",impact:"Breadcrumbs appear in Google search results and improve user navigation.",example:'<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://example.com/"},{"@type":"ListItem","position":2,"name":"Category","item":"https://example.com/category/"}]}<\/script>',learnMore:"https://developers.google.com/search/docs/appearance/structured-data/breadcrumb"}}):t.hasBreadcrumbsHtml&&t.hasBreadcrumbsSchema?a({id:"breadcrumbs-presence",name:"Breadcrumbs Presence",category:"structured-data",severity:"info"},"pass","Breadcrumbs found (HTML + Schema.org)",{value:"HTML + BreadcrumbList schema"}):t.hasBreadcrumbsSchema?a({id:"breadcrumbs-presence",name:"Breadcrumbs Presence",category:"structured-data",severity:"info"},"pass","Breadcrumbs schema found",{value:"BreadcrumbList schema"}):a({id:"breadcrumbs-presence",name:"Breadcrumbs Presence",category:"structured-data",severity:"info"},"info","HTML breadcrumbs found, consider adding Schema.org markup",{recommendation:"Add BreadcrumbList schema for better search visibility.",evidence:{found:"HTML breadcrumbs only",expected:"BreadcrumbList schema markup",impact:"Schema.org breadcrumbs enable rich results in search.",learnMore:"https://developers.google.com/search/docs/appearance/structured-data/breadcrumb"}})},{id:"schema-organization",name:"Organization Schema",category:"structured-data",severity:"info",description:"Organization schema helps search engines understand your business identity",check:t=>{var r;return t.jsonLdTypes?t.jsonLdTypes.some(n=>["Organization","LocalBusiness","Corporation","NGO","EducationalOrganization","GovernmentOrganization","MedicalOrganization","SportsOrganization"].includes(n))?a({id:"schema-organization",name:"Organization Schema",category:"structured-data",severity:"info"},"pass","Organization schema found",{value:t.jsonLdTypes.find(n=>n.includes("Organization")||n==="LocalBusiness"||n==="Corporation")}):t.isStartPage||(r=t.url)!=null&&r.endsWith("/")||t.hasAboutPageLink?a({id:"schema-organization",name:"Organization Schema",category:"structured-data",severity:"info"},"info","No Organization schema found",{recommendation:"Add Organization schema to establish your brand identity with search engines.",evidence:{found:"No Organization-type schema",expected:"Organization, LocalBusiness, or similar schema",impact:"Organization schema can trigger Knowledge Panel and improves E-E-A-T signals.",example:'{"@context":"https://schema.org","@type":"Organization","name":"Company Name","url":"https://example.com","logo":"https://example.com/logo.png","sameAs":["https://twitter.com/company","https://linkedin.com/company/name"]}',learnMore:"https://developers.google.com/search/docs/appearance/structured-data/organization"}}):a({id:"schema-organization",name:"Organization Schema",category:"structured-data",severity:"info"},"info","Not applicable (not a homepage or about page)",{recommendation:"Organization schema is typically used on homepage or about pages"}):a({id:"schema-organization",name:"Organization Schema",category:"structured-data",severity:"info"},"info","Not applicable (JSON-LD types data unavailable)",{recommendation:"This rule checks for Organization schema when structured data is present"})}},{id:"schema-faq",name:"FAQ Schema",category:"structured-data",severity:"info",description:"FAQ pages should have FAQPage schema for rich results",check:t=>{if(!t.jsonLdTypes)return a({id:"schema-faq",name:"FAQ Schema",category:"structured-data",severity:"info"},"info","Not applicable (JSON-LD types data unavailable)",{recommendation:"This rule checks for FAQPage schema when FAQ content is detected"});let e=t.jsonLdTypes.includes("FAQPage"),r=t.hasQuestionHeadings,n=t.faqCount||0;return!e&&(r||n>=3)?a({id:"schema-faq",name:"FAQ Schema",category:"structured-data",severity:"info"},"info","FAQ content detected but no FAQPage schema found",{recommendation:"Add FAQPage schema to get FAQ rich results in search.",evidence:{found:`${n} FAQ-like items detected`,expected:"FAQPage schema with Question/Answer items",impact:"FAQ rich results take more SERP space and increase CTR by up to 30%.",example:'{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Question text?","acceptedAnswer":{"@type":"Answer","text":"Answer text"}}]}',learnMore:"https://developers.google.com/search/docs/appearance/structured-data/faqpage"}}):e?a({id:"schema-faq",name:"FAQ Schema",category:"structured-data",severity:"info"},"pass","FAQPage schema found"):a({id:"schema-faq",name:"FAQ Schema",category:"structured-data",severity:"info"},"info","Not applicable (no FAQ content detected)",{recommendation:"This rule suggests FAQPage schema when FAQ-like content is present"})}},{id:"schema-article",name:"Article Schema",category:"structured-data",severity:"info",description:"Blog posts and articles should have Article schema",check:t=>{if(!t.jsonLdTypes)return a({id:"schema-article",name:"Article Schema",category:"structured-data",severity:"info"},"info","Not applicable (JSON-LD types data unavailable)",{recommendation:"This rule checks for Article schema on blog posts and news articles"});let e=t.jsonLdTypes.some(n=>["Article","NewsArticle","BlogPosting","TechArticle","ScholarlyArticle"].includes(n)),r=t.hasArticle||t.ogType==="article"||t.ogArticlePublishedTime||t.ogArticleAuthor;return!e&&r?a({id:"schema-article",name:"Article Schema",category:"structured-data",severity:"info"},"info","Article content detected but no Article schema found",{recommendation:"Add Article schema for blog posts and news articles.",evidence:{found:"Article-like content without Article schema",expected:"Article, BlogPosting, or NewsArticle schema",impact:"Article schema enables article-specific rich results and improves content indexing.",example:'{"@context":"https://schema.org","@type":"Article","headline":"Article Title","author":{"@type":"Person","name":"Author Name"},"datePublished":"2024-01-15","dateModified":"2024-01-20"}',learnMore:"https://developers.google.com/search/docs/appearance/structured-data/article"}}):e?a({id:"schema-article",name:"Article Schema",category:"structured-data",severity:"info"},"pass",`Article schema found: ${t.jsonLdTypes.find(n=>n.includes("Article")||n==="BlogPosting")}`):a({id:"schema-article",name:"Article Schema",category:"structured-data",severity:"info"},"info","Not applicable (no article-like content detected)",{recommendation:"This rule suggests Article schema when article-like content is detected"})}},{id:"schema-website",name:"WebSite Schema",category:"structured-data",severity:"info",description:"Homepage should have WebSite schema for sitelinks searchbox",check:t=>{var r;if(!t.jsonLdTypes)return a({id:"schema-website",name:"WebSite Schema",category:"structured-data",severity:"info"},"info","Not applicable (JSON-LD types data unavailable)",{recommendation:"This rule checks for WebSite schema on homepage to enable sitelinks searchbox"});let e=t.jsonLdTypes.includes("WebSite");return!t.isStartPage&&!((r=t.url)!=null&&r.match(/^https?:\/\/[^\/]+\/?$/))?a({id:"schema-website",name:"WebSite Schema",category:"structured-data",severity:"info"},"info","Not applicable (not a homepage)",{recommendation:"WebSite schema is typically used on the homepage for sitelinks searchbox"}):e?a({id:"schema-website",name:"WebSite Schema",category:"structured-data",severity:"info"},"pass","WebSite schema found"):a({id:"schema-website",name:"WebSite Schema",category:"structured-data",severity:"info"},"info","No WebSite schema found on homepage",{recommendation:"Add WebSite schema to enable sitelinks searchbox in Google results.",evidence:{found:"No WebSite schema",expected:"WebSite schema with SearchAction for sitelinks searchbox",impact:"WebSite schema can show a search box directly in Google search results.",example:'{"@context":"https://schema.org","@type":"WebSite","url":"https://example.com","name":"Site Name","potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://example.com/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}',learnMore:"https://developers.google.com/search/docs/appearance/structured-data/sitelinks-searchbox"}})}},{id:"schema-person",name:"Person Schema",category:"structured-data",severity:"info",description:"Person schema strengthens E-E-A-T signals and helps AI understand authorship",check:t=>{var i,o,s;if(!t.jsonLdTypes)return a({id:"schema-person",name:"Person Schema",category:"structured-data",severity:"info"},"info","Not applicable (JSON-LD types data unavailable)",{recommendation:"This rule checks for Person schema to strengthen E-E-A-T signals"});let e=t.jsonLdTypes.includes("Person"),r=t.jsonLdTypes.some(c=>["Article","NewsArticle","BlogPosting","TechArticle"].includes(c)),n=((i=t.url)==null?void 0:i.toLowerCase().includes("/about"))||((o=t.url)==null?void 0:o.toLowerCase().includes("/team"))||((s=t.url)==null?void 0:s.toLowerCase().includes("/author"));return!e&&(r||n)?a({id:"schema-person",name:"Person Schema",category:"structured-data",severity:"info"},"info","No Person schema found",{recommendation:"Add Person schema to establish authorship and strengthen E-E-A-T signals.",evidence:{found:"No Person schema",expected:"Person schema with name, jobTitle, and sameAs properties",impact:"Person schema helps Google and AI systems understand content authorship and expertise. 72% of top-ranking pages use some type of schema.",example:'{"@context":"https://schema.org","@type":"Person","name":"John Doe","jobTitle":"SEO Specialist","url":"https://example.com/team/john","sameAs":["https://twitter.com/johndoe","https://linkedin.com/in/johndoe"]}',learnMore:"https://developers.google.com/search/docs/appearance/structured-data/profile-page"}}):e?a({id:"schema-person",name:"Person Schema",category:"structured-data",severity:"info"},"pass","Person schema found (strengthens E-E-A-T)"):a({id:"schema-person",name:"Person Schema",category:"structured-data",severity:"info"},"info","Not applicable (not an article or about/team page)",{recommendation:"Person schema is recommended for article pages and about/team pages"})}},{id:"schema-review",name:"Review Schema",category:"structured-data",severity:"info",description:"Review and AggregateRating schema enables star ratings in search results",check:t=>{if(!t.jsonLdTypes)return a({id:"schema-review",name:"Review Schema",category:"structured-data",severity:"info"},"info","Not applicable (JSON-LD types data unavailable)",{recommendation:"This rule checks for Review schema to enable star ratings in search results"});let e=t.jsonLdTypes.some(i=>["Review","AggregateRating"].includes(i)),r=t.jsonLdTypes.includes("Product"),n=t.jsonLdTypes.some(i=>["LocalBusiness","Restaurant","Hotel","Store"].includes(i));return!e&&(r||n||t.isProductPage)?a({id:"schema-review",name:"Review Schema",category:"structured-data",severity:"info"},"info","No Review/Rating schema found",{recommendation:"Add Review or AggregateRating schema to show star ratings in search results.",evidence:{found:"No Review schema",expected:"Review or AggregateRating schema",impact:"Pages with schema receive 40% higher CTR than pages without. Star ratings significantly increase click-through rates.",example:'{"@context":"https://schema.org","@type":"AggregateRating","ratingValue":"4.5","reviewCount":"89","bestRating":"5"}',learnMore:"https://developers.google.com/search/docs/appearance/structured-data/review-snippet"}}):e?a({id:"schema-review",name:"Review Schema",category:"structured-data",severity:"info"},"pass","Review/Rating schema found"):a({id:"schema-review",name:"Review Schema",category:"structured-data",severity:"info"},"info","Not applicable (not a product or local business page)",{recommendation:"Review schema is recommended for product and local business pages"})}},{id:"schema-service",name:"Service Schema",category:"structured-data",severity:"info",description:"Service businesses should use Service schema to describe offerings",check:t=>{var i,o;if(!t.jsonLdTypes)return a({id:"schema-service",name:"Service Schema",category:"structured-data",severity:"info"},"info","Not applicable (JSON-LD types data unavailable)",{recommendation:"This rule checks for Service schema to describe business service offerings"});let e=t.jsonLdTypes.some(s=>["Service","ProfessionalService","FinancialService","LegalService"].includes(s)),r=t.jsonLdTypes.some(s=>["LocalBusiness","ProfessionalService","LegalService","FinancialService","AccountingService","AutoRepair","Dentist","MedicalClinic"].includes(s)),n=((i=t.url)==null?void 0:i.toLowerCase().includes("/service"))||((o=t.url)==null?void 0:o.toLowerCase().includes("/pricing"));return!e&&(r||n)?a({id:"schema-service",name:"Service Schema",category:"structured-data",severity:"info"},"info","No Service schema found",{recommendation:"Add Service schema to help AI understand your specific service offerings.",evidence:{found:"LocalBusiness without Service schema",expected:"Service schema with provider, areaServed, and offers",impact:"Service schema helps AI systems accurately represent your business services in generated responses.",example:'{"@context":"https://schema.org","@type":"Service","name":"Tax Preparation","provider":{"@type":"LocalBusiness","name":"ABC Accounting"},"areaServed":"Austin, TX","offers":{"@type":"Offer","price":"150","priceCurrency":"USD"}}',learnMore:"https://schema.org/Service"}}):e?a({id:"schema-service",name:"Service Schema",category:"structured-data",severity:"info"},"pass","Service schema found"):a({id:"schema-service",name:"Service Schema",category:"structured-data",severity:"info"},"info","Not applicable (not a local business or service page)",{recommendation:"Service schema is recommended for service business pages"})}},{id:"schema-sameas",name:"Schema sameAs (Social Links)",category:"structured-data",severity:"info",description:"sameAs property links your entity to social profiles, improving AI visibility",check:t=>{var n;if(!t.jsonLdTypes)return a({id:"schema-sameas",name:"Schema sameAs (Social Links)",category:"structured-data",severity:"info"},"info","Not applicable (JSON-LD types data unavailable)",{recommendation:"This rule checks for sameAs property to link entities to social profiles"});if(!t.jsonLdTypes.some(i=>["Organization","LocalBusiness","Person","Corporation"].includes(i)))return a({id:"schema-sameas",name:"Schema sameAs (Social Links)",category:"structured-data",severity:"info"},"info","Not applicable (no Organization or Person schema detected)",{recommendation:"This rule applies when Organization or Person schema is present"});if(t.socialLinksFound&&t.socialLinksFound.length>0){let i=((n=t.socialLinksFound)==null?void 0:n.length)??0;return a({id:"schema-sameas",name:"Schema sameAs",category:"structured-data",severity:"info"},"info","Social links found - ensure they are included in schema sameAs property",{recommendation:"Add sameAs property to your Organization/Person schema with all social profile URLs.",evidence:{found:`${i} social profile(s) on page`,expected:"sameAs array in Organization or Person schema",impact:"sameAs helps AI systems connect your brand across platforms and improves Knowledge Panel eligibility.",example:'"sameAs": ["https://twitter.com/company", "https://linkedin.com/company/name", "https://facebook.com/company"]',learnMore:"https://developers.google.com/search/docs/appearance/structured-data/organization"}})}return a({id:"schema-sameas",name:"Schema sameAs",category:"structured-data",severity:"info"},"pass","Organization/Person schema present (verify sameAs includes social profiles)")}},{id:"schema-ai-completeness",name:"Schema Completeness for AI",category:"structured-data",severity:"info",description:"Comprehensive structured data improves AI citations and visibility",check:t=>{if(!t.jsonLdTypes||t.jsonLdTypes.length===0)return a({id:"schema-ai-completeness",name:"Schema Completeness for AI",category:"structured-data",severity:"info"},"info","Not applicable (no JSON-LD types detected)",{recommendation:"This rule checks for comprehensive structured data to improve AI citations"});let e=["Organization","LocalBusiness","Person","Product","Service","FAQPage","Article","BlogPosting","WebSite","BreadcrumbList"],r=t.jsonLdTypes.filter(n=>e.includes(n));if(r.length>=3)return a({id:"schema-ai-completeness",name:"Schema AI Completeness",category:"structured-data",severity:"info"},"pass",`Comprehensive schema found (${r.length} key types)`,{value:r.join(", "),evidence:{found:r,impact:"Comprehensive structured data significantly increases chances of AI citations."}});if(r.length>=1){let n=e.filter(i=>!r.includes(i)).slice(0,3);return a({id:"schema-ai-completeness",name:"Schema AI Completeness",category:"structured-data",severity:"info"},"info",`Basic schema found (${r.length} key type(s))`,{value:r.join(", "),recommendation:"Add more schema types for better AI visibility.",evidence:{found:r,expected:"Multiple schema types for comprehensive coverage",impact:"AI systems prioritize sites with comprehensive structured data for citations.",issue:`Consider adding: ${n.join(", ")}`}})}return a({id:"schema-ai-completeness",name:"Schema AI Completeness",category:"structured-data",severity:"info"},"info","Not applicable (no key schema types detected)",{recommendation:"This rule analyzes schema completeness when important schema types are present"})}}];var Ad=[{id:"a11y-buttons-accessible-name",name:"Buttons Accessible Name",category:"accessibility",severity:"error",description:"Buttons must have an accessible name (text content, aria-label, or title)",check:t=>{if(t.buttonsWithoutAriaLabel===void 0)return a({id:"a11y-buttons-accessible-name",name:"Buttons Accessible Name",category:"accessibility",severity:"error"},"info","Not applicable (no button data available)",{recommendation:"This rule checks that all buttons have accessible names via text content, aria-label, or title attributes"});let e=t.buttonsWithoutAriaLabel;return e>0?a({id:"a11y-buttons-accessible-name",name:"Buttons Accessible Name",category:"accessibility",severity:"error"},"fail",`${e} button(s) do not have an accessible name`,{value:e,recommendation:"Add text content, aria-label, aria-labelledby, or title to all buttons",evidence:{found:e,expected:0,impact:"Screen reader users cannot determine the button purpose",learnMore:"https://dequeuniversity.com/rules/axe/4.4/button-name"}}):a({id:"a11y-buttons-accessible-name",name:"Buttons Accessible Name",category:"accessibility",severity:"error"},"pass","All buttons have accessible names")}},{id:"a11y-images-alt",name:"Image Alt Attributes",category:"accessibility",severity:"error",description:"Image elements must have [alt] attributes",check:t=>{if(t.imagesWithoutAlt===void 0)return a({id:"a11y-images-alt",name:"Image Alt Attributes",category:"accessibility",severity:"error"},"info","Not applicable (no image data available)",{recommendation:"This rule checks that all images have alt attributes for screen readers"});let e=t.imagesWithoutAlt;return e>0?a({id:"a11y-images-alt",name:"Image Alt Attributes",category:"accessibility",severity:"error"},"fail",`${e} image(s) do not have [alt] attributes`,{value:e,recommendation:'Add alt="" for decorative images or descriptive alt text for informative images',evidence:{found:e,expected:0,impact:"Screen readers cannot convey image content to blind users",learnMore:"https://dequeuniversity.com/rules/axe/4.4/image-alt"}}):a({id:"a11y-images-alt",name:"Image Alt Attributes",category:"accessibility",severity:"error"},"pass","All images have [alt] attributes")}},{id:"a11y-links-discernible-name",name:"Links Discernible Name",category:"accessibility",severity:"error",description:"Links must have a discernible name",check:t=>{if(t.linksWithoutText===void 0&&t.linksWithoutAriaLabel===void 0)return a({id:"a11y-links-discernible-name",name:"Links Discernible Name",category:"accessibility",severity:"error"},"info","Not applicable (no link data available)",{recommendation:"This rule checks that all links have discernible names via text content, aria-label, or title"});let e=t.linksWithoutText??0,r=t.linksWithoutAriaLabel??0,n=Math.max(e,r);return n>0?a({id:"a11y-links-discernible-name",name:"Links Discernible Name",category:"accessibility",severity:"error"},"fail",`${n} link(s) do not have a discernible name`,{value:n,recommendation:"Add text content, aria-label, aria-labelledby, or title to links",evidence:{found:n,expected:0,impact:"Screen reader users cannot understand link destinations",learnMore:"https://dequeuniversity.com/rules/axe/4.4/link-name"}}):a({id:"a11y-links-discernible-name",name:"Links Discernible Name",category:"accessibility",severity:"error"},"pass","All links have discernible names")}},{id:"a11y-form-labels",name:"Form Input Labels",category:"accessibility",severity:"error",description:"Form elements must have associated labels",check:t=>{if(t.inputsWithoutLabel===void 0)return a({id:"a11y-form-labels",name:"Form Input Labels",category:"accessibility",severity:"error"},"info","Not applicable (no form input data available)",{recommendation:"This rule checks that all form inputs have associated labels for accessibility"});let e=t.inputsWithoutLabel;return e>0?a({id:"a11y-form-labels",name:"Form Input Labels",category:"accessibility",severity:"error"},"fail",`${e} form input(s) without associated label`,{value:e,recommendation:'Add <label for="id">, aria-label, or aria-labelledby to all form inputs',evidence:{found:e,expected:0,impact:"Users cannot identify input purpose, critical for screen reader users",learnMore:"https://dequeuniversity.com/rules/axe/4.4/label"}}):a({id:"a11y-form-labels",name:"Form Input Labels",category:"accessibility",severity:"error"},"pass","All form inputs have associated labels")}},{id:"a11y-heading-order",name:"Heading Order",category:"accessibility",severity:"warning",description:"Heading elements should be in sequentially-descending order",check:t=>{var e;return t.headingHierarchyValid===void 0?a({id:"a11y-heading-order",name:"Heading Order",category:"accessibility",severity:"warning"},"info","Not applicable (no heading data available)",{recommendation:"This rule checks that headings follow a logical order (H1 \u2192 H2 \u2192 H3) without skipping levels"}):t.headingHierarchyValid?a({id:"a11y-heading-order",name:"Heading Order",category:"accessibility",severity:"warning"},"pass","Headings are in sequentially-descending order"):a({id:"a11y-heading-order",name:"Heading Order",category:"accessibility",severity:"warning"},"warn","Heading elements are not in sequentially-descending order",{recommendation:"Ensure headings follow a logical order (H1 \u2192 H2 \u2192 H3) without skipping levels",evidence:{found:((e=t.headingSkippedLevels)==null?void 0:e.join(", "))||"Skipped levels detected",expected:"Sequential heading hierarchy",impact:"Impacts keyboard navigation for screen reader users",learnMore:"https://dequeuniversity.com/rules/axe/4.4/heading-order"}})}},{id:"a11y-tabindex",name:"Tabindex Values",category:"accessibility",severity:"warning",description:"No element should have a [tabindex] value greater than 0",check:t=>{if(t.elementsWithHighTabindex===void 0)return a({id:"a11y-tabindex",name:"Tabindex Values",category:"accessibility",severity:"warning"},"info","Not applicable (no tabindex data available)",{recommendation:"This rule checks that no element has a tabindex value greater than 0, which can confuse keyboard users"});let e=t.elementsWithHighTabindex;return e>0?a({id:"a11y-tabindex",name:"Tabindex Values",category:"accessibility",severity:"warning"},"warn",`${e} element(s) have tabindex > 0`,{value:e,recommendation:'Remove positive tabindex values; use tabindex="0" or "-1" instead',evidence:{found:e,expected:0,impact:"Creates confusing focus order for keyboard users",learnMore:"https://dequeuniversity.com/rules/axe/4.4/tabindex"}}):a({id:"a11y-tabindex",name:"Tabindex Values",category:"accessibility",severity:"warning"},"pass","No elements have tabindex > 0")}},{id:"a11y-aria-valid-attrs",name:"Valid ARIA Attributes",category:"accessibility",severity:"error",description:"[aria-*] attributes must be valid and not misspelled",check:t=>{if(t.invalidAriaAttributes===void 0)return a({id:"a11y-aria-valid-attrs",name:"Valid ARIA Attributes",category:"accessibility",severity:"error"},"info","Not applicable (no ARIA attribute data available)",{recommendation:"This rule checks that all aria-* attributes are valid and not misspelled"});let e=t.invalidAriaAttributes;return e>0?a({id:"a11y-aria-valid-attrs",name:"Valid ARIA Attributes",category:"accessibility",severity:"error"},"fail",`${e} invalid or misspelled aria-* attribute(s) found`,{value:e,recommendation:"Verify ARIA attributes are spelled correctly and valid",evidence:{found:e,expected:0,impact:"Invalid ARIA provides no accessibility benefit",learnMore:"https://dequeuniversity.com/rules/axe/4.4/aria-valid-attr"}}):a({id:"a11y-aria-valid-attrs",name:"Valid ARIA Attributes",category:"accessibility",severity:"error"},"pass","All ARIA attributes are valid")}},{id:"a11y-aria-valid-values",name:"ARIA Attribute Values",category:"accessibility",severity:"error",description:"[aria-*] attributes must have valid values",check:t=>{if(t.invalidAriaValues===void 0)return a({id:"a11y-aria-valid-values",name:"ARIA Attribute Values",category:"accessibility",severity:"error"},"info","Not applicable (no ARIA value data available)",{recommendation:"This rule checks that all aria-* attributes have valid values"});let e=t.invalidAriaValues;return e>0?a({id:"a11y-aria-valid-values",name:"ARIA Attribute Values",category:"accessibility",severity:"error"},"fail",`${e} aria-* attribute(s) have invalid values`,{value:e,recommendation:'Use valid values for ARIA attributes (e.g., aria-live="polite")',evidence:{found:e,expected:0,impact:"Invalid values prevent assistive technologies from working correctly",learnMore:"https://dequeuniversity.com/rules/axe/4.4/aria-valid-attr-value"}}):a({id:"a11y-aria-valid-values",name:"ARIA Attribute Values",category:"accessibility",severity:"error"},"pass","All ARIA attribute values are valid")}},{id:"a11y-aria-roles",name:"Valid ARIA Roles",category:"accessibility",severity:"error",description:"[role] values must be valid",check:t=>{if(t.invalidAriaRoles===void 0)return a({id:"a11y-aria-roles",name:"Valid ARIA Roles",category:"accessibility",severity:"error"},"info","Not applicable (no ARIA role data available)",{recommendation:"This rule checks that all role values are valid ARIA roles"});let e=t.invalidAriaRoles;return e>0?a({id:"a11y-aria-roles",name:"Valid ARIA Roles",category:"accessibility",severity:"error"},"fail",`${e} invalid [role] value(s) found`,{value:e,recommendation:"Use valid ARIA role values (e.g., button, dialog, navigation)",evidence:{found:e,expected:0,impact:"Invalid roles confuse assistive technologies",learnMore:"https://dequeuniversity.com/rules/axe/4.4/aria-roles"}}):a({id:"a11y-aria-roles",name:"Valid ARIA Roles",category:"accessibility",severity:"error"},"pass","All [role] values are valid")}},{id:"a11y-aria-required-attrs",name:"Required ARIA Attributes",category:"accessibility",severity:"error",description:"[role]s must have all required [aria-*] attributes",check:t=>{if(t.missingRequiredAriaAttrs===void 0)return a({id:"a11y-aria-required-attrs",name:"Required ARIA Attributes",category:"accessibility",severity:"error"},"info","Not applicable (no required ARIA attribute data available)",{recommendation:"This rule checks that elements with ARIA roles have all required aria-* attributes"});let e=t.missingRequiredAriaAttrs;return e>0?a({id:"a11y-aria-required-attrs",name:"Required ARIA Attributes",category:"accessibility",severity:"error"},"fail",`${e} element(s) with roles missing required aria-* attributes`,{value:e,recommendation:'Add required ARIA attributes for each role (e.g., role="slider" requires aria-valuenow)',evidence:{found:e,expected:0,impact:"Missing attributes break assistive technology functionality",learnMore:"https://dequeuniversity.com/rules/axe/4.4/aria-required-attr"}}):a({id:"a11y-aria-required-attrs",name:"Required ARIA Attributes",category:"accessibility",severity:"error"},"pass","All roles have required ARIA attributes")}},{id:"a11y-aria-hidden-body",name:"ARIA Hidden Body",category:"accessibility",severity:"error",description:'[aria-hidden="true"] must not be present on the document <body>',check:t=>t.hasAriaHiddenBody===void 0?a({id:"a11y-aria-hidden-body",name:"ARIA Hidden Body",category:"accessibility",severity:"error"},"info","Not applicable (no body element data available)",{recommendation:"This rule checks that aria-hidden is not present on the document body"}):t.hasAriaHiddenBody?a({id:"a11y-aria-hidden-body",name:"ARIA Hidden Body",category:"accessibility",severity:"error"},"fail",'aria-hidden="true" is present on document <body>',{recommendation:"Remove aria-hidden from <body> element",evidence:{found:'aria-hidden="true" on body',expected:"No aria-hidden on body",impact:"Entire page content hidden from assistive technologies",learnMore:"https://dequeuniversity.com/rules/axe/4.4/aria-hidden-body"}}):a({id:"a11y-aria-hidden-body",name:"ARIA Hidden Body",category:"accessibility",severity:"error"},"pass","aria-hidden is not present on <body>")},{id:"a11y-aria-hidden-focus",name:"ARIA Hidden Focusable",category:"accessibility",severity:"error",description:'[aria-hidden="true"] elements must not contain focusable descendants',check:t=>{if(t.ariaHiddenFocusableCount===void 0)return a({id:"a11y-aria-hidden-focus",name:"ARIA Hidden Focusable",category:"accessibility",severity:"error"},"info","Not applicable (no aria-hidden focusable data available)",{recommendation:"This rule checks that aria-hidden elements do not contain focusable descendants"});let e=t.ariaHiddenFocusableCount;return e>0?a({id:"a11y-aria-hidden-focus",name:"ARIA Hidden Focusable",category:"accessibility",severity:"error"},"fail",`${e} aria-hidden element(s) contain focusable descendants`,{value:e,recommendation:"Remove focusable elements from aria-hidden containers or remove aria-hidden",evidence:{found:e,expected:0,impact:"Focus can move to invisible elements, confusing users",learnMore:"https://dequeuniversity.com/rules/axe/4.4/aria-hidden-focus"}}):a({id:"a11y-aria-hidden-focus",name:"ARIA Hidden Focusable",category:"accessibility",severity:"error"},"pass","No focusable elements inside aria-hidden containers")}},{id:"a11y-aria-deprecated",name:"Deprecated ARIA Roles",category:"accessibility",severity:"warning",description:"Deprecated ARIA roles should not be used",check:t=>{if(t.deprecatedAriaRoles===void 0)return a({id:"a11y-aria-deprecated",name:"Deprecated ARIA Roles",category:"accessibility",severity:"warning"},"info","Not applicable (no deprecated ARIA role data available)",{recommendation:"This rule checks that deprecated ARIA roles are not used"});let e=t.deprecatedAriaRoles;return e>0?a({id:"a11y-aria-deprecated",name:"Deprecated ARIA Roles",category:"accessibility",severity:"warning"},"warn",`${e} deprecated ARIA role(s) found`,{value:e,recommendation:"Replace deprecated roles with current alternatives",evidence:{found:e,expected:0,impact:"Deprecated roles may not work in future browsers",learnMore:"https://www.w3.org/TR/wai-aria-1.2/"}}):a({id:"a11y-aria-deprecated",name:"Deprecated ARIA Roles",category:"accessibility",severity:"warning"},"pass","No deprecated ARIA roles used")}},{id:"a11y-aria-ids-unique",name:"ARIA IDs Unique",category:"accessibility",severity:"error",description:"ARIA IDs must be unique",check:t=>{if(t.duplicateAriaIds===void 0)return a({id:"a11y-aria-ids-unique",name:"ARIA IDs Unique",category:"accessibility",severity:"error"},"info","Not applicable (no ARIA ID data available)",{recommendation:"This rule checks that all IDs referenced by aria-labelledby, aria-describedby, etc. are unique"});let e=t.duplicateAriaIds;return e>0?a({id:"a11y-aria-ids-unique",name:"ARIA IDs Unique",category:"accessibility",severity:"error"},"fail",`${e} duplicate ARIA ID(s) found`,{value:e,recommendation:"Ensure all IDs referenced by aria-labelledby, aria-describedby, etc. are unique",evidence:{found:e,expected:0,impact:"References to duplicate IDs produce unpredictable behavior",learnMore:"https://dequeuniversity.com/rules/axe/4.4/duplicate-id-aria"}}):a({id:"a11y-aria-ids-unique",name:"ARIA IDs Unique",category:"accessibility",severity:"error"},"pass","All ARIA IDs are unique")}},{id:"a11y-dialog-name",name:"Dialog Accessible Name",category:"accessibility",severity:"error",description:'Elements with role="dialog" or role="alertdialog" must have accessible names',check:t=>{if(t.dialogsWithoutName===void 0)return a({id:"a11y-dialog-name",name:"Dialog Accessible Name",category:"accessibility",severity:"error"},"info","Not applicable (no dialog data available)",{recommendation:'This rule checks that elements with role="dialog" or role="alertdialog" have accessible names'});let e=t.dialogsWithoutName;return e>0?a({id:"a11y-dialog-name",name:"Dialog Accessible Name",category:"accessibility",severity:"error"},"fail",`${e} dialog(s) without accessible name`,{value:e,recommendation:"Add aria-label or aria-labelledby to dialog elements",evidence:{found:e,expected:0,impact:"Screen reader users cannot identify dialog purpose",learnMore:"https://dequeuniversity.com/rules/axe/4.4/aria-dialog-name"}}):a({id:"a11y-dialog-name",name:"Dialog Accessible Name",category:"accessibility",severity:"error"},"pass","All dialogs have accessible names")}},{id:"a11y-main-landmark",name:"Main Landmark",category:"accessibility",severity:"warning",description:"Document should have a main landmark",check:t=>t.hasMain===void 0?a({id:"a11y-main-landmark",name:"Main Landmark",category:"accessibility",severity:"warning"},"info","Not applicable (no main landmark data available)",{recommendation:'This rule checks that document has a <main> element or role="main" for screen reader navigation'}):t.hasMain?a({id:"a11y-main-landmark",name:"Main Landmark",category:"accessibility",severity:"warning"},"pass","Document has a main landmark"):a({id:"a11y-main-landmark",name:"Main Landmark",category:"accessibility",severity:"warning"},"warn","Document does not have a <main> landmark",{recommendation:'Add a <main> element or role="main" to identify the main content area',evidence:{found:'No <main> element or role="main"',expected:'<main> or role="main"',impact:"Screen reader users cannot quickly navigate to main content",example:`<main>
|
|
269
269
|
<!-- Main content here -->
|
|
270
270
|
</main>`,learnMore:"https://dequeuniversity.com/rules/axe/4.4/landmark-one-main"}})},{id:"a11y-skip-link",name:"Skip Link",category:"accessibility",severity:"info",description:"Page should contain a heading, skip link, or landmark region",check:t=>{if(t.hasSkipLink===void 0&&t.hasMain===void 0&&t.h1Count===void 0)return a({id:"a11y-skip-link",name:"Skip Link",category:"accessibility",severity:"info"},"info","Not applicable (no navigation bypass data available)",{recommendation:"This rule checks that page contains a skip link, main landmark, or heading for keyboard navigation"});let e=t.hasSkipLink??!1,r=t.hasMain??!1,n=(t.h1Count??0)>0;return!e&&!r&&!n?a({id:"a11y-skip-link",name:"Skip Link",category:"accessibility",severity:"info"},"info","No skip link, main landmark, or heading found",{recommendation:"Add a skip link, <main> landmark, or at least one heading for navigation",evidence:{found:"No skip link, <main>, or heading",expected:"Skip link, <main>, or heading",impact:"Keyboard users must tab through all navigation to reach content",example:'<a href="#main-content" class="skip-link">Skip to main content</a>',learnMore:"https://dequeuniversity.com/rules/axe/4.4/bypass"}}):a({id:"a11y-skip-link",name:"Skip Link",category:"accessibility",severity:"info"},"pass","Page has navigation bypass mechanism")}},{id:"a11y-table-caption",name:"Table Caption",category:"accessibility",severity:"info",description:"Data tables should have caption or aria-label",check:t=>{if(t.tablesWithoutCaption===void 0)return a({id:"a11y-table-caption",name:"Table Caption",category:"accessibility",severity:"info"},"info","Not applicable (no table data available)",{recommendation:"This rule checks that data tables have captions or aria-labels for screen readers"});let e=t.tablesWithoutCaption;return e>0?a({id:"a11y-table-caption",name:"Table Caption",category:"accessibility",severity:"info"},"info",`${e} table(s) without caption or aria-label`,{value:e,recommendation:"Add <caption> or aria-label to data tables",evidence:{found:e,expected:0,impact:"Screen reader users cannot understand table purpose"}}):a({id:"a11y-table-caption",name:"Table Caption",category:"accessibility",severity:"info"},"pass","All tables have captions or labels")}},{id:"a11y-iframe-title",name:"Iframe Title",category:"accessibility",severity:"warning",description:"<frame> or <iframe> elements must have a title",check:t=>{if(t.iframesWithoutTitle===void 0)return a({id:"a11y-iframe-title",name:"Iframe Title",category:"accessibility",severity:"warning"},"info","Not applicable (no iframe data available)",{recommendation:"This rule checks that iframes have title attributes to describe their content"});let e=t.iframesWithoutTitle;return e>0?a({id:"a11y-iframe-title",name:"Iframe Title",category:"accessibility",severity:"warning"},"warn",`${e} iframe(s) without title attribute`,{value:e,recommendation:"Add title attribute to describe iframe content",evidence:{found:e,expected:0,impact:"Screen reader users cannot identify iframe purpose",learnMore:"https://dequeuniversity.com/rules/axe/4.4/frame-title"}}):a({id:"a11y-iframe-title",name:"Iframe Title",category:"accessibility",severity:"warning"},"pass","All iframes have title attributes")}},{id:"a11y-svg-title",name:"SVG Title",category:"accessibility",severity:"warning",description:"SVGs should have <title> or aria-label for accessibility",check:t=>{if(t.svgsWithoutTitle===void 0)return a({id:"a11y-svg-title",name:"SVG Title",category:"accessibility",severity:"warning"},"info","Not applicable (no SVG data available)",{recommendation:"This rule checks that SVGs have <title> elements or aria-label for accessibility"});let e=t.svgsWithoutTitle;return e>0?a({id:"a11y-svg-title",name:"SVG Title",category:"accessibility",severity:"warning"},"warn",`${e} SVG(s) without accessible title`,{value:e,recommendation:"Add <title> element inside SVG or aria-label attribute",evidence:{found:e,expected:0,impact:"Screen readers cannot describe SVG content",example:`<svg aria-label="Descriptive label">
|
|
271
271
|
<title>Icon description</title>
|
|
@@ -396,7 +396,7 @@ Components: React, Node.js`,learnMore:"https://humanstxt.org/"}})}];var Sd=[{id:
|
|
|
396
396
|
]`,learnMore:"https://developer.mozilla.org/en-US/docs/Web/Manifest/shortcuts"}}):a({id:"manifest-shortcuts",name:"App Shortcuts",category:"technical",severity:"info"},"pass",`${t.manifestShortcuts.length} shortcut(s) defined`):a({id:"manifest-shortcuts",name:"App Shortcuts",category:"technical",severity:"info"},"info","Not applicable (no manifest)",{recommendation:"First add a web app manifest"})},{id:"manifest-service-worker",name:"Service Worker",category:"technical",severity:"warning",description:"A service worker is required for PWA installability",check:t=>t.hasServiceWorker?a({id:"manifest-service-worker",name:"Service Worker",category:"technical",severity:"warning"},"pass","Service worker is registered"):a({id:"manifest-service-worker",name:"Service Worker",category:"technical",severity:"warning"},"warn","No service worker detected",{recommendation:"Register a service worker for PWA installability.",evidence:{expected:"A registered service worker",impact:"Service workers are required for PWA installation. They enable offline functionality, push notifications, and background sync. Without one, Chrome won't show the install prompt.",example:`// In your main JavaScript:
|
|
397
397
|
if ('serviceWorker' in navigator) {
|
|
398
398
|
navigator.serviceWorker.register('/sw.js');
|
|
399
|
-
}`,learnMore:"https://web.dev/articles/service-workers-registration"}})},{id:"manifest-installable",name:"PWA Installability",category:"technical",severity:"warning",description:"Check if the app meets minimum PWA installability requirements",check:t=>{if(!t.hasManifest)return a({id:"manifest-installable",name:"PWA Installability",category:"technical",severity:"warning"},"warn","Not installable: no manifest",{recommendation:"Add a web app manifest to enable PWA installation.",evidence:{impact:"PWA installability requires: manifest, HTTPS, service worker, 192x192 and 512x512 icons, name/short_name, start_url, display (standalone/fullscreen/minimal-ui).",learnMore:"https://web.dev/articles/install-criteria"}});let e=[];!t.manifestName&&!t.manifestShortName&&e.push("name or short_name"),t.manifestStartUrl||e.push("start_url"),(!t.manifestDisplay||!["standalone","fullscreen","minimal-ui"].includes(t.manifestDisplay))&&e.push("display (standalone/fullscreen/minimal-ui)");let r=t.manifestIconSizes||[];return r.includes(192)||e.push("192x192 icon"),r.includes(512)||e.push("512x512 icon"),t.hasServiceWorker||e.push("service worker"),e.length>0?a({id:"manifest-installable",name:"PWA Installability",category:"technical",severity:"warning"},"warn",`Missing requirements for installability: ${e.join(", ")}`,{recommendation:"Address the missing requirements to make your app installable.",evidence:{found:`Missing: ${e.join(", ")}`,expected:"All PWA installability requirements met",impact:"Users cannot install your app to their home screen without meeting these requirements.",learnMore:"https://web.dev/articles/install-criteria"}}):a({id:"manifest-installable",name:"PWA Installability",category:"technical",severity:"warning"},"pass","App meets PWA installability requirements")}}];var Ud=[{id:"social-og-image-size",name:"OG Image Size",category:"og",severity:"warning",description:"Open Graph images should meet minimum size requirements",check:t=>{if(!t.ogImage)return a({id:"social-og-image-size",name:"OG Image Size",category:"og",severity:"warning"},"info","Not applicable (no og:image)",{recommendation:"This rule checks og:image dimensions when present"});if(!t.ogImageDimensions)return a({id:"social-og-image-size",name:"OG Image Size",category:"og",severity:"warning"},"info","Not applicable (og:image dimensions not available)",{recommendation:"This rule checks if og:image meets minimum size requirements"});let{width:e,height:r}=t.ogImageDimensions,n=1200,i=630;return e<n||r<i?a({id:"social-og-image-size",name:"OG Image Size",category:"og",severity:"warning"},"warn",`OG image too small: ${e}x${r}`,{recommendation:"Use larger images for better social sharing",evidence:{found:`${e}x${r}px`,expected:`Minimum ${n}x${i}px`,impact:"Small images may appear cropped or blurry on social platforms",learnMore:"https://developers.facebook.com/docs/sharing/best-practices/"}}):a({id:"social-og-image-size",name:"OG Image Size",category:"og",severity:"warning"},"pass",`OG image: ${e}x${r}px`)}},{id:"social-og-image-aspect-ratio",name:"OG Image Aspect Ratio",category:"og",severity:"info",description:"Open Graph images should use optimal aspect ratio",check:t=>{if(!t.ogImageDimensions)return a({id:"social-og-image-aspect-ratio",name:"OG Image Aspect Ratio",category:"og",severity:"info"},"info","Not applicable (og:image dimensions not available)",{recommendation:"This rule checks og:image aspect ratio when dimensions are available"});let{width:e,height:r}=t.ogImageDimensions,n=e/r;return Math.abs(n-1.91)>.1?a({id:"social-og-image-aspect-ratio",name:"OG Image Aspect Ratio",category:"og",severity:"info"},"info",`OG image ratio: ${n.toFixed(2)}:1`,{recommendation:"Use 1.91:1 aspect ratio for optimal display",evidence:{found:`${n.toFixed(2)}:1`,expected:"1.91:1 (e.g., 1200x628)",impact:"Non-optimal ratios may be cropped on social platforms"}}):a({id:"social-og-image-aspect-ratio",name:"OG Image Aspect Ratio",category:"og",severity:"info"},"pass","OG image has optimal aspect ratio")}},{id:"social-og-locale",name:"OG Locale",category:"og",severity:"info",description:"Open Graph should specify content locale",check:t=>t.ogLocale===void 0?a({id:"social-og-locale",name:"OG Locale",category:"og",severity:"info"},"info","Not applicable (og:locale property not checked)",{recommendation:"This rule checks og:locale when locale data is available"}):t.ogLocale?a({id:"social-og-locale",name:"OG Locale",category:"og",severity:"info"},"pass",`Locale: ${t.ogLocale}`):a({id:"social-og-locale",name:"OG Locale",category:"og",severity:"info"},"info","Missing og:locale",{recommendation:"Add og:locale for international content",evidence:{expected:'<meta property="og:locale" content="en_US">',impact:"Helps Facebook display content to correct language audience"}})},{id:"social-og-locale-alternate",name:"OG Locale Alternates",category:"og",severity:"info",description:"Multi-language sites should specify alternate locales",check:t=>t.ogLocale?!t.hreflangTags||t.hreflangTags.length<=1?a({id:"social-og-locale-alternate",name:"OG Locale Alternates",category:"og",severity:"info"},"info","Not applicable (single language site)",{recommendation:"This rule checks for og:locale:alternate on multi-language sites"}):t.ogLocaleAlternate===void 0?a({id:"social-og-locale-alternate",name:"OG Locale Alternates",category:"og",severity:"info"},"info","Not applicable (og:locale:alternate property not checked)",{recommendation:"This rule checks og:locale:alternate when data is available"}):!t.ogLocaleAlternate||t.ogLocaleAlternate.length===0?a({id:"social-og-locale-alternate",name:"OG Locale Alternates",category:"og",severity:"info"},"info","Missing og:locale:alternate for multi-language site",{recommendation:"Add og:locale:alternate for other language versions",evidence:{found:`${t.hreflangTags.length} languages but no og:locale:alternate`,expected:'<meta property="og:locale:alternate" content="es_ES">',impact:"Helps Facebook understand available language versions"}}):a({id:"social-og-locale-alternate",name:"OG Locale Alternates",category:"og",severity:"info"},"pass",`${t.ogLocaleAlternate.length} alternate locale(s)`):a({id:"social-og-locale-alternate",name:"OG Locale Alternates",category:"og",severity:"info"},"info","Not applicable (no og:locale)",{recommendation:"This rule checks for alternate locales when og:locale is present"})},{id:"social-og-article-tags",name:"OG Article Tags",category:"og",severity:"info",description:"Article pages should include article-specific Open Graph tags",check:t=>{if(t.ogType!=="article")return a({id:"social-og-article-tags",name:"OG Article Tags",category:"og",severity:"info"},"info","Not applicable (page is not an article)",{recommendation:"This rule checks article-specific Open Graph tags for article pages"});if(t.ogArticleTags===void 0)return a({id:"social-og-article-tags",name:"OG Article Tags",category:"og",severity:"info"},"info","Not applicable (article tags property not checked)",{recommendation:"This rule checks article-specific Open Graph tags when data is available"});let e=[];return t.ogArticlePublishedTime||e.push("article:published_time"),t.ogArticleAuthor||e.push("article:author"),e.length>0?a({id:"social-og-article-tags",name:"OG Article Tags",category:"og",severity:"info"},"info",`Missing article OG tags: ${e.join(", ")}`,{recommendation:"Add article-specific Open Graph tags",evidence:{found:e,expected:["article:published_time","article:author","article:section","article:tag"],impact:"Rich article metadata improves social sharing appearance"}}):a({id:"social-og-article-tags",name:"OG Article Tags",category:"og",severity:"info"},"pass","Article OG tags present")}},{id:"social-twitter-large-image",name:"Twitter Large Image",category:"twitter",severity:"info",description:"Consider using summary_large_image for better visibility",check:t=>t.twitterCard?t.twitterCard==="summary"?a({id:"social-twitter-large-image",name:"Twitter Large Image",category:"twitter",severity:"info"},"info","Using summary card (small image)",{recommendation:"Consider summary_large_image for more visual impact",evidence:{found:"summary",expected:"summary_large_image for content-rich pages",impact:"Large images get 2x more engagement on Twitter"}}):a({id:"social-twitter-large-image",name:"Twitter Large Image",category:"twitter",severity:"info"},"pass",`Twitter card: ${t.twitterCard}`):a({id:"social-twitter-large-image",name:"Twitter Large Image",category:"twitter",severity:"info"},"info","Not applicable (no twitter:card)",{recommendation:"This rule checks Twitter card type when present"})},{id:"social-twitter-creator",name:"Twitter Creator",category:"twitter",severity:"info",description:"Article pages should include twitter:creator for attribution",check:t=>t.twitterCard?t.ogType!=="article"?a({id:"social-twitter-creator",name:"Twitter Creator",category:"twitter",severity:"info"},"info","Not applicable (page is not an article)",{recommendation:"This rule checks twitter:creator for article pages"}):t.twitterCreator===void 0?a({id:"social-twitter-creator",name:"Twitter Creator",category:"twitter",severity:"info"},"info","Not applicable (twitter:creator property not checked)",{recommendation:"This rule checks twitter:creator when data is available"}):t.twitterCreator?a({id:"social-twitter-creator",name:"Twitter Creator",category:"twitter",severity:"info"},"pass",`Creator: ${t.twitterCreator}`):a({id:"social-twitter-creator",name:"Twitter Creator",category:"twitter",severity:"info"},"info","Missing twitter:creator on article",{recommendation:"Add twitter:creator for author attribution",evidence:{expected:'<meta name="twitter:creator" content="@username">',impact:"Attributes content to author and enables analytics"}}):a({id:"social-twitter-creator",name:"Twitter Creator",category:"twitter",severity:"info"},"info","Not applicable (no twitter:card)",{recommendation:"This rule checks twitter:creator when Twitter Card is present"})},{id:"social-twitter-image-alt",name:"Twitter Image Alt",category:"twitter",severity:"info",description:"Twitter images should have alt text for accessibility",check:t=>t.twitterImage?t.twitterImageAlt===void 0?a({id:"social-twitter-image-alt",name:"Twitter Image Alt",category:"twitter",severity:"info"},"info","Not applicable (twitter:image:alt property not checked)",{recommendation:"This rule checks twitter:image:alt when data is available"}):t.twitterImageAlt?a({id:"social-twitter-image-alt",name:"Twitter Image Alt",category:"twitter",severity:"info"},"pass","Twitter image has alt text"):a({id:"social-twitter-image-alt",name:"Twitter Image Alt",category:"twitter",severity:"info"},"info","Missing twitter:image:alt",{recommendation:"Add alt text for Twitter card image",evidence:{expected:'<meta name="twitter:image:alt" content="Description of image">',impact:"Improves accessibility for screen reader users"}}):a({id:"social-twitter-image-alt",name:"Twitter Image Alt",category:"twitter",severity:"info"},"info","Not applicable (no twitter:image)",{recommendation:"This rule checks twitter:image:alt when Twitter image is present"})},{id:"social-linkedin-author",name:"LinkedIn Author",category:"og",severity:"info",description:"Professional content should include author information",check:t=>t.ogType!=="article"?a({id:"social-linkedin-author",name:"LinkedIn Author",category:"og",severity:"info"},"info","Not applicable (page is not an article)",{recommendation:"This rule checks author information for article pages"}):t.linkedinAuthor===void 0&&t.ogArticleAuthor===void 0?a({id:"social-linkedin-author",name:"LinkedIn Author",category:"og",severity:"info"},"info","Not applicable (author properties not checked)",{recommendation:"This rule checks author information when data is available"}):!t.linkedinAuthor&&!t.ogArticleAuthor?a({id:"social-linkedin-author",name:"LinkedIn Author",category:"og",severity:"info"},"info","No author specified for LinkedIn",{recommendation:"Add author for professional network sharing",evidence:{expected:'<meta property="article:author" content="https://linkedin.com/in/author">',impact:"LinkedIn uses author info for professional attribution"}}):a({id:"social-linkedin-author",name:"LinkedIn Author",category:"og",severity:"info"},"pass","Author information present")},{id:"social-pinterest-rich-pins",name:"Pinterest Rich Pins",category:"og",severity:"info",description:"E-commerce and recipe sites should support Pinterest Rich Pins",check:t=>!t.isProductPage&&t.ogType!=="recipe"?a({id:"social-pinterest-rich-pins",name:"Pinterest Rich Pins",category:"og",severity:"info"},"info","Not applicable (page is not a product or recipe)",{recommendation:"This rule checks Pinterest Rich Pin support for e-commerce and recipe sites"}):t.pinterestRichPinSupport===void 0?a({id:"social-pinterest-rich-pins",name:"Pinterest Rich Pins",category:"og",severity:"info"},"info","Not applicable (Pinterest Rich Pin support not checked)",{recommendation:"This rule checks for structured data when data is available"}):t.pinterestRichPinSupport?a({id:"social-pinterest-rich-pins",name:"Pinterest Rich Pins",category:"og",severity:"info"},"pass","Pinterest Rich Pins supported"):a({id:"social-pinterest-rich-pins",name:"Pinterest Rich Pins",category:"og",severity:"info"},"info","No Pinterest Rich Pin support detected",{recommendation:"Add structured data for Pinterest Rich Pins",evidence:{expected:"Product or Recipe schema.org markup",impact:"Rich Pins show real-time pricing and availability",learnMore:"https://developers.pinterest.com/docs/rich-pins/overview/"}})},{id:"social-pinterest-nopin",name:"Pinterest Nopin",category:"og",severity:"info",description:"Check for intentional Pinterest blocking",check:t=>t.hasPinterestNopin===void 0?a({id:"social-pinterest-nopin",name:"Pinterest Nopin",category:"og",severity:"info"},"info","Not applicable (Pinterest nopin property not checked)",{recommendation:"This rule checks for Pinterest blocking when data is available"}):t.hasPinterestNopin?a({id:"social-pinterest-nopin",name:"Pinterest Nopin",category:"og",severity:"info"},"info","Pinterest pinning is disabled",{evidence:{found:'data-pin-nopin or <meta name="pinterest" content="nopin">',impact:"Images cannot be pinned to Pinterest"}}):a({id:"social-pinterest-nopin",name:"Pinterest Nopin",category:"og",severity:"info"},"info","Not applicable (Pinterest pinning is allowed)",{recommendation:"This rule checks for intentional Pinterest blocking"})},{id:"social-share-completeness",name:"Social Share Completeness",category:"og",severity:"warning",description:"Pages should have complete social sharing metadata",check:t=>{let e=t.ogTitle&&t.ogDescription&&t.ogImage,r=t.twitterCard&&(t.twitterTitle||t.ogTitle);return!e&&!r?a({id:"social-share-completeness",name:"Social Share Completeness",category:"og",severity:"warning"},"warn","Missing social sharing metadata",{recommendation:"Add Open Graph and Twitter Card tags",evidence:{expected:["og:title","og:description","og:image","twitter:card"],impact:"Without metadata, social platforms use generic previews"}}):e&&!r?a({id:"social-share-completeness",name:"Social Share Completeness",category:"og",severity:"warning"},"info","Has Open Graph but missing Twitter Card",{recommendation:"Add twitter:card for better Twitter previews"}):a({id:"social-share-completeness",name:"Social Share Completeness",category:"og",severity:"warning"},"pass","Complete social metadata")}},{id:"social-og-title-length",name:"OG Title Length",category:"og",severity:"info",description:"Open Graph titles should be optimized for social platforms",check:t=>{if(!t.ogTitle)return a({id:"social-og-title-length",name:"OG Title Length",category:"og",severity:"info"},"info","Not applicable (no og:title)",{recommendation:"This rule checks og:title length for social platforms when present"});let e=t.ogTitle.length,r=60;return e>r?a({id:"social-og-title-length",name:"OG Title Length",category:"og",severity:"info"},"info",`OG title too long: ${e} chars`,{recommendation:"Shorten og:title for better display",evidence:{found:e,expected:`Under ${r} characters`,impact:"Long titles may be truncated on social platforms"}}):a({id:"social-og-title-length",name:"OG Title Length",category:"og",severity:"info"},"pass",`OG title: ${e} chars`)}},{id:"social-og-description-length",name:"OG Description Length",category:"og",severity:"info",description:"Open Graph descriptions should be optimized for social platforms",check:t=>{if(!t.ogDescription)return a({id:"social-og-description-length",name:"OG Description Length",category:"og",severity:"info"},"info","Not applicable (no og:description)",{recommendation:"This rule checks og:description length for social platforms when present"});let e=t.ogDescription.length,r=55,n=200;return e<r?a({id:"social-og-description-length",name:"OG Description Length",category:"og",severity:"info"},"info",`OG description too short: ${e} chars`,{recommendation:"Expand og:description for better context",evidence:{found:e,expected:`${r}-${n} characters`}}):e>n?a({id:"social-og-description-length",name:"OG Description Length",category:"og",severity:"info"},"info",`OG description long: ${e} chars`,{evidence:{found:e,expected:`${r}-${n} characters (may be truncated)`}}):a({id:"social-og-description-length",name:"OG Description Length",category:"og",severity:"info"},"pass",`OG description: ${e} chars`)}},{id:"social-fb-app-id",name:"Facebook App ID",category:"og",severity:"info",description:"Facebook App ID enables Insights and domain verification",check:t=>t.fbAppId===void 0?a({id:"social-fb-app-id",name:"Facebook App ID",category:"og",severity:"info"},"info","Not applicable (Facebook App ID property not checked)",{recommendation:"This rule checks for fb:app_id when data is available"}):t.fbAppId?a({id:"social-fb-app-id",name:"Facebook App ID",category:"og",severity:"info"},"pass","Facebook App ID present"):a({id:"social-fb-app-id",name:"Facebook App ID",category:"og",severity:"info"},"info","No Facebook App ID",{recommendation:"Add fb:app_id for Facebook Insights",evidence:{expected:'<meta property="fb:app_id" content="your-app-id">',impact:"Enables Facebook Insights and domain verification"}})},{id:"social-links-presence",name:"Social Media Links",category:"og",severity:"info",description:"Site should link to social media profiles",check:t=>t.socialLinksFound&&t.socialLinksFound.length>0?a({id:"social-links-presence",name:"Social Media Links",category:"og",severity:"info"},"pass",`Found ${t.socialLinksFound.length} social media profile link(s)`,{value:t.socialLinksFound.length,evidence:{found:t.socialLinksFound.slice(0,5)}}):a({id:"social-links-presence",name:"Social Media Links",category:"og",severity:"info"},"info","No social media profile links found",{recommendation:"Link to your Facebook, Twitter, Instagram, etc. profiles to build trust."})},{id:"social-links-accessibility",name:"Social Links Accessibility",category:"accessibility",severity:"warning",description:"Social media links should have accessible labels for screen readers",check:t=>{var e;if(!t.totalSocialLinks||t.totalSocialLinks===0)return a({id:"social-links-accessibility",name:"Social Links Accessibility",category:"accessibility",severity:"warning"},"info","Not applicable (no social links found)",{recommendation:"This rule checks accessibility of social media links when present"});if(t.socialLinksWithoutAccessibility===void 0)return a({id:"social-links-accessibility",name:"Social Links Accessibility",category:"accessibility",severity:"warning"},"info","Not applicable (social link accessibility not checked)",{recommendation:"This rule checks for accessible labels on social links when data is available"});if(t.socialLinksWithoutAccessibility>0){let r=(e=t.socialLinkDetails)==null?void 0:e.filter(n=>!n.hasAccessibility).map(n=>n.platform).slice(0,5);return a({id:"social-links-accessibility",name:"Social Links Accessibility",category:"accessibility",severity:"warning"},"warn",`${t.socialLinksWithoutAccessibility} social link(s) missing accessible labels`,{recommendation:"Add aria-label, title, or visible text to social media links",evidence:{found:t.socialLinksWithoutAccessibility,expected:"All social links should have accessible labels",impact:"Screen reader users cannot identify the purpose of icon-only social links",example:'<a href="https://twitter.com/..." aria-label="Follow us on Twitter">',issue:r!=null&&r.length?`Inaccessible: ${r.join(", ")}`:void 0}})}return a({id:"social-links-accessibility",name:"Social Links Accessibility",category:"accessibility",severity:"warning"},"pass","All social links have accessible labels")}},{id:"social-links-security",name:"Social Links Security",category:"security",severity:"warning",description:'External social links should use rel="noopener" to prevent security vulnerabilities',check:t=>{var n;if(!t.totalSocialLinks||t.totalSocialLinks===0)return a({id:"social-links-security",name:"Social Links Security",category:"security",severity:"warning"},"info","Not applicable (no social links found)",{recommendation:"This rule checks security attributes of social media links when present"});if(t.socialLinksWithoutNoopener===void 0)return a({id:"social-links-security",name:"Social Links Security",category:"security",severity:"warning"},"info","Not applicable (social link security not checked)",{recommendation:'This rule checks for rel="noopener" on social links when data is available'});let e=((n=t.socialLinkDetails)==null?void 0:n.filter(i=>i.hasNewTab))||[];if(e.length===0)return a({id:"social-links-security",name:"Social Links Security",category:"security",severity:"warning"},"info",'Not applicable (no social links with target="_blank")',{recommendation:"This rule checks security for social links that open in new tabs"});let r=e.filter(i=>!i.hasNoopener);return r.length>0?a({id:"social-links-security",name:"Social Links Security",category:"security",severity:"warning"},"warn",`${r.length} social link(s) with target="_blank" missing rel="noopener"`,{recommendation:'Add rel="noopener noreferrer" to external links with target="_blank"',evidence:{found:r.length,expected:'All target="_blank" links should have rel="noopener"',impact:"Without noopener, the opened page can access window.opener and potentially redirect your page (tabnabbing attack)",example:'<a href="https://twitter.com/..." target="_blank" rel="noopener noreferrer">',issue:r.slice(0,3).map(i=>i.platform).join(", ")}}):a({id:"social-links-security",name:"Social Links Security",category:"security",severity:"warning"},"pass","All social links opening in new tabs have proper security attributes")}},{id:"social-links-new-tab",name:"Social Links New Tab",category:"og",severity:"info",description:"Social media links should open in a new tab to keep users on your site",check:t=>{var e;if(!t.totalSocialLinks||t.totalSocialLinks===0)return a({id:"social-links-new-tab",name:"Social Links New Tab",category:"og",severity:"info"},"info","Not applicable (no social links found)",{recommendation:"This rule checks if social links open in new tabs when present"});if(t.socialLinksWithoutNewTab===void 0)return a({id:"social-links-new-tab",name:"Social Links New Tab",category:"og",severity:"info"},"info","Not applicable (social link new tab property not checked)",{recommendation:'This rule checks target="_blank" on social links when data is available'});if(t.socialLinksWithoutNewTab>0){let r=(e=t.socialLinkDetails)==null?void 0:e.filter(n=>!n.hasNewTab).map(n=>n.platform).slice(0,5);return a({id:"social-links-new-tab",name:"Social Links New Tab",category:"og",severity:"info"},"info",`${t.socialLinksWithoutNewTab} social link(s) don't open in new tab`,{recommendation:'Consider using target="_blank" for social links to keep users on your site',evidence:{found:t.socialLinksWithoutNewTab,expected:"Social links typically open in new tabs",impact:"Users leaving your site may not return; opening in new tab preserves their session",example:'<a href="https://twitter.com/..." target="_blank" rel="noopener noreferrer">',issue:r!=null&&r.length?`Without new tab: ${r.join(", ")}`:void 0}})}return a({id:"social-links-new-tab",name:"Social Links New Tab",category:"og",severity:"info"},"pass","All social links open in new tabs")}},{id:"social-links-placement",name:"Social Links Placement",category:"og",severity:"info",description:"Social links should be placed in header or footer for easy discovery",check:t=>{if(!t.totalSocialLinks||t.totalSocialLinks===0)return a({id:"social-links-placement",name:"Social Links Placement",category:"og",severity:"info"},"info","Not applicable (no social links found)",{recommendation:"This rule checks social link placement when present"});if(t.socialLinksInHeader===void 0&&t.socialLinksInFooter===void 0)return a({id:"social-links-placement",name:"Social Links Placement",category:"og",severity:"info"},"info","Not applicable (social link placement not checked)",{recommendation:"This rule checks social link placement when data is available"});if((t.socialLinksInHeader||0)+(t.socialLinksInFooter||0)===0)return a({id:"social-links-placement",name:"Social Links Placement",category:"og",severity:"info"},"info","Social links not found in header or footer",{recommendation:"Place social media links in header or footer for consistent visibility",evidence:{found:"Social links only in body content",expected:"Social links in header and/or footer",impact:"Users expect to find social links in standard locations; hidden links reduce engagement"}});let r=[];return t.socialLinksInHeader&&t.socialLinksInHeader>0&&r.push(`header (${t.socialLinksInHeader})`),t.socialLinksInFooter&&t.socialLinksInFooter>0&&r.push(`footer (${t.socialLinksInFooter})`),a({id:"social-links-placement",name:"Social Links Placement",category:"og",severity:"info"},"pass",`Social links found in ${r.join(" and ")}`)}},{id:"social-links-diversity",name:"Social Platform Diversity",category:"og",severity:"info",description:"Consider linking to multiple social platforms for broader reach",check:t=>{if(!t.platformsFound||t.platformsFound.length===0)return a({id:"social-links-diversity",name:"Social Platform Diversity",category:"og",severity:"info"},"info","Not applicable (no social platforms found)",{recommendation:"This rule checks social platform diversity when social links are present"});let e=["facebook","twitter","instagram","linkedin","youtube"],r=t.platformsFound.filter(n=>e.includes(n));return t.platformsFound.length===1?a({id:"social-links-diversity",name:"Social Platform Diversity",category:"og",severity:"info"},"info",`Only 1 social platform linked: ${t.platformsFound[0]}`,{recommendation:"Consider linking to additional relevant social platforms",evidence:{found:t.platformsFound,expected:"Multiple social platforms for broader audience reach",impact:"Different audiences prefer different platforms; diversification increases reach"}}):r.length>=2?a({id:"social-links-diversity",name:"Social Platform Diversity",category:"og",severity:"info"},"pass",`Found ${t.platformsFound.length} social platform(s): ${t.platformsFound.slice(0,5).join(", ")}`,{evidence:{found:t.platformsFound}}):a({id:"social-links-diversity",name:"Social Platform Diversity",category:"og",severity:"info"},"info",`${t.platformsFound.length} social platform(s) linked`,{evidence:{found:t.platformsFound},recommendation:"Consider adding major platforms like Facebook, Twitter/X, LinkedIn, or Instagram"})}},{id:"social-profile-consistency",name:"Social Profile Consistency",category:"og",severity:"info",description:"Social meta tags should be consistent with actual social profile links",check:t=>{var n,i;if(!t.twitterSite&&!((n=t.platformsFound)!=null&&n.includes("twitter")))return a({id:"social-profile-consistency",name:"Social Profile Consistency",category:"og",severity:"info"},"info","Not applicable (no Twitter meta or links)",{recommendation:"This rule checks consistency between social meta tags and profile links"});let e=!!t.twitterSite,r=(i=t.platformsFound)==null?void 0:i.includes("twitter");return e&&!r?a({id:"social-profile-consistency",name:"Social Profile Consistency",category:"og",severity:"info"},"info","twitter:site is set but no Twitter profile link found",{recommendation:"Add a link to your Twitter profile for consistency",evidence:{found:`twitter:site: ${t.twitterSite}`,expected:"Matching Twitter profile link on page",impact:"Users may want to follow your Twitter account directly from your site"}}):!e&&r?a({id:"social-profile-consistency",name:"Social Profile Consistency",category:"og",severity:"info"},"info","Twitter profile linked but twitter:site meta tag is missing",{recommendation:"Add twitter:site meta tag for proper Twitter Card attribution",evidence:{expected:'<meta name="twitter:site" content="@yourusername">',impact:"Twitter Cards will not show your @username when shared"}}):a({id:"social-profile-consistency",name:"Social Profile Consistency",category:"og",severity:"info"},"pass","Social meta tags are consistent with profile links")}}];var Hd=[{id:"linking-internal-count",name:"Internal Link Count",category:"links",severity:"warning",description:"Pages should have a healthy number of internal links",check:t=>{if(t.internalLinks===void 0)return a({id:"linking-internal-count",name:"Internal Link Count",category:"links",severity:"warning"},"info","Not applicable (internal links data unavailable)",{recommendation:"This rule checks internal link count to ensure proper site navigation and link equity distribution"});let e=t.internalLinks;return e===0?a({id:"linking-internal-count",name:"Internal Link Count",category:"links",severity:"warning"},"warn","No internal links found",{recommendation:"Add internal links to improve navigation and crawlability",evidence:{found:0,expected:"At least 3-5 internal links per page",impact:"Pages without internal links are harder to discover and may not pass link equity"}}):e<3?a({id:"linking-internal-count",name:"Internal Link Count",category:"links",severity:"warning"},"info",`Only ${e} internal link(s)`,{recommendation:"Consider adding more internal links",evidence:{found:e,expected:"At least 3-5 internal links"}}):a({id:"linking-internal-count",name:"Internal Link Count",category:"links",severity:"warning"},"pass",`${e} internal links`)}},{id:"linking-internal-ratio",name:"Internal/External Link Ratio",category:"links",severity:"info",description:"Pages should have more internal than external links",check:t=>{if(t.internalLinks===void 0||t.externalLinks===void 0)return a({id:"linking-internal-ratio",name:"Internal/External Link Ratio",category:"links",severity:"info"},"info","Not applicable (link data unavailable)",{recommendation:"This rule checks the balance between internal and external links"});if(t.totalLinks===void 0||t.totalLinks===0)return a({id:"linking-internal-ratio",name:"Internal/External Link Ratio",category:"links",severity:"info"},"info","Not applicable (no links detected)",{recommendation:"This rule requires at least some links to analyze the internal/external ratio"});let e=t.internalLinks,r=t.externalLinks,n=e/(r||1);return r>e&&r>5?a({id:"linking-internal-ratio",name:"Internal/External Link Ratio",category:"links",severity:"info"},"info",`More external (${r}) than internal (${e}) links`,{recommendation:"Consider adding more internal links for better link equity",evidence:{found:`${e} internal, ${r} external`,expected:"Internal links should exceed external links",impact:"External links pass PageRank to other sites"}}):a({id:"linking-internal-ratio",name:"Internal/External Link Ratio",category:"links",severity:"info"},"pass",`Ratio: ${n.toFixed(1)}:1 (internal:external)`)}},{id:"linking-anchor-diversity",name:"Anchor Text Diversity",category:"links",severity:"info",description:"Internal links should use diverse, descriptive anchor text",check:t=>{if(!t.allLinks||t.allLinks.length===0)return a({id:"linking-anchor-diversity",name:"Anchor Text Diversity",category:"links",severity:"info"},"info","Not applicable (no links detected)",{recommendation:"This rule checks anchor text diversity to prevent over-optimization"});let e=t.allLinks.filter(i=>i.type==="internal");if(e.length<3)return a({id:"linking-anchor-diversity",name:"Anchor Text Diversity",category:"links",severity:"info"},"info","Not applicable (insufficient internal links)",{recommendation:"This rule requires at least 3 internal links to analyze anchor text diversity"});let r={};for(let i of e){let o=(i.text||"").toLowerCase().trim();o&&o.length>2&&(r[o]=(r[o]||0)+1)}let n=Object.entries(r).filter(([i,o])=>o>=3).map(([i,o])=>`"${i}" (${o}x)`);return n.length>0?a({id:"linking-anchor-diversity",name:"Anchor Text Diversity",category:"links",severity:"info"},"info","Some anchor texts overused",{recommendation:"Vary anchor text for better SEO signal distribution",evidence:{found:n.slice(0,3),impact:"Repetitive anchors may look spammy to search engines"}}):a({id:"linking-anchor-diversity",name:"Anchor Text Diversity",category:"links",severity:"info"},"pass","Good anchor text diversity")}},{id:"linking-deep-links",name:"Deep Linking",category:"links",severity:"info",description:"Pages should link to deep content, not just homepage",check:t=>{if(!t.allLinks||t.allLinks.length===0)return a({id:"linking-deep-links",name:"Deep Linking",category:"links",severity:"info"},"info","Not applicable (no links detected)",{recommendation:"This rule checks for deep linking patterns to ensure inner pages are properly linked"});let e=t.allLinks.filter(o=>o.type==="internal");if(e.length===0)return a({id:"linking-deep-links",name:"Deep Linking",category:"links",severity:"info"},"info","Not applicable (no internal links detected)",{recommendation:"This rule requires internal links to analyze deep linking patterns"});let r=0,n=0;for(let o of e)try{let s=new URL(o.href,t.url);s.pathname==="/"||s.pathname===""?r++:n++}catch{continue}let i=n/e.length;return r>n&&e.length>5?a({id:"linking-deep-links",name:"Deep Linking",category:"links",severity:"info"},"info","Most internal links go to homepage",{recommendation:"Add more links to inner pages",evidence:{found:`${r} homepage links, ${n} deep links`,expected:"More deep links than homepage links",impact:"Deep linking improves crawlability of inner pages"}}):a({id:"linking-deep-links",name:"Deep Linking",category:"links",severity:"info"},"pass",`${Math.round(i*100)}% deep links`)}},{id:"linking-nav-links",name:"Navigation Links",category:"links",severity:"info",description:"Check for proper navigation link structure",check:t=>t.hasNav?t.navLinkCount===void 0?a({id:"linking-nav-links",name:"Navigation Links",category:"links",severity:"info"},"info","Not applicable (navigation link count unavailable)",{recommendation:"This rule checks the number of links in navigation elements"}):t.navLinkCount===0?a({id:"linking-nav-links",name:"Navigation Links",category:"links",severity:"info"},"warn","Navigation element has no links",{recommendation:"Add links to navigation for user experience and SEO",evidence:{found:"<nav> element with no links",expected:"Navigation should contain meaningful links"}}):t.navLinkCount>20?a({id:"linking-nav-links",name:"Navigation Links",category:"links",severity:"info"},"info",`Navigation has ${t.navLinkCount} links (high)`,{recommendation:"Consider simplifying navigation",evidence:{found:t.navLinkCount,expected:"Under 20 links for optimal UX",impact:"Too many nav links may dilute link equity"}}):a({id:"linking-nav-links",name:"Navigation Links",category:"links",severity:"info"},"pass",`${t.navLinkCount} navigation links`):a({id:"linking-nav-links",name:"Navigation Links",category:"links",severity:"info"},"info","Not applicable (no navigation element detected)",{recommendation:"This rule checks navigation link structure when a <nav> element is present"})},{id:"linking-footer-links",name:"Footer Links",category:"links",severity:"info",description:"Footer should contain important site-wide links",check:t=>t.hasFooter?t.footerLinkCount===void 0?a({id:"linking-footer-links",name:"Footer Links",category:"links",severity:"info"},"info","Not applicable (footer link count unavailable)",{recommendation:"This rule checks the number of links in footer elements"}):t.footerLinkCount===0?a({id:"linking-footer-links",name:"Footer Links",category:"links",severity:"info"},"info","Footer has no links",{recommendation:"Add important links to footer",evidence:{expected:"Links to privacy policy, terms, contact, sitemap"}}):t.footerLinkCount>50?a({id:"linking-footer-links",name:"Footer Links",category:"links",severity:"info"},"info",`Footer has ${t.footerLinkCount} links (excessive)`,{recommendation:"Reduce footer links to essential pages",evidence:{found:t.footerLinkCount,impact:"Excessive footer links may be seen as link spam"}}):a({id:"linking-footer-links",name:"Footer Links",category:"links",severity:"info"},"pass",`${t.footerLinkCount} footer links`):a({id:"linking-footer-links",name:"Footer Links",category:"links",severity:"info"},"info","Not applicable (no footer element detected)",{recommendation:"This rule checks footer link structure when a <footer> element is present"})},{id:"linking-contextual",name:"Contextual Links",category:"links",severity:"info",description:"Check for in-content contextual links",check:t=>{if(t.contextualLinkCount===void 0)return a({id:"linking-contextual",name:"Contextual Links",category:"links",severity:"info"},"info","Not applicable (contextual link count unavailable)",{recommendation:"This rule checks for in-content contextual links that pass more link equity"});if(!t.wordCount||t.wordCount<300)return a({id:"linking-contextual",name:"Contextual Links",category:"links",severity:"info"},"info","Not applicable (insufficient content for contextual link analysis)",{recommendation:"This rule requires at least 300 words to analyze contextual link patterns"});let e=t.contextualLinkCount;if(e===0)return a({id:"linking-contextual",name:"Contextual Links",category:"links",severity:"info"},"info","No contextual links in content",{recommendation:"Add links within body content to related pages",evidence:{expected:"At least 2-3 contextual links per 500 words",impact:"Contextual links pass more link equity than navigation links"}});let r=e/t.wordCount*500;return r<1&&t.wordCount>500?a({id:"linking-contextual",name:"Contextual Links",category:"links",severity:"info"},"info",`Only ${e} contextual link(s) in ${t.wordCount} words`,{recommendation:"Add more in-content links",evidence:{found:`${r.toFixed(1)} links per 500 words`,expected:"2-3 links per 500 words"}}):a({id:"linking-contextual",name:"Contextual Links",category:"links",severity:"info"},"pass",`${e} contextual links`)}},{id:"linking-orphan-page",name:"Orphan Page Detection",category:"links",severity:"warning",description:"Pages should be linked from other pages on the site",check:t=>t.incomingInternalLinks===void 0?a({id:"linking-orphan-page",name:"Orphan Page Detection",category:"links",severity:"warning"},"info","Not applicable (incoming internal links data unavailable)",{recommendation:"This rule checks if pages receive incoming internal links to prevent orphan pages"}):t.incomingInternalLinks===0?a({id:"linking-orphan-page",name:"Orphan Page Detection",category:"links",severity:"warning"},"warn","Page may be an orphan (no incoming internal links)",{recommendation:"Link to this page from other pages on your site",evidence:{found:"0 incoming internal links detected",impact:"Orphan pages are harder for search engines to discover",learnMore:"https://ahrefs.com/blog/orphan-pages/"}}):a({id:"linking-orphan-page",name:"Orphan Page Detection",category:"links",severity:"warning"},"pass",`${t.incomingInternalLinks} incoming internal link(s)`)},{id:"linking-self-referencing",name:"Self-Referencing Links",category:"links",severity:"info",description:"Avoid excessive self-referencing links",check:t=>t.selfReferencingLinks===void 0?a({id:"linking-self-referencing",name:"Self-Referencing Links",category:"links",severity:"info"},"info","Not applicable (self-referencing links data unavailable)",{recommendation:"This rule checks for excessive self-referencing links that waste crawl budget"}):t.selfReferencingLinks>3?a({id:"linking-self-referencing",name:"Self-Referencing Links",category:"links",severity:"info"},"info",`${t.selfReferencingLinks} self-referencing links`,{recommendation:"Reduce links that point to the current page",evidence:{found:t.selfReferencingLinks,expected:"0-1 self-referencing links (e.g., canonical only)",impact:"Self-links waste crawl budget and confuse users"}}):a({id:"linking-self-referencing",name:"Self-Referencing Links",category:"links",severity:"info"},"info","Not applicable (acceptable self-referencing link count)",{recommendation:"Self-referencing links are acceptable at current level (0-3 links)"})},{id:"linking-broken-internal",name:"Broken Internal Links",category:"links",severity:"error",description:"Internal links should not be broken",check:t=>t.brokenInternalLinks===void 0?a({id:"linking-broken-internal",name:"Broken Internal Links",category:"links",severity:"error"},"info","Not applicable (broken internal links data unavailable)",{recommendation:"This rule checks for broken internal links that harm user experience and waste crawl budget"}):t.brokenInternalLinks.length>0?a({id:"linking-broken-internal",name:"Broken Internal Links",category:"links",severity:"error"},"fail",`${t.brokenInternalLinks.length} broken internal link(s)`,{recommendation:"Fix or remove broken internal links",evidence:{found:t.brokenInternalLinks.slice(0,5),expected:"0 broken links",impact:"Broken links waste crawl budget and harm user experience"}}):a({id:"linking-broken-internal",name:"Broken Internal Links",category:"links",severity:"error"},"pass","No broken internal links")},{id:"linking-redirect-chains",name:"Redirect Chains",category:"links",severity:"warning",description:"Internal links should not go through redirect chains",check:t=>t.redirectChainLinks===void 0?a({id:"linking-redirect-chains",name:"Redirect Chains",category:"links",severity:"warning"},"info","Not applicable (redirect chain data unavailable)",{recommendation:"This rule checks for redirect chains that slow crawling and lose link equity"}):t.redirectChainLinks.length>0?a({id:"linking-redirect-chains",name:"Redirect Chains",category:"links",severity:"warning"},"warn",`${t.redirectChainLinks.length} link(s) go through redirects`,{recommendation:"Update links to point to final destination URLs",evidence:{found:t.redirectChainLinks.slice(0,5).map(e=>`${e.from} \u2192 ${e.to} (${e.hops} hops)`),expected:"0 redirect chain links",impact:"Redirect chains slow down crawling and lose link equity"}}):a({id:"linking-redirect-chains",name:"Redirect Chains",category:"links",severity:"warning"},"pass","No redirect chain links")},{id:"linking-nofollow-internal",name:"Nofollow Internal Links",category:"links",severity:"warning",description:"Internal links should not use nofollow",check:t=>{if(!t.allLinks)return a({id:"linking-nofollow-internal",name:"Nofollow Internal Links",category:"links",severity:"warning"},"info","Not applicable (links data unavailable)",{recommendation:"This rule checks for nofollow attributes on internal links which waste PageRank"});let e=t.allLinks.filter(r=>{var n;return r.type==="internal"&&((n=r.rel)==null?void 0:n.includes("nofollow"))});return e.length>0?a({id:"linking-nofollow-internal",name:"Nofollow Internal Links",category:"links",severity:"warning"},"warn",`${e.length} internal link(s) have nofollow`,{recommendation:"Remove nofollow from internal links",evidence:{found:e.slice(0,3).map(r=>r.href),impact:"Nofollow on internal links wastes PageRank",learnMore:"https://developers.google.com/search/docs/crawling-indexing/qualify-outbound-links"}}):a({id:"linking-nofollow-internal",name:"Nofollow Internal Links",category:"links",severity:"warning"},"pass","No nofollow on internal links")}},{id:"linking-click-depth",name:"Click Depth",category:"links",severity:"info",description:"Important pages should be reachable in few clicks",check:t=>{if(t.pageClickDepth===void 0)return a({id:"linking-click-depth",name:"Click Depth",category:"links",severity:"info"},"info","Not applicable (click depth data unavailable)",{recommendation:"This rule checks how many clicks from homepage, affecting crawl priority and link equity"});let e=t.pageClickDepth;return e>4?a({id:"linking-click-depth",name:"Click Depth",category:"links",severity:"info"},"warn",`Page is ${e} clicks from homepage`,{recommendation:"Improve site architecture for better accessibility",evidence:{found:`${e} clicks deep`,expected:"Under 4 clicks from homepage",impact:"Deep pages receive less crawl priority and link equity"}}):e>3?a({id:"linking-click-depth",name:"Click Depth",category:"links",severity:"info"},"info",`Page is ${e} clicks from homepage`,{recommendation:"Consider adding shortcuts to this page"}):a({id:"linking-click-depth",name:"Click Depth",category:"links",severity:"info"},"pass",`${e} click(s) from homepage`)}}];var Id=[{id:"bp-doctype",name:"HTML Doctype",category:"technical",severity:"error",description:"Page must have the HTML doctype",check:t=>t.hasDoctype===void 0?a({id:"bp-doctype",name:"HTML Doctype",category:"technical",severity:"error"},"info","Unable to check doctype (data unavailable)",{recommendation:"Ensure HTML content is properly fetched"}):t.hasDoctype?a({id:"bp-doctype",name:"HTML Doctype",category:"technical",severity:"error"},"pass","Page has HTML doctype"):a({id:"bp-doctype",name:"HTML Doctype",category:"technical",severity:"error"},"fail","Page is missing HTML doctype",{recommendation:"Add <!DOCTYPE html> at the start of the document",evidence:{expected:"<!DOCTYPE html>",impact:"Missing doctype triggers quirks mode in browsers",learnMore:"https://developer.mozilla.org/en-US/docs/Glossary/Doctype"}})},{id:"bp-charset",name:"Character Encoding",category:"technical",severity:"error",description:"Page should properly define charset",check:t=>t.hasCharset===void 0?a({id:"bp-charset",name:"Character Encoding",category:"technical",severity:"error"},"info","Unable to check charset (data unavailable)",{recommendation:"Ensure HTML content is properly fetched"}):t.hasCharset?t.charset&&t.charset.toLowerCase()!=="utf-8"?a({id:"bp-charset",name:"Character Encoding",category:"technical",severity:"error"},"warn",`Non-UTF-8 charset: ${t.charset}`,{value:t.charset,recommendation:"Use UTF-8 encoding for maximum compatibility",evidence:{found:t.charset,expected:"UTF-8"}}):a({id:"bp-charset",name:"Character Encoding",category:"technical",severity:"error"},"pass",`Charset: ${t.charset||"UTF-8"}`):a({id:"bp-charset",name:"Character Encoding",category:"technical",severity:"error"},"fail","Page is missing character encoding declaration",{recommendation:'Add <meta charset="UTF-8"> in the <head>',evidence:{expected:'<meta charset="UTF-8">',impact:"Characters may render incorrectly without charset declaration"}})},{id:"bp-http-status",name:"HTTP Status Code",category:"technical",severity:"error",description:"Page should have successful HTTP status code",check:t=>{if(t.httpStatusCode===void 0)return a({id:"bp-http-status",name:"HTTP Status Code",category:"technical",severity:"error"},"info","Unable to check HTTP status (data unavailable)",{recommendation:"Ensure the page request completed successfully"});let e=t.httpStatusCode;return e>=400?a({id:"bp-http-status",name:"HTTP Status Code",category:"technical",severity:"error"},"fail",`HTTP ${e} error response`,{value:e,recommendation:"Fix server configuration to return successful status codes",evidence:{found:e,expected:"200-299",impact:"Error pages will not be indexed by search engines"}}):e>=300?a({id:"bp-http-status",name:"HTTP Status Code",category:"technical",severity:"error"},"info",`HTTP ${e} redirect response`,{value:e,recommendation:"Redirects add latency; consider updating links to final URLs"}):a({id:"bp-http-status",name:"HTTP Status Code",category:"technical",severity:"error"},"pass",`HTTP ${e} OK`)}},{id:"bp-indexable",name:"Page Indexable",category:"technical",severity:"error",description:"Page should not be blocked from indexing",check:t=>{if(t.metaRobots===void 0)return a({id:"bp-indexable",name:"Page Indexable",category:"technical",severity:"error"},"info","Unable to check indexability (no robots meta)",{recommendation:"Check if the page has robots meta tags"});let e=Array.isArray(t.metaRobots)?t.metaRobots:[t.metaRobots];return e.some(n=>n.toLowerCase().includes("noindex")||n.toLowerCase().includes("none"))?a({id:"bp-indexable",name:"Page Indexable",category:"technical",severity:"error"},"fail","Page is blocked from indexing",{recommendation:"Remove noindex directive if this page should be searchable",evidence:{found:e.join(", "),expected:"No noindex directive",impact:"Page will not appear in search results"}}):a({id:"bp-indexable",name:"Page Indexable",category:"technical",severity:"error"},"pass","Page is indexable")}},{id:"bp-links-crawlable",name:"Crawlable Links",category:"links",severity:"warning",description:"Links should be crawlable by search engines",check:t=>{if(t.uncrawlableLinksCount===void 0)return a({id:"bp-links-crawlable",name:"Crawlable Links",category:"links",severity:"warning"},"info","Unable to check link crawlability (data unavailable)",{recommendation:"Ensure link analysis completed"});let e=t.uncrawlableLinksCount;return e>0?a({id:"bp-links-crawlable",name:"Crawlable Links",category:"links",severity:"warning"},"warn",`${e} link(s) are not crawlable`,{value:e,recommendation:"Use <a href> tags instead of JavaScript navigation for important links",evidence:{found:e,expected:0,impact:"Search engines cannot discover linked content",learnMore:"https://developers.google.com/search/docs/crawling-indexing/links-crawlable"}}):a({id:"bp-links-crawlable",name:"Crawlable Links",category:"links",severity:"warning"},"pass","All links are crawlable")}},{id:"bp-robots-txt",name:"Valid robots.txt",category:"technical",severity:"info",description:"robots.txt should be valid and accessible",check:t=>t.robotsTxtValid===void 0?a({id:"bp-robots-txt",name:"Valid robots.txt",category:"technical",severity:"info"},"info","Unable to check robots.txt (data unavailable)",{recommendation:"Check if robots.txt is accessible at /robots.txt"}):t.robotsTxtValid?a({id:"bp-robots-txt",name:"Valid robots.txt",category:"technical",severity:"info"},"pass","robots.txt is valid"):a({id:"bp-robots-txt",name:"Valid robots.txt",category:"technical",severity:"info"},"warn","robots.txt is invalid or inaccessible",{recommendation:"Ensure robots.txt is valid and returns 200 status",evidence:{found:t.robotsTxtError||"Invalid",expected:"Valid robots.txt",impact:"Invalid robots.txt may cause crawling issues",learnMore:"https://developers.google.com/search/docs/crawling-indexing/robots/intro"}})},{id:"bp-structured-data",name:"Structured Data",category:"structured-data",severity:"info",description:"Page should have valid structured data",check:t=>{if(t.structuredDataErrors===void 0)return a({id:"bp-structured-data",name:"Structured Data",category:"structured-data",severity:"info"},"info","Unable to check structured data (data unavailable)",{recommendation:"Ensure JSON-LD structured data analysis completed"});let e=t.structuredDataErrors;return e>0?a({id:"bp-structured-data",name:"Structured Data",category:"structured-data",severity:"info"},"warn",`${e} structured data error(s) found`,{value:e,recommendation:"Validate structured data using Google Rich Results Test",evidence:{found:e,expected:0,impact:"Invalid structured data may not generate rich results",learnMore:"https://search.google.com/test/rich-results"}}):t.jsonLdCount&&t.jsonLdCount>0?a({id:"bp-structured-data",name:"Structured Data",category:"structured-data",severity:"info"},"pass",`${t.jsonLdCount} structured data block(s) found`):a({id:"bp-structured-data",name:"Structured Data",category:"structured-data",severity:"info"},"info","No structured data found",{recommendation:"Add schema.org structured data for rich search results",evidence:{expected:'JSON-LD structured data in <script type="application/ld+json">',impact:"Structured data enables rich snippets like ratings, FAQs, and product info in search results",example:`<script type="application/ld+json">
|
|
399
|
+
}`,learnMore:"https://web.dev/articles/service-workers-registration"}})},{id:"manifest-installable",name:"PWA Installability",category:"technical",severity:"warning",description:"Check if the app meets minimum PWA installability requirements",check:t=>{if(!t.hasManifest)return a({id:"manifest-installable",name:"PWA Installability",category:"technical",severity:"warning"},"warn","Not installable: no manifest",{recommendation:"Add a web app manifest to enable PWA installation.",evidence:{impact:"PWA installability requires: manifest, HTTPS, service worker, 192x192 and 512x512 icons, name/short_name, start_url, display (standalone/fullscreen/minimal-ui).",learnMore:"https://web.dev/articles/install-criteria"}});let e=[];!t.manifestName&&!t.manifestShortName&&e.push("name or short_name"),t.manifestStartUrl||e.push("start_url"),(!t.manifestDisplay||!["standalone","fullscreen","minimal-ui"].includes(t.manifestDisplay))&&e.push("display (standalone/fullscreen/minimal-ui)");let r=t.manifestIconSizes||[];return r.includes(192)||e.push("192x192 icon"),r.includes(512)||e.push("512x512 icon"),t.hasServiceWorker||e.push("service worker"),e.length>0?a({id:"manifest-installable",name:"PWA Installability",category:"technical",severity:"warning"},"warn",`Missing requirements for installability: ${e.join(", ")}`,{recommendation:"Address the missing requirements to make your app installable.",evidence:{found:`Missing: ${e.join(", ")}`,expected:"All PWA installability requirements met",impact:"Users cannot install your app to their home screen without meeting these requirements.",learnMore:"https://web.dev/articles/install-criteria"}}):a({id:"manifest-installable",name:"PWA Installability",category:"technical",severity:"warning"},"pass","App meets PWA installability requirements")}}];var Ud=[{id:"social-og-image-size",name:"OG Image Size",category:"og",severity:"warning",description:"Open Graph images should meet minimum size requirements",check:t=>{if(!t.ogImage)return a({id:"social-og-image-size",name:"OG Image Size",category:"og",severity:"warning"},"info","Not applicable (no og:image)",{recommendation:"This rule checks og:image dimensions when present"});if(!t.ogImageDimensions)return a({id:"social-og-image-size",name:"OG Image Size",category:"og",severity:"warning"},"info","Not applicable (og:image dimensions not available)",{recommendation:"This rule checks if og:image meets minimum size requirements"});let{width:e,height:r}=t.ogImageDimensions,n=1200,i=630;return e<n||r<i?a({id:"social-og-image-size",name:"OG Image Size",category:"og",severity:"warning"},"warn",`OG image too small: ${e}x${r}`,{recommendation:"Use larger images for better social sharing",evidence:{found:`${e}x${r}px`,expected:`Minimum ${n}x${i}px`,impact:"Small images may appear cropped or blurry on social platforms",learnMore:"https://developers.facebook.com/docs/sharing/best-practices/"}}):a({id:"social-og-image-size",name:"OG Image Size",category:"og",severity:"warning"},"pass",`OG image: ${e}x${r}px`)}},{id:"social-og-image-aspect-ratio",name:"OG Image Aspect Ratio",category:"og",severity:"info",description:"Open Graph images should use optimal aspect ratio",check:t=>{if(!t.ogImageDimensions)return a({id:"social-og-image-aspect-ratio",name:"OG Image Aspect Ratio",category:"og",severity:"info"},"info","Not applicable (og:image dimensions not available)",{recommendation:"This rule checks og:image aspect ratio when dimensions are available"});let{width:e,height:r}=t.ogImageDimensions,n=e/r;return Math.abs(n-1.91)>.1?a({id:"social-og-image-aspect-ratio",name:"OG Image Aspect Ratio",category:"og",severity:"info"},"info",`OG image ratio: ${n.toFixed(2)}:1`,{recommendation:"Use 1.91:1 aspect ratio for optimal display",evidence:{found:`${n.toFixed(2)}:1`,expected:"1.91:1 (e.g., 1200x628)",impact:"Non-optimal ratios may be cropped on social platforms"}}):a({id:"social-og-image-aspect-ratio",name:"OG Image Aspect Ratio",category:"og",severity:"info"},"pass","OG image has optimal aspect ratio")}},{id:"social-og-locale",name:"OG Locale",category:"og",severity:"info",description:"Open Graph should specify content locale",check:t=>t.ogLocale===void 0?a({id:"social-og-locale",name:"OG Locale",category:"og",severity:"info"},"info","Not applicable (og:locale property not checked)",{recommendation:"This rule checks og:locale when locale data is available"}):t.ogLocale?a({id:"social-og-locale",name:"OG Locale",category:"og",severity:"info"},"pass",`Locale: ${t.ogLocale}`):a({id:"social-og-locale",name:"OG Locale",category:"og",severity:"info"},"info","Missing og:locale",{recommendation:"Add og:locale for international content",evidence:{expected:'<meta property="og:locale" content="en_US">',impact:"Helps Facebook display content to correct language audience"}})},{id:"social-og-locale-alternate",name:"OG Locale Alternates",category:"og",severity:"info",description:"Multi-language sites should specify alternate locales",check:t=>t.ogLocale?!t.hreflangTags||t.hreflangTags.length<=1?a({id:"social-og-locale-alternate",name:"OG Locale Alternates",category:"og",severity:"info"},"info","Not applicable (single language site)",{recommendation:"This rule checks for og:locale:alternate on multi-language sites"}):t.ogLocaleAlternate===void 0?a({id:"social-og-locale-alternate",name:"OG Locale Alternates",category:"og",severity:"info"},"info","Not applicable (og:locale:alternate property not checked)",{recommendation:"This rule checks og:locale:alternate when data is available"}):!t.ogLocaleAlternate||t.ogLocaleAlternate.length===0?a({id:"social-og-locale-alternate",name:"OG Locale Alternates",category:"og",severity:"info"},"info","Missing og:locale:alternate for multi-language site",{recommendation:"Add og:locale:alternate for other language versions",evidence:{found:`${t.hreflangTags.length} languages but no og:locale:alternate`,expected:'<meta property="og:locale:alternate" content="es_ES">',impact:"Helps Facebook understand available language versions"}}):a({id:"social-og-locale-alternate",name:"OG Locale Alternates",category:"og",severity:"info"},"pass",`${t.ogLocaleAlternate.length} alternate locale(s)`):a({id:"social-og-locale-alternate",name:"OG Locale Alternates",category:"og",severity:"info"},"info","Not applicable (no og:locale)",{recommendation:"This rule checks for alternate locales when og:locale is present"})},{id:"social-og-article-tags",name:"OG Article Tags",category:"og",severity:"info",description:"Article pages should include article-specific Open Graph tags",check:t=>{if(t.ogType!=="article")return a({id:"social-og-article-tags",name:"OG Article Tags",category:"og",severity:"info"},"info","Not applicable (page is not an article)",{recommendation:"This rule checks article-specific Open Graph tags for article pages"});if(t.ogArticleTags===void 0)return a({id:"social-og-article-tags",name:"OG Article Tags",category:"og",severity:"info"},"info","Not applicable (article tags property not checked)",{recommendation:"This rule checks article-specific Open Graph tags when data is available"});let e=[];return t.ogArticlePublishedTime||e.push("article:published_time"),t.ogArticleAuthor||e.push("article:author"),e.length>0?a({id:"social-og-article-tags",name:"OG Article Tags",category:"og",severity:"info"},"info",`Missing article OG tags: ${e.join(", ")}`,{recommendation:"Add article-specific Open Graph tags",evidence:{found:e,expected:["article:published_time","article:author","article:section","article:tag"],impact:"Rich article metadata improves social sharing appearance"}}):a({id:"social-og-article-tags",name:"OG Article Tags",category:"og",severity:"info"},"pass","Article OG tags present")}},{id:"social-twitter-large-image",name:"Twitter Large Image",category:"twitter",severity:"info",description:"Consider using summary_large_image for better visibility",check:t=>t.twitterCard?t.twitterCard==="summary"?a({id:"social-twitter-large-image",name:"Twitter Large Image",category:"twitter",severity:"info"},"info","Using summary card (small image)",{recommendation:"Consider summary_large_image for more visual impact",evidence:{found:"summary",expected:"summary_large_image for content-rich pages",impact:"Large images get 2x more engagement on Twitter"}}):a({id:"social-twitter-large-image",name:"Twitter Large Image",category:"twitter",severity:"info"},"pass",`Twitter card: ${t.twitterCard}`):a({id:"social-twitter-large-image",name:"Twitter Large Image",category:"twitter",severity:"info"},"info","Not applicable (no twitter:card)",{recommendation:"This rule checks Twitter card type when present"})},{id:"social-twitter-creator",name:"Twitter Creator",category:"twitter",severity:"info",description:"Article pages should include twitter:creator for attribution",check:t=>t.twitterCard?t.ogType!=="article"?a({id:"social-twitter-creator",name:"Twitter Creator",category:"twitter",severity:"info"},"info","Not applicable (page is not an article)",{recommendation:"This rule checks twitter:creator for article pages"}):t.twitterCreator===void 0?a({id:"social-twitter-creator",name:"Twitter Creator",category:"twitter",severity:"info"},"info","Not applicable (twitter:creator property not checked)",{recommendation:"This rule checks twitter:creator when data is available"}):t.twitterCreator?a({id:"social-twitter-creator",name:"Twitter Creator",category:"twitter",severity:"info"},"pass",`Creator: ${t.twitterCreator}`):a({id:"social-twitter-creator",name:"Twitter Creator",category:"twitter",severity:"info"},"info","Missing twitter:creator on article",{recommendation:"Add twitter:creator for author attribution",evidence:{expected:'<meta name="twitter:creator" content="@username">',impact:"Attributes content to author and enables analytics"}}):a({id:"social-twitter-creator",name:"Twitter Creator",category:"twitter",severity:"info"},"info","Not applicable (no twitter:card)",{recommendation:"This rule checks twitter:creator when Twitter Card is present"})},{id:"social-twitter-image-alt",name:"Twitter Image Alt",category:"twitter",severity:"info",description:"Twitter images should have alt text for accessibility",check:t=>t.twitterImage?t.twitterImageAlt===void 0?a({id:"social-twitter-image-alt",name:"Twitter Image Alt",category:"twitter",severity:"info"},"info","Not applicable (twitter:image:alt property not checked)",{recommendation:"This rule checks twitter:image:alt when data is available"}):t.twitterImageAlt?a({id:"social-twitter-image-alt",name:"Twitter Image Alt",category:"twitter",severity:"info"},"pass","Twitter image has alt text"):a({id:"social-twitter-image-alt",name:"Twitter Image Alt",category:"twitter",severity:"info"},"info","Missing twitter:image:alt",{recommendation:"Add alt text for Twitter card image",evidence:{expected:'<meta name="twitter:image:alt" content="Description of image">',impact:"Improves accessibility for screen reader users"}}):a({id:"social-twitter-image-alt",name:"Twitter Image Alt",category:"twitter",severity:"info"},"info","Not applicable (no twitter:image)",{recommendation:"This rule checks twitter:image:alt when Twitter image is present"})},{id:"social-linkedin-author",name:"LinkedIn Author",category:"og",severity:"info",description:"Professional content should include author information",check:t=>t.ogType!=="article"?a({id:"social-linkedin-author",name:"LinkedIn Author",category:"og",severity:"info"},"info","Not applicable (page is not an article)",{recommendation:"This rule checks author information for article pages"}):t.linkedinAuthor===void 0&&t.ogArticleAuthor===void 0?a({id:"social-linkedin-author",name:"LinkedIn Author",category:"og",severity:"info"},"info","Not applicable (author properties not checked)",{recommendation:"This rule checks author information when data is available"}):!t.linkedinAuthor&&!t.ogArticleAuthor?a({id:"social-linkedin-author",name:"LinkedIn Author",category:"og",severity:"info"},"info","No author specified for LinkedIn",{recommendation:"Add author for professional network sharing",evidence:{expected:'<meta property="article:author" content="https://linkedin.com/in/author">',impact:"LinkedIn uses author info for professional attribution"}}):a({id:"social-linkedin-author",name:"LinkedIn Author",category:"og",severity:"info"},"pass","Author information present")},{id:"social-pinterest-rich-pins",name:"Pinterest Rich Pins",category:"og",severity:"info",description:"E-commerce and recipe sites should support Pinterest Rich Pins",check:t=>!t.isProductPage&&t.ogType!=="recipe"?a({id:"social-pinterest-rich-pins",name:"Pinterest Rich Pins",category:"og",severity:"info"},"info","Not applicable (page is not a product or recipe)",{recommendation:"This rule checks Pinterest Rich Pin support for e-commerce and recipe sites"}):t.pinterestRichPinSupport===void 0?a({id:"social-pinterest-rich-pins",name:"Pinterest Rich Pins",category:"og",severity:"info"},"info","Not applicable (Pinterest Rich Pin support not checked)",{recommendation:"This rule checks for structured data when data is available"}):t.pinterestRichPinSupport?a({id:"social-pinterest-rich-pins",name:"Pinterest Rich Pins",category:"og",severity:"info"},"pass","Pinterest Rich Pins supported"):a({id:"social-pinterest-rich-pins",name:"Pinterest Rich Pins",category:"og",severity:"info"},"info","No Pinterest Rich Pin support detected",{recommendation:"Add structured data for Pinterest Rich Pins",evidence:{expected:"Product or Recipe schema.org markup",impact:"Rich Pins show real-time pricing and availability",learnMore:"https://developers.pinterest.com/docs/rich-pins/overview/"}})},{id:"social-pinterest-nopin",name:"Pinterest Nopin",category:"og",severity:"info",description:"Check for intentional Pinterest blocking",check:t=>t.hasPinterestNopin===void 0?a({id:"social-pinterest-nopin",name:"Pinterest Nopin",category:"og",severity:"info"},"info","Not applicable (Pinterest nopin property not checked)",{recommendation:"This rule checks for Pinterest blocking when data is available"}):t.hasPinterestNopin?a({id:"social-pinterest-nopin",name:"Pinterest Nopin",category:"og",severity:"info"},"info","Pinterest pinning is disabled",{evidence:{found:'data-pin-nopin or <meta name="pinterest" content="nopin">',impact:"Images cannot be pinned to Pinterest"}}):a({id:"social-pinterest-nopin",name:"Pinterest Nopin",category:"og",severity:"info"},"info","Not applicable (Pinterest pinning is allowed)",{recommendation:"This rule checks for intentional Pinterest blocking"})},{id:"social-share-completeness",name:"Social Share Completeness",category:"og",severity:"warning",description:"Pages should have complete social sharing metadata",check:t=>{let e=t.ogTitle&&t.ogDescription&&t.ogImage,r=t.twitterCard&&(t.twitterTitle||t.ogTitle);return!e&&!r?a({id:"social-share-completeness",name:"Social Share Completeness",category:"og",severity:"warning"},"warn","Missing social sharing metadata",{recommendation:"Add Open Graph and Twitter Card tags",evidence:{expected:["og:title","og:description","og:image","twitter:card"],impact:"Without metadata, social platforms use generic previews"}}):e&&!r?a({id:"social-share-completeness",name:"Social Share Completeness",category:"og",severity:"warning"},"info","Has Open Graph but missing Twitter Card",{recommendation:"Add twitter:card for better Twitter previews"}):a({id:"social-share-completeness",name:"Social Share Completeness",category:"og",severity:"warning"},"pass","Complete social metadata")}},{id:"social-og-title-length",name:"OG Title Length",category:"og",severity:"info",description:"Open Graph titles should be optimized for social platforms",check:t=>{if(!t.ogTitle)return a({id:"social-og-title-length",name:"OG Title Length",category:"og",severity:"info"},"info","Not applicable (no og:title)",{recommendation:"This rule checks og:title length for social platforms when present"});let e=t.ogTitle.length,r=60;return e>r?a({id:"social-og-title-length",name:"OG Title Length",category:"og",severity:"info"},"info",`OG title too long: ${e} chars`,{recommendation:"Shorten og:title for better display",evidence:{found:e,expected:`Under ${r} characters`,impact:"Long titles may be truncated on social platforms"}}):a({id:"social-og-title-length",name:"OG Title Length",category:"og",severity:"info"},"pass",`OG title: ${e} chars`)}},{id:"social-og-description-length",name:"OG Description Length",category:"og",severity:"info",description:"Open Graph descriptions should be optimized for social platforms",check:t=>{if(!t.ogDescription)return a({id:"social-og-description-length",name:"OG Description Length",category:"og",severity:"info"},"info","Not applicable (no og:description)",{recommendation:"This rule checks og:description length for social platforms when present"});let e=t.ogDescription.length,r=55,n=200;return e<r?a({id:"social-og-description-length",name:"OG Description Length",category:"og",severity:"info"},"info",`OG description too short: ${e} chars`,{recommendation:"Expand og:description for better context",evidence:{found:e,expected:`${r}-${n} characters`}}):e>n?a({id:"social-og-description-length",name:"OG Description Length",category:"og",severity:"info"},"info",`OG description long: ${e} chars`,{evidence:{found:e,expected:`${r}-${n} characters (may be truncated)`}}):a({id:"social-og-description-length",name:"OG Description Length",category:"og",severity:"info"},"pass",`OG description: ${e} chars`)}},{id:"social-fb-app-id",name:"Facebook App ID",category:"og",severity:"info",description:"Facebook App ID enables Insights and domain verification",check:t=>t.fbAppId===void 0?a({id:"social-fb-app-id",name:"Facebook App ID",category:"og",severity:"info"},"info","Not applicable (Facebook App ID property not checked)",{recommendation:"This rule checks for fb:app_id when data is available"}):t.fbAppId?a({id:"social-fb-app-id",name:"Facebook App ID",category:"og",severity:"info"},"pass","Facebook App ID present"):a({id:"social-fb-app-id",name:"Facebook App ID",category:"og",severity:"info"},"info","No Facebook App ID",{recommendation:"Add fb:app_id for Facebook Insights",evidence:{expected:'<meta property="fb:app_id" content="your-app-id">',impact:"Enables Facebook Insights and domain verification"}})},{id:"social-links-presence",name:"Social Media Links",category:"og",severity:"info",description:"Site should link to social media profiles",check:t=>t.socialLinksFound&&t.socialLinksFound.length>0?a({id:"social-links-presence",name:"Social Media Links",category:"og",severity:"info"},"pass",`Found ${t.socialLinksFound.length} social media profile link(s)`,{value:t.socialLinksFound.length,evidence:{found:t.socialLinksFound.slice(0,5)}}):a({id:"social-links-presence",name:"Social Media Links",category:"og",severity:"info"},"info","No social media profile links found",{recommendation:"Link to your Facebook, Twitter, Instagram, etc. profiles to build trust."})},{id:"social-links-accessibility",name:"Social Links Accessibility",category:"accessibility",severity:"warning",description:"Social media links should have accessible labels for screen readers",check:t=>{var e;if(!t.totalSocialLinks||t.totalSocialLinks===0)return a({id:"social-links-accessibility",name:"Social Links Accessibility",category:"accessibility",severity:"warning"},"info","Not applicable (no social links found)",{recommendation:"This rule checks accessibility of social media links when present"});if(t.socialLinksWithoutAccessibility===void 0)return a({id:"social-links-accessibility",name:"Social Links Accessibility",category:"accessibility",severity:"warning"},"info","Not applicable (social link accessibility not checked)",{recommendation:"This rule checks for accessible labels on social links when data is available"});if(t.socialLinksWithoutAccessibility>0){let r=(e=t.socialLinkDetails)==null?void 0:e.filter(n=>!n.hasAccessibility).map(n=>n.platform).slice(0,5);return a({id:"social-links-accessibility",name:"Social Links Accessibility",category:"accessibility",severity:"warning"},"warn",`${t.socialLinksWithoutAccessibility} social link(s) missing accessible labels`,{recommendation:"Add aria-label, title, or visible text to social media links",evidence:{found:t.socialLinksWithoutAccessibility,expected:"All social links should have accessible labels",impact:"Screen reader users cannot identify the purpose of icon-only social links",example:'<a href="https://twitter.com/..." aria-label="Follow us on Twitter">',issue:r!=null&&r.length?`Inaccessible: ${r.join(", ")}`:void 0}})}return a({id:"social-links-accessibility",name:"Social Links Accessibility",category:"accessibility",severity:"warning"},"pass","All social links have accessible labels")}},{id:"social-links-security",name:"Social Links Security",category:"security",severity:"warning",description:'External social links should use rel="noopener" to prevent security vulnerabilities',check:t=>{var n;if(!t.totalSocialLinks||t.totalSocialLinks===0)return a({id:"social-links-security",name:"Social Links Security",category:"security",severity:"warning"},"info","Not applicable (no social links found)",{recommendation:"This rule checks security attributes of social media links when present"});if(t.socialLinksWithoutNoopener===void 0)return a({id:"social-links-security",name:"Social Links Security",category:"security",severity:"warning"},"info","Not applicable (social link security not checked)",{recommendation:'This rule checks for rel="noopener" on social links when data is available'});let e=((n=t.socialLinkDetails)==null?void 0:n.filter(i=>i.hasNewTab))||[];if(e.length===0)return a({id:"social-links-security",name:"Social Links Security",category:"security",severity:"warning"},"info",'Not applicable (no social links with target="_blank")',{recommendation:"This rule checks security for social links that open in new tabs"});let r=e.filter(i=>!i.hasNoopener);return r.length>0?a({id:"social-links-security",name:"Social Links Security",category:"security",severity:"warning"},"warn",`${r.length} social link(s) with target="_blank" missing rel="noopener"`,{recommendation:'Add rel="noopener noreferrer" to external links with target="_blank"',evidence:{found:r.length,expected:'All target="_blank" links should have rel="noopener"',impact:"Without noopener, the opened page can access window.opener and potentially redirect your page (tabnabbing attack)",example:'<a href="https://twitter.com/..." target="_blank" rel="noopener noreferrer">',issue:r.slice(0,3).map(i=>i.platform).join(", ")}}):a({id:"social-links-security",name:"Social Links Security",category:"security",severity:"warning"},"pass","All social links opening in new tabs have proper security attributes")}},{id:"social-links-new-tab",name:"Social Links New Tab",category:"og",severity:"info",description:"Social media links should open in a new tab to keep users on your site",check:t=>{var e;if(!t.totalSocialLinks||t.totalSocialLinks===0)return a({id:"social-links-new-tab",name:"Social Links New Tab",category:"og",severity:"info"},"info","Not applicable (no social links found)",{recommendation:"This rule checks if social links open in new tabs when present"});if(t.socialLinksWithoutNewTab===void 0)return a({id:"social-links-new-tab",name:"Social Links New Tab",category:"og",severity:"info"},"info","Not applicable (social link new tab property not checked)",{recommendation:'This rule checks target="_blank" on social links when data is available'});if(t.socialLinksWithoutNewTab>0){let r=(e=t.socialLinkDetails)==null?void 0:e.filter(n=>!n.hasNewTab).map(n=>n.platform).slice(0,5);return a({id:"social-links-new-tab",name:"Social Links New Tab",category:"og",severity:"info"},"info",`${t.socialLinksWithoutNewTab} social link(s) don't open in new tab`,{recommendation:'Consider using target="_blank" for social links to keep users on your site',evidence:{found:t.socialLinksWithoutNewTab,expected:"Social links typically open in new tabs",impact:"Users leaving your site may not return; opening in new tab preserves their session",example:'<a href="https://twitter.com/..." target="_blank" rel="noopener noreferrer">',issue:r!=null&&r.length?`Without new tab: ${r.join(", ")}`:void 0}})}return a({id:"social-links-new-tab",name:"Social Links New Tab",category:"og",severity:"info"},"pass","All social links open in new tabs")}},{id:"social-links-placement",name:"Social Links Placement",category:"og",severity:"info",description:"Social links should be placed in header or footer for easy discovery",check:t=>{if(!t.totalSocialLinks||t.totalSocialLinks===0)return a({id:"social-links-placement",name:"Social Links Placement",category:"og",severity:"info"},"info","Not applicable (no social links found)",{recommendation:"This rule checks social link placement when present"});if(t.socialLinksInHeader===void 0&&t.socialLinksInFooter===void 0)return a({id:"social-links-placement",name:"Social Links Placement",category:"og",severity:"info"},"info","Not applicable (social link placement not checked)",{recommendation:"This rule checks social link placement when data is available"});if((t.socialLinksInHeader||0)+(t.socialLinksInFooter||0)===0)return a({id:"social-links-placement",name:"Social Links Placement",category:"og",severity:"info"},"info","Social links not found in header or footer",{recommendation:"Place social media links in header or footer for consistent visibility",evidence:{found:"Social links only in body content",expected:"Social links in header and/or footer",impact:"Users expect to find social links in standard locations; hidden links reduce engagement"}});let r=[];return t.socialLinksInHeader&&t.socialLinksInHeader>0&&r.push(`header (${t.socialLinksInHeader})`),t.socialLinksInFooter&&t.socialLinksInFooter>0&&r.push(`footer (${t.socialLinksInFooter})`),a({id:"social-links-placement",name:"Social Links Placement",category:"og",severity:"info"},"pass",`Social links found in ${r.join(" and ")}`)}},{id:"social-links-diversity",name:"Social Platform Diversity",category:"og",severity:"info",description:"Consider linking to multiple social platforms for broader reach",check:t=>{if(!t.platformsFound||t.platformsFound.length===0)return a({id:"social-links-diversity",name:"Social Platform Diversity",category:"og",severity:"info"},"info","Not applicable (no social platforms found)",{recommendation:"This rule checks social platform diversity when social links are present"});let e=["facebook","twitter","instagram","linkedin","youtube"],r=t.platformsFound.filter(n=>e.includes(n));return t.platformsFound.length===1?a({id:"social-links-diversity",name:"Social Platform Diversity",category:"og",severity:"info"},"info",`Only 1 social platform linked: ${t.platformsFound[0]}`,{recommendation:"Consider linking to additional relevant social platforms",evidence:{found:t.platformsFound,expected:"Multiple social platforms for broader audience reach",impact:"Different audiences prefer different platforms; diversification increases reach"}}):r.length>=2?a({id:"social-links-diversity",name:"Social Platform Diversity",category:"og",severity:"info"},"pass",`Found ${t.platformsFound.length} social platform(s): ${t.platformsFound.slice(0,5).join(", ")}`,{evidence:{found:t.platformsFound}}):a({id:"social-links-diversity",name:"Social Platform Diversity",category:"og",severity:"info"},"info",`${t.platformsFound.length} social platform(s) linked`,{evidence:{found:t.platformsFound},recommendation:"Consider adding major platforms like Facebook, Twitter/X, LinkedIn, or Instagram"})}},{id:"social-profile-consistency",name:"Social Profile Consistency",category:"og",severity:"info",description:"Social meta tags should be consistent with actual social profile links",check:t=>{var n,i;if(!t.twitterSite&&!((n=t.platformsFound)!=null&&n.includes("twitter")))return a({id:"social-profile-consistency",name:"Social Profile Consistency",category:"og",severity:"info"},"info","Not applicable (no Twitter meta or links)",{recommendation:"This rule checks consistency between social meta tags and profile links"});let e=!!t.twitterSite,r=(i=t.platformsFound)==null?void 0:i.includes("twitter");return e&&!r?a({id:"social-profile-consistency",name:"Social Profile Consistency",category:"og",severity:"info"},"info","twitter:site is set but no Twitter profile link found",{recommendation:"Add a link to your Twitter profile for consistency",evidence:{found:`twitter:site: ${t.twitterSite}`,expected:"Matching Twitter profile link on page",impact:"Users may want to follow your Twitter account directly from your site"}}):!e&&r?a({id:"social-profile-consistency",name:"Social Profile Consistency",category:"og",severity:"info"},"info","Twitter profile linked but twitter:site meta tag is missing",{recommendation:"Add twitter:site meta tag for proper Twitter Card attribution",evidence:{expected:'<meta name="twitter:site" content="@yourusername">',impact:"Twitter Cards will not show your @username when shared"}}):a({id:"social-profile-consistency",name:"Social Profile Consistency",category:"og",severity:"info"},"pass","Social meta tags are consistent with profile links")}}];var Id=[{id:"linking-internal-count",name:"Internal Link Count",category:"links",severity:"warning",description:"Pages should have a healthy number of internal links",check:t=>{if(t.internalLinks===void 0)return a({id:"linking-internal-count",name:"Internal Link Count",category:"links",severity:"warning"},"info","Not applicable (internal links data unavailable)",{recommendation:"This rule checks internal link count to ensure proper site navigation and link equity distribution"});let e=t.internalLinks;return e===0?a({id:"linking-internal-count",name:"Internal Link Count",category:"links",severity:"warning"},"warn","No internal links found",{recommendation:"Add internal links to improve navigation and crawlability",evidence:{found:0,expected:"At least 3-5 internal links per page",impact:"Pages without internal links are harder to discover and may not pass link equity"}}):e<3?a({id:"linking-internal-count",name:"Internal Link Count",category:"links",severity:"warning"},"info",`Only ${e} internal link(s)`,{recommendation:"Consider adding more internal links",evidence:{found:e,expected:"At least 3-5 internal links"}}):a({id:"linking-internal-count",name:"Internal Link Count",category:"links",severity:"warning"},"pass",`${e} internal links`)}},{id:"linking-internal-ratio",name:"Internal/External Link Ratio",category:"links",severity:"info",description:"Pages should have more internal than external links",check:t=>{if(t.internalLinks===void 0||t.externalLinks===void 0)return a({id:"linking-internal-ratio",name:"Internal/External Link Ratio",category:"links",severity:"info"},"info","Not applicable (link data unavailable)",{recommendation:"This rule checks the balance between internal and external links"});if(t.totalLinks===void 0||t.totalLinks===0)return a({id:"linking-internal-ratio",name:"Internal/External Link Ratio",category:"links",severity:"info"},"info","Not applicable (no links detected)",{recommendation:"This rule requires at least some links to analyze the internal/external ratio"});let e=t.internalLinks,r=t.externalLinks,n=e/(r||1);return r>e&&r>5?a({id:"linking-internal-ratio",name:"Internal/External Link Ratio",category:"links",severity:"info"},"info",`More external (${r}) than internal (${e}) links`,{recommendation:"Consider adding more internal links for better link equity",evidence:{found:`${e} internal, ${r} external`,expected:"Internal links should exceed external links",impact:"External links pass PageRank to other sites"}}):a({id:"linking-internal-ratio",name:"Internal/External Link Ratio",category:"links",severity:"info"},"pass",`Ratio: ${n.toFixed(1)}:1 (internal:external)`)}},{id:"linking-anchor-diversity",name:"Anchor Text Diversity",category:"links",severity:"info",description:"Internal links should use diverse, descriptive anchor text",check:t=>{if(!t.allLinks||t.allLinks.length===0)return a({id:"linking-anchor-diversity",name:"Anchor Text Diversity",category:"links",severity:"info"},"info","Not applicable (no links detected)",{recommendation:"This rule checks anchor text diversity to prevent over-optimization"});let e=t.allLinks.filter(i=>i.type==="internal");if(e.length<3)return a({id:"linking-anchor-diversity",name:"Anchor Text Diversity",category:"links",severity:"info"},"info","Not applicable (insufficient internal links)",{recommendation:"This rule requires at least 3 internal links to analyze anchor text diversity"});let r={};for(let i of e){let o=(i.text||"").toLowerCase().trim();o&&o.length>2&&(r[o]=(r[o]||0)+1)}let n=Object.entries(r).filter(([i,o])=>o>=3).map(([i,o])=>`"${i}" (${o}x)`);return n.length>0?a({id:"linking-anchor-diversity",name:"Anchor Text Diversity",category:"links",severity:"info"},"info","Some anchor texts overused",{recommendation:"Vary anchor text for better SEO signal distribution",evidence:{found:n.slice(0,3),impact:"Repetitive anchors may look spammy to search engines"}}):a({id:"linking-anchor-diversity",name:"Anchor Text Diversity",category:"links",severity:"info"},"pass","Good anchor text diversity")}},{id:"linking-deep-links",name:"Deep Linking",category:"links",severity:"info",description:"Pages should link to deep content, not just homepage",check:t=>{if(!t.allLinks||t.allLinks.length===0)return a({id:"linking-deep-links",name:"Deep Linking",category:"links",severity:"info"},"info","Not applicable (no links detected)",{recommendation:"This rule checks for deep linking patterns to ensure inner pages are properly linked"});let e=t.allLinks.filter(o=>o.type==="internal");if(e.length===0)return a({id:"linking-deep-links",name:"Deep Linking",category:"links",severity:"info"},"info","Not applicable (no internal links detected)",{recommendation:"This rule requires internal links to analyze deep linking patterns"});let r=0,n=0;for(let o of e)try{let s=new URL(o.href,t.url);s.pathname==="/"||s.pathname===""?r++:n++}catch{continue}let i=n/e.length;return r>n&&e.length>5?a({id:"linking-deep-links",name:"Deep Linking",category:"links",severity:"info"},"info","Most internal links go to homepage",{recommendation:"Add more links to inner pages",evidence:{found:`${r} homepage links, ${n} deep links`,expected:"More deep links than homepage links",impact:"Deep linking improves crawlability of inner pages"}}):a({id:"linking-deep-links",name:"Deep Linking",category:"links",severity:"info"},"pass",`${Math.round(i*100)}% deep links`)}},{id:"linking-nav-links",name:"Navigation Links",category:"links",severity:"info",description:"Check for proper navigation link structure",check:t=>t.hasNav?t.navLinkCount===void 0?a({id:"linking-nav-links",name:"Navigation Links",category:"links",severity:"info"},"info","Not applicable (navigation link count unavailable)",{recommendation:"This rule checks the number of links in navigation elements"}):t.navLinkCount===0?a({id:"linking-nav-links",name:"Navigation Links",category:"links",severity:"info"},"warn","Navigation element has no links",{recommendation:"Add links to navigation for user experience and SEO",evidence:{found:"<nav> element with no links",expected:"Navigation should contain meaningful links"}}):t.navLinkCount>20?a({id:"linking-nav-links",name:"Navigation Links",category:"links",severity:"info"},"info",`Navigation has ${t.navLinkCount} links (high)`,{recommendation:"Consider simplifying navigation",evidence:{found:t.navLinkCount,expected:"Under 20 links for optimal UX",impact:"Too many nav links may dilute link equity"}}):a({id:"linking-nav-links",name:"Navigation Links",category:"links",severity:"info"},"pass",`${t.navLinkCount} navigation links`):a({id:"linking-nav-links",name:"Navigation Links",category:"links",severity:"info"},"info","Not applicable (no navigation element detected)",{recommendation:"This rule checks navigation link structure when a <nav> element is present"})},{id:"linking-footer-links",name:"Footer Links",category:"links",severity:"info",description:"Footer should contain important site-wide links",check:t=>t.hasFooter?t.footerLinkCount===void 0?a({id:"linking-footer-links",name:"Footer Links",category:"links",severity:"info"},"info","Not applicable (footer link count unavailable)",{recommendation:"This rule checks the number of links in footer elements"}):t.footerLinkCount===0?a({id:"linking-footer-links",name:"Footer Links",category:"links",severity:"info"},"info","Footer has no links",{recommendation:"Add important links to footer",evidence:{expected:"Links to privacy policy, terms, contact, sitemap"}}):t.footerLinkCount>50?a({id:"linking-footer-links",name:"Footer Links",category:"links",severity:"info"},"info",`Footer has ${t.footerLinkCount} links (excessive)`,{recommendation:"Reduce footer links to essential pages",evidence:{found:t.footerLinkCount,impact:"Excessive footer links may be seen as link spam"}}):a({id:"linking-footer-links",name:"Footer Links",category:"links",severity:"info"},"pass",`${t.footerLinkCount} footer links`):a({id:"linking-footer-links",name:"Footer Links",category:"links",severity:"info"},"info","Not applicable (no footer element detected)",{recommendation:"This rule checks footer link structure when a <footer> element is present"})},{id:"linking-contextual",name:"Contextual Links",category:"links",severity:"info",description:"Check for in-content contextual links",check:t=>{if(t.contextualLinkCount===void 0)return a({id:"linking-contextual",name:"Contextual Links",category:"links",severity:"info"},"info","Not applicable (contextual link count unavailable)",{recommendation:"This rule checks for in-content contextual links that pass more link equity"});if(!t.wordCount||t.wordCount<300)return a({id:"linking-contextual",name:"Contextual Links",category:"links",severity:"info"},"info","Not applicable (insufficient content for contextual link analysis)",{recommendation:"This rule requires at least 300 words to analyze contextual link patterns"});let e=t.contextualLinkCount;if(e===0)return a({id:"linking-contextual",name:"Contextual Links",category:"links",severity:"info"},"info","No contextual links in content",{recommendation:"Add links within body content to related pages",evidence:{expected:"At least 2-3 contextual links per 500 words",impact:"Contextual links pass more link equity than navigation links"}});let r=e/t.wordCount*500;return r<1&&t.wordCount>500?a({id:"linking-contextual",name:"Contextual Links",category:"links",severity:"info"},"info",`Only ${e} contextual link(s) in ${t.wordCount} words`,{recommendation:"Add more in-content links",evidence:{found:`${r.toFixed(1)} links per 500 words`,expected:"2-3 links per 500 words"}}):a({id:"linking-contextual",name:"Contextual Links",category:"links",severity:"info"},"pass",`${e} contextual links`)}},{id:"linking-orphan-page",name:"Orphan Page Detection",category:"links",severity:"warning",description:"Pages should be linked from other pages on the site",check:t=>t.incomingInternalLinks===void 0?a({id:"linking-orphan-page",name:"Orphan Page Detection",category:"links",severity:"warning"},"info","Not applicable (incoming internal links data unavailable)",{recommendation:"This rule checks if pages receive incoming internal links to prevent orphan pages"}):t.incomingInternalLinks===0?a({id:"linking-orphan-page",name:"Orphan Page Detection",category:"links",severity:"warning"},"warn","Page may be an orphan (no incoming internal links)",{recommendation:"Link to this page from other pages on your site",evidence:{found:"0 incoming internal links detected",impact:"Orphan pages are harder for search engines to discover",learnMore:"https://ahrefs.com/blog/orphan-pages/"}}):a({id:"linking-orphan-page",name:"Orphan Page Detection",category:"links",severity:"warning"},"pass",`${t.incomingInternalLinks} incoming internal link(s)`)},{id:"linking-self-referencing",name:"Self-Referencing Links",category:"links",severity:"info",description:"Avoid excessive self-referencing links",check:t=>t.selfReferencingLinks===void 0?a({id:"linking-self-referencing",name:"Self-Referencing Links",category:"links",severity:"info"},"info","Not applicable (self-referencing links data unavailable)",{recommendation:"This rule checks for excessive self-referencing links that waste crawl budget"}):t.selfReferencingLinks>3?a({id:"linking-self-referencing",name:"Self-Referencing Links",category:"links",severity:"info"},"info",`${t.selfReferencingLinks} self-referencing links`,{recommendation:"Reduce links that point to the current page",evidence:{found:t.selfReferencingLinks,expected:"0-1 self-referencing links (e.g., canonical only)",impact:"Self-links waste crawl budget and confuse users"}}):a({id:"linking-self-referencing",name:"Self-Referencing Links",category:"links",severity:"info"},"info","Not applicable (acceptable self-referencing link count)",{recommendation:"Self-referencing links are acceptable at current level (0-3 links)"})},{id:"linking-broken-internal",name:"Broken Internal Links",category:"links",severity:"error",description:"Internal links should not be broken",check:t=>t.brokenInternalLinks===void 0?a({id:"linking-broken-internal",name:"Broken Internal Links",category:"links",severity:"error"},"info","Not applicable (broken internal links data unavailable)",{recommendation:"This rule checks for broken internal links that harm user experience and waste crawl budget"}):t.brokenInternalLinks.length>0?a({id:"linking-broken-internal",name:"Broken Internal Links",category:"links",severity:"error"},"fail",`${t.brokenInternalLinks.length} broken internal link(s)`,{recommendation:"Fix or remove broken internal links",evidence:{found:t.brokenInternalLinks.slice(0,5),expected:"0 broken links",impact:"Broken links waste crawl budget and harm user experience"}}):a({id:"linking-broken-internal",name:"Broken Internal Links",category:"links",severity:"error"},"pass","No broken internal links")},{id:"linking-redirect-chains",name:"Redirect Chains",category:"links",severity:"warning",description:"Internal links should not go through redirect chains",check:t=>t.redirectChainLinks===void 0?a({id:"linking-redirect-chains",name:"Redirect Chains",category:"links",severity:"warning"},"info","Not applicable (redirect chain data unavailable)",{recommendation:"This rule checks for redirect chains that slow crawling and lose link equity"}):t.redirectChainLinks.length>0?a({id:"linking-redirect-chains",name:"Redirect Chains",category:"links",severity:"warning"},"warn",`${t.redirectChainLinks.length} link(s) go through redirects`,{recommendation:"Update links to point to final destination URLs",evidence:{found:t.redirectChainLinks.slice(0,5).map(e=>`${e.from} \u2192 ${e.to} (${e.hops} hops)`),expected:"0 redirect chain links",impact:"Redirect chains slow down crawling and lose link equity"}}):a({id:"linking-redirect-chains",name:"Redirect Chains",category:"links",severity:"warning"},"pass","No redirect chain links")},{id:"linking-nofollow-internal",name:"Nofollow Internal Links",category:"links",severity:"warning",description:"Internal links should not use nofollow",check:t=>{if(!t.allLinks)return a({id:"linking-nofollow-internal",name:"Nofollow Internal Links",category:"links",severity:"warning"},"info","Not applicable (links data unavailable)",{recommendation:"This rule checks for nofollow attributes on internal links which waste PageRank"});let e=t.allLinks.filter(r=>{var n;return r.type==="internal"&&((n=r.rel)==null?void 0:n.includes("nofollow"))});return e.length>0?a({id:"linking-nofollow-internal",name:"Nofollow Internal Links",category:"links",severity:"warning"},"warn",`${e.length} internal link(s) have nofollow`,{recommendation:"Remove nofollow from internal links",evidence:{found:e.slice(0,3).map(r=>r.href),impact:"Nofollow on internal links wastes PageRank",learnMore:"https://developers.google.com/search/docs/crawling-indexing/qualify-outbound-links"}}):a({id:"linking-nofollow-internal",name:"Nofollow Internal Links",category:"links",severity:"warning"},"pass","No nofollow on internal links")}},{id:"linking-click-depth",name:"Click Depth",category:"links",severity:"info",description:"Important pages should be reachable in few clicks",check:t=>{if(t.pageClickDepth===void 0)return a({id:"linking-click-depth",name:"Click Depth",category:"links",severity:"info"},"info","Not applicable (click depth data unavailable)",{recommendation:"This rule checks how many clicks from homepage, affecting crawl priority and link equity"});let e=t.pageClickDepth;return e>4?a({id:"linking-click-depth",name:"Click Depth",category:"links",severity:"info"},"warn",`Page is ${e} clicks from homepage`,{recommendation:"Improve site architecture for better accessibility",evidence:{found:`${e} clicks deep`,expected:"Under 4 clicks from homepage",impact:"Deep pages receive less crawl priority and link equity"}}):e>3?a({id:"linking-click-depth",name:"Click Depth",category:"links",severity:"info"},"info",`Page is ${e} clicks from homepage`,{recommendation:"Consider adding shortcuts to this page"}):a({id:"linking-click-depth",name:"Click Depth",category:"links",severity:"info"},"pass",`${e} click(s) from homepage`)}}];var Hd=[{id:"bp-doctype",name:"HTML Doctype",category:"technical",severity:"error",description:"Page must have the HTML doctype",check:t=>t.hasDoctype===void 0?a({id:"bp-doctype",name:"HTML Doctype",category:"technical",severity:"error"},"info","Unable to check doctype (data unavailable)",{recommendation:"Ensure HTML content is properly fetched"}):t.hasDoctype?a({id:"bp-doctype",name:"HTML Doctype",category:"technical",severity:"error"},"pass","Page has HTML doctype"):a({id:"bp-doctype",name:"HTML Doctype",category:"technical",severity:"error"},"fail","Page is missing HTML doctype",{recommendation:"Add <!DOCTYPE html> at the start of the document",evidence:{expected:"<!DOCTYPE html>",impact:"Missing doctype triggers quirks mode in browsers",learnMore:"https://developer.mozilla.org/en-US/docs/Glossary/Doctype"}})},{id:"bp-charset",name:"Character Encoding",category:"technical",severity:"error",description:"Page should properly define charset",check:t=>t.hasCharset===void 0?a({id:"bp-charset",name:"Character Encoding",category:"technical",severity:"error"},"info","Unable to check charset (data unavailable)",{recommendation:"Ensure HTML content is properly fetched"}):t.hasCharset?t.charset&&t.charset.toLowerCase()!=="utf-8"?a({id:"bp-charset",name:"Character Encoding",category:"technical",severity:"error"},"warn",`Non-UTF-8 charset: ${t.charset}`,{value:t.charset,recommendation:"Use UTF-8 encoding for maximum compatibility",evidence:{found:t.charset,expected:"UTF-8"}}):a({id:"bp-charset",name:"Character Encoding",category:"technical",severity:"error"},"pass",`Charset: ${t.charset||"UTF-8"}`):a({id:"bp-charset",name:"Character Encoding",category:"technical",severity:"error"},"fail","Page is missing character encoding declaration",{recommendation:'Add <meta charset="UTF-8"> in the <head>',evidence:{expected:'<meta charset="UTF-8">',impact:"Characters may render incorrectly without charset declaration"}})},{id:"bp-http-status",name:"HTTP Status Code",category:"technical",severity:"error",description:"Page should have successful HTTP status code",check:t=>{if(t.httpStatusCode===void 0)return a({id:"bp-http-status",name:"HTTP Status Code",category:"technical",severity:"error"},"info","Unable to check HTTP status (data unavailable)",{recommendation:"Ensure the page request completed successfully"});let e=t.httpStatusCode;return e>=400?a({id:"bp-http-status",name:"HTTP Status Code",category:"technical",severity:"error"},"fail",`HTTP ${e} error response`,{value:e,recommendation:"Fix server configuration to return successful status codes",evidence:{found:e,expected:"200-299",impact:"Error pages will not be indexed by search engines"}}):e>=300?a({id:"bp-http-status",name:"HTTP Status Code",category:"technical",severity:"error"},"info",`HTTP ${e} redirect response`,{value:e,recommendation:"Redirects add latency; consider updating links to final URLs"}):a({id:"bp-http-status",name:"HTTP Status Code",category:"technical",severity:"error"},"pass",`HTTP ${e} OK`)}},{id:"bp-indexable",name:"Page Indexable",category:"technical",severity:"error",description:"Page should not be blocked from indexing",check:t=>{if(t.metaRobots===void 0)return a({id:"bp-indexable",name:"Page Indexable",category:"technical",severity:"error"},"info","Unable to check indexability (no robots meta)",{recommendation:"Check if the page has robots meta tags"});let e=Array.isArray(t.metaRobots)?t.metaRobots:[t.metaRobots];return e.some(n=>n.toLowerCase().includes("noindex")||n.toLowerCase().includes("none"))?a({id:"bp-indexable",name:"Page Indexable",category:"technical",severity:"error"},"fail","Page is blocked from indexing",{recommendation:"Remove noindex directive if this page should be searchable",evidence:{found:e.join(", "),expected:"No noindex directive",impact:"Page will not appear in search results"}}):a({id:"bp-indexable",name:"Page Indexable",category:"technical",severity:"error"},"pass","Page is indexable")}},{id:"bp-links-crawlable",name:"Crawlable Links",category:"links",severity:"warning",description:"Links should be crawlable by search engines",check:t=>{if(t.uncrawlableLinksCount===void 0)return a({id:"bp-links-crawlable",name:"Crawlable Links",category:"links",severity:"warning"},"info","Unable to check link crawlability (data unavailable)",{recommendation:"Ensure link analysis completed"});let e=t.uncrawlableLinksCount;return e>0?a({id:"bp-links-crawlable",name:"Crawlable Links",category:"links",severity:"warning"},"warn",`${e} link(s) are not crawlable`,{value:e,recommendation:"Use <a href> tags instead of JavaScript navigation for important links",evidence:{found:e,expected:0,impact:"Search engines cannot discover linked content",learnMore:"https://developers.google.com/search/docs/crawling-indexing/links-crawlable"}}):a({id:"bp-links-crawlable",name:"Crawlable Links",category:"links",severity:"warning"},"pass","All links are crawlable")}},{id:"bp-robots-txt",name:"Valid robots.txt",category:"technical",severity:"info",description:"robots.txt should be valid and accessible",check:t=>t.robotsTxtValid===void 0?a({id:"bp-robots-txt",name:"Valid robots.txt",category:"technical",severity:"info"},"info","Unable to check robots.txt (data unavailable)",{recommendation:"Check if robots.txt is accessible at /robots.txt"}):t.robotsTxtValid?a({id:"bp-robots-txt",name:"Valid robots.txt",category:"technical",severity:"info"},"pass","robots.txt is valid"):a({id:"bp-robots-txt",name:"Valid robots.txt",category:"technical",severity:"info"},"warn","robots.txt is invalid or inaccessible",{recommendation:"Ensure robots.txt is valid and returns 200 status",evidence:{found:t.robotsTxtError||"Invalid",expected:"Valid robots.txt",impact:"Invalid robots.txt may cause crawling issues",learnMore:"https://developers.google.com/search/docs/crawling-indexing/robots/intro"}})},{id:"bp-structured-data",name:"Structured Data",category:"structured-data",severity:"info",description:"Page should have valid structured data",check:t=>{if(t.structuredDataErrors===void 0)return a({id:"bp-structured-data",name:"Structured Data",category:"structured-data",severity:"info"},"info","Unable to check structured data (data unavailable)",{recommendation:"Ensure JSON-LD structured data analysis completed"});let e=t.structuredDataErrors;return e>0?a({id:"bp-structured-data",name:"Structured Data",category:"structured-data",severity:"info"},"warn",`${e} structured data error(s) found`,{value:e,recommendation:"Validate structured data using Google Rich Results Test",evidence:{found:e,expected:0,impact:"Invalid structured data may not generate rich results",learnMore:"https://search.google.com/test/rich-results"}}):t.jsonLdCount&&t.jsonLdCount>0?a({id:"bp-structured-data",name:"Structured Data",category:"structured-data",severity:"info"},"pass",`${t.jsonLdCount} structured data block(s) found`):a({id:"bp-structured-data",name:"Structured Data",category:"structured-data",severity:"info"},"info","No structured data found",{recommendation:"Add schema.org structured data for rich search results",evidence:{expected:'JSON-LD structured data in <script type="application/ld+json">',impact:"Structured data enables rich snippets like ratings, FAQs, and product info in search results",example:`<script type="application/ld+json">
|
|
400
400
|
{
|
|
401
401
|
"@context": "https://schema.org",
|
|
402
402
|
"@type": "Article",
|
|
@@ -404,14 +404,14 @@ if ('serviceWorker' in navigator) {
|
|
|
404
404
|
}
|
|
405
405
|
<\/script>`,learnMore:"https://developers.google.com/search/docs/advanced/structured-data/intro-structured-data"}})}}];var qd=[{id:"ai-llms-txt-exists",name:"llms.txt File",category:"ai-search",severity:"info",description:"llms.txt helps AI systems understand your site (llmstxt.org)",check:t=>{var e;return t.llmsTxt===void 0?a({id:"ai-llms-txt-exists",name:"llms.txt File",category:"ai-search",severity:"info"},"info","Not applicable (llms.txt data unavailable)",{recommendation:"This rule checks for llms.txt file to optimize for AI/LLM discovery"}):t.llmsTxt.exists?t.llmsTxt.valid?a({id:"ai-llms-txt-exists",name:"llms.txt File",category:"ai-search",severity:"info"},"pass","llms.txt found and valid"):a({id:"ai-llms-txt-exists",name:"llms.txt File",category:"ai-search",severity:"info"},"warn","llms.txt found but has issues",{recommendation:"Fix validation issues in llms.txt",evidence:{found:((e=t.llmsTxt.issues)==null?void 0:e.map(r=>r.message))||[]}}):a({id:"ai-llms-txt-exists",name:"llms.txt File",category:"ai-search",severity:"info"},"info","llms.txt not found",{recommendation:"Create llms.txt to optimize for AI/LLM discovery",evidence:{expected:"/llms.txt file",impact:"AI systems may not understand your site structure and content",learnMore:"https://llmstxt.org/"}})}},{id:"ai-llms-txt-structure",name:"llms.txt Structure",category:"ai-search",severity:"info",description:"llms.txt should have proper structure with site name and description",check:t=>{var s;if(!((s=t.llmsTxt)!=null&&s.exists)||!t.llmsTxt.parseResult)return a({id:"ai-llms-txt-structure",name:"llms.txt Structure",category:"ai-search",severity:"info"},"info","Not applicable (llms.txt does not exist or parse data unavailable)",{recommendation:"This rule validates llms.txt structure for AI comprehension"});let{siteName:e,siteDescription:r,sections:n,links:i}=t.llmsTxt.parseResult,o=[];return e||o.push("Missing site name (# heading)"),r||o.push("Missing site description (> blockquote)"),n.length===0&&o.push("No content sections (## headings)"),i.length===0&&o.push("No links to content"),o.length>0?a({id:"ai-llms-txt-structure",name:"llms.txt Structure",category:"ai-search",severity:"info"},"info","llms.txt structure can be improved",{recommendation:"Add missing elements to llms.txt",evidence:{found:o,expected:"Site name, description, sections, and links",learnMore:"https://llmstxt.org/"}}):a({id:"ai-llms-txt-structure",name:"llms.txt Structure",category:"ai-search",severity:"info"},"pass","llms.txt has good structure")}},{id:"ai-content-structure",name:"AI-Friendly Content Structure",category:"ai-search",severity:"info",description:"Content should be well-structured for AI comprehension",check:t=>{var s;if(!((s=t.headings)!=null&&s.structure))return a({id:"ai-content-structure",name:"AI-Friendly Content Structure",category:"ai-search",severity:"info"},"info","Not applicable (heading structure data unavailable)",{recommendation:"This rule checks for well-structured content for AI comprehension"});let e=[],r=t.headings.h1Count||0,n=t.headings.structure.some(c=>c.level===2),i=t.headings.structure.some(c=>c.level===3);r!==1&&e.push(r===0?"No H1 heading":`Multiple H1 headings (${r})`),!n&&t.wordCount&&t.wordCount>500&&e.push("Long content without H2 subheadings");let o=t.headings.structure.filter(c=>c.text.includes("?")||/^(what|how|why|when|where|who|which)/i.test(c.text));return e.length>0?a({id:"ai-content-structure",name:"AI-Friendly Content Structure",category:"ai-search",severity:"info"},"info","Content structure can be improved for AI",{recommendation:"Use clear heading hierarchy and question-based headings",evidence:{found:e,expected:"Single H1, logical H2/H3 hierarchy, question headings"}}):a({id:"ai-content-structure",name:"AI-Friendly Content Structure",category:"ai-search",severity:"info"},"pass","Good content structure for AI comprehension")}},{id:"ai-question-headings",name:"Question-Based Headings",category:"ai-search",severity:"info",description:"Question headings help with AI search featured snippets",check:t=>{var n;if(!((n=t.headings)!=null&&n.structure))return a({id:"ai-question-headings",name:"Question-Based Headings",category:"ai-search",severity:"info"},"info","Not applicable (heading structure data unavailable)",{recommendation:"This rule checks for question-based headings that trigger featured snippets"});let e=[/^what\s/i,/^how\s/i,/^why\s/i,/^when\s/i,/^where\s/i,/^who\s/i,/^which\s/i,/^can\s/i,/^does\s/i,/^is\s/i,/^are\s/i,/\?$/],r=t.headings.structure.filter(i=>e.some(o=>o.test(i.text)));return r.length>0?a({id:"ai-question-headings",name:"Question-Based Headings",category:"ai-search",severity:"info"},"pass",`${r.length} question-based heading(s) found`,{value:r.length,evidence:{found:r.map(i=>i.text).slice(0,5)}}):t.wordCount&&t.wordCount>500?a({id:"ai-question-headings",name:"Question-Based Headings",category:"ai-search",severity:"info"},"info","No question-based headings found",{recommendation:"Add question headings to improve AI search visibility",evidence:{example:'Use headings like "What is...?", "How to...", "Why should...?"',impact:"Question headings often trigger featured snippets in AI search"}}):a({id:"ai-question-headings",name:"Question-Based Headings",category:"ai-search",severity:"info"},"pass","Content length does not require question headings")}},{id:"ai-structured-data",name:"Structured Data for AI",category:"ai-search",severity:"info",description:"Schema.org structured data helps AI understand content",check:t=>{if(!t.jsonLdTypes)return a({id:"ai-structured-data",name:"Structured Data for AI",category:"ai-search",severity:"info"},"info","Not applicable (structured data unavailable)",{recommendation:"This rule checks for Schema.org structured data for AI comprehension"});let e=["Article","BlogPosting","NewsArticle","TechArticle","FAQPage","HowTo","QAPage","Product","Review","Organization","Person","BreadcrumbList","WebPage","WebSite"],r=t.jsonLdTypes,n=r.filter(i=>e.some(o=>i.includes(o)));return n.length>0?a({id:"ai-structured-data",name:"Structured Data for AI",category:"ai-search",severity:"info"},"pass",`${n.length} AI-helpful schema type(s) found`,{value:n.length,evidence:{found:n}}):r.length>0?a({id:"ai-structured-data",name:"Structured Data for AI",category:"ai-search",severity:"info"},"info","Structured data found but could be more AI-friendly",{value:r.length,recommendation:"Add Article, FAQPage, HowTo, or other content-rich schemas",evidence:{found:r,expected:"Article, FAQPage, HowTo, Product, Review, etc."}}):a({id:"ai-structured-data",name:"Structured Data for AI",category:"ai-search",severity:"info"},"info","No structured data found",{recommendation:"Add Schema.org structured data for better AI understanding",evidence:{expected:"JSON-LD with Article, FAQPage, HowTo, etc.",impact:"AI systems use structured data to understand content context"}})}},{id:"ai-faq-schema",name:"FAQ Schema for AI",category:"ai-search",severity:"info",description:"FAQPage schema is highly valuable for AI search results",check:t=>{var o,s;if(!t.jsonLdTypes)return a({id:"ai-faq-schema",name:"FAQ Schema for AI",category:"ai-search",severity:"info"},"info","Not applicable (structured data unavailable)",{recommendation:"This rule checks for FAQ/HowTo schema for AI search rich results"});let e=t.jsonLdTypes.some(c=>c.includes("FAQPage")),r=t.jsonLdTypes.some(c=>c.includes("HowTo")),n=t.jsonLdTypes.some(c=>c.includes("QAPage"));if(e||r||n){let c=[];return e&&c.push("FAQPage"),r&&c.push("HowTo"),n&&c.push("QAPage"),a({id:"ai-faq-schema",name:"FAQ Schema for AI",category:"ai-search",severity:"info"},"pass","FAQ/HowTo/QA schema found (great for AI search)",{evidence:{found:c}})}return((s=(o=t.headings)==null?void 0:o.structure)==null?void 0:s.some(c=>/\?$|^(how|what|why|when)/i.test(c.text)))?a({id:"ai-faq-schema",name:"FAQ Schema for AI",category:"ai-search",severity:"info"},"info","Content has Q&A structure but missing FAQ schema",{recommendation:"Add FAQPage schema for question-based content",evidence:{found:"Question headings detected",expected:"FAQPage JSON-LD schema",impact:"FAQ schema enables rich results in AI-powered search"}}):a({id:"ai-faq-schema",name:"FAQ Schema for AI",category:"ai-search",severity:"info"},"pass","No Q&A structure detected requiring FAQ schema")}},{id:"ai-content-depth",name:"Content Depth for AI",category:"ai-search",severity:"info",description:"AI systems prefer comprehensive, in-depth content",check:t=>{if(t.wordCount===void 0)return a({id:"ai-content-depth",name:"Content Depth for AI",category:"ai-search",severity:"info"},"info","Not applicable (word count data unavailable)",{recommendation:"This rule checks content depth for AI search visibility"});let e=300,r=1e3,n=2e3;return t.wordCount<e?a({id:"ai-content-depth",name:"Content Depth for AI",category:"ai-search",severity:"info"},"warn",`Thin content for AI search (${t.wordCount} words)`,{value:t.wordCount,recommendation:`Add more comprehensive content (min ${e} words)`,evidence:{found:t.wordCount,expected:`${e}+ words for AI visibility`,impact:"AI systems may not surface thin content in results"}}):t.wordCount>=n?a({id:"ai-content-depth",name:"Content Depth for AI",category:"ai-search",severity:"info"},"pass",`Excellent content depth (${t.wordCount} words)`,{value:t.wordCount}):t.wordCount>=r?a({id:"ai-content-depth",name:"Content Depth for AI",category:"ai-search",severity:"info"},"pass",`Good content depth (${t.wordCount} words)`,{value:t.wordCount}):a({id:"ai-content-depth",name:"Content Depth for AI",category:"ai-search",severity:"info"},"info",`Moderate content depth (${t.wordCount} words)`,{value:t.wordCount,recommendation:`Consider expanding to ${r}+ words for better AI visibility`})}},{id:"ai-content-freshness",name:"Content Freshness Signals",category:"ai-search",severity:"info",description:"AI systems value fresh, updated content",check:t=>t.jsonLdTypes?t.jsonLdTypes.some(r=>r.includes("Article")||r.includes("BlogPosting")||r.includes("NewsArticle"))?a({id:"ai-content-freshness",name:"Content Freshness Signals",category:"ai-search",severity:"info"},"pass","Article schema with date signals found"):a({id:"ai-content-freshness",name:"Content Freshness Signals",category:"ai-search",severity:"info"},"info","No content freshness signals detected",{recommendation:"Add Article schema with datePublished and dateModified",evidence:{expected:"Article/BlogPosting schema with date properties",impact:"AI systems prefer content with clear freshness indicators"}}):a({id:"ai-content-freshness",name:"Content Freshness Signals",category:"ai-search",severity:"info"},"info","Not applicable (structured data unavailable)",{recommendation:"This rule checks for content freshness signals in structured data"})},{id:"ai-robots-gpt-bot",name:"GPTBot Access",category:"ai-search",severity:"info",description:"Check if GPTBot (OpenAI) is allowed or blocked",check:t=>{var n;if(!((n=t.robotsTxt)!=null&&n.parseResult))return a({id:"ai-robots-gpt-bot",name:"GPTBot Access",category:"ai-search",severity:"info"},"info","Not applicable (robots.txt data unavailable)",{recommendation:"This rule checks if GPTBot is allowed to crawl for ChatGPT training"});let{userAgentBlocks:e}=t.robotsTxt.parseResult,r=e.find(i=>i.userAgents.some(o=>o.toLowerCase().includes("gptbot")));return r&&r.rules.some(o=>o.type==="disallow"&&(o.path==="/"||o.path===""))?a({id:"ai-robots-gpt-bot",name:"GPTBot Access",category:"ai-search",severity:"info"},"info","GPTBot is blocked in robots.txt",{recommendation:"GPTBot blocked = content not used for ChatGPT training",evidence:{found:"User-agent: GPTBot with Disallow",impact:"Your content will not appear in ChatGPT responses"}}):a({id:"ai-robots-gpt-bot",name:"GPTBot Access",category:"ai-search",severity:"info"},"pass","GPTBot is allowed (default)")}},{id:"ai-robots-anthropic",name:"Anthropic Claude Access",category:"ai-search",severity:"info",description:"Check if Anthropic/Claude crawlers are allowed or blocked",check:t=>{var n;if(!((n=t.robotsTxt)!=null&&n.parseResult))return a({id:"ai-robots-anthropic",name:"Anthropic Claude Access",category:"ai-search",severity:"info"},"info","Not applicable (robots.txt data unavailable)",{recommendation:"This rule checks if Anthropic/Claude crawlers are allowed"});let{userAgentBlocks:e}=t.robotsTxt.parseResult,r=e.find(i=>i.userAgents.some(o=>o.toLowerCase().includes("anthropic")||o.toLowerCase().includes("claude")));return r&&r.rules.some(o=>o.type==="disallow"&&(o.path==="/"||o.path===""))?a({id:"ai-robots-anthropic",name:"Anthropic Claude Access",category:"ai-search",severity:"info"},"info","Anthropic/Claude crawler is blocked",{recommendation:"Consider implications of blocking AI training crawlers",evidence:{found:"Anthropic/Claude blocked in robots.txt"}}):a({id:"ai-robots-anthropic",name:"Anthropic Claude Access",category:"ai-search",severity:"info"},"pass","Anthropic/Claude crawler is allowed (default)")}},{id:"ai-content-last-modified",name:"Content Last Modified",category:"ai-search",severity:"info",description:"Content updated recently may perform better in AI search",check:t=>{if(!t.lastModified)return a({id:"ai-content-last-modified",name:"Content Last Modified",category:"ai-search",severity:"info"},"info","Not applicable (Last-Modified header unavailable)",{recommendation:"This rule checks content freshness via Last-Modified header"});let e=new Date(t.lastModified),r=new Date;if(r.setMonth(r.getMonth()-6),e<r){let n=Math.floor((Date.now()-e.getTime())/2592e6);return a({id:"ai-content-last-modified",name:"Content Last Modified",category:"ai-search",severity:"info"},"info",`Content last updated ${n} months ago`,{value:t.lastModified,recommendation:"Consider updating content if it is time-sensitive",evidence:{found:`Last-Modified: ${t.lastModified}`,expected:"Content updated within last 6 months for time-sensitive topics",impact:"AI search engines may prefer recently updated content for some queries"}})}return a({id:"ai-content-last-modified",name:"Content Last Modified",category:"ai-search",severity:"info"},"pass","Content has been updated recently")}},{id:"ai-page-too-long",name:"Page Too Long for AI",category:"ai-search",severity:"info",description:"Very long pages may be truncated by AI search engines",check:t=>t.wordCount===void 0?a({id:"ai-page-too-long",name:"Page Too Long for AI",category:"ai-search",severity:"info"},"info","Not applicable (word count data unavailable)",{recommendation:"This rule checks if page length may be too long for AI processing"}):t.wordCount>1e4?a({id:"ai-page-too-long",name:"Page Too Long for AI",category:"ai-search",severity:"info"},"info",`Page has ${t.wordCount.toLocaleString()} words (very long)`,{value:t.wordCount,recommendation:"Consider splitting into multiple pages or summarizing key points",evidence:{found:`${t.wordCount.toLocaleString()} words`,expected:"Ideal: 1,000-3,000 words for comprehensive coverage",impact:"AI search engines may truncate or skip portions of very long content"}}):t.wordCount>5e3?a({id:"ai-page-too-long",name:"Page Too Long for AI",category:"ai-search",severity:"info"},"info",`Page has ${t.wordCount.toLocaleString()} words (long)`,{value:t.wordCount,recommendation:"Ensure key information is near the beginning of the page",evidence:{found:`${t.wordCount.toLocaleString()} words`,impact:"Some AI systems may not process the entire page"}}):a({id:"ai-page-too-long",name:"Page Too Long for AI",category:"ai-search",severity:"info"},"pass",`Page length is optimal for AI processing (${t.wordCount.toLocaleString()} words)`)},{id:"semantic-html-ratio",name:"Semantic HTML Ratio",category:"ai-search",severity:"info",description:"Pages should use semantic HTML for better AI understanding",check:t=>t.semanticHtmlRatio===void 0?a({id:"semantic-html-ratio",name:"Semantic HTML Ratio",category:"ai-search",severity:"info"},"info","Not applicable (semantic HTML data unavailable)",{recommendation:"This rule checks for semantic HTML usage for better AI understanding"}):t.semanticHtmlRatio<.1?a({id:"semantic-html-ratio",name:"Semantic HTML Ratio",category:"ai-search",severity:"info"},"warn",`Low semantic HTML usage (${(t.semanticHtmlRatio*100).toFixed(1)}%)`,{value:t.semanticHtmlRatio,recommendation:"Use semantic HTML tags (article, section, nav, header, footer, aside, main)",evidence:{found:`${(t.semanticHtmlRatio*100).toFixed(1)}% semantic tags`,expected:">10% semantic HTML tags",impact:"Semantic HTML helps AI understand page structure and content hierarchy",learnMore:"https://web.dev/learn/html/semantic-html/"}}):t.semanticHtmlRatio<.2?a({id:"semantic-html-ratio",name:"Semantic HTML Ratio",category:"ai-search",severity:"info"},"info",`Moderate semantic HTML usage (${(t.semanticHtmlRatio*100).toFixed(1)}%)`,{value:t.semanticHtmlRatio,recommendation:"Consider adding more semantic structure",evidence:{found:`${(t.semanticHtmlRatio*100).toFixed(1)}% semantic tags`,expected:">20% for optimal AI comprehension"}}):a({id:"semantic-html-ratio",name:"Semantic HTML Ratio",category:"ai-search",severity:"info"},"pass",`Good semantic HTML usage (${(t.semanticHtmlRatio*100).toFixed(1)}%)`)}];var $d=[{id:"resources-js-files-count",name:"JavaScript File Count",category:"resources",severity:"warning",description:"Too many JavaScript files increase HTTP requests and slow page load",check:t=>{if(t.jsFilesCount===void 0)return a({id:"resources-js-files-count",name:"JavaScript File Count",category:"resources",severity:"warning"},"info","Not applicable (JavaScript file count unavailable)",{recommendation:"This rule checks JavaScript file count when resource information is available"});let e=15;return t.jsFilesCount>e?a({id:"resources-js-files-count",name:"JavaScript File Count",category:"resources",severity:"warning"},"warn",`Too many JS files (${t.jsFilesCount})`,{value:t.jsFilesCount,recommendation:`Bundle JavaScript files to reduce HTTP requests (max ${e})`,evidence:{found:t.jsFilesCount,expected:`${e} or fewer`,impact:"Each HTTP request adds latency and slows page load"}}):a({id:"resources-js-files-count",name:"JavaScript File Count",category:"resources",severity:"warning"},"info","Not applicable (JavaScript file count is within limits or unavailable)",{recommendation:"This rule checks JavaScript file count when resource information is available"})}},{id:"resources-js-total-size",name:"JavaScript Total Size",category:"resources",severity:"warning",description:"Large JavaScript bundles slow page load and increase bandwidth",check:t=>{if(t.jsTotalSize===void 0)return a({id:"resources-js-total-size",name:"JavaScript Total Size",category:"resources",severity:"warning"},"info","Not applicable (JavaScript size information unavailable)",{recommendation:"This rule checks JavaScript total size when resource size information is available"});let e=500,r=Math.round(t.jsTotalSize/1024);return r>e?a({id:"resources-js-total-size",name:"JavaScript Total Size",category:"resources",severity:"warning"},"warn",`Large JS bundle (${r}KB)`,{value:r,recommendation:`Reduce JavaScript size to under ${e}KB`,evidence:{found:`${r}KB`,expected:`${e}KB or less`,impact:"Large JS bundles delay page interactivity"}}):a({id:"resources-js-total-size",name:"JavaScript Total Size",category:"resources",severity:"warning"},"info","Not applicable (JavaScript size is within limits)",{recommendation:"This rule checks for large JavaScript bundles that slow page load"})}},{id:"resources-js-render-blocking",name:"Render-Blocking JavaScript",category:"resources",severity:"warning",description:"Render-blocking JS in <head> delays page rendering",check:t=>t.renderBlockingJs===void 0?a({id:"resources-js-render-blocking",name:"Render-Blocking JavaScript",category:"resources",severity:"warning"},"info","Not applicable (render-blocking JavaScript information unavailable)",{recommendation:"This rule checks for render-blocking JavaScript when resource information is available"}):t.renderBlockingJs>0?a({id:"resources-js-render-blocking",name:"Render-Blocking JavaScript",category:"resources",severity:"warning"},"warn",`${t.renderBlockingJs} render-blocking JS file(s)`,{value:t.renderBlockingJs,recommendation:"Add async or defer attribute to non-critical scripts",evidence:{found:`${t.renderBlockingJs} scripts without async/defer`,expected:"All scripts with async, defer, or in body",example:'<script src="app.js" defer><\/script>'}}):a({id:"resources-js-render-blocking",name:"Render-Blocking JavaScript",category:"resources",severity:"warning"},"pass","No render-blocking JavaScript")},{id:"resources-css-files-count",name:"CSS File Count",category:"resources",severity:"warning",description:"Too many CSS files increase HTTP requests",check:t=>{if(t.cssFilesCount===void 0)return a({id:"resources-css-files-count",name:"CSS File Count",category:"resources",severity:"warning"},"info","Not applicable (CSS file count unavailable)",{recommendation:"This rule checks CSS file count when resource information is available"});let e=10;return t.cssFilesCount>e?a({id:"resources-css-files-count",name:"CSS File Count",category:"resources",severity:"warning"},"warn",`Too many CSS files (${t.cssFilesCount})`,{value:t.cssFilesCount,recommendation:`Bundle CSS files to reduce HTTP requests (max ${e})`,evidence:{found:t.cssFilesCount,expected:`${e} or fewer`}}):a({id:"resources-css-files-count",name:"CSS File Count",category:"resources",severity:"warning"},"info","Not applicable (CSS file count is within limits or unavailable)",{recommendation:"This rule checks CSS file count when resource information is available"})}},{id:"resources-css-total-size",name:"CSS Total Size",category:"resources",severity:"warning",description:"Large CSS files delay page rendering",check:t=>{if(t.cssTotalSize===void 0)return a({id:"resources-css-total-size",name:"CSS Total Size",category:"resources",severity:"warning"},"info","Not applicable (CSS size information unavailable)",{recommendation:"This rule checks CSS total size when resource size information is available"});let e=200,r=Math.round(t.cssTotalSize/1024);return r>e?a({id:"resources-css-total-size",name:"CSS Total Size",category:"resources",severity:"warning"},"warn",`Large CSS bundle (${r}KB)`,{value:r,recommendation:`Reduce CSS size to under ${e}KB`,evidence:{found:`${r}KB`,expected:`${e}KB or less`,impact:"Large CSS delays first contentful paint"}}):a({id:"resources-css-total-size",name:"CSS Total Size",category:"resources",severity:"warning"},"info","Not applicable (CSS size is within limits)",{recommendation:"This rule checks for large CSS files that delay page rendering"})}},{id:"resources-css-render-blocking",name:"Render-Blocking CSS",category:"resources",severity:"info",description:"Critical CSS should be inlined, non-critical deferred",check:t=>t.cssFilesCount===void 0?a({id:"resources-css-render-blocking",name:"Render-Blocking CSS",category:"resources",severity:"info"},"info","Not applicable (CSS file information unavailable)",{recommendation:"This rule checks for render-blocking CSS when resource information is available"}):t.cssFilesCount>3&&!t.hasCriticalCss?a({id:"resources-css-render-blocking",name:"Render-Blocking CSS",category:"resources",severity:"info"},"info",`${t.cssFilesCount} CSS files blocking render`,{value:t.cssFilesCount,recommendation:"Consider inlining critical CSS and lazy-loading the rest",evidence:{impact:"CSS blocks rendering until fully loaded",example:`<link rel="preload" href="style.css" as="style" onload="this.rel='stylesheet'">`}}):a({id:"resources-css-render-blocking",name:"Render-Blocking CSS",category:"resources",severity:"info"},"info","Not applicable (CSS file count is low or critical CSS is present)",{recommendation:"This rule checks for render-blocking CSS that delays page rendering"})},{id:"resources-image-size-large",name:"Large Image Files",category:"resources",severity:"warning",description:"Images over 200KB should be optimized",check:t=>{if(!t.largeImages||t.largeImages.length===0)return a({id:"resources-image-size-large",name:"Large Image Files",category:"resources",severity:"warning"},"info","Not applicable (no large images detected or image data unavailable)",{recommendation:"This rule checks for images over 200KB when image information is available"});let e=200,r=t.largeImages.length;return a({id:"resources-image-size-large",name:"Large Image Files",category:"resources",severity:"warning"},"warn",`${r} image(s) over ${e}KB`,{value:r,recommendation:"Compress images or use modern formats (WebP, AVIF)",evidence:{found:t.largeImages.slice(0,5),impact:"Large images significantly slow page load"}})}},{id:"resources-image-format",name:"Modern Image Formats",category:"resources",severity:"info",description:"Use WebP or AVIF for better compression",check:t=>{if(t.imagesTotal===void 0||t.imagesTotal===0)return a({id:"resources-image-format",name:"Modern Image Formats",category:"resources",severity:"info"},"info","Not applicable (no images present or image data unavailable)",{recommendation:"This rule checks image format usage when images are present on the page"});if(t.modernFormatImages===void 0)return a({id:"resources-image-format",name:"Modern Image Formats",category:"resources",severity:"info"},"info","Not applicable (modern format image data unavailable)",{recommendation:"This rule checks for modern image formats when image format information is available"});let e=t.modernFormatImages/t.imagesTotal*100;return e<50?a({id:"resources-image-format",name:"Modern Image Formats",category:"resources",severity:"info"},"info",`Only ${Math.round(e)}% of images use modern formats`,{value:t.modernFormatImages,recommendation:"Convert images to WebP or AVIF for 25-50% smaller files",evidence:{found:`${t.modernFormatImages}/${t.imagesTotal} modern format images`,expected:"WebP or AVIF for all images",impact:"Modern formats reduce image size by 25-50%"}}):a({id:"resources-image-format",name:"Modern Image Formats",category:"resources",severity:"info"},"pass",`${Math.round(e)}% of images use modern formats`)}},{id:"resources-image-dimensions",name:"Image Dimensions",category:"resources",severity:"warning",description:"Images should have width and height attributes",check:t=>t.imagesMissingDimensions===void 0?a({id:"resources-image-dimensions",name:"Image Dimensions",category:"resources",severity:"warning"},"info","Not applicable (image dimension information unavailable)",{recommendation:"This rule checks for image dimensions when image information is available"}):t.imagesMissingDimensions>0?a({id:"resources-image-dimensions",name:"Image Dimensions",category:"resources",severity:"warning"},"warn",`${t.imagesMissingDimensions} image(s) missing width/height`,{value:t.imagesMissingDimensions,recommendation:"Add width and height attributes to prevent layout shift",evidence:{impact:"Missing dimensions cause Cumulative Layout Shift (CLS)",example:'<img src="photo.jpg" width="800" height="600" alt="Photo">'}}):a({id:"resources-image-dimensions",name:"Image Dimensions",category:"resources",severity:"warning"},"pass","All images have width/height attributes")},{id:"resources-font-files",name:"Web Font Files",category:"resources",severity:"info",description:"Too many font files can slow page load",check:t=>{if(t.fontFilesCount===void 0)return a({id:"resources-font-files",name:"Web Font Files",category:"resources",severity:"info"},"info","Not applicable (font file information unavailable)",{recommendation:"This rule checks font file count when font information is available"});let e=4;return t.fontFilesCount>e?a({id:"resources-font-files",name:"Web Font Files",category:"resources",severity:"info"},"info",`${t.fontFilesCount} font files loaded`,{value:t.fontFilesCount,recommendation:`Limit to ${e} font files or use variable fonts`,evidence:{found:t.fontFilesCount,expected:`${e} or fewer`,impact:"Each font file adds to page weight and load time"}}):a({id:"resources-font-files",name:"Web Font Files",category:"resources",severity:"info"},"info","Not applicable (font file count is within limits)",{recommendation:"This rule checks for excessive font files that slow page load"})}},{id:"resources-font-display",name:"Font Display Strategy",category:"resources",severity:"info",description:"Use font-display: swap to prevent invisible text during load",check:t=>t.hasFontDisplaySwap===void 0?a({id:"resources-font-display",name:"Font Display Strategy",category:"resources",severity:"info"},"info","Not applicable (font display strategy information unavailable)",{recommendation:"This rule checks font display strategy when font information is available"}):!t.hasFontDisplaySwap&&t.fontFilesCount&&t.fontFilesCount>0?a({id:"resources-font-display",name:"Font Display Strategy",category:"resources",severity:"info"},"info","font-display: swap not detected",{recommendation:"Add font-display: swap to @font-face rules",evidence:{expected:"@font-face { font-display: swap; }",impact:"Without swap, text may be invisible during font load (FOIT)"}}):a({id:"resources-font-display",name:"Font Display Strategy",category:"resources",severity:"info"},"info","Not applicable (no fonts loaded or font-display is configured)",{recommendation:"This rule checks for font-display strategy when fonts are loaded"})},{id:"resources-total-requests",name:"Total HTTP Requests",category:"resources",severity:"warning",description:"Too many HTTP requests slow page load",check:t=>{if(t.totalRequests===void 0)return a({id:"resources-total-requests",name:"Total HTTP Requests",category:"resources",severity:"warning"},"info","Not applicable (total request count unavailable)",{recommendation:"This rule checks total HTTP requests when request information is available"});let e=50;return t.totalRequests>e?a({id:"resources-total-requests",name:"Total HTTP Requests",category:"resources",severity:"warning"},"warn",`Too many HTTP requests (${t.totalRequests})`,{value:t.totalRequests,recommendation:`Reduce to under ${e} requests by bundling and optimizing`,evidence:{found:t.totalRequests,expected:`${e} or fewer`,impact:"Each HTTP request adds latency"}}):a({id:"resources-total-requests",name:"Total HTTP Requests",category:"resources",severity:"warning"},"pass",`Good HTTP request count (${t.totalRequests})`)}},{id:"resources-total-size",name:"Total Page Size",category:"resources",severity:"warning",description:"Total page weight affects load time",check:t=>{if(t.totalPageSize===void 0)return a({id:"resources-total-size",name:"Total Page Size",category:"resources",severity:"warning"},"info","Not applicable (total page size information unavailable)",{recommendation:"This rule checks total page size when page weight information is available"});let e=3,r=t.totalPageSize/(1024*1024);return r>e?a({id:"resources-total-size",name:"Total Page Size",category:"resources",severity:"warning"},"warn",`Large page size (${r.toFixed(1)}MB)`,{value:Math.round(t.totalPageSize/1024),recommendation:`Reduce total page size to under ${e}MB`,evidence:{found:`${r.toFixed(1)}MB`,expected:`${e}MB or less`,impact:"Large pages are slow on mobile and low-bandwidth connections"}}):a({id:"resources-total-size",name:"Total Page Size",category:"resources",severity:"warning"},"pass",`Good page size (${r.toFixed(1)}MB)`)}},{id:"resources-compression",name:"Resource Compression",category:"resources",severity:"warning",description:"Text resources should be compressed with gzip or brotli",check:t=>t.uncompressedResources===void 0?a({id:"resources-compression",name:"Resource Compression",category:"resources",severity:"warning"},"info","Not applicable (resource compression information unavailable)",{recommendation:"This rule checks resource compression when resource information is available"}):t.uncompressedResources>0?a({id:"resources-compression",name:"Resource Compression",category:"resources",severity:"warning"},"warn",`${t.uncompressedResources} uncompressed resource(s)`,{value:t.uncompressedResources,recommendation:"Enable gzip or Brotli compression on your server",evidence:{impact:"Compression typically reduces file size by 60-80%"}}):a({id:"resources-compression",name:"Resource Compression",category:"resources",severity:"warning"},"pass","All text resources are compressed")},{id:"resources-caching",name:"Browser Caching",category:"resources",severity:"info",description:"Static resources should have long cache lifetimes",check:t=>t.resourcesWithoutCaching===void 0?a({id:"resources-caching",name:"Browser Caching",category:"resources",severity:"info"},"info","Not applicable (caching information unavailable)",{recommendation:"This rule checks browser caching when resource caching information is available"}):t.resourcesWithoutCaching>0?a({id:"resources-caching",name:"Browser Caching",category:"resources",severity:"info"},"info",`${t.resourcesWithoutCaching} resource(s) without proper caching`,{value:t.resourcesWithoutCaching,recommendation:"Set Cache-Control headers for static resources",evidence:{expected:"Cache-Control: max-age=31536000 for static assets",impact:"Proper caching improves repeat visit performance"}}):a({id:"resources-caching",name:"Browser Caching",category:"resources",severity:"info"},"pass","Static resources have proper caching")},{id:"broken-external-resources",name:"Broken External Resources",category:"resources",severity:"warning",description:"External JS/CSS files should be accessible",check:t=>{var e;return t.brokenExternalResources===void 0?a({id:"broken-external-resources",name:"Broken External Resources",category:"resources",severity:"warning"},"info","Not applicable (external resource status information unavailable)",{recommendation:"This rule checks for broken external resources when resource information is available"}):t.brokenExternalResources>0?a({id:"broken-external-resources",name:"Broken External Resources",category:"resources",severity:"warning"},"warn",`${t.brokenExternalResources} broken external JS/CSS files`,{value:t.brokenExternalResources,recommendation:"Fix or remove references to broken external resources",evidence:{found:((e=t.brokenExternalResourceUrls)==null?void 0:e.slice(0,5))||[],impact:"Broken resources may cause rendering issues and affect user experience"}}):a({id:"broken-external-resources",name:"Broken External Resources",category:"resources",severity:"warning"},"info","Not applicable (no broken external resources detected)",{recommendation:"This rule checks for broken external JS/CSS files"})}}];var Od=[{id:"meta-refresh-redirect",name:"Meta Refresh Redirect",category:"technical",severity:"warning",description:"Pages should not use meta refresh redirects",check:t=>{if(!t.metaRefresh)return a({id:"meta-refresh-redirect",name:"Meta Refresh Redirect",category:"technical",severity:"warning"},"info","Not applicable (no meta refresh detected)",{recommendation:"This rule checks for meta refresh redirects which can impact SEO"});let{delay:e,url:r}=t.metaRefresh;return r?a({id:"meta-refresh-redirect",name:"Meta Refresh Redirect",category:"technical",severity:"warning"},e===0?"warn":"fail",`Page uses meta refresh redirect (${e}s delay)`,{value:e,recommendation:"Use HTTP 301/302 redirects instead of meta refresh for SEO",evidence:{found:`<meta http-equiv="refresh" content="${e};url=${r}">`,expected:"HTTP 301/302 redirect",impact:e>0?"Meta refresh with delay confuses users and search engines":"Meta refresh redirects are not as SEO-friendly as HTTP redirects",learnMore:"https://developers.google.com/search/docs/crawling-indexing/http-network-errors#meta-refresh"}}):e>0?a({id:"meta-refresh-redirect",name:"Meta Refresh Redirect",category:"technical",severity:"warning"},"warn",`Page auto-refreshes every ${e} seconds`,{value:e,recommendation:"Avoid auto-refresh; let users control when to refresh content",evidence:{found:`<meta http-equiv="refresh" content="${e}">`,expected:"No auto-refresh",impact:"Auto-refresh can be disorienting and wastes bandwidth"}}):a({id:"meta-refresh-redirect",name:"Meta Refresh Redirect",category:"technical",severity:"warning"},"info","Not applicable (no meta refresh detected)",{recommendation:"This rule checks for meta refresh redirects which can impact SEO"})}},{id:"html-page-size",name:"HTML Page Size",category:"performance",severity:"warning",description:"HTML page should not exceed reasonable size limits",check:t=>{if(t.htmlSize===void 0)return a({id:"html-page-size",name:"HTML Page Size",category:"performance",severity:"warning"},"info","Not applicable (HTML size data unavailable)",{recommendation:"This rule checks if HTML size is within recommended limits for optimal performance"});let e=t.htmlSize/1024,r=e/1024;return r>2?a({id:"html-page-size",name:"HTML Page Size",category:"performance",severity:"warning"},"fail",`HTML size ${r.toFixed(2)}MB exceeds 2MB limit`,{value:t.htmlSize,recommendation:"Reduce HTML size by removing inline scripts/styles and optimizing content",evidence:{found:`${r.toFixed(2)}MB`,expected:"<2MB",impact:"Very large HTML files slow down crawling and may not be fully indexed"}}):e>500?a({id:"html-page-size",name:"HTML Page Size",category:"performance",severity:"warning"},"warn",`HTML size ${e.toFixed(0)}KB is large`,{value:t.htmlSize,recommendation:"Consider reducing HTML size for faster page loads",evidence:{found:`${e.toFixed(0)}KB`,expected:"<500KB",impact:"Large HTML files increase time to first meaningful paint"}}):a({id:"html-page-size",name:"HTML Page Size",category:"performance",severity:"warning"},"pass",`HTML size ${e.toFixed(0)}KB is acceptable`)}},{id:"total-page-size",name:"Total Page Size",category:"performance",severity:"warning",description:"Total page weight should be optimized for performance",check:t=>{if(t.totalPageSize===void 0)return a({id:"total-page-size",name:"Total Page Size",category:"performance",severity:"warning"},"info","Not applicable (total page size data unavailable)",{recommendation:"This rule checks total page weight including all resources for optimal load time"});let e=t.totalPageSize/(1024*1024);return e>5?a({id:"total-page-size",name:"Total Page Size",category:"performance",severity:"warning"},"fail",`Total page size ${e.toFixed(2)}MB exceeds 5MB`,{value:t.totalPageSize,recommendation:"Optimize images, defer scripts, and reduce overall page weight",evidence:{found:`${e.toFixed(2)}MB`,expected:"<5MB",impact:"Very large pages significantly impact mobile users and Core Web Vitals"}}):e>3?a({id:"total-page-size",name:"Total Page Size",category:"performance",severity:"warning"},"warn",`Total page size ${e.toFixed(2)}MB is large`,{value:t.totalPageSize,recommendation:"Consider optimizing resources to improve load times",evidence:{found:`${e.toFixed(2)}MB`,expected:"<3MB",impact:"Large pages increase bounce rate, especially on mobile"}}):a({id:"total-page-size",name:"Total Page Size",category:"performance",severity:"warning"},"pass",`Total page size ${e.toFixed(2)}MB is acceptable`)}},{id:"server-response-time",name:"Server Response Time",category:"performance",severity:"warning",description:"Server should respond within acceptable time limits",check:t=>{var r;let e=(r=t.timings)==null?void 0:r.ttfb;return e===void 0?a({id:"server-response-time",name:"Server Response Time",category:"performance",severity:"warning"},"info","Not applicable (TTFB timing data unavailable)",{recommendation:"This rule checks server response time (TTFB) for performance optimization"}):e>5e3?a({id:"server-response-time",name:"Server Response Time",category:"performance",severity:"warning"},"fail",`TTFB ${(e/1e3).toFixed(2)}s exceeds 5s`,{value:e,recommendation:"Investigate server performance, caching, and database queries",evidence:{found:`${(e/1e3).toFixed(2)}s`,expected:"<5s",impact:"Very slow server response leads to timeout errors and poor UX"}}):e>2e3?a({id:"server-response-time",name:"Server Response Time",category:"performance",severity:"warning"},"warn",`TTFB ${(e/1e3).toFixed(2)}s is slow`,{value:e,recommendation:"Optimize server response time for better Core Web Vitals",evidence:{found:`${(e/1e3).toFixed(2)}s`,expected:"<2s (ideally <600ms)",impact:"Slow server response negatively affects LCP and user experience"}}):a({id:"server-response-time",name:"Server Response Time",category:"performance",severity:"warning"},"pass",`TTFB ${e}ms is good`)}},{id:"url-length",name:"URL Length",category:"technical",severity:"warning",description:"URLs should not be excessively long",check:t=>{if(!t.url)return a({id:"url-length",name:"URL Length",category:"technical",severity:"warning"},"info","Not applicable (URL data unavailable)",{recommendation:"This rule checks URL length to ensure it is within recommended limits"});let e=t.url.length;return e>2e3?a({id:"url-length",name:"URL Length",category:"technical",severity:"warning"},"fail",`URL length ${e} chars exceeds browser limits`,{value:e,recommendation:"Shorten URL to under 2000 characters",evidence:{found:`${e} characters`,expected:"<2000 characters",impact:"URLs over 2000 characters may be truncated or rejected by browsers"}}):e>200?a({id:"url-length",name:"URL Length",category:"technical",severity:"warning"},"warn",`URL length ${e} chars is long`,{value:e,recommendation:"Consider using shorter, cleaner URLs for SEO",evidence:{found:`${e} characters`,expected:"<200 characters for best SEO",impact:"Long URLs are harder to share and may be truncated in SERPs"}}):a({id:"url-length",name:"URL Length",category:"technical",severity:"warning"},"pass",`URL length ${e} chars is acceptable`)}},{id:"url-special-chars",name:"URL Special Characters",category:"technical",severity:"warning",description:"URLs should not contain problematic special characters",check:t=>{if(!t.url)return a({id:"url-special-chars",name:"URL Special Characters",category:"technical",severity:"warning"},"info","Not applicable (URL data unavailable)",{recommendation:"This rule checks for problematic special characters in URLs"});try{let e=new URL(t.url),r=e.pathname+e.search,n=[];return/[A-Z]/.test(r)&&n.push("uppercase letters"),(r.includes(" ")||r.includes("%20"))&&n.push("spaces"),r.includes("_")&&n.push("underscores (use hyphens)"),/\/\//.test(r)&&n.push("double slashes"),/[àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ]/i.test(decodeURIComponent(r))&&n.push("accented characters"),n.length>0?a({id:"url-special-chars",name:"URL Special Characters",category:"technical",severity:"warning"},"warn",`URL contains: ${n.join(", ")}`,{recommendation:"Use lowercase letters, hyphens, and avoid special characters",evidence:{found:n,expected:"Lowercase letters, numbers, hyphens only",impact:"Non-standard URL characters can cause crawling and indexing issues"}}):a({id:"url-special-chars",name:"URL Special Characters",category:"technical",severity:"warning"},"pass","URL uses clean, SEO-friendly characters")}catch{return a({id:"url-special-chars",name:"URL Special Characters",category:"technical",severity:"warning"},"fail","Invalid URL syntax",{recommendation:"Fix URL syntax",evidence:{found:t.url,expected:"Valid URL format (e.g., https://example.com/path)",impact:"Invalid URLs cannot be crawled or indexed",example:"https://example.com/valid-path-with-hyphens"}})}}},{id:"password-on-http",name:"Password Fields on HTTP",category:"security",severity:"error",description:"Pages with password fields must use HTTPS",check:t=>!t.hasPasswordField||t.isHttps===void 0?a({id:"password-on-http",name:"Password Fields on HTTP",category:"security",severity:"error"},"info","Not applicable (no password fields detected)",{recommendation:"This rule ensures password fields are served over HTTPS for security"}):t.hasPasswordField&&!t.isHttps?a({id:"password-on-http",name:"Password Fields on HTTP",category:"security",severity:"error"},"fail","Password field detected on non-HTTPS page",{recommendation:"Serve login/registration pages over HTTPS only",evidence:{found:'<input type="password"> on HTTP',expected:"HTTPS for all pages with password fields",impact:"User credentials can be intercepted in transit",learnMore:"https://web.dev/is-on-https/"}}):a({id:"password-on-http",name:"Password Fields on HTTP",category:"security",severity:"error"},"pass","Password field properly served over HTTPS")},{id:"forms-on-http",name:"Forms on HTTP",category:"security",severity:"warning",description:"Forms should submit data over HTTPS",check:t=>t.formsOnHttp===void 0?a({id:"forms-on-http",name:"Forms on HTTP",category:"security",severity:"warning"},"info","Not applicable (form data unavailable)",{recommendation:"This rule checks if forms submit data over secure HTTPS connections"}):t.formsOnHttp>0?a({id:"forms-on-http",name:"Forms on HTTP",category:"security",severity:"warning"},"warn",`${t.formsOnHttp} form(s) submit to HTTP URLs`,{value:t.formsOnHttp,recommendation:"Update form actions to use HTTPS URLs",evidence:{found:t.formsOnHttp,expected:0,impact:"Form data submitted over HTTP can be intercepted"}}):a({id:"forms-on-http",name:"Forms on HTTP",category:"security",severity:"warning"},"pass","All forms submit over HTTPS or no forms detected")}];var zd=[{id:"redirect-chain-length",name:"Redirect Chain Length",category:"technical",severity:"warning",description:"Redirect chains should not exceed 3 hops",check:t=>{if(t.redirectChain===void 0)return a({id:"redirect-chain-length",name:"Redirect Chain Length",category:"technical",severity:"warning"},"info","Unable to check redirect chain (data unavailable)",{recommendation:"Ensure redirect analysis completed"});let e=t.redirectChain.length;return e===0?a({id:"redirect-chain-length",name:"Redirect Chain Length",category:"technical",severity:"warning"},"pass","No redirects detected"):e>5?a({id:"redirect-chain-length",name:"Redirect Chain Length",category:"technical",severity:"warning"},"fail",`Redirect chain has ${e} hops (excessive)`,{value:e,recommendation:"Consolidate redirects to point directly to final URL",evidence:{found:t.redirectChain.map(r=>`${r.status} ${r.from} \u2192 ${r.to}`),expected:"Direct link to final destination",impact:"Long redirect chains waste crawl budget and increase latency"}}):e>3?a({id:"redirect-chain-length",name:"Redirect Chain Length",category:"technical",severity:"warning"},"warn",`Redirect chain has ${e} hops`,{value:e,recommendation:"Reduce redirect chain by updating original links",evidence:{found:t.redirectChain.map(r=>`${r.status} ${r.from} \u2192 ${r.to}`),expected:"Maximum 3 redirects",impact:"Excessive redirects slow page load and lose link equity"}}):a({id:"redirect-chain-length",name:"Redirect Chain Length",category:"technical",severity:"warning"},"info",`Page reached after ${e} redirect(s)`,{value:e,evidence:{found:t.redirectChain.map(r=>`${r.status} ${r.from} \u2192 ${r.to}`)}})}},{id:"redirect-loop",name:"Redirect Loop",category:"technical",severity:"error",description:"Pages should not create redirect loops",check:t=>{if(!t.redirectChain||t.redirectChain.length===0)return a({id:"redirect-loop",name:"Redirect Loop",category:"technical",severity:"error"},"pass","No redirect chain to check for loops");let e=t.redirectChain.map(i=>i.from);e.push(t.redirectChain[t.redirectChain.length-1].to);let r=new Set,n;for(let i of e){let o=Xx(i);if(r.has(o)){n=i;break}r.add(o)}return n?a({id:"redirect-loop",name:"Redirect Loop",category:"technical",severity:"error"},"fail","Redirect loop detected",{recommendation:"Fix server configuration to break the redirect loop",evidence:{found:t.redirectChain.map(i=>`${i.status} ${i.from} \u2192 ${i.to}`),issue:`Loop at: ${n}`,impact:"Redirect loops prevent page from being crawled and indexed"}}):a({id:"redirect-loop",name:"Redirect Loop",category:"technical",severity:"error"},"pass","No redirect loop detected")}},{id:"redirect-type",name:"Redirect Type",category:"technical",severity:"info",description:"Permanent content moves should use 301 redirects",check:t=>{if(!t.redirectChain||t.redirectChain.length===0)return a({id:"redirect-type",name:"Redirect Type",category:"technical",severity:"info"},"info","No redirects to analyze",{recommendation:"Page loaded without redirects"});let e=t.redirectChain.filter(n=>n.status===302||n.status===307),r=t.redirectChain.filter(n=>n.status===301||n.status===308);return e.length>0&&r.length===0?a({id:"redirect-type",name:"Redirect Type",category:"technical",severity:"info"},"warn",`Using temporary redirect (${e[0].status})`,{recommendation:"Use 301 redirect for permanent URL changes to pass link equity",evidence:{found:`${e[0].status} ${e[0].from} \u2192 ${e[0].to}`,expected:"301 for permanent moves, 302 only for temporary changes",impact:"Temporary redirects may not pass full link equity"}}):r.length>0?a({id:"redirect-type",name:"Redirect Type",category:"technical",severity:"info"},"pass","Using permanent redirect (301)"):a({id:"redirect-type",name:"Redirect Type",category:"technical",severity:"info"},"info","Unknown redirect type",{recommendation:"Check redirect status codes"})}},{id:"www-consistency",name:"WWW vs Non-WWW",category:"canonicalization",severity:"warning",description:"Site should redirect consistently to either WWW or non-WWW version",check:t=>{if(t.wwwConsistency===void 0)return a({id:"www-consistency",name:"WWW vs Non-WWW",category:"canonicalization",severity:"warning"},"info","Unable to check WWW consistency (data unavailable)",{recommendation:"Ensure WWW/non-WWW analysis completed"});let{canonicalHasWww:e,urlHasWww:r,redirectsToCanonical:n}=t.wwwConsistency;return e!==r&&!n?a({id:"www-consistency",name:"WWW vs Non-WWW",category:"canonicalization",severity:"warning"},"warn","WWW/non-WWW version accessible without redirect",{recommendation:"Set up 301 redirect from non-canonical version to canonical",evidence:{found:r?"www version":"non-www version",expected:`Redirect to ${e?"www":"non-www"} version`,impact:"Duplicate content issues when both versions are accessible"}}):a({id:"www-consistency",name:"WWW vs Non-WWW",category:"canonicalization",severity:"warning"},"pass","WWW handling is consistent")}},{id:"http-to-https-redirect",name:"HTTP to HTTPS Redirect",category:"security",severity:"warning",description:"HTTP version should redirect to HTTPS",check:t=>t.httpRedirectsToHttps===void 0?a({id:"http-to-https-redirect",name:"HTTP to HTTPS Redirect",category:"security",severity:"warning"},"info","Unable to check HTTP to HTTPS redirect (data unavailable)",{recommendation:"Ensure HTTPS redirect analysis completed"}):t.httpRedirectsToHttps?a({id:"http-to-https-redirect",name:"HTTP to HTTPS Redirect",category:"security",severity:"warning"},"pass","HTTP properly redirects to HTTPS"):a({id:"http-to-https-redirect",name:"HTTP to HTTPS Redirect",category:"security",severity:"warning"},"warn","HTTP version does not redirect to HTTPS",{recommendation:"Configure server to redirect HTTP traffic to HTTPS",evidence:{found:"HTTP accessible without redirect",expected:"301 redirect from HTTP to HTTPS",impact:"Users may access insecure version; duplicate content issues",learnMore:"https://web.dev/why-https-matters/"}})},{id:"cross-domain-redirect",name:"Cross-Domain Redirect",category:"technical",severity:"info",description:"Detects redirects to different domains",check:t=>{if(!t.redirectChain||t.redirectChain.length===0)return a({id:"cross-domain-redirect",name:"Cross-Domain Redirect",category:"technical",severity:"info"},"info","No redirect chain to check",{recommendation:"Page loaded without redirects"});let e=t.redirectChain.filter(r=>{try{let n=new URL(r.from).hostname,i=new URL(r.to).hostname;return n!==i}catch{return!1}});return e.length>0?a({id:"cross-domain-redirect",name:"Cross-Domain Redirect",category:"technical",severity:"info"},"info",`${e.length} cross-domain redirect(s) detected`,{value:e.length,evidence:{found:e.map(r=>`${r.from} \u2192 ${r.to}`),impact:"Cross-domain redirects may indicate site migration or tracking"}}):a({id:"cross-domain-redirect",name:"Cross-Domain Redirect",category:"technical",severity:"info"},"pass","No cross-domain redirects")}}];function Xx(t){try{let e=new URL(t);return`${e.protocol}//${e.hostname}${e.pathname.replace(/\/$/,"")}${e.search}`}catch{return t.toLowerCase()}}var jd=[{id:"canonical-present",name:"Canonical Tag Present",category:"canonicalization",severity:"warning",description:"Pages should have a canonical URL defined",check:t=>t.hasCanonical===void 0?a({id:"canonical-present",name:"Canonical Tag Present",category:"canonicalization",severity:"warning"},"info","Not applicable (canonical data unavailable)",{recommendation:"This rule checks if a canonical URL is defined to avoid duplicate content issues"}):t.hasCanonical?a({id:"canonical-present",name:"Canonical Tag Present",category:"canonicalization",severity:"warning"},"pass","Canonical tag is present"):a({id:"canonical-present",name:"Canonical Tag Present",category:"canonicalization",severity:"warning"},"warn","Page is missing canonical tag",{recommendation:'Add <link rel="canonical" href="..."> to specify the preferred URL',evidence:{found:"No canonical tag",expected:'<link rel="canonical" href="https://example.com/page">',impact:"Without canonical, search engines may index duplicate versions",example:`<head>
|
|
406
406
|
<link rel="canonical" href="https://example.com/page" />
|
|
407
|
-
</head>`}})},{id:"canonical-multiple",name:"Multiple Canonical Tags",category:"canonicalization",severity:"error",description:"Page should have only one canonical tag",check:t=>t.canonicalCount===void 0?a({id:"canonical-multiple",name:"Multiple Canonical Tags",category:"canonicalization",severity:"error"},"info","Not applicable (canonical count data unavailable)",{recommendation:"This rule ensures only one canonical tag exists per page"}):t.canonicalCount>1?a({id:"canonical-multiple",name:"Multiple Canonical Tags",category:"canonicalization",severity:"error"},"fail",`Page has ${t.canonicalCount} canonical tags`,{value:t.canonicalCount,recommendation:"Remove duplicate canonical tags; keep only one",evidence:{found:t.canonicalUrls||[],expected:"Single canonical tag",impact:"Multiple canonicals confuse search engines about preferred URL",example:'<link rel="canonical" href="https://example.com/page" /> <!-- Keep only one -->'}}):a({id:"canonical-multiple",name:"Multiple Canonical Tags",category:"canonicalization",severity:"error"},"pass","Single canonical tag found")},{id:"canonical-self-referencing",name:"Canonical Self-Reference",category:"canonicalization",severity:"info",description:"Canonical should typically point to the current page URL",check:t=>!t.canonicalUrl||!t.url?a({id:"canonical-self-referencing",name:"Canonical Self-Reference",category:"canonicalization",severity:"info"},"info","Not applicable (canonical or URL data unavailable)",{recommendation:"This rule checks if canonical URL points to the current page"}):
|
|
408
|
-
Canonical: ${t.canonicalUrl}`}})},{id:"canonical-broken",name:"Broken Canonical URL",category:"canonicalization",severity:"error",description:"Canonical URL should be accessible (not 404)",check:t=>t.canonicalStatus===void 0?a({id:"canonical-broken",name:"Broken Canonical URL",category:"canonicalization",severity:"error"},"info","Not applicable (canonical status data unavailable)",{recommendation:"This rule validates that canonical URL is accessible and returns 200 OK"}):t.canonicalStatus===404?a({id:"canonical-broken",name:"Broken Canonical URL",category:"canonicalization",severity:"error"},"fail","Canonical URL returns 404",{value:t.canonicalUrl,recommendation:"Fix canonical to point to an existing, accessible page",evidence:{found:`${t.canonicalUrl} \u2192 404`,expected:"200 OK",impact:"Broken canonical prevents proper indexing",example:'<link rel="canonical" href="https://example.com/existing-page" />'}}):t.canonicalStatus>=400?a({id:"canonical-broken",name:"Broken Canonical URL",category:"canonicalization",severity:"error"},"fail",`Canonical URL returns error (${t.canonicalStatus})`,{value:t.canonicalUrl,recommendation:"Fix canonical to point to an accessible page",evidence:{found:`${t.canonicalUrl} \u2192 ${t.canonicalStatus}`,expected:"200 OK",impact:"Canonical errors prevent proper indexing",example:'<link rel="canonical" href="https://example.com/accessible-page" />'}}):t.canonicalStatus>=300&&t.canonicalFinalUrl?a({id:"canonical-broken",name:"Broken Canonical URL",category:"canonicalization",severity:"error"},"warn","Canonical URL redirects",{value:t.canonicalUrl,recommendation:"Update canonical to final destination URL",evidence:{found:`${t.canonicalUrl} \u2192 ${t.canonicalFinalUrl}`,expected:"Direct URL without redirect",impact:"Canonical redirects waste crawl budget",example:`<link rel="canonical" href="${t.canonicalFinalUrl}" />`}}):a({id:"canonical-broken",name:"Broken Canonical URL",category:"canonicalization",severity:"error"},"pass","Canonical URL is accessible")},{id:"canonical-protocol",name:"Canonical Protocol",category:"canonicalization",severity:"warning",description:"Canonical should use HTTPS protocol",check:t=>t.canonicalUrl?t.canonicalUrl.startsWith("http://")?a({id:"canonical-protocol",name:"Canonical Protocol",category:"canonicalization",severity:"warning"},"warn","Canonical uses HTTP instead of HTTPS",{value:t.canonicalUrl,recommendation:"Update canonical to use HTTPS",evidence:{found:t.canonicalUrl,expected:t.canonicalUrl.replace("http://","https://"),impact:"HTTP canonicals may cause indexing preference issues",example:`<link rel="canonical" href="${t.canonicalUrl.replace("http://","https://")}" />`}}):a({id:"canonical-protocol",name:"Canonical Protocol",category:"canonicalization",severity:"warning"},"pass","Canonical uses HTTPS"):a({id:"canonical-protocol",name:"Canonical Protocol",category:"canonicalization",severity:"warning"},"info","Not applicable (no canonical URL detected)",{recommendation:"This rule ensures canonical URLs use HTTPS protocol for security"})},{id:"canonical-absolute",name:"Canonical Absolute URL",category:"canonicalization",severity:"warning",description:"Canonical URL should be absolute, not relative",check:t=>t.canonicalUrl?!t.canonicalUrl.startsWith("http://")&&!t.canonicalUrl.startsWith("https://")&&!t.canonicalUrl.startsWith("//")?a({id:"canonical-absolute",name:"Canonical Absolute URL",category:"canonicalization",severity:"warning"},"warn","Canonical URL is relative",{value:t.canonicalUrl,recommendation:"Use absolute URL including protocol and domain",evidence:{found:t.canonicalUrl,expected:"https://example.com/page",impact:"Relative canonicals may be misinterpreted by crawlers",example:'<link rel="canonical" href="https://example.com/page" />'}}):a({id:"canonical-absolute",name:"Canonical Absolute URL",category:"canonicalization",severity:"warning"},"pass","Canonical URL is absolute"):a({id:"canonical-absolute",name:"Canonical Absolute URL",category:"canonicalization",severity:"warning"},"info","Not applicable (no canonical URL detected)",{recommendation:"This rule checks that canonical URLs are absolute, not relative"})},{id:"canonical-chain",name:"Canonical Chain",category:"canonicalization",severity:"warning",description:"Canonical should not create chains",check:t=>{var e;return t.canonicalChainLength===void 0?a({id:"canonical-chain",name:"Canonical Chain",category:"canonicalization",severity:"warning"},"info","Not applicable (canonical chain data unavailable)",{recommendation:"This rule detects canonical chains where one canonical points to another"}):t.canonicalChainLength>1?a({id:"canonical-chain",name:"Canonical Chain",category:"canonicalization",severity:"warning"},"warn",`Canonical chain detected (${t.canonicalChainLength} hops)`,{value:t.canonicalChainLength,recommendation:"Update canonical to point directly to final canonical URL",evidence:{found:t.canonicalChain||[],expected:"Direct canonical to final URL",impact:"Canonical chains may cause consolidation issues",example:`<link rel="canonical" href="${((e=t.canonicalChain)==null?void 0:e[t.canonicalChain.length-1])||"https://example.com/final-page"}" />`}}):a({id:"canonical-chain",name:"Canonical Chain",category:"canonicalization",severity:"warning"},"pass","No canonical chain detected")}},{id:"canonical-parameters",name:"Canonical Query Parameters",category:"canonicalization",severity:"info",description:"Canonical URLs with query parameters should be intentional",check:t=>{if(!t.canonicalUrl)return a({id:"canonical-parameters",name:"Canonical Query Parameters",category:"canonicalization",severity:"info"},"info","Not applicable (no canonical URL detected)",{recommendation:"This rule checks for query parameters in canonical URLs"});try{let e=new URL(t.canonicalUrl);if(e.search&&e.search.length>1)return a({id:"canonical-parameters",name:"Canonical Query Parameters",category:"canonicalization",severity:"info"},"info","Canonical contains query parameters",{value:t.canonicalUrl,recommendation:"Verify query parameters in canonical are intentional",evidence:{found:e.search,impact:"Query parameters in canonicals may indicate tracking or filtering"}})}catch{}return a({id:"canonical-parameters",name:"Canonical Query Parameters",category:"canonicalization",severity:"info"},"pass","Canonical URL has no query parameters")}},{id:"canonical-noindex-conflict",name:"Canonical + Noindex Conflict",category:"canonicalization",severity:"warning",description:"Pages with noindex should not have canonical to indexed page",check:t=>!t.hasCanonical||t.metaRobots===void 0?a({id:"canonical-noindex-conflict",name:"Canonical + Noindex Conflict",category:"canonicalization",severity:"warning"},"info","Not applicable (canonical or robots meta tag data unavailable)",{recommendation:"This rule detects conflicting noindex and canonical directives"}):(Array.isArray(t.metaRobots)?t.metaRobots:[t.metaRobots]).some(n=>n.toLowerCase().includes("noindex"))&&t.canonicalUrl&&t.url&&
|
|
407
|
+
</head>`}})},{id:"canonical-multiple",name:"Multiple Canonical Tags",category:"canonicalization",severity:"error",description:"Page should have only one canonical tag",check:t=>t.canonicalCount===void 0?a({id:"canonical-multiple",name:"Multiple Canonical Tags",category:"canonicalization",severity:"error"},"info","Not applicable (canonical count data unavailable)",{recommendation:"This rule ensures only one canonical tag exists per page"}):t.canonicalCount>1?a({id:"canonical-multiple",name:"Multiple Canonical Tags",category:"canonicalization",severity:"error"},"fail",`Page has ${t.canonicalCount} canonical tags`,{value:t.canonicalCount,recommendation:"Remove duplicate canonical tags; keep only one",evidence:{found:t.canonicalUrls||[],expected:"Single canonical tag",impact:"Multiple canonicals confuse search engines about preferred URL",example:'<link rel="canonical" href="https://example.com/page" /> <!-- Keep only one -->'}}):a({id:"canonical-multiple",name:"Multiple Canonical Tags",category:"canonicalization",severity:"error"},"pass","Single canonical tag found")},{id:"canonical-self-referencing",name:"Canonical Self-Reference",category:"canonicalization",severity:"info",description:"Canonical should typically point to the current page URL",check:t=>!t.canonicalUrl||!t.url?a({id:"canonical-self-referencing",name:"Canonical Self-Reference",category:"canonicalization",severity:"info"},"info","Not applicable (canonical or URL data unavailable)",{recommendation:"This rule checks if canonical URL points to the current page"}):Hi(t.canonicalUrl)===Hi(t.url)?a({id:"canonical-self-referencing",name:"Canonical Self-Reference",category:"canonicalization",severity:"info"},"pass","Canonical is self-referencing"):a({id:"canonical-self-referencing",name:"Canonical Self-Reference",category:"canonicalization",severity:"info"},"info","Canonical points to different URL",{recommendation:"Verify this is intentional canonicalization",evidence:{found:t.canonicalUrl,expected:t.url,impact:"This page signals to search engines that another URL is preferred",example:`Current URL: ${t.url}
|
|
408
|
+
Canonical: ${t.canonicalUrl}`}})},{id:"canonical-broken",name:"Broken Canonical URL",category:"canonicalization",severity:"error",description:"Canonical URL should be accessible (not 404)",check:t=>t.canonicalStatus===void 0?a({id:"canonical-broken",name:"Broken Canonical URL",category:"canonicalization",severity:"error"},"info","Not applicable (canonical status data unavailable)",{recommendation:"This rule validates that canonical URL is accessible and returns 200 OK"}):t.canonicalStatus===404?a({id:"canonical-broken",name:"Broken Canonical URL",category:"canonicalization",severity:"error"},"fail","Canonical URL returns 404",{value:t.canonicalUrl,recommendation:"Fix canonical to point to an existing, accessible page",evidence:{found:`${t.canonicalUrl} \u2192 404`,expected:"200 OK",impact:"Broken canonical prevents proper indexing",example:'<link rel="canonical" href="https://example.com/existing-page" />'}}):t.canonicalStatus>=400?a({id:"canonical-broken",name:"Broken Canonical URL",category:"canonicalization",severity:"error"},"fail",`Canonical URL returns error (${t.canonicalStatus})`,{value:t.canonicalUrl,recommendation:"Fix canonical to point to an accessible page",evidence:{found:`${t.canonicalUrl} \u2192 ${t.canonicalStatus}`,expected:"200 OK",impact:"Canonical errors prevent proper indexing",example:'<link rel="canonical" href="https://example.com/accessible-page" />'}}):t.canonicalStatus>=300&&t.canonicalFinalUrl?a({id:"canonical-broken",name:"Broken Canonical URL",category:"canonicalization",severity:"error"},"warn","Canonical URL redirects",{value:t.canonicalUrl,recommendation:"Update canonical to final destination URL",evidence:{found:`${t.canonicalUrl} \u2192 ${t.canonicalFinalUrl}`,expected:"Direct URL without redirect",impact:"Canonical redirects waste crawl budget",example:`<link rel="canonical" href="${t.canonicalFinalUrl}" />`}}):a({id:"canonical-broken",name:"Broken Canonical URL",category:"canonicalization",severity:"error"},"pass","Canonical URL is accessible")},{id:"canonical-protocol",name:"Canonical Protocol",category:"canonicalization",severity:"warning",description:"Canonical should use HTTPS protocol",check:t=>t.canonicalUrl?t.canonicalUrl.startsWith("http://")?a({id:"canonical-protocol",name:"Canonical Protocol",category:"canonicalization",severity:"warning"},"warn","Canonical uses HTTP instead of HTTPS",{value:t.canonicalUrl,recommendation:"Update canonical to use HTTPS",evidence:{found:t.canonicalUrl,expected:t.canonicalUrl.replace("http://","https://"),impact:"HTTP canonicals may cause indexing preference issues",example:`<link rel="canonical" href="${t.canonicalUrl.replace("http://","https://")}" />`}}):a({id:"canonical-protocol",name:"Canonical Protocol",category:"canonicalization",severity:"warning"},"pass","Canonical uses HTTPS"):a({id:"canonical-protocol",name:"Canonical Protocol",category:"canonicalization",severity:"warning"},"info","Not applicable (no canonical URL detected)",{recommendation:"This rule ensures canonical URLs use HTTPS protocol for security"})},{id:"canonical-absolute",name:"Canonical Absolute URL",category:"canonicalization",severity:"warning",description:"Canonical URL should be absolute, not relative",check:t=>t.canonicalUrl?!t.canonicalUrl.startsWith("http://")&&!t.canonicalUrl.startsWith("https://")&&!t.canonicalUrl.startsWith("//")?a({id:"canonical-absolute",name:"Canonical Absolute URL",category:"canonicalization",severity:"warning"},"warn","Canonical URL is relative",{value:t.canonicalUrl,recommendation:"Use absolute URL including protocol and domain",evidence:{found:t.canonicalUrl,expected:"https://example.com/page",impact:"Relative canonicals may be misinterpreted by crawlers",example:'<link rel="canonical" href="https://example.com/page" />'}}):a({id:"canonical-absolute",name:"Canonical Absolute URL",category:"canonicalization",severity:"warning"},"pass","Canonical URL is absolute"):a({id:"canonical-absolute",name:"Canonical Absolute URL",category:"canonicalization",severity:"warning"},"info","Not applicable (no canonical URL detected)",{recommendation:"This rule checks that canonical URLs are absolute, not relative"})},{id:"canonical-chain",name:"Canonical Chain",category:"canonicalization",severity:"warning",description:"Canonical should not create chains",check:t=>{var e;return t.canonicalChainLength===void 0?a({id:"canonical-chain",name:"Canonical Chain",category:"canonicalization",severity:"warning"},"info","Not applicable (canonical chain data unavailable)",{recommendation:"This rule detects canonical chains where one canonical points to another"}):t.canonicalChainLength>1?a({id:"canonical-chain",name:"Canonical Chain",category:"canonicalization",severity:"warning"},"warn",`Canonical chain detected (${t.canonicalChainLength} hops)`,{value:t.canonicalChainLength,recommendation:"Update canonical to point directly to final canonical URL",evidence:{found:t.canonicalChain||[],expected:"Direct canonical to final URL",impact:"Canonical chains may cause consolidation issues",example:`<link rel="canonical" href="${((e=t.canonicalChain)==null?void 0:e[t.canonicalChain.length-1])||"https://example.com/final-page"}" />`}}):a({id:"canonical-chain",name:"Canonical Chain",category:"canonicalization",severity:"warning"},"pass","No canonical chain detected")}},{id:"canonical-parameters",name:"Canonical Query Parameters",category:"canonicalization",severity:"info",description:"Canonical URLs with query parameters should be intentional",check:t=>{if(!t.canonicalUrl)return a({id:"canonical-parameters",name:"Canonical Query Parameters",category:"canonicalization",severity:"info"},"info","Not applicable (no canonical URL detected)",{recommendation:"This rule checks for query parameters in canonical URLs"});try{let e=new URL(t.canonicalUrl);if(e.search&&e.search.length>1)return a({id:"canonical-parameters",name:"Canonical Query Parameters",category:"canonicalization",severity:"info"},"info","Canonical contains query parameters",{value:t.canonicalUrl,recommendation:"Verify query parameters in canonical are intentional",evidence:{found:e.search,impact:"Query parameters in canonicals may indicate tracking or filtering"}})}catch{}return a({id:"canonical-parameters",name:"Canonical Query Parameters",category:"canonicalization",severity:"info"},"pass","Canonical URL has no query parameters")}},{id:"canonical-noindex-conflict",name:"Canonical + Noindex Conflict",category:"canonicalization",severity:"warning",description:"Pages with noindex should not have canonical to indexed page",check:t=>!t.hasCanonical||t.metaRobots===void 0?a({id:"canonical-noindex-conflict",name:"Canonical + Noindex Conflict",category:"canonicalization",severity:"warning"},"info","Not applicable (canonical or robots meta tag data unavailable)",{recommendation:"This rule detects conflicting noindex and canonical directives"}):(Array.isArray(t.metaRobots)?t.metaRobots:[t.metaRobots]).some(n=>n.toLowerCase().includes("noindex"))&&t.canonicalUrl&&t.url&&Hi(t.canonicalUrl)===Hi(t.url)?a({id:"canonical-noindex-conflict",name:"Canonical + Noindex Conflict",category:"canonicalization",severity:"warning"},"warn","Page has both noindex and self-referencing canonical",{recommendation:"Remove canonical or noindex - conflicting signals",evidence:{found:`noindex + canonical to self (${t.canonicalUrl})`,expected:"Either noindex OR canonical, not both",impact:"Google ignores noindex if page has canonical to itself",example:`<meta name="robots" content="noindex" /> <!-- Remove this -->
|
|
409
409
|
<!-- OR -->
|
|
410
|
-
<link rel="canonical" href="..." /> <!-- Remove this -->`}}):a({id:"canonical-noindex-conflict",name:"Canonical + Noindex Conflict",category:"canonicalization",severity:"warning"},"pass","No conflicting noindex and canonical directives")}];function
|
|
410
|
+
<link rel="canonical" href="..." /> <!-- Remove this -->`}}):a({id:"canonical-noindex-conflict",name:"Canonical + Noindex Conflict",category:"canonicalization",severity:"warning"},"pass","No conflicting noindex and canonical directives")}];function Hi(t){try{let e=new URL(t);return`${e.protocol}//${e.hostname}${e.pathname.replace(/\/$/,"")}${e.search}`.toLowerCase()}catch{return t.toLowerCase()}}var _d=[{id:"analytics-installed",name:"Analytics Installed",category:"technical",severity:"warning",description:"Page should have analytics tracking installed",check:t=>{var e,r,n;return t.analyticsDetected===void 0?a({id:"analytics-installed",name:"Analytics Installed",category:"technical",severity:"warning"},"info","Not applicable (analytics detection data unavailable)",{recommendation:"This rule checks for analytics tracking to measure user behavior"}):!t.analyticsDetected||((e=t.analyticsProviders)==null?void 0:e.length)===0?a({id:"analytics-installed",name:"Analytics Installed",category:"technical",severity:"warning"},"warn","No analytics tracking detected",{recommendation:"Install analytics to understand user behavior and optimize conversions.",evidence:{found:"No analytics scripts detected",expected:"Google Analytics, GTM, or other analytics provider",impact:"Without analytics, you cannot measure traffic sources, user behavior, conversion rates, or content performance. The average conversion rate is only 2.35% - optimization requires data.",example:`<!-- Google Analytics 4 -->
|
|
411
411
|
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX"><\/script>`,learnMore:"https://marketingplatform.google.com/about/analytics/"}}):a({id:"analytics-installed",name:"Analytics Installed",category:"technical",severity:"warning"},"pass",`Analytics detected: ${(r=t.analyticsProviders)==null?void 0:r.join(", ")}`,{value:(n=t.analyticsProviders)==null?void 0:n.join(", ")})}},{id:"google-analytics-4",name:"Google Analytics 4",category:"technical",severity:"info",description:"Check for modern GA4 vs deprecated Universal Analytics",check:t=>{if(!t.analyticsProviders||t.analyticsProviders.length===0)return a({id:"google-analytics-4",name:"Google Analytics 4",category:"technical",severity:"info"},"info","Not applicable (no analytics providers detected)",{recommendation:"This rule checks for modern Google Analytics 4 implementation"});let e=t.analyticsProviders.some(n=>n==="Universal Analytics (UA)"),r=t.analyticsProviders.some(n=>n==="Google Analytics 4 (GA4)");return e&&!r?a({id:"google-analytics-4",name:"Google Analytics 4",category:"technical",severity:"info"},"warn","Using deprecated Universal Analytics (UA) without GA4",{recommendation:"Migrate to Google Analytics 4 - Universal Analytics stopped processing data July 2023.",evidence:{found:"Universal Analytics (analytics.js or ga.js)",expected:"Google Analytics 4 (gtag.js with G-XXXXXX)",impact:"Universal Analytics is deprecated and no longer collects data. GA4 offers better cross-platform tracking, machine learning insights, and privacy-focused measurement.",example:'<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX"><\/script>',learnMore:"https://support.google.com/analytics/answer/11583528"}}):r?a({id:"google-analytics-4",name:"Google Analytics 4",category:"technical",severity:"info"},"pass","Using modern Google Analytics 4"):a({id:"google-analytics-4",name:"Google Analytics 4",category:"technical",severity:"info"},"pass","Using other analytics provider (not Google Analytics)")}},{id:"google-tag-manager",name:"Google Tag Manager",category:"technical",severity:"info",description:"Google Tag Manager enables flexible tag management without code changes",check:t=>t.analyticsProviders?t.analyticsProviders.some(r=>r==="Google Tag Manager")?a({id:"google-tag-manager",name:"Google Tag Manager",category:"technical",severity:"info"},"pass","Google Tag Manager detected",{evidence:{found:"GTM container script",impact:"GTM allows marketing teams to manage tags without developer intervention, improving agility."}}):t.analyticsDetected&&t.analyticsProviders.length>0?a({id:"google-tag-manager",name:"Google Tag Manager",category:"technical",severity:"info"},"info","Consider using Google Tag Manager for easier tag management",{recommendation:"GTM centralizes all tracking scripts and enables non-developers to manage tags.",evidence:{found:`Direct analytics scripts: ${t.analyticsProviders.join(", ")}`,expected:"Google Tag Manager container managing all tags",impact:"GTM provides version control, preview mode, and easy updates without code changes. Best practice for sites with multiple tracking tools.",learnMore:"https://tagmanager.google.com/"}}):a({id:"google-tag-manager",name:"Google Tag Manager",category:"technical",severity:"info"},"pass","No analytics detected or GTM not needed"):a({id:"google-tag-manager",name:"Google Tag Manager",category:"technical",severity:"info"},"info","Not applicable (analytics provider data unavailable)",{recommendation:"This rule checks for Google Tag Manager for easier tag management"})},{id:"multiple-analytics-warning",name:"Multiple Analytics Scripts",category:"performance",severity:"warning",description:"Too many analytics scripts can impact page performance",check:t=>!t.analyticsProviders||t.analyticsProviders.length<4?a({id:"multiple-analytics-warning",name:"Multiple Analytics Scripts",category:"performance",severity:"warning"},"info","Not applicable (acceptable number of analytics scripts)",{recommendation:"This rule warns when too many analytics scripts impact performance"}):a({id:"multiple-analytics-warning",name:"Multiple Analytics Scripts",category:"performance",severity:"warning"},"warn",`${t.analyticsProviders.length} analytics scripts detected`,{value:t.analyticsProviders.length,recommendation:"Consolidate analytics tools to reduce page load impact.",evidence:{found:t.analyticsProviders.join(", "),expected:"1-3 analytics tools",impact:"Each analytics script adds HTTP requests, JavaScript execution time, and can slow page rendering. Too many tools can impact Core Web Vitals and user experience.",learnMore:"https://web.dev/articles/optimize-third-party-javascript"}})},{id:"heatmap-tool",name:"Heatmap/Session Recording",category:"technical",severity:"info",description:"Heatmap tools like Hotjar help visualize user behavior",check:t=>{if(!t.analyticsProviders)return a({id:"heatmap-tool",name:"Heatmap Tool",category:"technical",severity:"info"},"info","Not applicable (analytics provider data unavailable)",{recommendation:"This rule checks for heatmap and session recording tools"});let e=["Hotjar","Microsoft Clarity","FullStory","Lucky Orange","Crazy Egg"],r=t.analyticsProviders.filter(n=>e.includes(n));return r.length>0?a({id:"heatmap-tool",name:"Heatmap Tool",category:"technical",severity:"info"},"pass",`Heatmap/session recording detected: ${r.join(", ")}`,{evidence:{found:r.join(", "),impact:"Heatmaps and session recordings help identify UX issues, understand user journeys, and optimize conversion paths."}}):a({id:"heatmap-tool",name:"Heatmap Tool",category:"technical",severity:"info"},"pass","No heatmap tool detected (optional)")}},{id:"cta-presence",name:"Call-to-Action Elements",category:"content",severity:"info",description:"Page should have clear call-to-action elements",check:t=>t.ctaButtonsCount===void 0?a({id:"cta-presence",name:"Call-to-Action Elements",category:"content",severity:"info"},"info","Not applicable (CTA button data unavailable)",{recommendation:"This rule checks for clear call-to-action elements to guide conversions"}):t.ctaButtonsCount===0?a({id:"cta-presence",name:"Call-to-Action Elements",category:"content",severity:"info"},"info","No clear call-to-action buttons detected",{recommendation:"Add clear CTAs to guide users toward conversion.",evidence:{found:"No buttons with action-oriented text",expected:'Buttons like "Get Started", "Sign Up", "Buy Now", "Contact Us"',impact:"Clear CTAs guide users through the conversion funnel. Pages without obvious next steps lose potential conversions.",example:`<button class="cta">Get Started Free</button>
|
|
412
|
-
<a href="/signup" class="btn-primary">Start Your Trial</a>`}}):a({id:"cta-presence",name:"Call-to-Action Elements",category:"content",severity:"info"},"pass",`${t.ctaButtonsCount} call-to-action element(s) found`,{value:t.ctaButtonsCount})},{id:"form-presence",name:"Form Elements",category:"content",severity:"info",description:"Detect forms for lead generation or conversion",check:t=>t.formCount===void 0?a({id:"form-presence",name:"Form Elements",category:"content",severity:"info"},"info","Not applicable (form count data unavailable)",{recommendation:"This rule checks for forms for lead generation and conversions"}):t.formCount>0?a({id:"form-presence",name:"Form Elements",category:"content",severity:"info"},"pass",`${t.formCount} form(s) detected for lead capture/conversion`,{value:t.formCount,evidence:{found:`${t.formCount} form elements`,impact:"Forms are essential for lead generation, contact, and conversions."}}):a({id:"form-presence",name:"Form Elements",category:"content",severity:"info"},"pass","No forms detected (may not be needed for this page type)")},{id:"contact-methods",name:"Contact Methods",category:"content",severity:"info",description:"Page should provide contact methods for user trust",check:t=>{let e=[];return t.emailsFound&&t.emailsFound.length>0&&e.push("email"),t.hasPhoneOnPage&&e.push("phone"),t.hasWhatsAppLink&&e.push("WhatsApp"),e.length===0&&t.hasContactPageLink?a({id:"contact-methods",name:"Contact Methods",category:"content",severity:"info"},"pass","Contact page link found",{evidence:{found:"Link to contact page"}}):e.length>0?a({id:"contact-methods",name:"Contact Methods",category:"content",severity:"info"},"pass",`Contact methods found: ${e.join(", ")}`,{value:e.join(", ")}):a({id:"contact-methods",name:"Contact Methods",category:"content",severity:"info"},"pass","No direct contact methods detected (may not be needed)")}},{id:"rss-feed-present",name:"RSS Feed",category:"technical",severity:"info",description:"RSS feeds help users and search engines discover new content",check:t=>t.hasRssFeed===void 0?a({id:"rss-feed-present",name:"RSS Feed",category:"technical",severity:"info"},"info","Not applicable (RSS feed data unavailable)",{recommendation:"This rule checks for RSS feeds for content distribution"}):t.hasRssFeed?a({id:"rss-feed-present",name:"RSS Feed",category:"technical",severity:"info"},"pass","RSS feed detected",{value:t.rssFeedUrl,evidence:{found:t.rssFeedUrl||"RSS link tag present",impact:"RSS feeds notify search engines and feed readers when content is updated, improving content discovery."}}):a({id:"rss-feed-present",name:"RSS Feed",category:"technical",severity:"info"},"info","No RSS feed detected",{recommendation:"Add an RSS feed for blogs or news sites to improve content distribution.",evidence:{expected:'<link rel="alternate" type="application/rss+xml" href="/feed.xml">',impact:"RSS feeds help users subscribe to content and notify search engines of updates. Particularly important for blogs and news sites.",learnMore:"https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap#rss-atom"}})},{id:"atom-feed-present",name:"Atom Feed",category:"technical",severity:"info",description:"Atom feeds are an alternative to RSS for content syndication",check:t=>t.hasAtomFeed===void 0?a({id:"atom-feed-present",name:"Atom Feed",category:"technical",severity:"info"},"info","Not applicable (Atom feed data unavailable)",{recommendation:"This rule checks for Atom feeds as alternative to RSS"}):t.hasAtomFeed?a({id:"atom-feed-present",name:"Atom Feed",category:"technical",severity:"info"},"pass","Atom feed detected",{value:t.atomFeedUrl,evidence:{found:t.atomFeedUrl||"Atom link tag present"}}):a({id:"atom-feed-present",name:"Atom Feed",category:"technical",severity:"info"},"pass","No Atom feed detected (RSS is more common)")},{id:"noindex-canonical-conflict",name:"Noindex + Canonical Conflict",category:"technical",severity:"error",description:"Having both noindex and canonical sends conflicting signals",check:t=>!t.metaRobots||!t.hasCanonical?a({id:"noindex-canonical-conflict",name:"Noindex + Canonical Conflict",category:"technical",severity:"error"},"info","Not applicable (robots meta tag or canonical data unavailable)",{recommendation:"This rule detects conflicting noindex and canonical directives"}):t.metaRobots.includes("noindex")&&t.hasCanonical?a({id:"noindex-canonical-conflict",name:"Noindex + Canonical Conflict",category:"technical",severity:"error"},"fail","Page has both noindex and canonical - conflicting signals",{recommendation:"Remove either noindex or canonical. They serve opposite purposes.",evidence:{found:`noindex meta tag + canonical: ${t.canonicalUrl}`,expected:"Either noindex (to block indexing) OR canonical (to consolidate indexing)",impact:"noindex tells search engines not to index this page, while canonical tells them to consolidate signals to a URL. Google may ignore the canonical if noindex is present, wasting crawl budget.",issue:"Conflicting indexing directives",learnMore:"https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls"}}):a({id:"noindex-canonical-conflict",name:"Noindex + Canonical Conflict",category:"technical",severity:"error"},"pass","No conflicting noindex and canonical directives")},{id:"noindex-sitemap-hint",name:"Noindex Pages in Sitemap",category:"crawlability",severity:"warning",description:"Pages with noindex should not be in sitemap",check:t=>t.metaRobots?t.metaRobots.includes("noindex")&&t.pageInSitemap?a({id:"noindex-sitemap-hint",name:"Noindex in Sitemap",category:"crawlability",severity:"warning"},"warn","Page has noindex but appears to be in sitemap",{recommendation:"Remove noindex pages from sitemap to avoid wasting crawl budget.",evidence:{found:"noindex directive on page that may be in sitemap",expected:"Only indexable pages in sitemap",impact:"Including noindex pages in sitemap wastes crawl budget and sends conflicting signals to search engines.",learnMore:"https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap#best-practices"}}):a({id:"noindex-sitemap-hint",name:"Noindex in Sitemap",category:"crawlability",severity:"warning"},"pass","Page is indexable or not in sitemap"):a({id:"noindex-sitemap-hint",name:"Noindex in Sitemap",category:"crawlability",severity:"warning"},"info","Not applicable (robots meta tag data unavailable)",{recommendation:"This rule checks if noindex pages are incorrectly included in sitemap"})}];var Jx=[...hd,...gd,...yd,...bd,...vd,...wd,...xd,...Sd,...Td,...Ad,...Cd,...Ed,...Dd,...Ld,...Rd,...Pd,...Nd,...Md,...Bd,...Ud,...Hd,...Id,...kd,...qd,...$d,...Od,...zd,...jd,..._d],Wd={severity:{error:{pass:10,fail:-15,warn:-10,info:0},warning:{pass:5,fail:-8,warn:-5,info:0},info:{pass:2,fail:-3,warn:-2,info:0}},category:{title:1.5,meta:1.3,og:1,twitter:.8,headings:1.2,images:1,links:1.1,content:1.2,technical:1.3,security:.9,mobile:1.2,"structured-data":1,performance:1.4,accessibility:.8,i18n:.9,"ai-search":.7,resources:1.1,crawlability:1.3,canonicalization:1.2}};function Vd(t){let e={};for(let u of t){let d=Wd.severity[u.severity][u.status]??0;e[u.category]||(e[u.category]={score:0,count:0}),e[u.category].score+=d,e[u.category].count++}let r=0,n=0,i=[];for(let[u,l]of Object.entries(e)){let d=u,p=Wd.category[d]??1,m=l.count>0?l.score/l.count:0,f=m*p;i.push({category:d,score:m,weight:p}),r+=f,n+=p}let o=100,c=Math.max(0,Math.min(100,70+r));return{score:Math.round(c),maxPossible:o,details:i}}var qi=class{rules;constructor(e={}){var n,i,o,s;let r=[...Jx];if((n=e.categories)!=null&&n.length&&(r=r.filter(c=>e.categories.includes(c.category))),(i=e.excludeCategories)!=null&&i.length&&(r=r.filter(c=>!e.excludeCategories.includes(c.category))),(o=e.rules)!=null&&o.length&&(r=r.filter(c=>e.rules.includes(c.id))),(s=e.excludeRules)!=null&&s.length&&(r=r.filter(c=>!e.excludeRules.includes(c.id))),e.minSeverity){let c=["info","warning","error"],u=c.indexOf(e.minSeverity);r=r.filter(l=>c.indexOf(l.severity)>=u)}this.rules=r}evaluate(e){let r=[];for(let n of this.rules){let i=n.check(e);i&&r.push(i)}return r}getRules(){return[...this.rules]}getRulesByCategory(e){return this.rules.filter(r=>r.category===e)}getCategories(){return[...new Set(this.rules.map(e=>e.category))]}};function ss(t){return new qi(t)}var cs=class t{root;options;rulesEngine;constructor(e,r={}){this.root=e,this.options=r,this.rulesEngine=ss(r.rules)}static async fromHtml(e,r={}){let n=Re(e);return new t(n,r)}analyze(){var _;let e=this.options.baseUrl||"",r=fi(this.root),n=hi(this.root),i=gi(this.root),o=yi(this.root),s=pi(this.root,{baseUrl:this.options.baseUrl}),c=mi(this.root,{baseUrl:this.options.baseUrl}),u=this.getVisibleText(),l=fd({visibleText:u,title:r.title,description:r.description,keywords:(_=r.keywords)==null?void 0:_.join(", ")}),d=/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g,p=(u.match(d)||[]).filter(E=>!E.endsWith(".png")&&!E.endsWith(".jpg")&&!E.endsWith(".webp")),m=["facebook.com","twitter.com","x.com","instagram.com","linkedin.com","youtube.com","pinterest.com","tiktok.com","github.com","reddit.com","snapchat.com","whatsapp.com","telegram.org","discord.com","threads.net"],f=s.map(E=>E.href).filter(E=>m.some(M=>E.toLowerCase().includes(M))),h=this.analyzeSocialLinks(s,m),g=this.analyzeHeadings(),y=this.analyzeContent(g),C=this.buildLinkAnalysis(s),b=this.buildImageAnalysis(c),x=this.buildSocialAnalysis(n,i),k=this.buildTechnicalAnalysis(r),v=this.analyzeResources(),w=this.analyzeAnalytics(),S=this.analyzeFeeds(),A=this.analyzeConversionElements(s,u),P=this.detectPageType(o),q=this.buildRuleContext({pageType:P,meta:r,og:n,twitter:i,jsonLd:o,headings:g,content:y,linkAnalysis:C,imageAnalysis:b,links:s,keywords:l,resources:v,emailsFound:p,socialLinksFound:f,socialLinkDetails:h,analytics:w,feeds:S,conversion:A}),R=this.rulesEngine.evaluate(q),O=this.convertToCheckResults(R),{score:W,grade:z}=this.calculateScore(R),H=this.buildSummary(R,O,{content:y,imageAnalysis:b,linkAnalysis:C,meta:r,og:n,twitter:i,technical:k,pageType:P,timings:this.options.timings});return{url:e,timestamp:new Date,grade:z,score:W,timing:this.options.timings,summary:H,pageType:P,checks:O,title:r.title?{text:r.title,length:r.title.length}:void 0,metaDescription:r.description?{text:r.description,length:r.description.length}:void 0,openGraph:Object.keys(n).length>0?{title:n.title,description:n.description,image:Array.isArray(n.image)?n.image[0]:n.image,url:n.url,type:n.type,siteName:n.siteName}:void 0,twitterCard:Object.keys(i).length>0?{card:i.card,title:i.title,description:i.description,image:Array.isArray(i.image)?i.image[0]:i.image,site:i.site}:void 0,structuredData:{count:o.length,types:o.map(E=>E["@type"]).filter(Boolean),items:o},headings:g,content:y,keywords:l,links:C,images:b,social:x,technical:k}}getMainBody(){let e=this.root.querySelectorAll("body");return e.length===0?null:e.length===1?e[0]:e.reduce((r,n)=>n.text.length>r.text.length?n:r)}detectPageType(e){if(!this.options.baseUrl)return"other";try{let r=new URL(this.options.baseUrl),n=r.pathname.toLowerCase(),i=u=>r.searchParams.has(u);return n==="/"||n===""?"homepage":/(^|\/)(search|busca|s|results|query)\b/.test(n)||i("q")||i("query")||i("search")?"search":["product","produto","item","sku","shop"].some(u=>n.includes(`/${u}/`))?"product":["article","post","blog","noticia","news"].some(u=>n.includes(`/${u}/`))||this.root.querySelectorAll("article").length>0?"article":/(^|\/)(categoria|category|tag|section|topic)\b/.test(n)?"category":e.map(u=>u["@type"]).some(u=>typeof u=="string"&&u.toLowerCase()==="product")?"product":"other"}catch{return"other"}}getVisibleText(){let e=this.getMainBody();if(!e)return"";let r=e.clone(),n=["script","style","noscript","template","header","nav","svg"];try{r.querySelectorAll(n.join(",")).forEach(o=>o.remove())}catch{n.forEach(i=>{r.querySelectorAll(i).forEach(o=>o.remove())})}try{r.querySelectorAll('[hidden], [aria-hidden="true"]').forEach(i=>i.remove())}catch{r.querySelectorAll("[hidden]").forEach(i=>i.remove()),r.querySelectorAll('[aria-hidden="true"]').forEach(i=>i.remove())}return r.text.replace(/\s+/g," ").trim()}buildRuleContext(e){var hs,gs,ys,bs,vs,ws,xs,ks;let{meta:r,og:n,twitter:i,jsonLd:o,headings:s,content:c,pageType:u,linkAnalysis:l,imageAnalysis:d,links:p,keywords:m,resources:f,emailsFound:h,socialLinksFound:g,socialLinkDetails:y,analytics:C,feeds:b,conversion:x}=e,k=this.root.querySelector("html"),v=k?k.getAttribute("lang"):void 0,w=[];this.root.querySelectorAll('link[rel="alternate"][hreflang]').forEach(N=>{let te=N.getAttribute("hreflang"),kt=N.getAttribute("href");te&&kt&&w.push({lang:te,href:kt})});let S=this.root.querySelector('meta[property="og:locale"]'),A=S?S.getAttribute("content"):void 0,P=U.links.genericTexts,q=p.filter(N=>{var kt;let te=(kt=N.text)==null?void 0:kt.toLowerCase().trim();return te&&P.some(an=>te===an||te.includes(an))}),R=q.length,O=p.filter(N=>{let te=N.text&&N.text.trim()!=="",kt=N.hasImageWithAlt||N.hasSvgWithTitle,an=N.ariaLabel||N.title;return!te&&!kt&&!an}),W=p.filter(N=>N.type==="external"&&N.target==="_blank"),z=W.filter(N=>{var te;return!((te=N.rel)!=null&&te.includes("noopener"))}),H=W.filter(N=>{var te;return!((te=N.rel)!=null&&te.includes("noreferrer"))}),_={withoutText:O,genericText:q,missingNoopener:z,missingNoreferrer:H},E=this.checkMixedContent(),M=this.root.querySelectorAll("h1"),B=M.length>0?M[0].text.trim():"",I=m.topKeywords.slice(0,5).map(N=>N.word),F=I.length>0?I[0]:void 0,oe=I.some(N=>{var te;return(te=r.title)==null?void 0:te.toLowerCase().includes(N)}),ee=I.some(N=>{var te;return(te=r.description)==null?void 0:te.toLowerCase().includes(N)}),He=I.some(N=>B.toLowerCase().includes(N)),ne=this.options.baseUrl?new URL(this.options.baseUrl).pathname.toLowerCase().replace(/[-_]/g," "):"",Ke=I.some(N=>ne.includes(N)),Oe=((gs=(hs=this.root.querySelector("p"))==null?void 0:hs.text)==null?void 0:gs.toLowerCase())||"",Ie=I.some(N=>Oe.includes(N)),Xe=d.imageAltTexts||[],ze=Xe.some(N=>I.some(te=>N.includes(te))),jt=F?{inTitle:((ys=r.title)==null?void 0:ys.toLowerCase().includes(F))||!1,inDescription:((bs=r.description)==null?void 0:bs.toLowerCase().includes(F))||!1,inH1:B.toLowerCase().includes(F)||!1,inUrl:ne.includes(F),inFirstParagraph:Oe.includes(F),inAltText:Xe.some(N=>N.includes(F))}:void 0,on=jt?Object.values(jt).filter(Boolean).length:void 0,xt=this.root.querySelector('meta[name="viewport"]'),_t=xt?xt.getAttribute("content"):void 0,tp=this.analyzeAccessibility(),rp=this.root.querySelectorAll('img[alt=""]').length,np=this.analyzeLinkSecurity(),ip=this.detectFavicon(),op=this.analyzePerformanceHints(),fs=this.analyzeCWVHints(),ap=this.analyzeStructuralHtml(),sp=this.analyzeBreadcrumbs(o.map(N=>N["@type"]).filter(Boolean)),cp=this.analyzeMultimedia(),up=this.analyzeResponsiveImages(),lp=this.analyzeInlineImages(),dp=this.analyzeTrustSignals(p),pp=(s.structure.filter(N=>N.level===2).length||0)+(s.structure.filter(N=>N.level===3).length||0),mp=c.wordCount>0?pp/c.wordCount*100:0,fp=this.calculateTextHtmlRatio(c.characterCount);return{pageType:u,jsFilesCount:f.jsFilesCount,cssFilesCount:f.cssFilesCount,unminifiedResources:f.unminifiedResources,unminifiedResourceUrls:f.unminifiedResourceUrls,emailsFound:h,socialLinksFound:g,...y,keywordsInTitle:oe,keywordsInDescription:ee,keywordsInH1:He,keywordsInUrl:Ke,keywordsInFirstParagraph:Ie,keywordsInAltText:ze,keywordConsistencyScore:on,keywordConsistencyDetails:jt,topKeywords:I,mainKeyword:F,title:r.title,titleLength:(vs=r.title)==null?void 0:vs.length,metaDescription:r.description,metaDescriptionLength:(ws=r.description)==null?void 0:ws.length,metaKeywords:r.keywords,metaRobots:r.robots,ogTitle:n.title,ogDescription:n.description,ogImage:Array.isArray(n.image)?n.image[0]:n.image,ogUrl:n.url,ogType:n.type,ogSiteName:n.siteName,twitterCard:i.card,twitterTitle:i.title,twitterDescription:i.description,twitterImage:Array.isArray(i.image)?i.image[0]:i.image,twitterSite:i.site,h1Count:s.h1Count,h1Text:B||void 0,h1Length:B==null?void 0:B.length,h2Count:s.structure.filter(N=>N.level===2).length,headingHierarchyValid:s.hasProperHierarchy,headingSkippedLevels:s.issues.filter(N=>N.includes("Skipped")),sectionWordCounts:s.sectionWordCounts,totalImages:d.total,imagesWithAlt:d.withAlt,imagesWithoutAlt:d.withoutAlt,imagesWithLazyLoad:d.lazy,imagesMissingDimensions:d.missingDimensions,imagesWithEmptyAlt:rp,imagesUsingModernFormats:d.modernFormats,altTextLengths:d.altTextLengths,imageAltTexts:d.imageAltTexts,imageFilenames:d.imageFilenames,imagesWithAsyncDecoding:d.imagesWithAsyncDecoding,imagesWithSrcset:up.imagesWithSrcset,largeBase64ImagesCount:lp.largeBase64ImagesCount,...tp,allLinks:p,totalLinks:l.total,internalLinks:l.internal,externalLinks:l.external,internalHttpLinks:l.internalHttpLinks,internalHttpLinkUrls:l.internalHttpLinkUrls,linksWithoutText:l.withoutText,nofollowLinks:l.nofollow,sponsoredLinks:l.sponsoredLinks,ugcLinks:l.ugcLinks,linksWithGenericText:R,...np,problematicLinks:_,wordCount:c.wordCount,characterCount:c.characterCount,sentenceCount:c.sentenceCount,paragraphCount:c.paragraphCount,avgWordsPerSentence:c.avgWordsPerSentence,avgParagraphLength:c.avgParagraphLength,listCount:c.listCount,strongTagCount:c.strongTagCount,emTagCount:c.emTagCount,subheadingFrequency:mp,paragraphWordCounts:c.paragraphWordCounts,avgSentenceLength:c.avgSentenceLength,faqCount:c.faqCount,imagePerWordRatio:c.imagePerWordRatio,keywordDensity:c.keywordDensity,fleschReadingEase:c.fleschReadingEase,hasQuestionHeadings:c.hasQuestionHeadings,...ap,...dp,...sp,...cp,hasCanonical:!!r.canonical,canonicalUrl:r.canonical,hasViewport:!!r.viewport,viewportContent:_t,hasCharset:!!r.charset,charset:r.charset,hasLang:!!v,langValue:v,isHttps:(xs=this.options.baseUrl)==null?void 0:xs.startsWith("https://"),hasMixedContent:E,responseHeaders:this.options.responseHeaders,textHtmlRatio:fp,hasFrameTags:this.root.querySelectorAll("frame, frameset").length>0,iframeCount:this.root.querySelectorAll("iframe").length,hasDeprecatedPlugins:this.root.querySelectorAll("object, embed, applet").length>0,deprecatedTagsCount:this.root.querySelectorAll("center, font, strike, u, marquee, blink, big, tt").length,deprecatedTagsFound:["center","font","strike","u","marquee","blink","big","tt"].filter(N=>this.root.querySelectorAll(N).length>0),hasAppleTouchIcon:this.root.querySelectorAll('link[rel="apple-touch-icon"], link[rel="apple-touch-icon-precomposed"]').length>0,...ip,...op,lcpHints:fs.lcpHints,clsHints:fs.clsHints,jsonLdCount:o.length,jsonLdTypes:o.map(N=>N["@type"]).filter(Boolean),url:this.options.baseUrl,urlLength:(ks=this.options.baseUrl)==null?void 0:ks.length,titleMatchesH1:r.title&&B?r.title.toLowerCase().trim()===B.toLowerCase().trim():void 0,...this.analyzeUrlQuality(),...this.analyzeJsRendering(c),hreflangTags:w.length>0?w:void 0,ogLocale:A,analyticsDetected:C.analyticsDetected,analyticsProviders:C.analyticsProviders,...b,ctaButtonsCount:x.ctaButtonsCount,formCount:x.formCount,hasWhatsAppLink:x.hasWhatsAppLink,hasPhoneOnPage:x.hasPhoneOnPage,timings:this.options.timings,htmlSize:this.options.htmlSize}}analyzeUrlQuality(){if(!this.options.baseUrl)return{urlHasUppercase:!1,urlHasSpecialChars:!1,urlHasAccents:!1};try{let e=new URL(this.options.baseUrl),r=e.pathname+e.search,n=/[A-Z]/.test(r),i=/[àáâãäåæçèéêëìíîïñòóôõöùúûüýÿ]/i.test(r),o=/[<>{}|\^`\[\]]/.test(r)||/%[0-9A-F]{2}/i.test(r);return{urlHasUppercase:n,urlHasSpecialChars:o,urlHasAccents:i}}catch{return{urlHasUppercase:!1,urlHasSpecialChars:!1,urlHasAccents:!1}}}analyzeJsRendering(e){let r=e.characterCount,n=this.root.querySelectorAll("script").length,i=this.root.querySelector("noscript"),s=(i?i.text.trim():"").length>0;return{bodyTextLength:r,scriptCount:n,hasNoscriptContent:s}}analyzeResponsiveImages(){let e=0;return this.root.querySelectorAll("img").forEach(r=>{(r.getAttribute("srcset")||r.parentNode&&r.parentNode.tagName==="PICTURE")&&e++}),{imagesWithSrcset:e}}analyzeInlineImages(){let e=0;return this.root.querySelectorAll("img").forEach(r=>{let n=r.getAttribute("src")||"";n.startsWith("data:image")&&n.length>5*1024&&e++}),{largeBase64ImagesCount:e}}checkMixedContent(){let e=!1;return this.root.querySelectorAll('img[src^="http://"]').forEach(()=>{e=!0}),this.root.querySelectorAll('script[src^="http://"]').forEach(()=>{e=!0}),this.root.querySelectorAll('link[href^="http://"]').forEach(()=>{e=!0}),e}analyzeLinkSecurity(){let e=0,r=0;return this.root.querySelectorAll('a[href^="http"][target="_blank"]').forEach(n=>{let i=n.getAttribute("href")||"",o=(n.getAttribute("rel")||"").toLowerCase();this.options.baseUrl&&i.startsWith(this.options.baseUrl)||(o.includes("noopener")||e++,o.includes("noreferrer")||r++)}),{externalLinksWithoutNoopener:e,externalLinksWithoutNoreferrer:r}}detectFavicon(){let e=['link[rel="icon"]','link[rel="shortcut icon"]','link[rel="apple-touch-icon"]','link[rel="apple-touch-icon-precomposed"]'];for(let r of e){let n=this.root.querySelector(r);if(n)return{hasFavicon:!0,faviconUrl:n.getAttribute("href")}}return{hasFavicon:!1}}analyzePerformanceHints(){let r=this.root.querySelectorAll('link[rel="preconnect"]').length,i=this.root.querySelectorAll('link[rel="dns-prefetch"]').length,s=this.root.querySelectorAll('link[rel="preload"]').length,c=0;this.root.querySelectorAll("head script[src]:not([async]):not([defer])").forEach(()=>{c++}),this.root.querySelectorAll('head link[rel="stylesheet"]').forEach(d=>{let p=d.getAttribute("media");(!p||p==="all"||p==="screen")&&c++});let u=this.root.querySelectorAll("script:not([src])").filter(d=>(d.innerHTML||"").trim().length>0).length,l=this.root.querySelectorAll("style").length;return{hasPreconnect:r>0,preconnectCount:r,hasDnsPrefetch:i>0,dnsPrefetchCount:i,hasPreload:s>0,preloadCount:s,renderBlockingResources:c,inlineScriptsCount:u,inlineStylesCount:l}}analyzeCWVHints(){let e=this.root.querySelectorAll("img"),r=!1,n=!1,i=!1;e.slice(0,3).forEach((s,c)=>{let u=parseInt(s.getAttribute("width")||"0",10),l=parseInt(s.getAttribute("height")||"0",10),d=s.getAttribute("loading"),p=s.getAttribute("fetchpriority");(u>=400||l>=300)&&(r=!0),c===0&&d==="lazy"&&(n=!0),p==="high"&&(i=!0)}),this.root.querySelectorAll('[style*="background-image"]').slice(0,3).forEach(()=>{r=!0});let o=this.root.querySelectorAll("img:not([width]):not([height])").length+this.root.querySelectorAll('img[width="auto"], img[height="auto"]').length;return{lcpHints:{hasLargeImages:r,hasLazyLcp:n,hasPriorityHints:i},clsHints:{imagesWithoutDimensions:o}}}analyzeAccessibility(){let e=0;this.root.querySelectorAll("button").forEach(c=>{let u=c.text.trim(),l=c.getAttribute("aria-label"),d=c.getAttribute("aria-labelledby"),p=c.getAttribute("title");!u&&!l&&!d&&!p&&e++});let r=0;this.root.querySelectorAll("a[href]").forEach(c=>{let u=c.text.trim(),l=c.getAttribute("aria-label"),d=c.getAttribute("aria-labelledby"),p=c.getAttribute("title"),f=c.querySelectorAll("img").filter(b=>{var x;return!!((x=b.getAttribute("alt"))!=null&&x.trim())}).length>0,g=c.querySelectorAll("svg").filter(b=>b.querySelectorAll("title").length>0||!!b.getAttribute("aria-label")).length>0;!(u||f||g)&&!(l||d||p)&&r++});let n=0;this.root.querySelectorAll('input:not([type="hidden"]):not([type="submit"]):not([type="button"]):not([type="reset"]), select, textarea').forEach(c=>{let u=c.getAttribute("id"),l=c.getAttribute("aria-label"),d=c.getAttribute("aria-labelledby"),p=c.getAttribute("placeholder"),m=c.getAttribute("title"),f=u?this.root.querySelectorAll(`label[for="${u}"]`).length>0:!1,h=c.closest("label")!==null;!f&&!h&&!l&&!d&&!m&&!p&&n++});let i=this.root.querySelectorAll("iframe:not([title])").length,o=0;this.root.querySelectorAll("table").forEach(c=>{let u=c.querySelectorAll("caption").length>0,l=c.getAttribute("aria-label"),d=c.getAttribute("aria-labelledby"),p=c.getAttribute("role");if(p==="presentation"||p==="none")return;c.querySelectorAll("th").length>0&&!u&&!l&&!d&&o++});let s=0;return this.root.querySelectorAll("svg").forEach(c=>{let u=c.querySelectorAll("title").length>0,l=c.getAttribute("aria-label"),d=c.getAttribute("aria-labelledby"),p=c.getAttribute("aria-hidden"),m=c.getAttribute("role");p==="true"||m==="presentation"||m==="none"||!u&&!l&&!d&&s++}),{buttonsWithoutAriaLabel:e,linksWithoutAriaLabel:r,inputsWithoutLabel:n,iframesWithoutTitle:i,tablesWithoutCaption:o,svgsWithoutTitle:s}}analyzeStructuralHtml(){return{hasHeader:this.root.querySelectorAll("header").length>0,hasNav:this.root.querySelectorAll("nav").length>0,hasMain:this.root.querySelectorAll("main").length>0,hasArticle:this.root.querySelectorAll("article").length>0,hasSection:this.root.querySelectorAll("section").length>0,hasFooter:this.root.querySelectorAll("footer").length>0}}analyzeBreadcrumbs(e){let r=this.root.querySelectorAll('nav[aria-label="breadcrumb"], .breadcrumb, .breadcrumbs').length>0,n=e.includes("BreadcrumbList");return{hasBreadcrumbsHtml:r,hasBreadcrumbsSchema:n}}analyzeMultimedia(){let e=this.root.querySelectorAll("video"),r=this.root.querySelectorAll("audio"),n=!1,i=o=>{o.forEach(s=>{(s.getAttribute("autoplay")!==void 0||s.hasAttribute("autoplay"))&&(n=!0)})};return i(e),i(r),{videoCount:e.length,audioCount:r.length,hasAutoplay:n}}analyzeSocialLinks(e,r){let n=e.filter(y=>r.some(C=>y.href.toLowerCase().includes(C))),i={"facebook.com":"facebook","twitter.com":"twitter","x.com":"twitter","instagram.com":"instagram","linkedin.com":"linkedin","youtube.com":"youtube","pinterest.com":"pinterest","tiktok.com":"tiktok","github.com":"github","reddit.com":"reddit","snapchat.com":"snapchat","whatsapp.com":"whatsapp","telegram.org":"telegram","discord.com":"discord","threads.net":"threads"},o=[],s=0,c=0,u=0,l=0,d=0,p=new Set,m=this.root.querySelectorAll("header a[href]"),f=this.root.querySelectorAll("footer a[href]"),h=new Set(m.map(y=>y.getAttribute("href")||"")),g=new Set(f.map(y=>y.getAttribute("href")||""));for(let y of n){let C="unknown";for(let[w,S]of Object.entries(i))if(y.href.toLowerCase().includes(w)){C=S,p.add(S);break}let b="body";h.has(y.href)?(b="header",s++):g.has(y.href)&&(b="footer",c++);let x=!!(y.ariaLabel||y.title||y.text&&y.text.trim());x||u++;let k=y.target==="_blank";k||l++;let v=!!(y.rel&&y.rel.includes("noopener"));k&&!v&&d++,o.push({href:y.href,platform:C,hasAccessibility:x,hasNewTab:k,hasNoopener:v,location:b})}return{totalSocialLinks:n.length,socialLinksInHeader:s,socialLinksInFooter:c,socialLinksWithoutAccessibility:u,socialLinksWithoutNewTab:l,socialLinksWithoutNoopener:d,platformsFound:Array.from(p),socialLinkDetails:o}}analyzeTrustSignals(e){let r=e.map(n=>n.href.toLowerCase());return{hasAboutPageLink:r.some(n=>n.includes("about")||n.includes("quem-somos")),hasContactPageLink:r.some(n=>n.includes("contact")||n.includes("contato")),hasPrivacyPolicyLink:r.some(n=>n.includes("privacy")||n.includes("privacidade")),hasTermsOfServiceLink:r.some(n=>n.includes("terms")||n.includes("termos-de-uso"))}}analyzeAnalytics(){let e=[],r=this.root.querySelectorAll("script"),n=[],i=[];r.forEach(s=>{let c=s.getAttribute("src")||"",u=s.innerHTML||"";c&&n.push(c.toLowerCase()),u&&i.push(u.toLowerCase())});let o=n.join(" ")+" "+i.join(" ");return o.includes("gtag")&&o.includes("g-")&&e.push("Google Analytics 4 (GA4)"),(o.includes("analytics.js")||o.includes("ga.js")||o.includes("ua-")&&!o.includes("g-"))&&e.push("Universal Analytics (UA)"),(o.includes("googletagmanager.com/gtm")||o.includes("gtm-"))&&e.push("Google Tag Manager"),(o.includes("hotjar.com")||o.includes("hj("))&&e.push("Hotjar"),(o.includes("clarity.ms")||o.includes("clarity("))&&e.push("Microsoft Clarity"),(o.includes("fullstory.com")||o.includes("fs.identify"))&&e.push("FullStory"),o.includes("luckyorange.com")&&e.push("Lucky Orange"),o.includes("crazyegg.com")&&e.push("Crazy Egg"),(o.includes("mixpanel.com")||o.includes("mixpanel.init"))&&e.push("Mixpanel"),(o.includes("heap.io")||o.includes("heapanalytics"))&&e.push("Heap"),(o.includes("amplitude.com")||o.includes("amplitude.init"))&&e.push("Amplitude"),(o.includes("segment.com")||o.includes("analytics.load"))&&e.push("Segment"),o.includes("plausible.io")&&e.push("Plausible"),(o.includes("matomo")||o.includes("piwik"))&&e.push("Matomo"),(o.includes("posthog.com")||o.includes("posthog.init"))&&e.push("PostHog"),(o.includes("connect.facebook.net")||o.includes("fbq("))&&e.push("Facebook Pixel"),(o.includes("snap.licdn.com")||o.includes("_linkedin_partner_id"))&&e.push("LinkedIn Insight"),(o.includes("static.ads-twitter.com")||o.includes("twq("))&&e.push("Twitter Pixel"),(o.includes("pintrk(")||o.includes("pinterest.com/ct"))&&e.push("Pinterest Tag"),{analyticsDetected:e.length>0,analyticsProviders:e}}analyzeFeeds(){let e=!1,r,n=!1,i,o=this.root.querySelector('link[type="application/rss+xml"]');o&&(e=!0,r=o.getAttribute("href")||void 0);let s=this.root.querySelector('link[type="application/atom+xml"]');return s&&(n=!0,i=s.getAttribute("href")||void 0),{hasRssFeed:e,rssFeedUrl:r,hasAtomFeed:n,atomFeedUrl:i}}analyzeConversionElements(e,r){let n=this.root.querySelectorAll("form").length,i=[/^(get started|start|begin|try|sign up|register|subscribe|join|buy|purchase|order|add to cart|checkout|download|contact|request|schedule|book|reserve|learn more|read more|discover|explore|view|see|watch|listen|play|submit|send|apply|claim|grab|unlock|access)$/i,/^(obter|começar|iniciar|experimentar|inscrever|registrar|assinar|entrar|comprar|pedir|adicionar|finalizar|baixar|contato|solicitar|agendar|reservar|saber mais|ler mais|descobrir|explorar|ver|assistir|ouvir|enviar|aplicar|reivindicar|acessar)$/i],o=0;this.root.querySelectorAll("button").forEach(l=>{let d=l.text.trim().toLowerCase();i.some(p=>p.test(d))&&o++}),this.root.querySelectorAll('a[class*="btn"], a[class*="button"], a[role="button"]').forEach(l=>{let d=l.text.trim().toLowerCase();i.some(p=>p.test(d))&&o++});let s=e.some(l=>l.href.includes("wa.me")||l.href.includes("whatsapp.com")||l.href.includes("api.whatsapp.com")),u=/(?:\+?\d{1,3}[-.\s]?)?\(?\d{2,4}\)?[-.\s]?\d{3,5}[-.\s]?\d{3,5}/g.test(r)||e.some(l=>l.href.startsWith("tel:"));return{ctaButtonsCount:o,formCount:n,hasWhatsAppLink:s,hasPhoneOnPage:u}}calculateTextHtmlRatio(e){var n;let r=(n=this.root.innerHTML)==null?void 0:n.length;if(r&&r>0)return e/r*100}convertToCheckResults(e){return e.map(r=>({id:r.id,name:r.name,category:r.category,severity:r.severity,status:r.status,message:r.message,value:r.value,recommendation:r.recommendation,evidence:r.evidence}))}buildSummary(e,r,n){var v;let i=n.pageType,o=n.timings,s=r.filter(w=>w.status==="pass").length,c=r.filter(w=>w.status==="warn").length,u=r.filter(w=>w.status==="fail").length,l=r.filter(w=>w.status==="info").length,d=r.length,p=d-l,m=p>0?Math.round(s/p*100):100,f={};for(let w of e){let S=w.category;f[S]||(f[S]={passed:0,warnings:0,errors:0}),w.status==="pass"?f[S].passed++:w.status==="warn"?f[S].warnings++:w.status==="fail"&&f[S].errors++}let h=r.filter(w=>w.status==="fail"||w.status==="warn").sort((w,S)=>{let A=O=>O==="fail"?2:1,P=A(S.status)-A(w.status);if(P!==0)return P;let q=w.severity||(w.status==="fail"?"error":"warning"),R=S.severity||(S.status==="fail"?"error":"warning");return q===R?0:q==="error"?-1:1}).slice(0,5).map(w=>({name:w.name,message:w.message,category:w.category,severity:w.severity||(w.status==="fail"?"error":"warning")})),g=[];n.meta.title||g.push("Add a page title"),n.meta.description||g.push("Add a meta description"),!n.og.title&&!n.og.description&&g.push("Add OpenGraph meta tags for social sharing"),n.twitter.card||g.push("Add Twitter Card meta tags"),n.technical.hasCanonical||g.push("Add a canonical URL"),n.technical.hasLang||g.push("Add lang attribute to <html>"),n.imageAnalysis.withoutAlt>0&&g.push(`Add alt text to ${n.imageAnalysis.withoutAlt} image(s)`),n.linkAnalysis.withoutText>0&&g.push(`Add text to ${n.linkAnalysis.withoutText} empty link(s)`);let y=g.slice(0,5),C=(v=this.root.innerHTML)==null?void 0:v.length,b=this.root.querySelectorAll("*").length,x={htmlSize:C,domElements:b,ttfb:o==null?void 0:o.ttfb,totalTime:o==null?void 0:o.total,wordCount:n.content.wordCount,totalWordCount:n.content.totalWordCount,readingTime:n.content.readingTimeMinutes,imageCount:n.imageAnalysis.total,linkCount:n.linkAnalysis.total},k={meta:this.calculateMetaCompleteness(n.meta),social:this.calculateSocialCompleteness(n.og,n.twitter),technical:this.calculateTechnicalCompleteness(n.technical),content:this.calculateContentCompleteness(n.content),images:this.calculateImageCompleteness(n.imageAnalysis),links:this.calculateLinkCompleteness(n.linkAnalysis)};return{totalChecks:d,passed:s,warnings:c,errors:u,infos:l,passRate:m,issuesByCategory:f,pageType:i,topIssues:h,quickWins:y,vitals:x,completeness:k}}calculateMetaCompleteness(e){let r=0,n=5;return e.title&&r++,e.description&&r++,e.canonical&&r++,e.viewport&&r++,e.charset&&r++,Math.round(r/n*100)}calculateSocialCompleteness(e,r){let n=0,i=8;return e.title&&n++,e.description&&n++,e.image&&n++,e.url&&n++,r.card&&n++,r.title&&n++,r.description&&n++,r.image&&n++,Math.round(n/i*100)}calculateTechnicalCompleteness(e){let r=0,n=5;return e.hasCanonical&&r++,e.hasViewport&&r++,e.hasCharset&&r++,e.hasLang&&r++,e.hasRobotsMeta&&r++,Math.round(r/n*100)}calculateContentCompleteness(e){let r=0,n=5;return e.wordCount>=300&&r++,e.paragraphCount>=3&&r++,e.listCount>0&&r++,e.readingTimeMinutes>=1&&r++,(e.strongTagCount>0||e.emTagCount>0)&&r++,Math.round(r/n*100)}calculateImageCompleteness(e){if(e.total===0)return 100;let r=0,n=4;return e.withoutAlt===0&&r++,e.lazy>0&&r++,e.missingDimensions===0&&r++,e.modernFormats>0&&r++,Math.round(r/n*100)}calculateLinkCompleteness(e){if(e.total===0)return 100;let r=0,n=4;return e.internal>0&&r++,e.external>0&&r++,e.withoutText===0&&r++,e.broken===0&&r++,Math.round(r/n*100)}analyzeHeadings(){let e=[],r=[],n=[],i={1:0,2:0,3:0,4:0,5:0,6:0},o=0,s=!1,c=this.getMainBody();(c?c.querySelectorAll("*"):[]).forEach(p=>{let m=p.tagName.toLowerCase();if(m.match(/^h[1-6]$/)){let f=parseInt(m.substring(1),10),h=p.text.trim();i[f]=(i[f]||0)+1,r.push({level:f,text:h.slice(0,80),count:1}),f===2&&(s&&n.push(o),o=0,s=!0)}else if(s&&["p","ul","ol","div","article","section"].includes(m)){let f="";p.childNodes.forEach(h=>{h.nodeType===3&&(f+=h.text)}),f=f.trim(),f.length>0&&(o+=f.split(/\s+/).length)}}),s&&n.push(o);let l=!0,d=0;for(let p of r)p.level>d+1&&d!==0&&(l=!1,e.push(`Skipped heading level: H${d} to H${p.level}`)),d=p.level;return i[1]===0?e.push("No H1 tag found"):i[1]>1&&e.push("Multiple H1 tags"),{structure:r,h1Count:i[1],hasProperHierarchy:l,issues:e,sectionWordCounts:n}}analyzeContent(e){var k;let r=this.getMainBody(),n=this.getVisibleText(),i=r?r.text.replace(/\s+/g," ").trim():"";if(!i||i.length===0){let v=((k=this.root.text)==null?void 0:k.replace(/\s+/g," ").trim())||"";if(v.length>0)i=v;else{let w=[];this.root.querySelectorAll("p").forEach(S=>{var P;let A=(P=S.text)==null?void 0:P.trim();A&&w.push(A)}),i=w.join(" ")}}let o=n.split(/\s+/).filter(v=>v.length>0),s=i.split(/\s+/).filter(v=>v.length>0),c=n.split(/[.!?]+/).filter(v=>v.trim().length>0),u=this.root.querySelectorAll("p"),l=0,d=[];u.forEach(v=>{var A;let w=((A=v.text)==null?void 0:A.trim())||"";l+=w.length;let S=w.split(/\s+/).filter(P=>P.length>0).length;S>0&&d.push(S)});let p=o.length,m=s.length,f=Math.ceil(p/200),h=c.length>0?Math.round(p/c.length):0,g=0;e.structure.forEach(v=>{v.level===3&&/^(what|how|why|when|where|who|can|do|is|are)\b/i.test(v.text)&&g++});let y=this.root.querySelectorAll("img").length,C=p>0?y/p:0,b=void 0,x=e.structure.some(v=>(v.level===2||v.level===3)&&/^(what|how|why|when|where|who|can|do|is|are)\b/i.test(v.text));return{wordCount:p,totalWordCount:m,characterCount:n.length,sentenceCount:c.length,paragraphCount:u.length,readingTimeMinutes:f,avgWordsPerSentence:h,avgParagraphLength:u.length>0?Math.round(l/u.length):0,listCount:this.root.querySelectorAll("ul, ol").length,strongTagCount:this.root.querySelectorAll("strong").length,emTagCount:this.root.querySelectorAll("em").length,paragraphWordCounts:d,avgSentenceLength:h,faqCount:g,imagePerWordRatio:C,fleschReadingEase:b,hasQuestionHeadings:x}}buildLinkAnalysis(e){let r=e.filter(n=>n.type==="internal"&&n.href.startsWith("http://")).map(n=>n.href);return{total:e.length,internal:e.filter(n=>n.type==="internal").length,external:e.filter(n=>n.type==="external").length,nofollow:e.filter(n=>{var i;return(i=n.rel)==null?void 0:i.includes("nofollow")}).length,sponsoredLinks:e.filter(n=>{var i;return(i=n.rel)==null?void 0:i.includes("sponsored")}).length,ugcLinks:e.filter(n=>{var i;return(i=n.rel)==null?void 0:i.includes("ugc")}).length,broken:0,withoutText:e.filter(n=>{var i;return!((i=n.text)!=null&&i.trim())}).length,internalHttpLinks:r.length,internalHttpLinkUrls:r}}buildImageAnalysis(e){return{total:e.length,withAlt:e.filter(r=>r.alt&&r.alt.trim().length>0).length,withoutAlt:e.filter(r=>!r.alt||r.alt.trim().length===0).length,lazy:e.filter(r=>r.loading==="lazy").length,missingDimensions:e.filter(r=>!r.width||!r.height).length,modernFormats:e.filter(r=>/\.(webp|avif)$/i.test(r.src)).length,altTextLengths:e.filter(r=>r.alt).map(r=>r.alt.length),imageAltTexts:e.filter(r=>r.alt).map(r=>r.alt.toLowerCase()),imageFilenames:e.map(r=>{try{return new URL(r.src).pathname.split("/").pop()||""}catch{return""}}).filter(Boolean),imagesWithAsyncDecoding:e.filter(r=>r.decoding==="async").length}}buildSocialAnalysis(e,r){let n=[],i=[],o=!!(e.title||e.description||e.image);o?(e.title||n.push("Missing og:title"),e.description||n.push("Missing og:description"),e.image||n.push("Missing og:image"),e.url||n.push("Missing og:url")):n.push("No OpenGraph meta tags found");let s=!!(r.card||r.title||r.description);return s?(r.card||i.push("Missing twitter:card"),r.title||i.push("Missing twitter:title"),r.description||i.push("Missing twitter:description")):i.push("No Twitter Card meta tags found"),{openGraph:{present:o,hasTitle:!!e.title,hasDescription:!!e.description,hasImage:!!e.image,hasUrl:!!e.url,issues:n},twitterCard:{present:s,hasCard:!!r.card,hasTitle:!!r.title,hasDescription:!!r.description,hasImage:!!r.image,issues:i}}}buildTechnicalAnalysis(e){let r=this.root.querySelector("html"),n=r?r.getAttribute("lang"):void 0;return{hasCanonical:!!e.canonical,canonicalUrl:e.canonical,hasRobotsMeta:!!e.robots,robotsContent:e.robots,hasViewport:!!e.viewport,hasCharset:!!e.charset,hasLang:!!n,langValue:n}}analyzeResources(){let e=this.root.querySelectorAll("script[src]"),r=this.root.querySelectorAll('link[rel="stylesheet"]'),n=[];return e.forEach(i=>{let o=i.getAttribute("src");o&&!o.includes(".min.")&&!o.includes("cdn")&&n.push(o)}),r.forEach(i=>{let o=i.getAttribute("href");o&&!o.includes(".min.")&&!o.includes("cdn")&&n.push(o)}),{jsFilesCount:e.length,cssFilesCount:r.length,unminifiedResources:n.length,unminifiedResourceUrls:n}}calculateScore(e){if(e.length===0)return{score:100,grade:"A"};let{score:r}=Vd(e),n=r,i;return n>=90?i="A":n>=80?i="B":n>=70?i="C":n>=60?i="D":i="F",{score:n,grade:i}}getRules(){return this.rulesEngine.getRules()}getRulesByCategory(e){return this.rulesEngine.getRulesByCategory(e)}getCategories(){return this.rulesEngine.getCategories()}};async function Gd(t,e={}){return(await cs.fromHtml(t,e)).analyze()}var Yd={};Ee(Yd,{AIConfigurationError:()=>xn,AIError:()=>ie,AdaptiveTimeoutManager:()=>Zr,AnthropicProvider:()=>fr,AuthenticationError:()=>it,BaseAIProvider:()=>$e,ClientAIImpl:()=>Jt,ContextLengthError:()=>Ge,ConversationMemory:()=>Xt,GoogleProvider:()=>hr,OllamaProvider:()=>gr,OpenAIProvider:()=>mr,OverloadedError:()=>Ne,PROVIDER_RATE_LIMITS:()=>ds,RateLimitError:()=>Pe,RateLimitExceededError:()=>tn,StreamTimeoutController:()=>Oi,TokenRateLimiter:()=>en,UnifiedAIClient:()=>Yr,adaptiveTimeouts:()=>Kd,createAI:()=>$i,createRateLimiter:()=>Jd,tokenEstimators:()=>Qd});V();var $e=class{config;constructor(e){this.config=e}get name(){return this.config.name}getApiKey(){let e=this.config.apiKey||this.getEnvApiKey();if(!e)throw new Me(`API key not configured for provider: ${this.config.name}`,{configKey:`${this.config.name}.apiKey`});return e}buildHeaders(){return{"Content-Type":"application/json",...this.config.headers}}calculateLatency(e){let n=performance.now()-e.startTime,i=e.firstTokenTime?e.firstTokenTime-e.startTime:n,o=e.tokenCount>0&&n>0?e.tokenCount/n*1e3:0;return{ttft:i,tps:o,total:n}}emptyUsage(){return{inputTokens:0,outputTokens:0,totalTokens:0}}async*parseSSEStream(e,r){var s;let n=(s=e.body)==null?void 0:s.getReader();if(!n)throw new pe("Response body is not readable",{streamType:"sse"});let i=new TextDecoder,o="";try{for(;;){let{done:c,value:u}=await n.read();if(c)break;o+=i.decode(u,{stream:!0});let l=o.split(`
|
|
412
|
+
<a href="/signup" class="btn-primary">Start Your Trial</a>`}}):a({id:"cta-presence",name:"Call-to-Action Elements",category:"content",severity:"info"},"pass",`${t.ctaButtonsCount} call-to-action element(s) found`,{value:t.ctaButtonsCount})},{id:"form-presence",name:"Form Elements",category:"content",severity:"info",description:"Detect forms for lead generation or conversion",check:t=>t.formCount===void 0?a({id:"form-presence",name:"Form Elements",category:"content",severity:"info"},"info","Not applicable (form count data unavailable)",{recommendation:"This rule checks for forms for lead generation and conversions"}):t.formCount>0?a({id:"form-presence",name:"Form Elements",category:"content",severity:"info"},"pass",`${t.formCount} form(s) detected for lead capture/conversion`,{value:t.formCount,evidence:{found:`${t.formCount} form elements`,impact:"Forms are essential for lead generation, contact, and conversions."}}):a({id:"form-presence",name:"Form Elements",category:"content",severity:"info"},"pass","No forms detected (may not be needed for this page type)")},{id:"contact-methods",name:"Contact Methods",category:"content",severity:"info",description:"Page should provide contact methods for user trust",check:t=>{let e=[];return t.emailsFound&&t.emailsFound.length>0&&e.push("email"),t.hasPhoneOnPage&&e.push("phone"),t.hasWhatsAppLink&&e.push("WhatsApp"),e.length===0&&t.hasContactPageLink?a({id:"contact-methods",name:"Contact Methods",category:"content",severity:"info"},"pass","Contact page link found",{evidence:{found:"Link to contact page"}}):e.length>0?a({id:"contact-methods",name:"Contact Methods",category:"content",severity:"info"},"pass",`Contact methods found: ${e.join(", ")}`,{value:e.join(", ")}):a({id:"contact-methods",name:"Contact Methods",category:"content",severity:"info"},"pass","No direct contact methods detected (may not be needed)")}},{id:"rss-feed-present",name:"RSS Feed",category:"technical",severity:"info",description:"RSS feeds help users and search engines discover new content",check:t=>t.hasRssFeed===void 0?a({id:"rss-feed-present",name:"RSS Feed",category:"technical",severity:"info"},"info","Not applicable (RSS feed data unavailable)",{recommendation:"This rule checks for RSS feeds for content distribution"}):t.hasRssFeed?a({id:"rss-feed-present",name:"RSS Feed",category:"technical",severity:"info"},"pass","RSS feed detected",{value:t.rssFeedUrl,evidence:{found:t.rssFeedUrl||"RSS link tag present",impact:"RSS feeds notify search engines and feed readers when content is updated, improving content discovery."}}):a({id:"rss-feed-present",name:"RSS Feed",category:"technical",severity:"info"},"info","No RSS feed detected",{recommendation:"Add an RSS feed for blogs or news sites to improve content distribution.",evidence:{expected:'<link rel="alternate" type="application/rss+xml" href="/feed.xml">',impact:"RSS feeds help users subscribe to content and notify search engines of updates. Particularly important for blogs and news sites.",learnMore:"https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap#rss-atom"}})},{id:"atom-feed-present",name:"Atom Feed",category:"technical",severity:"info",description:"Atom feeds are an alternative to RSS for content syndication",check:t=>t.hasAtomFeed===void 0?a({id:"atom-feed-present",name:"Atom Feed",category:"technical",severity:"info"},"info","Not applicable (Atom feed data unavailable)",{recommendation:"This rule checks for Atom feeds as alternative to RSS"}):t.hasAtomFeed?a({id:"atom-feed-present",name:"Atom Feed",category:"technical",severity:"info"},"pass","Atom feed detected",{value:t.atomFeedUrl,evidence:{found:t.atomFeedUrl||"Atom link tag present"}}):a({id:"atom-feed-present",name:"Atom Feed",category:"technical",severity:"info"},"pass","No Atom feed detected (RSS is more common)")},{id:"noindex-canonical-conflict",name:"Noindex + Canonical Conflict",category:"technical",severity:"error",description:"Having both noindex and canonical sends conflicting signals",check:t=>!t.metaRobots||!t.hasCanonical?a({id:"noindex-canonical-conflict",name:"Noindex + Canonical Conflict",category:"technical",severity:"error"},"info","Not applicable (robots meta tag or canonical data unavailable)",{recommendation:"This rule detects conflicting noindex and canonical directives"}):t.metaRobots.includes("noindex")&&t.hasCanonical?a({id:"noindex-canonical-conflict",name:"Noindex + Canonical Conflict",category:"technical",severity:"error"},"fail","Page has both noindex and canonical - conflicting signals",{recommendation:"Remove either noindex or canonical. They serve opposite purposes.",evidence:{found:`noindex meta tag + canonical: ${t.canonicalUrl}`,expected:"Either noindex (to block indexing) OR canonical (to consolidate indexing)",impact:"noindex tells search engines not to index this page, while canonical tells them to consolidate signals to a URL. Google may ignore the canonical if noindex is present, wasting crawl budget.",issue:"Conflicting indexing directives",learnMore:"https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls"}}):a({id:"noindex-canonical-conflict",name:"Noindex + Canonical Conflict",category:"technical",severity:"error"},"pass","No conflicting noindex and canonical directives")},{id:"noindex-sitemap-hint",name:"Noindex Pages in Sitemap",category:"crawlability",severity:"warning",description:"Pages with noindex should not be in sitemap",check:t=>t.metaRobots?t.metaRobots.includes("noindex")&&t.pageInSitemap?a({id:"noindex-sitemap-hint",name:"Noindex in Sitemap",category:"crawlability",severity:"warning"},"warn","Page has noindex but appears to be in sitemap",{recommendation:"Remove noindex pages from sitemap to avoid wasting crawl budget.",evidence:{found:"noindex directive on page that may be in sitemap",expected:"Only indexable pages in sitemap",impact:"Including noindex pages in sitemap wastes crawl budget and sends conflicting signals to search engines.",learnMore:"https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap#best-practices"}}):a({id:"noindex-sitemap-hint",name:"Noindex in Sitemap",category:"crawlability",severity:"warning"},"pass","Page is indexable or not in sitemap"):a({id:"noindex-sitemap-hint",name:"Noindex in Sitemap",category:"crawlability",severity:"warning"},"info","Not applicable (robots meta tag data unavailable)",{recommendation:"This rule checks if noindex pages are incorrectly included in sitemap"})}];var Jx=[...hd,...gd,...yd,...bd,...vd,...wd,...xd,...Td,...Sd,...Ad,...Cd,...Ed,...Dd,...Ld,...Rd,...Pd,...Nd,...Md,...Bd,...Ud,...Id,...Hd,...kd,...qd,...$d,...Od,...zd,...jd,..._d],Wd={severity:{error:{pass:10,fail:-15,warn:-10,info:0},warning:{pass:5,fail:-8,warn:-5,info:0},info:{pass:2,fail:-3,warn:-2,info:0}},category:{title:1.5,meta:1.3,og:1,twitter:.8,headings:1.2,images:1,links:1.1,content:1.2,technical:1.3,security:.9,mobile:1.2,"structured-data":1,performance:1.4,accessibility:.8,i18n:.9,"ai-search":.7,resources:1.1,crawlability:1.3,canonicalization:1.2}};function Vd(t){let e={};for(let u of t){let d=Wd.severity[u.severity][u.status]??0;e[u.category]||(e[u.category]={score:0,count:0}),e[u.category].score+=d,e[u.category].count++}let r=0,n=0,i=[];for(let[u,l]of Object.entries(e)){let d=u,p=Wd.category[d]??1,m=l.count>0?l.score/l.count:0,f=m*p;i.push({category:d,score:m,weight:p}),r+=f,n+=p}let o=100,c=Math.max(0,Math.min(100,70+r));return{score:Math.round(c),maxPossible:o,details:i}}var qi=class{rules;constructor(e={}){var n,i,o,s;let r=[...Jx];if((n=e.categories)!=null&&n.length&&(r=r.filter(c=>e.categories.includes(c.category))),(i=e.excludeCategories)!=null&&i.length&&(r=r.filter(c=>!e.excludeCategories.includes(c.category))),(o=e.rules)!=null&&o.length&&(r=r.filter(c=>e.rules.includes(c.id))),(s=e.excludeRules)!=null&&s.length&&(r=r.filter(c=>!e.excludeRules.includes(c.id))),e.minSeverity){let c=["info","warning","error"],u=c.indexOf(e.minSeverity);r=r.filter(l=>c.indexOf(l.severity)>=u)}this.rules=r}evaluate(e){let r=[];for(let n of this.rules){let i=n.check(e);i&&r.push(i)}return r}getRules(){return[...this.rules]}getRulesByCategory(e){return this.rules.filter(r=>r.category===e)}getCategories(){return[...new Set(this.rules.map(e=>e.category))]}};function ss(t){return new qi(t)}var cs=class t{root;options;rulesEngine;constructor(e,r={}){this.root=e,this.options=r,this.rulesEngine=ss(r.rules)}static async fromHtml(e,r={}){let n=Re(e);return new t(n,r)}analyze(){var _;let e=this.options.baseUrl||"",r=fi(this.root),n=hi(this.root),i=gi(this.root),o=yi(this.root),s=pi(this.root,{baseUrl:this.options.baseUrl}),c=mi(this.root,{baseUrl:this.options.baseUrl}),u=this.getVisibleText(),l=fd({visibleText:u,title:r.title,description:r.description,keywords:(_=r.keywords)==null?void 0:_.join(", ")}),d=/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g,p=(u.match(d)||[]).filter(E=>!E.endsWith(".png")&&!E.endsWith(".jpg")&&!E.endsWith(".webp")),m=["facebook.com","twitter.com","x.com","instagram.com","linkedin.com","youtube.com","pinterest.com","tiktok.com","github.com","reddit.com","snapchat.com","whatsapp.com","telegram.org","discord.com","threads.net"],f=s.map(E=>E.href).filter(E=>m.some(M=>E.toLowerCase().includes(M))),h=this.analyzeSocialLinks(s,m),g=this.analyzeHeadings(),y=this.analyzeContent(g),C=this.buildLinkAnalysis(s),b=this.buildImageAnalysis(c),w=this.buildSocialAnalysis(n,i),x=this.buildTechnicalAnalysis(r),v=this.analyzeResources(),T=this.analyzeAnalytics(),k=this.analyzeFeeds(),S=this.analyzeConversionElements(s,u),P=this.detectPageType(o),q=this.buildRuleContext({pageType:P,meta:r,og:n,twitter:i,jsonLd:o,headings:g,content:y,linkAnalysis:C,imageAnalysis:b,links:s,keywords:l,resources:v,emailsFound:p,socialLinksFound:f,socialLinkDetails:h,analytics:T,feeds:k,conversion:S}),R=this.rulesEngine.evaluate(q),O=this.convertToCheckResults(R),{score:W,grade:z}=this.calculateScore(R),I=this.buildSummary(O,{content:y,imageAnalysis:b,linkAnalysis:C,meta:r,og:n,twitter:i,technical:x,pageType:P,timings:this.options.timings});return{url:e,timestamp:new Date,grade:z,score:W,timing:this.options.timings,summary:I,pageType:P,checks:O,title:r.title?{text:r.title,length:r.title.length}:void 0,metaDescription:r.description?{text:r.description,length:r.description.length}:void 0,openGraph:Object.keys(n).length>0?{title:n.title,description:n.description,image:Array.isArray(n.image)?n.image[0]:n.image,url:n.url,type:n.type,siteName:n.siteName}:void 0,twitterCard:Object.keys(i).length>0?{card:i.card,title:i.title,description:i.description,image:Array.isArray(i.image)?i.image[0]:i.image,site:i.site}:void 0,structuredData:{count:o.length,types:o.map(E=>E["@type"]).filter(Boolean),items:o},headings:g,content:y,keywords:l,links:C,images:b,social:w,technical:x}}getMainBody(){let e=this.root.querySelectorAll("body");return e.length===0?null:e.length===1?e[0]:e.reduce((r,n)=>n.text.length>r.text.length?n:r)}detectPageType(e){if(!this.options.baseUrl)return"other";try{let r=new URL(this.options.baseUrl),n=r.pathname.toLowerCase(),i=u=>r.searchParams.has(u);return n==="/"||n===""?"homepage":/(^|\/)(search|busca|s|results|query)\b/.test(n)||i("q")||i("query")||i("search")?"search":["product","produto","item","sku","shop"].some(u=>n.includes(`/${u}/`))?"product":["article","post","blog","noticia","news"].some(u=>n.includes(`/${u}/`))||this.root.querySelectorAll("article").length>0?"article":/(^|\/)(categoria|category|tag|section|topic)\b/.test(n)?"category":e.map(u=>u["@type"]).some(u=>typeof u=="string"&&u.toLowerCase()==="product")?"product":"other"}catch{return"other"}}getVisibleText(){let e=this.getMainBody();if(!e)return"";let r=e.clone(),n=["script","style","noscript","template","header","nav","svg"];try{r.querySelectorAll(n.join(",")).forEach(o=>o.remove())}catch{n.forEach(i=>{r.querySelectorAll(i).forEach(o=>o.remove())})}try{r.querySelectorAll('[hidden], [aria-hidden="true"]').forEach(i=>i.remove())}catch{r.querySelectorAll("[hidden]").forEach(i=>i.remove()),r.querySelectorAll('[aria-hidden="true"]').forEach(i=>i.remove())}return r.text.replace(/\s+/g," ").trim()}buildRuleContext(e){var hs,gs,ys,bs,vs,ws,xs,ks;let{meta:r,og:n,twitter:i,jsonLd:o,headings:s,content:c,pageType:u,linkAnalysis:l,imageAnalysis:d,links:p,keywords:m,resources:f,emailsFound:h,socialLinksFound:g,socialLinkDetails:y,analytics:C,feeds:b,conversion:w}=e,x=this.root.querySelector("html"),v=x?x.getAttribute("lang"):void 0,T=[];this.root.querySelectorAll('link[rel="alternate"][hreflang]').forEach(N=>{let te=N.getAttribute("hreflang"),kt=N.getAttribute("href");te&&kt&&T.push({lang:te,href:kt})});let k=this.root.querySelector('meta[property="og:locale"]'),S=k?k.getAttribute("content"):void 0,P=U.links.genericTexts,q=p.filter(N=>{var kt;let te=(kt=N.text)==null?void 0:kt.toLowerCase().trim();return te&&P.some(an=>te===an||te.includes(an))}),R=q.length,O=p.filter(N=>{let te=N.text&&N.text.trim()!=="",kt=N.hasImageWithAlt||N.hasSvgWithTitle,an=N.ariaLabel||N.title;return!te&&!kt&&!an}),W=p.filter(N=>N.type==="external"&&N.target==="_blank"),z=W.filter(N=>{var te;return!((te=N.rel)!=null&&te.includes("noopener"))}),I=W.filter(N=>{var te;return!((te=N.rel)!=null&&te.includes("noreferrer"))}),_={withoutText:O,genericText:q,missingNoopener:z,missingNoreferrer:I},E=this.checkMixedContent(),M=this.root.querySelectorAll("h1"),B=M.length>0?M[0].text.trim():"",H=m.topKeywords.slice(0,5).map(N=>N.word),F=H.length>0?H[0]:void 0,oe=H.some(N=>{var te;return(te=r.title)==null?void 0:te.toLowerCase().includes(N)}),ee=H.some(N=>{var te;return(te=r.description)==null?void 0:te.toLowerCase().includes(N)}),Ie=H.some(N=>B.toLowerCase().includes(N)),ne=this.options.baseUrl?new URL(this.options.baseUrl).pathname.toLowerCase().replace(/[-_]/g," "):"",Ke=H.some(N=>ne.includes(N)),Oe=((gs=(hs=this.root.querySelector("p"))==null?void 0:hs.text)==null?void 0:gs.toLowerCase())||"",He=H.some(N=>Oe.includes(N)),Xe=d.imageAltTexts||[],ze=Xe.some(N=>H.some(te=>N.includes(te))),jt=F?{inTitle:((ys=r.title)==null?void 0:ys.toLowerCase().includes(F))||!1,inDescription:((bs=r.description)==null?void 0:bs.toLowerCase().includes(F))||!1,inH1:B.toLowerCase().includes(F)||!1,inUrl:ne.includes(F),inFirstParagraph:Oe.includes(F),inAltText:Xe.some(N=>N.includes(F))}:void 0,on=jt?Object.values(jt).filter(Boolean).length:void 0,xt=this.root.querySelector('meta[name="viewport"]'),_t=xt?xt.getAttribute("content"):void 0,tp=this.analyzeAccessibility(),rp=this.root.querySelectorAll('img[alt=""]').length,np=this.analyzeLinkSecurity(),ip=this.detectFavicon(),op=this.analyzePerformanceHints(),fs=this.analyzeCWVHints(),ap=this.analyzeStructuralHtml(),sp=this.analyzeBreadcrumbs(o.map(N=>N["@type"]).filter(Boolean)),cp=this.analyzeMultimedia(),up=this.analyzeResponsiveImages(),lp=this.analyzeInlineImages(),dp=this.analyzeTrustSignals(p),pp=(s.structure.filter(N=>N.level===2).length||0)+(s.structure.filter(N=>N.level===3).length||0),mp=c.wordCount>0?pp/c.wordCount*100:0,fp=this.calculateTextHtmlRatio(c.characterCount);return{pageType:u,jsFilesCount:f.jsFilesCount,cssFilesCount:f.cssFilesCount,unminifiedResources:f.unminifiedResources,unminifiedResourceUrls:f.unminifiedResourceUrls,emailsFound:h,socialLinksFound:g,...y,keywordsInTitle:oe,keywordsInDescription:ee,keywordsInH1:Ie,keywordsInUrl:Ke,keywordsInFirstParagraph:He,keywordsInAltText:ze,keywordConsistencyScore:on,keywordConsistencyDetails:jt,topKeywords:H,mainKeyword:F,title:r.title,titleLength:(vs=r.title)==null?void 0:vs.length,metaDescription:r.description,metaDescriptionLength:(ws=r.description)==null?void 0:ws.length,metaKeywords:r.keywords,metaRobots:r.robots,ogTitle:n.title,ogDescription:n.description,ogImage:Array.isArray(n.image)?n.image[0]:n.image,ogUrl:n.url,ogType:n.type,ogSiteName:n.siteName,twitterCard:i.card,twitterTitle:i.title,twitterDescription:i.description,twitterImage:Array.isArray(i.image)?i.image[0]:i.image,twitterSite:i.site,h1Count:s.h1Count,h1Text:B||void 0,h1Length:B==null?void 0:B.length,h2Count:s.structure.filter(N=>N.level===2).length,headingHierarchyValid:s.hasProperHierarchy,headingSkippedLevels:s.issues.filter(N=>N.includes("Skipped")),sectionWordCounts:s.sectionWordCounts,totalImages:d.total,imagesWithAlt:d.withAlt,imagesWithoutAlt:d.withoutAlt,imagesWithLazyLoad:d.lazy,imagesMissingDimensions:d.missingDimensions,imagesWithEmptyAlt:rp,imagesUsingModernFormats:d.modernFormats,altTextLengths:d.altTextLengths,imageAltTexts:d.imageAltTexts,imageFilenames:d.imageFilenames,imagesWithAsyncDecoding:d.imagesWithAsyncDecoding,imagesWithSrcset:up.imagesWithSrcset,largeBase64ImagesCount:lp.largeBase64ImagesCount,...tp,allLinks:p,totalLinks:l.total,internalLinks:l.internal,externalLinks:l.external,internalHttpLinks:l.internalHttpLinks,internalHttpLinkUrls:l.internalHttpLinkUrls,linksWithoutText:l.withoutText,nofollowLinks:l.nofollow,sponsoredLinks:l.sponsoredLinks,ugcLinks:l.ugcLinks,linksWithGenericText:R,...np,problematicLinks:_,wordCount:c.wordCount,characterCount:c.characterCount,sentenceCount:c.sentenceCount,paragraphCount:c.paragraphCount,avgWordsPerSentence:c.avgWordsPerSentence,avgParagraphLength:c.avgParagraphLength,listCount:c.listCount,strongTagCount:c.strongTagCount,emTagCount:c.emTagCount,subheadingFrequency:mp,paragraphWordCounts:c.paragraphWordCounts,avgSentenceLength:c.avgSentenceLength,faqCount:c.faqCount,imagePerWordRatio:c.imagePerWordRatio,keywordDensity:c.keywordDensity,fleschReadingEase:c.fleschReadingEase,hasQuestionHeadings:c.hasQuestionHeadings,...ap,...dp,...sp,...cp,hasCanonical:!!r.canonical,canonicalUrl:r.canonical,hasViewport:!!r.viewport,viewportContent:_t,hasCharset:!!r.charset,charset:r.charset,hasLang:!!v,langValue:v,isHttps:(xs=this.options.baseUrl)==null?void 0:xs.startsWith("https://"),hasMixedContent:E,responseHeaders:this.options.responseHeaders,textHtmlRatio:fp,hasFrameTags:this.root.querySelectorAll("frame, frameset").length>0,iframeCount:this.root.querySelectorAll("iframe").length,hasDeprecatedPlugins:this.root.querySelectorAll("object, embed, applet").length>0,deprecatedTagsCount:this.root.querySelectorAll("center, font, strike, u, marquee, blink, big, tt").length,deprecatedTagsFound:["center","font","strike","u","marquee","blink","big","tt"].filter(N=>this.root.querySelectorAll(N).length>0),hasAppleTouchIcon:this.root.querySelectorAll('link[rel="apple-touch-icon"], link[rel="apple-touch-icon-precomposed"]').length>0,...ip,...op,lcpHints:fs.lcpHints,clsHints:fs.clsHints,jsonLdCount:o.length,jsonLdTypes:o.map(N=>N["@type"]).filter(Boolean),url:this.options.baseUrl,urlLength:(ks=this.options.baseUrl)==null?void 0:ks.length,titleMatchesH1:r.title&&B?r.title.toLowerCase().trim()===B.toLowerCase().trim():void 0,...this.analyzeUrlQuality(),...this.analyzeJsRendering(c),hreflangTags:T.length>0?T:void 0,ogLocale:S,analyticsDetected:C.analyticsDetected,analyticsProviders:C.analyticsProviders,...b,ctaButtonsCount:w.ctaButtonsCount,formCount:w.formCount,hasWhatsAppLink:w.hasWhatsAppLink,hasPhoneOnPage:w.hasPhoneOnPage,timings:this.options.timings,htmlSize:this.options.htmlSize}}analyzeUrlQuality(){if(!this.options.baseUrl)return{urlHasUppercase:!1,urlHasSpecialChars:!1,urlHasAccents:!1};try{let e=new URL(this.options.baseUrl),r=e.pathname+e.search,n=/[A-Z]/.test(r),i=/[àáâãäåæçèéêëìíîïñòóôõöùúûüýÿ]/i.test(r),o=/[<>{}|\^`\[\]]/.test(r)||/%[0-9A-F]{2}/i.test(r);return{urlHasUppercase:n,urlHasSpecialChars:o,urlHasAccents:i}}catch{return{urlHasUppercase:!1,urlHasSpecialChars:!1,urlHasAccents:!1}}}analyzeJsRendering(e){let r=e.characterCount,n=this.root.querySelectorAll("script").length,i=this.root.querySelector("noscript"),s=(i?i.text.trim():"").length>0;return{bodyTextLength:r,scriptCount:n,hasNoscriptContent:s}}analyzeResponsiveImages(){let e=0;return this.root.querySelectorAll("img").forEach(r=>{(r.getAttribute("srcset")||r.parentNode&&r.parentNode.tagName==="PICTURE")&&e++}),{imagesWithSrcset:e}}analyzeInlineImages(){let e=0;return this.root.querySelectorAll("img").forEach(r=>{let n=r.getAttribute("src")||"";n.startsWith("data:image")&&n.length>5*1024&&e++}),{largeBase64ImagesCount:e}}checkMixedContent(){let e=!1;return this.root.querySelectorAll('img[src^="http://"]').forEach(()=>{e=!0}),this.root.querySelectorAll('script[src^="http://"]').forEach(()=>{e=!0}),this.root.querySelectorAll('link[href^="http://"]').forEach(()=>{e=!0}),e}analyzeLinkSecurity(){let e=0,r=0;return this.root.querySelectorAll('a[href^="http"][target="_blank"]').forEach(n=>{let i=n.getAttribute("href")||"",o=(n.getAttribute("rel")||"").toLowerCase();this.options.baseUrl&&i.startsWith(this.options.baseUrl)||(o.includes("noopener")||e++,o.includes("noreferrer")||r++)}),{externalLinksWithoutNoopener:e,externalLinksWithoutNoreferrer:r}}detectFavicon(){let e=['link[rel="icon"]','link[rel="shortcut icon"]','link[rel="apple-touch-icon"]','link[rel="apple-touch-icon-precomposed"]'];for(let r of e){let n=this.root.querySelector(r);if(n)return{hasFavicon:!0,faviconUrl:n.getAttribute("href")}}return{hasFavicon:!1}}analyzePerformanceHints(){let r=this.root.querySelectorAll('link[rel="preconnect"]').length,i=this.root.querySelectorAll('link[rel="dns-prefetch"]').length,s=this.root.querySelectorAll('link[rel="preload"]').length,c=0;this.root.querySelectorAll("head script[src]:not([async]):not([defer])").forEach(()=>{c++}),this.root.querySelectorAll('head link[rel="stylesheet"]').forEach(d=>{let p=d.getAttribute("media");(!p||p==="all"||p==="screen")&&c++});let u=this.root.querySelectorAll("script:not([src])").filter(d=>(d.innerHTML||"").trim().length>0).length,l=this.root.querySelectorAll("style").length;return{hasPreconnect:r>0,preconnectCount:r,hasDnsPrefetch:i>0,dnsPrefetchCount:i,hasPreload:s>0,preloadCount:s,renderBlockingResources:c,inlineScriptsCount:u,inlineStylesCount:l}}analyzeCWVHints(){let e=this.root.querySelectorAll("img"),r=!1,n=!1,i=!1;e.slice(0,3).forEach((s,c)=>{let u=parseInt(s.getAttribute("width")||"0",10),l=parseInt(s.getAttribute("height")||"0",10),d=s.getAttribute("loading"),p=s.getAttribute("fetchpriority");(u>=400||l>=300)&&(r=!0),c===0&&d==="lazy"&&(n=!0),p==="high"&&(i=!0)}),this.root.querySelectorAll('[style*="background-image"]').slice(0,3).forEach(()=>{r=!0});let o=this.root.querySelectorAll("img:not([width]):not([height])").length+this.root.querySelectorAll('img[width="auto"], img[height="auto"]').length;return{lcpHints:{hasLargeImages:r,hasLazyLcp:n,hasPriorityHints:i},clsHints:{imagesWithoutDimensions:o}}}analyzeAccessibility(){let e=0;this.root.querySelectorAll("button").forEach(c=>{let u=c.text.trim(),l=c.getAttribute("aria-label"),d=c.getAttribute("aria-labelledby"),p=c.getAttribute("title");!u&&!l&&!d&&!p&&e++});let r=0;this.root.querySelectorAll("a[href]").forEach(c=>{let u=c.text.trim(),l=c.getAttribute("aria-label"),d=c.getAttribute("aria-labelledby"),p=c.getAttribute("title"),f=c.querySelectorAll("img").filter(b=>{var w;return!!((w=b.getAttribute("alt"))!=null&&w.trim())}).length>0,g=c.querySelectorAll("svg").filter(b=>b.querySelectorAll("title").length>0||!!b.getAttribute("aria-label")).length>0;!(u||f||g)&&!(l||d||p)&&r++});let n=0;this.root.querySelectorAll('input:not([type="hidden"]):not([type="submit"]):not([type="button"]):not([type="reset"]), select, textarea').forEach(c=>{let u=c.getAttribute("id"),l=c.getAttribute("aria-label"),d=c.getAttribute("aria-labelledby"),p=c.getAttribute("placeholder"),m=c.getAttribute("title"),f=u?this.root.querySelectorAll(`label[for="${u}"]`).length>0:!1,h=c.closest("label")!==null;!f&&!h&&!l&&!d&&!m&&!p&&n++});let i=this.root.querySelectorAll("iframe:not([title])").length,o=0;this.root.querySelectorAll("table").forEach(c=>{let u=c.querySelectorAll("caption").length>0,l=c.getAttribute("aria-label"),d=c.getAttribute("aria-labelledby"),p=c.getAttribute("role");if(p==="presentation"||p==="none")return;c.querySelectorAll("th").length>0&&!u&&!l&&!d&&o++});let s=0;return this.root.querySelectorAll("svg").forEach(c=>{let u=c.querySelectorAll("title").length>0,l=c.getAttribute("aria-label"),d=c.getAttribute("aria-labelledby"),p=c.getAttribute("aria-hidden"),m=c.getAttribute("role");p==="true"||m==="presentation"||m==="none"||!u&&!l&&!d&&s++}),{buttonsWithoutAriaLabel:e,linksWithoutAriaLabel:r,inputsWithoutLabel:n,iframesWithoutTitle:i,tablesWithoutCaption:o,svgsWithoutTitle:s}}analyzeStructuralHtml(){return{hasHeader:this.root.querySelectorAll("header").length>0,hasNav:this.root.querySelectorAll("nav").length>0,hasMain:this.root.querySelectorAll("main").length>0,hasArticle:this.root.querySelectorAll("article").length>0,hasSection:this.root.querySelectorAll("section").length>0,hasFooter:this.root.querySelectorAll("footer").length>0}}analyzeBreadcrumbs(e){let r=this.root.querySelectorAll('nav[aria-label="breadcrumb"], .breadcrumb, .breadcrumbs').length>0,n=e.includes("BreadcrumbList");return{hasBreadcrumbsHtml:r,hasBreadcrumbsSchema:n}}analyzeMultimedia(){let e=this.root.querySelectorAll("video"),r=this.root.querySelectorAll("audio"),n=!1,i=o=>{o.forEach(s=>{(s.getAttribute("autoplay")!==void 0||s.hasAttribute("autoplay"))&&(n=!0)})};return i(e),i(r),{videoCount:e.length,audioCount:r.length,hasAutoplay:n}}analyzeSocialLinks(e,r){let n=e.filter(y=>r.some(C=>y.href.toLowerCase().includes(C))),i={"facebook.com":"facebook","twitter.com":"twitter","x.com":"twitter","instagram.com":"instagram","linkedin.com":"linkedin","youtube.com":"youtube","pinterest.com":"pinterest","tiktok.com":"tiktok","github.com":"github","reddit.com":"reddit","snapchat.com":"snapchat","whatsapp.com":"whatsapp","telegram.org":"telegram","discord.com":"discord","threads.net":"threads"},o=[],s=0,c=0,u=0,l=0,d=0,p=new Set,m=this.root.querySelectorAll("header a[href]"),f=this.root.querySelectorAll("footer a[href]"),h=new Set(m.map(y=>y.getAttribute("href")||"")),g=new Set(f.map(y=>y.getAttribute("href")||""));for(let y of n){let C="unknown";for(let[T,k]of Object.entries(i))if(y.href.toLowerCase().includes(T)){C=k,p.add(k);break}let b="body";h.has(y.href)?(b="header",s++):g.has(y.href)&&(b="footer",c++);let w=!!(y.ariaLabel||y.title||y.text&&y.text.trim());w||u++;let x=y.target==="_blank";x||l++;let v=!!(y.rel&&y.rel.includes("noopener"));x&&!v&&d++,o.push({href:y.href,platform:C,hasAccessibility:w,hasNewTab:x,hasNoopener:v,location:b})}return{totalSocialLinks:n.length,socialLinksInHeader:s,socialLinksInFooter:c,socialLinksWithoutAccessibility:u,socialLinksWithoutNewTab:l,socialLinksWithoutNoopener:d,platformsFound:Array.from(p),socialLinkDetails:o}}analyzeTrustSignals(e){let r=e.map(n=>n.href.toLowerCase());return{hasAboutPageLink:r.some(n=>n.includes("about")||n.includes("quem-somos")),hasContactPageLink:r.some(n=>n.includes("contact")||n.includes("contato")),hasPrivacyPolicyLink:r.some(n=>n.includes("privacy")||n.includes("privacidade")),hasTermsOfServiceLink:r.some(n=>n.includes("terms")||n.includes("termos-de-uso"))}}analyzeAnalytics(){let e=[],r=this.root.querySelectorAll("script"),n=[],i=[];r.forEach(s=>{let c=s.getAttribute("src")||"",u=s.innerHTML||"";c&&n.push(c.toLowerCase()),u&&i.push(u.toLowerCase())});let o=n.join(" ")+" "+i.join(" ");return o.includes("gtag")&&o.includes("g-")&&e.push("Google Analytics 4 (GA4)"),(o.includes("analytics.js")||o.includes("ga.js")||o.includes("ua-")&&!o.includes("g-"))&&e.push("Universal Analytics (UA)"),(o.includes("googletagmanager.com/gtm")||o.includes("gtm-"))&&e.push("Google Tag Manager"),(o.includes("hotjar.com")||o.includes("hj("))&&e.push("Hotjar"),(o.includes("clarity.ms")||o.includes("clarity("))&&e.push("Microsoft Clarity"),(o.includes("fullstory.com")||o.includes("fs.identify"))&&e.push("FullStory"),o.includes("luckyorange.com")&&e.push("Lucky Orange"),o.includes("crazyegg.com")&&e.push("Crazy Egg"),(o.includes("mixpanel.com")||o.includes("mixpanel.init"))&&e.push("Mixpanel"),(o.includes("heap.io")||o.includes("heapanalytics"))&&e.push("Heap"),(o.includes("amplitude.com")||o.includes("amplitude.init"))&&e.push("Amplitude"),(o.includes("segment.com")||o.includes("analytics.load"))&&e.push("Segment"),o.includes("plausible.io")&&e.push("Plausible"),(o.includes("matomo")||o.includes("piwik"))&&e.push("Matomo"),(o.includes("posthog.com")||o.includes("posthog.init"))&&e.push("PostHog"),(o.includes("connect.facebook.net")||o.includes("fbq("))&&e.push("Facebook Pixel"),(o.includes("snap.licdn.com")||o.includes("_linkedin_partner_id"))&&e.push("LinkedIn Insight"),(o.includes("static.ads-twitter.com")||o.includes("twq("))&&e.push("Twitter Pixel"),(o.includes("pintrk(")||o.includes("pinterest.com/ct"))&&e.push("Pinterest Tag"),{analyticsDetected:e.length>0,analyticsProviders:e}}analyzeFeeds(){let e=!1,r,n=!1,i,o=this.root.querySelector('link[type="application/rss+xml"]');o&&(e=!0,r=o.getAttribute("href")||void 0);let s=this.root.querySelector('link[type="application/atom+xml"]');return s&&(n=!0,i=s.getAttribute("href")||void 0),{hasRssFeed:e,rssFeedUrl:r,hasAtomFeed:n,atomFeedUrl:i}}analyzeConversionElements(e,r){let n=this.root.querySelectorAll("form").length,i=[/^(get started|start|begin|try|sign up|register|subscribe|join|buy|purchase|order|add to cart|checkout|download|contact|request|schedule|book|reserve|learn more|read more|discover|explore|view|see|watch|listen|play|submit|send|apply|claim|grab|unlock|access)$/i,/^(obter|começar|iniciar|experimentar|inscrever|registrar|assinar|entrar|comprar|pedir|adicionar|finalizar|baixar|contato|solicitar|agendar|reservar|saber mais|ler mais|descobrir|explorar|ver|assistir|ouvir|enviar|aplicar|reivindicar|acessar)$/i],o=0;this.root.querySelectorAll("button").forEach(l=>{let d=l.text.trim().toLowerCase();i.some(p=>p.test(d))&&o++}),this.root.querySelectorAll('a[class*="btn"], a[class*="button"], a[role="button"]').forEach(l=>{let d=l.text.trim().toLowerCase();i.some(p=>p.test(d))&&o++});let s=e.some(l=>l.href.includes("wa.me")||l.href.includes("whatsapp.com")||l.href.includes("api.whatsapp.com")),u=/(?:\+?\d{1,3}[-.\s]?)?\(?\d{2,4}\)?[-.\s]?\d{3,5}[-.\s]?\d{3,5}/g.test(r)||e.some(l=>l.href.startsWith("tel:"));return{ctaButtonsCount:o,formCount:n,hasWhatsAppLink:s,hasPhoneOnPage:u}}calculateTextHtmlRatio(e){var n;let r=(n=this.root.innerHTML)==null?void 0:n.length;if(r&&r>0)return e/r*100}classifyInfoCheck(e){var s;if(e.status!=="info")return;let r=(e.message||"").toLowerCase(),n=(((s=e.evidence)==null?void 0:s.issue)||"").toLowerCase(),i=(e.recommendation||"").toLowerCase(),o=`${r} ${n} ${i}`;return/not\s+applicable/.test(o)||/not\s+available/.test(o)||/data\s+unavailable/.test(o)||/context\s+unavailable/.test(o)||/unable\s+to\s+check/.test(o)||/cannot\s+verify/.test(o)||/cannot\s+be\s+determined/.test(o)||/\bunavailable\b/.test(o)||/not\s+set/.test(o)||/not\s+present/.test(o)?"not_applicable":"suggestion"}convertToCheckResults(e){return e.map(r=>({id:r.id,name:r.name,category:r.category,severity:r.severity,status:r.status,message:r.message,infoType:this.classifyInfoCheck(r),value:r.value,recommendation:r.recommendation,evidence:r.evidence}))}buildSummary(e,r){var T;let n=r.pageType,i=r.timings,o=e.filter(k=>k.status==="pass").length,s=e.filter(k=>k.status==="warn").length,c=e.filter(k=>k.status==="fail").length,u=e.filter(k=>k.status==="info").length,l=e.filter(k=>k.status==="info"&&k.infoType==="not_applicable").length,d=e.filter(k=>k.status==="info"&&k.infoType!=="not_applicable").length,p=e.length,m=p-u,f=m>0?Math.round(o/m*100):100,h={};for(let k of e){let S=k.category;h[S]||(h[S]={passed:0,warnings:0,errors:0,infos:0,notApplicable:0,suggestions:0}),k.status==="pass"?h[S].passed++:k.status==="warn"?h[S].warnings++:k.status==="fail"?h[S].errors++:k.status==="info"&&(h[S].infos++,k.infoType==="not_applicable"?h[S].notApplicable++:h[S].suggestions++)}let g=e.filter(k=>k.status==="fail"||k.status==="warn").sort((k,S)=>{let P=W=>W==="fail"?2:1,q=P(S.status)-P(k.status);if(q!==0)return q;let R=k.severity||(k.status==="fail"?"error":"warning"),O=S.severity||(S.status==="fail"?"error":"warning");return R===O?0:R==="error"?-1:1}).slice(0,5).map(k=>({name:k.name,message:k.message,category:k.category,severity:k.severity||(k.status==="fail"?"error":"warning")})),y=[];r.meta.title||y.push("Add a page title"),r.meta.description||y.push("Add a meta description"),!r.og.title&&!r.og.description&&y.push("Add OpenGraph meta tags for social sharing"),r.twitter.card||y.push("Add Twitter Card meta tags"),r.technical.hasCanonical||y.push("Add a canonical URL"),r.technical.hasLang||y.push("Add lang attribute to <html>"),r.imageAnalysis.withoutAlt>0&&y.push(`Add alt text to ${r.imageAnalysis.withoutAlt} image(s)`),r.linkAnalysis.withoutText>0&&y.push(`Add text to ${r.linkAnalysis.withoutText} empty link(s)`);let C=y.slice(0,5),b=(T=this.root.innerHTML)==null?void 0:T.length,w=this.root.querySelectorAll("*").length,x={htmlSize:b,domElements:w,ttfb:i==null?void 0:i.ttfb,totalTime:i==null?void 0:i.total,wordCount:r.content.wordCount,totalWordCount:r.content.totalWordCount,readingTime:r.content.readingTimeMinutes,imageCount:r.imageAnalysis.total,linkCount:r.linkAnalysis.total},v={meta:this.calculateMetaCompleteness(r.meta),social:this.calculateSocialCompleteness(r.og,r.twitter),technical:this.calculateTechnicalCompleteness(r.technical),content:this.calculateContentCompleteness(r.content),images:this.calculateImageCompleteness(r.imageAnalysis),links:this.calculateLinkCompleteness(r.linkAnalysis)};return{totalChecks:p,passed:o,warnings:s,errors:c,infos:u,notApplicable:l,suggestions:d,passRate:f,issuesByCategory:h,pageType:n,topIssues:g,quickWins:C,vitals:x,completeness:v}}calculateMetaCompleteness(e){let r=0,n=5;return e.title&&r++,e.description&&r++,e.canonical&&r++,e.viewport&&r++,e.charset&&r++,Math.round(r/n*100)}calculateSocialCompleteness(e,r){let n=0,i=8;return e.title&&n++,e.description&&n++,e.image&&n++,e.url&&n++,r.card&&n++,r.title&&n++,r.description&&n++,r.image&&n++,Math.round(n/i*100)}calculateTechnicalCompleteness(e){let r=0,n=5;return e.hasCanonical&&r++,e.hasViewport&&r++,e.hasCharset&&r++,e.hasLang&&r++,e.hasRobotsMeta&&r++,Math.round(r/n*100)}calculateContentCompleteness(e){let r=0,n=5;return e.wordCount>=300&&r++,e.paragraphCount>=3&&r++,e.listCount>0&&r++,e.readingTimeMinutes>=1&&r++,(e.strongTagCount>0||e.emTagCount>0)&&r++,Math.round(r/n*100)}calculateImageCompleteness(e){if(e.total===0)return 100;let r=0,n=4;return e.withoutAlt===0&&r++,e.lazy>0&&r++,e.missingDimensions===0&&r++,e.modernFormats>0&&r++,Math.round(r/n*100)}calculateLinkCompleteness(e){if(e.total===0)return 100;let r=0,n=4;return e.internal>0&&r++,e.external>0&&r++,e.withoutText===0&&r++,e.broken===0&&r++,Math.round(r/n*100)}analyzeHeadings(){let e=[],r=[],n=[],i={1:0,2:0,3:0,4:0,5:0,6:0},o=0,s=!1,c=this.getMainBody();(c?c.querySelectorAll("*"):[]).forEach(p=>{let m=p.tagName.toLowerCase();if(m.match(/^h[1-6]$/)){let f=parseInt(m.substring(1),10),h=p.text.trim();i[f]=(i[f]||0)+1,r.push({level:f,text:h.slice(0,80),count:1}),f===2&&(s&&n.push(o),o=0,s=!0)}else if(s&&["p","ul","ol","div","article","section"].includes(m)){let f="";p.childNodes.forEach(h=>{h.nodeType===3&&(f+=h.text)}),f=f.trim(),f.length>0&&(o+=f.split(/\s+/).length)}}),s&&n.push(o);let l=!0,d=0;for(let p of r)p.level>d+1&&d!==0&&(l=!1,e.push(`Skipped heading level: H${d} to H${p.level}`)),d=p.level;return i[1]===0?e.push("No H1 tag found"):i[1]>1&&e.push("Multiple H1 tags"),{structure:r,h1Count:i[1],hasProperHierarchy:l,issues:e,sectionWordCounts:n}}analyzeContent(e){var x;let r=this.getMainBody(),n=this.getVisibleText(),i=r?r.text.replace(/\s+/g," ").trim():"";if(!i||i.length===0){let v=((x=this.root.text)==null?void 0:x.replace(/\s+/g," ").trim())||"";if(v.length>0)i=v;else{let T=[];this.root.querySelectorAll("p").forEach(k=>{var P;let S=(P=k.text)==null?void 0:P.trim();S&&T.push(S)}),i=T.join(" ")}}let o=n.split(/\s+/).filter(v=>v.length>0),s=i.split(/\s+/).filter(v=>v.length>0),c=n.split(/[.!?]+/).filter(v=>v.trim().length>0),u=this.root.querySelectorAll("p"),l=0,d=[];u.forEach(v=>{var S;let T=((S=v.text)==null?void 0:S.trim())||"";l+=T.length;let k=T.split(/\s+/).filter(P=>P.length>0).length;k>0&&d.push(k)});let p=o.length,m=s.length,f=Math.ceil(p/200),h=c.length>0?Math.round(p/c.length):0,g=0;e.structure.forEach(v=>{v.level===3&&/^(what|how|why|when|where|who|can|do|is|are)\b/i.test(v.text)&&g++});let y=this.root.querySelectorAll("img").length,C=p>0?y/p:0,b=void 0,w=e.structure.some(v=>(v.level===2||v.level===3)&&/^(what|how|why|when|where|who|can|do|is|are)\b/i.test(v.text));return{wordCount:p,totalWordCount:m,characterCount:n.length,sentenceCount:c.length,paragraphCount:u.length,readingTimeMinutes:f,avgWordsPerSentence:h,avgParagraphLength:u.length>0?Math.round(l/u.length):0,listCount:this.root.querySelectorAll("ul, ol").length,strongTagCount:this.root.querySelectorAll("strong").length,emTagCount:this.root.querySelectorAll("em").length,paragraphWordCounts:d,avgSentenceLength:h,faqCount:g,imagePerWordRatio:C,fleschReadingEase:b,hasQuestionHeadings:w}}buildLinkAnalysis(e){let r=e.filter(n=>n.type==="internal"&&n.href.startsWith("http://")).map(n=>n.href);return{total:e.length,internal:e.filter(n=>n.type==="internal").length,external:e.filter(n=>n.type==="external").length,nofollow:e.filter(n=>{var i;return(i=n.rel)==null?void 0:i.includes("nofollow")}).length,sponsoredLinks:e.filter(n=>{var i;return(i=n.rel)==null?void 0:i.includes("sponsored")}).length,ugcLinks:e.filter(n=>{var i;return(i=n.rel)==null?void 0:i.includes("ugc")}).length,broken:0,withoutText:e.filter(n=>{var i;return!((i=n.text)!=null&&i.trim())}).length,internalHttpLinks:r.length,internalHttpLinkUrls:r}}buildImageAnalysis(e){return{total:e.length,withAlt:e.filter(r=>r.alt&&r.alt.trim().length>0).length,withoutAlt:e.filter(r=>!r.alt||r.alt.trim().length===0).length,lazy:e.filter(r=>r.loading==="lazy").length,missingDimensions:e.filter(r=>!r.width||!r.height).length,modernFormats:e.filter(r=>/\.(webp|avif)$/i.test(r.src)).length,altTextLengths:e.filter(r=>r.alt).map(r=>r.alt.length),imageAltTexts:e.filter(r=>r.alt).map(r=>r.alt.toLowerCase()),imageFilenames:e.map(r=>{try{return new URL(r.src).pathname.split("/").pop()||""}catch{return""}}).filter(Boolean),imagesWithAsyncDecoding:e.filter(r=>r.decoding==="async").length}}buildSocialAnalysis(e,r){let n=[],i=[],o=!!(e.title||e.description||e.image);o?(e.title||n.push("Missing og:title"),e.description||n.push("Missing og:description"),e.image||n.push("Missing og:image"),e.url||n.push("Missing og:url")):n.push("No OpenGraph meta tags found");let s=!!(r.card||r.title||r.description);return s?(r.card||i.push("Missing twitter:card"),r.title||i.push("Missing twitter:title"),r.description||i.push("Missing twitter:description")):i.push("No Twitter Card meta tags found"),{openGraph:{present:o,hasTitle:!!e.title,hasDescription:!!e.description,hasImage:!!e.image,hasUrl:!!e.url,issues:n},twitterCard:{present:s,hasCard:!!r.card,hasTitle:!!r.title,hasDescription:!!r.description,hasImage:!!r.image,issues:i}}}buildTechnicalAnalysis(e){let r=this.root.querySelector("html"),n=r?r.getAttribute("lang"):void 0;return{hasCanonical:!!e.canonical,canonicalUrl:e.canonical,hasRobotsMeta:!!e.robots,robotsContent:e.robots,hasViewport:!!e.viewport,hasCharset:!!e.charset,hasLang:!!n,langValue:n}}analyzeResources(){let e=this.root.querySelectorAll("script[src]"),r=this.root.querySelectorAll('link[rel="stylesheet"]'),n=[];return e.forEach(i=>{let o=i.getAttribute("src");o&&!o.includes(".min.")&&!o.includes("cdn")&&n.push(o)}),r.forEach(i=>{let o=i.getAttribute("href");o&&!o.includes(".min.")&&!o.includes("cdn")&&n.push(o)}),{jsFilesCount:e.length,cssFilesCount:r.length,unminifiedResources:n.length,unminifiedResourceUrls:n}}calculateScore(e){if(e.length===0)return{score:100,grade:"A"};let{score:r}=Vd(e),n=r,i;return n>=90?i="A":n>=80?i="B":n>=70?i="C":n>=60?i="D":i="F",{score:n,grade:i}}getRules(){return this.rulesEngine.getRules()}getRulesByCategory(e){return this.rulesEngine.getRulesByCategory(e)}getCategories(){return this.rulesEngine.getCategories()}};async function Gd(t,e={}){return(await cs.fromHtml(t,e)).analyze()}var Yd={};Ee(Yd,{AIConfigurationError:()=>xn,AIError:()=>ie,AdaptiveTimeoutManager:()=>Zr,AnthropicProvider:()=>fr,AuthenticationError:()=>it,BaseAIProvider:()=>$e,ClientAIImpl:()=>Jt,ContextLengthError:()=>Ge,ConversationMemory:()=>Xt,GoogleProvider:()=>hr,OllamaProvider:()=>gr,OpenAIProvider:()=>mr,OverloadedError:()=>Ne,PROVIDER_RATE_LIMITS:()=>ds,RateLimitError:()=>Pe,RateLimitExceededError:()=>tn,StreamTimeoutController:()=>Oi,TokenRateLimiter:()=>en,UnifiedAIClient:()=>Yr,adaptiveTimeouts:()=>Kd,createAI:()=>$i,createRateLimiter:()=>Jd,tokenEstimators:()=>Qd});V();var $e=class{config;constructor(e){this.config=e}get name(){return this.config.name}getApiKey(){let e=this.config.apiKey||this.getEnvApiKey();if(!e)throw new Me(`API key not configured for provider: ${this.config.name}`,{configKey:`${this.config.name}.apiKey`});return e}buildHeaders(){return{"Content-Type":"application/json",...this.config.headers}}calculateLatency(e){let n=performance.now()-e.startTime,i=e.firstTokenTime?e.firstTokenTime-e.startTime:n,o=e.tokenCount>0&&n>0?e.tokenCount/n*1e3:0;return{ttft:i,tps:o,total:n}}emptyUsage(){return{inputTokens:0,outputTokens:0,totalTokens:0}}async*parseSSEStream(e,r){var s;let n=(s=e.body)==null?void 0:s.getReader();if(!n)throw new pe("Response body is not readable",{streamType:"sse"});let i=new TextDecoder,o="";try{for(;;){let{done:c,value:u}=await n.read();if(c)break;o+=i.decode(u,{stream:!0});let l=o.split(`
|
|
413
413
|
`);o=l.pop()||"";for(let d of l){let p=d.trim();if(!(!p||p==="data: [DONE]")&&p.startsWith("data: ")){let m=p.slice(6);try{let f=this.parseStreamEvent(m,r);f&&(f.type==="text"&&!r.firstTokenTime&&(r.firstTokenTime=performance.now()),yield f)}catch{}}}}if(o.trim()){let c=o.trim();if(c.startsWith("data: ")&&c!=="data: [DONE]"){let u=c.slice(6);try{let l=this.parseStreamEvent(u,r);l&&(yield l)}catch{}}}}finally{n.releaseLock()}}parseToolCalls(e){return Array.isArray(e)?e.map(r=>{var n,i;return{id:r.id||"",type:"function",function:{name:((n=r.function)==null?void 0:n.name)||"",arguments:((i=r.function)==null?void 0:i.arguments)||"{}"}}}):[]}},ie=class extends Error{provider;code;status;retryable;constructor(e,r,n,i,o=!1){super(e),this.provider=r,this.code=n,this.status=i,this.retryable=o,this.name="AIError"}},Pe=class extends ie{retryAfter;constructor(e,r){super("Rate limit exceeded",e,"rate_limit",429,!0),this.retryAfter=r,this.name="RateLimitError"}},Ge=class extends ie{constructor(e){super("Context length exceeded",e,"context_length_exceeded",400,!0),this.name="ContextLengthError"}},Ne=class extends ie{constructor(e){super("Provider is overloaded",e,"overloaded",503,!0),this.name="OverloadedError"}},it=class extends ie{constructor(e){super("Authentication failed",e,"authentication_error",401,!1),this.name="AuthenticationError"}};var mr=class extends $e{openaiConfig;constructor(e={}){super({...e,name:"openai"}),this.openaiConfig=e}getEnvApiKey(){return process.env.OPENAI_API_KEY}getBaseUrl(){return this.config.baseUrl||"https://api.openai.com/v1"}buildHeaders(){let e={"Content-Type":"application/json",Authorization:`Bearer ${this.getApiKey()}`,...this.config.headers};return this.openaiConfig.organization&&(e["OpenAI-Organization"]=this.openaiConfig.organization),e}transformMessages(e){return e.map(r=>{let n={role:r.role,content:this.transformContent(r.content)};return r.name&&(n.name=r.name),r.tool_call_id&&(n.tool_call_id=r.tool_call_id),r.tool_calls&&(n.tool_calls=r.tool_calls),n})}transformContent(e){return typeof e=="string"?e:e?e.map(r=>{if(r.type==="text")return{type:"text",text:r.text};if(r.type==="image_url")return{type:"image_url",image_url:{url:r.image_url.url,detail:r.image_url.detail}};if(r.type==="image"){let n=Buffer.from(r.data).toString("base64");return{type:"image_url",image_url:{url:`data:${r.mediaType};base64,${n}`}}}return{type:"text",text:""}}):null}transformTools(e){if(e)return e.map(r=>({type:r.type,function:r.function}))}async chat(e){let r={startTime:performance.now(),tokenCount:0},n=this.prepareMessages(e),i=this.buildChatBody(e,n,!1),s=await(await this.makeRequest("/chat/completions",i,e.signal)).json();return this.parseResponse(s,r)}async stream(e){let r={startTime:performance.now(),tokenCount:0},n=this.prepareMessages(e),i=this.buildChatBody(e,n,!0),o=await this.makeRequest("/chat/completions",i,e.signal);return this.parseSSEStream(o,r)}async embed(e){let r=performance.now(),n={model:e.model||this.config.defaultModel||"text-embedding-3-large",input:e.input,...e.dimensions&&{dimensions:e.dimensions}},o=await(await this.makeRequest("/embeddings",n,e.signal)).json(),s={ttft:performance.now()-r,tps:0,total:performance.now()-r};return{embeddings:o.data.map(c=>c.embedding),usage:{inputTokens:o.usage.prompt_tokens,outputTokens:0,totalTokens:o.usage.total_tokens},model:o.model,provider:"openai",latency:s}}prepareMessages(e){let r=[...e.messages];return e.systemPrompt&&r.unshift({role:"system",content:e.systemPrompt}),r}buildChatBody(e,r,n){let i={model:e.model||this.config.defaultModel||"gpt-5.1",messages:this.transformMessages(r),stream:n};return e.temperature!==void 0&&(i.temperature=e.temperature),e.topP!==void 0&&(i.top_p=e.topP),e.maxTokens!==void 0&&(i.max_tokens=e.maxTokens),e.stop&&(i.stop=e.stop),e.tools&&(i.tools=this.transformTools(e.tools)),e.toolChoice&&(i.tool_choice=e.toolChoice),e.responseFormat&&(e.responseFormat.type==="json_object"?i.response_format={type:"json_object"}:e.responseFormat.type==="json_schema"&&(i.response_format={type:"json_schema",json_schema:e.responseFormat.schema})),n&&(i.stream_options={include_usage:!0}),i}async makeRequest(e,r,n){let i=`${this.getBaseUrl()}${e}`,o=this.buildHeaders(),s=await fetch(i,{method:"POST",headers:o,body:JSON.stringify(r),signal:n});return s.ok||await this.handleError(s),s}async handleError(e){var o,s,c;let r={};try{r=await e.json()}catch{}let n=((o=r.error)==null?void 0:o.message)||e.statusText,i=((s=r.error)==null?void 0:s.code)||((c=r.error)==null?void 0:c.type);switch(e.status){case 401:throw new it("openai");case 429:let u=parseInt(e.headers.get("retry-after")||"0",10);throw new Pe("openai",u||void 0);case 400:if(i==="context_length_exceeded"||n.includes("maximum context length"))throw new Ge("openai");break;case 503:case 529:throw new Ne("openai")}throw new ie(n,"openai",i,e.status,e.status>=500)}parseResponse(e,r){let n=e.choices[0],i=n==null?void 0:n.message,o=typeof(i==null?void 0:i.content)=="string"?i.content:"",s=i!=null&&i.tool_calls?this.parseToolCalls(i.tool_calls):void 0,c=e.usage?{inputTokens:e.usage.prompt_tokens,outputTokens:e.usage.completion_tokens,totalTokens:e.usage.total_tokens}:this.emptyUsage();return r.tokenCount=c.outputTokens,{content:o,usage:c,latency:this.calculateLatency(r),model:e.model,provider:"openai",cached:!1,finishReason:n==null?void 0:n.finish_reason,toolCalls:s,raw:e}}parseStreamEvent(e,r){var s,c,u,l,d;let n=JSON.parse(e),i=(s=n.choices)==null?void 0:s[0];if(!i)return n.usage?{type:"usage",usage:{inputTokens:n.usage.prompt_tokens,outputTokens:n.usage.completion_tokens,totalTokens:n.usage.total_tokens}}:null;let o=i.delta;if(o.content)return r.tokenCount++,{type:"text",content:o.content};if((c=o.tool_calls)!=null&&c.length){let p=o.tool_calls[0];if(p.id)return{type:"tool_call",toolCall:{id:p.id,type:"function",function:{name:((u=p.function)==null?void 0:u.name)||"",arguments:((l=p.function)==null?void 0:l.arguments)||""}}};if((d=p.function)!=null&&d.arguments)return{type:"tool_call_delta",index:p.index,delta:{arguments:p.function.arguments}}}return i.finish_reason?{type:"done",finishReason:i.finish_reason,usage:n.usage?{inputTokens:n.usage.prompt_tokens,outputTokens:n.usage.completion_tokens,totalTokens:n.usage.total_tokens}:void 0}:null}};V();var fr=class extends $e{anthropicConfig;constructor(e={}){super({...e,name:"anthropic"}),this.anthropicConfig=e}getEnvApiKey(){return process.env.ANTHROPIC_API_KEY}getBaseUrl(){return this.config.baseUrl||"https://api.anthropic.com/v1"}buildHeaders(){return{"Content-Type":"application/json","x-api-key":this.getApiKey(),"anthropic-version":this.anthropicConfig.version||"2025-01-01",...this.config.headers}}transformMessages(e){return e.filter(n=>n.role!=="system").map(n=>n.role==="tool"?{role:"user",content:[{type:"tool_result",tool_use_id:n.tool_call_id||"",content:typeof n.content=="string"?n.content:JSON.stringify(n.content)}]}:{role:n.role==="user"?"user":"assistant",content:this.transformContent(n)})}transformContent(e){var r;if(typeof e.content=="string"){if((r=e.tool_calls)!=null&&r.length){let n=[{type:"text",text:e.content}];for(let i of e.tool_calls)n.push({type:"tool_use",id:i.id,name:i.function.name,input:JSON.parse(i.function.arguments||"{}")});return n}return e.content}return e.content?e.content.map(n=>{if(n.type==="text")return{type:"text",text:n.text};if(n.type==="image_url"){let i=n.image_url.url.match(/^data:([^;]+);base64,(.+)$/);return i?{type:"image",source:{type:"base64",media_type:i[1],data:i[2]}}:{type:"text",text:`[Image: ${n.image_url.url}]`}}return n.type==="image"?{type:"image",source:{type:"base64",media_type:n.mediaType,data:Buffer.from(n.data).toString("base64")}}:{type:"text",text:""}}):""}transformTools(e){if(e)return e.map(r=>({name:r.function.name,description:r.function.description,input_schema:r.function.parameters||{type:"object",properties:{}}}))}getSystemPrompt(e){var n;let r=e.messages.find(i=>i.role==="system");if(e.systemPrompt)return e.systemPrompt;if(r)return typeof r.content=="string"?r.content:(n=r.content)==null?void 0:n.map(i=>i.type==="text"?i.text:"").join("")}async chat(e){let r={startTime:performance.now(),tokenCount:0},n=this.buildChatBody(e,!1),o=await(await this.makeRequest("/messages",n,e.signal)).json();return this.parseResponse(o,r)}async stream(e){let r={startTime:performance.now(),tokenCount:0},n=this.buildChatBody(e,!0),i=await this.makeRequest("/messages",n,e.signal);return this.parseAnthropicStream(i,r)}async embed(e){throw new ie("Anthropic does not support embeddings. Use a different provider.","anthropic","not_supported",400,!1)}buildChatBody(e,r){let n={model:e.model||this.config.defaultModel||"claude-sonnet-4-20250514",messages:this.transformMessages(e.messages),max_tokens:e.maxTokens||4096},i=this.getSystemPrompt(e);return i&&(n.system=i),e.temperature!==void 0&&(n.temperature=e.temperature),e.topP!==void 0&&(n.top_p=e.topP),e.stop&&(n.stop_sequences=e.stop),e.tools&&(n.tools=this.transformTools(e.tools)),e.toolChoice&&(e.toolChoice==="auto"?n.tool_choice={type:"auto"}:e.toolChoice==="none"||(e.toolChoice==="required"?n.tool_choice={type:"any"}:typeof e.toolChoice=="object"&&(n.tool_choice={type:"tool",name:e.toolChoice.function.name}))),r&&(n.stream=!0),n}async makeRequest(e,r,n){let i=`${this.getBaseUrl()}${e}`,o=this.buildHeaders(),s=await fetch(i,{method:"POST",headers:o,body:JSON.stringify(r),signal:n});return s.ok||await this.handleError(s),s}async handleError(e){var o,s;let r={};try{r=await e.json()}catch{}let n=((o=r.error)==null?void 0:o.message)||e.statusText,i=(s=r.error)==null?void 0:s.type;switch(e.status){case 401:throw new it("anthropic");case 429:let c=parseInt(e.headers.get("retry-after")||"0",10);throw new Pe("anthropic",c||void 0);case 400:if(i==="invalid_request_error"&&n.includes("context"))throw new Ge("anthropic");break;case 503:case 529:throw new Ne("anthropic")}throw new ie(n,"anthropic",i,e.status,e.status>=500)}parseResponse(e,r){let n="",i=[];for(let c of e.content)c.type==="text"?n+=c.text:c.type==="tool_use"&&i.push({id:c.id,type:"function",function:{name:c.name,arguments:JSON.stringify(c.input)}});let o={inputTokens:e.usage.input_tokens,outputTokens:e.usage.output_tokens,totalTokens:e.usage.input_tokens+e.usage.output_tokens};r.tokenCount=o.outputTokens;let s={end_turn:"stop",max_tokens:"length",stop_sequence:"stop",tool_use:"tool_calls"};return{content:n,usage:o,latency:this.calculateLatency(r),model:e.model,provider:"anthropic",cached:!1,finishReason:s[e.stop_reason]||"stop",toolCalls:i.length>0?i:void 0,raw:e}}parseStreamEvent(e,r){return null}async*parseAnthropicStream(e,r){var l;let n=(l=e.body)==null?void 0:l.getReader();if(!n)throw new pe("Response body is not readable",{streamType:"anthropic-sse"});let i=new TextDecoder,o="",s="",c="",u="";try{for(;;){let{done:d,value:p}=await n.read();if(d)break;o+=i.decode(p,{stream:!0});let m=o.split(`
|
|
414
414
|
`);o=m.pop()||"";for(let f of m){let h=f.trim();if(!h||!h.startsWith("data: "))continue;let g=h.slice(6);if(g!=="[DONE]")try{let y=JSON.parse(g);switch(y.type){case"content_block_start":y.content_block.type==="tool_use"&&(s=y.content_block.id,c=y.content_block.name,u="");break;case"content_block_delta":y.delta.type==="text_delta"&&y.delta.text?(r.firstTokenTime||(r.firstTokenTime=performance.now()),r.tokenCount++,yield{type:"text",content:y.delta.text}):y.delta.type==="input_json_delta"&&y.delta.partial_json&&(u+=y.delta.partial_json,yield{type:"tool_call_delta",index:y.index,delta:{arguments:y.delta.partial_json}});break;case"content_block_stop":s&&(yield{type:"tool_call",toolCall:{id:s,type:"function",function:{name:c,arguments:u}}},s="",c="",u="");break;case"message_delta":y.usage&&(yield{type:"usage",usage:{inputTokens:0,outputTokens:y.usage.output_tokens,totalTokens:y.usage.output_tokens}}),y.delta.stop_reason&&(yield{type:"done",finishReason:{end_turn:"stop",max_tokens:"length",stop_sequence:"stop",tool_use:"tool_calls"}[y.delta.stop_reason]||"stop"});break;case"error":yield{type:"error",error:new ie(y.error.message,"anthropic",y.error.type)};break}}catch{}}}}finally{n.releaseLock()}}};var hr=class extends $e{googleConfig;constructor(e={}){super({...e,name:"google"}),this.googleConfig=e}getEnvApiKey(){return process.env.GOOGLE_API_KEY}getBaseUrl(){let e=this.googleConfig.apiVersion||"v1beta";return this.config.baseUrl||`https://generativelanguage.googleapis.com/${e}`}buildHeaders(){return{"Content-Type":"application/json",...this.config.headers}}transformMessages(e){return e.filter(r=>r.role!=="system").map(r=>({role:r.role==="user"?"user":"model",parts:this.transformContent(r)}))}transformContent(e){if(e.role==="tool")return[{functionResponse:{name:e.name||"unknown_tool",response:typeof e.content=="string"?{content:e.content}:{content:e.content}}}];if(e.tool_calls&&e.tool_calls.length>0){let n=[];return e.content&&typeof e.content=="string"&&n.push({text:e.content}),e.tool_calls.forEach(i=>{n.push({functionCall:{name:i.function.name,args:JSON.parse(i.function.arguments||"{}")}})}),n}let r=e.content;return typeof r=="string"?[{text:r}]:r?r.map(n=>{if(n.type==="text")return{text:n.text};if(n.type==="image_url")return{text:"[Image URL not supported directly in Gemini provider yet without base64]"};if(n.type==="image"){let i=Buffer.from(n.data).toString("base64");return{inlineData:{mimeType:n.mediaType,data:i}}}return{text:""}}):[{text:""}]}transformTools(e){if(!(!e||e.length===0))return[{functionDeclarations:e.map(r=>({name:r.function.name,description:r.function.description,parameters:r.function.parameters}))}]}async chat(e){let r={startTime:performance.now(),tokenCount:0},n=e.model||this.config.defaultModel||"gemini-2.5-flash",i=this.buildChatBody(e),s=await(await this.makeRequest(`/models/${n}:generateContent`,i,e.signal)).json();return this.parseResponse(s,r)}async stream(e){let r={startTime:performance.now(),tokenCount:0},n=e.model||this.config.defaultModel||"gemini-2.5-flash",i=this.buildChatBody(e),o=await this.makeRequest(`/models/${n}:streamGenerateContent?alt=sse`,i,e.signal);return this.parseSSEStream(o,r)}async embed(e){let r=performance.now(),n=e.model||"text-embedding-004",i=Array.isArray(e.input),o=i?"batchEmbedContents":"embedContent",c=(i?e.input:[e.input]).map(h=>({model:`models/${n}`,content:{parts:[{text:h}]}})),u=i?{requests:c}:{...c[0]},d=await(await this.makeRequest(`/models/${n}:${o}`,u,e.signal)).json(),p=[];i?p=d.embeddings.map(h=>h.values):p=[d.embedding.values];let m=0,f={ttft:performance.now()-r,tps:0,total:performance.now()-r};return{embeddings:p,usage:{inputTokens:m,outputTokens:0,totalTokens:m},model:n,provider:"google",latency:f}}buildChatBody(e){var c;let r=this.transformMessages(e.messages),n=e.messages.find(u=>u.role==="system"),i;n?i={parts:[{text:typeof n.content=="string"?n.content:""}]}:e.systemPrompt&&(i={parts:[{text:e.systemPrompt}]});let o={};e.temperature!==void 0&&(o.temperature=e.temperature),e.topP!==void 0&&(o.topP=e.topP),e.maxTokens!==void 0&&(o.maxOutputTokens=e.maxTokens),e.stop&&(o.stopSequences=e.stop),((c=e.responseFormat)==null?void 0:c.type)==="json_object"&&(o.responseMimeType="application/json");let s={contents:r,generationConfig:o,tools:this.transformTools(e.tools)};return i&&(s.systemInstruction=i),s}async makeRequest(e,r,n){let i=this.getApiKey(),o=e.includes("?")?"&":"?",s=`${this.getBaseUrl()}${e}${o}key=${i}`,c=this.buildHeaders(),u=await fetch(s,{method:"POST",headers:c,body:JSON.stringify(r),signal:n});return u.ok||await this.handleError(u),u}async handleError(e){var o,s;let r={};try{r=await e.json()}catch{}let n=((o=r.error)==null?void 0:o.message)||e.statusText,i=((s=r.error)==null?void 0:s.code)||e.status;switch(e.status){case 400:case 401:throw new it("google");case 429:throw new Pe("google");case 503:throw new Ne("google")}throw new ie(n,"google",String(i),e.status,e.status>=500)}parseResponse(e,r){var u,l;let n=(u=e.candidates)==null?void 0:u[0],i=((l=n==null?void 0:n.content)==null?void 0:l.parts)||[],o=i.filter(d=>d.text).map(d=>d.text).join(""),s=i.filter(d=>d.functionCall).map(d=>({id:"call_"+Math.random().toString(36).slice(2),type:"function",function:{name:d.functionCall.name,arguments:JSON.stringify(d.functionCall.args)}})),c=e.usageMetadata?{inputTokens:e.usageMetadata.promptTokenCount,outputTokens:e.usageMetadata.candidatesTokenCount,totalTokens:e.usageMetadata.totalTokenCount}:this.emptyUsage();return r.tokenCount=c.outputTokens,{content:o,usage:c,latency:this.calculateLatency(r),model:"gemini",provider:"google",cached:!1,finishReason:(n==null?void 0:n.finishReason)==="STOP"?"stop":"length",toolCalls:s.length>0?s:void 0,raw:e}}parseStreamEvent(e,r){var u,l;let n=JSON.parse(e),i=(u=n.candidates)==null?void 0:u[0];if(!i)return null;if(n.usageMetadata)return{type:"usage",usage:{inputTokens:n.usageMetadata.promptTokenCount,outputTokens:n.usageMetadata.candidatesTokenCount,totalTokens:n.usageMetadata.totalTokenCount}};let o=((l=i.content)==null?void 0:l.parts)||[],s=o.find(d=>d.text);if(s!=null&&s.text)return r.tokenCount++,{type:"text",content:s.text};let c=o.find(d=>d.functionCall);return c!=null&&c.functionCall?{type:"tool_call",toolCall:{id:"call_"+Math.random().toString(36).slice(2),type:"function",function:{name:c.functionCall.name,arguments:JSON.stringify(c.functionCall.args)}}}:i.finishReason&&i.finishReason!=="STOP"?{type:"done",finishReason:"stop"}:null}};V();var gr=class extends $e{ollamaConfig;constructor(e={}){super({...e,name:"ollama"}),this.ollamaConfig=e}getEnvApiKey(){}getBaseUrl(){return this.config.baseUrl||"http://127.0.0.1:11434/api"}buildHeaders(){return{"Content-Type":"application/json",...this.config.headers}}transformMessages(e){return e.map(r=>{let{content:n,images:i}=this.extractContentAndImages(r.content);return{role:r.role,content:n,images:i.length>0?i:void 0}})}extractContentAndImages(e){if(typeof e=="string")return{content:e,images:[]};let r="",n=[];for(let i of e)if(i.type==="text")r+=i.text;else if(i.type==="image")n.push(Buffer.from(i.data).toString("base64"));else if(i.type==="image_url"&&i.image_url.url.startsWith("data:")){let o=i.image_url.url.split(",")[1];o&&n.push(o)}return{content:r,images:n}}async chat(e){let r={startTime:performance.now(),tokenCount:0},n=this.buildChatBody(e,!1),o=await(await this.makeRequest("/chat",n,e.signal)).json();return this.parseResponse(o,r)}async stream(e){let r={startTime:performance.now(),tokenCount:0},n=this.buildChatBody(e,!0),i=await this.makeRequest("/chat",n,e.signal);return this.parseNDJSONStream(i,r)}async embed(e){let r=performance.now(),n={model:e.model||this.config.defaultModel||"nomic-embed-text",input:e.input};this.ollamaConfig.keepAlive&&(n.keep_alive=this.ollamaConfig.keepAlive);let o=await(await this.makeRequest("/embed",n,e.signal)).json(),s={ttft:performance.now()-r,tps:0,total:performance.now()-r},c={inputTokens:o.prompt_eval_count||0,outputTokens:0,totalTokens:o.prompt_eval_count||0};return{embeddings:o.embeddings,usage:c,model:o.model,provider:"ollama",latency:s}}buildChatBody(e,r){var i;let n={model:e.model||this.config.defaultModel||"llama3",messages:this.transformMessages(e.messages),stream:r,options:{}};return((i=e.responseFormat)==null?void 0:i.type)==="json_object"&&(n.format="json"),this.ollamaConfig.keepAlive&&(n.keep_alive=this.ollamaConfig.keepAlive),e.temperature!==void 0&&(n.options.temperature=e.temperature),e.topP!==void 0&&(n.options.top_p=e.topP),e.maxTokens!==void 0&&(n.options.num_predict=e.maxTokens),e.stop&&(n.options.stop=e.stop),n}async makeRequest(e,r,n){let i=`${this.getBaseUrl()}${e}`,o=this.buildHeaders(),s=await fetch(i,{method:"POST",headers:o,body:JSON.stringify(r),signal:n});if(!s.ok){let c=s.statusText;try{let u=await s.json();u.error&&(c=u.error)}catch{}throw s.status===429?new Pe("ollama"):s.status===503?new Ne("ollama"):new ie(c,"ollama",String(s.status),s.status)}return s}parseResponse(e,r){let n={inputTokens:e.prompt_eval_count||0,outputTokens:e.eval_count||0,totalTokens:(e.prompt_eval_count||0)+(e.eval_count||0)};return r.tokenCount=n.outputTokens,{content:e.message.content,usage:n,latency:this.calculateLatency(r),model:e.model,provider:"ollama",cached:!1,finishReason:e.done?"stop":void 0,raw:e}}parseStreamEvent(e,r){return null}async*parseNDJSONStream(e,r){var s,c,u;let n=(s=e.body)==null?void 0:s.getReader();if(!n)throw new pe("Response body is not readable",{streamType:"ndjson"});let i=new TextDecoder,o="";try{for(;;){let{done:l,value:d}=await n.read();if(l)break;o+=i.decode(d,{stream:!0});let p=o.split(`
|
|
415
415
|
`);o=p.pop()||"";for(let m of p)if(m.trim())try{let f=JSON.parse(m);(c=f.message)!=null&&c.content&&(r.firstTokenTime||(r.firstTokenTime=performance.now()),r.tokenCount++,yield{type:"text",content:f.message.content}),f.done&&(yield{type:"done",finishReason:"stop",usage:{inputTokens:f.prompt_eval_count||0,outputTokens:f.eval_count||0,totalTokens:(f.prompt_eval_count||0)+(f.eval_count||0)}})}catch{}}if(o.trim()){let l=o.split(`
|
|
416
|
-
`);for(let d of l)if(d.trim())try{let p=JSON.parse(d);(u=p.message)!=null&&u.content&&(r.firstTokenTime||(r.firstTokenTime=performance.now()),r.tokenCount++,yield{type:"text",content:p.message.content}),p.done&&(yield{type:"done",finishReason:"stop",usage:{inputTokens:p.prompt_eval_count||0,outputTokens:p.eval_count||0,totalTokens:(p.prompt_eval_count||0)+(p.eval_count||0)}})}catch{}}}finally{n.releaseLock()}}};var us=class{data={totalRequests:0,totalTokens:0,totalCost:0,totalLatencyTtft:0,totalLatencyTotal:0,errorCount:0,cacheHits:0,byModel:new Map,byProvider:new Map};get totalRequests(){return this.data.totalRequests}get totalTokens(){return this.data.totalTokens}get totalCost(){return this.data.totalCost}get avgLatency(){let e=this.data.totalRequests||1;return{ttft:this.data.totalLatencyTtft/e,total:this.data.totalLatencyTotal/e}}get errorRate(){let e=this.data.totalRequests+this.data.errorCount;return e>0?this.data.errorCount/e:0}get cacheHitRate(){return this.data.totalRequests>0?this.data.cacheHits/this.data.totalRequests:0}record(e){var i,o,s;this.data.totalRequests++,this.data.totalTokens+=e.usage.totalTokens,this.data.totalCost+=((i=e.cost)==null?void 0:i.totalCost)||0,this.data.totalLatencyTtft+=e.latency.ttft,this.data.totalLatencyTotal+=e.latency.total,e.cached&&this.data.cacheHits++;let r=this.data.byModel.get(e.model)||{requests:0,tokens:0,cost:0};r.requests++,r.tokens+=e.usage.totalTokens,r.cost+=((o=e.cost)==null?void 0:o.totalCost)||0,this.data.byModel.set(e.model,r);let n=this.data.byProvider.get(e.provider)||{requests:0,tokens:0,cost:0};n.requests++,n.tokens+=e.usage.totalTokens,n.cost+=((s=e.cost)==null?void 0:s.totalCost)||0,this.data.byProvider.set(e.provider,n)}recordError(){this.data.errorCount++}summary(){return{totalRequests:this.totalRequests,totalTokens:this.totalTokens,totalCost:this.totalCost,avgLatency:this.avgLatency,errorRate:this.errorRate,cacheHitRate:this.cacheHitRate,byModel:Object.fromEntries(this.data.byModel),byProvider:Object.fromEntries(this.data.byProvider)}}reset(){this.data={totalRequests:0,totalTokens:0,totalCost:0,totalLatencyTtft:0,totalLatencyTotal:0,errorCount:0,cacheHits:0,byModel:new Map,byProvider:new Map}}},Yr=class{config;providers=new Map;_metrics=new us;constructor(e={}){this.config={defaultProvider:"openai",observability:!0,debug:!1,...e},this.initializeProviders()}get metrics(){return this._metrics}async chat(e){let r=this.normalizeOptions(e),n=this.getProvider(r.provider);try{let i=await this.executeWithRetry(()=>n.chat(r),r);return this.config.observability&&this._metrics.record(i),this.config.debug&&this.logResponse(i),i}catch(i){throw this.config.observability&&this._metrics.recordError(),i}}async stream(e){return this.getProvider(e.provider).stream(e)}async embed(e){return this.getProvider(e.provider).embed(e)}extend(e){let r=this;return{chat:async n=>{let i=r.normalizeOptions(n);return r.chat({...e,...i,messages:[...e.messages||[],...i.messages]})},stream:async n=>r.stream({...e,...n,messages:[...e.messages||[],...n.messages]}),embed:async n=>r.embed({provider:e.provider,...n}),extend:n=>r.extend({...e,...n}),metrics:r.metrics}}initializeProviders(){var o,s,c,u;let e=((o=this.config.providers)==null?void 0:o.openai)||{};this.providers.set("openai",new mr(e));let r=((s=this.config.providers)==null?void 0:s.anthropic)||{};this.providers.set("anthropic",new fr(r));let n=((c=this.config.providers)==null?void 0:c.google)||{};this.providers.set("google",new hr(n));let i=((u=this.config.providers)==null?void 0:u.ollama)||{};this.providers.set("ollama",new gr(i))}getProvider(e){let r=e||this.config.defaultProvider||"openai",n=this.providers.get(r);if(!n)throw new ie(`Provider not found: ${r}`,r,"provider_not_found");return n}normalizeOptions(e){return typeof e=="string"?{messages:[{role:"user",content:e}]}:e}async executeWithRetry(e,r){let n=r.retry||this.config.retry;if(!n)return e();let i=n.maxAttempts||3,o=n.on||["rate_limit","overloaded","timeout"],s=null;for(let c=1;c<=i;c++)try{return await e()}catch(u){if(s=u,!this.shouldRetry(u,o,c,i))throw u;let l=this.calculateBackoff(c,n.backoff);if(n.onRetry&&n.onRetry(c,u),this.config.debug&&console.log(`[recker/ai] Retry ${c}/${i} after ${l}ms`),await this.sleep(l),n.fallback&&r.model){let d=n.fallback[r.model];d&&(r={...r,model:d},this.config.debug&&console.log(`[recker/ai] Falling back to model: ${d}`))}n.reduceContext&&u instanceof Ge&&r.messages.length>2&&(r={...r,messages:this.reduceContext(r.messages)},this.config.debug&&console.log(`[recker/ai] Reduced context to ${r.messages.length} messages`))}throw s||new Error("Retry exhausted")}shouldRetry(e,r,n,i){return n>=i?!1:!!(e instanceof Pe&&r.includes("rate_limit")||e instanceof Ne&&r.includes("overloaded")||e instanceof Ge&&r.includes("context_length_exceeded")||e.name==="TimeoutError"&&r.includes("timeout")||e instanceof ie&&e.retryable&&r.includes("server_error"))}calculateBackoff(e,r="exponential"){let o;switch(r){case"linear":o=1e3*e;break;case"exponential":o=1e3*Math.pow(2,e-1);break;case"decorrelated":o=Math.random()*Math.min(3e4,1e3*Math.pow(3,e-1));break;default:o=1e3*e}let s=o*.25*(Math.random()*2-1);return Math.min(3e4,o+s)}reduceContext(e){if(e.length<=2)return e;let r=e.filter(o=>o.role==="system"),n=e.filter(o=>o.role!=="system");return n.length<=4?e:[...r,n[0],...n.slice(-2)]}logResponse(e){console.log(`[recker/ai] ${e.provider}/${e.model}`),console.log(` Tokens: ${e.usage.inputTokens} in / ${e.usage.outputTokens} out`),console.log(` Latency: TTFT=${e.latency.ttft.toFixed(0)}ms, Total=${e.latency.total.toFixed(0)}ms`),e.cost&&console.log(` Cost: $${e.cost.totalCost.toFixed(6)}`)}sleep(e){return new Promise(r=>setTimeout(r,e))}};function $i(t){return new Yr(t)}var Qx={firstToken:6e4,betweenTokens:1e4,total:3e5},ls={"gpt-5.1-mini":{firstToken:1e4,betweenTokens:2e3,total:6e4},"gpt-5.1-nano":{firstToken:5e3,betweenTokens:1e3,total:3e4},"claude-haiku":{firstToken:1e4,betweenTokens:2e3,total:6e4},"gpt-5.1":{firstToken:3e4,betweenTokens:5e3,total:12e4},"claude-sonnet":{firstToken:3e4,betweenTokens:5e3,total:12e4},o3:{firstToken:12e4,betweenTokens:3e4,total:6e5},"o3-mini":{firstToken:6e4,betweenTokens:15e3,total:3e5},"o4-mini":{firstToken:6e4,betweenTokens:15e3,total:3e5},"claude-opus":{firstToken:6e4,betweenTokens:1e4,total:3e5},"text-embedding":{firstToken:1e4,betweenTokens:0,total:3e4}},Zr=class{profiles=new Map;maxSamples=100;sampleTtl=1440*60*1e3;getTimeouts(e,r){let n={...Qx,adaptive:!0},i=this.findPreset(e);if(i&&(n={...n,...i}),(r==null?void 0:r.adaptive)!==!1){let o=this.profiles.get(e);o&&o.samples.length>=5&&(n.firstToken=Math.ceil(o.p95Ttft*1.2),n.betweenTokens=Math.ceil(o.p95BetweenTokens*1.2),n.total=Math.ceil(o.p95Total*1.2))}return(r==null?void 0:r.firstToken)!==void 0&&(n.firstToken=r.firstToken),(r==null?void 0:r.betweenTokens)!==void 0&&(n.betweenTokens=r.betweenTokens),(r==null?void 0:r.total)!==void 0&&(n.total=r.total),n}recordSample(e,r,n,i){let o={ttft:r,betweenTokens:n,total:i,timestamp:Date.now()},s=this.profiles.get(e);s||(s={samples:[],avgTtft:0,avgBetweenTokens:0,avgTotal:0,p95Ttft:0,p95BetweenTokens:0,p95Total:0},this.profiles.set(e,s)),s.samples.push(o);let c=Date.now()-this.sampleTtl;s.samples=s.samples.filter(u=>u.timestamp>c),s.samples.length>this.maxSamples&&(s.samples=s.samples.slice(-this.maxSamples)),this.recalculateStats(s)}getProfile(e){return this.profiles.get(e)}clear(){this.profiles.clear()}export(){let e={};for(let[r,n]of this.profiles)e[r]=n.samples;return e}import(e){for(let[r,n]of Object.entries(e)){let i={samples:n,avgTtft:0,avgBetweenTokens:0,avgTotal:0,p95Ttft:0,p95BetweenTokens:0,p95Total:0};this.recalculateStats(i),this.profiles.set(r,i)}}findPreset(e){if(ls[e])return ls[e];let r=e.toLowerCase();for(let[n,i]of Object.entries(ls))if(r.includes(n.toLowerCase()))return i}recalculateStats(e){if(e.samples.length===0)return;let r=e.samples.map(o=>o.ttft),n=e.samples.map(o=>o.betweenTokens),i=e.samples.map(o=>o.total);e.avgTtft=r.reduce((o,s)=>o+s,0)/r.length,e.avgBetweenTokens=n.reduce((o,s)=>o+s,0)/n.length,e.avgTotal=i.reduce((o,s)=>o+s,0)/i.length,e.p95Ttft=this.percentile(r,95),e.p95BetweenTokens=this.percentile(n,95),e.p95Total=this.percentile(i,95)}percentile(e,r){if(e.length===0)return 0;let n=[...e].sort((o,s)=>o-s),i=Math.ceil(r/100*n.length)-1;return n[Math.max(0,i)]}},Oi=class{timeouts;abortController;firstTokenTimer=null;betweenTokenTimer=null;totalTimer=null;receivedFirstToken=!1;startTime;constructor(e){this.timeouts=e,this.abortController=new AbortController,this.startTime=Date.now()}get signal(){return this.abortController.signal}start(){this.timeouts.firstToken>0&&(this.firstTokenTimer=setTimeout(()=>{this.receivedFirstToken||this.abort("First token timeout exceeded")},this.timeouts.firstToken)),this.timeouts.total>0&&(this.totalTimer=setTimeout(()=>{this.abort("Total timeout exceeded")},this.timeouts.total))}recordToken(){this.receivedFirstToken||(this.receivedFirstToken=!0,this.firstTokenTimer&&(clearTimeout(this.firstTokenTimer),this.firstTokenTimer=null)),this.betweenTokenTimer&&clearTimeout(this.betweenTokenTimer),this.timeouts.betweenTokens>0&&(this.betweenTokenTimer=setTimeout(()=>{this.abort("Token stream stalled")},this.timeouts.betweenTokens))}complete(){this.clearTimers()}abort(e){this.clearTimers(),this.abortController.abort(new Error(e))}get elapsed(){return Date.now()-this.startTime}get ttft(){return this.receivedFirstToken?Date.now()-this.startTime:null}clearTimers(){this.firstTokenTimer&&(clearTimeout(this.firstTokenTimer),this.firstTokenTimer=null),this.betweenTokenTimer&&(clearTimeout(this.betweenTokenTimer),this.betweenTokenTimer=null),this.totalTimer&&(clearTimeout(this.totalTimer),this.totalTimer=null)}},Kd=new Zr;V();var Yx={tokensPerMinute:9e4,requestsPerMinute:500,strategy:"queue",priority:()=>"normal"},Xd={estimateMessage(t){return t?Math.ceil(t.length/4):0},estimateChatTokens(t){var r;let e=0;for(let n of t.messages)if(typeof n.content=="string")e+=this.estimateMessage(n.content);else if(Array.isArray(n.content))for(let i of n.content)i.type==="text"?e+=this.estimateMessage(i.text):(i.type==="image"||i.type==="image_url")&&(e+=1e3);return t.systemPrompt&&(e+=this.estimateMessage(t.systemPrompt)),e+=t.maxTokens||1e3,(r=t.tools)!=null&&r.length&&(e+=t.tools.length*100),e}},en=class{config;state;queue=[];processing=!1;nextId=0;constructor(e={}){this.config={...Yx,...e},this.state={tokenCount:0,requestCount:0,windowStart:Date.now()}}async execute(e,r){let n=(r==null?void 0:r.estimatedTokens)||1e3,i=(r==null?void 0:r.priority)||"normal";if(this.canExecute(n))return this.executeNow(e,n);switch(this.config.strategy){case"throw":throw new tn(this.getRetryAfter());case"retry-after":let o=this.getRetryAfter();return await this.sleep(o),this.execute(e,r);default:return this.enqueue(e,n,i)}}async executeChat(e,r){let n=Xd.estimateChatTokens(e),i=this.config.priority(e);return this.execute(r,{estimatedTokens:n,priority:i})}recordUsage(e,r){let n=e-r;this.state.tokenCount+=n,this.state.tokenCount<0&&(this.state.tokenCount=0)}getUsage(){return this.maybeResetWindow(),{tokensUsed:this.state.tokenCount,tokensRemaining:Math.max(0,this.config.tokensPerMinute-this.state.tokenCount),requestsUsed:this.state.requestCount,requestsRemaining:Math.max(0,this.config.requestsPerMinute-this.state.requestCount),resetIn:this.getResetTime(),queueLength:this.queue.length}}clearQueue(){for(let e of this.queue)e.reject(new _e("Queue cleared",{queueName:"ai-rate-limiter"}));this.queue=[]}reset(){this.state={tokenCount:0,requestCount:0,windowStart:Date.now()},this.clearQueue()}canExecute(e){this.maybeResetWindow();let r=this.state.tokenCount+e<=this.config.tokensPerMinute,n=this.state.requestCount+1<=this.config.requestsPerMinute;return r&&n}async executeNow(e,r){return this.state.tokenCount+=r,this.state.requestCount++,e()}enqueue(e,r,n){return new Promise((i,o)=>{let s={id:`req-${this.nextId++}`,priority:n,estimatedTokens:r,execute:e,resolve:i,reject:o,enqueueTime:Date.now()},c=this.queue.length,u={high:0,normal:1,low:2};for(let l=0;l<this.queue.length;l++)if(u[n]<u[this.queue[l].priority]){c=l;break}this.queue.splice(c,0,s),this.processQueue()})}async processQueue(){if(!this.processing){this.processing=!0;try{for(;this.queue.length>0;){let e=this.queue[0];for(;!this.canExecute(e.estimatedTokens);){let r=this.getRetryAfter();await this.sleep(Math.min(r,1e3)),this.maybeResetWindow()}this.queue.shift();try{let r=await this.executeNow(e.execute,e.estimatedTokens);e.resolve(r)}catch(r){e.reject(r)}}}finally{this.processing=!1}}}maybeResetWindow(){let e=Date.now();e-this.state.windowStart>=6e4&&(this.state.tokenCount=0,this.state.requestCount=0,this.state.windowStart=e)}getResetTime(){return Math.max(0,6e4-(Date.now()-this.state.windowStart))}getRetryAfter(){return this.getResetTime()}sleep(e){return new Promise(r=>setTimeout(r,e))}},tn=class extends Error{retryAfter;constructor(e){super(`Rate limit exceeded. Retry after ${e}ms`),this.retryAfter=e,this.name="RateLimitExceededError"}},ds={"openai-tier1":{tokensPerMinute:2e5,requestsPerMinute:500},"openai-tier2":{tokensPerMinute:45e4,requestsPerMinute:5e3},"openai-tier3":{tokensPerMinute:6e5,requestsPerMinute:5e3},"openai-tier4":{tokensPerMinute:8e5,requestsPerMinute:1e4},"openai-tier5":{tokensPerMinute:1e7,requestsPerMinute:1e4},"anthropic-tier1":{tokensPerMinute:8e4,requestsPerMinute:50},"anthropic-tier2":{tokensPerMinute:16e4,requestsPerMinute:1e3},"anthropic-tier3":{tokensPerMinute:4e5,requestsPerMinute:2e3},"anthropic-tier4":{tokensPerMinute:8e5,requestsPerMinute:4e3}};function Jd(t,e){let r=t?ds[t]||{}:{};return new en({...r,...e})}var Qd=Xd;var rn={CONTINUE:100,SWITCHING_PROTOCOLS:101,PROCESSING:102,EARLY_HINTS:103,OK:200,CREATED:201,ACCEPTED:202,NON_AUTHORITATIVE_INFORMATION:203,NO_CONTENT:204,RESET_CONTENT:205,PARTIAL_CONTENT:206,MULTI_STATUS:207,ALREADY_REPORTED:208,IM_USED:226,MULTIPLE_CHOICES:300,MOVED_PERMANENTLY:301,FOUND:302,SEE_OTHER:303,NOT_MODIFIED:304,USE_PROXY:305,TEMPORARY_REDIRECT:307,PERMANENT_REDIRECT:308,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_ALLOWED:405,NOT_ACCEPTABLE:406,PROXY_AUTHENTICATION_REQUIRED:407,REQUEST_TIMEOUT:408,CONFLICT:409,GONE:410,LENGTH_REQUIRED:411,PRECONDITION_FAILED:412,PAYLOAD_TOO_LARGE:413,URI_TOO_LONG:414,UNSUPPORTED_MEDIA_TYPE:415,RANGE_NOT_SATISFIABLE:416,EXPECTATION_FAILED:417,IM_A_TEAPOT:418,MISDIRECTED_REQUEST:421,UNPROCESSABLE_ENTITY:422,LOCKED:423,FAILED_DEPENDENCY:424,TOO_EARLY:425,UPGRADE_REQUIRED:426,PRECONDITION_REQUIRED:428,TOO_MANY_REQUESTS:429,REQUEST_HEADER_FIELDS_TOO_LARGE:431,UNAVAILABLE_FOR_LEGAL_REASONS:451,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,HTTP_VERSION_NOT_SUPPORTED:505,VARIANT_ALSO_NEGOTIATES:506,INSUFFICIENT_STORAGE:507,LOOP_DETECTED:508,NOT_EXTENDED:510,NETWORK_AUTHENTICATION_REQUIRED:511},Zx={100:"Continue",101:"Switching Protocols",102:"Processing",103:"Early Hints",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a Teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Too Early",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",510:"Not Extended",511:"Network Authentication Required"};function k5(t){return t>=200&&t<300}function S5(t){return t>=300&&t<400}function T5(t){return t>=400&&t<500}function A5(t){return t>=500&&t<600}function C5(t){return t>=400}function E5(t){return[rn.TOO_MANY_REQUESTS,rn.INTERNAL_SERVER_ERROR,rn.BAD_GATEWAY,rn.SERVICE_UNAVAILABLE,rn.GATEWAY_TIMEOUT].includes(t)}function D5(t){return Zx[t]||"Unknown Status"}var ps=class{encoder=new TextEncoder;async hash(e,r){let n=this.encoder.encode(r),i=await crypto.subtle.digest(e,n);return this.bufferToHex(i)}async hashBuffer(e,r){let n=r instanceof Uint8Array?r.buffer:r,i=await crypto.subtle.digest(e,n);return this.bufferToHex(i)}async hmac(e,r,n){let i=this.encoder.encode(r),o=await crypto.subtle.importKey("raw",i,{name:"HMAC",hash:e},!1,["sign"]),s=await crypto.subtle.sign("HMAC",o,this.encoder.encode(n));return this.bufferToHex(s)}async hmacBuffer(e,r,n){let i=r instanceof Uint8Array?r.buffer:r,o=await crypto.subtle.importKey("raw",i,{name:"HMAC",hash:e},!1,["sign"]),s;return typeof n=="string"?s=this.encoder.encode(n).buffer:n instanceof Uint8Array?s=n.buffer:s=n,crypto.subtle.sign("HMAC",o,s)}randomUUID(){return crypto.randomUUID()}randomBytes(e){let r=new Uint8Array(e);return crypto.getRandomValues(r),r}randomHex(e){return this.bufferToHex(this.randomBytes(e))}bufferToHex(e){return[...e instanceof Uint8Array?e:new Uint8Array(e)].map(n=>n.toString(16).padStart(2,"0")).join("")}hexToBuffer(e){let r=e.match(/.{1,2}/g)||[];return new Uint8Array(r.map(n=>parseInt(n,16)))}base64Encode(e){let r=this.encoder.encode(e),n=Array.from(r,i=>String.fromCodePoint(i)).join("");return btoa(n)}base64Decode(e){let r=atob(e),n=Uint8Array.from(r,i=>i.codePointAt(0));return new TextDecoder().decode(n)}base64UrlEncode(e){return this.base64Encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}base64UrlDecode(e){let n=(e+"=".repeat((4-e.length%4)%4)).replace(/-/g,"+").replace(/_/g,"/");return this.base64Decode(n)}},nn=new ps,R5=t=>nn.hash("SHA-256",t),P5=t=>nn.hash("SHA-1",t),N5=(t,e)=>nn.hmac("SHA-256",t,e),M5=()=>nn.randomUUID(),F5=t=>nn.randomBytes(t);var e1="recker-cache-v1",ms=class t{cacheName;cachePromise=null;constructor(e={}){this.cacheName=e.cacheName||e1}static isSupported(){return typeof caches<"u"}async getCache(){if(!this.cachePromise){if(!t.isSupported())throw new Error("Cache API is not supported in this environment");this.cachePromise=caches.open(this.cacheName)}return this.cachePromise}keyToUrl(e){return`https://recker-cache.local/${encodeURIComponent(e)}`}async get(e){try{let r=await this.getCache(),n=this.keyToUrl(e),i=await r.match(n);if(!i)return null;let o=await i.json();return o.expiresAt&&Date.now()>o.expiresAt?(this.delete(e).catch(()=>{}),null):o.entry}catch{return null}}async set(e,r,n){let i=await this.getCache(),o=this.keyToUrl(e),s={entry:r,expiresAt:Date.now()+n},c=new Response(JSON.stringify(s),{headers:{"Content-Type":"application/json","X-Recker-Cache":"true","X-Recker-Expires":String(s.expiresAt)}});await i.put(o,c)}async delete(e){let r=await this.getCache(),n=this.keyToUrl(e);await r.delete(n)}async clear(){await caches.delete(this.cacheName),this.cachePromise=null}async keys(){return(await(await this.getCache()).keys()).map(n=>{let i=new URL(n.url);return decodeURIComponent(i.pathname.slice(1))}).filter(n=>n.length>0)}async size(){return(await this.keys()).length}async prune(){let e=await this.getCache(),r=await e.keys(),n=0;for(let i of r){let o=await e.match(i);if(o)try{let s=await o.json();s.expiresAt&&Date.now()>s.expiresAt&&(await e.delete(i),n++)}catch{await e.delete(i),n++}}return n}};V();function ep(){return typeof globalThis.CompressionStream<"u"}function t1(t){return t?["text/","application/json","application/xml","application/javascript","application/x-www-form-urlencoded"].some(r=>t.includes(r)):!0}function r1(t){if(!t)return 0;if(typeof t=="string")return new TextEncoder().encode(t).length;if(t instanceof ArrayBuffer)return t.byteLength;if(t instanceof Uint8Array)return t.length;if(t instanceof Blob)return t.size;if(typeof t=="object")try{return new TextEncoder().encode(JSON.stringify(t)).length}catch{return 0}return 0}function n1(t){if(!t)return null;if(t instanceof Uint8Array)return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(typeof t=="string")return new TextEncoder().encode(t);if(typeof t=="object")try{return new TextEncoder().encode(JSON.stringify(t))}catch{return null}return null}async function i1(t,e){if(!ep())throw new he("CompressionStream API is not available in this browser",{feature:"CompressionStream"});let r=new CompressionStream(e),n=r.writable.getWriter(),i=new Uint8Array(t).buffer;n.write(new Uint8Array(i)),n.close();let o=r.readable.getReader(),s=[];for(;;){let{done:d,value:p}=await o.read();if(d)break;s.push(p)}let c=s.reduce((d,p)=>d+p.length,0),u=new Uint8Array(c),l=0;for(let d of s)u.set(d,l),l+=d.length;return u}async function $5(t,e){if(typeof globalThis.DecompressionStream>"u")throw new he("DecompressionStream API is not available in this browser",{feature:"DecompressionStream"});let r=new DecompressionStream(e),n=r.writable.getWriter(),i=new Uint8Array(t).buffer;n.write(new Uint8Array(i)),n.close();let o=r.readable.getReader(),s=[];for(;;){let{done:d,value:p}=await o.read();if(d)break;s.push(p)}let c=s.reduce((d,p)=>d+p.length,0),u=new Uint8Array(c),l=0;for(let d of s)u.set(d,l),l+=d.length;return u}function Zd(t={}){let{algorithm:e="gzip",threshold:r=1024,force:n=!1,methods:i=["POST","PUT","PATCH"]}=t;if(e!=="gzip"&&e!=="deflate")throw new he(`Browser compression only supports 'gzip' and 'deflate'. '${e}' is not available.`,{feature:e});return async(o,s)=>{if(!i.includes(o.method)||!o.body||!ep()||o.headers.has("Content-Encoding"))return s(o);let u=o.headers.get("Content-Type");if(!t1(u))return s(o);let l=r1(o.body);if(!n&&l<r)return s(o);let d=n1(o.body);if(!d)return s(o);try{let p=await i1(d,e);if(!n&&p.length>=d.length)return s(o);let m=new Headers(o.headers);m.set("Content-Encoding",e),m.set("Content-Length",p.length.toString());let f={...o,body:p,headers:m};return s(f)}catch{return s(o)}}}function O5(t){return t?t===!0?Zd():Zd(t):null}var zi=null;function wt(){return zi||(zi=Ka({transport:new Dt})),zi}function o1(t,e){return wt().get(t,e)}function a1(t,e){return wt().post(t,e)}function s1(t,e){return wt().put(t,e)}function c1(t,e){return wt().patch(t,e)}function u1(t,e){return wt().delete(t,e)}function l1(t,e){return wt().head(t,e)}function d1(t,e){return wt().options(t,e)}function p1(t,e){return wt().purge(t,e)}function m1(t,e){return new WebSocket(t,e)}var X5={get:o1,post:a1,put:s1,patch:c1,delete:u1,head:l1,options:d1,purge:p1,ws:m1,seo:Gd,ai:$i,har:Qr,simulateNetwork:dd,client:t=>Ka({...t,transport:new Dt}),reset:()=>{zi=null},isBrowser:!0,unavailable:["whois","whoisAvailable","dns","dnsSecurity","dnsClient","whoisClient"]};export{Ts as AbortError,As as AuthenticationError,ps as BrowserCrypto,Fi as CircuitBreakerError,Mi as Client,Me as ConfigurationError,sn as ConnectionError,Ls as DownloadError,Dt as FetchTransport,is as FilterBuilder,Bi as GraphQLError,pr as GrpcError,Xr as GrpcStatusCode,Ya as GrpcWebClient,as as HarRecorder,Wt as Http2Error,Je as HttpError,Ct as HttpRequest,rn as HttpStatus,Zx as HttpStatusText,pd as IndexedDBStorage,Qa as JsonRpcClient,Kr as JsonRpcErrorCodes,Ui as JsonRpcException,lo as LinkHeaderParser,De as LinkRel,St as MaxSizeExceededError,je as NetworkError,Es as NotFoundError,os as ODataClient,rs as ODataException,ns as ODataQueryBuilder,Ds as ParseError,Cs as ProtocolError,_e as QueueCancelledError,Ja as RateLimitExceededError,Mi as Recker,$ as ReckerError,wr as RequestPromise,U as SEO_THRESHOLDS,cs as SeoAnalyzer,qi as SeoRulesEngine,ms as ServiceWorkerCache,ts as SoapClient,cn as StateError,pe as StreamError,Y as TimeoutError,Zs as USER_AGENT_CATEGORIES,L0 as USER_AGENT_PRESETS,he as UnsupportedError,un as ValidationError,sd as WorkerTransport,es as XmlRpcClient,Yd as ai,Gd as analyzeSeo,nn as browserCrypto,SE as circuitBreakerPlugin,Wi as classifyTransportError,Zd as compression,Kt as consoleLogger,AE as cookieJarPlugin,Ka as createClient,O5 as createCompressionMiddleware,Sn as createFormData,Fx as createGrpcWebClient,Nx as createJsonRpcClient,Os as createLevelLogger,j1 as createMultipart,Ix as createODataClient,ss as createRulesEngine,Hx as createSoapClient,bc as createXSRFMiddleware,Ux as createXmlRpcClient,GE as decodeText,$5 as decompress,hc as dedupPlugin,u1 as del,VE as detectCharset,P0 as detectDeviceType,md as detectFromBOM,Ox as detectFromContentType,_x as detectFromHTMLMeta,jx as detectFromXMLDeclaration,o1 as get,Dn as getDefaultUserAgent,Y1 as getRandomUserAgent,D5 as getStatusText,KE as getSupportedEncodings,R0 as getUserAgent,LE as graphql,DE as graphqlPlugin,BE as grpcWeb,Qr as harRecorder,zE as harRecorderPlugin,l1 as head,N5 as hmacSha256,XE as isCharsetSupported,T5 as isClientError,ep as isCompressionSupported,C5 as isError,g0 as isFileUpload,Z1 as isMobile,kn as isPlainObject,S5 as isRedirect,E5 as isRetryable,A5 as isServerError,k5 as isSuccess,Mx as jsonCodec,ME as jsonrpc,vE as loggerPlugin,zt as normalizeCharset,$E as odata,d1 as options,my as parse,z0 as parseAcceptInfo,j0 as parseAuthInfo,$0 as parseCSPInfo,B0 as parseCacheInfo,_0 as parseClockSkew,q0 as parseCompressionInfo,O0 as parseContentType,ft as parseHeaders,_i as parseHttp2Error,W0 as parseLink,Mn as parseLinkHeader,H0 as parsePlatformInfo,I0 as parseRateLimitInfo,my as parseXML,c1 as patch,a1 as post,_s as processBody,p1 as purge,s1 as put,F5 as randomBytes,M5 as randomUUID,gE as rateLimitPlugin,X5 as recker,ac as retryPlugin,Ar as serialize,Ar as serializeXML,PE as serverTimingPlugin,P5 as sha1,R5 as sha256,$s as silentLogger,dd as simulateNetwork,HE as soap,zx as stripBOM,wE as toCurl,m1 as ws,Ok as xmlResponse,yc as xsrfPlugin};
|
|
416
|
+
`);for(let d of l)if(d.trim())try{let p=JSON.parse(d);(u=p.message)!=null&&u.content&&(r.firstTokenTime||(r.firstTokenTime=performance.now()),r.tokenCount++,yield{type:"text",content:p.message.content}),p.done&&(yield{type:"done",finishReason:"stop",usage:{inputTokens:p.prompt_eval_count||0,outputTokens:p.eval_count||0,totalTokens:(p.prompt_eval_count||0)+(p.eval_count||0)}})}catch{}}}finally{n.releaseLock()}}};var us=class{data={totalRequests:0,totalTokens:0,totalCost:0,totalLatencyTtft:0,totalLatencyTotal:0,errorCount:0,cacheHits:0,byModel:new Map,byProvider:new Map};get totalRequests(){return this.data.totalRequests}get totalTokens(){return this.data.totalTokens}get totalCost(){return this.data.totalCost}get avgLatency(){let e=this.data.totalRequests||1;return{ttft:this.data.totalLatencyTtft/e,total:this.data.totalLatencyTotal/e}}get errorRate(){let e=this.data.totalRequests+this.data.errorCount;return e>0?this.data.errorCount/e:0}get cacheHitRate(){return this.data.totalRequests>0?this.data.cacheHits/this.data.totalRequests:0}record(e){var i,o,s;this.data.totalRequests++,this.data.totalTokens+=e.usage.totalTokens,this.data.totalCost+=((i=e.cost)==null?void 0:i.totalCost)||0,this.data.totalLatencyTtft+=e.latency.ttft,this.data.totalLatencyTotal+=e.latency.total,e.cached&&this.data.cacheHits++;let r=this.data.byModel.get(e.model)||{requests:0,tokens:0,cost:0};r.requests++,r.tokens+=e.usage.totalTokens,r.cost+=((o=e.cost)==null?void 0:o.totalCost)||0,this.data.byModel.set(e.model,r);let n=this.data.byProvider.get(e.provider)||{requests:0,tokens:0,cost:0};n.requests++,n.tokens+=e.usage.totalTokens,n.cost+=((s=e.cost)==null?void 0:s.totalCost)||0,this.data.byProvider.set(e.provider,n)}recordError(){this.data.errorCount++}summary(){return{totalRequests:this.totalRequests,totalTokens:this.totalTokens,totalCost:this.totalCost,avgLatency:this.avgLatency,errorRate:this.errorRate,cacheHitRate:this.cacheHitRate,byModel:Object.fromEntries(this.data.byModel),byProvider:Object.fromEntries(this.data.byProvider)}}reset(){this.data={totalRequests:0,totalTokens:0,totalCost:0,totalLatencyTtft:0,totalLatencyTotal:0,errorCount:0,cacheHits:0,byModel:new Map,byProvider:new Map}}},Yr=class{config;providers=new Map;_metrics=new us;constructor(e={}){this.config={defaultProvider:"openai",observability:!0,debug:!1,...e},this.initializeProviders()}get metrics(){return this._metrics}async chat(e){let r=this.normalizeOptions(e),n=this.getProvider(r.provider);try{let i=await this.executeWithRetry(()=>n.chat(r),r);return this.config.observability&&this._metrics.record(i),this.config.debug&&this.logResponse(i),i}catch(i){throw this.config.observability&&this._metrics.recordError(),i}}async stream(e){return this.getProvider(e.provider).stream(e)}async embed(e){return this.getProvider(e.provider).embed(e)}extend(e){let r=this;return{chat:async n=>{let i=r.normalizeOptions(n);return r.chat({...e,...i,messages:[...e.messages||[],...i.messages]})},stream:async n=>r.stream({...e,...n,messages:[...e.messages||[],...n.messages]}),embed:async n=>r.embed({provider:e.provider,...n}),extend:n=>r.extend({...e,...n}),metrics:r.metrics}}initializeProviders(){var o,s,c,u;let e=((o=this.config.providers)==null?void 0:o.openai)||{};this.providers.set("openai",new mr(e));let r=((s=this.config.providers)==null?void 0:s.anthropic)||{};this.providers.set("anthropic",new fr(r));let n=((c=this.config.providers)==null?void 0:c.google)||{};this.providers.set("google",new hr(n));let i=((u=this.config.providers)==null?void 0:u.ollama)||{};this.providers.set("ollama",new gr(i))}getProvider(e){let r=e||this.config.defaultProvider||"openai",n=this.providers.get(r);if(!n)throw new ie(`Provider not found: ${r}`,r,"provider_not_found");return n}normalizeOptions(e){return typeof e=="string"?{messages:[{role:"user",content:e}]}:e}async executeWithRetry(e,r){let n=r.retry||this.config.retry;if(!n)return e();let i=n.maxAttempts||3,o=n.on||["rate_limit","overloaded","timeout"],s=null;for(let c=1;c<=i;c++)try{return await e()}catch(u){if(s=u,!this.shouldRetry(u,o,c,i))throw u;let l=this.calculateBackoff(c,n.backoff);if(n.onRetry&&n.onRetry(c,u),this.config.debug&&console.log(`[recker/ai] Retry ${c}/${i} after ${l}ms`),await this.sleep(l),n.fallback&&r.model){let d=n.fallback[r.model];d&&(r={...r,model:d},this.config.debug&&console.log(`[recker/ai] Falling back to model: ${d}`))}n.reduceContext&&u instanceof Ge&&r.messages.length>2&&(r={...r,messages:this.reduceContext(r.messages)},this.config.debug&&console.log(`[recker/ai] Reduced context to ${r.messages.length} messages`))}throw s||new Error("Retry exhausted")}shouldRetry(e,r,n,i){return n>=i?!1:!!(e instanceof Pe&&r.includes("rate_limit")||e instanceof Ne&&r.includes("overloaded")||e instanceof Ge&&r.includes("context_length_exceeded")||e.name==="TimeoutError"&&r.includes("timeout")||e instanceof ie&&e.retryable&&r.includes("server_error"))}calculateBackoff(e,r="exponential"){let o;switch(r){case"linear":o=1e3*e;break;case"exponential":o=1e3*Math.pow(2,e-1);break;case"decorrelated":o=Math.random()*Math.min(3e4,1e3*Math.pow(3,e-1));break;default:o=1e3*e}let s=o*.25*(Math.random()*2-1);return Math.min(3e4,o+s)}reduceContext(e){if(e.length<=2)return e;let r=e.filter(o=>o.role==="system"),n=e.filter(o=>o.role!=="system");return n.length<=4?e:[...r,n[0],...n.slice(-2)]}logResponse(e){console.log(`[recker/ai] ${e.provider}/${e.model}`),console.log(` Tokens: ${e.usage.inputTokens} in / ${e.usage.outputTokens} out`),console.log(` Latency: TTFT=${e.latency.ttft.toFixed(0)}ms, Total=${e.latency.total.toFixed(0)}ms`),e.cost&&console.log(` Cost: $${e.cost.totalCost.toFixed(6)}`)}sleep(e){return new Promise(r=>setTimeout(r,e))}};function $i(t){return new Yr(t)}var Qx={firstToken:6e4,betweenTokens:1e4,total:3e5},ls={"gpt-5.1-mini":{firstToken:1e4,betweenTokens:2e3,total:6e4},"gpt-5.1-nano":{firstToken:5e3,betweenTokens:1e3,total:3e4},"claude-haiku":{firstToken:1e4,betweenTokens:2e3,total:6e4},"gpt-5.1":{firstToken:3e4,betweenTokens:5e3,total:12e4},"claude-sonnet":{firstToken:3e4,betweenTokens:5e3,total:12e4},o3:{firstToken:12e4,betweenTokens:3e4,total:6e5},"o3-mini":{firstToken:6e4,betweenTokens:15e3,total:3e5},"o4-mini":{firstToken:6e4,betweenTokens:15e3,total:3e5},"claude-opus":{firstToken:6e4,betweenTokens:1e4,total:3e5},"text-embedding":{firstToken:1e4,betweenTokens:0,total:3e4}},Zr=class{profiles=new Map;maxSamples=100;sampleTtl=1440*60*1e3;getTimeouts(e,r){let n={...Qx,adaptive:!0},i=this.findPreset(e);if(i&&(n={...n,...i}),(r==null?void 0:r.adaptive)!==!1){let o=this.profiles.get(e);o&&o.samples.length>=5&&(n.firstToken=Math.ceil(o.p95Ttft*1.2),n.betweenTokens=Math.ceil(o.p95BetweenTokens*1.2),n.total=Math.ceil(o.p95Total*1.2))}return(r==null?void 0:r.firstToken)!==void 0&&(n.firstToken=r.firstToken),(r==null?void 0:r.betweenTokens)!==void 0&&(n.betweenTokens=r.betweenTokens),(r==null?void 0:r.total)!==void 0&&(n.total=r.total),n}recordSample(e,r,n,i){let o={ttft:r,betweenTokens:n,total:i,timestamp:Date.now()},s=this.profiles.get(e);s||(s={samples:[],avgTtft:0,avgBetweenTokens:0,avgTotal:0,p95Ttft:0,p95BetweenTokens:0,p95Total:0},this.profiles.set(e,s)),s.samples.push(o);let c=Date.now()-this.sampleTtl;s.samples=s.samples.filter(u=>u.timestamp>c),s.samples.length>this.maxSamples&&(s.samples=s.samples.slice(-this.maxSamples)),this.recalculateStats(s)}getProfile(e){return this.profiles.get(e)}clear(){this.profiles.clear()}export(){let e={};for(let[r,n]of this.profiles)e[r]=n.samples;return e}import(e){for(let[r,n]of Object.entries(e)){let i={samples:n,avgTtft:0,avgBetweenTokens:0,avgTotal:0,p95Ttft:0,p95BetweenTokens:0,p95Total:0};this.recalculateStats(i),this.profiles.set(r,i)}}findPreset(e){if(ls[e])return ls[e];let r=e.toLowerCase();for(let[n,i]of Object.entries(ls))if(r.includes(n.toLowerCase()))return i}recalculateStats(e){if(e.samples.length===0)return;let r=e.samples.map(o=>o.ttft),n=e.samples.map(o=>o.betweenTokens),i=e.samples.map(o=>o.total);e.avgTtft=r.reduce((o,s)=>o+s,0)/r.length,e.avgBetweenTokens=n.reduce((o,s)=>o+s,0)/n.length,e.avgTotal=i.reduce((o,s)=>o+s,0)/i.length,e.p95Ttft=this.percentile(r,95),e.p95BetweenTokens=this.percentile(n,95),e.p95Total=this.percentile(i,95)}percentile(e,r){if(e.length===0)return 0;let n=[...e].sort((o,s)=>o-s),i=Math.ceil(r/100*n.length)-1;return n[Math.max(0,i)]}},Oi=class{timeouts;abortController;firstTokenTimer=null;betweenTokenTimer=null;totalTimer=null;receivedFirstToken=!1;startTime;constructor(e){this.timeouts=e,this.abortController=new AbortController,this.startTime=Date.now()}get signal(){return this.abortController.signal}start(){this.timeouts.firstToken>0&&(this.firstTokenTimer=setTimeout(()=>{this.receivedFirstToken||this.abort("First token timeout exceeded")},this.timeouts.firstToken)),this.timeouts.total>0&&(this.totalTimer=setTimeout(()=>{this.abort("Total timeout exceeded")},this.timeouts.total))}recordToken(){this.receivedFirstToken||(this.receivedFirstToken=!0,this.firstTokenTimer&&(clearTimeout(this.firstTokenTimer),this.firstTokenTimer=null)),this.betweenTokenTimer&&clearTimeout(this.betweenTokenTimer),this.timeouts.betweenTokens>0&&(this.betweenTokenTimer=setTimeout(()=>{this.abort("Token stream stalled")},this.timeouts.betweenTokens))}complete(){this.clearTimers()}abort(e){this.clearTimers(),this.abortController.abort(new Error(e))}get elapsed(){return Date.now()-this.startTime}get ttft(){return this.receivedFirstToken?Date.now()-this.startTime:null}clearTimers(){this.firstTokenTimer&&(clearTimeout(this.firstTokenTimer),this.firstTokenTimer=null),this.betweenTokenTimer&&(clearTimeout(this.betweenTokenTimer),this.betweenTokenTimer=null),this.totalTimer&&(clearTimeout(this.totalTimer),this.totalTimer=null)}},Kd=new Zr;V();var Yx={tokensPerMinute:9e4,requestsPerMinute:500,strategy:"queue",priority:()=>"normal"},Xd={estimateMessage(t){return t?Math.ceil(t.length/4):0},estimateChatTokens(t){var r;let e=0;for(let n of t.messages)if(typeof n.content=="string")e+=this.estimateMessage(n.content);else if(Array.isArray(n.content))for(let i of n.content)i.type==="text"?e+=this.estimateMessage(i.text):(i.type==="image"||i.type==="image_url")&&(e+=1e3);return t.systemPrompt&&(e+=this.estimateMessage(t.systemPrompt)),e+=t.maxTokens||1e3,(r=t.tools)!=null&&r.length&&(e+=t.tools.length*100),e}},en=class{config;state;queue=[];processing=!1;nextId=0;constructor(e={}){this.config={...Yx,...e},this.state={tokenCount:0,requestCount:0,windowStart:Date.now()}}async execute(e,r){let n=(r==null?void 0:r.estimatedTokens)||1e3,i=(r==null?void 0:r.priority)||"normal";if(this.canExecute(n))return this.executeNow(e,n);switch(this.config.strategy){case"throw":throw new tn(this.getRetryAfter());case"retry-after":let o=this.getRetryAfter();return await this.sleep(o),this.execute(e,r);default:return this.enqueue(e,n,i)}}async executeChat(e,r){let n=Xd.estimateChatTokens(e),i=this.config.priority(e);return this.execute(r,{estimatedTokens:n,priority:i})}recordUsage(e,r){let n=e-r;this.state.tokenCount+=n,this.state.tokenCount<0&&(this.state.tokenCount=0)}getUsage(){return this.maybeResetWindow(),{tokensUsed:this.state.tokenCount,tokensRemaining:Math.max(0,this.config.tokensPerMinute-this.state.tokenCount),requestsUsed:this.state.requestCount,requestsRemaining:Math.max(0,this.config.requestsPerMinute-this.state.requestCount),resetIn:this.getResetTime(),queueLength:this.queue.length}}clearQueue(){for(let e of this.queue)e.reject(new _e("Queue cleared",{queueName:"ai-rate-limiter"}));this.queue=[]}reset(){this.state={tokenCount:0,requestCount:0,windowStart:Date.now()},this.clearQueue()}canExecute(e){this.maybeResetWindow();let r=this.state.tokenCount+e<=this.config.tokensPerMinute,n=this.state.requestCount+1<=this.config.requestsPerMinute;return r&&n}async executeNow(e,r){return this.state.tokenCount+=r,this.state.requestCount++,e()}enqueue(e,r,n){return new Promise((i,o)=>{let s={id:`req-${this.nextId++}`,priority:n,estimatedTokens:r,execute:e,resolve:i,reject:o,enqueueTime:Date.now()},c=this.queue.length,u={high:0,normal:1,low:2};for(let l=0;l<this.queue.length;l++)if(u[n]<u[this.queue[l].priority]){c=l;break}this.queue.splice(c,0,s),this.processQueue()})}async processQueue(){if(!this.processing){this.processing=!0;try{for(;this.queue.length>0;){let e=this.queue[0];for(;!this.canExecute(e.estimatedTokens);){let r=this.getRetryAfter();await this.sleep(Math.min(r,1e3)),this.maybeResetWindow()}this.queue.shift();try{let r=await this.executeNow(e.execute,e.estimatedTokens);e.resolve(r)}catch(r){e.reject(r)}}}finally{this.processing=!1}}}maybeResetWindow(){let e=Date.now();e-this.state.windowStart>=6e4&&(this.state.tokenCount=0,this.state.requestCount=0,this.state.windowStart=e)}getResetTime(){return Math.max(0,6e4-(Date.now()-this.state.windowStart))}getRetryAfter(){return this.getResetTime()}sleep(e){return new Promise(r=>setTimeout(r,e))}},tn=class extends Error{retryAfter;constructor(e){super(`Rate limit exceeded. Retry after ${e}ms`),this.retryAfter=e,this.name="RateLimitExceededError"}},ds={"openai-tier1":{tokensPerMinute:2e5,requestsPerMinute:500},"openai-tier2":{tokensPerMinute:45e4,requestsPerMinute:5e3},"openai-tier3":{tokensPerMinute:6e5,requestsPerMinute:5e3},"openai-tier4":{tokensPerMinute:8e5,requestsPerMinute:1e4},"openai-tier5":{tokensPerMinute:1e7,requestsPerMinute:1e4},"anthropic-tier1":{tokensPerMinute:8e4,requestsPerMinute:50},"anthropic-tier2":{tokensPerMinute:16e4,requestsPerMinute:1e3},"anthropic-tier3":{tokensPerMinute:4e5,requestsPerMinute:2e3},"anthropic-tier4":{tokensPerMinute:8e5,requestsPerMinute:4e3}};function Jd(t,e){let r=t?ds[t]||{}:{};return new en({...r,...e})}var Qd=Xd;var rn={CONTINUE:100,SWITCHING_PROTOCOLS:101,PROCESSING:102,EARLY_HINTS:103,OK:200,CREATED:201,ACCEPTED:202,NON_AUTHORITATIVE_INFORMATION:203,NO_CONTENT:204,RESET_CONTENT:205,PARTIAL_CONTENT:206,MULTI_STATUS:207,ALREADY_REPORTED:208,IM_USED:226,MULTIPLE_CHOICES:300,MOVED_PERMANENTLY:301,FOUND:302,SEE_OTHER:303,NOT_MODIFIED:304,USE_PROXY:305,TEMPORARY_REDIRECT:307,PERMANENT_REDIRECT:308,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_ALLOWED:405,NOT_ACCEPTABLE:406,PROXY_AUTHENTICATION_REQUIRED:407,REQUEST_TIMEOUT:408,CONFLICT:409,GONE:410,LENGTH_REQUIRED:411,PRECONDITION_FAILED:412,PAYLOAD_TOO_LARGE:413,URI_TOO_LONG:414,UNSUPPORTED_MEDIA_TYPE:415,RANGE_NOT_SATISFIABLE:416,EXPECTATION_FAILED:417,IM_A_TEAPOT:418,MISDIRECTED_REQUEST:421,UNPROCESSABLE_ENTITY:422,LOCKED:423,FAILED_DEPENDENCY:424,TOO_EARLY:425,UPGRADE_REQUIRED:426,PRECONDITION_REQUIRED:428,TOO_MANY_REQUESTS:429,REQUEST_HEADER_FIELDS_TOO_LARGE:431,UNAVAILABLE_FOR_LEGAL_REASONS:451,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,HTTP_VERSION_NOT_SUPPORTED:505,VARIANT_ALSO_NEGOTIATES:506,INSUFFICIENT_STORAGE:507,LOOP_DETECTED:508,NOT_EXTENDED:510,NETWORK_AUTHENTICATION_REQUIRED:511},Zx={100:"Continue",101:"Switching Protocols",102:"Processing",103:"Early Hints",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a Teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Too Early",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",510:"Not Extended",511:"Network Authentication Required"};function k5(t){return t>=200&&t<300}function T5(t){return t>=300&&t<400}function S5(t){return t>=400&&t<500}function A5(t){return t>=500&&t<600}function C5(t){return t>=400}function E5(t){return[rn.TOO_MANY_REQUESTS,rn.INTERNAL_SERVER_ERROR,rn.BAD_GATEWAY,rn.SERVICE_UNAVAILABLE,rn.GATEWAY_TIMEOUT].includes(t)}function D5(t){return Zx[t]||"Unknown Status"}var ps=class{encoder=new TextEncoder;async hash(e,r){let n=this.encoder.encode(r),i=await crypto.subtle.digest(e,n);return this.bufferToHex(i)}async hashBuffer(e,r){let n=r instanceof Uint8Array?r.buffer:r,i=await crypto.subtle.digest(e,n);return this.bufferToHex(i)}async hmac(e,r,n){let i=this.encoder.encode(r),o=await crypto.subtle.importKey("raw",i,{name:"HMAC",hash:e},!1,["sign"]),s=await crypto.subtle.sign("HMAC",o,this.encoder.encode(n));return this.bufferToHex(s)}async hmacBuffer(e,r,n){let i=r instanceof Uint8Array?r.buffer:r,o=await crypto.subtle.importKey("raw",i,{name:"HMAC",hash:e},!1,["sign"]),s;return typeof n=="string"?s=this.encoder.encode(n).buffer:n instanceof Uint8Array?s=n.buffer:s=n,crypto.subtle.sign("HMAC",o,s)}randomUUID(){return crypto.randomUUID()}randomBytes(e){let r=new Uint8Array(e);return crypto.getRandomValues(r),r}randomHex(e){return this.bufferToHex(this.randomBytes(e))}bufferToHex(e){return[...e instanceof Uint8Array?e:new Uint8Array(e)].map(n=>n.toString(16).padStart(2,"0")).join("")}hexToBuffer(e){let r=e.match(/.{1,2}/g)||[];return new Uint8Array(r.map(n=>parseInt(n,16)))}base64Encode(e){let r=this.encoder.encode(e),n=Array.from(r,i=>String.fromCodePoint(i)).join("");return btoa(n)}base64Decode(e){let r=atob(e),n=Uint8Array.from(r,i=>i.codePointAt(0));return new TextDecoder().decode(n)}base64UrlEncode(e){return this.base64Encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}base64UrlDecode(e){let n=(e+"=".repeat((4-e.length%4)%4)).replace(/-/g,"+").replace(/_/g,"/");return this.base64Decode(n)}},nn=new ps,R5=t=>nn.hash("SHA-256",t),P5=t=>nn.hash("SHA-1",t),N5=(t,e)=>nn.hmac("SHA-256",t,e),M5=()=>nn.randomUUID(),F5=t=>nn.randomBytes(t);var e1="recker-cache-v1",ms=class t{cacheName;cachePromise=null;constructor(e={}){this.cacheName=e.cacheName||e1}static isSupported(){return typeof caches<"u"}async getCache(){if(!this.cachePromise){if(!t.isSupported())throw new Error("Cache API is not supported in this environment");this.cachePromise=caches.open(this.cacheName)}return this.cachePromise}keyToUrl(e){return`https://recker-cache.local/${encodeURIComponent(e)}`}async get(e){try{let r=await this.getCache(),n=this.keyToUrl(e),i=await r.match(n);if(!i)return null;let o=await i.json();return o.expiresAt&&Date.now()>o.expiresAt?(this.delete(e).catch(()=>{}),null):o.entry}catch{return null}}async set(e,r,n){let i=await this.getCache(),o=this.keyToUrl(e),s={entry:r,expiresAt:Date.now()+n},c=new Response(JSON.stringify(s),{headers:{"Content-Type":"application/json","X-Recker-Cache":"true","X-Recker-Expires":String(s.expiresAt)}});await i.put(o,c)}async delete(e){let r=await this.getCache(),n=this.keyToUrl(e);await r.delete(n)}async clear(){await caches.delete(this.cacheName),this.cachePromise=null}async keys(){return(await(await this.getCache()).keys()).map(n=>{let i=new URL(n.url);return decodeURIComponent(i.pathname.slice(1))}).filter(n=>n.length>0)}async size(){return(await this.keys()).length}async prune(){let e=await this.getCache(),r=await e.keys(),n=0;for(let i of r){let o=await e.match(i);if(o)try{let s=await o.json();s.expiresAt&&Date.now()>s.expiresAt&&(await e.delete(i),n++)}catch{await e.delete(i),n++}}return n}};V();function ep(){return typeof globalThis.CompressionStream<"u"}function t1(t){return t?["text/","application/json","application/xml","application/javascript","application/x-www-form-urlencoded"].some(r=>t.includes(r)):!0}function r1(t){if(!t)return 0;if(typeof t=="string")return new TextEncoder().encode(t).length;if(t instanceof ArrayBuffer)return t.byteLength;if(t instanceof Uint8Array)return t.length;if(t instanceof Blob)return t.size;if(typeof t=="object")try{return new TextEncoder().encode(JSON.stringify(t)).length}catch{return 0}return 0}function n1(t){if(!t)return null;if(t instanceof Uint8Array)return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(typeof t=="string")return new TextEncoder().encode(t);if(typeof t=="object")try{return new TextEncoder().encode(JSON.stringify(t))}catch{return null}return null}async function i1(t,e){if(!ep())throw new he("CompressionStream API is not available in this browser",{feature:"CompressionStream"});let r=new CompressionStream(e),n=r.writable.getWriter(),i=new Uint8Array(t).buffer;n.write(new Uint8Array(i)),n.close();let o=r.readable.getReader(),s=[];for(;;){let{done:d,value:p}=await o.read();if(d)break;s.push(p)}let c=s.reduce((d,p)=>d+p.length,0),u=new Uint8Array(c),l=0;for(let d of s)u.set(d,l),l+=d.length;return u}async function $5(t,e){if(typeof globalThis.DecompressionStream>"u")throw new he("DecompressionStream API is not available in this browser",{feature:"DecompressionStream"});let r=new DecompressionStream(e),n=r.writable.getWriter(),i=new Uint8Array(t).buffer;n.write(new Uint8Array(i)),n.close();let o=r.readable.getReader(),s=[];for(;;){let{done:d,value:p}=await o.read();if(d)break;s.push(p)}let c=s.reduce((d,p)=>d+p.length,0),u=new Uint8Array(c),l=0;for(let d of s)u.set(d,l),l+=d.length;return u}function Zd(t={}){let{algorithm:e="gzip",threshold:r=1024,force:n=!1,methods:i=["POST","PUT","PATCH"]}=t;if(e!=="gzip"&&e!=="deflate")throw new he(`Browser compression only supports 'gzip' and 'deflate'. '${e}' is not available.`,{feature:e});return async(o,s)=>{if(!i.includes(o.method)||!o.body||!ep()||o.headers.has("Content-Encoding"))return s(o);let u=o.headers.get("Content-Type");if(!t1(u))return s(o);let l=r1(o.body);if(!n&&l<r)return s(o);let d=n1(o.body);if(!d)return s(o);try{let p=await i1(d,e);if(!n&&p.length>=d.length)return s(o);let m=new Headers(o.headers);m.set("Content-Encoding",e),m.set("Content-Length",p.length.toString());let f={...o,body:p,headers:m};return s(f)}catch{return s(o)}}}function O5(t){return t?t===!0?Zd():Zd(t):null}var zi=null;function wt(){return zi||(zi=Ka({transport:new Dt})),zi}function o1(t,e){return wt().get(t,e)}function a1(t,e){return wt().post(t,e)}function s1(t,e){return wt().put(t,e)}function c1(t,e){return wt().patch(t,e)}function u1(t,e){return wt().delete(t,e)}function l1(t,e){return wt().head(t,e)}function d1(t,e){return wt().options(t,e)}function p1(t,e){return wt().purge(t,e)}function m1(t,e){return new WebSocket(t,e)}var X5={get:o1,post:a1,put:s1,patch:c1,delete:u1,head:l1,options:d1,purge:p1,ws:m1,seo:Gd,ai:$i,har:Qr,simulateNetwork:dd,client:t=>Ka({...t,transport:new Dt}),reset:()=>{zi=null},isBrowser:!0,unavailable:["whois","whoisAvailable","dns","dnsSecurity","dnsClient","whoisClient"]};export{Ss as AbortError,As as AuthenticationError,ps as BrowserCrypto,Fi as CircuitBreakerError,Mi as Client,Me as ConfigurationError,sn as ConnectionError,Ls as DownloadError,Dt as FetchTransport,is as FilterBuilder,Bi as GraphQLError,pr as GrpcError,Xr as GrpcStatusCode,Ya as GrpcWebClient,as as HarRecorder,Wt as Http2Error,Je as HttpError,Ct as HttpRequest,rn as HttpStatus,Zx as HttpStatusText,pd as IndexedDBStorage,Qa as JsonRpcClient,Kr as JsonRpcErrorCodes,Ui as JsonRpcException,lo as LinkHeaderParser,De as LinkRel,Tt as MaxSizeExceededError,je as NetworkError,Es as NotFoundError,os as ODataClient,rs as ODataException,ns as ODataQueryBuilder,Ds as ParseError,Cs as ProtocolError,_e as QueueCancelledError,Ja as RateLimitExceededError,Mi as Recker,$ as ReckerError,wr as RequestPromise,U as SEO_THRESHOLDS,cs as SeoAnalyzer,qi as SeoRulesEngine,ms as ServiceWorkerCache,ts as SoapClient,cn as StateError,pe as StreamError,Y as TimeoutError,Zs as USER_AGENT_CATEGORIES,L0 as USER_AGENT_PRESETS,he as UnsupportedError,un as ValidationError,sd as WorkerTransport,es as XmlRpcClient,Yd as ai,Gd as analyzeSeo,nn as browserCrypto,TE as circuitBreakerPlugin,Wi as classifyTransportError,Zd as compression,Kt as consoleLogger,AE as cookieJarPlugin,Ka as createClient,O5 as createCompressionMiddleware,Tn as createFormData,Fx as createGrpcWebClient,Nx as createJsonRpcClient,Os as createLevelLogger,j1 as createMultipart,Hx as createODataClient,ss as createRulesEngine,Ix as createSoapClient,bc as createXSRFMiddleware,Ux as createXmlRpcClient,GE as decodeText,$5 as decompress,hc as dedupPlugin,u1 as del,VE as detectCharset,P0 as detectDeviceType,md as detectFromBOM,Ox as detectFromContentType,_x as detectFromHTMLMeta,jx as detectFromXMLDeclaration,o1 as get,Dn as getDefaultUserAgent,Y1 as getRandomUserAgent,D5 as getStatusText,KE as getSupportedEncodings,R0 as getUserAgent,LE as graphql,DE as graphqlPlugin,BE as grpcWeb,Qr as harRecorder,zE as harRecorderPlugin,l1 as head,N5 as hmacSha256,XE as isCharsetSupported,S5 as isClientError,ep as isCompressionSupported,C5 as isError,g0 as isFileUpload,Z1 as isMobile,kn as isPlainObject,T5 as isRedirect,E5 as isRetryable,A5 as isServerError,k5 as isSuccess,Mx as jsonCodec,ME as jsonrpc,vE as loggerPlugin,zt as normalizeCharset,$E as odata,d1 as options,my as parse,z0 as parseAcceptInfo,j0 as parseAuthInfo,$0 as parseCSPInfo,B0 as parseCacheInfo,_0 as parseClockSkew,q0 as parseCompressionInfo,O0 as parseContentType,ft as parseHeaders,_i as parseHttp2Error,W0 as parseLink,Mn as parseLinkHeader,I0 as parsePlatformInfo,H0 as parseRateLimitInfo,my as parseXML,c1 as patch,a1 as post,_s as processBody,p1 as purge,s1 as put,F5 as randomBytes,M5 as randomUUID,gE as rateLimitPlugin,X5 as recker,ac as retryPlugin,Ar as serialize,Ar as serializeXML,PE as serverTimingPlugin,P5 as sha1,R5 as sha256,$s as silentLogger,dd as simulateNetwork,IE as soap,zx as stripBOM,wE as toCurl,m1 as ws,Ok as xmlResponse,yc as xsrfPlugin};
|
|
417
417
|
//# sourceMappingURL=index.min.js.map
|