1function Hex(){}Hex.encode=function(e,n,r){for(var t=new Array(2*r),o=new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"),u=n,f=0;u<r+n;u++,f++)t[f]=o[(255&e[u])>>4],t[++f]=o[15&e[u]];return t.join("")},Hex.decode=function(e){if(null==e||""==e)return null;if(e.length%2!=0)return null;for(var n=e.length/2,r=this.toCharCodeArray(e),t=new Array(n),o=0;o<n;o++){if(r[2*o]>=48&&r[2*o]<=57)t[o]=r[2*o]-48<<4;else if(r[2*o]>=65&&r[2*o]<=70)t[o]=r[2*o]-65+10<<4;else{if(!(r[2*o]>=97&&r[2*o]<=102))return null;t[o]=r[2*o]-97+10<<4}if(r[2*o+1]>=48&&r[2*o+1]<=57)t[o]=t[o]|r[2*o+1]-48;else if(r[2*o+1]>=65&&r[2*o+1]<=70)t[o]=t[o]|r[2*o+1]-65+10;else{if(!(r[2*o+1]>=97&&r[2*o+1]<=102))return null;t[o]=t[o]|r[2*o+1]-97+10}}return t},Hex.utf8StrToHex=function(e){for(var n=encodeURIComponent(e),r=unescape(n),t=r.length,o=[],u=0;u<t;u++)o[u]=r.charCodeAt(u).toString(16);return o.join("")},Hex.utf8StrToBytes=function(e){for(var n=encodeURIComponent(e),r=unescape(n),t=r.length,o=[],u=0;u<t;u++)o[u]=r.charCodeAt(u);return o},Hex.hexToUtf8Str=function(e){for(var n=Hex.decode(e),r=[],t=0;t<n.length;t++)r.push(String.fromCharCode(n[t]));return decodeURIComponent(escape(r.join("")))},Hex.bytesToUtf8Str=function(e){for(var n=e,r=[],t=0;t<n.length;t++)r.push(String.fromCharCode(n[t]));return decodeURIComponent(escape(r.join("")))},Hex.toCharCodeArray=function(e){for(var n=new Array(e.length),r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n};
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.