<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>CSV Renderer</title>
  <style>
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
    body {
      background: white;
      overflow: hidden;
    }
    #container {
      width: 100%;
      min-height: 100vh;
      display: flex;
      justify-content: flex-start;
      align-items: flex-start;
    }
    #csv-container {
      padding: 20px;
    }
    table {
      border-collapse: collapse;
      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
      font-size: 14px;
    }
    th, td {
      border: 1px solid #ddd;
      padding: 8px 12px;
      text-align: left;
    }
    th {
      background-color: #f6f8fa;
      font-weight: 600;
    }
    tr:nth-child(even) {
      background-color: #f9f9f9;
    }
    tr:hover {
      background-color: #f5f5f5;
    }
  </style>
  <script type="module" crossorigin>(function(){const P=document.createElement("link").relList;if(P&&P.supports&&P.supports("modulepreload"))return;for(const y of document.querySelectorAll('link[rel="modulepreload"]'))m(y);new MutationObserver(y=>{for(const b of y)if(b.type==="childList")for(const U of b.addedNodes)U.tagName==="LINK"&&U.rel==="modulepreload"&&m(U)}).observe(document,{childList:!0,subtree:!0});function Y(y){const b={};return y.integrity&&(b.integrity=y.integrity),y.referrerPolicy&&(b.referrerPolicy=y.referrerPolicy),y.crossOrigin==="use-credentials"?b.credentials="include":y.crossOrigin==="anonymous"?b.credentials="omit":b.credentials="same-origin",b}function m(y){if(y.ep)return;y.ep=!0;const b=Y(y);fetch(y.href,b)}})();var Ce=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Re(x){return x&&x.__esModule&&Object.prototype.hasOwnProperty.call(x,"default")?x.default:x}var be={exports:{}};/* @license
Papa Parse
v5.5.3
https://github.com/mholt/PapaParse
License: MIT
*/(function(x,P){((Y,m)=>{x.exports=m()})(Ce,function Y(){var m=typeof self<"u"?self:typeof window<"u"?window:m!==void 0?m:{},y,b=!m.document&&!!m.postMessage,U=m.IS_PAPA_WORKER||!1,Z={},he=0,a={};function B(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine="",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(t){var r=ce(t);r.chunkSize=parseInt(r.chunkSize),t.step||t.chunk||(r.chunkSize=null),this._handle=new le(r),(this._handle.streamer=this)._config=r}.call(this,e),this.parseChunk=function(t,r){var i=parseInt(this._config.skipFirstNLines)||0;if(this.isFirstChunk&&0<i){let h=this._config.newline;h||(n=this._config.quoteChar||'"',h=this._handle.guessLineEndings(t,n)),t=[...t.split(h).slice(i)].join(h)}this.isFirstChunk&&w(this._config.beforeFirstChunk)&&(n=this._config.beforeFirstChunk(t))!==void 0&&(t=n),this.isFirstChunk=!1,this._halted=!1;var i=this._partialLine+t,n=(this._partialLine="",this._handle.parse(i,this._baseIndex,!this._finished));if(!this._handle.paused()&&!this._handle.aborted()){if(t=n.meta.cursor,i=(this._finished||(this._partialLine=i.substring(t-this._baseIndex),this._baseIndex=t),n&&n.data&&(this._rowCount+=n.data.length),this._finished||this._config.preview&&this._rowCount>=this._config.preview),U)m.postMessage({results:n,workerId:a.WORKER_ID,finished:i});else if(w(this._config.chunk)&&!r){if(this._config.chunk(n,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);this._completeResults=n=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),this._completed||!i||!w(this._config.complete)||n&&n.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),i||n&&n.meta.paused||this._nextChunk(),n}this._halted=!0},this._sendError=function(t){w(this._config.error)?this._config.error(t):U&&this._config.error&&m.postMessage({workerId:a.WORKER_ID,error:t,finished:!1})}}function X(e){var t;(e=e||{}).chunkSize||(e.chunkSize=a.RemoteChunkSize),B.call(this,e),this._nextChunk=b?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(r){this._input=r,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(t=new XMLHttpRequest,this._config.withCredentials&&(t.withCredentials=this._config.withCredentials),b||(t.onload=re(this._chunkLoaded,this),t.onerror=re(this._chunkError,this)),t.open(this._config.downloadRequestBody?"POST":"GET",this._input,!b),this._config.downloadRequestHeaders){var r,i=this._config.downloadRequestHeaders;for(r in i)t.setRequestHeader(r,i[r])}var n;this._config.chunkSize&&(n=this._start+this._config.chunkSize-1,t.setRequestHeader("Range","bytes="+this._start+"-"+n));try{t.send(this._config.downloadRequestBody)}catch(h){this._chunkError(h.message)}b&&t.status===0&&this._chunkError()}},this._chunkLoaded=function(){t.readyState===4&&(t.status<200||400<=t.status?this._chunkError():(this._start+=this._config.chunkSize||t.responseText.length,this._finished=!this._config.chunkSize||this._start>=(r=>(r=r.getResponseHeader("Content-Range"))!==null?parseInt(r.substring(r.lastIndexOf("/")+1)):-1)(t),this.parseChunk(t.responseText)))},this._chunkError=function(r){r=t.statusText||r,this._sendError(new Error(r))}}function ee(e){(e=e||{}).chunkSize||(e.chunkSize=a.LocalChunkSize),B.call(this,e);var t,r,i=typeof FileReader<"u";this.stream=function(n){this._input=n,r=n.slice||n.webkitSlice||n.mozSlice,i?((t=new FileReader).onload=re(this._chunkLoaded,this),t.onerror=re(this._chunkError,this)):t=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var n=this._input,h=(this._config.chunkSize&&(h=Math.min(this._start+this._config.chunkSize,this._input.size),n=r.call(n,this._start,h)),t.readAsText(n,this._config.encoding));i||this._chunkLoaded({target:{result:h}})},this._chunkLoaded=function(n){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(n.target.result)},this._chunkError=function(){this._sendError(t.error)}}function te(e){var t;B.call(this,e=e||{}),this.stream=function(r){return t=r,this._nextChunk()},this._nextChunk=function(){var r,i;if(!this._finished)return r=this._config.chunkSize,t=r?(i=t.substring(0,r),t.substring(r)):(i=t,""),this._finished=!t,this.parseChunk(i)}}function ne(e){B.call(this,e=e||{});var t=[],r=!0,i=!1;this.pause=function(){B.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){B.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(n){this._input=n,this._input.on("data",this._streamData),this._input.on("end",this._streamEnd),this._input.on("error",this._streamError)},this._checkIsFinished=function(){i&&t.length===1&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):r=!0},this._streamData=re(function(n){try{t.push(typeof n=="string"?n:n.toString(this._config.encoding)),r&&(r=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(h){this._streamError(h)}},this),this._streamError=re(function(n){this._streamCleanUp(),this._sendError(n)},this),this._streamEnd=re(function(){this._streamCleanUp(),i=!0,this._streamData("")},this),this._streamCleanUp=re(function(){this._input.removeListener("data",this._streamData),this._input.removeListener("end",this._streamEnd),this._input.removeListener("error",this._streamError)},this)}function le(e){var t,r,i,n,h=Math.pow(2,53),L=-h,q=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,W=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/,f=this,R=0,o=0,j=!1,u=!1,c=[],s={data:[],errors:[],meta:{}};function T(p){return e.skipEmptyLines==="greedy"?p.join("").trim()==="":p.length===1&&p[0].length===0}function O(){if(s&&i&&(K("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+a.DefaultDelimiter+"'"),i=!1),e.skipEmptyLines&&(s.data=s.data.filter(function(v){return!T(v)})),M()){let v=function(D,k){w(e.transformHeader)&&(D=e.transformHeader(D,k)),c.push(D)};var l=v;if(s)if(Array.isArray(s.data[0])){for(var p=0;M()&&p<s.data.length;p++)s.data[p].forEach(v);s.data.splice(0,1)}else s.data.forEach(v)}function g(v,D){for(var k=e.header?{}:[],E=0;E<v.length;E++){var d=E,z=v[E],z=((_,C)=>(I=>(e.dynamicTypingFunction&&e.dynamicTyping[I]===void 0&&(e.dynamicTyping[I]=e.dynamicTypingFunction(I)),(e.dynamicTyping[I]||e.dynamicTyping)===!0))(_)?C==="true"||C==="TRUE"||C!=="false"&&C!=="FALSE"&&((I=>{if(q.test(I)&&(I=parseFloat(I),L<I&&I<h))return 1})(C)?parseFloat(C):W.test(C)?new Date(C):C===""?null:C):C)(d=e.header?E>=c.length?"__parsed_extra":c[E]:d,z=e.transform?e.transform(z,d):z);d==="__parsed_extra"?(k[d]=k[d]||[],k[d].push(z)):k[d]=z}return e.header&&(E>c.length?K("FieldMismatch","TooManyFields","Too many fields: expected "+c.length+" fields but parsed "+E,o+D):E<c.length&&K("FieldMismatch","TooFewFields","Too few fields: expected "+c.length+" fields but parsed "+E,o+D)),k}var S;s&&(e.header||e.dynamicTyping||e.transform)&&(S=1,!s.data.length||Array.isArray(s.data[0])?(s.data=s.data.map(g),S=s.data.length):s.data=g(s.data,0),e.header&&s.meta&&(s.meta.fields=c),o+=S)}function M(){return e.header&&c.length===0}function K(p,g,S,l){p={type:p,code:g,message:S},l!==void 0&&(p.row=l),s.errors.push(p)}w(e.step)&&(n=e.step,e.step=function(p){s=p,M()?O():(O(),s.data.length!==0&&(R+=p.data.length,e.preview&&R>e.preview?r.abort():(s.data=s.data[0],n(s,f))))}),this.parse=function(p,g,S){var l=e.quoteChar||'"',l=(e.newline||(e.newline=this.guessLineEndings(p,l)),i=!1,e.delimiter?w(e.delimiter)&&(e.delimiter=e.delimiter(p),s.meta.delimiter=e.delimiter):((l=((v,D,k,E,d)=>{var z,_,C,I;d=d||[",","	","|",";",a.RECORD_SEP,a.UNIT_SEP];for(var ie=0;ie<d.length;ie++){for(var V,oe=d[ie],H=0,$=0,F=0,N=(C=void 0,new G({comments:E,delimiter:oe,newline:D,preview:10}).parse(v)),J=0;J<N.data.length;J++)k&&T(N.data[J])?F++:(V=N.data[J].length,$+=V,C===void 0?C=V:0<V&&(H+=Math.abs(V-C),C=V));0<N.data.length&&($/=N.data.length-F),(_===void 0||H<=_)&&(I===void 0||I<$)&&1.99<$&&(_=H,z=oe,I=$)}return{successful:!!(e.delimiter=z),bestDelimiter:z}})(p,e.newline,e.skipEmptyLines,e.comments,e.delimitersToGuess)).successful?e.delimiter=l.bestDelimiter:(i=!0,e.delimiter=a.DefaultDelimiter),s.meta.delimiter=e.delimiter),ce(e));return e.preview&&e.header&&l.preview++,t=p,r=new G(l),s=r.parse(t,g,S),O(),j?{meta:{paused:!0}}:s||{meta:{paused:!1}}},this.paused=function(){return j},this.pause=function(){j=!0,r.abort(),t=w(e.chunk)?"":t.substring(r.getCharIndex())},this.resume=function(){f.streamer._halted?(j=!1,f.streamer.parseChunk(t,!0)):setTimeout(f.resume,3)},this.aborted=function(){return u},this.abort=function(){u=!0,r.abort(),s.meta.aborted=!0,w(e.complete)&&e.complete(s),t=""},this.guessLineEndings=function(v,l){v=v.substring(0,1048576);var l=new RegExp(A(l)+"([^]*?)"+A(l),"gm"),S=(v=v.replace(l,"")).split("\r"),l=v.split(`
`),v=1<l.length&&l[0].length<S[0].length;if(S.length===1||v)return`
`;for(var D=0,k=0;k<S.length;k++)S[k][0]===`
`&&D++;return D>=S.length/2?`\r
`:"\r"}}function A(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function G(e){var t=(e=e||{}).delimiter,r=e.newline,i=e.comments,n=e.step,h=e.preview,L=e.fastMode,q=null,W=!1,f=e.quoteChar==null?'"':e.quoteChar,R=f;if(e.escapeChar!==void 0&&(R=e.escapeChar),(typeof t!="string"||-1<a.BAD_DELIMITERS.indexOf(t))&&(t=","),i===t)throw new Error("Comment character same as delimiter");i===!0?i="#":(typeof i!="string"||-1<a.BAD_DELIMITERS.indexOf(i))&&(i=!1),r!==`
`&&r!=="\r"&&r!==`\r
`&&(r=`
`);var o=0,j=!1;this.parse=function(u,c,s){if(typeof u!="string")throw new Error("Input must be a string");var T=u.length,O=t.length,M=r.length,K=i.length,p=w(n),g=[],S=[],l=[],v=o=0;if(!u)return H();if(L||L!==!1&&u.indexOf(f)===-1){for(var D=u.split(r),k=0;k<D.length;k++){if(l=D[k],o+=l.length,k!==D.length-1)o+=r.length;else if(s)return H();if(!i||l.substring(0,K)!==i){if(p){if(g=[],I(l.split(t)),$(),j)return H()}else I(l.split(t));if(h&&h<=k)return g=g.slice(0,h),H(!0)}}return H()}for(var E=u.indexOf(t,o),d=u.indexOf(r,o),z=new RegExp(A(R)+A(f),"g"),_=u.indexOf(f,o);;)if(u[o]===f)for(_=o,o++;;){if((_=u.indexOf(f,_+1))===-1)return s||S.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:g.length,index:o}),V();if(_===T-1)return V(u.substring(o,_).replace(z,f));if(f===R&&u[_+1]===R)_++;else if(f===R||_===0||u[_-1]!==R){E!==-1&&E<_+1&&(E=u.indexOf(t,_+1));var C=ie((d=d!==-1&&d<_+1?u.indexOf(r,_+1):d)===-1?E:Math.min(E,d));if(u.substr(_+1+C,O)===t){l.push(u.substring(o,_).replace(z,f)),u[o=_+1+C+O]!==f&&(_=u.indexOf(f,o)),E=u.indexOf(t,o),d=u.indexOf(r,o);break}if(C=ie(d),u.substring(_+1+C,_+1+C+M)===r){if(l.push(u.substring(o,_).replace(z,f)),oe(_+1+C+M),E=u.indexOf(t,o),_=u.indexOf(f,o),p&&($(),j))return H();if(h&&g.length>=h)return H(!0);break}S.push({type:"Quotes",code:"InvalidQuotes",message:"Trailing quote on quoted field is malformed",row:g.length,index:o}),_++}}else if(i&&l.length===0&&u.substring(o,o+K)===i){if(d===-1)return H();o=d+M,d=u.indexOf(r,o),E=u.indexOf(t,o)}else if(E!==-1&&(E<d||d===-1))l.push(u.substring(o,E)),o=E+O,E=u.indexOf(t,o);else{if(d===-1)break;if(l.push(u.substring(o,d)),oe(d+M),p&&($(),j))return H();if(h&&g.length>=h)return H(!0)}return V();function I(F){g.push(F),v=o}function ie(F){var N=0;return N=F!==-1&&(F=u.substring(_+1,F))&&F.trim()===""?F.length:N}function V(F){return s||(F===void 0&&(F=u.substring(o)),l.push(F),o=T,I(l),p&&$()),H()}function oe(F){o=F,I(l),l=[],d=u.indexOf(r,o)}function H(F){if(e.header&&!c&&g.length&&!W){var N=g[0],J=Object.create(null),pe=new Set(N);let ye=!1;for(let se=0;se<N.length;se++){let Q=N[se];if(J[Q=w(e.transformHeader)?e.transformHeader(Q,se):Q]){let ue,Ee=J[Q];for(;ue=Q+"_"+Ee,Ee++,pe.has(ue););pe.add(ue),N[se]=ue,J[Q]++,ye=!0,(q=q===null?{}:q)[ue]=Q}else J[Q]=1,N[se]=Q;pe.add(Q)}ye&&console.warn("Duplicate headers found and renamed."),W=!0}return{data:g,errors:S,meta:{delimiter:t,linebreak:r,aborted:j,truncated:!!F,cursor:v+(c||0),renamedHeaders:q}}}function $(){n(H()),g=[],S=[]}},this.abort=function(){j=!0},this.getCharIndex=function(){return o}}function fe(e){var t=e.data,r=Z[t.workerId],i=!1;if(t.error)r.userError(t.error,t.file);else if(t.results&&t.results.data){var n={abort:function(){i=!0,ae(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:me,resume:me};if(w(r.userStep)){for(var h=0;h<t.results.data.length&&(r.userStep({data:t.results.data[h],errors:t.results.errors,meta:t.results.meta},n),!i);h++);delete t.results}else w(r.userChunk)&&(r.userChunk(t.results,n,t.file),delete t.results)}t.finished&&!i&&ae(t.workerId,t.results)}function ae(e,t){var r=Z[e];w(r.userComplete)&&r.userComplete(t),r.terminate(),delete Z[e]}function me(){throw new Error("Not implemented.")}function ce(e){if(typeof e!="object"||e===null)return e;var t,r=Array.isArray(e)?[]:{};for(t in e)r[t]=ce(e[t]);return r}function re(e,t){return function(){e.apply(t,arguments)}}function w(e){return typeof e=="function"}return a.parse=function(e,t){var r=(t=t||{}).dynamicTyping||!1;if(w(r)&&(t.dynamicTypingFunction=r,r={}),t.dynamicTyping=r,t.transform=!!w(t.transform)&&t.transform,!t.worker||!a.WORKERS_SUPPORTED)return r=null,a.NODE_STREAM_INPUT,typeof e=="string"?(e=(i=>i.charCodeAt(0)!==65279?i:i.slice(1))(e),r=new(t.download?X:te)(t)):e.readable===!0&&w(e.read)&&w(e.on)?r=new ne(t):(m.File&&e instanceof File||e instanceof Object)&&(r=new ee(t)),r.stream(e);(r=(()=>{var i;return!!a.WORKERS_SUPPORTED&&(i=(()=>{var n=m.URL||m.webkitURL||null,h=Y.toString();return a.BLOB_URL||(a.BLOB_URL=n.createObjectURL(new Blob(["var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; ","(",h,")();"],{type:"text/javascript"})))})(),(i=new m.Worker(i)).onmessage=fe,i.id=he++,Z[i.id]=i)})()).userStep=t.step,r.userChunk=t.chunk,r.userComplete=t.complete,r.userError=t.error,t.step=w(t.step),t.chunk=w(t.chunk),t.complete=w(t.complete),t.error=w(t.error),delete t.worker,r.postMessage({input:e,config:t,workerId:r.id})},a.unparse=function(e,t){var r=!1,i=!0,n=",",h=`\r
`,L='"',q=L+L,W=!1,f=null,R=!1,o=((()=>{if(typeof t=="object"){if(typeof t.delimiter!="string"||a.BAD_DELIMITERS.filter(function(c){return t.delimiter.indexOf(c)!==-1}).length||(n=t.delimiter),typeof t.quotes!="boolean"&&typeof t.quotes!="function"&&!Array.isArray(t.quotes)||(r=t.quotes),typeof t.skipEmptyLines!="boolean"&&typeof t.skipEmptyLines!="string"||(W=t.skipEmptyLines),typeof t.newline=="string"&&(h=t.newline),typeof t.quoteChar=="string"&&(L=t.quoteChar),typeof t.header=="boolean"&&(i=t.header),Array.isArray(t.columns)){if(t.columns.length===0)throw new Error("Option columns is empty");f=t.columns}t.escapeChar!==void 0&&(q=t.escapeChar+L),t.escapeFormulae instanceof RegExp?R=t.escapeFormulae:typeof t.escapeFormulae=="boolean"&&t.escapeFormulae&&(R=/^[=+\-@\t\r].*$/)}})(),new RegExp(A(L),"g"));if(typeof e=="string"&&(e=JSON.parse(e)),Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return j(null,e,W);if(typeof e[0]=="object")return j(f||Object.keys(e[0]),e,W)}else if(typeof e=="object")return typeof e.data=="string"&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields||f),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:typeof e.data[0]=="object"?Object.keys(e.data[0]):[]),Array.isArray(e.data[0])||typeof e.data[0]=="object"||(e.data=[e.data])),j(e.fields||[],e.data||[],W);throw new Error("Unable to serialize unrecognized input");function j(c,s,T){var O="",M=(typeof c=="string"&&(c=JSON.parse(c)),typeof s=="string"&&(s=JSON.parse(s)),Array.isArray(c)&&0<c.length),K=!Array.isArray(s[0]);if(M&&i){for(var p=0;p<c.length;p++)0<p&&(O+=n),O+=u(c[p],p);0<s.length&&(O+=h)}for(var g=0;g<s.length;g++){var S=(M?c:s[g]).length,l=!1,v=M?Object.keys(s[g]).length===0:s[g].length===0;if(T&&!M&&(l=T==="greedy"?s[g].join("").trim()==="":s[g].length===1&&s[g][0].length===0),T==="greedy"&&M){for(var D=[],k=0;k<S;k++){var E=K?c[k]:k;D.push(s[g][E])}l=D.join("").trim()===""}if(!l){for(var d=0;d<S;d++){0<d&&!v&&(O+=n);var z=M&&K?c[d]:d;O+=u(s[g][z],d)}g<s.length-1&&(!T||0<S&&!v)&&(O+=h)}}return O}function u(c,s){var T,O;return c==null?"":c.constructor===Date?JSON.stringify(c).slice(1,25):(O=!1,R&&typeof c=="string"&&R.test(c)&&(c="'"+c,O=!0),T=c.toString().replace(o,q),(O=O||r===!0||typeof r=="function"&&r(c,s)||Array.isArray(r)&&r[s]||((M,K)=>{for(var p=0;p<K.length;p++)if(-1<M.indexOf(K[p]))return!0;return!1})(T,a.BAD_DELIMITERS)||-1<T.indexOf(n)||T.charAt(0)===" "||T.charAt(T.length-1)===" ")?L+T+L:T)}},a.RECORD_SEP="",a.UNIT_SEP="",a.BYTE_ORDER_MARK="\uFEFF",a.BAD_DELIMITERS=["\r",`
`,'"',a.BYTE_ORDER_MARK],a.WORKERS_SUPPORTED=!b&&!!m.Worker,a.NODE_STREAM_INPUT=1,a.LocalChunkSize=10485760,a.RemoteChunkSize=5242880,a.DefaultDelimiter=",",a.Parser=G,a.ParserHandle=le,a.NetworkStreamer=X,a.FileStreamer=ee,a.StringStreamer=te,a.ReadableStreamStreamer=ne,m.jQuery&&((y=m.jQuery).fn.parse=function(e){var t=e.config||{},r=[];return this.each(function(h){if(!(y(this).prop("tagName").toUpperCase()==="INPUT"&&y(this).attr("type").toLowerCase()==="file"&&m.FileReader)||!this.files||this.files.length===0)return!0;for(var L=0;L<this.files.length;L++)r.push({file:this.files[L],inputElem:this,instanceConfig:y.extend({},t)})}),i(),this;function i(){if(r.length===0)w(e.complete)&&e.complete();else{var h,L,q,W,f=r[0];if(w(e.before)){var R=e.before(f.file,f.inputElem);if(typeof R=="object"){if(R.action==="abort")return h="AbortError",L=f.file,q=f.inputElem,W=R.reason,void(w(e.error)&&e.error({name:h},L,q,W));if(R.action==="skip")return void n();typeof R.config=="object"&&(f.instanceConfig=y.extend(f.instanceConfig,R.config))}else if(R==="skip")return void n()}var o=f.instanceConfig.complete;f.instanceConfig.complete=function(j){w(o)&&o(j,f.file,f.inputElem),n()},a.parse(f.file,f.instanceConfig)}}function n(){r.splice(0,1),i()}}),U&&(m.onmessage=function(e){e=e.data,a.WORKER_ID===void 0&&e&&(a.WORKER_ID=e.workerId),typeof e.input=="string"?m.postMessage({workerId:a.WORKER_ID,results:a.parse(e.input,e.config),finished:!0}):(m.File&&e.input instanceof File||e.input instanceof Object)&&(e=a.parse(e.input,e.config))&&m.postMessage({workerId:a.WORKER_ID,results:e,finished:!0})}),(X.prototype=Object.create(B.prototype)).constructor=X,(ee.prototype=Object.create(B.prototype)).constructor=ee,(te.prototype=Object.create(te.prototype)).constructor=te,(ne.prototype=Object.create(B.prototype)).constructor=ne,a})})(be);var Se=be.exports;const Oe=Re(Se),ve="FILE_BASE64_PLACEHOLDER",xe=1;let _e=globalThis.fileBase64||ve,Le=globalThis.pageNumber||xe;function Te(){if(!document.getElementById("container"))return;const P=document.createElement("div");P.style.cssText=`
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: white;
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 1000;
  `,P.innerHTML=`
    <div style="padding: 2rem; text-align: center;">
      <h2>Local Testing Mode</h2>
      <p>Select a CSV file to render:</p>
      <input type="file" accept=".csv,.tsv" id="file-input" style="margin: 1rem 0;">
    </div>
  `,document.body.appendChild(P),document.getElementById("file-input").addEventListener("change",async m=>{const y=m.target.files?.[0];if(!y)return;const b=new FileReader;b.onload=async U=>{_e=(U.target?.result).split(",")[1],P.remove(),await ke()},b.readAsDataURL(y)})}function we(x){const P=document.createElement("div");return P.textContent=x,P.innerHTML}const ge=960,de=1280;async function ke(){try{const x=document.getElementById("csv-container");if(!x)throw new Error("CSV container element not found");if(_e===ve)return Te(),{width:ge,height:de,pageCount:1,pageNumber:1,scale:1};x.style.width=`${ge}px`;const P=atob(_e),Y=new Uint8Array(P.length);for(let A=0;A<P.length;A++)Y[A]=P.charCodeAt(A);const m=new TextDecoder("utf-8").decode(Y),y=Oe.parse(m,{header:!1,skipEmptyLines:!0});y.errors.length>0&&console.warn("CSV parsing warnings:",y.errors);const b=y.data;if(b.length===0)throw new Error("CSV file is empty");const U=document.createElement("table");U.style.width="100%";const Z=document.createElement("thead"),he=document.createElement("tr");b[0].forEach(A=>{const G=document.createElement("th");G.innerHTML=we(A),he.appendChild(G)}),Z.appendChild(he),U.appendChild(Z);const a=document.createElement("tbody");for(let A=1;A<b.length;A++){const G=document.createElement("tr");b[A].forEach(fe=>{const ae=document.createElement("td");ae.innerHTML=we(fe),G.appendChild(ae)}),a.appendChild(G)}U.appendChild(a),x.appendChild(U),await new Promise(A=>setTimeout(A,100));const B=x.scrollHeight,X=Math.max(1,Math.ceil(B/de)),ee=Math.max(1,Math.min(Le,X)),te=(ee-1)*de,ne=B-te,le=Math.min(de,ne);return window.scrollTo(0,te),console.log(`CSV rendered successfully (page ${ee}/${X})`),{width:ge,height:le,pageCount:X,pageNumber:ee,scale:2}}catch(x){throw console.error("Error rendering CSV:",x),x}}window.renderComplete=ke();</script>
</head>
<body>
  <div id="container">
    <div id="csv-container"></div>
  </div>
</body>
</html>
