PageSourceSearch

https://chic-cascaron-db5ad2.netlify.app/assets/main-7UoHw3jF.js

js chic-cascaron-db5ad2.netlify.app collected 2026-10-03 10:34:15 UTC 39,051 bytes, 30 lines download raw bytes

1(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const l of i.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&n(l)}).observe(document,{childList:!0,subtree:!0});function s(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(r){if(r.ep)return;r.ep=!0;const i=s(r);fetch(r.href,i)}})();var w={},v={};(function(e){const t=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",s=t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",n="["+t+"]["+s+"]*",r=new RegExp("^"+n+"$"),i=function(a,o){const c=[];let u=o.exec(a);for(;u;){const f=[];f.startIndex=o.lastIndex-u[0].length;const d=u.length;for(let h=0;h<d;h++)f.push(u[h]);c.push(f),u=o.exec(a)}return c},l=function(a){const o=r.exec(a);return!(o===null||typeof o>"u")};e.isExist=function(a){return typeof a<"u"},e.isEmptyObject=function(a){return Object.keys(a).length===0},e.merge=function(a,o,c){if(o){const u=Object.keys(o),f=u.length;for(let d=0;d<f;d++)c==="strict"?a[u[d]]=[o[u[d]]]:a[u[d]]=o[u[d]]}},e.getValue=function(a){return e.isExist(a)?a:""},e.isName=l,e.getAllMatches=i,e.nameRegexp=n})(v);const O=v,W={allowBooleanAttributes:!1,unpairedTags:[]};w.validate=function(e,t){t=Object.assign({},W,t);const s=[];let n=!1,r=!1;e[0]==="\uFEFF"&&(e=e.substr(1));for(let i=0;i<e.length;i++)if(e[i]==="<"&&e[i+1]==="?"){if(i+=2,i=$(e,i),i.err)return i}else if(e[i]==="<"){let l=i;if(i++,e[i]==="!"){i=V(e,i);continue}else{let a=!1;e[i]==="/"&&(a=!0,i++);let o="";for(;i<e.length&&e[i]!==">"&&e[i]!==" "&&e[i]!=="	"&&e[i]!==`
2`&&e[i]!=="\r";i++)o+=e[i];if(o=o.trim(),o[o.length-1]==="/"&&(o=o.substring(0,o.length-1),i--),!Q(o)){let f;return o.trim().length===0?f="Invalid space after '<'.":f="Tag '"+o+"' is an invalid name.",p("InvalidTag",f,b(e,i))}const c=Z(e,i);if(c===!1)return p("InvalidAttr","Attributes for '"+o+"' have open quote.",b(e,i));let u=c.value;if(i=c.index,u[u.length-1]==="/"){const f=i-u.length;u=u.substring(0,u.length-1);const d=x(u,t);if(d===!0)n=!0;else return p(d.err.code,d.err.msg,b(e,f+d.err.line))}else if(a)if(c.tagClosed){if(u.trim().length>0)return p("InvalidTag","Closing tag '"+o+"' can't have attributes or invalid starting.",b(e,l));if(s.length===0)return p("InvalidTag","Closing tag '"+o+"' has not been opened.",b(e,l));{const f=s.pop();if(o!==f.tagName){let d=b(e,f.tagStartPos);return p("InvalidTag","Expected closing tag '"+f.tagName+"' (opened in line "+d.line+", col "+d.col+") instead of closing tag '"+o+"'.",b(e,l))}s.length==0&&(r=!0)}}else return p("InvalidTag","Closing tag '"+o+"' doesn't have proper closing.",b(e,i));else{const f=x(u,t);if(f!==!0)return p(f.err.code,f.err.msg,b(e,i-u.length+f.err.line));if(r===!0)return p("InvalidXml","Multiple possible root nodes found.",b(e,i));t.unpairedTags.indexOf(o)!==-1||s.push({tagName:o,tagStartPos:l}),n=!0}for(i++;i<e.length;i++)if(e[i]==="<")if(e[i+1]==="!"){i++,i=V(e,i);continue}else if(e[i+1]==="?"){if(i=$(e,++i),i.err)return i}else break;else if(e[i]==="&"){const f=K(e,i);if(f==-1)return p("InvalidChar","char '&' is not expected.",b(e,i));i=f}else if(r===!0&&!F(e[i]))return p("InvalidXml","Extra text at the end",b(e,i));e[i]==="<"&&i--}}else{if(F(e[i]))continue;return p("InvalidChar","char '"+e[i]+"' is not expected.",b(e,i))}if(n){if(s.length==1)return p("InvalidTag","Unclosed tag '"+s[0].tagName+"'.",b(e,s[0].tagStartPos));if(s.length>0)return p("InvalidXml","Invalid '"+JSON.stringify(s.map(i=>i.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1})}else return p("InvalidXml","Start tag expected.",1);return!0};function F(e){return e===" "||e==="	"||e===`
3`||e==="\r"}function $(e,t){const s=t;for(;t<e.length;t++)if(e[t]=="?"||e[t]==" "){const n=e.substr(s,t-s);if(t>5&&n==="xml")return p("InvalidXml","XML declaration allowed only at the start of the document.",b(e,t));if(e[t]=="?"&&e[t+1]==">"){t++;break}else continue}return t}function V(e,t){if(e.length>
3t+5&&e[t+1]==="-"&&e[t+2]==="-"){for(t+=3;t<e.length;t++)if(e[t]==="-"&&e[t+1]==="-"&&e[t+2]===">"){t+=2;break}}else if(e.length>t+8&&e[t+1]==="D"&&e[t+2]==="O"&&e[t+3]==="C"&&e[t+4]==="T"&&e[t+5]==="Y"&&e[t+6]==="P"&&e[t+7]==="E"){let s=1;for(t+=8;t<e.length;t++)if(e[t]==="<")s++;else if(e[t]===">"&&(s--,s===0))break}else if(e.length>t+9&&e[t+1]==="["&&e[t+2]==="C"&&e[t+3]==="D"&&e[t+4]==="A"&&e[t+5]==="T"&&e[t+6]==="A"&&e[t+7]==="["){for(t+=8;t<e.length;t++)if(e[t]==="]"&&e[t+1]==="]"&&e[t+2]===">"){t+=2;break}}return t}const H='"',q="'";function Z(e,t){let s="",n="",r=!1;for(;t<e.length;t++){if(e[t]===H||e[t]===q)n===""?n=e[t]:n!==e[t]||(n="");else if(e[t]===">"&&n===""){r=!0;break}s+=e[t]}return n!==""?!1:{value:s,index:t,tagClosed:r}}const Y=new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,"g");function x(e,t){const s=O.getAllMatches(e,Y),n={};for(let r=0;r<s.length;r++){if(s[r][1].length===0)return p("InvalidAttr","Attribute '"+s[r][2]+"' has no space in starting.",A(s[r]));if(s[r][3]!==void 0&&s[r][4]===void 0)return p("InvalidAttr","Attribute '"+s[r][2]+"' is without value.",A(s[r]));if(s[r][3]===void 0&&!t.allowBooleanAttributes)return p("InvalidAttr","boolean attribute '"+s[r][2]+"' is not allowed.",A(s[r]));const i=s[r][2];if(!j(i))return p("InvalidAttr","Attribute '"+i+"' is an invalid name.",A(s[r]));if(!n.hasOwnProperty(i))n[i]=1;else return p("InvalidAttr","Attribute '"+i+"' is repeated.",A(s[r]))}return!0}function J(e,t){let s=/\d/;for(e[t]==="x"&&(t++,s=/[\da-fA-F]/);t<e.length;t++){if(e[t]===";")return t;if(!e[t].match(s))break}return-1}function K(e,t){if(t++,e[t]===";")return-1;if(e[t]==="#")return t++,J(e,t);let s=0;for(;t<e.length;t++,s++)if(!(e[t].match(/\w/)&&s<20)){if(e[t]===";")break;return-1}return t}function p(e,t,s){return{err:{code:e,msg:t,line:s.line||s,col:s.col}}}function j(e){return O.isName(e)}function Q(e){return O.isName(e)}function b(e,t){const s=e.substring(0,t).split(/\r?\n/);return{line:s.length,col:s[s.length-1].length+1}}function A(e){return e.startIndex+e[1].length}var C={};const X={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,s){return e}},z=function(e){return Object.assign({},X,e)};C.buildOptions=z;C.defaultOptions=X;class D{constructor(t){this.tagname=t,this.child=[],this[":@"]={}}add(t,s){t==="__proto__"&&(t="#__proto__"),this.child.push({[t]:s})}addChild(t){t.tagname==="__proto__"&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child})}}var ee=D;const te=v;function se(e,t){const s={};if(e[t+3]==="O"&&e[t+4]==="C"&&e[t+5]==="T"&&e[t+6]==="Y"&&e[t+7]==="P"&&e[t+8]==="E"){t=t+9;let n=1,r=!1,i=!1,l="";for(;t<e.length;t++)if(e[t]==="<"&&!i){if(r&&ne(e,t)){t+=7;let a,o;[a,o,t]=re(e,t+1),o.indexOf("&")===-1&&(s[ue(a)]={regx:RegExp(`&${a};`,"g"),val:o})}else if(r&&oe(e,t))t+=8;else if(r&&ae(e,t))t+=8;else if(r&&le(e,t))t+=9;else if(ie)i=!0;else throw new Error("Invalid DOCTYPE");n++,l=""}else if(e[t]===">"){if(i?e[t-1]==="-"&&e[t-2]==="-"&&(i=!1,n--):n--,n===0)break}else e[t]==="["?r=!0:l+=e[t];if(n!==0)throw new Error("Unclosed DOCTYPE")}else throw new Error("Invalid Tag instead of DOCTYPE");return{entities:s,i:t}}function re(e,t){let s="";for(;t<e.length&&e[t]!=="'"&&e[t]!=='"';t++)s+=e[t];if(s=s.trim(),s.indexOf(" ")!==-1)throw new Error("External entites are not supported");const n=e[t++];let r="";for(;t<e.length&&e[t]!==n;t++)r+=e[t];return[s,r,t]}function ie(e,t){return e[t+1]==="!"&&e[t+2]==="-"&&e[t+3]==="-"}function ne(e,t){return e[t+1]==="!"&&e[t+2]==="E"&&e[t+3]==="N"&&e[t+4]==="T"&&e[t+5]==="I"&&e[t+6]==="T"&&e[t+7]==="Y"}function oe(e,t){return e[t+1]==="!"&&e[t+2]==="E"&&e[t+3]==="L"&&e[t+4]==="E"&&e[t+5]==="M"&&e[t+6]==="E"&&e[t+7]==="N"&&e[t+8]==="T"}function ae(e,t){return e[t+1]==="!"&&e[t+2]==="A"&&e[t+3]==="T"&&e[t+4]==="T"&&e[t+5]==="L"&&e[t+6]==="I"&&e[t+7]==="S"&&e[t+8]==="T"}function le(e,t){return e[t+1]==="!"&&e[t+2]==="N"&&e[t+3]==="O"&&e[t+4]==="T"&&e[t+5]==="A"&&e[t+6]==="T"&&e[t+7]==="I"&&e[t+8]==="O"&&e[t+9]==="N"}function ue(e){if(te.isName(e))return e;throw new Error(`Invalid entity name ${e}`)}var ce=se;const fe=/^[-+]?0x[a-fA-F0-9]+$/,de=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt);!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const he={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};
3function ge(e,t={}){if(t=Object.assign({},he,t),!e||typeof e!="string")return e;let s=e.trim();if(t.skipLike!==void 0&&t.skipLike.test(s))return e;if(t.hex&&fe.test(s))return Number.parseInt(s,16);{const n=de.exec(s);if(n){const r=n[1],i=n[2];let l=pe(n[3]);const a=n[4]||n[6];if(!t.leadingZeros&&i.length>0&&r&&s[2]!==".")return e;if(!t.leadingZeros&&i.length>0&&!r&&s[1]!==".")return e;{const o=Number(s),c=""+o;return c.search(/[eE]/)!==-1||a?t.eNotation?o:e:s.indexOf(".")!==-1?c==="0"&&l===""||c===l||r&&c==="-"+l?o:e:i?l===c||r+l===c?o:e:s===c||s===r+c?o:e}}else return e}}function pe(e){return e&&e.indexOf(".")!==-1&&(e=e.replace(/0+$/,""),e==="."?e="0":e[0]==="."?e="0"+e:e[e.length-1]==="."&&(e=e.substr(0,e.length-1))),e}var be=ge;function ye(e){return typeof e=="function"?e:Array.isArray(e)?t=>{for(const s of e)if(typeof s=="string"&&t===s||s instanceof RegExp&&s.test(t))return!0}:()=>!1}var k=ye;const _=v,T=ee,Ne=ce,me=be,Ee=k;let Ae=class{constructor(t){this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(s,n)=>String.fromCharCode(Number.parseInt(n,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(s,n)=>String.fromCharCode(Number.parseInt(n,16))}},this.addExternalEntities=Te,this.parseXml=Oe,this.parseTextData=ve,this.resolveNameSpace=Pe,this.buildAttributesMap=we,this.isItStopNode=Ve,this.replaceEntitiesValue=Fe,this.readStopNodeData=Se,this.saveTextToParentTag=$e,this.addChild=Ce,this.ignoreAttributesFn=Ee(this.options.ignoreAttributes)}};function Te(e){const t=Object.keys(e);for(let s=0;s<t.length;s++){const n=t[s];this.lastEntities[n]={regex:new RegExp("&"+n+";","g"),val:e[n]}}}function ve(e,t,s,n,r,i,l){if(e!==void 0&&(this.options.trimValues&&!n&&(e=e.trim()),e.length>0)){l||(e=this.replaceEntitiesValue(e));const a=this.options.tagValueProcessor(t,e,s,r,i);return a==null?e:typeof a!=typeof e||a!==e?a:this.options.trimValues?I(e,this.options.parseTagValue,this.options.numberParseOptions):e.trim()===e?I(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function Pe(e){if(this.options.removeNSPrefix){const t=e.split(":"),s=e.charAt(0)==="/"?"/":"";if(t[0]==="xmlns")return"";t.length===2&&(e=s+t[1])}return e}const Ie=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`,"gm");function we(e,t,s){if(this.options.ignoreAttributes!==!0&&typeof e=="string"){const n=_.getAllMatches(e,Ie),r=n.length,i={};for(let l=0;l<r;l++){const a=this.resolveNameSpace(n[l][1]);if(this.ignoreAttributesFn(a,t))continue;let o=n[l][4],c=this.options.attributeNamePrefix+a;if(a.length)if(this.options.transformAttributeName&&(c=this.options.transformAttributeName(c)),c==="__proto__"&&(c="#__proto__"),o!==void 0){this.options.trimValues&&(o=o.trim()),o=this.replaceEntitiesValue(o);const u=this.options.attributeValueProcessor(a,o,t);u==null?i[c]=o:typeof u!=typeof o||u!==o?i[c]=u:i[c]=I(o,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(i[c]=!0)}if(!Object.keys(i).length)return;if(this.options.attributesGroupName){const l={};return l[this.options.attributesGroupName]=i,l}return i}}const Oe=function(e){e=e.replace(/\r\n?/g,`
4`);const t=new T("!xml");let s=t,n="",r="";for(let i=0;i<e.length;i++)if(e[i]==="<")if(e[i+1]==="/"){const a=E(e,">",i,"Closing Tag is not closed.");let o=e.substring(i+2,a).trim();if(this.options.removeNSPrefix){const f=o.indexOf(":");f!==-1&&(o=o.substr(f+1))}this.options.transformTagName&&(o=this.options.transformTagName(o)),s&&(n=this.saveTextToParentTag(n,s,r));const c=r.substring(r.lastIndexOf(".")+1);if(o&&this.options.unpairedTags.indexOf(o)!==-1)throw new Error(`Unpaired tag can not be used as closing tag: </${o}>`);let u=0;c&&this.options.unpairedTags.indexOf(c)!==-1?(u=r.lastIndexOf(".",r.lastIndexOf(".")-1),this.tagsNodeStack.pop()):u=r.lastIndexOf("."),r=r.substring(0,u),s=this.tagsNodeStack.pop(),n="",i=a}else if(e[i+1]==="?"){let a=P(e,i,!1,"?>");if(!a)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,s,r),!(this.options.ignoreDeclaration&&a.tagName==="?xml"||this.options.ignorePiTags)){const o=new T(a.tagName);o.add(this.options.textNodeName,""),a.tagName!==a.tagExp&&a.attrExpPresent&&(o[":@"]=this.buildAttributesMap(a.tagExp,r,a.tagName)),this.addChild(s,o,r)}i=a.closeIndex+1}else if(e.substr(i+1,3)==="!--"){const a=E(e,"-->",i+4,"Comment is not closed.");if(this.options.commentPropName){const o=e.substring(i+4,a-2);n=this.saveTextToParentTag(n,s,r),s.add(this.options.commentPropName,[{[this.options.textNodeName]:o}])}i=a}else if(e.substr(i+1,2)==="!D"){const a=Ne(e,i);this.docTypeEntities=a.entities,i=a.i}else if(e.substr(i+1,2)==="!["){const a=E(e,"]]>",i,"CDATA is not closed.")-2,o=e.substring(i+9,a);n=this.saveTextToParentTag(n,s,r);let c=this.parseTextData(o,s.tagname,r,!0,!1,!0,!0);c==null&&(c=""),this.options.cdataPropName?s.add(this.options.cdataPropName,[{[this.options.textNodeName]:o}]):s.add(this.options.textNodeName,c),i=a+2}else{let a=P(e,i,this.options.removeNSPrefix),o=a.tagName;const c=a.rawTagName;let u=a.tagExp,f=a.attrExpPresent,d=a.closeIndex;this.options.transformTagName&&(o=this.options.transformTagName(o)),s&&n&&s.tagname!=="!xml"&&(n=this.saveTextToParentTag(n,s,r,!1));const h=s;if(h&&this.options.unpairedTags.indexOf(h.tagname)!==-1&&(s=this.tagsNodeStack.pop(),r=r.substring(0,r.lastIndexOf("."))),o!==t.tagname&&(r+=r?"."+o:o),this.isItStopNode(this.options.stopNodes,r,o)){let g="";if(u.length>0&&u.lastIndexOf("/")===u.length-1)o[o.length-1]==="/"?(o=o.substr(0,o.length-1),r=r.substr(0,r.length-1),u=o):u=u.substr(0,u.length-1),i=a.closeIndex;else if(this.options.unpairedTags.indexOf(o)!==-1)i=a.closeIndex;else{const y=this.readStopNodeData(e,c,d+1);if(!y)throw new Error(`Unexpected end of ${c}`);i=y.i,g=y.tagContent}const N=new T(o);o!==u&&f&&(N[":@"]=this.buildAttributesMap(u,r,o)),g&&(g=this.parseTextData(g,o,r,!0,f,!0,!0)),r=r.substr(0,r.lastIndexOf(".")),N.add(this.options.textNodeName,g),this.addChild(s,N,r)}else{if(u.length>0&&u.lastIndexOf("/")===u.length-1){o[o.length-1]==="/"?(o=o.substr(0,o.length-1),r=r.substr(0,r.length-1),u=o):u=u.substr(0,u.length-1),this.options.transformTagName&&(o=this.options.transformTagName(o));const g=new T(o);o!==u&&f&&(g[":@"]=this.buildAttributesMap(u,r,o)),this.addChild(s,g,r),r=r.substr(0,r.lastIndexOf("."))}else{const g=new T(o);this.tagsNodeStack.push(s),o!==u&&f&&(g[":@"]=this.buildAttributesMap(u,r,o)),this.addChild(s,g,r),s=g}n="",i=d}}else n+=e[i];return t.child};function Ce(e,t,s){const n=this.options.updateTag(t.tagname,s,t["
4:@"]);n===!1||(typeof n=="string"&&(t.tagname=n),e.addChild(t))}const Fe=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const s=this.docTypeEntities[t];e=e.replace(s.regx,s.val)}for(let t in this.lastEntities){const s=this.lastEntities[t];e=e.replace(s.regex,s.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const s=this.htmlEntities[t];e=e.replace(s.regex,s.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function $e(e,t,s,n){return e&&(n===void 0&&(n=Object.keys(t.child).length===0),e=this.parseTextData(e,t.tagname,s,!1,t[":@"]?Object.keys(t[":@"]).length!==0:!1,n),e!==void 0&&e!==""&&t.add(this.options.textNodeName,e),e=""),e}function Ve(e,t,s){const n="*."+s;for(const r in e){const i=e[r];if(n===i||t===i)return!0}return!1}function xe(e,t,s=">"){let n,r="";for(let i=t;i<e.length;i++){let l=e[i];if(n)l===n&&(n="");else if(l==='"'||l==="'")n=l;else if(l===s[0])if(s[1]){if(e[i+1]===s[1])return{data:r,index:i}}else return{data:r,index:i};else l==="	"&&(l=" ");r+=l}}function E(e,t,s,n){const r=e.indexOf(t,s);if(r===-1)throw new Error(n);return r+t.length-1}function P(e,t,s,n=">"){const r=xe(e,t+1,n);if(!r)return;let i=r.data;const l=r.index,a=i.search(/\s/);let o=i,c=!0;a!==-1&&(o=i.substring(0,a),i=i.substring(a+1).trimStart());const u=o;if(s){const f=o.indexOf(":");f!==-1&&(o=o.substr(f+1),c=o!==r.data.substr(f+1))}return{tagName:o,tagExp:i,closeIndex:l,attrExpPresent:c,rawTagName:u}}function Se(e,t,s){const n=s;let r=1;for(;s<e.length;s++)if(e[s]==="<")if(e[s+1]==="/"){const i=E(e,">",s,`${t} is not closed`);if(e.substring(s+2,i).trim()===t&&(r--,r===0))return{tagContent:e.substring(n,s),i};s=i}else if(e[s+1]==="?")s=E(e,"?>",s+1,"StopNode is not closed.");else if(e.substr(s+1,3)==="!--")s=E(e,"-->",s+3,"StopNode is not closed.");else if(e.substr(s+1,2)==="![")s=E(e,"]]>",s,"StopNode is not closed.")-2;else{const i=P(e,s,">");i&&((i&&i.tagName)===t&&i.tagExp[i.tagExp.length-1]!=="/"&&r++,s=i.closeIndex)}}function I(e,t,s){if(t&&typeof e=="string"){const n=e.trim();return n==="true"?!0:n==="false"?!1:me(e,s)}else return _.isExist(e)?e:""}var Le=Ae,B={};function Me(e,t){return R(e,t)}function R(e,t,s){let n;const r={};for(let i=0;i<e.length;i++){const l=e[i],a=Xe(l);let o="";if(s===void 0?o=a:o=s+"."+a,a===t.textNodeName)n===void 0?n=l[a]:n+=""+l[a];else{if(a===void 0)continue;if(l[a]){let c=R(l[a],t,o);const u=_e(c,t);l[":@"]?ke(c,l[":@"],o,t):Object.keys(c).length===1&&c[t.textNodeName]!==void 0&&!t.alwaysCreateTextNode?c=c[t.textNodeName]:Object.keys(c).length===0&&(t.alwaysCreateTextNode?c[t.textNodeName]="":c=""),r[a]!==void 0&&r.hasOwnProperty(a)?(Array.isArray(r[a])||(r[a]=[r[a]]),r[a].push(c)):t.isArray(a,o,u)?r[a]=[c]:r[a]=c}}}return typeof n=="string"?n.length>0&&(r[t.textNodeName]=n):n!==void 0&&(r[t.textNodeName]=n),r}function Xe(e){const t=Object.keys(e);for(let s=0;s<t.length;s++){const n=t[s];if(n!==":@")return n}}function ke(e,t,s,n){if(t){const r=Object.keys(t),i=r.length;for(let l=0;l<i;l++){const a=r[l];n.isArray(a,s+"."+a,!0,!0)?e[a]=[t[a]]:e[a]=t[a]}}}function _e(e,t){const{textNodeName:s}=t,n=Object.keys(e).length;return!!(n===0||n===1&&(e[s]||typeof e[s]=="boolean"||e[s]===0))}B.prettify=Me;const{buildOptions:Be}=C,Re=Le,{prettify:Ue}=B,Ge=w;let We=class{constructor(t){this.externalEntities={},this.options=Be(t)}parse(t,s){if(typeof t!="string")if(t.toString)t=t.toString();else throw new Error("XML data is accepted in String or Bytes[] form.");if(s){s===!0&&(s={});const i=Ge.validate(t,s);if(i!==!0)throw Error(`${i.err.msg}:${i.err.line}:${i.err.col}`)}const n=new Re(this.options);n.addExternalEntities(this.externalEntities);const r=n.parseXml(t);return this.options.preserveOrder||r===void 0?r:Ue(r,this.options)}addEntity(t,s){if(s.indexOf("&")!==-1)throw new Error("Entity value can't have '&'");if(t.indexOf("&")!==-1||t.indexOf(";")!==-1)throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'");if(s==="&")throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=s}};var He=We;const qe=`
5`;function Ze(e,t){let s="";return t.format&&t.indentBy.length>0&&(s=qe),U(e,t,"",s)}function U(e,t,s,n){let r="",i=!1;for(let l=0;l<e.length;l++){const a=e[l],o=Ye(a);if(o===void 0)continue;let c="";if(s.length===0?c=o:c=`${s}.${o}`,o===t.textNodeName){let g=a[o];Je(c,t)||(g=t.tagValueProcessor(o,g),g=G(g,t)),i&&(r+=n),r+=g,i=!1;continue}else if(o===t.cdataPropName){i&&(r+=n),r+=`<![CDATA[${a[o][0][t.textNodeName]}]]>`,i=!1;continue}else if(o===t.commentPropName){r+=n+`<!--${a[o][0][t.textNodeName]}-->`,i=!0;continue}else if(o[0]==="?"){const g=S(a[":@"],t),N=o==="?xml"?"":n;let y=a[o][0][t.textNodeName];y=y.length!==0?" "+y:"",r+=N+`<${o}${y}${g}?>`,i=!0;continue}let u=n;u!==""&&(u+=t.indentBy);const f=S(a[":@"],t),d=n+`<${o}${f}`,h=U(a[o],t,c,u);t.unpairedTags.indexOf(o)!==-1?t.suppressUnpairedNode?r+=d+">":r+=d+"/>":(!h||h.length===0)&&t.suppressEmptyNode?r+=d+"/>":h&&h.endsWith(">")?r+=d+`>${h}${n}</${o}>`:(r+=d+">",h&&n!==""&&(h.includes("/>")||h.includes("</"))?r+=n+t.indentBy+h+n:r+=h,r+=`</${o}>`),i=!0}return r}function Ye(e){const t=Object.keys(e);for(let s=0;s<t.length;s++){const n=t[s];if(e.hasOwnProperty(n)&&n!==":@")return n}}function S(e,t){let s="";if(e&&!t.ignoreAttributes)for(let n in e){if(!e.hasOwnProperty(n))continue;let r=t.attributeValueProcessor(n,e[n]);r=G(r,t),r===!0&&t.suppressBooleanAttributes?s+=` ${n.substr(t.attributeNamePrefix.length)}`:s+=` ${n.substr(t.attributeNamePrefix.length)}="${r}"`}return s}function Je(e,t){e=e.substr(0,e.length-t.textNodeName.length-1);let s=e.substr(e.lastIndexOf(".")+1);for(let n in t.stopNodes)if(t.stopNodes[n]===e||t.stopNodes[n]==="*."+s)return!0;return!1}function G(e,t){if(e&&e.length>0&&t.processEntities)for(let s=0;s<t.entities.length;s++){const n=t.entities[s];e=e.replace(n.regex,n.val)}return e}var Ke=Ze;const je=Ke,Qe=k,ze={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:"  ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&amp;"},{regex:new RegExp(">","g"),val:"&gt;"},{regex:new RegExp("<","g"),val:"&lt;"},{regex:new RegExp("'","g"),val:"&apos;"},{regex:new RegExp('"',"g"),val:"&quot;"}],processEntities:!0,stopNodes:[],oneListGroup:!1};function m(e){this.options=Object.assign({},ze,e),this.options.ignoreAttributes===!0||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=Qe(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=tt),this.processTextOrObjNode=De,this.options.format?(this.indentate=et,this.tagEndChar=`>
6`,this.newLine=`
7`):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}m.prototype.build=function(e){return this.options.preserveOrder?je(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0,[]).val)};m.prototype.j2x=function(e,t,s){let n="",r="";const i=s.join(".");for(let l in e)if(Object.prototype.hasOwnProperty.call(e,l))if(typeof e[l]>"u")this.isAttribute(l)&&(r+="");else if(e[l]===null)this.isAttribute(l)?r+="":l[0]==="?"?r+=this.indentate(t)+"<"+l+"?"+this.tagEndChar:r+=this.indentate(t)+"<"+l+"/"+this.tagEndChar;
7else if(e[l]instanceof Date)r+=this.buildTextValNode(e[l],l,"",t);else if(typeof e[l]!="object"){const a=this.isAttribute(l);if(a&&!this.ignoreAttributesFn(a,i))n+=this.buildAttrPairStr(a,""+e[l]);else if(!a)if(l===this.options.textNodeName){let o=this.options.tagValueProcessor(l,""+e[l]);r+=this.replaceEntitiesValue(o)}else r+=this.buildTextValNode(e[l],l,"",t)}else if(Array.isArray(e[l])){const a=e[l].length;let o="",c="";for(let u=0;u<a;u++){const f=e[l][u];if(!(typeof f>"u"))if(f===null)l[0]==="?"?r+=this.indentate(t)+"<"+l+"?"+this.tagEndChar:r+=this.indentate(t)+"<"+l+"/"+this.tagEndChar;else if(typeof f=="object")if(this.options.oneListGroup){const d=this.j2x(f,t+1,s.concat(l));o+=d.val,this.options.attributesGroupName&&f.hasOwnProperty(this.options.attributesGroupName)&&(c+=d.attrStr)}else o+=this.processTextOrObjNode(f,l,t,s);else if(this.options.oneListGroup){let d=this.options.tagValueProcessor(l,f);d=this.replaceEntitiesValue(d),o+=d}else o+=this.buildTextValNode(f,l,"",t)}this.options.oneListGroup&&(o=this.buildObjectNode(o,l,c,t)),r+=o}else if(this.options.attributesGroupName&&l===this.options.attributesGroupName){const a=Object.keys(e[l]),o=a.length;for(let c=0;c<o;c++)n+=this.buildAttrPairStr(a[c],""+e[l][a[c]])}else r+=this.processTextOrObjNode(e[l],l,t,s);return{attrStr:n,val:r}};m.prototype.buildAttrPairStr=function(e,t){return t=this.options.attributeValueProcessor(e,""+t),t=this.replaceEntitiesValue(t),this.options.suppressBooleanAttributes&&t==="true"?" "+e:" "+e+'="'+t+'"'};function De(e,t,s,n){const r=this.j2x(e,s+1,n.concat(t));return e[this.options.textNodeName]!==void 0&&Object.keys(e).length===1?this.buildTextValNode(e[this.options.textNodeName],t,r.attrStr,s):this.buildObjectNode(r.val,t,r.attrStr,s)}m.prototype.buildObjectNode=function(e,t,s,n){if(e==="")return t[0]==="?"?this.indentate(n)+"<"+t+s+"?"+this.tagEndChar:this.indentate(n)+"<"+t+s+this.closeTag(t)+this.tagEndChar;{let r="</"+t+this.tagEndChar,i="";return t[0]==="?"&&(i="?",r=""),(s||s==="")&&e.indexOf("<")===-1?this.indentate(n)+"<"+t+s+i+">"+e+r:this.options.commentPropName!==!1&&t===this.options.commentPropName&&i.length===0?this.indentate(n)+`<!--${e}-->`+this.newLine:this.indentate(n)+"<"+t+s+i+this.tagEndChar+e+this.indentate(n)+r}};m.prototype.closeTag=function(e){let t="";return this.options.unpairedTags.indexOf(e)!==-1?this.options.suppressUnpairedNode||(t="/"):this.options.suppressEmptyNode?t="/":t=`></${e}`,t};m.prototype.buildTextValNode=function(e,t,s,n){if(this.options.cdataPropName!==!1&&t===this.options.cdataPropName)return this.indentate(n)+`<![CDATA[${e}]]>`+this.newLine;if(this.options.commentPropName!==!1&&t===this.options.commentPropName)return this.indentate(n)+`<!--${e}-->`+this.newLine;if(t[0]==="?")return this.indentate(n)+"<"+t+s+"?"+this.tagEndChar;{let r=this.options.tagValueProcessor(t,e);return r=this.replaceEntitiesValue(r),r===""?this.indentate(n)+"<"+t+s+this.closeTag(t)+this.tagEndChar:this.indentate(n)+"<"+t+s+">"+r+"</"+t+this.tagEndChar}};m.prototype.replaceEntitiesValue=function(e){if(e&&e.length>0&&this.options.processEntities)for(let t=0;t<this.options.entities.length;t++){const s=this.options.entities[t];e=e.replace(s.regex,s.val)}return e};function et(e){return this.options.indentBy.repeat(e)}function tt(e){return e.startsWith(this.options.attributeNamePrefix)&&e!==this.options.textNodeName?e.substr(this.attrPrefixLen):!1}var st=m;const rt=w,it=He,nt=st;var L={XMLParser:it,XMLValidator:rt,XMLBuilder:nt};function ot(e,t){try{if(!e.ONIXMessage)return{isValid:!1,errors:["Missing root ONIXMessage element"],accessibility:{present:!1,details:"Invalid ONIX - cannot check accessibility"}};const s=e.ONIXMessage;if((s.Product||[]).length===0)return{isValid:!1,errors:["No Product records found"],accessibility:{present:!1,details:"No products found - cannot check accessibility"}};const r=at(s,t);return{isValid:!0,errors:[],accessibility:r}}catch(s){return console.error("Validation error:",s),{isValid:!1,errors:[`Custom validation error: ${s.message}`],accessibility:{present:!1,details:`Validation error - cannot check accessibility: ${s.message}`}}}}function M(e,t){if(t)return t;const s={"00":"Accessibility summary","01":"LIA Compliance Scheme","02":"EPUB Accessibility Specification 1.0 A","03":"EPUB Accessibility Specification 1.0 AA","04":"Epub Accessibility Specification 1.1","05":"PDF/UA-1","06":"PDF/UA-2","08":"Unknown accessibility","09"
7:"Inaccessible, or known limited accessibility",10:"No reading system accessibility options actively disabled",11:"Table of contents navigation",12:"Index navigation",13:"Single logical reading order",14:"Short alternative textual descriptions",15:"Full alternative textual descriptions",16:"Visualised data also available as non-graphical data",17:"Accessible math content as MathML",18:"Accessible chemistry content as ChemML",19:"Print-equivalent page numbering",20:"Synchronised pre-recorded audio",21:"Text-to-speech hinting provided",22:"Language tagging provided",24:"Dyslexia readability",25:"Use of color is not sole means of conveying information",26:"Use of high contrast between text and background color",27:"Use of high contrast between foreground and background audio",28:"Full alternative audio descriptions",29:"Next / Previous structural navigation",30:"ARIA roles provided",31:"Accessible controls provided",32:"Landmark navigation",34:"Accessible chemistry content (as MathML)",35:"Accessible math content (as LaTeX)",36:"All textual content can be modified",37:"Use of ultra-high contrast between text foreground and background",38:"Unusual words or abbreviations explained",39:"Supplementary material to an audiobook is accessible",40:"Link purposes clear",51:"All non-decorative content supports reading via pre-recorded audio",52:"All non-decorative content supports reading without sight",75:"EAA exception 1 – Micro-enterprises",76:"EAA exception 2 – Disproportionate burden",77:"EAA exception 3 – Fundamental modification",80:"WCAG v2.0",81:"WCAG v2.1",82:"WCAG v2.2",84:"WCAG level A",85:"WCAG level AA",86:"WCAG level AAA",90:"Compliance certification by (name)",91:"Latest accessibility assessment date",92:"Accessibility addendum",93:"Compliance certification by (URL)",94:"Compliance web page for detailed accessibility information",95:"Trusted intermediary's web page for detailed accessibility information",96:"Publisher's web page for detailed accessibility information",97:"Compatibility tested",98:"Trusted Intermediary contact",99:"Publisher contact for further accessibility information"},n=e.toString().padStart(2,"0");return s[n]||`Unknown accessibility feature (${n})`}function at(e,t){let s=!1;const n=new Set,r=[],i=[],l=Array.isArray(e.Product)?e.Product:[e.Product];for(const o of l){let c=!1;const u=o.RecordReference||"Unknown Product";if(t==="3.0"&&o.DescriptiveDetail){const f=Array.isArray(o.DescriptiveDetail)?o.DescriptiveDetail[0]:o.DescriptiveDetail;if(f.ProductFormFeature){const d=Array.isArray(f.ProductFormFeature)?f.ProductFormFeature:[f.ProductFormFeature];for(const h of d)if(h.ProductFormFeatureType==="09"||h.ProductFormFeatureType===9){s=!0,c=!0;const g=h.ProductFormFeatureValue,N=h.ProductFormFeatureDescription;if(g!==void 0){const y=M(g,N);n.add(`${g} - ${y}`)}}}}else if(t==="2.1"&&o.EpubFeature){const f=Array.isArray(o.EpubFeature)?o.EpubFeature:[o.EpubFeature];for(const d of f)if(d.EpubFeatureType==="09"||d.EpubFeatureType===9){s=!0,c=!0;const h=d.EpubFeatureValue,g=d.EpubFeatureDescription;if(h!==void 0){const N=M(h,g);n.add(`${h} - ${N}`)}}}c?i.push(u):r.push(u)}const a=Array.from(n);return{present:s,details:s?`Found ${a.length} accessibility features (Code List 196)`:"No accessibility information found (Code List 196 features missing)",features:a,missingIn:r,presentIn:i,summary:s?`This file includes accessibility metadata using Code List 196. ${i.length} product(s) have accessibility features.`:"This file does not meet accessibility standards (no Code List 196 features found)."}}async function lt(e,t="auto"){try{const s=L.XMLValidator.validate(e,{allowBooleanAttributes:!0,allowBooleanAttributeValue:!0});if(s!==!0)return{isValid:!1,version:"unknown",errors:[`XML Syntax Error: ${s.err.msg}`],accessibility:{present:!1,details:"Invalid XML - cannot check accessibility"}};const n=new L.XMLParser({ignoreAttributes:!1,attributeNamePrefix:"@_",parseAttributeValue:!0,parseTagValue:!0,trimValues:!0,ignoreNameSpace:!0,isArray:c=>["Product","ProductIdentifier","TitleDetail","TitleElement","Header","Sender","ONIXVersion","Title","DescriptiveDetail","TitleElement","Contributor","Subject","Audience","TextContent","SupportingResource","Price","Territory","SalesRights","Measure","RelatedProduct","Collection","SupplyDetail","ProductFormFeature","EpubFeature"].includes(c),allowBooleanAttributes:!0});let r;try{r=n.parse(e)}catch(c){return{isValid:!1,version:"unknown",errors:[`XML Parsing Error: ${c.message}`],accessibility:{present:!1,details:"Parse error - cannot check accessibility"}}}let i;try{i=ct(r,"auto",e)}catch(c){return{isValid:!1,version:"unknown",errors:[`Version detection failed: ${c.message}`],accessibility:{present:!1,details:"Version detection failed - cannot check accessibility"}}}let l=[];t!=="auto"&&t!==i&&l.push(`Note: File appears to be ONIX ${i} but was validated as ONIX ${t}. Using detected version ${i}.`);const a=ut(r,i);a.length>0&&(l=l.concat(a));const o=ot(r,i);return o.errors&&(l=l.concat(o.errors)),{version:i,isValid:a.length===0&&o.isValid,errors:l,accessibility:o.accessibility}}catch(s){return console.error("Validation error:",s),{isValid:!1,version:"unknown",errors:[`Validation failed: ${s.message}`],accessibility:{present:!1,details:"Validation error - cannot check accessibility"}}}}function ut(e,t){var n;const s=[];return t==="2.1"&&(n=e.ONIXMessage)!=null&&n.Product&&(Array.isArray(e.ONIXMessage.Product)?e.ONIXMessage.Product:[e.ONIXMessage.Product]).forEac
7h((i,l)=>{i.Title&&(Array.isArray(i.Title)?i.Title:[i.Title]).forEach((o,c)=>{i.WorkIdentifier&&o.TitleType&&s.push(`Invalid sequence: WorkIdentifier must appear after Title composite in Product ${l+1}`);const u=["TitleType","TextCaseFlag","TitlePrefix","TitleWithoutPrefix","Title","Subtitle"];let f=-1;Object.keys(o).forEach(d=>{const h=u.indexOf(d);h!==-1?(h<f&&s.push(`Invalid sequence in Title composite: ${d} must appear before ${u[f]} in Product ${l+1}, Title ${c+1}`),f=h):["@_","#text"].includes(d)||s.push(`Invalid element in Title composite: ${d} is not allowed in Product ${l+1}, Title ${c+1}`)})})}),s}function ct(e,t,s){if(!e||!e.ONIXMessage)throw new Error("Invalid ONIX: Missing ONIXMessage root element");const n=e.ONIXMessage;if(s.includes("http://ns.editeur.org/onix/3.0/reference")||s.includes("http://ns.editeur.org/onix/3.0/short"))return"3.0";if(s.includes("http://www.editeur.org/onix/2.1/reference")||s.includes("http://www.editeur.org/onix/2.1/short"))return"2.1";if(n["@_release"]){const r=n["@_release"];if(r==="3.0"||r==="2.1")return r}if(n.Header&&Array.isArray(n.Header)&&n.Header.length>0){const r=n.Header[0];if(r.ONIXVersion&&Array.isArray(r.ONIXVersion)&&r.ONIXVersion.length>0&&r.ONIXVersion[0]==="2.1")return"2.1";if(r.Sender&&Array.isArray(r.Sender))return"3.0";if(r.FromCompany)return"2.1"}if(n.Product&&Array.isArray(n.Product)&&n.Product.length>0){const r=n.Product[0];if(r.DescriptiveDetail||r.PublishingDetail||r.ProductSupply)return"3.0";if(r.Title||r.Series||r.EpubType||r.EpubFormat)return"2.1"}return"3.0"}document.getElementById("uploadForm").addEventListener("submit",async e=>{e.preventDefault();const t=document.getElementById("onixFile"),s=document.getElementById("version"),n=document.getElementById("results"),r=document.getElementById("validationStatus"),i=document.getElementById("errorList");if(!t.files[0]){alert("Please select a file");return}try{r.textContent="Validating...",n.classList.remove("hidden"),i.innerHTML="";const l=t.files[0];if(!l.name.toLowerCase().endsWith(".xml"))throw new Error("Only XML files are allowed");const a=new FileReader;a.onload=async o=>{const c=o.target.result;try{const u=await lt(c,s.value);if(!u)throw new Error("Validation failed: No result returned");let f=u.isValid?`Valid ONIX ${u.version} file`:`Invalid ONIX ${u.version} file`;u.accessibility&&(f+=`
8`+(u.accessibility.present?"✓ "+u.accessibility.summary:"⚠ "+u.accessibility.summary)),r.className=u.isValid?"success":"error",r.innerHTML=f.replace(`
9`,"<br>");let d="";!u.isValid&&u.errors&&u.errors.length>0&&(d+='<div class="validation-errors">',d+="<h3>Validation Errors:</h3>",d+=u.errors.map(h=>`<div class="error">${h}</div>`).join(""),d+="</div>"),u.productIdentifiers&&(d+=`<div class="product-identifiers">
10                        <h3>Product Identifiers:</h3>
11                        <p>${u.productIdentifiers.summary}</p>`,u.productIdentifiers.identifiers.length>0&&(d+=`<ul>
12                            ${u.productIdentifiers.identifiers.map(h=>`<li><strong>${h.description}</strong>: ${h.value}</li>`).join("")}
13                        </ul>`),d+="</div>"),u.accessibility&&(d+=`<div class="accessibility-details">
14                        <h3>Accessibility Details:</h3>
15                        <p>${u.accessibility.details}</p>`,u.accessibility.features&&u.accessibility.features.length>0&&(d+=`<div class="features-list">
16                            <h4>Accessibility Features:</h4>
17                            <ul>
18                                ${u.accessibility.features.map(h=>`<li>${h}</li>`).join("")}
19                            </ul>
20                        </div>`),u.accessibility.presentIn&&u.accessibility.presentIn.length>0&&(d+=`<div class="products-with-accessibility">
21                            <h4>Products with Accessibility Features:</h4>
22                            <ul>
23                                ${u.accessibility.presentIn.map(h=>`<li>${h}</li>`).join("")}
24                            </ul>
25                        </div>`),u.accessibility.missingIn&&u.accessibility.missingIn.length>0&&(d+=`<div class="products-missing-accessibility">
26                            <h4>Products Missing Accessibility Information:</h4>
27                            <ul>
28                                ${u.accessibility.missingIn.map(h=>`<li>${h}</li>`).join("")}
29                            </ul>
30                        </div>`),d+="</div>"),i.innerHTML=d}catch(u){console.error("Validation error:",u),r.className="error",r.textContent="Validation Error",i.innerHTML=`<div class="error">${u.message}</div>`}},a.onerror=o=>{console.error("File reading error:",o),r.className="error",r.textContent="Error reading file",i.innerHTML='<div class="error">Failed to read the file</div>'},a.readAsText(l)}catch(l){console.error("File handling error:",l),r.className="error",r.textContent="Error",i.innerHTML=`<div class="error">${l.message}</div>`}});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.