Spacelab 0.28.0__py3-none-any.whl

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.
Files changed (62) hide show
  1. spacelab/__init__.py +6 -0
  2. spacelab/__main__.py +3 -0
  3. spacelab/cli.py +97 -0
  4. spacelab/hlod/__init__.py +8 -0
  5. spacelab/hlod/__main__.py +5 -0
  6. spacelab/hlod/build.py +349 -0
  7. spacelab/hlod/cells.py +82 -0
  8. spacelab/hlod/cli.py +90 -0
  9. spacelab/hlod/hashing.py +38 -0
  10. spacelab/hlod/hilbert.py +91 -0
  11. spacelab/hlod/read.py +150 -0
  12. spacelab/hlod/verify.py +142 -0
  13. spacelab/prep_spatialdata.py +700 -0
  14. spacelab/server.py +130 -0
  15. spacelab/static/AI_lens_black.png +0 -0
  16. spacelab/static/ai-new-logo.png +0 -0
  17. spacelab/static/aifi_logo.png +0 -0
  18. spacelab/static/assets/AllenInstitutePlusText-Bold-DxLtQ4oE.woff2 +0 -0
  19. spacelab/static/assets/AllenInstitutePlusText-BoldItalic-mxzHQhQO.woff2 +0 -0
  20. spacelab/static/assets/AllenInstitutePlusText-Italic-CaKmxpsW.woff2 +0 -0
  21. spacelab/static/assets/AllenInstitutePlusText-Light-DUThXl1m.woff2 +0 -0
  22. spacelab/static/assets/AllenInstitutePlusText-LightItalic-CxfKknzG.woff2 +0 -0
  23. spacelab/static/assets/AllenInstitutePlusText-Regular-B0ryviHQ.woff2 +0 -0
  24. spacelab/static/assets/AllenInstitutePlusText-Semibold-3PoiDF1d.woff2 +0 -0
  25. spacelab/static/assets/AllenInstitutePlusText-SemiboldItalic-uXaVqnFo.woff2 +0 -0
  26. spacelab/static/assets/blosc-BKQbfHyB.js +18 -0
  27. spacelab/static/assets/blosc-j6ygecpn.js +18 -0
  28. spacelab/static/assets/chunk-INHXZS53-D3tQiqtZ.js +2 -0
  29. spacelab/static/assets/chunk-INHXZS53-QjxmivJp.js +2 -0
  30. spacelab/static/assets/deflate-BRVR_fNk.js +2 -0
  31. spacelab/static/assets/hlodTranscripts.worker-CjhNLk56.js +2 -0
  32. spacelab/static/assets/index-BT-mDgg2.js +5025 -0
  33. spacelab/static/assets/index-CNIqsj6m.css +1 -0
  34. spacelab/static/assets/jpeg-JUDfHHDo.js +2 -0
  35. spacelab/static/assets/lerc-CXQdKTps.js +2 -0
  36. spacelab/static/assets/lz4-C2MQfzIA.js +16 -0
  37. spacelab/static/assets/lz4-rzy_Siro.js +16 -0
  38. spacelab/static/assets/lzw-DBCCrYEo.js +2 -0
  39. spacelab/static/assets/packbits-LrtZ2mhj.js +2 -0
  40. spacelab/static/assets/pako.esm-C69tvH9t.js +2 -0
  41. spacelab/static/assets/polygons.worker-ClOPdWlW.js +2 -0
  42. spacelab/static/assets/raw-lPmjnySZ.js +2 -0
  43. spacelab/static/assets/spatialdataExpression.worker-D4W_OHS3.js +4 -0
  44. spacelab/static/assets/spatialdataShapes.worker-DQV1zeTt.js +974 -0
  45. spacelab/static/assets/spatialdataTranscripts.worker-DH9L-MwZ.js +974 -0
  46. spacelab/static/assets/transcripts.worker-CtxyO4n3.js +2 -0
  47. spacelab/static/assets/umap.worker-BPHuoLPV.js +2 -0
  48. spacelab/static/assets/webimage-xg0Pp5Jv.js +2 -0
  49. spacelab/static/assets/zstd-Cp7BEDDH.js +16 -0
  50. spacelab/static/assets/zstd-WlDjm0Vu.js +16 -0
  51. spacelab/static/blurred-bg.jpg +0 -0
  52. spacelab/static/favicon.ico +0 -0
  53. spacelab/static/index.html +22 -0
  54. spacelab/static/logo192.png +0 -0
  55. spacelab/static/logo512.png +0 -0
  56. spacelab/static/manifest.json +15 -0
  57. spacelab/static/robots.txt +3 -0
  58. spacelab-0.28.0.dist-info/METADATA +30 -0
  59. spacelab-0.28.0.dist-info/RECORD +62 -0
  60. spacelab-0.28.0.dist-info/WHEEL +4 -0
  61. spacelab-0.28.0.dist-info/entry_points.txt +2 -0
  62. spacelab-0.28.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,974 @@
1
+ function ns(e,t){return{...e,...t,headers:{...e.headers,...t.headers}}}function Jn(e,t){const n=typeof e=="string"?new URL(e):e;n.pathname.endsWith("/")||(n.pathname+="/");const r=new URL(t.slice(1),n);return r.search=n.search,r}async function Kn(e){if(e.status!==404){if(e.status===200||e.status===206)return new Uint8Array(await e.arrayBuffer());throw new Error(`Unexpected response status ${e.status} ${e.statusText}`)}}class rs{url;#e;#t;#n;constructor(t,n={}){this.url=t,this.#e=n.fetch??(r=>fetch(r)),this.#t=n.overrides??{},this.#n=n.useSuffixRequest??!1}#r(t,n){return new Request(t,ns(this.#t,n))}async get(t,n={}){let r=Jn(this.url,t).href,i=this.#r(r,n),s=await this.#e(i);return Kn(s)}async getRange(t,n,r={}){let i=Jn(this.url,t),s;if("suffixLength"in n)s=await this.#i(i,n.suffixLength,r);else{let o={...r,headers:{...r.headers,Range:`bytes=${n.offset}-${n.offset+n.length-1}`}},f=this.#r(i,o);s=await this.#e(f)}return Kn(s)}async#i(t,n,r){if(this.#n){let u={...r,headers:{...r.headers,Range:`bytes=-${n}`}};return this.#e(this.#r(t,u))}let i=this.#r(t,{...r,method:"HEAD"}),s=await this.#e(i);if(!s.ok)return s;let o=s.headers.get("Content-Length"),f=Number(o),a=f-n,c={...r,headers:{...r.headers,Range:`bytes=${a}-${f-1}`}};return this.#e(this.#r(t,c))}}class Oe extends Error{}class De extends Oe{_tag="NotFoundError";name="NotFoundError";path;found;constructor(t,n={}){super(`Not found: ${t}`,{cause:n.cause}),this.path=n.path,this.found=n.found}}class Y extends Oe{_tag="InvalidMetadataError";name="InvalidMetadataError";path;constructor(t,n={}){super(t,{cause:n.cause}),this.path=n.path}}class is extends Oe{_tag="UnknownCodecError";name="UnknownCodecError";codec;constructor(t){super(`Unknown codec: ${t}`),this.codec=t}}class ss extends Oe{_tag="CodecPipelineError";name="CodecPipelineError";direction;codec;chunkPath;constructor(t){const n=[`Failed to ${t.direction} chunk`,t.codec&&`via codec "${t.codec}"`,t.chunkPath&&`at ${t.chunkPath}`].filter(Boolean);super(n.join(" "),{cause:t.cause}),this.direction=t.direction,this.codec=t.codec,this.chunkPath=t.chunkPath}}class ot extends Oe{_tag="InvalidSelectionError";name="InvalidSelectionError"}class vn extends Oe{_tag="UnsupportedError";name="UnsupportedError";feature;constructor(t){super(`Unsupported: ${t}`),this.feature=t}}function be(e){return()=>{throw new vn(`${e} encode`)}}class Ct{kind="array_to_array";constructor(t,n){if(t.keepbits<0)throw new Y("keepbits must be zero or positive")}static fromConfig(t,n){return new Ct(t,n)}encode=be("bitround");decode(t){return t}}function Sn(e){return e instanceof ArrayBuffer||e instanceof SharedArrayBuffer}class ai{#e;constructor(t,n,r){typeof t=="number"?this.#e=new Uint8Array(t):Sn(t)?this.#e=new Uint8Array(t,n,r):this.#e=new Uint8Array(Array.from(t,i=>i?1:0))}get BYTES_PER_ELEMENT(){return 1}get byteOffset(){return this.#e.byteOffset}get byteLength(){return this.#e.byteLength}get buffer(){return this.#e.buffer}get length(){return this.#e.length}get(t){let n=this.#e[t];return typeof n=="number"?n!==0:n}set(t,n){this.#e[t]=n?1:0}fill(t){this.#e.fill(t?1:0)}*[Symbol.iterator](){for(let t=0;t<this.length;t++)yield this.get(t)}}class xn{_data;chars;#e;constructor(t,n,r,i){if(this.chars=t,this.#e=new TextEncoder,typeof n=="number")this._data=new Uint8Array(n*t);else if(Sn(n))i&&(i=i*t),this._data=new Uint8Array(n,r,i);else{let s=Array.from(n);this._data=new Uint8Array(s.length*t);for(let o=0;o<s.length;o++)this.set(o,s[o])}}get BYTES_PER_ELEMENT(){return this.chars}get byteOffset(){return this._data.byteOffset}get byteLength(){return this._data.byteLength}get buffer(){return this._data.buffer}get length(){return this.byteLength/this.BYTES_PER_ELEMENT}get(t){const n=new Uint8Array(this.buffer,this.byteOffset+this.chars*t,this.chars);return new TextDecoder().decode(n).replace(/\x00/g,"")}set(t,n){const r=new Uint8Array(this.buffer,this.byteOffset+this.chars*t,this.chars);r.fill(0),r.set(this.#e.encode(n))}fill(t){const n=this.#e.encode(t);for(let r=0;r<this.length;r++)this._data.set(n,r*this.chars)}*[Symbol.iterator](){for(let t=0;t<this.length;t++)yield this.get(t)}}class ft{#e;chars;constructor(t,n,r,i){if(this.chars=t,typeof n=="number")this.#e=new Int32Array(n*t);else if(Sn(n))i&&(i*=t),this.#e=new Int32Array(n,r,i);else{const s=n,o=new ft(t,1);this.#e=new Int32Array(function*(){for(let f of s)o.set(0,f),yield*o.#e}())}}get BYTES_PER_ELEMENT(){return this.#e.BYTES_PER_ELEMENT*this.chars}get byteLength(){return this.#e.byteLength}get byteOffset(){return this.#e.byteOffset}get buffer(){return this.#e.buffer}get length(){return this.#e.length/this.chars}get(t){const n=this.chars*t;let r="";for(let i=0;i<this.chars;i++)r+=String.fromCodePoint(this.#e[n+i]);return r.replace(/\u0000/g,"")}set(t,n){const r=this.chars*t,i=this.#e.subarray(r,r+this.chars);i.fill(0);for(let s=0;s<this.chars;s++)i[s]=n.codePointAt(s)??0}fill(t){this.set(0,t);let n=this.#e.subarray(0,this.chars);for(let r=1;r<this.length;r++)this.#e.set(n,r*this.chars)}*[Symbol.iterator](){for(let t=0;t<this.length;t++)yield this.get(t)}}function ci(){if(typeof SharedArrayBuffer>"u")throw new Error("SharedArrayBuffer is not available. In browsers, this requires Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy headers to be set.")}function li(e,t){return new SharedArrayBuffer(e)}function at(e){const t=new TextDecoder().decode(e);try{return JSON.parse(t)}catch(n){throw new Y("Failed to decode JSON",{cause:n})}}function Xn(e,t){const n=t/2,r=t-1;let i=0;for(let s=0;s<e.length;s+=t)for(let o=0;o<n;o+=1)i=e[s+o],e[s+o]=e[s+r-o],e[s+r-o]=i}function Ye(e){if(e==="v2:object")return globalThis.Array;let t=e.match(/v2:([US])(\d+)/);if(t){let[,r,i]=t;return(r==="U"?ft:xn).bind(null,Number(i))}if(e==="string")return globalThis.Array;let n={int8:Int8Array,int16:Int16Array,int32:Int32Array,int64:globalThis.BigInt64Array,uint8:Uint8Array,uint16:Uint16Array,uint32:Uint32Array,uint64:globalThis.BigUint64Array,float16:globalThis.Float16Array,float32:Float32Array,float64:Float64Array,bool:ai}[e];if(!n)throw new Y(`Unknown or unsupported dataType: ${e}`);return n}function We(e,t){const n=e.length;typeof t=="string"&&(t=t==="C"?Array.from({length:n},(s,o)=>o):Array.from({length:n},(s,o)=>n-1-o)),j(n===t.length,"Order length must match the number of dimensions.");let r=1,i=new Array(n);for(let s=t.length-1;s>=0;s--)i[t[s]]=r,r*=e[t[s]];return i}function os({name:e,configuration:t}){if(e==="default"){const n=t?.separator??"/";return r=>["c",...r].join(n)}if(e==="v2"){const n=t?.separator??".";return r=>r.join(n)||"0"}throw new Y(`Unknown chunk key encoding: ${e}`)}function _n(e){if(e==="|O")return{dataType:"v2:object"};let t=e.match(/^([<|>])(.*)$/);if(!t)throw new Y(`Invalid dtype: ${e}`);let[,n,r]=t,i={b1:"bool",i1:"int8",u1:"uint8",i2:"int16",u2:"uint16",i4:"int32",u4:"uint32",i8:"int64",u8:"uint64",f2:"float16",f4:"float32",f8:"float64"}[r]??(r.startsWith("S")||r.startsWith("U")?`v2:${r}`:void 0);if(!i)throw new Y(`Unsupported or unknown dtype: ${e}`);return n==="|"?{dataType:i}:{dataType:i,endian:n==="<"?"little":"big"}}function fs(e){return(e.id==="fixedscaleoffset"||e.id==="numcodecs.fixedscaleoffset")&&typeof e.scale=="number"&&typeof e.offset=="number"&&(e.astype===void 0||typeof e.astype=="string")&&(e.dtype===void 0||typeof e.dtype=="string")}function as(e,t={}){let n=[],r=_n(e.dtype);e.order==="F"&&n.push({name:"transpose",configuration:{order:"F"}});for(let s of e.filters??[]){if(s.id==="fixedscaleoffset"||s.id==="numcodecs.fixedscaleoffset"){if(!fs(s))throw new Y(`Invalid fixedscaleoffset filter: ${JSON.stringify(s)}`);n.push({name:"scale_offset",configuration:{scale:s.scale,offset:s.offset}});let a=s.astype??s.dtype;if(a!==void 0&&a!==e.dtype){let c=_n(a).dataType;if(!tn(c,"number")&&!tn(c,"bigint"))throw new Y(`fixedscaleoffset astype must be a numeric data type, got ${a}`);n.push({name:"cast_value",configuration:{data_type:c,rounding:"nearest-even",out_of_range:"wrap"}})}continue}let{id:o,...f}=s;n.push({name:`numcodecs.${o}`,configuration:f})}if("endian"in r&&r.endian==="big"&&n.push({name:"bytes",configuration:{endian:"big"}}),e.compressor){let{id:s,...o}=e.compressor;n.push({name:`numcodecs.${s}`,configuration:o})}let i;return globalThis.Array.isArray(t._ARRAY_DIMENSIONS)&&(i=t._ARRAY_DIMENSIONS),{zarr_format:3,node_type:"array",shape:e.shape,data_type:r.dataType,chunk_grid:{name:"regular",configuration:{chunk_shape:e.chunks}},chunk_key_encoding:{name:"v2",configuration:{separator:e.dimension_separator??"."}},codecs:n,fill_value:e.fill_value,dimension_names:i,attributes:t}}function cs(e,t={}){return{zarr_format:3,node_type:"group",attributes:t}}function tn(e,t){if(t!=="number"&&t!=="bigint"&&t!=="boolean"&&t!=="object"&&t!=="string")return e===t;let n=e==="bool";if(t==="boolean")return n;let r=e.startsWith("v2:U")||e.startsWith("v2:S")||e==="string";if(t==="string")return r;let i=e==="int64"||e==="uint64";if(t==="bigint")return i;let s=e==="v2:object";return t==="object"?s:!r&&!i&&!n&&!s}function ls(e){return e?.name==="sharding_indexed"}function ui(e){if((e.data_type==="uint64"||e.data_type==="int64")&&e.fill_value!=null)return BigInt(e.fill_value);let t=e.data_type==="float16"||e.data_type==="float32"||e.data_type==="float64";if(typeof e.fill_value=="string"&&t){let n={NaN:NaN,Infinity:1/0,"-Infinity":-1/0};if(e.fill_value in n)return n[e.fill_value]}return e.fill_value}function us(e){let t=e.signal,n=e.opts?.signal;return t&&n?AbortSignal.any([t,n]):t??n}function di(e,...t){if(!t.some(n=>e instanceof n))throw e}function j(e,t=""){if(!e)throw new Error(t)}async function Ai(e,{format:t,signal:n}){let r;if(e instanceof ArrayBuffer)r=new Response(e);else{let i=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);r=new Response(i.slice().buffer)}j(r.body,"Response does not contain body.");try{return await new Response(r.body.pipeThrough(new DecompressionStream(t),{signal:n})).arrayBuffer()}catch{throw n?.throwIfAborted(),new Error(`Failed to decode ${t}`)}}const $n=ds();function ds(){const e=new Uint32Array([305419896]);return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)[0]!==18}function er(e){return"BYTES_PER_ELEMENT"in e?e.BYTES_PER_ELEMENT:4}class Rt{kind="array_to_bytes";#e;#t;#n;#r;#i;constructor(t,n){this.#i=t?.endian,this.#t=Ye(n.dataType),this.#r=n.shape,this.#e=We(n.shape,"C");const r=new this.#t(0);this.#n=r.BYTES_PER_ELEMENT}static fromConfig(t,n){return new Rt(t,n)}encode(t){let n=new Uint8Array(t.data.buffer);return $n&&this.#i==="big"&&(n=n.slice(),Xn(n,er(this.#t))),n}computeEncodedSize(t){return t}decode(t){return $n&&this.#i==="big"&&(t=t.slice(),Xn(t,er(this.#t))),{data:new this.#t(t.buffer,t.byteOffset,t.byteLength/this.#n),shape:this.#r,stride:this.#e}}}const tr={NaN:NaN,Infinity:1/0,"-Infinity":-1/0},hi={float16:2,float32:4,float64:8};function vt(e){return e in hi}function nn(e){return e==="int64"||e==="uint64"}function As(e,t){const n=BigInt(e),r=new ArrayBuffer(t),i=new DataView(r);if(t===2){if(typeof i.getFloat16!="function")throw new vn("float16 hex-encoded scalar decoding (requires DataView.prototype.getFloat16)");return i.setUint16(0,Number(n)),i.getFloat16(0)}return t===4?(i.setUint32(0,Number(n)),i.getFloat32(0)):(i.setBigUint64(0,n),i.getFloat64(0))}function St(e,t){if(nn(e)){if(typeof t!="number"||!Number.isInteger(t))throw new Y(`Expected an integer value for data type "${e}", got ${JSON.stringify(t)}`);return BigInt(t)}if(typeof t=="number"){if(!vt(e)&&!Number.isInteger(t))throw new Y(`Expected an integer value for data type "${e}", got ${t}`);return t}if(!vt(e))throw new Y(`String-encoded scalar "${t}" is not valid for non-float data type "${e}"`);return t in tr?tr[t]:As(t,hi[e])}const nr=new Set(["int8","uint8","int16","uint16","int32","uint32","int64","uint64","float16","float32","float64"]),Yt={int8:[-128,2**7-1],uint8:[0,2**8-1],int16:[-32768,2**15-1],uint16:[0,2**16-1],int32:[-2147483648,2**31-1],uint32:[0,2**32-1]},Wt={int64:[-(2n**63n),2n**63n-1n],uint64:[0n,2n**64n-1n]};function rr(e,t,n){return e.map(([r,i])=>({src:St(t,r),tgt:St(n,i)}))}function hs(e,t){for(const n of t)if(typeof n.src=="number"&&Number.isNaN(n.src)){if(typeof e=="number"&&Number.isNaN(e))return n.tgt}else if(e===n.src)return n.tgt}function gs(e){if(!Number.isFinite(e))return e;if(Math.abs(e-Math.trunc(e))===.5){const t=Math.floor(e),n=Math.ceil(e);return t%2===0?t:n}return Math.round(e)}function ws(e){return Math.sign(e)*Math.floor(Math.abs(e)+.5)}function ir(e){switch(e){case"nearest-even":return gs;case"towards-zero":return Math.trunc;case"towards-positive":return Math.ceil;case"towards-negative":return Math.floor;case"nearest-away":return ws}}function qt(e,t,n){const r=t-e+1;switch(n){case"clamp":return i=>i<e?e:i>t?t:i;case"wrap":return i=>i>=e&&i<=t?i:((i-e)%r+r)%r+e;default:return i=>{if(i>=e&&i<=t)return i;throw new Error(`Value ${i} out of range [${e}, ${t}]. Set out_of_range='clamp' or out_of_range='wrap' to handle this.`)}}}function Gt(e,t,n){const r=t-e+1n;switch(n){case"clamp":return i=>i<e?e:i>t?t:i;case"wrap":return i=>i>=e&&i<=t?i:((i-e)%r+r)%r+e;default:return i=>{if(i>=e&&i<=t)return i;throw new Error(`Value ${i} out of range [${e}, ${t}]. Set out_of_range='clamp' or out_of_range='wrap' to handle this.`)}}}class Ln{kind="array_to_array";#e;#t;#n;#r;constructor(t,n,r,i,s,o){this.#e=n,this.#t=Ye(t),this.#n=sr(n,t,r,i,s),this.#r=sr(t,n,r,i,o)}getEncodedMeta(t){let n=t.fillValue;return n!=null&&(n=this.#r(n)),{...t,dataType:this.#e,fillValue:n}}static fromConfig(t,n){const r=n.dataType,i=t.data_type;if(!nr.has(r))throw new Y(`cast_value codec does not support array data type: ${r}`);if(!nr.has(i))throw new Y(`cast_value codec does not support encoded data type: ${i}`);const s=t.rounding??"nearest-even",o=t.scalar_map?.decode?rr(t.scalar_map.decode,i,r):[],f=t.scalar_map?.encode?rr(t.scalar_map.encode,r,i):[];return new Ln(r,i,s,t.out_of_range,o,f)}encode=be("cast_value");decode(t){const n=t.data,r=new this.#t(n.length);for(let i=0;i<n.length;i++)r[i]=this.#n(n[i]);return{data:r,shape:t.shape,stride:t.stride}}}function sr(e,t,n,r,i){const s=vt(e),o=nn(e),f=vt(t),a=nn(t);let c;if(s&&f){if(n!=="nearest-even")throw new Y(`cast_value float -> float only supports "nearest-even" rounding, got "${n}"`);c=l=>l}else if(s&&!f&&!a){const l=ir(n),d=qt(...Yt[t],r);c=h=>{if(!Number.isFinite(h))throw new Error(`Cannot cast ${h} to integer type without scalar_map`);return d(l(h))}}else if(s&&a){const l=ir(n),d=Gt(...Wt[t],r);c=h=>{if(!Number.isFinite(h))throw new Error(`Cannot cast ${h} to integer type without scalar_map`);return d(BigInt(l(h)))}}else if(!s&&!o&&f)c=l=>l;else if(o&&f)c=l=>Number(l);else if(!s&&!o&&!f&&!a)c=qt(...Yt[t],r);else if(!s&&!o&&a){const l=Gt(...Wt[t],r);c=d=>l(BigInt(d))}else if(o&&!f&&!a){const l=qt(...Yt[t],r);c=d=>l(Number(d))}else if(o&&a)c=Gt(...Wt[t],r);else throw new Error(`Unhandled type combination: ${e} -> ${t}`);return i.length===0?c:l=>{const d=hs(l,i);return d!==void 0?d:c(l)}}class Nn{kind="bytes_to_bytes";static fromConfig(){return new Nn}encode=be("crc32c");decode(t){return new Uint8Array(t.buffer,t.byteOffset,t.byteLength-4)}computeEncodedSize(t){return t+4}}const ys=new Set(["int8","uint8","int16","uint16","int32","uint32","int64","uint64","float16","float32","float64"]);function or(e,t){const n=e.length;let r=n===0||t[n-1]===1;for(let s=n-2;s>=0&&r;s--)r=t[s]===t[s+1]*e[s+1];if(r)return;let i=n===0||t[0]===1;for(let s=1;s<n&&i;s++)i=t[s]===t[s-1]*e[s-1];if(!i)throw new Error(`DeltaCodec requires C- or Fortran-contiguous strides, got shape=${JSON.stringify(e)} stride=${JSON.stringify(t)}`)}class Tn{kind="array_to_array";#e;constructor(t){this.#e=t}static fromConfig(t,n){if(!ys.has(n.dataType))throw new Y(`Delta codec does not support data type: ${n.dataType}`);return new Tn(Ye(n.dataType))}encode(t){or(t.shape,t.stride);const n=t.data,r=new this.#e(n.length);r[0]=n[0];for(let i=1;i<n.length;i++)r[i]=n[i]-n[i-1];return{data:r,shape:t.shape,stride:t.stride}}decode(t){or(t.shape,t.stride);const n=t.data,r=new this.#e(n.length);r[0]=n[0];for(let i=1;i<n.length;i++)r[i]=r[i-1]+n[i];return{data:r,shape:t.shape,stride:t.stride}}}class Un{kind="bytes_to_bytes";static fromConfig(t){return new Un}encode=be("gzip");async decode(t){const n=await Ai(t,{format:"gzip"});return new Uint8Array(n)}}function ps(e,t){return j(!Number.isNaN(t),"JsonCodec allow_nan is false but NaN was encountered during encoding."),j(t!==Number.POSITIVE_INFINITY,"JsonCodec allow_nan is false but Infinity was encountered during encoding."),j(t!==Number.NEGATIVE_INFINITY,"JsonCodec allow_nan is false but -Infinity was encountered during encoding."),t}function ms(e,t){return t instanceof Object&&!Array.isArray(t)?Object.keys(t).sort().reduce((n,r)=>(n[r]=t[r],n),{}):t}class xt{configuration;kind="array_to_bytes";#e;#t;constructor(t={}){this.configuration=t;const{encoding:n="utf-8",skipkeys:r=!1,ensure_ascii:i=!0,check_circular:s=!0,allow_nan:o=!0,sort_keys:f=!0,indent:a,strict:c=!0}=t;let u=t.separators;u||(a?u=[", ",": "]:u=[",",":"]),this.#e={encoding:n,skipkeys:r,ensure_ascii:i,check_circular:s,allow_nan:o,indent:a,separators:u,sort_keys:f},this.#t={strict:c}}static fromConfig(t){return new xt(t)}encode(t){const{indent:n,encoding:r,ensure_ascii:i,check_circular:s,allow_nan:o,sort_keys:f}=this.#e;j(r==="utf-8","JsonCodec does not yet support non-utf-8 encoding.");const a=[];j(s,"JsonCodec does not yet support skipping the check for circular references during encoding."),o||a.push(ps),f&&a.push(ms);const c=Array.from(t.data);c.push("|O"),c.push(t.shape);let u;a.length&&(u=(d,h)=>{let A=h;for(let y of a)A=y(d,A);return A});let l=JSON.stringify(c,u,n);return i&&(l=l.replace(/[\u007F-\uFFFF]/g,d=>{const h=`0000${d.charCodeAt(0).toString(16)}`;return`\\u${h.substring(h.length-4)}`})),new TextEncoder().encode(l)}decode(t){const{strict:n}=this.#t;j(n,"JsonCodec does not yet support non-strict decoding.");const r=at(t),i=r.pop();r.pop(),j(i,"0D not implemented for JsonCodec.");const s=We(i,"C");return{data:r,shape:i,stride:s}}}const Is=new Set(["int8","uint8","int16","uint16","int32","uint32","int64","uint64","float16","float32","float64"]);class Fn{kind="array_to_array";#e;#t;#n;constructor(t,n,r){this.#t=t,this.#n=n,this.#e=r}static fromConfig(t,n){if(!Is.has(n.dataType))throw new Y(`scale_offset codec does not support data type: ${n.dataType}`);return new Fn(St(n.dataType,t.scale??1),St(n.dataType,t.offset??0),Ye(n.dataType))}encode=be("scale_offset");decode(t){const n=t.data,r=new this.#e(n.length);for(let i=0;i<n.length;i++)r[i]=n[i]/this.#t+this.#n;return{data:r,shape:t.shape,stride:t.stride}}}class Rn{kind="bytes_to_bytes";#e;constructor(t,n){if(n){let r=new(Ye(n.dataType))(0);j("BYTES_PER_ELEMENT"in r,`Shuffle codec requires a fixed-size dtype, got "${n.dataType}"`),this.#e=r.BYTES_PER_ELEMENT}else this.#e=t.elementsize??4}static fromConfig(t,n){return new Rn(t,n)}encode(t){return Es(t,this.#e)}decode(t){return bs(t,this.#e)}}function Es(e,t){let n=e.length,r=Math.floor(n/t),i=new Uint8Array(n);for(let s=0;s<t;s++)for(let o=0;o<r;o++)i[s*r+o]=e[o*t+s];return i}function bs(e,t){let n=e.length,r=Math.floor(n/t),i=new Uint8Array(n);for(let s=0;s<t;s++)for(let o=0;o<r;o++)i[o*t+s]=e[s*r+o];return i}function fr(e){return e instanceof ai||e instanceof xn||e instanceof ft?new Proxy(e,{get(n,r){return n.get(Number(r))},set(n,r,i){return n.set(Number(r),i),!0}}):e}function Bs(e,t){let n;return e.data instanceof xn||e.data instanceof ft?n=new e.data.constructor(e.data.chars,e.data.length):n=new e.data.constructor(e.data.length),{data:n,shape:e.shape,stride:We(e.shape,t)}}function Cs(e,t){let n=Bs(e,t),r=e.shape.length,i=e.shape.reduce((a,c)=>a*c,1),s=Array(r).fill(0),o=fr(e.data),f=fr(n.data);for(let a=0;a<i;a++){let c=0,u=0;for(let l=0;l<r;l++)c+=s[l]*e.stride[l],u+=s[l]*n.stride[l];f[u]=o[c],s[0]+=1;for(let l=0;l<r;l++)if(s[l]===e.shape[l]){if(l+1===r)break;s[l]=0,s[l+1]+=1}}return n}function vs(e){let t=e.shape.length;return j(t===e.stride.length,"Shape and stride must have the same length."),e.stride.map((n,r)=>({stride:n,index:r})).sort((n,r)=>r.stride-n.stride).map(n=>n.index)}function Ss(e,t){let n=vs(e);return j(n.length===t.length,"Orders must match"),n.every((r,i)=>r===t[i])}class Qn{kind="array_to_array";#e;constructor(t,n){let r=t.order??"C",i=n.shape.length,s=new Array(i);if(r==="C")for(let o=0;o<i;++o)s[o]=o;else if(r==="F")for(let o=0;o<i;++o)s[o]=i-o-1;else{s=r;let o=new Array(i);s.forEach(f=>{j(!o[f],`Invalid permutation: ${JSON.stringify(r)}`),o[f]=!0})}this.#e=s}static fromConfig(t,n){return new Qn(t,n)}encode(t){return Ss(t,this.#e)?t:Cs(t,this.#e)}decode(t){return{data:t.data,shape:t.shape,stride:We(t.shape,this.#e)}}}class Lt{kind="array_to_bytes";#e;#t;constructor(t){this.#e=t,this.#t=We(t,"C")}static fromConfig(t,n){return new Lt(n.shape)}encode=be("vlen-utf8");decode(t){let n=new TextDecoder,r=new DataView(t.buffer),i=Array(r.getUint32(0,!0)),s=4;for(let o=0;o<i.length;o++){let f=r.getUint32(s,!0);s+=4,i[o]=n.decode(t.buffer.slice(s,s+f)),s+=f}return{data:i,shape:this.#e,stride:this.#t}}}class kn{kind="bytes_to_bytes";static fromConfig(t){return new kn}encode=be("zlib");async decode(t){const n=await Ai(t,{format:"deflate"});return new Uint8Array(n)}}function xs(){let e=()=>import("./blosc-j6ygecpn.js").then(s=>s.default),t=()=>import("./lz4-rzy_Siro.js").then(s=>s.default),n=()=>import("./zstd-Cp7BEDDH.js").then(s=>s.default),r=()=>Un,i=()=>kn;return new Map().set("blosc",e).set("lz4",t).set("zstd",n).set("gzip",r).set("zlib",i).set("transpose",()=>Qn).set("bytes",()=>Rt).set("crc32c",()=>Nn).set("vlen-utf8",()=>Lt).set("json2",()=>xt).set("bitround",()=>Ct).set("cast_value",()=>Ln).set("scale_offset",()=>Fn).set("numcodecs.blosc",e).set("numcodecs.lz4",t).set("numcodecs.zstd",n).set("numcodecs.gzip",r).set("numcodecs.zlib",i).set("numcodecs.vlen-utf8",()=>Lt).set("numcodecs.shuffle",()=>Rn).set("numcodecs.delta",()=>Tn).set("numcodecs.bitround",()=>Ct).set("numcodecs.json2",()=>xt)}const Ls=xs();function rn(e){let t;function n(){return t||(t=Ns(e)),t}async function r(i,s,o){try{return await o()}catch(f){throw new ss({direction:i,codec:s,cause:f})}}return{async encode(i){let s=await n();for(const{name:f,codec:a}of s.arrayToArray)i=await r("encode",f,()=>a.encode(i));let o=await r("encode",s.arrayToBytes.name,()=>s.arrayToBytes.codec.encode(i));for(const{name:f,codec:a}of s.bytesToBytes)o=await r("encode",f,()=>a.encode(o));return o},async decode(i){let s=await n();for(let f=s.bytesToBytes.length-1;f>=0;f--){const{name:a,codec:c}=s.bytesToBytes[f];i=await r("decode",a,()=>c.decode(i))}let o=await r("decode",s.arrayToBytes.name,()=>s.arrayToBytes.codec.decode(i));for(let f=s.arrayToArray.length-1;f>=0;f--){const{name:a,codec:c}=s.arrayToArray[f];o=await r("decode",a,()=>c.decode(o))}return o},async computeEncodedSize(i){let s=await n(),o=ar(s.arrayToBytes.name,s.arrayToBytes.codec,i);for(const{name:f,codec:a}of s.bytesToBytes)o=ar(f,a,o);return o}}}function ar(e,t,n){if(!t.computeEncodedSize)throw new Y(`Codec "${e}" cannot compute its encoded size; it is not a fixed-size codec and cannot be used in a sharding index pipeline`);return t.computeEncodedSize(n)}async function Ns(e){let t=e.codecs.map(async o=>{let f=await Ls.get(o.name)?.();if(!f)throw new is(o.name);return{Codec:f,meta:o}}),n=[],r,i=[],s={...e};for await(let{Codec:o,meta:f}of t){let a=o.fromConfig(f.configuration,s);switch(a.kind){case"array_to_array":n.push({name:f.name,codec:a}),a.getEncodedMeta&&(s=a.getEncodedMeta(s));break;case"array_to_bytes":r={name:f.name,codec:a};break;default:i.push({name:f.name,codec:a})}}if(!r){if(!Ts(s))throw new Y(`Cannot encode ${s.dataType} to bytes without a codec`);r={name:"bytes",codec:Rt.fromConfig({endian:"little"},s)}}return{arrayToArray:n,arrayToBytes:r,bytesToBytes:i}}function Ts(e){return e.dataType!=="v2:object"&&e.dataType!=="string"}const cr=18446744073709551615n;function Us(e,t,n,r){if(!e.store.getRange)throw new vn("sharding requires a store with getRange");let i=e.store.getRange.bind(e.store),s=t.map((c,u)=>c/r.chunk_shape[u]),o=rn({dataType:"uint64",shape:[...s,2],codecs:r.index_codecs,fillValue:null}),f=16*s.reduce((c,u)=>c*u,1),a={};return async(c,u)=>{let l=c.map((E,B)=>Math.floor(E/s[B])),d=e.resolve(n(l)).path;d in a||(a[d]=(async()=>{let E=await o.computeEncodedSize(f),B=await i(d,{suffixLength:E},u);return B?await o.decode(B):null})().catch(E=>{throw delete a[d],E}));let h=await a[d];if(h===null)return;let{data:A,shape:y,stride:w}=h,p=c.map((E,B)=>E%y[B]).reduce((E,B,b)=>E+B*w[b],0),g=A[p],I=A[p+1];if(!(g===cr&&I===cr))return i(d,{offset:Number(g),length:Number(I)},u)}}class Be{store;path;constructor(t,n="/"){this.store=t,this.path=n}resolve(t){let n=new URL(`file://${this.path.endsWith("/")?this.path:`${this.path}/`}`);return new Be(this.store,decodeURIComponent(new URL(t,n).pathname))}}function Fs(e){return new Be(e??new Map)}class Mn extends Be{kind="group";#e;constructor(t,n,r){super(t,n),this.#e=r}get attrs(){return this.#e.attributes}}function lr(e){return e.find(n=>n.name==="transpose")?.configuration?.order??"C"}function Rs(e,t){let n=new Map(t.map((r,i)=>[r,i]));return e.filter(r=>n.has(r)).map(r=>n.get(r))}function ur(e){return(t,n)=>{let r=globalThis.Array.isArray(e)&&n?Rs(e,n):e;return We(t,r)}}const Je=Symbol("zarrita.context");function Qs(e){return e[Je]}function ks(e,t){let{configuration:n}=t.codecs.find(ls)??{},r={encodeChunkKey:os(t.chunk_key_encoding),TypedArray:Ye(t.data_type),fillValue:t.fill_value};if(n){let s=lr(n.codecs);return{...r,kind:"sharded",chunkShape:n.chunk_shape,codec:rn({dataType:t.data_type,shape:n.chunk_shape,codecs:n.codecs,fillValue:t.fill_value}),getStrides:ur(s),getChunkBytes:Us(e,t.chunk_grid.configuration.chunk_shape,r.encodeChunkKey,n)}}let i=lr(t.codecs);return{...r,kind:"regular",chunkShape:t.chunk_grid.configuration.chunk_shape,codec:rn({dataType:t.data_type,shape:t.chunk_grid.configuration.chunk_shape,codecs:t.codecs,fillValue:t.fill_value}),getStrides:ur(i),async getChunkBytes(s,o){let f=r.encodeChunkKey(s),a=e.resolve(f).path;return e.store.get(a,o)}}}let Pe=class extends Be{kind="array";#e;[Je];constructor(t,n,r){super(t,n),this.#e={...r,fill_value:ui(r)},this[Je]=ks(this,this.#e)}get attrs(){return this.#e.attributes}get dimensionNames(){return this.#e.dimension_names}get fillValue(){return this.#e.fill_value}get shape(){return this.#e.shape}get chunks(){return this[Je].chunkShape}get dtype(){return this.#e.data_type}async getChunk(t,n,r){r?.useSharedArrayBuffer&&ci();let i=this[Je],s=await i.getChunkBytes(t,n);if(!s){let o=i.chunkShape.reduce((a,c)=>a*c,1),f;if(r?.useSharedArrayBuffer){let a=new i.TypedArray(0);if(!("BYTES_PER_ELEMENT"in a))console.warn("zarrita: useSharedArrayBuffer is not supported for non-buffer-backed data types."),f=new i.TypedArray(o);else{let c=li(o*a.BYTES_PER_ELEMENT);f=new i.TypedArray(c,0,o)}}else f=new i.TypedArray(o);return f.fill(i.fillValue),{data:f,shape:i.chunkShape,stride:i.getStrides(i.chunkShape)}}return i.codec.decode(s)}is(t){return tn(this.dtype,t)}};function Ms(e,t){let n=e;for(let r of t)n instanceof Promise?n=n.then(i=>r(i)):n=r(n);return n}function Ps(e,...t){return Ms(e,t)}async function gi(e){let t=e.store.arrayExtensions;return t?.length?await Ps(e,...t):e}let Qt=Os();function Os(){let e=new WeakMap;function t(n){let r=e.get(n)??{v2:0,v3:0};return e.set(n,r),r}return{increment(n,r){t(n)[r]+=1},versionMax(n){let r=t(n);return r.v3>r.v2?"v3":"v2"}}}async function Ds(e,t){let n=await e.store.get(e.resolve(".zattrs").path,{signal:t});return n?at(n):{}}async function Ys(e,t={}){let n="store"in e?e:new Be(e),{signal:r}=t,i={};return(t.attrs??!0)&&(i=await Ds(n,r)),r?.throwIfAborted(),t.kind==="array"?dr(n,i,r):t.kind==="group"?Ar(n,i,r):dr(n,i,r).catch(s=>(di(s,De,Y),Ar(n,i,r)))}async function dr(e,t,n){let{path:r}=e.resolve(".zarray"),i=await e.store.get(r,{signal:n});if(!i)throw new De("v2 array",{path:r});return Qt.increment(e.store,"v2"),gi(new Pe(e.store,e.path,as(at(i),t)))}async function Ar(e,t,n){let{path:r}=e.resolve(".zgroup"),i=await e.store.get(r,{signal:n});if(!i)throw new De("v2 group",{path:r});return Qt.increment(e.store,"v2"),new Mn(e.store,e.path,cs(at(i),t))}async function Ws(e,t){let{store:n,path:r}=e.resolve("zarr.json"),i=await e.store.get(r,{signal:t});if(!i)throw new De("v3 array or group",{path:r});let s=at(i);return s.node_type==="array"&&(s.fill_value=ui(s)),s.node_type==="array"?gi(new Pe(n,e.path,s)):new Mn(n,e.path,s)}async function qs(e,t={}){let n="store"in e?e:new Be(e),r=await Ws(n,t.signal);if(Qt.increment(n.store,"v3"),t.kind===void 0||t.kind==="array"&&r instanceof Pe||t.kind==="group"&&r instanceof Mn)return r;let i=r instanceof Pe?"array":"group";throw new De(`${t.kind} at ${n.path}`,{path:n.path,found:i})}async function ye(e,t={}){let n="store"in e?e.store:e,r=Qt.versionMax(n),i=r==="v2"?ye.v2:ye.v3,s=r==="v2"?ye.v3:ye.v2;return i(e,t).catch(o=>(di(o,De,Y),s(e,t)))}ye.v2=Ys;ye.v3=qs;function*Gs(e,t,n=1){t===void 0&&(t=e,e=0);for(let r=e;r<t;r+=n)yield r}function*zs(...e){if(e.length===0)return;const t=e.map(r=>r[Symbol.iterator]()),n=t.map(r=>r.next());if(n.some(r=>r.done))throw new Error("Input contains an empty iterator.");for(let r=0;;){if(n[r].done){if(t[r]=e[r][Symbol.iterator](),n[r]=t[r].next(),++r>=t.length)return}else yield n.map(({value:i})=>i),r=0;n[r]=t[r].next()}}function Vs({start:e,stop:t,step:n},r){if(n===0)throw new ot("slice step cannot be zero");n=n??1;const i=n<0,[s,o]=i?[-1,r-1]:[0,r];return e===null?e=i?o:s:e<0?(e+=r,e<s&&(e=s)):e>o&&(e=o),t===null?t=i?s:o:t<0?(t+=r,t<s&&(t=s)):t>o&&(t=o),[e,t,n]}function zt(e){if(e==null)return null;if(typeof e=="bigint"){if(e>Number.MAX_SAFE_INTEGER||e<Number.MIN_SAFE_INTEGER)throw new ot(`Cannot safely convert ${e} to a number. Value exceeds Number.MAX_SAFE_INTEGER.`);return Number(e)}return e}function hr(e,t,n=null){return t===void 0&&(t=e,e=null),{start:zt(e),stop:zt(t),step:zt(n)}}function Hs(){const e=[];return{add:t=>e.push(t()),onIdle:()=>Promise.all(e)}}function Zs(e,t){throw new ot(`too many indicies for array; expected ${t.length}, got ${e.length}`)}function js(e){throw new ot(`index out of bounds for dimension with length ${e}`)}function Js(){throw new ot("only slices with step >= 1 are supported")}function Ks(e,t){e.length>t.length&&Zs(e,t)}function Xs(e,t){return e=Math.trunc(e),e<0&&(e=t+e),(e>=t||e<0)&&js(t),e}class _s{dimSel;dimLen;dimChunkLen;nitems;constructor({dimSel:t,dimLen:n,dimChunkLen:r}){t=Xs(t,n),this.dimSel=t,this.dimLen=n,this.dimChunkLen=r,this.nitems=1}*[Symbol.iterator](){const t=Math.floor(this.dimSel/this.dimChunkLen),n=t*this.dimChunkLen,r=this.dimSel-n;yield{dimChunkIx:t,dimChunkSel:r}}}class Vt{start;stop;step;dimLen;dimChunkLen;nitems;nchunks;constructor({dimSel:t,dimLen:n,dimChunkLen:r}){const[i,s,o]=Vs(t,n);this.start=i,this.stop=s,this.step=o,this.step<1&&Js(),this.dimLen=n,this.dimChunkLen=r,this.nitems=Math.max(0,Math.ceil((this.stop-this.start)/this.step)),this.nchunks=Math.ceil(this.dimLen/this.dimChunkLen)}*[Symbol.iterator](){const t=Math.floor(this.start/this.dimChunkLen),n=Math.ceil(this.stop/this.dimChunkLen);for(const r of Gs(t,n)){const i=r*this.dimChunkLen,s=Math.min(this.dimLen,(r+1)*this.dimChunkLen),o=s-i;let f=0,a=0;if(this.start<i){const h=(i-this.start)%this.step;h&&(a+=this.step-h),f=Math.ceil((i-this.start)/this.step)}else a=this.start-i;const c=this.stop>s?o:this.stop-i,u=[a,c,this.step],l=Math.ceil((c-a)/this.step),d=[f,f+l,1];yield{dimChunkIx:r,dimChunkSel:u,dimOutSel:d}}}}function $s(e,t){let n=[];return e===null?n=t.map(r=>hr(null)):Array.isArray(e)&&(n=e.map(r=>r??hr(null))),Ks(n,t),n}class eo{dimIndexers;shape;outputAxes;constructor({selection:t,shape:n,chunkShape:r}){this.dimIndexers=$s(t,n).map((i,s)=>new(typeof i=="number"?_s:Vt)({dimSel:i,dimLen:n[s],dimChunkLen:r[s]})),this.shape=this.dimIndexers.filter(i=>i instanceof Vt).map(i=>i.nitems),this.outputAxes=this.dimIndexers.map((i,s)=>({ixr:i,axis:s})).filter(({ixr:i})=>i instanceof Vt).map(({axis:i})=>i)}*[Symbol.iterator](){for(const t of zs(...this.dimIndexers)){const n=t.map(i=>i.dimChunkIx),r=t.map(i=>"dimOutSel"in i?{from:i.dimChunkSel,to:i.dimOutSel}:{from:i.dimChunkSel,to:null});yield{chunkCoords:n,mapping:r}}}}function gr(e,t){return"get"in e?e.get(t):e[t]}async function to(e,t,n,r){n.useSharedArrayBuffer&&ci();let i=us(n),s=Qs(e),o=new eo({selection:t,shape:e.shape,chunkShape:e.chunks});if(e.shape.length===0){let{data:l}=await e.getChunk([],{signal:i},{useSharedArrayBuffer:n.useSharedArrayBuffer});return gr(l,0)}let f=o.shape.reduce((l,d)=>l*d,1),a;if(n.useSharedArrayBuffer){let l=new s.TypedArray(0);if(!("BYTES_PER_ELEMENT"in l))console.warn("zarrita: useSharedArrayBuffer is not supported for non-buffer-backed data types."),a=new s.TypedArray(f);else{let d=li(f*l.BYTES_PER_ELEMENT);a=new s.TypedArray(d,0,f)}}else a=new s.TypedArray(f);let c=r.prepare(a,o.shape,s.getStrides(o.shape,o.outputAxes)),u=n.createQueue?.()??Hs();for(const{chunkCoords:l,mapping:d}of o)u.add(async()=>{i?.throwIfAborted();let{data:h,shape:A,stride:y}=await e.getChunk(l,{signal:i},{useSharedArrayBuffer:n.useSharedArrayBuffer}),w=r.prepare(h,A,y);r.setFromChunk(c,w,d)});return await u.onIdle(),o.shape.length===0?gr(c.data,0):c}function Pn(e,t=0,n){let r=n??e.length-t;return{length:r,subarray(i,s=r){return Pn(e,t+i,s-i)},set(i,s=0){for(let o=0;o<i.length;o++)e[t+s+o]=i.get(o)},get(i){return e[t+i]}}}function Ht(e){return globalThis.Array.isArray(e.data)?{data:Pn(e.data),stride:e.stride,bytesPerElement:1}:{data:new Uint8Array(e.data.buffer,e.data.byteOffset,e.data.byteLength),stride:e.stride,bytesPerElement:e.data.BYTES_PER_ELEMENT}}function no(e){return"chars"in e?e.constructor.bind(null,e.chars):e.constructor}function ro(e,t){if(globalThis.Array.isArray(e.data))return Pn([t]);let n=no(e.data),r=new n([t]);return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}const io={prepare(e,t,n){return{data:e,shape:t,stride:n}},setScalar(e,t,n){let r=Ht(e);sn(r,t,ro(e,n),r.bytesPerElement)},setFromChunk(e,t,n){let r=Ht(e);It(r,Ht(t),r.bytesPerElement,n)}};async function so(e,t=null,n={}){return to(e,t,n,io)}function On(e,t,n){return n<0&&t<e?Math.floor((e-t-1)/-n)+1:e<t?Math.floor((t-e-1)/n)+1:0}function sn(e,t,n,r){if(t.length===0){e.data.set(n,0);return}const[i,...s]=t,[o,...f]=e.stride;if(typeof i=="number"){const d=e.data.subarray(o*i*r);sn({data:d,stride:f},s,n,r);return}const[a,c,u]=i,l=On(a,c,u);if(s.length===0){for(let d=0;d<l;d++)e.data.set(n,o*(a+u*d)*r);return}for(let d=0;d<l;d++){const h=e.data.subarray(o*(a+u*d)*r);sn({data:h,stride:f},s,n,r)}}function oo(e,t,n){if(e.length!==t.length||e.length!==n.length)return null;let r=1,i=0,s=0;for(let o=e.length-1;o>=0;o--){const f=e[o];if(f.from===null||f.to===null||t[o]!==r||n[o]!==r)return null;const[a,c,u]=f.to,[l,,d]=f.from;if(u!==1||d!==1)return null;i+=r*a,s+=r*l,r*=On(a,c,u)}return{size:r,destOffset:i,srcOffset:s}}function It(e,t,n,r){const i=oo(r,e.stride,t.stride);if(i!==null){const g=i.srcOffset*n;e.data.set(t.data.subarray(g,g+i.size*n),i.destOffset*n);return}const[s,...o]=r,[f,...a]=e.stride,[c,...u]=t.stride;if(s.from===null){if(o.length===0){e.data.set(t.data.subarray(0,n),f*s.to*n);return}It({data:e.data.subarray(f*s.to*n),stride:a},t,n,o);return}if(s.to===null){if(o.length===0){let g=c*s.from*n;e.data.set(t.data.subarray(g,g+n),0);return}It(e,{data:t.data.subarray(c*s.from*n),stride:u},n,o);return}const[l,d,h]=s.to,[A,y,w]=s.from,p=On(l,d,h);if(o.length===0){for(let g=0;g<p;g++){let I=c*(A+w*g)*n;e.data.set(t.data.subarray(I,I+n),f*(l+h*g)*n)}return}for(let g=0;g<p;g++)It({data:e.data.subarray(f*(l+g*h)*n),stride:a},{data:t.data.subarray(c*(A+g*w)*n),stride:u},n,o)}typeof window<"u"&&window.location.protocol+""+window.location.hostname+(window.location.port?`:${window.location.port}`:"")+window.location.pathname.replace(/\/+$/,"");typeof window>"u"||new URLSearchParams(window.location.search).get("hlod");const He=(e,t)=>typeof e.get=="function"?e.get(t):e[t],Ze=async e=>{if(!(e instanceof Pe))throw new Error(`${e.path} is not an array`);return(await so(e)).data},je=(e,t)=>ye(e.resolve(t)),fo=async(e,t)=>{const n=await je(e,t);if(n instanceof Pe){const o=await Ze(n);return Array.from({length:o.length},(f,a)=>String(He(o,a)))}const r=e.resolve(t);if(n.attrs["encoding-type"]==="nullable-string-array"){const[o,f]=await Promise.all([je(r,"values").then(Ze),je(r,"mask").then(Ze)]);return Array.from({length:o.length},(a,c)=>He(f,c)?"":String(He(o,c)))}const[i,s]=await Promise.all([je(r,"categories").then(Ze),je(r,"codes").then(Ze)]);return Array.from({length:s.length},(o,f)=>String(He(i,He(s,f))))},wr=["BOOLEAN","INT32","INT64","INT96","FLOAT","DOUBLE","BYTE_ARRAY","FIXED_LEN_BYTE_ARRAY"],he=["PLAIN","GROUP_VAR_INT","PLAIN_DICTIONARY","RLE","BIT_PACKED","DELTA_BINARY_PACKED","DELTA_LENGTH_BYTE_ARRAY","DELTA_BYTE_ARRAY","RLE_DICTIONARY","BYTE_STREAM_SPLIT"],ao=["REQUIRED","OPTIONAL","REPEATED"],co=["UTF8","MAP","MAP_KEY_VALUE","LIST","ENUM","DECIMAL","DATE","TIME_MILLIS","TIME_MICROS","TIMESTAMP_MILLIS","TIMESTAMP_MICROS","UINT_8","UINT_16","UINT_32","UINT_64","INT_8","INT_16","INT_32","INT_64","JSON","BSON","INTERVAL"],lo=["UNCOMPRESSED","SNAPPY","GZIP","LZO","BROTLI","LZ4","ZSTD","LZ4_RAW"],wi=["DATA_PAGE","INDEX_PAGE","DICTIONARY_PAGE","DATA_PAGE_V2"],uo=["UNORDERED","ASCENDING","DESCENDING"],Ao=["SPHERICAL","VINCENTY","THOMAS","ANDOYER","KARNEY"];function on(e){const t=ht(e);if(t.type===1)return{type:"Point",coordinates:fn(e,t)};if(t.type===2)return{type:"LineString",coordinates:an(e,t)};if(t.type===3)return{type:"Polygon",coordinates:yr(e,t)};if(t.type===4){const n=[];for(let r=0;r<t.count;r++)n.push(fn(e,ht(e)));return{type:"MultiPoint",coordinates:n}}else if(t.type===5){const n=[];for(let r=0;r<t.count;r++)n.push(an(e,ht(e)));return{type:"MultiLineString",coordinates:n}}else if(t.type===6){const n=[];for(let r=0;r<t.count;r++)n.push(yr(e,ht(e)));return{type:"MultiPolygon",coordinates:n}}else if(t.type===7){const n=[];for(let r=0;r<t.count;r++)n.push(on(e));return{type:"GeometryCollection",geometries:n}}else throw new Error(`Unsupported geometry type: ${t.type}`)}function ht(e){const{view:t}=e,n=t.getUint8(e.offset++)===1,r=t.getUint32(e.offset,n);e.offset+=4;const i=r%1e3,s=Math.floor(r/1e3);let o=0;i>1&&i<=7&&(o=t.getUint32(e.offset,n),e.offset+=4);let f=2;return s&&f++,s===3&&f++,{littleEndian:n,type:i,dim:f,count:o}}function fn(e,t){const n=[];for(let r=0;r<t.dim;r++){const i=e.view.getFloat64(e.offset,t.littleEndian);e.offset+=8,n.push(i)}return n}function an(e,t){const n=[];for(let r=0;r<t.count;r++)n.push(fn(e,t));return n}function yr(e,t){const{view:n}=e,r=[];for(let i=0;i<t.count;i++){const s=n.getUint32(e.offset,t.littleEndian);e.offset+=4,r.push(an(e,{...t,count:s}))}return r}const pr=new TextDecoder,ct={timestampFromMilliseconds(e){return new Date(Number(e))},timestampFromMicroseconds(e){return new Date(Number(e/1000n))},timestampFromNanoseconds(e){return new Date(Number(e/1000000n))},dateFromDays(e){return new Date(e*864e5)},stringFromBytes(e){return e&&pr.decode(e)},jsonFromBytes(e){return e&&JSON.parse(pr.decode(e))},geometryFromBytes(e){return e&&on({view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0})},geographyFromBytes(e){return e&&on({view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0})},uuidFromBytes(e){if(!e)return;const t=Array.from(e,n=>n.toString(16).padStart(2,"0")).join("");return t.slice(0,8)+"-"+t.slice(8,12)+"-"+t.slice(12,16)+"-"+t.slice(16,20)+"-"+t.slice(20,32)}};function mr(e,t,n,r){if(t&&n.endsWith("_DICTIONARY")){let i=e;e instanceof Uint8Array&&!(t instanceof Uint8Array)&&(i=new t.constructor(e.length));for(let s=0;s<e.length;s++)i[s]=t[e[s]];return i}else return yi(e,r)}function yi(e,t){const{element:n,parsers:r,utf8:i=!0,schemaPath:s}=t,{type:o,converted_type:f,logical_type:a}=n,c=n.repetition_type!=="REQUIRED";if(s?.some(l=>l.element.logical_type?.type==="VARIANT")&&o==="BYTE_ARRAY"&&f!=="UTF8"&&a?.type!=="STRING")return e;if(f==="DECIMAL"){const d=10**-(n.scale||0),h=new Array(e.length);for(let A=0;A<h.length;A++)e[A]instanceof Uint8Array?h[A]=pi(e[A])*d:h[A]=Number(e[A])*d;return h}if(!f&&o==="INT96")return Array.from(e).map(l=>r.timestampFromNanoseconds(ho(l)));if(f==="DATE")return Array.from(e).map(l=>r.dateFromDays(l));if(f==="TIMESTAMP_MILLIS")return Array.from(e).map(l=>r.timestampFromMilliseconds(l));if(f==="TIMESTAMP_MICROS")return Array.from(e).map(l=>r.timestampFromMicroseconds(l));if(f==="JSON")return e.map(l=>r.jsonFromBytes(l));if(f==="BSON")throw new Error("parquet bson not supported");if(f==="INTERVAL")throw new Error("parquet interval not supported");if(a?.type==="GEOMETRY")return e.map(l=>r.geometryFromBytes(l));if(a?.type==="GEOGRAPHY")return e.map(l=>r.geographyFromBytes(l));if(a?.type==="UUID")return e.map(l=>r.uuidFromBytes(l));if(f==="UTF8"||a?.type==="STRING"||i&&o==="BYTE_ARRAY")return e.map(l=>r.stringFromBytes(l));if(f==="UINT_64"||a?.type==="INTEGER"&&a.bitWidth===64&&!a.isSigned){if(e instanceof BigInt64Array)return new BigUint64Array(e.buffer,e.byteOffset,e.length);const l=c?new Array(e.length):new BigUint64Array(e.length);for(let d=0;d<l.length;d++)l[d]=e[d];return l}if(f==="UINT_32"||a?.type==="INTEGER"&&a.bitWidth===32&&!a.isSigned){if(e instanceof Int32Array)return new Uint32Array(e.buffer,e.byteOffset,e.length);const l=c?new Array(e.length):new Uint32Array(e.length);for(let d=0;d<l.length;d++)l[d]=e[d]<0?4294967296+e[d]:e[d];return l}if(a?.type==="FLOAT16")return Array.from(e).map(mi);if(a?.type==="TIMESTAMP"){const{unit:l}=a;let d=r.timestampFromMilliseconds;l==="MICROS"&&(d=r.timestampFromMicroseconds),l==="NANOS"&&(d=r.timestampFromNanoseconds);const h=new Array(e.length);for(let A=0;A<h.length;A++)h[A]=d(e[A]);return h}return e}function pi(e){if(!e.length)return 0;let t=0n;for(const r of e)t=t*256n+BigInt(r);const n=e.length*8;return t>=2n**BigInt(n-1)&&(t-=2n**BigInt(n)),Number(t)}function ho(e){const t=(e>>64n)-2440588n,n=e&0xffffffffffffffffn;return t*86400000000000n+n}function mi(e){if(!e)return;const t=e[1]<<8|e[0],n=t>>15?-1:1,r=t>>10&31,i=t&1023;return r===0?n*2**-14*(i/1024):r===31?i?NaN:n*(1/0):n*2**(r-15)*(1+i/1024)}function Ii(e,t,n){const r=e[t],i=[];let s=1;if(r.num_children)for(;i.length<r.num_children;){const o=e[t+s],f=Ii(e,t+s,[...n,o.name]);s+=f.count,i.push(f)}return{count:s,element:r,children:i,path:n}}function Ei(e,t){let n=Ii(e,0,[]);const r=[n];for(const i of t){const s=n.children.find(o=>o.element.name===i);if(!s)throw new Error(`parquet schema element not found: ${t}`);r.push(s),n=s}return r}function Dn(e){const t=[];function n(r){if(r.children.length)for(const i of r.children)n(i);else t.push(r.path.join("."))}return n(e),t}function bi(e){let t=0;for(const{element:n}of e)n.repetition_type==="REPEATED"&&t++;return t}function Yn(e){let t=0;for(const{element:n}of e.slice(1))n.repetition_type!=="REQUIRED"&&t++;return t}function go(e){if(!e||e.element.converted_type!=="LIST"||e.children.length>1)return!1;const t=e.children[0];return!(t.children.length>1||t.element.repetition_type!=="REPEATED")}function wo(e){if(!e||e.element.converted_type!=="MAP"||e.children.length>1)return!1;const t=e.children[0];return!(t.children.length!==2||t.element.repetition_type!=="REPEATED"||t.children.find(i=>i.element.name==="key")?.element.repetition_type==="REPEATED"||t.children.find(i=>i.element.name==="value")?.element.repetition_type==="REPEATED")}function Bi(e){if(e.length!==2)return!1;const[,t]=e;return!(t.element.repetition_type==="REPEATED"||t.children.length)}const yo=0,Ir=1,Er=2,br=3,po=4,mo=5,Io=6,Eo=7,bo=8,Bo=9,Co=12;function qe(e){const t={};let n=0;for(;e.offset<e.view.byteLength;){const r=e.view.getUint8(e.offset++),i=r&15;if(i===yo)break;const s=r>>4;n=s?n+s:Ci(e),t[`field_${n}`]=cn(e,i)}return t}function cn(e,t){switch(t){case Ir:return!0;case Er:return!1;case br:return e.view.getInt8(e.offset++);case po:case mo:return Ci(e);case Io:return ln(e);case Eo:{const n=e.view.getFloat64(e.offset,!0);return e.offset+=8,n}case bo:{const n=me(e),r=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,n);return e.offset+=n,r}case Bo:{const n=e.view.getUint8(e.offset++),r=n&15;let i=n>>4;i===15&&(i=me(e));const s=r===Ir||r===Er,o=new Array(i);for(let f=0;f<i;f++)o[f]=s?cn(e,br)===1:cn(e,r);return o}case Co:return qe(e);default:throw new Error(`thrift unhandled type: ${t}`)}}function me(e){let t=0,n=0;for(;;){const r=e.view.getUint8(e.offset++);if(t|=(r&127)<<n,!(r&128))return t;n+=7}}function vo(e){let t=0n,n=0n;for(;;){const r=e.view.getUint8(e.offset++);if(t|=BigInt(r&127)<<n,!(r&128))return t;n+=7n}}function Ci(e){const t=me(e);return t>>>1^-(t&1)}function ln(e){const t=vo(e);return t>>1n^-(t&1n)}function So(e,t){const n=new Map,r=t?.find(({key:s})=>s==="geo")?.value,i=(r&&JSON.parse(r)?.columns)??{};for(const[s,o]of Object.entries(i)){if(o.encoding!=="WKB")continue;const f=o.edges==="spherical"?"GEOGRAPHY":"GEOMETRY",a=o.crs?.id??o.crs?.ids?.[0],c=a?`${a.authority}:${a.code.toString()}`:void 0;n.set(s,{type:f,crs:c})}for(let s=1;s<e.length;s++){const{logical_type:o,name:f,num_children:a,type:c}=e[s];if(a){s+=a;continue}c==="BYTE_ARRAY"&&!o&&(e[s].logical_type=n.get(f))}}const xo=1<<19,Lo=new TextDecoder;function ne(e){return e&&Lo.decode(e)}async function Wn(e,{parsers:t,initialFetchSize:n=xo,geoparquet:r=!0}={}){if(!e||!(e.byteLength>=0))throw new Error("parquet expected AsyncBuffer");const i=Math.max(0,e.byteLength-n),s=await e.slice(i,e.byteLength),o=new DataView(s);if(o.getUint32(s.byteLength-4,!0)!==827474256)throw new Error("parquet file invalid (footer != PAR1)");const f=o.getUint32(s.byteLength-8,!0);if(f>e.byteLength-8)throw new Error(`parquet metadata length ${f} exceeds available buffer ${e.byteLength-8}`);if(f+8>n){const a=e.byteLength-f-8,c=await e.slice(a,i),u=new ArrayBuffer(f+8),l=new Uint8Array(u);return l.set(new Uint8Array(c)),l.set(new Uint8Array(s),i-a),Br(u,{parsers:t,geoparquet:r})}else return Br(s,{parsers:t,geoparquet:r})}function Br(e,{parsers:t,geoparquet:n=!0}={}){if(!(e instanceof ArrayBuffer))throw new Error("parquet expected ArrayBuffer");const r=new DataView(e),i={...ct,...t};if(r.byteLength<8)throw new Error("parquet file is too short");if(r.getUint32(r.byteLength-4,!0)!==827474256)throw new Error("parquet file invalid (footer != PAR1)");const s=r.byteLength-8,o=r.getUint32(s,!0);if(o>r.byteLength-8)throw new Error(`parquet metadata length ${o} exceeds available buffer ${r.byteLength-8}`);const f=s-o,c=qe({view:r,offset:f}),u=c.field_1,l=c.field_2.map(p=>({type:wr[p.field_1],type_length:p.field_2,repetition_type:ao[p.field_3],name:ne(p.field_4),num_children:p.field_5,converted_type:co[p.field_6],scale:p.field_7,precision:p.field_8,field_id:p.field_9,logical_type:No(p.field_10)})),d=l.filter(p=>p.type),h=c.field_3,A=c.field_4.map(p=>({columns:p.field_1.map((g,I)=>({file_path:ne(g.field_1),file_offset:g.field_2,meta_data:g.field_3&&{type:wr[g.field_3.field_1],encodings:g.field_3.field_2?.map(E=>he[E]),path_in_schema:g.field_3.field_3.map(ne),codec:lo[g.field_3.field_4],num_values:g.field_3.field_5,total_uncompressed_size:g.field_3.field_6,total_compressed_size:g.field_3.field_7,key_value_metadata:g.field_3.field_8?.map(E=>({key:ne(E.field_1),value:ne(E.field_2)})),data_page_offset:g.field_3.field_9,index_page_offset:g.field_3.field_10,dictionary_page_offset:g.field_3.field_11,statistics:To(g.field_3.field_12,d[I],i),encoding_stats:g.field_3.field_13?.map(E=>({page_type:wi[E.field_1],encoding:he[E.field_2],count:E.field_3})),bloom_filter_offset:g.field_3.field_14,bloom_filter_length:g.field_3.field_15,size_statistics:g.field_3.field_16&&{unencoded_byte_array_data_bytes:g.field_3.field_16.field_1,repetition_level_histogram:g.field_3.field_16.field_2,definition_level_histogram:g.field_3.field_16.field_3},geospatial_statistics:g.field_3.field_17&&{bbox:g.field_3.field_17.field_1&&{xmin:g.field_3.field_17.field_1.field_1,xmax:g.field_3.field_17.field_1.field_2,ymin:g.field_3.field_17.field_1.field_3,ymax:g.field_3.field_17.field_1.field_4,zmin:g.field_3.field_17.field_1.field_5,zmax:g.field_3.field_17.field_1.field_6,mmin:g.field_3.field_17.field_1.field_7,mmax:g.field_3.field_17.field_1.field_8},geospatial_types:g.field_3.field_17.field_2}},offset_index_offset:g.field_4,offset_index_length:g.field_5,column_index_offset:g.field_6,column_index_length:g.field_7,crypto_metadata:g.field_8,encrypted_column_metadata:g.field_9})),total_byte_size:p.field_2,num_rows:p.field_3,sorting_columns:p.field_4?.map(g=>({column_idx:g.field_1,descending:g.field_2,nulls_first:g.field_3})),file_offset:p.field_5,total_compressed_size:p.field_6,ordinal:p.field_7})),y=c.field_5?.map(p=>({key:ne(p.field_1),value:ne(p.field_2)})),w=ne(c.field_6);return n&&So(l,y),{version:u,schema:l,num_rows:h,row_groups:A,key_value_metadata:y,created_by:w,metadata_length:o}}function Ge({schema:e}){return Ei(e,[])[0]}function No(e){return e?.field_1?{type:"STRING"}:e?.field_2?{type:"MAP"}:e?.field_3?{type:"LIST"}:e?.field_4?{type:"ENUM"}:e?.field_5?{type:"DECIMAL",scale:e.field_5.field_1,precision:e.field_5.field_2}:e?.field_6?{type:"DATE"}:e?.field_7?{type:"TIME",isAdjustedToUTC:e.field_7.field_1,unit:Cr(e.field_7.field_2)}:e?.field_8?{type:"TIMESTAMP",isAdjustedToUTC:e.field_8.field_1,unit:Cr(e.field_8.field_2)}:e?.field_10?{type:"INTEGER",bitWidth:e.field_10.field_1,isSigned:e.field_10.field_2}:e?.field_11?{type:"NULL"}:e?.field_12?{type:"JSON"}:e?.field_13?{type:"BSON"}:e?.field_14?{type:"UUID"}:e?.field_15?{type:"FLOAT16"}:e?.field_16?{type:"VARIANT",specification_version:e.field_16.field_1}:e?.field_17?{type:"GEOMETRY",crs:ne(e.field_17.field_1)}:e?.field_18?{type:"GEOGRAPHY",crs:ne(e.field_18.field_1),algorithm:Ao[e.field_18.field_2]}:e}function Cr(e){if(e.field_1)return"MILLIS";if(e.field_2)return"MICROS";if(e.field_3)return"NANOS";throw new Error("parquet time unit required")}function To(e,t,n){return e&&{max:Fe(e.field_1,t,n),min:Fe(e.field_2,t,n),null_count:e.field_3,distinct_count:e.field_4,max_value:Fe(e.field_5,t,n),min_value:Fe(e.field_6,t,n),is_max_value_exact:e.field_7,is_min_value_exact:e.field_8}}function Fe(e,t,n){const{type:r,converted_type:i,logical_type:s}=t;if(e===void 0)return e;if(r==="BOOLEAN")return e[0]===1;if(r==="BYTE_ARRAY")return n.stringFromBytes(e);const o=new DataView(e.buffer,e.byteOffset,e.byteLength);if(r==="FLOAT"&&o.byteLength===4)return o.getFloat32(0,!0);if(r==="DOUBLE"&&o.byteLength===8)return o.getFloat64(0,!0);if(r==="INT32"&&i==="DECIMAL"&&o.byteLength===4)return o.getInt32(0,!0)*10**-(t.scale||0);if(r==="INT64"&&i==="DECIMAL"&&o.byteLength===8)return Number(o.getBigInt64(0,!0))*10**-(t.scale||0);if(r==="INT32"&&i==="DATE")return n.dateFromDays(o.getInt32(0,!0));if(r==="INT64"&&i==="TIMESTAMP_MILLIS")return n.timestampFromMilliseconds(o.getBigInt64(0,!0));if(r==="INT64"&&i==="TIMESTAMP_MICROS")return n.timestampFromMicroseconds(o.getBigInt64(0,!0));if(r==="INT64"&&s?.type==="TIMESTAMP"&&s?.unit==="NANOS")return n.timestampFromNanoseconds(o.getBigInt64(0,!0));if(r==="INT64"&&s?.type==="TIMESTAMP"&&s?.unit==="MICROS")return n.timestampFromMicroseconds(o.getBigInt64(0,!0));if(r==="INT64"&&s?.type==="TIMESTAMP")return n.timestampFromMilliseconds(o.getBigInt64(0,!0));const f=i?.startsWith("UINT_")||s?.type==="INTEGER"&&!s.isSigned;return r==="INT32"&&f&&o.byteLength===4?o.getUint32(0,!0):r==="INT64"&&f&&o.byteLength===8?o.getBigUint64(0,!0):r==="INT32"&&o.byteLength===4?o.getInt32(0,!0):r==="INT64"&&o.byteLength===8?o.getBigInt64(0,!0):i==="DECIMAL"?pi(e)*10**-(t.scale||0):s?.type==="FLOAT16"?mi(e):s?.type==="UUID"?n.uuidFromBytes(e):e}function Uo(e,t,n=void 0){const r={...ct,...n},i=qe(e);return{null_pages:i.field_1,min_values:i.field_2.map(s=>Fe(s,t,r)),max_values:i.field_3.map(s=>Fe(s,t,r)),boundary_order:uo[i.field_4],null_counts:i.field_5,repetition_level_histograms:i.field_6,definition_level_histograms:i.field_7}}function un(e){const t=qe(e);return{page_locations:t.field_1.map(n=>({offset:n.field_1,compressed_page_size:n.field_2,first_row_index:n.field_3})),unencoded_byte_array_data_bytes:t.field_2}}const q=0xffffffffffffffffn,ge=0x9e3779b185ebca87n,Ke=0xc2b2ae3d27d4eb4fn,vr=0x165667b19e3779f9n,vi=0x85ebca77c2b2ae63n,Sr=0x27d4eb2f165667c5n;function ae(e,t){return(e<<t|e>>64n-t)&q}function Te(e,t){return e=e+t*Ke&q,e=ae(e,31n),e*ge&q}function gt(e,t){return e^=Te(0n,t),e*ge+vi&q}function oe(e,t=0n){const n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=e.byteLength;let i=0,s;if(r>=32){let o=t+ge+Ke&q,f=t+Ke&q,a=t,c=t-ge&q;for(;i+32<=r;)o=Te(o,n.getBigUint64(i,!0)),i+=8,f=Te(f,n.getBigUint64(i,!0)),i+=8,a=Te(a,n.getBigUint64(i,!0)),i+=8,c=Te(c,n.getBigUint64(i,!0)),i+=8;s=ae(o,1n)+ae(f,7n)+ae(a,12n)+ae(c,18n)&q,s=gt(s,o),s=gt(s,f),s=gt(s,a),s=gt(s,c)}else s=t+Sr&q;for(s=s+BigInt(r)&q;i+8<=r;)s^=Te(0n,n.getBigUint64(i,!0)),s=ae(s,27n)*ge+vi&q,i+=8;for(i+4<=r&&(s^=BigInt(n.getUint32(i,!0))*ge&q,s=ae(s,23n)*Ke+vr&q,i+=4);i<r;)s^=BigInt(n.getUint8(i))*Sr&q,s=ae(s,11n)*ge&q,i+=1;return s^=s>>33n,s=s*Ke&q,s^=s>>29n,s=s*vr&q,s^=s>>32n,s}const Fo=new TextEncoder,Ro=new Uint32Array([1203114875,1150766481,2284105051,2729912477,1884591559,770785867,2667333959,1550580529]);function Qo(e,t){return Number((e>>32n)*BigInt(t)>>32n)}function ko(e){const t=new Uint32Array(8),n=Number(e&0xffffffffn)|0;for(let r=0;r<8;r++)t[r]=1<<(Math.imul(n,Ro[r])>>>27);return t}function xr(e,t){const n=Qo(t,e.length>>3)<<3,r=ko(t);for(let i=0;i<8;i++)if(!(e[n+i]&r[i]))return!1;return!0}function Mo(e){const t=qe(e),n=t.field_1;if(typeof n!="number"||n<=0||n%32!==0||!t.field_2?.field_1||!t.field_3?.field_1||!t.field_4?.field_1)return;const{view:r,offset:i}=e;if(i+n>r.byteLength)throw new Error(`parquet bloom filter truncated: need ${n} bytes, have ${r.byteLength-i}`);const s=new Uint32Array(n>>2);for(let o=0;o<s.length;o++)s[o]=r.getUint32(i+o*4,!0);return e.offset=i+n,{numBytes:n,blocks:s}}function Lr(e,t){if(e==null)return;const{type:n,converted_type:r,logical_type:i}=t;if(n==="BOOLEAN")return typeof e!="boolean"?void 0:oe(new Uint8Array([e?1:0]));if(n==="FLOAT"){if(typeof e!="number")return;const s=new ArrayBuffer(4);return new DataView(s).setFloat32(0,e,!0),oe(new Uint8Array(s))}if(n==="DOUBLE"){if(typeof e!="number")return;const s=new ArrayBuffer(8);return new DataView(s).setFloat64(0,e,!0),oe(new Uint8Array(s))}if(n==="INT32"){if(r==="DATE"||r==="DECIMAL"||r==="TIME_MILLIS"||i?.type==="DATE"||i?.type==="TIME"||i?.type==="DECIMAL"||typeof e!="number"||!Number.isInteger(e))return;const s=new ArrayBuffer(4);return new DataView(s).setInt32(0,e|0,!0),oe(new Uint8Array(s))}if(n==="INT64"){if(r==="TIMESTAMP_MILLIS"||r==="TIMESTAMP_MICROS"||r==="TIME_MICROS"||r==="DECIMAL"||i?.type==="TIMESTAMP"||i?.type==="TIME"||i?.type==="DECIMAL")return;let s;if(typeof e=="bigint")s=e;else if(typeof e=="number"&&Number.isSafeInteger(e))s=BigInt(e);else return;const o=new ArrayBuffer(8);return new DataView(o).setBigUint64(0,BigInt.asUintN(64,s),!0),oe(new Uint8Array(o))}if(n==="BYTE_ARRAY")return r==="JSON"||r==="BSON"||r==="DECIMAL"||i?.type==="JSON"||i?.type==="BSON"||i?.type==="VARIANT"||i?.type==="GEOMETRY"||i?.type==="GEOGRAPHY"?void 0:typeof e=="string"?oe(Fo.encode(e)):e instanceof Uint8Array?oe(e):void 0;if(n==="FIXED_LEN_BYTE_ARRAY")return r==="DECIMAL"||r==="INTERVAL"||i?.type==="DECIMAL"||i?.type==="UUID"||i?.type==="FLOAT16"||i?.type==="GEOMETRY"||i?.type==="GEOGRAPHY"?void 0:e instanceof Uint8Array?oe(e):void 0}function Po(e){const t=new Set;return dn(e,t),t}function dn(e,t){if(e){if("$and"in e&&Array.isArray(e.$and)){for(const n of e.$and)dn(n,t);return}if("$or"in e&&Array.isArray(e.$or)){for(const n of e.$or)dn(n,t);return}if(!("$nor"in e))for(const[n,r]of Object.entries(e))n.startsWith("$")||(typeof r=="object"&&r!==null&&!Array.isArray(r)?("$eq"in r||"$in"in r)&&t.add(n):t.add(n))}}function Si(e,t){for(let r=0;r<t.length;r+=1e4)e.push(...t.slice(r,r+1e4))}function J(e,t,n=!0){if(n?e===t:e==t)return!0;if(!e||!t||typeof e!="object"||typeof t!="object")return!1;if(e instanceof Uint8Array&&t instanceof Uint8Array){if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(e[i]!==t[i])return!1;return!0}if(e instanceof Date||t instanceof Date)return e instanceof Date&&t instanceof Date&&e.getTime()===t.getTime();if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(!J(e[i],t[i],n))return!1;return!0}const r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(const i of r)if(!J(e[i],t[i],n))return!1;return!0}async function Nr(e,t={},n=globalThis.fetch){const r=new AbortController,i=new Headers(t.headers);i.set("Range","bytes=0-0");const s=await n(e,{...t,headers:i,signal:r.signal});if(!s.ok)throw new Error(`fetch with range failed ${s.status}`);if(s.status===206){const o=s.headers.get("Content-Range");if(!o)throw new Error("missing content-range header");const f=o.match(/bytes \d+-\d+\/(\d+)/);if(!f)throw new Error(`invalid content-range header: ${o}`);return parseInt(f[1])}if(s.status===200){const o=s.headers.get("Content-Length");if(r.abort(),o)return parseInt(o)}throw new Error("server does not support range requests and missing content-length")}async function Oo(e,t,n){const r=n??globalThis.fetch,i=await r(e,{...t,method:"HEAD"});if(i.status===403)return Nr(e,t,r);if(!i.ok)throw new Error(`fetch head failed ${i.status}`);const s=i.headers.get("Content-Length");return s?parseInt(s):Nr(e,t,r)}async function Do({url:e,byteLength:t,requestInit:n,fetch:r}){if(!e)throw new Error("missing url");const i=r??globalThis.fetch;t??=await Oo(e,n,i);let s;const o=n||{};return{byteLength:t,async slice(f,a){if(s)return s.then(d=>d.slice(f,a));const c=new Headers(o.headers),u=a===void 0?"":a-1;c.set("Range",`bytes=${f}-${u}`);const l=await i(e,{...o,headers:c});if(!l.ok||!l.body)throw new Error(`fetch failed ${l.status}`);if(l.status===200)return s=l.arrayBuffer(),s.then(d=>d.slice(f,a));if(l.status===206)return l.arrayBuffer();throw new Error(`fetch received unexpected status code ${l.status}`)}}}function xi(e){if(!e)return[];if(e.length===1)return e[0];const t=[];for(const n of e)Si(t,n);return t}const Tr=new TextEncoder;function $e(e){if(!e)return[];const t=[];return"$and"in e&&Array.isArray(e.$and)?t.push(...e.$and.flatMap($e)):"$or"in e&&Array.isArray(e.$or)?t.push(...e.$or.flatMap($e)):"$nor"in e&&Array.isArray(e.$nor)?t.push(...e.$nor.flatMap($e)):t.push(...Object.keys(e)),[...new Set(t)]}function Li(e){return[...new Set($e(e).map(t=>t.split(".")[0]))]}function pe(e,t,n=!0){return"$and"in t&&Array.isArray(t.$and)?t.$and.every(r=>pe(e,r,n)):"$or"in t&&Array.isArray(t.$or)?t.$or.some(r=>pe(e,r,n)):"$nor"in t&&Array.isArray(t.$nor)?!t.$nor.some(r=>pe(e,r,n)):Object.entries(t).every(([r,i])=>{const s=qo(e,r);return typeof i!="object"||i===null||Array.isArray(i)?J(s,i,n):Object.entries(i||{}).every(([o,f])=>o==="$gt"?s!=null&&s>f:o==="$gte"?s!=null&&s>=f:o==="$lt"?s!=null&&s<f:o==="$lte"?s!=null&&s<=f:o==="$eq"?J(s,f,n):o==="$ne"?!J(s,f,n):o==="$in"?Array.isArray(f)&&Ur(s,f,n):o==="$nin"?Array.isArray(f)&&!Ur(s,f,n):o==="$not"?!pe({value:s},{value:f},n):!0)})}function Ur(e,t,n){return t.some(r=>J(e,r,n)||Array.isArray(e)&&e.some(i=>J(i,r,n)))}function rt({rowGroup:e,physicalColumns:t,filter:n,strict:r=!0,bloomFilters:i,schemaElements:s}){if(!n)return!1;if("$and"in n&&Array.isArray(n.$and))return n.$and.some(o=>rt({rowGroup:e,physicalColumns:t,filter:o,strict:r,bloomFilters:i,schemaElements:s}));if("$or"in n&&Array.isArray(n.$or))return n.$or.every(o=>rt({rowGroup:e,physicalColumns:t,filter:o,strict:r,bloomFilters:i,schemaElements:s}));if("$nor"in n&&Array.isArray(n.$nor))return!1;for(const[o,f]of Object.entries(n)){const a=t.indexOf(o);if(a===-1)continue;const c=e.columns[a].meta_data?.statistics,{min:u,max:l,min_value:d,max_value:h,null_count:A}=c||{},y=d!==void 0?d:u,w=h!==void 0?h:l,p=y!==void 0&&w!==void 0,g=i?.[o],I=s?.[o],E=pe({value:null},{value:f},r)&&(A===void 0||A>0);if(p&&!E&&Ni(f,y,w,r,I))return!0;for(const[B,b]of Object.entries(f||{}))if(g&&I){if(B==="$eq"){const v=Lr(b,I);if(v!==void 0&&!xr(g.blocks,v))return!0}if(B==="$in"&&Array.isArray(b)&&b.length>0){let v=!0;for(const L of b){const T=Lr(L,I);if(T===void 0||xr(g.blocks,T)){v=!1;break}}if(v)return!0}}}return!1}function Ni(e,t,n,r,i){if(t===void 0||n===void 0)return!1;const s=i?.type==="FLOAT"||i?.type==="DOUBLE"||i?.logical_type?.type==="FLOAT16";for(const[o,f]of Object.entries(e||{})){const a=Le(t,f,r,i),c=Le(n,f,r,i),l=!(t instanceof Uint8Array||n instanceof Uint8Array)&&(i?.type!=="BYTE_ARRAY"||typeof f=="string"&&[...f].every(d=>d.charCodeAt(0)<=127));if(o==="$gt"&&l&&c!==void 0&&c<=0||o==="$gte"&&l&&c!==void 0&&c<0||o==="$lt"&&l&&a!==void 0&&a>=0||o==="$lte"&&l&&a!==void 0&&a>0)return!0;if(o==="$eq"){const d=Le(f,t,r,i),h=Le(f,n,r,i);if(d!==void 0&&d<0||h!==void 0&&h>0)return!0}if(o==="$ne"&&!s&&J(t,n,r)&&J(t,f,r)||o==="$in"&&Array.isArray(f)&&f.every(d=>{const h=Le(d,t,r,i),A=Le(d,n,r,i);return h!==void 0&&h<0||A!==void 0&&A>0})||o==="$nin"&&!s&&Array.isArray(f)&&J(t,n,r)&&f.some(d=>J(t,d,r)))return!0}return!1}function Le(e,t,n,r){if(r?.type==="BYTE_ARRAY")return typeof e!="string"||typeof t!="string"?void 0:Fr(Tr.encode(e),Tr.encode(t));if(e instanceof Uint8Array||t instanceof Uint8Array)return!(e instanceof Uint8Array)||!(t instanceof Uint8Array)?void 0:Fr(e,t);if(e<t)return-1;if(e>t)return 1;if(J(e,t,n))return 0}function Fr(e,t){const n=Math.min(e.length,t.length);for(let r=0;r<n;r++){if(e[r]<t[r])return-1;if(e[r]>t[r])return 1}return e.length<t.length?-1:e.length>t.length?1:0}function Yo(e,t){return pe({value:null},{value:e},t)}function An(e,t,n,r=!0){if(!e)return;if("$and"in e&&Array.isArray(e.$and)){let s;for(const o of e.$and)s=Rr(s,An(o,t,n,r));return s}if("$or"in e&&Array.isArray(e.$or)){let s=[];for(const o of e.$or){const f=An(o,t,n,r);if(!f)return;s=Wo(s,f)}return s}if("$nor"in e&&Array.isArray(e.$nor))return;let i;for(const[s,o]of Object.entries(e)){const f=t[s];if(!f)continue;const a=Yo(o,r),c=[];for(let u=0;u<f.pageStarts.length;u++){const l=f.pageStarts[u],d=u+1<f.pageStarts.length?f.pageStarts[u+1]:n,h=f.nullCounts?.[u],A=a&&(h===void 0||h>0);if(!(!f.nullPages[u]&&!A&&Ni(o,f.minValues[u],f.maxValues[u],r,f.element))){const w=c[c.length-1];w&&w[1]===l?w[1]=d:c.push([l,d])}}i=Rr(i,c)}return i}function Rr(e,t){if(!e)return t;if(!t)return e;const n=[];let r=0,i=0;for(;r<e.length&&i<t.length;){const s=Math.max(e[r][0],t[i][0]),o=Math.min(e[r][1],t[i][1]);s<o&&n.push([s,o]),e[r][1]<t[i][1]?r++:i++}return n}function Wo(e,t){const n=[];let r=0,i=0;for(;r<e.length||i<t.length;){const s=i>=t.length||r<e.length&&e[r][0]<=t[i][0]?e[r++]:t[i++],o=n[n.length-1];o&&s[0]<=o[1]?o[1]=Math.max(o[1],s[1]):n.push([s[0],s[1]])}return n}function qo(e,t){let n=e;for(const r of t.split("."))n=n?.[r];return n}const Go=1<<21;function zo(e){const{metadata:t,rowStart:n=0,columns:r,useOffsetIndex:i=!1}=e;if(!t)throw new Error("parquetPlan requires metadata");const s=[],o=[],f=[],a=Vo(e);for(const c of a.groups){const u=Ho({...c,columns:r,useOffsetIndex:i});s.push(...u.groups),o.push(...u.fetches),f.push(...u.indexes)}return o.push(...f),{metadata:t,rowStart:n,rowEnd:a.rowEnd,columns:r,fetches:o,groups:s}}function Vo({metadata:e,rowStart:t=0,rowEnd:n=1/0,columns:r,filter:i,filterStrict:s=!0,bloomFiltersByGroup:o,schemaElements:f,pageRangesByGroup:a,pageLocationsByGroup:c}){if(!e)throw new Error("parquetPlan requires metadata");const u=Ge(e),l=Dn(u),d=i?{...Ti(u),...f}:f,h=[];let A=0;for(let y=0;y<e.row_groups.length;y++){const w=e.row_groups[y],p=Number(w.num_rows),g=A+p;if(p>0&&g>t&&A<n&&!rt({rowGroup:w,physicalColumns:l,filter:i,strict:s,bloomFilters:o?.[y],schemaElements:d})){const I=Math.max(t-A,0),E=Math.min(n-A,p),B=a?.[y],b=c?.[y];let v=B?B.map(([L,T])=>[Math.max(L,I),Math.min(T,E)]).filter(([L,T])=>L<T):[[I,E]];v.length>1&&(v=w.columns.every(T=>{const F=T.meta_data?.path_in_schema[0],R=T.meta_data?.path_in_schema.join(".");return r&&F&&!r.includes(F)?!0:!!(T.offset_index_offset&&T.offset_index_length)||!!(R&&b?.[R])})?Zo(v,w,r,b):[[v[0][0],v[v.length-1][1]]]),v.length&&h.push({rowGroup:w,groupIndex:y,groupStart:A,groupRows:p,ranges:v,pageRanges:B,pageLocations:b})}A=g}return{groups:h,rowEnd:isFinite(n)?n:A}}function Ho({rowGroup:e,groupStart:t,groupRows:n,ranges:r,columns:i,useOffsetIndex:s=!1,pageRanges:o,pageLocations:f}){const a=[],c=[],u=[],l=r.length>1||r[0][0]>0||r[0][1]<n;for(const A of e.columns){const y=A.meta_data;if(A.file_path)throw new Error("parquet file_path not supported");if(!y)throw new Error("parquet column metadata is undefined");if(i&&!i.includes(y.path_in_schema[0]))continue;const w=y.dictionary_page_offset||y.data_page_offset,p=Number(w),g=Number(w+y.total_compressed_size),I=f?.[y.path_in_schema.join(".")];if(I&&l)a.push({columnMetadata:y,pageLocations:I,range:{startByte:p,endByte:g}});else if((s||o)&&A.offset_index_offset&&A.offset_index_length&&l){const E=Number(A.offset_index_offset);a.push({columnMetadata:y,offsetIndex:{startByte:E,endByte:E+A.offset_index_length},range:{startByte:Number(w),endByte:g}})}else a.push({columnMetadata:y,range:{startByte:p,endByte:g}})}let d;for(const A of a)"pageLocations"in A||("offsetIndex"in A?u.push(A.offsetIndex):i?c.push(A.range):d&&A.range.endByte-d.startByte<=Go?d.endByte=A.range.endByte:(d&&c.push(d),d={...A.range}));return d&&c.push(d),{groups:r.map(([A,y])=>({chunks:a,rowGroup:e,groupStart:t,groupRows:n,selectStart:A,selectEnd:y})),fetches:c,indexes:u}}function Zo(e,t,n,r){const i=t.columns.filter(o=>!n||n.includes(o.meta_data?.path_in_schema[0]||"")).map(o=>r?.[o.meta_data?.path_in_schema.join(".")||""]),s=[];for(const o of e){const f=s[s.length-1],a=f&&i.some(c=>{if(!c)return!0;const u=Qr(f,c,Number(t.num_rows)),l=Qr(o,c,Number(t.num_rows));return u[0]<=l[1]&&l[0]<=u[1]});f&&a?f[1]=o[1]:s.push([...o])}return s}function Qr([e,t],n,r){let i=1/0,s=-1/0;for(let o=0;o<n.length;o++){const f=Number(n[o].first_row_index);(o+1<n.length?Number(n[o+1].first_row_index):r)>e&&f<t&&(i=Math.min(i,o),s=o)}return[i,s]}async function jo({file:e,metadata:t,filter:n,filterStrict:r=!0}){const i=t.row_groups.map(()=>({})),s=Po(n);if(s.size===0)return i;const o=Dn(Ge(t)),f=[];return t.row_groups.forEach((a,c)=>{if(!rt({rowGroup:a,physicalColumns:o,filter:n,strict:r}))for(const u of s){const l=o.indexOf(u);if(l===-1)continue;const d=a.columns[l]?.meta_data;if(!d?.bloom_filter_offset||!d.bloom_filter_length)continue;const h=Number(d.bloom_filter_offset),A=h+d.bloom_filter_length;f.push((async()=>{const y=await e.slice(h,A),w=Mo({view:new DataView(y),offset:0});w&&(i[c][u]=w)})())}}),f.length&&await Promise.all(f),i}async function Jo({file:e,metadata:t,filter:n,filterStrict:r=!0,rowStart:i=0,rowEnd:s=1/0,columns:o,bloomFiltersByGroup:f,schemaElements:a,parsers:c}){const u=t.row_groups.map(()=>{}),l=t.row_groups.map(()=>({}));if(n&&"$nor"in n&&Array.isArray(n.$nor))return{pageRangesByGroup:u,pageLocationsByGroup:l};const d=$e(n);if(!d.length)return{pageRangesByGroup:u,pageLocationsByGroup:l};const h=Ge(t),A=Dn(h),y={...Ti(h),...a},w=[],p=[],g=[];let I=0;if(t.row_groups.forEach((E,B)=>{const b=Number(E.num_rows),v=I+b,L=b>0&&v>i&&I<s;if(I=v,!L||rt({rowGroup:E,physicalColumns:A,filter:n,strict:r,bloomFilters:f?.[B],schemaElements:y}))return;const T={};let F=0;const R=new Set;let W=!1;for(const U of d){const N=A.indexOf(U);if(N===-1)continue;const S=E.columns[N];if(!S?.meta_data||!S.column_index_offset||!S.column_index_length||!S.offset_index_offset||!S.offset_index_length)continue;const z=y[U];if(!z)continue;W=!0,R.add(U);const V=Number(S.column_index_offset),Z=Number(S.offset_index_offset),H=V+S.column_index_length,$=Z+S.offset_index_length;w.push({startByte:V,endByte:H},{startByte:Z,endByte:$}),F++,p.push(async re=>{const[ue,x]=await Promise.all([re.slice(V,H),re.slice(Z,$)]),K=Uo({view:new DataView(ue),offset:0},z,c),ee=un({view:new DataView(x),offset:0});l[B][U]=ee.page_locations,T[U]={minValues:K.min_values,maxValues:K.max_values,nullPages:K.null_pages,nullCounts:K.null_counts,pageStarts:ee.page_locations.map(X=>Number(X.first_row_index)),element:z}})}if(W)for(const U of E.columns){const N=U.meta_data;if(!N)continue;const S=N.path_in_schema[0],k=N.path_in_schema.join(".");if(o&&!o.includes(S)||R.has(k)||!U.offset_index_offset||!U.offset_index_length)continue;R.add(k);const z=Number(U.offset_index_offset),V=z+U.offset_index_length;w.push({startByte:z,endByte:V}),F++,p.push(async Z=>{const H=await Z.slice(z,V),$=un({view:new DataView(H),offset:0});l[B][k]=$.page_locations})}F&&g.push({rgIdx:B,groupRows:b,columnPages:T})}),p.length){const E=Ui(e,{fetches:Ko(w)});await Promise.all(p.map(B=>B(E)));for(const{rgIdx:B,groupRows:b,columnPages:v}of g)u[B]=An(n,v,b,r)}return{pageRangesByGroup:u,pageLocationsByGroup:l}}function Ko(e){const t=e.map(r=>({...r})).sort((r,i)=>r.startByte-i.startByte||r.endByte-i.endByte),n=[];for(const r of t){const i=n[n.length-1];i&&r.startByte<=i.endByte?i.endByte=Math.max(i.endByte,r.endByte):n.push(r)}return n}function Ti(e){const t={};function n(r){if(r.children.length)for(const i of r.children)n(i);else t[r.path.join(".")]=r.element}return n(e),t}function Ui(e,{fetches:t}){const n=t.map(({startByte:r,endByte:i})=>e.slice(r,i));return{byteLength:e.byteLength,slice(r,i=e.byteLength){const s=t.findIndex(({startByte:o,endByte:f})=>o<=r&&i<=f);if(s<0)return e.slice(r,i);if(t[s].startByte!==r||t[s].endByte!==i){const o=r-t[s].startByte,f=i-t[s].startByte;return n[s]instanceof Promise?n[s].then(a=>a.slice(o,f)):n[s].slice(o,f)}else return n[s]}}}const qn=new TextDecoder,kr=new WeakMap;function Fi(e,t=ct){if(Array.isArray(e))return e.map(n=>Fi(n,t));if(typeof e!="object")return e;if("metadata"in e){const n=Xo(e.metadata),r=e.typed_value&&Et(e.typed_value,n,t),i=e.value&&it(Nt(e.value),n,t);return r&&i?{...i,...r}:r??i}return e}function Et(e,t,n){if(e instanceof Date)return e;if(e&&typeof e=="object"&&!Array.isArray(e)&&!(e instanceof Uint8Array)){if("typed_value"in e&&e.typed_value!==null&&e.typed_value!==void 0)return Et(e.typed_value,t,n);if("value"in e&&e.value instanceof Uint8Array)return it(Nt(e.value),t,n);if("typed_value"in e||"value"in e)return null;const r={};for(const[i,s]of Object.entries(e))t.dictionary.includes(i)&&(r[i]=Et(s,t,n));return r}return e instanceof Uint8Array?it(Nt(e),t,n):Array.isArray(e)?e.map(r=>Et(r,t,n)):e}function Nt(e){return{view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0}}function Xo(e){let t=kr.get(e.buffer);t||(t=new Map,kr.set(e.buffer,t));const n=`${e.byteOffset}:${e.byteLength}`,r=t.get(n);if(r)return r;const i=Nt(e),s=i.view.getUint8(i.offset++),o=s&15;if(o!==1)throw new Error(`parquet unsupported variant metadata version: ${o}`);const f=(s>>4&1)===1,a=(s>>6&3)+1,c=Ie(i,a),u=new Array(c+1);for(let A=0;A<u.length;A++)u[A]=Ie(i,a);const l=i.offset,d=new Array(c);for(let A=0;A<c;A++){const y=u[A],w=u[A+1],p=new Uint8Array(e.buffer,e.byteOffset+l+y,w-y);d[A]=qn.decode(p)}const h={dictionary:d,sorted:f};return t.set(n,h),h}function Ie(e,t){let n=0;for(let r=0;r<t;r++)n|=e.view.getUint8(e.offset+r)<<r*8;return e.offset+=t,n}function it(e,t,n){const r=e.view.getUint8(e.offset++),i=r&3,s=r>>2;if(i===0)return _o(e,s,n);if(i===2)return $o(e,s,t,n);if(i===3)return ef(e,s,t,n);const o=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,s);return e.offset+=s,qn.decode(o)}function _o(e,t,n){switch(t){case 0:return null;case 1:return!0;case 2:return!1;case 3:{const r=e.view.getInt8(e.offset);return e.offset+=1,r}case 4:{const r=e.view.getInt16(e.offset,!0);return e.offset+=2,r}case 5:{const r=e.view.getInt32(e.offset,!0);return e.offset+=4,r}case 6:{const r=e.view.getBigInt64(e.offset,!0);return e.offset+=8,r}case 7:{const r=e.view.getFloat64(e.offset,!0);return e.offset+=8,r}case 8:return Zt(e,4);case 9:return Zt(e,8);case 10:return Zt(e,16);case 11:{const r=e.view.getInt32(e.offset,!0);return e.offset+=4,n.dateFromDays(r)}case 12:case 13:{const r=e.view.getBigInt64(e.offset,!0);return e.offset+=8,n.timestampFromMicroseconds(r)}case 14:{const r=e.view.getFloat32(e.offset,!0);return e.offset+=4,r}case 15:return Mr(e);case 16:{const r=Mr(e);return qn.decode(r)}case 17:{const r=e.view.getBigInt64(e.offset,!0);return e.offset+=8,r}case 18:case 19:{const r=e.view.getBigInt64(e.offset,!0);return e.offset+=8,n.timestampFromNanoseconds(r)}case 20:{const r=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,16);e.offset+=16;const i=Array.from(r,s=>s.toString(16).padStart(2,"0")).join("");return`${i.slice(0,8)}-${i.slice(8,12)}-${i.slice(12,16)}-${i.slice(16,20)}-${i.slice(20)}`}default:throw new Error(`parquet unsupported variant primitive type: ${t}`)}}function $o(e,t,n,r){const i=(t&3)+1,s=(t>>2&3)+1,f=t>>4&1?Ie(e,4):e.view.getUint8(e.offset++),a=new Array(f);for(let l=0;l<f;l++)a[l]=Ie(e,s);const c=new Array(f+1);for(let l=0;l<c.length;l++)c[l]=Ie(e,i);const u={};for(let l=0;l<f;l++){const d=n.dictionary[a[l]],h={view:e.view,offset:e.offset+c[l]};u[d]=it(h,n,r)}return e.offset+=c[c.length-1],u}function ef(e,t,n,r){const i=t&3,s=t>>2&1,o=i+1,f=Ie(e,s?4:1),a=new Array(f+1);for(let l=0;l<a.length;l++)a[l]=Ie(e,o);const c=e.offset,u=new Array(f);for(let l=0;l<f;l++){const d={view:e.view,offset:c+a[l]};u[l]=it(d,n,r)}return e.offset=c+a[a.length-1],u}function Zt(e,t){const n=e.view.getUint8(e.offset);e.offset+=1;let r;if(t===4)r=BigInt(e.view.getInt32(e.offset,!0)),e.offset+=4;else if(t===8)r=e.view.getBigInt64(e.offset,!0),e.offset+=8;else{const i=e.view.getBigUint64(e.offset,!0);r=e.view.getBigInt64(e.offset+8,!0)<<64n|i,e.offset+=16}return Number(r)*10**-n}function Mr(e){const t=e.view.getUint32(e.offset,!0);e.offset+=4;const n=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t,n}function Pr(e,t,n,r,i){const s=Yn(i);if(!t?.length&&!n.length){if(!s||!r.length)return r;t=new Array(r.length).fill(s)}const o=t?.length||n.length,f=i.map(({element:A})=>A.repetition_type);let a=0;const c=[e];let u=e,l=0,d=0,h=0;if(n[0])for(;l<f.length-2&&h<n[0];)l++,f[l]!=="REQUIRED"&&(u=u.at(-1),c.push(u),d++),f[l]==="REPEATED"&&h++;for(let A=0;A<o;A++){const y=t?.length?t[A]:s,w=n[A];for(;l&&(w<h||f[l]!=="REPEATED");)f[l]!=="REQUIRED"&&(c.pop(),d--),f[l]==="REPEATED"&&h--,l--;for(u=c.at(-1);(l<f.length-2||f[l+1]==="REPEATED")&&(d<y||f[l+1]==="REQUIRED");){if(l++,f[l]!=="REQUIRED"){const p=[];u.push(p),u=p,c.push(p),d++}f[l]==="REPEATED"&&h++}y===s?u.push(r[a++]):l===f.length-2?u.push(null):u.push([])}if(!e.length)for(let A=0;A<s;A++){const y=[];u.push(y),u=y}return e}function Xe(e,t,n,r=0){const i=t.path.join("."),s=t.element.repetition_type==="OPTIONAL",o=s?r+1:r;if(go(t)){let f=t.children[0],a=o;f.children.length===1&&(f=f.children[0],a++),Xe(e,f,n,a);const c=f.path.join("."),u=e.get(c);if(!u)throw new Error("parquet list column missing values");s&&bt(u,r),e.set(i,u),e.delete(c);return}if(wo(t)){const f=t.children[0].element.name;Xe(e,t.children[0].children[0],n,o+1),Xe(e,t.children[0].children[1],n,o+1);const a=e.get(`${i}.${f}.key`),c=e.get(`${i}.${f}.value`);if(!a)throw new Error("parquet map column missing keys");if(!c)throw new Error("parquet map column missing values");if(a.length!==c.length)throw new Error("parquet map column key/value length mismatch");const u=Ri(a,c,o);s&&bt(u,r),e.delete(`${i}.${f}.key`),e.delete(`${i}.${f}.value`),e.set(i,u);return}if(t.children.length){const f=t.element.repetition_type==="REQUIRED"?r:r+1,a={};for(const u of t.children){Xe(e,u,n,f);const l=e.get(u.path.join("."));if(!l)throw new Error("parquet struct missing child data");a[u.element.name]=l}for(const u of t.children)e.delete(u.path.join("."));let c=Qi(a,f);t.element.logical_type?.type==="VARIANT"&&(c=Fi(c,n)),s&&bt(c,r),e.set(i,c)}}function bt(e,t){for(let n=0;n<e.length;n++)t?bt(e[n],t-1):e[n]=e[n][0]}function Ri(e,t,n){const r=[];for(let i=0;i<e.length;i++)if(n)r.push(Ri(e[i],t[i],n-1));else if(e[i]){const s={};for(let o=0;o<e[i].length;o++){const f=t[i][o];s[e[i][o]]=f===void 0?null:f}r.push(s)}else r.push(void 0);return r}function Qi(e,t){const n=Object.keys(e),r=e[n[0]]?.length,i=[];for(let s=0;s<r;s++){const o={};for(const f of n){if(e[f].length!==r)throw new Error("parquet struct parsing error");o[f]=e[f][s]}t?i.push(Qi(o,t-1)):i.push(o)}return i}function st(e,t,n){const r=n instanceof Int32Array,i=me(e),s=me(e);me(e);let o=ln(e),f=0;n[f++]=r?Number(o):o;const a=i/s;for(;f<t;){const c=ln(e),u=new Uint8Array(s);for(let l=0;l<s;l++)u[l]=e.view.getUint8(e.offset++);for(let l=0;l<s&&f<t;l++){const d=BigInt(u[l]);if(d){let h=0n,A=a;const y=(1n<<d)-1n;for(;A&&f<t;){let w=BigInt(e.view.getUint8(e.offset))>>h&y;for(h+=d;h>=8;)h-=8n,e.offset++,h&&(w|=BigInt(e.view.getUint8(e.offset))<<d-h&y);const p=c+w;o+=p,n[f++]=r?Number(o):o,A--}A&&(e.offset+=Math.ceil((A*Number(d)+Number(h))/8))}else for(let h=0;h<a&&f<t;h++)o+=c,n[f++]=r?Number(o):o}}}function ki(e,t,n){const r=new Int32Array(t);st(e,t,r);for(let i=0;i<t;i++)n[i]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,r[i]),e.offset+=r[i]}function tf(e,t,n){const r=new Int32Array(t);st(e,t,r);const i=new Int32Array(t);st(e,t,i);for(let s=0;s<t;s++){const o=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,i[s]);r[s]?(n[s]=new Uint8Array(r[s]+i[s]),n[s].set(n[s-1].subarray(0,r[s])),n[s].set(o,r[s])):n[s]=o,e.offset+=i[s]}}function le(e,t,n,r){r===void 0&&(r=e.view.getUint32(e.offset,!0),e.offset+=4);const i=e.offset;let s=0;for(;s<n.length;){const o=me(e);if(o&1)s=rf(e,o,t,n,s);else{const f=o>>>1;nf(e,f,t,n,s),s+=f}}e.offset=i+r}function nf(e,t,n,r,i){const s=n+7>>3;let o=0;for(let f=0;f<s;f++)o|=e.view.getUint8(e.offset++)<<(f<<3);for(let f=0;f<t;f++)r[i+f]=o}function rf(e,t,n,r,i){let s=t>>1<<3;const o=(1<<n)-1;let f=0;if(e.offset<e.view.byteLength)f=e.view.getUint8(e.offset++);else if(o)throw new Error(`parquet bitpack offset ${e.offset} out of range`);let a=8,c=0;for(;s;)c>8?(c-=8,a-=8,f>>>=8):a-c<n?(f|=e.view.getUint8(e.offset)<<a,e.offset++,a+=8):(i<r.length&&(r[i++]=f>>c&o),s--,c+=n);return i}function Mi(e,t,n,r){const i=sf(n,r),s=new Uint8Array(t*i);for(let o=0;o<i;o++)for(let f=0;f<t;f++)s[f*i+o]=e.view.getUint8(e.offset++);if(n==="FLOAT")return new Float32Array(s.buffer);if(n==="DOUBLE")return new Float64Array(s.buffer);if(n==="INT32")return new Int32Array(s.buffer);if(n==="INT64")return new BigInt64Array(s.buffer);if(n==="FIXED_LEN_BYTE_ARRAY"){const o=new Array(t);for(let f=0;f<t;f++)o[f]=s.subarray(f*i,(f+1)*i);return o}throw new Error(`parquet byte_stream_split unsupported type: ${n}`)}function sf(e,t){switch(e){case"INT32":case"FLOAT":return 4;case"INT64":case"DOUBLE":return 8;case"FIXED_LEN_BYTE_ARRAY":if(!t)throw new Error("parquet byteWidth missing type_length");return t;default:throw new Error(`parquet unsupported type: ${e}`)}}function Gn(e,t,n,r){if(n===0)return[];if(t==="BOOLEAN")return of(e,n);if(t==="INT32")return ff(e,n);if(t==="INT64")return af(e,n);if(t==="INT96")return cf(e,n);if(t==="FLOAT")return lf(e,n);if(t==="DOUBLE")return uf(e,n);if(t==="BYTE_ARRAY")return df(e,n);if(t==="FIXED_LEN_BYTE_ARRAY"){if(!r)throw new Error("parquet missing fixed length");return Af(e,n,r)}else throw new Error(`parquet unhandled type: ${t}`)}function of(e,t){const n=new Array(t);for(let r=0;r<t;r++){const i=e.offset+(r/8|0),s=r%8,o=e.view.getUint8(i);n[r]=(o&1<<s)!==0}return e.offset+=Math.ceil(t/8),n}function ff(e,t){const n=(e.view.byteOffset+e.offset)%4?new Int32Array(kt(e.view.buffer,e.view.byteOffset+e.offset,t*4)):new Int32Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*4,n}function af(e,t){const n=(e.view.byteOffset+e.offset)%8?new BigInt64Array(kt(e.view.buffer,e.view.byteOffset+e.offset,t*8)):new BigInt64Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*8,n}function cf(e,t){const n=new Array(t);for(let r=0;r<t;r++){const i=e.view.getBigInt64(e.offset+r*12,!0),s=e.view.getInt32(e.offset+r*12+8,!0);n[r]=BigInt(s)<<64n|i}return e.offset+=t*12,n}function lf(e,t){const n=(e.view.byteOffset+e.offset)%4?new Float32Array(kt(e.view.buffer,e.view.byteOffset+e.offset,t*4)):new Float32Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*4,n}function uf(e,t){const n=(e.view.byteOffset+e.offset)%8?new Float64Array(kt(e.view.buffer,e.view.byteOffset+e.offset,t*8)):new Float64Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t*8,n}function df(e,t){const n=new Array(t);for(let r=0;r<t;r++){const i=e.view.getUint32(e.offset,!0);e.offset+=4,n[r]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,i),e.offset+=i}return n}function Af(e,t,n){const r=new Array(t);for(let i=0;i<t;i++)r[i]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,n),e.offset+=n;return r}function kt(e,t,n){const r=new ArrayBuffer(n);return new Uint8Array(r).set(new Uint8Array(e,t,n)),r}const hf=[0,255,65535,16777215,4294967295];function Or(e,t,n,r,i){for(let s=0;s<i;s++)n[r+s]=e[t+s]}function gf(e,t){const n=e.byteLength,r=t.byteLength;let i=0,s=0;for(;i<n;){const o=e[i];if(i++,o<128)break}if(r&&i>=n)throw new Error("invalid snappy length header");for(;i<n;){const o=e[i];let f=0;if(i++,i>=n)throw new Error("missing eof marker");if(o&3){let a=0;switch(o&3){case 1:f=(o>>>2&7)+4,a=e[i]+(o>>>5<<8),i++;break;case 2:if(n<=i+1)throw new Error("snappy error end of input");f=(o>>>2)+1,a=e[i]+(e[i+1]<<8),i+=2;break;case 3:if(n<=i+3)throw new Error("snappy error end of input");f=(o>>>2)+1,a=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+(e[i+3]<<24),i+=4;break}if(a===0||isNaN(a))throw new Error(`invalid offset ${a} pos ${i} inputLength ${n}`);if(a>s)throw new Error("cannot copy from before start of buffer");Or(t,s-a,t,s,f),s+=f}else{let a=(o>>>2)+1;if(a>60){if(i+3>=n)throw new Error("snappy error literal pos + 3 >= inputLength");const c=a-60;a=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+(e[i+3]<<24),a=(a&hf[c])+1,i+=c}if(i+a>n)throw new Error("snappy error literal exceeds input length");Or(e,i,t,s,a),i+=a,s+=a}}if(s!==r)throw new Error("premature end of input")}function wf(e,t,{type:n,element:r,schemaPath:i}){const s=new DataView(e.buffer,e.byteOffset,e.byteLength),o={view:s,offset:0};let f;const a=yf(o,t,i),{definitionLevels:c,numNulls:u}=pf(o,t,i),l=t.num_values-u;if(t.encoding==="PLAIN")f=Gn(o,n,l,r.type_length);else if(t.encoding==="PLAIN_DICTIONARY"||t.encoding==="RLE_DICTIONARY"||t.encoding==="RLE"){const d=n==="BOOLEAN"?1:s.getUint8(o.offset++);d?(f=new Array(l),n==="BOOLEAN"?(le(o,d,f),f=f.map(h=>!!h)):le(o,d,f,s.byteLength-o.offset)):f=new Uint8Array(l)}else if(t.encoding==="BYTE_STREAM_SPLIT")f=Mi(o,l,n,r.type_length);else if(t.encoding==="DELTA_BINARY_PACKED")f=n==="INT32"?new Int32Array(l):new BigInt64Array(l),st(o,l,f);else if(t.encoding==="DELTA_LENGTH_BYTE_ARRAY")f=new Array(l),ki(o,l,f);else throw new Error(`parquet unsupported encoding: ${t.encoding}`);return{definitionLevels:c,repetitionLevels:a,dataPage:f}}function yf(e,t,n){if(n.length>1){const r=bi(n);if(r){const i=new Array(t.num_values);return le(e,Mt(r),i),i}}return[]}function pf(e,t,n){const r=Yn(n);if(!r)return{definitionLevels:[],numNulls:0};const i=new Array(t.num_values);le(e,Mt(r),i);let s=t.num_values;for(const o of i)o===r&&s--;return s===0&&(i.length=0),{definitionLevels:i,numNulls:s}}function hn(e,t,n,r){let i;const s=r?.[n];if(n==="UNCOMPRESSED")i=e;else if(s)i=s(e,t);else if(n==="SNAPPY")i=new Uint8Array(t),gf(e,i);else throw new Error(`parquet unsupported compression codec: ${n}`);if(i?.length!==t)throw new Error(`parquet decompressed page length ${i?.length} does not match header ${t}`);return i}function mf(e,t,n){const i={view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0},{type:s,element:o,schemaPath:f,codec:a,compressors:c}=n,u=t.data_page_header_v2;if(!u)throw new Error("parquet data page header v2 is undefined");const l=If(i,u,f);i.offset=u.repetition_levels_byte_length;const d=Ef(i,u,f),h=t.uncompressed_page_size-u.definition_levels_byte_length-u.repetition_levels_byte_length;let A=e.subarray(i.offset);u.is_compressed!==!1&&(A=hn(A,h,a,c));const y=new DataView(A.buffer,A.byteOffset,A.byteLength),w={view:y,offset:0};let p;const g=u.num_values-u.num_nulls;if(u.encoding==="PLAIN")p=Gn(w,s,g,o.type_length);else if(u.encoding==="RLE")p=new Array(g),le(w,1,p),p=p.map(I=>!!I);else if(u.encoding==="PLAIN_DICTIONARY"||u.encoding==="RLE_DICTIONARY"){const I=y.getUint8(w.offset++);p=new Array(g),le(w,I,p,h-1)}else if(u.encoding==="DELTA_BINARY_PACKED")p=s==="INT32"?new Int32Array(g):new BigInt64Array(g),st(w,g,p);else if(u.encoding==="DELTA_LENGTH_BYTE_ARRAY")p=new Array(g),ki(w,g,p);else if(u.encoding==="DELTA_BYTE_ARRAY")p=new Array(g),tf(w,g,p);else if(u.encoding==="BYTE_STREAM_SPLIT")p=Mi(w,g,s,o.type_length);else throw new Error(`parquet unsupported encoding: ${u.encoding}`);return{definitionLevels:d,repetitionLevels:l,dataPage:p}}function If(e,t,n){const r=bi(n);if(!r)return[];const i=new Array(t.num_values);return le(e,Mt(r),i,t.repetition_levels_byte_length),i}function Ef(e,t,n){const r=Yn(n);if(r){const i=new Array(t.num_values);return le(e,Mt(r),i,t.definition_levels_byte_length),i}}function Mt(e){return 32-Math.clz32(e)}function Pi(e,{groupStart:t,selectStart:n,selectEnd:r},i,s){const{pathInSchema:o,schemaPath:f}=i,a=Bi(f),c=[];let u,l,d=0,h=0;const A=s&&(()=>{l&&s({pathInSchema:o,columnData:l,rowStart:t+d-l.length,rowEnd:t+d})});for(;(a?d<r:e.offset<e.view.byteLength-1)&&!(e.offset>=e.view.byteLength-1);){const y=bf(e);if(y.type==="DICTIONARY_PAGE"){const{data:w}=Dr(e,y,i,u,void 0,0);w&&(u=yi(w,i))}else{const w=l?.length||0,p=Dr(e,y,i,u,l,n-d);p.skipped?(c.length||(h+=p.skipped),d+=p.skipped):p.data&&l===p.data?d+=p.data.length-w:p.data&&p.data.length&&(A?.(),c.push(p.data),d+=p.data.length,l=p.data)}}return A?.(),{data:c,skipped:h}}function Dr(e,t,n,r,i,s){const{type:o,element:f,schemaPath:a,codec:c,compressors:u}=n,l=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t.compressed_page_size);if(e.offset+=t.compressed_page_size,t.type==="DATA_PAGE"){const d=t.data_page_header;if(!d)throw new Error("parquet data page header is undefined");if(s>d.num_values&&Bi(a))return{skipped:d.num_values};const h=hn(l,Number(t.uncompressed_page_size),c,u),{definitionLevels:A,repetitionLevels:y,dataPage:w}=wf(h,d,n),p=mr(w,r,d.encoding,n),g=Array.isArray(i)?i:[];return{skipped:0,data:Pr(g,A,y,p,a)}}else if(t.type==="DATA_PAGE_V2"){const d=t.data_page_header_v2;if(!d)throw new Error("parquet data page header v2 is undefined");if(s>d.num_rows)return{skipped:d.num_values};const{definitionLevels:h,repetitionLevels:A,dataPage:y}=mf(l,t,n),w=mr(y,r,d.encoding,n),p=Array.isArray(i)?i:[];return{skipped:0,data:Pr(p,h,A,w,a)}}else if(t.type==="DICTIONARY_PAGE"){const d=t.dictionary_page_header;if(!d)throw new Error("parquet dictionary page header is undefined");const h=hn(l,Number(t.uncompressed_page_size),c,u),A={view:new DataView(h.buffer,h.byteOffset,h.byteLength),offset:0};return{skipped:0,data:Gn(A,o,d.num_values,f.type_length)}}else throw new Error(`parquet unsupported page type: ${t.type}`)}function bf(e){const t=qe(e),n=wi[t.field_1],r=t.field_2,i=t.field_3,s=t.field_4,o=t.field_5&&{num_values:t.field_5.field_1,encoding:he[t.field_5.field_2],definition_level_encoding:he[t.field_5.field_3],repetition_level_encoding:he[t.field_5.field_4],statistics:t.field_5.field_5&&{max:t.field_5.field_5.field_1,min:t.field_5.field_5.field_2,null_count:t.field_5.field_5.field_3,distinct_count:t.field_5.field_5.field_4,max_value:t.field_5.field_5.field_5,min_value:t.field_5.field_5.field_6}},f=t.field_6,a=t.field_7&&{num_values:t.field_7.field_1,encoding:he[t.field_7.field_2],is_sorted:t.field_7.field_3},c=t.field_8&&{num_values:t.field_8.field_1,num_nulls:t.field_8.field_2,num_rows:t.field_8.field_3,encoding:he[t.field_8.field_4],definition_levels_byte_length:t.field_8.field_5,repetition_levels_byte_length:t.field_8.field_6,is_compressed:t.field_8.field_7===void 0?!0:t.field_8.field_7,statistics:t.field_8.field_8};return{type:n,uncompressed_page_size:r,compressed_page_size:i,crc:s,data_page_header:o,index_page_header:f,dictionary_page_header:a,data_page_header_v2:c}}function Bf(e,{metadata:t},n){const r=[];for(const i of n.chunks){const{path_in_schema:s}=i.columnMetadata,o=Ei(t.schema,s),f={pathInSchema:s,element:o[o.length-1].element,schemaPath:o,...e,...i.columnMetadata,parsers:{...ct,...e.parsers}},{startByte:a,endByte:c}=i.range;"pageLocations"in i?r.push({pathInSchema:s,data:Yr(e,n,i,i.pageLocations,f)}):"offsetIndex"in i?r.push({pathInSchema:s,data:Promise.resolve(e.file.slice(i.offsetIndex.startByte,i.offsetIndex.endByte)).then(u=>{const l=un({view:new DataView(u),offset:0}).page_locations;return Yr(e,n,i,l,f)})}):r.push({pathInSchema:s,data:Promise.resolve(e.file.slice(a,c)).then(u=>{const l={view:new DataView(u),offset:0};return Pi(l,n,f,e.onPage)})})}return{groupStart:n.groupStart,groupRows:n.groupRows,selectStart:n.selectStart,selectEnd:n.selectEnd,asyncColumns:r}}async function Yr(e,t,n,r,i){const{data_page_offset:s,dictionary_page_offset:o}=n.columnMetadata,{selectStart:f,selectEnd:a}=t;let{startByte:c,endByte:u}=n.range,l=-1;const d=o||s<r[0].offset;for(let g=0;g<r.length;g++){const I=r[g],E=Number(I.first_row_index),B=g+1<r.length?Number(r[g+1].first_row_index):t.groupRows;l<0&&B>f&&(c=Number(I.offset),l=E),E<a&&(u=Number(I.offset)+I.compressed_page_size)}l<0&&(l=0);let h;if(d&&l){const g=Number(r[0].offset)-n.range.startByte,[I,E]=await Promise.all([e.file.slice(n.range.startByte,Number(r[0].offset)),e.file.slice(c,u)]),B=new Uint8Array(g+E.byteLength);B.set(new Uint8Array(I,0,g)),B.set(new Uint8Array(E),g),h=new DataView(B.buffer)}else d?h=new DataView(await e.file.slice(n.range.startByte,u)):h=new DataView(await e.file.slice(c,u));const A={view:h,offset:0},y=l?{...t,groupStart:t.groupStart+l,selectStart:t.selectStart-l,selectEnd:t.selectEnd-l}:t,{data:w,skipped:p}=Pi(A,y,i,e.onPage);return{data:w,skipped:l+p}}async function Wr({asyncColumns:e},t,n,r,i){const s=await Promise.all(e.map(l=>l.data.then(({skipped:d,data:h})=>({skipped:d,data:xi(h)})))),o=n-t;if(i==="object"){const l=Array(o);for(let d=0;d<o;d++){const h={};for(let A=0;A<e.length;A++){const{data:y,skipped:w}=s[A];h[e[A].pathInSchema[0]]=y[t+d-w]}l[d]=h}return l}const f=e.map(l=>l.pathInSchema[0]).filter(l=>!r||r.includes(l)),a=r??f,c=a.map(l=>e.findIndex(d=>d.pathInSchema[0]===l)),u=Array(o);for(let l=0;l<o;l++){const d=Array(e.length);for(let h=0;h<a.length;h++){const A=c[h];if(A<0)throw new Error(`parquet column not found: ${a[h]}`);const{data:y,skipped:w}=s[A];d[h]=y[t+l-w]}u[l]=d}return u}function Cf(e,t,n){const{asyncColumns:r}=e,i={...ct,...n},s=[];for(const o of t.children)if(o.children.length){const f=r.filter(a=>a.pathInSchema[0]===o.element.name);if(!f.length)continue;s.push({pathInSchema:o.path,data:(async()=>{const a=await Promise.all(f.map(A=>A.data)),c=new Map,u=a.map(({data:A})=>xi(A)),l=Math.max(e.selectStart??0,...a.map(A=>A.skipped)),d=Math.min(e.selectEnd??1/0,...a.map((A,y)=>A.skipped+u[y].length));for(let A=0;A<f.length;A++){const y=l-a[A].skipped,w=Math.max(0,d-l);c.set(f[A].pathInSchema.join("."),u[A].slice(y,y+w))}Xe(c,o,i);const h=c.get(o.element.name);if(!h)throw new Error("parquet column data not assembled");return{data:[h],skipped:l}})()})}else{const f=r.find(a=>a.pathInSchema[0]===o.element.name);f&&s.push(f)}return{...e,asyncColumns:s}}async function vf(e){const t=await Sf(e);return{options:t,plan:zo(t)}}async function Sf(e){const t=e.metadata??await Wn(e.file,e),n=Ge(t).children.map(o=>o.element.name),i=Li(e.filter).filter(o=>!n.includes(o));if(i.length)throw new Error(`parquet filter columns not found: ${i.join(", ")}`);if(e.columns){const o=e.columns.filter(f=>!n.includes(f));if(o.length)throw new Error(`parquet column not found: ${o[0]}`)}let s={...e,metadata:t};return s=await Lf(s),s=await Nf(s),s}function xf(e,t){const n={...e,file:Ui(e.file,t)};return t.groups.map(r=>Bf(n,t,r))}async function Lf(e){if(!e.useBloomFilters||!e.filter||!e.metadata)return e;const t=Ge(e.metadata),n={};for(const i of t.children)n[i.element.name]=i.element;const r=await jo({file:e.file,metadata:e.metadata,filter:e.filter,filterStrict:e.filterStrict});return{...e,bloomFiltersByGroup:r,schemaElements:n}}async function Nf(e){if(!e.usePageIndex||!e.filter||!e.metadata)return e;const{pageRangesByGroup:t,pageLocationsByGroup:n}=await Jo({file:e.file,metadata:e.metadata,filter:e.filter,filterStrict:e.filterStrict,rowStart:e.rowStart,rowEnd:e.rowEnd,columns:e.columns,bloomFiltersByGroup:e.bloomFiltersByGroup,schemaElements:e.schemaElements,parsers:e.parsers});return{...e,pageRangesByGroup:t,pageLocationsByGroup:n}}const Tf=Symbol("rowIndex");async function Uf(e){e.metadata??=await Wn(e.file,e);const{rowStart:t=0,rowEnd:n,columns:r,onChunk:i,onComplete:s,rowFormat:o,filter:f,filterStrict:a=!0}=e;if(f&&o!=="object")throw new Error('parquet filter requires rowFormat: "object"');if(e.includeRowIndex&&o!=="object")throw new Error('parquet includeRowIndex requires rowFormat: "object"');const c=Li(f);let u=r;if(r&&c.length){const g=new Set(r),I=c.filter(E=>!g.has(E));I.length&&(u=[...r,...I])}const l=u===r?e:{...e,columns:u},d=await vf(l),h=d.options,A=u!==r,y=xf(h,d.plan);if(!s&&!i){await jt(y);return}if(!h.metadata)throw new Error("parquet requires metadata");const w=Ge(h.metadata),p=y.map(g=>Cf(g,w,e.parsers));if(i)for(const g of p)for(const I of g.asyncColumns)I.data.then(({data:E,skipped:B})=>{let b=g.groupStart+B;for(const v of E)i({columnName:I.pathInSchema[0],columnData:v,rowStart:b,rowEnd:b+v.length}),b+=v.length},()=>{});if(s){await jt(p);const g=[];for(const I of p){const E=I.selectStart??Math.max(t-I.groupStart,0),B=I.selectEnd??Math.min((n??1/0)-I.groupStart,I.groupRows),b=o==="object"?await Wr(I,E,B,u,"object"):await Wr(I,E,B,r,"array");if(e.includeRowIndex)for(let v=0;v<b.length;v++)Object.defineProperty(b[v],Tf,{value:I.groupStart+E+v});if(f){for(const v of b)if(pe(v,f,a)){if(A&&r)for(const L of c)r.includes(L)||delete v[L];g.push(v)}}else Si(g,b)}s(g)}else await jt(p)}async function jt(e){const t=e.flatMap(i=>i.asyncColumns.map(s=>s.data)),r=(await Promise.allSettled(t)).find(i=>i.status==="rejected");if(r)throw r.reason}var Ff=ArrayBuffer,P=Uint8Array,Tt=Uint16Array,Rf=Int16Array,Pt=Int32Array,Jt=function(e,t,n){if(P.prototype.slice)return P.prototype.slice.call(e,t,n);(t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length);var r=new P(n-t);return r.set(e.subarray(t,n)),r},et=function(e,t,n,r){if(P.prototype.fill)return P.prototype.fill.call(e,t,n,r);for((n==null||n<0)&&(n=0),(r==null||r>e.length)&&(r=e.length);n<r;++n)e[n]=t;return e},Qf=function(e,t,n,r){if(P.prototype.copyWithin)return P.prototype.copyWithin.call(e,t,n,r);for((n==null||n<0)&&(n=0),(r==null||r>e.length)&&(r=e.length);n<r;)e[t++]=e[n++]},kf=["invalid zstd data","window size too large (>2046MB)","invalid block type","FSE accuracy too high","match distance too far back","unexpected EOF"],D=function(e,t,n){var r=new Error(t||kf[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,D),!n)throw r;return r},qr=function(e,t,n){for(var r=0,i=0;r<n;++r)i|=e[t++]<<(r<<3);return i},Mf=function(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0},Pf=function(e,t){var n=e[0]|e[1]<<8|e[2]<<16;if(n==3126568&&e[3]==253){var r=e[4],i=r>>5&1,s=r>>2&1,o=r&3,f=r>>6;r&8&&D(0);var a=6-i,c=o==3?4:o,u=qr(e,a,c);a+=c;var l=f?1<<f:i,d=qr(e,a,l)+(f==1&&256),h=d;if(!i){var A=1<<10+(e[5]>>3);h=A+(A>>3)*(e[5]&7)}h>2145386496&&D(1);var y=new P((t==1?d||h:t?0:h)+12);return y[0]=1,y[4]=4,y[8]=8,{b:a+l,y:0,l:0,d:u,w:t&&t!=1?t:y.subarray(12),e:h,o:new Pt(y.buffer,0,3),u:d,c:s,m:Math.min(131072,h)}}else if((n>>4|e[3]<<20)==25481893)return Mf(e,4)+8;D(0)},Ee=function(e){for(var t=0;1<<t<=e;++t);return t-1},lt=function(e,t,n){var r=(t<<3)+4,i=(e[t]&15)+5;i>n&&D(3);for(var s=1<<i,o=s,f=-1,a=-1,c=-1,u=s,l=new Ff(512+(s<<2)),d=new Rf(l,0,256),h=new Tt(l,0,256),A=new Tt(l,512,s),y=512+(s<<1),w=new P(l,y,s),p=new P(l,y+s);f<255&&o>0;){var g=Ee(o+1),I=r>>3,E=(1<<g+1)-1,B=(e[I]|e[I+1]<<8|e[I+2]<<16)>>(r&7)&E,b=(1<<g)-1,v=E-o-1,L=B&b;if(L<v?(r+=g,B=L):(r+=g+1,B>b&&(B-=v)),d[++f]=--B,B==-1?(o+=B,w[--u]=f):o-=B,!B)do{var T=r>>3;a=(e[T]|e[T+1]<<8)>>(r&7)&3,r+=2,f+=a}while(a==3)}(f>255||o)&&D(0);for(var F=0,R=(s>>1)+(s>>3)+3,W=s-1,U=0;U<=f;++U){var N=d[U];if(N<1){h[U]=-N;continue}for(c=0;c<N;++c){w[F]=U;do F=F+R&W;while(F>=u)}}for(F&&D(0),c=0;c<s;++c){var S=h[w[c]]++,k=p[c]=i-Ee(S);A[c]=(S<<k)-s}return[r+7>>3,{b:i,s:w,n:p,t:A}]},Of=function(e,t){var n=0,r=-1,i=new P(292),s=e[t],o=i.subarray(0,256),f=i.subarray(256,268),a=new Tt(i.buffer,268);if(s<128){var c=lt(e,t+1,6),u=c[0],l=c[1];t+=s;var d=u<<3,h=e[t];h||D(0);for(var A=0,y=0,w=l.b,p=w,g=(++t<<3)-8+Ee(h);g-=w,!(g<d);){var I=g>>3;if(A+=(e[I]|e[I+1]<<8)>>(g&7)&(1<<w)-1,o[++r]=l.s[A],g-=p,g<d)break;I=g>>3,y+=(e[I]|e[I+1]<<8)>>(g&7)&(1<<p)-1,o[++r]=l.s[y],w=l.n[A],A=l.t[A],p=l.n[y],y=l.t[y]}++r>255&&D(0)}else{for(r=s-127;n<r;n+=2){var E=e[++t];o[n]=E>>4,o[n+1]=E&15}++t}var B=0;for(n=0;n<r;++n){var b=o[n];b>11&&D(0),B+=b&&1<<b-1}var v=Ee(B)+1,L=1<<v,T=L-B;for(T&T-1&&D(0),o[r++]=Ee(T)+1,n=0;n<r;++n){var b=o[n];++f[o[n]=b&&v+1-b]}var F=new P(L<<1),R=F.subarray(0,L),W=F.subarray(L);for(a[v]=0,n=v;n>0;--n){var U=a[n];et(W,n,U,a[n-1]=U+f[n]*(1<<v-n))}for(a[0]!=L&&D(0),n=0;n<r;++n){var N=o[n];if(N){var S=a[N];et(R,n,S,a[N]=S+(1<<v-N))}}return[t,{n:W,b:v,s:R}]},Df=lt(new P([81,16,99,140,49,198,24,99,12,33,196,24,99,102,102,134,70,146,4]),0,6)[1],Yf=lt(new P([33,20,196,24,99,140,33,132,16,66,8,33,132,16,66,8,33,68,68,68,68,68,68,68,68,36,9]),0,6)[1],Wf=lt(new P([32,132,16,66,102,70,68,68,68,68,36,73,2]),0,5)[1],Oi=function(e,t){for(var n=e.length,r=new Pt(n),i=0;i<n;++i)r[i]=t,t+=1<<e[i];return r},gn=new P(new Pt([0,0,0,0,16843009,50528770,134678020,202050057,269422093]).buffer,0,36),qf=Oi(gn,0),wn=new P(new Pt([0,0,0,0,0,0,0,0,16843009,50528770,117769220,185207048,252579084,16]).buffer,0,53),Gf=Oi(wn,3),_e=function(e,t,n){var r=e.length,i=t.length,s=e[r-1],o=(1<<n.b)-1,f=-n.b;s||D(0);for(var a=0,c=n.b,u=(r<<3)-8+Ee(s)-c,l=-1;u>f&&l<i;){var d=u>>3,h=(e[d]|e[d+1]<<8|e[d+2]<<16)>>(u&7);a=(a<<c|h)&o,t[++l]=n.s[a],u-=c=n.n[a]}(u!=f||l+1!=i)&&D(0)},zf=function(e,t,n){var r=6,i=t.length,s=i+3>>2,o=s<<1,f=s+o;_e(e.subarray(r,r+=e[0]|e[1]<<8),t.subarray(0,s),n),_e(e.subarray(r,r+=e[2]|e[3]<<8),t.subarray(s,o),n),_e(e.subarray(r,r+=e[4]|e[5]<<8),t.subarray(o,f),n),_e(e.subarray(r),t.subarray(f),n)},Vf=function(e,t,n){var r,i=t.b,s=e[i],o=s>>1&3;t.l=s&1;var f=s>>3|e[i+1]<<5|e[i+2]<<13,a=(i+=3)+f;if(o==1)return i>=e.length?void 0:(t.b=i+1,n?(et(n,e[i],t.y,t.y+=f),n):et(new P(f),e[i]));if(!(a>e.length)){if(o==0)return t.b=a,n?(n.set(e.subarray(i,a),t.y),t.y+=f,n):Jt(e,i,a);if(o==2){var c=e[i],u=c&3,l=c>>2&3,d=c>>4,h=0,A=0;u<2?l&1?d|=e[++i]<<4|(l&2&&e[++i]<<12):d=c>>3:(A=l,l<2?(d|=(e[++i]&63)<<4,h=e[i]>>6|e[++i]<<2):l==2?(d|=e[++i]<<4|(e[++i]&3)<<12,h=e[i]>>2|e[++i]<<6):(d|=e[++i]<<4|(e[++i]&63)<<12,h=e[i]>>6|e[++i]<<2|e[++i]<<10)),++i;var y=n?n.subarray(t.y,t.y+t.m):new P(t.m),w=y.length-d;if(u==0)y.set(e.subarray(i,i+=d),w);else if(u==1)et(y,e[i++],w);else{var p=t.h;if(u==2){var g=Of(e,i);h+=i-(i=g[0]),t.h=p=g[1]}else p||D(0);(A?zf:_e)(e.subarray(i,i+=h),y.subarray(w),p)}var I=e[i++];if(I){I==255?I=(e[i++]|e[i++]<<8)+32512:I>127&&(I=I-128<<8|e[i++]);var E=e[i++];E&3&&D(0);for(var B=[Yf,Wf,Df],b=2;b>-1;--b){var v=E>>(b<<1)+2&3;if(v==1){var L=new P([0,0,e[i++]]);B[b]={s:L.subarray(2,3),n:L.subarray(0,1),t:new Tt(L.buffer,0,1),b:0}}else v==2?(r=lt(e,i,9-(b&1)),i=r[0],B[b]=r[1]):v==3&&(t.t||D(0),B[b]=t.t[b])}var T=t.t=B,F=T[0],R=T[1],W=T[2],U=e[a-1];U||D(0);var N=(a<<3)-8+Ee(U)-W.b,S=N>>3,k=0,z=(e[S]|e[S+1]<<8)>>(N&7)&(1<<W.b)-1;S=(N-=R.b)>>3;var V=(e[S]|e[S+1]<<8)>>(N&7)&(1<<R.b)-1;S=(N-=F.b)>>3;var Z=(e[S]|e[S+1]<<8)>>(N&7)&(1<<F.b)-1;for(++I;--I;){var H=W.s[z],$=W.n[z],re=F.s[Z],ue=F.n[Z],x=R.s[V],K=R.n[V];S=(N-=x)>>3;var ee=1<<x,X=ee+((e[S]|e[S+1]<<8|e[S+2]<<16|e[S+3]<<24)>>>(N&7)&ee-1);S=(N-=wn[re])>>3;var ie=Gf[re]+((e[S]|e[S+1]<<8|e[S+2]<<16)>>(N&7)&(1<<wn[re])-1);S=(N-=gn[H])>>3;var de=qf[H]+((e[S]|e[S+1]<<8|e[S+2]<<16)>>(N&7)&(1<<gn[H])-1);if(S=(N-=$)>>3,z=W.t[z]+((e[S]|e[S+1]<<8)>>(N&7)&(1<<$)-1),S=(N-=ue)>>3,Z=F.t[Z]+((e[S]|e[S+1]<<8)>>(N&7)&(1<<ue)-1),S=(N-=K)>>3,V=R.t[V]+((e[S]|e[S+1]<<8)>>(N&7)&(1<<K)-1),X>3)t.o[2]=t.o[1],t.o[1]=t.o[0],t.o[0]=X-=3;else{var Ce=X-(de!=0);Ce?(X=Ce==3?t.o[0]-1:t.o[Ce],Ce>1&&(t.o[2]=t.o[1]),t.o[1]=t.o[0],t.o[0]=X):X=t.o[0]}for(var b=0;b<de;++b)y[k+b]=y[w+b];k+=de,w+=de;var se=k-X;if(se<0){var G=-se,ve=t.e+se;G>ie&&(G=ie);for(var b=0;b<G;++b)y[k+b]=t.w[ve+b];k+=G,ie-=G,se=0}for(var b=0;b<ie;++b)y[k+b]=y[se+b];k+=ie}if(k!=w)for(;w<y.length;)y[k++]=y[w++];else k=y.length;n?t.y+=k:y=Jt(y,0,k)}else if(n){if(t.y+=d,w)for(var b=0;b<d;++b)y[b]=y[w+b]}else w&&(y=Jt(y,w));return t.b=a,y}D(2)}},Hf=function(e,t){if(e.length==1)return e[0];for(var n=new P(t),r=0,i=0;r<e.length;++r){var s=e[r];n.set(s,i),i+=s.length}return n};function Zf(e,t){for(var n=[],r=+!t,i=0,s=0;e.length;){var o=Pf(e,r||t);if(typeof o=="object"){for(r?(t=null,o.w.length==o.u&&(n.push(t=o.w),s+=o.u)):(n.push(t),o.e=0);!o.l;){var f=Vf(e,o,t);f||D(5),t?o.e=o.y:(n.push(f),s+=f.length,Qf(o.w,0,f.length),o.w.set(f,o.w.length-f.length))}i=o.b+o.c*4}else i=o;e=e.subarray(i)}return Hf(n,s)}function jf(){const e=Jf();return(t,n)=>{const{memory:r,uncompress:i}=e.exports,s=68e3,o=s+t.byteLength,f=s+t.byteLength+n;if(r.buffer.byteLength<f){const l=r.buffer.byteLength/65536,h=Math.ceil(f/65536)-l;r.grow(h)}const a=new Uint8Array(r.buffer);a.set(t,s);const c=i(s,t.byteLength,o);if(c===-1)throw new Error("invalid snappy length header");if(c===-2)throw new Error("missing eof marker");if(c===-3)throw new Error("premature end of input");if(c)throw new Error(`failed to uncompress data ${c}`);return a.slice(o,o+n)}}function Jf(){const e=atob(Kf),t=new Uint8Array(e.length);for(let r=0;r<e.length;r+=1)t[r]=e.charCodeAt(r);const n=new WebAssembly.Module(t);return new WebAssembly.Instance(n)}const Kf="AGFzbQEAAAABEANgAABgA39/fwF/YAF/AX8DBgUAAQEBAgUDAQACBj8KfwFBoIwEC38AQYAIC38AQaAMC38AQaAMC38AQaCMBAt/AEGACAt/AEGgjAQLfwBBgIAIC38AQQALfwBBAQsHwQEOBm1lbW9yeQIAEV9fd2FzbV9jYWxsX2N0b3JzAAAGbWVtY3B5AAEHbWVtbW92ZQACCnVuY29tcHJlc3MAAwxfX2Rzb19oYW5kbGUDAQpfX2RhdGFfZW5kAwILX19zdGFja19sb3cDAwxfX3N0YWNrX2hpZ2gDBA1fX2dsb2JhbF9iYXNlAwULX19oZWFwX2Jhc2UDBgpfX2hlYXBfZW5kAwcNX19tZW1vcnlfYmFzZQMIDF9fdGFibGVfYmFzZQMJCuASBQIAC8sBAQN/AkAgAkUNAAJAAkAgAkEHcSIDDQAgACEEIAIhBQwBCyAAIQQgAiEFA0AgBCABLQAAOgAAIARBAWohBCABQQFqIQEgBUF/aiEFIANBf2oiAw0ACwsgAkEISQ0AA0AgBCABLQAAOgAAIAQgAS0AAToAASAEIAEtAAI6AAIgBCABLQADOgADIAQgAS0ABDoABCAEIAEtAAU6AAUgBCABLQAGOgAGIAQgAS0ABzoAByAEQQhqIQQgAUEIaiEBIAVBeGoiBQ0ACwsgAAugAwEEfwJAIAAgAUYNAAJAAkAgACABSQ0AIAEgAmoiAyAASw0BCyACRQ0BAkACQCACQQdxIgMNACAAIQQgAiEFDAELIAAhBCACIQUDQCAEIAEtAAA6AAAgBEEBaiEEIAFBAWohASAFQX9qIQUgA0F/aiIDDQALCyACQQhJDQEDQCAEIAEtAAA6AAAgBCABLQABOgABIAQgAS0AAjoAAiAEIAEtAAM6AAMgBCABLQAEOgAEIAQgAS0ABToABSAEIAEtAAY6AAYgBCABLQAHOgAHIARBCGohBCABQQhqIQEgBUF4aiIFDQAMAgsLIAJFDQACQAJAIAJBA3EiBA0AIAAgAmohBiACIQUMAQsgAiEFA0AgBUF/aiIFIABqIgYgBSABaiIDLQAAOgAAIARBf2oiBA0ACwsgAkEESQ0AIAZBfGohASADQXxqIQQDQCABQQNqIARBA2otAAA6AAAgAUECaiAEQQJqLQAAOgAAIAFBAWogBEEBai0AADoAACABIAQtAAA6AAAgAUF8aiEBIARBfGohBCAFQXxqIgUNAAsLIAALswoBCX8jgICAgABBIGsiAySAgICAACADQQlqQgA3AAAgA0IANwIEIAMgA0EYajYCAEF/IQQCQCABRQ0AIAMgAUF/aiIFNgIcIAMgAEEBajYCGCAALAAAIgZB/wBxIQcCQCAGQX9KDQAgBUUNASADIAFBfmoiBTYCHCADIABBAmo2AhggACwAASIGQf8AcUEHdCAHciEHQX8hBCAGQX9KDQAgBUUNASADIAFBfWoiBTYCHCADIABBA2o2AhggACwAAiIGQf8AcUEOdCAHciEHQX8hBCAGQX9KDQAgBUUNASADIAFBfGoiBTYCHCADIABBBGo2AhggACwAAyIGQf8AcUEVdCAHciEHQX8hBCAGQX9KDQAgBUUNASADIAFBe2o2AhwgAyAAQQVqNgIYIAAsAAQiAUEASA0BIAFBHHQgB3IhBwsgAiAHaiEIAkACQCADEISAgIAADQAgAiEADAELIAMoAgQhASACIQADQAJAIAMoAgggAWtBBEoNACADIAE2AgQgAxCEgICAAEUNAiADKAIEIQELIAFBAWohBQJAAkAgAS0AACIGQQNxDQAgCCAAayEJIAMoAggiCiAFayEEIAZBAnYiC0EBaiEHAkAgBkE/Sw0AIARBEEkNACAJQRBIDQAgACABKAIBNgIAIAAgASgCBTYCBCAAIAEoAgk2AgggACABKAINNgIMIAAgB2ohACADKAIIIAUgB2oiAWtBBEoNAyADIAE2AgQgAxCEgICAAEUNBAwCCwJAAkAgBkHwAU8NACAFIQYMAQsgCiAFIAtBRWoiAWoiBmshBCABQQJ0QYCIgIAAaigCACAFKAIAcUEBaiEHCwJAIAcgBE0NAANAIAggAGsgBEkNBSAAIAYgBBCBgICAACEAIAMoAgAiASABKAIAIgkgAygCDCIFaiIGNgIAIAFBBGoiASABKAIAIgogBWsiATYCACADIAE2AgwgACAEaiEAIAFFDQUgAyAJIApqNgIIIAcgBGshByABIQQgByABSw0ACyAIIABrIQkLIAkgB0kNAyAAIAYgBxCBgICAACAHaiEAIAMoAgggBiAHaiIBa0EESg0CIAMgATYCBCADEISAgIAADQEMAwsgACACayAGQQF0QaCIgIAAai8BACIBQQt2IgpBAnRBgIiAgABq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",we=4096,Xf=2*we+32,Gr=2*we-1,_f=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);class tt{constructor(t){this.buf_=new Uint8Array(Xf),this.input_=t,this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.reset()}static READ_SIZE=we;static IBUF_MASK=Gr;reset(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(let t=0;t<4;t++)this.val_|=this.buf_[this.pos_]<<8*t,this.pos_++;return this.bit_end_pos_>0}readMoreInput(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{const t=this.buf_ptr_,n=this.input_.read(this.buf_,t,we);if(n<0)throw new Error("Unexpected end of input");if(n<we){this.eos_=1;for(let r=0;r<32;r++)this.buf_[t+n+r]=0}if(t===0){for(let r=0;r<32;r++)this.buf_[(we<<1)+r]=this.buf_[r];this.buf_ptr_=we}else this.buf_ptr_=0;this.bit_end_pos_+=n<<3}}fillBitWindow(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&Gr]<<24,this.pos_++,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0}readBits(t){32-this.bit_pos_<t&&this.fillBitWindow();const n=this.val_>>>this.bit_pos_&_f[t];return this.bit_pos_+=t,n}}const $f=8,yn=8,ea=255,pn=18,ta=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),na=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);class Q{constructor(t,n){this.bits=t,this.value=n}}const zr=16,Ue=15;function Vr(e,t){let n=1<<t-1;for(;e&n;)n>>=1;return(e&n-1)+n}function Hr(e,t,n,r,i){do r-=n,e[t+r]=new Q(i.bits,i.value);while(r>0)}function ra(e,t,n){let r=1<<t-n;for(;t<Ue&&(r-=e[t],!(r<=0));)++t,r<<=1;return t-n}function Di(e,t,n,r,i){const s=t,o=new Int32Array(Ue+1),f=new Int32Array(Ue+1),a=new Int32Array(i);for(let w=0;w<i;w++)o[r[w]]++;f[1]=0;for(let w=1;w<Ue;w++)f[w+1]=f[w]+o[w];for(let w=0;w<i;w++)r[w]!==0&&(a[f[r[w]]++]=w);let c=n,u=1<<c,l=u;if(f[Ue]===1){for(let w=0;w<l;++w)e[t+w]=new Q(0,a[0]&65535);return l}let d=0,h=0;for(let w=1,p=2;w<=n;++w,p<<=1)for(;o[w]>0;--o[w]){const g=new Q(w&255,a[h++]&65535);Hr(e,t+d,p,u,g),d=Vr(d,w)}const A=l-1;let y=-1;for(let w=n+1,p=2;w<=Ue;++w,p<<=1)for(;o[w]>0;--o[w]){(d&A)!==y&&(t+=u,c=ra(o,w,n),u=1<<c,l+=u,y=d&A,e[s+y]=new Q(c+n&255,t-s-y&65535));const g=new Q(w-n&255,a[h++]&65535);Hr(e,t+(d>>n),p,u,g),d=Vr(d,w)}return l}function Ut(e,t,n,r){const i=new Uint8Array(e);r.readMoreInput();const s=r.readBits(2);if(s===1){let f=e-1,a=0;const c=new Int32Array(4),u=r.readBits(2)+1;for(;f;)f>>=1,a++;for(let l=0;l<u;l++)c[l]=r.readBits(a)%e,i[c[l]]=2;switch(i[c[0]]=1,u){case 1:break;case 3:if(c[0]===c[1]||c[0]===c[2]||c[1]===c[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(c[0]===c[1])throw new Error("[ReadHuffmanCode] invalid symbols");i[c[1]]=1;break;case 4:if(c[0]===c[1]||c[0]===c[2]||c[0]===c[3]||c[1]===c[2]||c[1]===c[3]||c[2]===c[3])throw new Error("[ReadHuffmanCode] invalid symbols");r.readBits(1)?(i[c[2]]=3,i[c[3]]=3):i[c[0]]=2;break}}else{const f=new Uint8Array(pn);let a=32,c=0;const u=[new Q(2,0),new Q(2,4),new Q(2,3),new Q(3,2),new Q(2,0),new Q(2,4),new Q(2,3),new Q(4,1),new Q(2,0),new Q(2,4),new Q(2,3),new Q(3,2),new Q(2,0),new Q(2,4),new Q(2,3),new Q(4,5)];for(let l=s;l<pn&&a>0;l++){const d=ta[l];let h=0;r.fillBitWindow(),h+=r.val_>>>r.bit_pos_&15,r.bit_pos_+=u[h].bits;const A=u[h].value;f[d]=A,A!==0&&(a-=32>>A,c++)}if(!(c===1||a===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");ia(f,e,i,r)}const o=Di(t,n,yn,i,e);if(!o)throw new Error("brotli BuildHuffmanTable failed");return o}function Qe(e,t,n){n.fillBitWindow(),t+=n.val_>>>n.bit_pos_&ea;const r=e[t].bits-yn;return r>0&&(n.bit_pos_+=yn,t+=e[t].value,t+=n.val_>>>n.bit_pos_&(1<<r)-1),n.bit_pos_+=e[t].bits,e[t].value}function ia(e,t,n,r){let i=0,s=$f,o=0,f=0,a=32768;const c=[];for(let u=0;u<32;u++)c.push(new Q(0,0));for(Di(c,0,5,e,pn);i<t&&a>0;){let u=0;r.readMoreInput(),r.fillBitWindow(),u+=r.val_>>>r.bit_pos_&31,r.bit_pos_+=c[u].bits;const l=c[u].value&255;if(l<zr)o=0,n[i++]=l,l!==0&&(s=l,a-=32768>>l);else{const d=l-14;let h=0;l===zr&&(h=s),f!==h&&(o=0,f=h);const A=o;o>0&&(o-=2,o<<=d),o+=r.readBits(d)+3;const y=o-A;if(i+y>t)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(let w=0;w<y;w++)n[i+w]=f;i+=y,f!==0&&(a-=y<<15-f)}}if(a!==0)throw new Error("[ReadHuffmanCodeLengths] space = "+a);for(;i<t;i++)n[i]=0}class Ne{constructor(t,n){this.alphabet_size=t,this.num_htrees=n,this.codes=new Array(n+n*na[t+31>>>5]),this.htrees=new Uint32Array(n)}decode(t){let n=0;for(let r=0;r<this.num_htrees;r++)this.htrees[r]=n,n+=Ut(this.alphabet_size,this.codes,n,t)}}function zn([e,t]){return{offset:e,nbits:t}}const sa=[[1,2],[5,2],[9,2],[13,2],[17,3],[25,3],[33,3],[41,3],[49,4],[65,4],[81,4],[97,4],[113,5],[145,5],[177,5],[209,5],[241,6],[305,6],[369,7],[497,8],[753,9],[1265,10],[2289,11],[4337,12],[8433,13],[16625,24]].map(zn),oa=[[0,0],[1,0],[2,0],[3,0],[4,0],[5,0],[6,1],[8,1],[10,2],[14,2],[18,3],[26,3],[34,4],[50,4],[66,5],[98,5],[130,6],[194,7],[322,8],[578,9],[1090,10],[2114,12],[6210,14],[22594,24]].map(zn),fa=[[2,0],[3,0],[4,0],[5,0],[6,0],[7,0],[8,0],[9,0],[10,1],[12,1],[14,2],[18,2],[22,3],[30,3],[38,4],[54,4],[70,5],[102,5],[134,6],[198,7],[326,8],[582,9],[1094,10],[2118,24]].map(zn),aa=[0,0,8,8,0,16,8,16,16],ca=[0,8,0,8,16,0,16,8,16],ce=1080,Yi=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Wi=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]);function qi(e,t){const n=new Uint16Array(31);for(let i=0;i<31;i++)n[i]=t+=1<<e[i-1];const r=new Int32Array(n[30]);for(let i=1;i<30;i++)for(let s=n[i];s<n[i+1];++s)r[s]=s-n[i]<<5|i;return{base:n,rev:r}}const{base:Gi,rev:la}=qi(Yi,2);Gi[28]=258;la[258]=28;const{base:ua}=qi(Wi,0),zi=new Uint16Array(32768);for(let e=0;e<32768;e++){let t=(e&43690)>>1|(e&21845)<<1;t=(t&52428)>>2|(t&13107)<<2,t=(t&61680)>>4|(t&3855)<<4,zi[e]=((t&65280)>>8|(t&255)<<8)>>1}function nt(e,t,n){const r=new Uint16Array(t);for(let o=0;o<e.length;o++)e[o]&&++r[e[o]-1];const i=new Uint16Array(t);for(let o=1;o<t;o++)i[o]=i[o-1]+r[o-1]<<1;let s;{s=new Uint16Array(1<<t);const o=15-t;for(let f=0;f<e.length;f++)if(e[f]){const a=f<<4|e[f],c=t-e[f];let u=i[e[f]-1]++<<c;for(const l=u|(1<<c)-1;u<=l;u++)s[zi[u]>>o]=a}}return s}const ut=new Uint8Array(288);for(let e=0;e<144;e++)ut[e]=8;for(let e=144;e<256;e++)ut[e]=9;for(let e=256;e<280;e++)ut[e]=7;for(let e=280;e<288;e++)ut[e]=8;const Vi=new Uint8Array(32);for(let e=0;e<32;e++)Vi[e]=5;const da=nt(ut,9),Aa=nt(Vi,5);function Kt(e,t,n,r,i,s,o){const f=n*2,a=n,c=Qe(t,n*ce,o);let u;c===0?u=i[f+(s[a]&1)]:c===1?u=i[f+(s[a]-1&1)]+1:u=c-2,u>=e&&(u-=e),r[n]=u,i[f+(s[a]&1)]=u,s[a]++}function ha(e){const t={meta_block_length:0,input_end:0,is_uncompressed:0,is_metadata:!1};if(t.input_end=e.readBits(1),t.input_end&&e.readBits(1))return t;const n=e.readBits(2)+4;if(n===7){if(t.is_metadata=!0,e.readBits(1)!==0)throw new Error("Invalid reserved bit");const r=e.readBits(2);if(r===0)return t;for(let i=0;i<r;i++){const s=e.readBits(8);if(i+1===r&&r>1&&s===0)throw new Error("Invalid size byte");t.meta_block_length|=s<<i*8}}else for(let r=0;r<n;r++){const i=e.readBits(4);if(r+1===n&&n>4&&i===0)throw new Error("Invalid size nibble");t.meta_block_length|=i<<r*4}return t.meta_block_length++,!t.input_end&&!t.is_metadata&&(t.is_uncompressed=e.readBits(1)),t}function ga(e,t,n,r,i,s){const o=i+1;let f=n&i,a=s.pos_&tt.IBUF_MASK;if(t<8||s.bit_pos_+(t<<3)<s.bit_end_pos_){for(;t-- >0;)s.readMoreInput(),r[f++]=s.readBits(8),f===o&&(e.write(r,o),f=0);return}if(s.bit_end_pos_<32)throw new Error("copyUncompressedBlockToOutput: br.bit_end_pos_ < 32");for(;s.bit_pos_<32;)r[f]=s.val_>>>s.bit_pos_,s.bit_pos_+=8,f++,t--;let c=s.bit_end_pos_-s.bit_pos_>>3;if(a+c>tt.IBUF_MASK){const u=tt.IBUF_MASK+1-a;for(let l=0;l<u;l++)r[f+l]=s.buf_[a+l];c-=u,f+=u,t-=u,a=0}for(let u=0;u<c;u++)r[f+u]=s.buf_[a+u];if(f+=c,t-=c,f>=o){e.write(r,o),f-=o;for(let u=0;u<f;u++)r[u]=r[o+u]}for(;f+t>=o;){if(c=o-f,s.input_.read(r,f,c)<c)throw new Error("copyUncompressedBlockToOutput: not enough bytes");e.write(r,o),t-=c,f=0}if(s.input_.read(r,f,t)<t)throw new Error("copyUncompressedBlockToOutput: not enough bytes");s.reset()}function Hi(e){if(e.readBits(1)){const t=e.readBits(3);return t===0?1:e.readBits(t)+(1<<t)}return 0}function wa(e){if(e.readBits(1)===0)return 16;let t=e.readBits(3);return t>0?17+t:(t=e.readBits(3),t>0?8+t:17)}function ya(e){const t=e.bit_pos_+7&-8;return!e.readBits(t-e.bit_pos_)}function wt(e,t,n){const r=Qe(e,t,n),{offset:i,nbits:s}=sa[r];return i+n.readBits(s)}const Zr=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,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,0,0,0,0,0,0,0,0,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,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),yt=new Uint16Array([1024,1536,1280,1536,0,256,768,512]);function jr(e,t){let n=0;t.readMoreInput();const r=Hi(t)+1,i=new Uint8Array(e);if(r<=1)return[r,i];t.readBits(1)&&(n=t.readBits(4)+1);const o=[];for(let f=0;f<ce;f++)o[f]=new Q(0,0);Ut(r+n,o,0,t);for(let f=0;f<e;){t.readMoreInput();const a=Qe(o,0,t);if(a===0)i[f]=0,f++;else if(a<=n){let c=1+(1<<a)+t.readBits(a);for(;--c;){if(f>=e)throw new Error("[DecodeContextMap] i >= context_map_size");i[f]=0,f++}}else i[f]=a-n,f++}return t.readBits(1)&&ma(i,e),[r,i]}function pa(e,t){const n=e[t];for(let r=t;r;r--)e[r]=e[r-1];e[0]=n}function ma(e,t){const n=new Uint8Array(256);for(let r=0;r<256;r++)n[r]=r;for(let r=0;r<t;r++){const i=e[r];e[r]=n[i],i&&pa(n,i)}}class Ia{constructor(t){this.buffer=t,this.pos=0}read(t,n,r){this.pos+r>this.buffer.length&&(r=this.buffer.length-this.pos);for(let i=0;i<r;i++)t[n+i]=this.buffer[this.pos+i];return this.pos+=r,r}}class Ea{constructor(t){this.buffer=t,this.pos=0}write(t,n){if(this.pos+n>this.buffer.length)throw new Error("brotli output buffer is not large enough");return this.buffer.set(t.subarray(0,n),this.pos),this.pos+=n,n}}const ba=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);function _(e,t,n){const r=t/8|0;return(e[r]|e[r+1]<<8)>>(t&7)&n}function Xt(e,t){const n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)}function Ba(e){return(e+7)/8|0}function Ca(e,t){if(e[t++]!==31||e[t++]!==139||e[t++]!==8)return 0;const n=e[t++];t+=6,n&4&&(t+=(e[t+10]|e[t+11]<<8)+2);for(let r=(n>>3&1)+(n>>4&1);r>0;r-=+!e[t++]);return t+(n&2)}function Vn(e,t,n=0,r=0){let i=t??new Uint8Array(1024);if(!(e.length-n))return i;const s=Ca(e,n);if(s===e.length-8)return i;if(s>e.length-8)throw new Error("unexpected EOF");let o=s*8,f=0,a=0,c=0,u,l;const d=e.length*8;function h(A){if(!t&&A>i.length){const y=i;i=new Uint8Array(Math.max(y.length*2,A)),i.set(y)}}do{if(!u){f=_(e,o,1);const w=_(e,o+1,3);if(o+=3,w)if(w===1)u=da,l=Aa,a=9,c=5;else if(w===2){const p=_(e,o,31)+257,g=_(e,o+10,15)+4,I=p+_(e,o+5,31)+1;o+=14;const E=new Uint8Array(I),B=new Uint8Array(19);for(let R=0;R<g;++R)B[ba[R]]=_(e,o+R*3,7);o+=g*3;const b=Math.max(...B),v=(1<<b)-1,L=nt(B,b);for(let R=0;R<I;){const W=L[_(e,o,v)];o+=W&15;const U=W>>4;if(U<16)E[R++]=U;else{let N=0,S=0;for(U===16?(S=3+_(e,o,3),o+=2,N=E[R-1]):U===17?(S=3+_(e,o,7),o+=3):U===18&&(S=11+_(e,o,127),o+=7);S--;)E[R++]=N}}const T=E.subarray(0,p),F=E.subarray(p);a=Math.max(...T),c=Math.max(...F),u=nt(T,a),l=nt(F,c)}else throw new Error("invalid block type");else{const p=Ba(o)+4,g=e[p-4]|e[p-3]<<8,I=p+g;if(I>e.length)throw new Error("unexpected EOF");h(r+g),i.set(e.subarray(p,I),r),r+=g,o=I*8;continue}if(o>d)throw new Error("unexpected EOF")}h(r+131072);const A=(1<<a)-1,y=(1<<c)-1;for(;;){const w=u[Xt(e,o)&A],p=w>>4;if(o+=w&15,o>d)throw new Error("unexpected EOF");if(!w)throw new Error("invalid length/literal");if(p<256)i[r++]=p;else if(p===256){u=void 0;break}else{let g=p-254;if(p>264){const v=p-257,L=Yi[v];g=_(e,o,(1<<L)-1)+Gi[v],o+=L}if(!l)throw new Error("invalid distance map");const I=l[Xt(e,o)&y],E=I>>4;if(!I)throw new Error("invalid distance");o+=I&15;let B=ua[E];if(E>3){const v=Wi[E];B+=Xt(e,o)&(1<<v)-1,o+=v}if(o>d)throw new Error("unexpected EOF");const b=r+g;if(r<B)throw new Error("unexpected dictionary case");for(h(b);r<b;r++)i[r]=i[r-B]}}u&&(f=1)}while(!f);if(r<i.length){const A=Math.ceil(o/8)+8;Vn(e,i,A,r)}return t?i:i.subarray(0,r)}const va=`
2
+ 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
512
+ XH/9kw/e+uTa937x6JlPn7j+86ee/PnpG7e/+yefvfzM7ddetBc/+977t3/83mcf/PknV4/fPvfq7e+/
513
+ +cm7P/z0/F/84uwzn7154uc/PvHp69//9I9/+Ml7P7r9/IXbz57/9Pqf3r7y5GdvX/vs+KlPn/7LT0+9
514
+ 8en505+dP/PZ+eufPnP99jtvffripU+vnrz9J+duf/+GtefTZ37wyfU37JVPT7/+6bnXfv79lz678vTt
515
+ v3jV/v25Pc73HsfFP3j59ok3rc0BJ2xs7t08Zz7DAKYbJnK5UgK2jQzJmCC4augYsG4CCZp91RPMCbYW
516
+ 8rY2w92psSU9JsJr5eZ15HTJPhdaiJXaqRIg7wbBWKEHHX5adwdhvA2PhJOVkIQAXgHUR5kUgqH6MGbJ
517
+ Tde53MIZEy6yqT3ANRAzmtC71THhd+I63zxX1ps3X4Z9ESjZchjwqiFzLkBagm7Pm5oZd/Ona2Dpo0SW
518
+ Y7IEIhOZVrcgTg4z9eUeatU7/9w2XQdQNR4xq0vb/pGqKBvnbA8aB2VF1VrreWvMzZdXR+KVEBjpfVg7
519
+ ksxeQS+zV7Fw2NR4Ckd5E65GGF/Zc94LlRfsBWghULUSXnoJFac+6hn2H7HmV49EANm8/B5nSxkwvsbN
520
+ MkyBIZCVfSDxXmYmA5BcYsTQZk6SrdK/FWjBJmCS0fODJopqn2RJ7A+85DaKjp9kYWwVBb/Kf1/lu5f5
521
+ 1gV+7ImoRK4i5Sf+9vSf+1v4/Bv89zVW7L4W11FV8mv88HNxneNshm76GptxJr5+ultDqWKw2ngJcDTp
522
+ wt++epL1y8/wM+f5+2n+/jN+/QKLo1/li6ejSRejbLnu/njc4kJUDb8Sb1lLXuArF3k7Nen5uJeKlL/B
523
+ eurHvan45Ud8imd4R/XYxahQ/gILnD8Vdcpf4/9Oq846r6BOuBL1zk/xuz/gTc/FXX4Q5d7Vkxeyeu0a
524
+ uKeiSDwHzvvZOuqElznHWy95b+MBv8NC7M9HJ5yKe/0gCrefZm+kausvRUed5IfVnu/FTc9Hj6nlN2LQ
525
+ 7c+no0r9j+Je34su0gVVEv4Dvqjevsi+0nx4IwZaj6O5eiN69Tg74Q027wxbq68/EQ17HK97XXnNZ81V
526
+ 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
750
+ WX151Z3Xw57nff8ivqX+fyX6JD2vjex7vG96xpPxmZf4IFdYNf7ZKNKdxvrFGMEz0bdxzVefzAqan427
751
+ p7E+HgXBz0SN8pPx7GdjjI57jXjvqxhHvP4Gr/9jXjb1uVpyge18J0b8JF9Mn/lOlG6/ODUfvN+usetO
752
+ +y++LtIcOB5PrcLur8W9XuSTnkS9eG//1agFf7V95DRv/Qrsf3z+xayvLscKusrLnon+POMF7ts2q69+
753
+ GCXUL7bP5b16nO15Ij7P5uHKp9nmC+zJk+yli+3Y+Tq6EaXkH8/2jcvx+pl2DqvfMMfeiK9ci8/rM1dj
754
+ nV5j807zk5pvmv8vRZ+cjkG5EnNAbb7iDda4t3M19eETsd6f5NWuRJ+8lu0Px7NnzPYcf6LoUtw3tecC
755
+ q9WnfYb3xdXOZ/Mnzc/jMUsv8y0WsvfxeiGbY6dizrzKm6a1prXwwvT+eZzf0lo7z2f/IK6j+a9N/vnp
756
+ Pf9afOa1bM5oYl/M9oGfRZ+8ETv5ad+j8JXz0bAf8InS9S/ECnqv7Qe89Xi8dTZG/EyMAluibmnX+wtT
757
+ e0U7uLHWfJ5f9odN+4P/qbHQ3HuG1+e08V36QnvG+fOmfj7FP6/yM29EI5/zZ/TPXI0Bupg94xPx7wu8
758
+ wmW+/k52Vl7w72Lf0Hn3ahp3qkVDF/tpKiS/TT3pR5Pq86Vb74Ri88cnoC798Sm+foWKyK1Ws5SUT926
759
+ SDXvpAOeFJZfzzSW37QrvAldcOhphzI4Xp3SEH9Myti438cn/V7hAVNVmrrXev0NtMnVpi+46jh+P4fP
760
+ +jXPfXySV1J73qLudVzzdXvvFBSp7TpX/fNQ6H6cn4K+9ROhUU4V6VeSNvlbt37Cp4DW+Jnsvk9Sn5tt
761
+ c4VzKVJfomq3FL+hzX0Kz88+DWXst6hv/rj0xqVdTR3xS9Sf1uuPUsX8rPfb43zKM1KsvnUWz4/r8NUr
762
+ 1Et/mq9Dxfws+iB9lxrdrtd9ht94068v3XK1B9d+x5/xvM2Dp29d4hXfSnrdP8v+vUwFbe/zVuvcZkbb
763
+ J+ehh+7j/oara7fa8U/E62lMoe99DXMvxiKe8dZraI36wa7qiuPWX49TuTzUvWNcMPPe8vnzpv32JK+M
764
+ +X/d/oJO+mW2IObGGSq+n/W2XcXrjCsi8ge3vS0nisj/3gxmJm1wx55SUmN9PPToZb99h3LTEVam+DDY
765
+ eIPN2R1MhkivZQIUDyJ7KqK1Wg9Xx5secZzPscE5Jr9Z+hwSs81tZ2JWwHlAB8Fztq2eUu1y1p1U5D20
766
+ NMlAP4KSuvP2TyeERIdKtYd8IsJh9yO/s7oxhuyJyBae+d3L5F9kZhhkjzDs1hBlrT2hkWEgvrgWIHQy
767
+ Be7JUK/FprJQZb+yRyHOPQGDo8C4C/5kwRTkSToCkXUYelZRpb0dRDaT0tnB8RbSg8V+1OTKocVFW9e0
768
+ N5l7gAFvh8luHVtsG95K/dVVc3c+d+ZHg/uQld1vXTbbIpCoLNDC61wm2YP+92QgkjmPZIs0iXFIct+O
769
+ UV6DCgd0whuqkKDy8/3gFyKK169KZBOHpWQxhlkurqZOXko+FqrY513F2HaIqY0kYkssissMbgh10vK2
770
+ AavIMUAph81UhOvBziOdwaxxpIIO2ty9Byp2gJvmeJNWUIY0R1yInE7AfJIyvDUnxGi4whzcoEh7Uut1
771
+ KIXDhuuQuhYOm0WrU2HZ2RxmfSiDwiDrxfSFTQ2RHSIwXrRadPbKl5FWpCov6Il50hT5lCPMUYM12sru
772
+ 7+0sFhlx4eFx05JOnFziQmxjpgCU1nPonlAdIDu2IAHhjLUFZD1afJMpoEhHzuQB7iJHDYfOQCXtisAw
773
+ WV97hQIVtS9brJWUBVyP2rWqPKVh02WotAMF1oecly6fSVyCY0Qy/fKlBZVWiK0zZ2m42k/AIEnSWrHZ
774
+ dZiKSUOvzlok5jvuk1Gve5O2LLOtBeZepAUynAILLWbIUQiXJtm73kTotW/lUDZvN0c7YAFLOd5ikJMb
775
+ Wj1/1W2m7Il9Zn3PwrGdzYY9y1GbjTtbPgrXqTTqmU15IEOQzzkKQniSDF9UtXJ2jsr0Eouc9lnepcU4
776
+ ItmbI0Ziq1Z+B/RpiC9BfSjHuM21CU376IILYfO4SzJ5EvSI2uY9F+woV4UyaCWZAe+RLrznvPuZRmUi
777
+ UlCqBalOfAq6qhuDTcTVVQZcBP5SIN40o7Al5ejPRttZwtVIa4dAwcSQJAq+amueNzlU74u9EP5RQlIK
778
+ nTrpigwj3ClaPYvlqURqAg65/lAMXtVVisxhSAfsbNkZgJIj417fh1e1wYlYDHHohF8n5jvAYqka6H6A
779
+ JTQhBR8ITU/hU+zkS+V+2x22LvsusKKi7g5x0h/5wxUtGcy25fmcZiIN9tAVCZwWhj7jvWyfORCCGISn
780
+ E/JYcL5UOQ503gsbqwSwr586OtEVMjE7He/NrPShEArAHhVIUkH4kooqPpyVvEhI5MaRV1pZToPcGMR2
781
+ m+FJexPs8VtboSrsguE8Xbi/JUy+mVbEpOJjS1PoYwd+iwWvNKgyrIeQLA4RFclas3wrspBewpmX1OKV
782
+ kEDUOeWkSKQqIkLAiJhxSkSC/GD7btUxC4paueZlzWpxXsm3CIn9EM2wbSKVZ26pZPYxaWS7VDZSsymP
783
+ LW5QEBOCLLNJ/WmcjgHhbCkCnSKWmbTNErDGJsK+fPdvQXvWgm05cTZT+etNciZpE+ck9xDikZ3n2i2y
784
+ ejtFW0emluZlEvUpW+4bJXUIp2GPpo0uoNcyL6a5BNYcCdXhZLBTsWUKQPBu0kdNSHLRkn4D5k4Sk8QU
785
+ G1E32nX8ihwPT+pyXeo4bAsZF61kWwH7YDQYHC4C4xPaUZw7GWGoN1nyPZU/QixbWye0bGMqEGBVgIJq
786
+ n8gEBKEgGoRW23Ltda/nY//kBN253DxuQkd8Iq6CzwNXL2PBYAIg25qettrvcraiC362XK7mENVKHckF
787
+ AzDQtXv2Z3C8uQPT7oufp+wVDGeUmHE5Iz+DMdPsTjwPVwZmUof81WxOAc3QaJ0iE/cEILypm6RcleSc
788
+ HYoSlPEm5EcJgBO9KvQ5IDABTCD+yGmbTWsJ8YI+4cZmlOCQOIRVKGWGXouJy7CBFB7HLJObulb3NotQ
789
+ 2N4pFqIIvlE1gZMiiJTaKVqjpG686H2I8XlNZuztDlgTkGwMHslqxUqegHC1im1tURG7iGPFCqLA6yi0
790
+ 7Me72WKBD3RVJq7IthCvXW1bTkXEeZqwYtive7WTVu/NgPbFvnw5J5F9fMxlM3QyZRW5ipLMoipRvmJe
791
+ E38bujMw90NEgEyaUJCCuTpleybOaiPZDqlyAM335VY9a7DWCkUTe3WkSuCr6HgCAInAExXSOiTnqR2p
792
+ ofr0/0O2nxOEjehIFH2whRGUCOwh6bRlrZxUFaQpnE1vq4SOWZgePP42KX46WFvOmduZAwV6op8j4L+E
793
+ fh4JbbnQQMHKyEG9j3MOIMcmV7WvZvJDQpa7/5FoA85XbqFbSXyeyMJgMkjTPKab3WdmalYlVdF6kFCu
794
+ /EFtxNCCai0hgJCJON7p0zmnwpIOxJneVFKi3fLiA4lsi/Mnm7C2J1ZRE979eskIQVCDqD6P6eRblfbw
795
+ wBbP5ENS9rh1SYwWSyZRK1sxbJgREQsgmdTlsrkacgWHxsNJUDLrd6P8CHVhQGPzo63uZ8ShhWXBsYKu
796
+ nIs3ZPLsjU6FkPtyv127WB4923SyHop5c6tp1emdwqThx/6cZNN79RGxpHz2RgWQ3uSeQYYV/mpu+2fC
797
+ dpQ1ag804Th9sQeX2gGBAel2Yfgwi5ZbaasaqNooFFZIRwn4WjrD8ufou40awf8kMjQJ15eeNKzktKsJ
798
+ UemaMjmVpfTCVY9wBS/kDNsy5xcTpBW1SaJ+B3HHIHXIhbQ2eqWtsgvt8UMJQmwWo714pI7N28GV8jeJ
799
+ XgwfvZWfwobvhfwYFnGCshiPGZPZHjtBKR0vnQDZ9m7NlmHWS4mWao2EkyVXZE44yzRYRWA2bcaLiaNJ
800
+ kVs1dF9S9Ks3KLv7zYI0a5ja7W2cWRJe6qmcw1L2JHTpTBQJLuGQIcozUa5Q3TzzKJOVivFivDeqigQE
801
+ n9ot91Td9pCgFFYAUpPTRQ3jIiPwo88eCoIOQ0Duo3RRCb4Aj+coMG2y+QJzGRwbB9EnsGhpG0mCrS9m
802
+ nIylnPcwyapZ4bAggvZoNTSLMheHLL8W2h3YCNI2CEa3I4XV6vQOLDsiucMfss6te+Hwcoft9+1F0C3g
803
+ T4ZuTf7YzbKHfhhHHbnynYyzux4sHnjwULHvvkN3f9VF4mV5jliSaeH3G7veXh2hDlVtobY2BTfywEAA
804
+ b8esPNMqQfcmbUQGe1/SDBg0mYtguxL0uTZDC8+lBzX9c/2ZPo2FMCxa6LeouMEybqrFnL3Y7sg2cRaz
805
+ yhR75LmGAmvSdxlR+K/NEPj5orNcPevfWSmtF8riftuZJ+P+YNgcNovv8ObNV3v6oz/hT2l4/fXLVPHy
806
+ NAQhpz0s1bVWfEt5kAQJRcP5h5dkbCuelZsr9fqYq+OuAc5M1Ia9Y664o+yqNr0H1+pNUFSYozCTIyq2
807
+ u4ZE5k9EQkU+wh7HZrsfkyuC2CpYzo2IJGLlst1r4Dl4fycnX+FjFR/1OyzlwbnlvfANf/t39/32l+6x
808
+ /y1NpUbip00O804WptJA396RL8v5JpMGmt031RN7i755FfuGw3ICksFUrGfqxFn8GrDBozHLZUzmOsu5
809
+ JsXU3Zf33sGZYXtnNbqj8OpTbiPPFXnwfqlXZ6okLOyZKhdmkqLYq0csreRPpPSHCgh1ipmpAHoq26rs
810
+ GLpMzDYIcUZJCs8w5BpF82z0vD90MRWskJxE6PJnWvMIfrTCJd3J/FQcu9ifp/AajVQ0JjiSigLt3Jn3
811
+ /UMQdSpUCYMilX4wILkC46lIcj5Y8xttUa+p+ATea40YdXJi0pYtc1mKiq0dE97xqvdSO1uPkM3WHllT
812
+ K2BGMbbGrdOpfR07faYlWEylVnyTxAYVXMS0/nKFB9t58nTEzqwWnI37nW1NCbvalKs7szSVksiUesF7
813
+ 8CoO+t6SpphnZkgzSwxynkfJZqjbWBIY0DsWi4eb+bpb7LUZ31ZX2LXrtztT22khPtR+czYHALEzeh7B
814
+ ybXcGC2mMiy7R3k4BNV1raEpmo05kqq4bHH2bPrsmX+4yZZOVugVj6XtLTLjZNvdrX1r9uh8Vn9sVib7
815
+ qIt/hsspboWpVB7Ic7lzxVTUZP8jlZ09UWvOU+d/gCJOg8026wQbBck/miR0rKWJF9zx2akQGJQH2wpZ
816
+ mT5eSo4EF65NzTHpxee6Qz1xh+sP2Q40swQVYVtAyV9dnrqM1010h2Z2KkW+bWoLW57KKLXsSrQ1q9iH
817
+ oz6nJy9L2DliQx6b871ntRyuUKLKtpVuNTPlBcdzMlOwc2EqYJzVtVMhyGwnWppKyIajqOoph+r/fv0D
818
+ u/Uf1v/93SdGCv80biT7wmOJyj1f3DWVWphK4yzRYHR1oqobuX1YH51i6nCamXJ2i2rVLN+mLiUNLGs2
819
+ IlWt2gX6c2nKn6FSC3VlwyCTCY7IaE2/NEpiTkUbCvfvPZGtmHLsbh5L91HpTDmuU+G3wkuA+Ug37Ruj
820
+ EKveiU0c2AtMxCJyC+5A+P4SoAqhNzKtndgVUWdLL3C6Jea1l2y1g7U/GLWOGSZq8gdoUZvXB2UTBw2o
821
+ omakyVszE7Muad4Tb9BmbNDQTOjOfbK24Pu+PPVUZHV+zJ1NJwn9v6Wpo7mYMmdUTy7aQ98hyR1wx3S6
822
+ dy3DNyW12x2FyifhB4gnp/WmytXLVIxKjhnDHXiF8TVIt9RQtuEiz6LVNj2m7JDtU6u4yCrNMoQSezUu
823
+ un1q3Xq1Zz9NppLN0k4bho4+a7ylxEQWkoArWeRaeFnRjxR7WImjxFe4Fm7upUH3I54UplnYVNrBYCXX
824
+ aXttSy0gwpIVxS5QXhJAoWDQVqkqCe9e5JbxFO6mmPIli8Up/FKm1MAVkIGemlYdiugBwANSIetMu92m
825
+ UatVRottamfPSvd9/uyoi6kJM2WXAxrlQtFoIXX7WYoSczDSwFJ7GlY8h30fYQ+mHPkfol5ccstV3TH6
826
+ DSoqnLiMmvJ7yZPNRPF2bx3LdDQ8Wuh63ggPSGLC1+226QfM46TYIG0v6nmkx4N8cgebKJ4gju2Uo5cC
827
+ xAraZTqfhVRAMj6tazN5tC9FYbgXTIVzp5o5mp1C4gm2QroteLZthI1zMFS9saqosZGCOPnqa6pI/alf
828
+ dmdqgp7nSX3tzHEPG7hsvrv9Wd1B7/k2LzszldLMyhIWKuDBjB1TLy2PFnuZh2BS3joJ5hMFotSw52J8
829
+ SSNQtGclq0gFvaW2LhMLkSCMhNq2WAHfgHnaAl3KrXpUxrrdPpPhjRpXpgxusdAcY6VJj91/3712+ny1
830
+ okQJ85AJptZgR+tG7XZaVqk/pxImTTMerqlCSrLkkpYakAO2ABm7W518w87O1qNPqeiQnM8MvQNTdnl4
831
+ WaluQVa5T9WEQp2ckWTv4qp7V1txPtZtFaHd/VP+kU5RHGYYNS6lVOptaiavZuo69skpp3V7vaYi1yx8
832
+ tQa9aNUdQMuAHKtTGj7h4jiablE/4P2pOeGyaoM2n4V43FaVjfu+VqnC7jIztb3Faa9dgP2SzpXZqeU/
833
+ Bdgja7+FAqmw9WhDxS6UVYsdemE5n2jFFESS62g8BOjTV1Wrm7Polufa2tq3Z+ZnpjeKjVRQhtHLVHsW
834
+ Kaqpic3ES9qXaEGkgJ17iuERtXXF7SpTqQKmuFvs7lRTVrLajdYjsu1H1D+xQ28QyUO8tDzlQk9F1HZ6
835
+ 9bF2L4g8g2fgXGCMZ2PgthiRaAuC292TiBzvmWVj7ZOy1QPDyVqNyZLzowcLHgGGjarIrsvseqjU5FAD
836
+ +5HjJYrMWJrZPjMVI1c1r1QeJ8E7uStm7bQ104bcfUYiheJIh6NeXEEGv1cm8b2nvSaKsHWm8BZZ5doC
837
+ hy33rIjYe+nDvZ3+oFOo0FuUXj5wYM7sX2sXHXm0pS0FHGHYeojyTW3ylCOWoxUFZk3+ZskgQyA0rF+y
838
+ arFJxC2Uu7x0t6zDKkty5Wp6drR7yrt2BaZWKbAoUx0GooGTLMxg4AVo2t6X3yYvIPPx+GPqbMTmkVl5
839
+ rRfFfaItVG6WQiuTLfuMSTvPqtJXSwUeA5+aVahJ5xUjWK5varPAT+Ym+X+tGmgWVIRlHJ2uWnqDIhNM
840
+ c2iyr5UomurLrMhPdEVjAveR+TkbrPK6qtLZKkBfFUmffNKi2dMTYUtmiaepPWRLvnJUAt227fN3b8ub
841
+ Z8eW9e4ULDAStG6fedbCF8VU8Hw1dgEl5Kbw+XOtRhYgf1P++9IUhtxW2FZzeLABbbzmsE33PJbw4Y/B
842
+ /ZeaxofXwF1u/0rWfaazUG/pL7LTyUcnz/sGVQiCgZ+/d4088nedI389Z6Xbu38hLvr/+D0oALTX/OiZ
843
+ Dy9SY0AqCNkn7f3nXHuBegP867rY8c7yzu/wirUAfPCr5Kdnygv2V3tNqBGcmNICyDjwH32XqiPQc8A1
844
+ L1LvQBxzaCOcSNd4nzz0J1KvUE2CvfE++fB/Snb7RTLJn/NeuUGVgatT3H2oBlwmG/19akq8PPV8YOo/
845
+ m3QZTlAL4u2PHsXdWpUDfNKZ/RecGX+d/Hq0533eNd0Bo5T1xGX+vETuu38vvffehz/mp9+lqsEFZ6M9
846
+ fuvsrTc/fir99nQwhMjiukIml/OpWnabWHOJx/YWeUevkU0WjLvgGb1in7lif708xeISn+rsrcsZO+n1
847
+ /JNsjV3TWVWviE3lvCdw/N6w7z3m750kZ0pXuXLrOthd/gwnwAGzTz7p33uL7LEzU0y2aAsYbNGWV26d
848
+ J//tLedsncgYZK9M/XWWz/s0eIP46+OTLVcrOGB+v/NkjL2ja7Inz9q/15zJ9TRYcH4/8dHO2VWu2XfF
849
+ YXvMOWJnQzXH+/PJjM/2CniI7d3zZ7A7nQV/Lb13XXxAFEUze1CAmuFiKoSpkygqvfiB35mO6mYlhbGd
850
+ evmVIMFgu8OG5rlS5Fy+1RbMW/qt7mCVmlQMPrqyp22JFbJES9MB46nMnFm+01v5dHKnaQNh6xXSelMh
851
+ 3RmCSFZRmHaVUNtIPcHPB3RR8cOUrMwTN01EdrxVHt1Q3rtTZNZeOlyg0ylQ4sz04ReXivh4G0ag8zwV
852
+ 2qYvmvlrOxanXNUp07+zvGM6C7cyldNpn3d1MDhcfy6CuPBt9NU3ZTvv2bWY1xCxC0Qdc7/U/HSyA8ds
853
+ 5h1Nob5mZvLksZ2dS9OjkqXfcOXOFLag0/I2+G5bS5B/ehI15pU8thSW7CxPRQ2nra8lc3T1+aODYbeZ
854
+ i2xtoXStF/COG+UVH+y1hWlrzVp1tOr12rIFRa7ivn06mOG94sWwZ7Kq7WHSePRX1o2Av14x1o29xFqZ
855
+ cnj2TKeqlorpVHwkA9x6+TJr3idJ3ukQ5xc982qz8SHr7kkrNKdmtGkL8IE8DRZBIE7ktpZ3p5haKy3c
856
+ TDMeTm1rUz44xOodHCv2b4yHqxtZ4WJ8eNrvJb4rWzwCsmwQamZG3Ld3zOaWlsY6HrdJOFZd2qdZbGe4
857
+ 3APMChCml5am8MsZ1GM87M0yxty6pM3nvJ9Iy8kcnmJX9pNXmwWs2jQF75v5PZkkID7fei4KhBVTSRXG
858
+ jdr+C3aVez4toLcAYnJ6N1s+mmpac6pQCvUbEC/HpfdmNbwzoz+82dD+9ZLIZpiGpqT7nrmQexZNwru5
859
+ RrFwaKnsC6IpU3m2KA8+bt2BIlRyGXLKw5BF7tvZiOYIKsZher1yK22U5ES20ddUu1LvquiMI2ZXJlkd
860
+ eY0glrNuRLTzuqrTa2tgq1pqQFrHAjGU07zTe6c3RonAJ78wC5OFK5vFmb7WV6lFe0IM3vL0FpSDHBkK
861
+ HWw9NBxsleuOtkk1mHnlrFhAEYSdRMiQrJy58ut9QEKrPuI/BxEvtWds88660QHmpdKotFsVt8KMGHvE
862
+ 5qz82COhOjmNZ5Fn2cb7pzjU1u5pdI/iuQlOl5NdfLFnWfCpTXT7jDn4eSmrNFe1yTAn4nhJrDLNULck
863
+ 9tRNkYOM44gRp3OxmIbhYGlkNXekfFjMShNxR6oyqGKG7ZGq4oc5+AubW+KjYkVT7uMsZTok0JRUgJ4N
864
+ RY7zmd7UxdD/+Y4rw0Cu5EzICiVtE2mkXA0ZkNB1wYcvumLV6RdcxsQVfn4UGikfUAzknMvm+LtXXIXJ
865
+ VV/yViVVmR+EsFISFQmtLdw3Pu8aStbUp/iV86FC80EIy1zLtGWszY9CYwRf+TGv/BPKnpzOVKdeDKmc
866
+ 5/3KfqmXQjNHSiwvZJf9GZVhngk1lTPRjKQPIwWk1+LdN6ZEh1z5JJR/klBYGhTvydMu6+SSXCf41hsh
867
+ +fJmfP1kaLy8lmnghCQUbvTn0SrdVxov70TjXwyZsqdC1+g035Ls1Une8UleWYph3wlBp7MhovUKf/9J
868
+ 6BHl8i9SK/pZKMA8y57RlV+I+57iPHyW7byBf1+lnJerDF11CR38fjr68LlQptITnYv580M0BpeSGthr
869
+ vNTVGMTXfGL7I1yL542e9Mn2LL+SlK9eD7GjD0JG6XJ03el43tcoJfRSfPdMXOdKjJHmRtKRey0m7emQ
870
+ JHoxVIDOZipn78Rk1i2OxwpK8lNJRed0rKYTsRs8kY3CjVAEkr7Qyy49hA8/HyP+ZqgSnYm18KhfytfR
871
+ d+KCL7Gf035yst0ivDPVpB/FbA9dL7+ytH0uxodjxnpPJtGw6Dp87Hn/Ct6SZFNoeeHPN+NGL8bWBBWp
872
+ YdP8Tl5jY+doOsvDl3Mtd/fuYLAhAzltcM8sfQ6GUUzxynr18ue84pFzRudtL+el5lftEDrcZraK6fNk
873
+ 5+dM2pm4fvKry2mXfcfi53JDQC93zdyRgbKn+Jyt2uKTaA7tCT12D8UWdwqXDLp2HyijqOsYVvUSI7Go
874
+ kQaJgGqvEHitt/A5z28GcIy83liSdYnas90u4XP30feohgk/LEJs0XxuABY+FytwDWSzTJuJXWGzM21C
875
+ 7h5ROHxv5xvI3B/uLFOTpmiRlxnaG3C8xZnPRQzmiulsfkkTW9Ya+JKfc9aX0v09w7j4uQ4QTqE1VYnV
876
+ yemZxTTiKXN+xMvM6nDBCgpXM3zN5ONS/6Gz3PmcRzVTFFNpVVx493/KiB2eb7qrWivNDpsVoStJqBR3
877
+ Th5RVXDXq4dw0LdGG/b+t9B/3zoC+GrmGma/CujyOT8kw8AC59HkuuD4wkFlnVJJm7zesDg4Wj5uJ+5x
878
+ pEYyIKcoI7gme6E/kK3YWZar0mIlc4ojx7uYxoNOz65du3x97DTzsETBD5E0QXlRfCjzoyk6Quc/q62H
879
+ WqyrmMGrcsM70w7/zntIoGWGuWwG/bnPLYdtzZ2TQ+U6Mv6zzY4/2vVfP2faLs1/7oV2JihAdgeb9f/V
880
+ dXW/TZ5X/LqW+B/euqqSaHEMo5pW4rgKga5MbUFdUDvtYnJsJxicOPPrkETVpIUApe0orVRGhaaWrrSk
881
+ GdAUmuFQQqTtHpE7LuFm0v6LPefrec7zgZBCYr+fz+c5v/M7vzMwwH7DgIqPYQMyKGRBQMfvY177PPoe
882
+ WVahXwIfpMdwhh2/U8H6YjXGqaj10KPLj342/+492n609ej+o5u750ANGDFzioPcR6R7BxHwPiLwd1Dr
883
+ GBF28//nGKkAJB/1fv14B2v+3qNv8ewvUCEY9IS3MSbwJUYRNvFbiliQojJqPuP//vEagWc9ZdbA7e+e
884
+ xzgGRAc2OTqxyVGBh/gEl3bPsQ4vqUZDDGYH9YZXSc3WPD+/3+4n/H7bGC9BpWxzxqbfHnj0Nj4rtc9m
885
+ EB2RqICvice6ZArXPg9IN+PKCvGHnxa//lFFElZBqe3JGp9/98kWaObR9Z7cApUyvIPTJqOzPrJafRdQ
886
+ 702+x/uj3t66xBE8nbNvzROcpU+CZ3Sad3y/bmeq09PFWmwsn2K5RUy99ATLKuEehWscktx4pQsnVcUK
887
+ QwFbpmM2V9T6UXM/p3VYAYrhRKroSiGY/E2IAZJe6FciwSNXZ46RNUZyxRstBsub485Zhv4ihESbbsHH
888
+ qvOdOZzCOJmlumd2GEpKds2KOOIpN+wpeEgL5CpX/Mgo7DqCOXMTemYLUOLtKdwxRSmPY//XIBItPdIv
889
+ wur1tZLMEYXQ+uC11NEBOXdBrJmx4jgUzRvO3mi2T2O+6zD2i46COAiDT3ZJ7Oj5m82GOf/mB0Aj1Ypn
890
+ oUHVp4CbDGXQAN20OUBRoGKgwmzoseJCb7r062K14FialpB4ullrK1gSYCzqzSxvIjoe7nZZaA4h0Udw
891
+ PeSY6HQqeHRgcExTySXaBvzMGyQkqKRxxNqEet+sdadbS8Vq0LV7CpBq0yw1oC47CWMQFgxvBhsqMBmn
892
+ M8JRJ4zFZTatWg5V5ZvZqVYbmDVdkBIMTEfiGtV7dsRYPSQB4Y6d6CCElY1zxVyp4GFfn2MCbfsuB5tz
893
+ J2tQuQTU3U6ZBzHfNktgYkGrzdRmm7x+uEwec/C7VACKK2hJDaVMjINj3Q6SsH5j/pibgoxhLYRDVB+W
894
+ nkB1JGS8KCkwokUhO0VXU2VlN4mNiMvh8HHB1ISCKeQQZ93bpQ8xxbwsqWm2PbisFNhYiD7mfioUMIPI
895
+ QnUwJkpILEBaHqRKtOq5p/yFmCmTval4U22mw/N4j0zkPaFZUAD+WKYLPZsxM5zpFcGThYK7vNUyrhAk
896
+ 8mbvYiQzt0aJrIWOhsbjQBkztLR5+mHYHh2iw0GRJATPoawTdSILVYowhaIy+S7EiDHt6kgVk2JIrbzT
897
+ tlkxcKCX/C2A5lFjEVuxE85ydbXPW1B/UfgoCAFzro29qC6BjfnQs8jJa/VsWoEuxEtMq64ZJlxhk0iL
898
+ NmmlDBUcoe5a0w9KjYeLtHcC7Ip1KIoEvGcZ2r3FTsnYvF1bmPHQApfDA6YWVCVsyAdwuW6r0/ATGTJq
899
+ IN+xYn08jtu1lz1RQp77TnkStl0sTNhV64enXwen0OghvByb2tPchLiFdUxqUzkIJxifLFyELch9QPDw
900
+ UeWVkqM0erK2ZOb7VM54QnnfiAtRSbYRdYbCucs8rbX5gyYIrPIlFCIZK5r1/HStbtwvZBHD9tccLL68
901
+ f0Kl+Q1Ez1w9quq+YRHNYeUJkq30y4ojT8peqkQ3jFNc6x0wG5rZt4CPJpMwmvuFyCDL4wbS1hNp52TR
902
+ yHPsTKnwWMxCQ60YeZRK14xvD4/1SrndMesyZ0821AClAekyAcUqQDW79rIS45A6iS4PazQyAnWgnPhu
903
+ nrghHg85FLXGMoosUDaaHwqCfdjaF9ZUzbyACvm6KDlGJVTRY6+8eOjoxOTvjx3OpCu0aA/9LFZDTMrr
904
+ YERVfL4f3GwsMjSATydimwttyCoNFhezVvhZT9Cvb9S65nkbGtFxRhVnTZOpDPm1AgYcXYLSXnrbZqv8
905
+ VHMZuQJmxvBbqJGmPAXOz5xGpYm2yiHWI5zM8ywy2/2cDPioEm00I9Hu7edS4IrehnHSVsF1YK7iqLeq
906
+ H2AT+pmNohzl8k5kU0P6AO5sniIVPrPN2bHmhc5wowQ6b4qCwVj32aJwpM8whn6vZSHGNBk9c+TX9By/
907
+ GICoZrfTZREfsxG3F3IUkPCSLxF90dXZyNszQ41ShK32zcSRcYabXjdjZarTOWW5AU4pY45GTs3GbiXv
908
+ 2i3KmPbanFXZ+3Cd8V4b8LM6VYyl4Ld5E4GPhqUvuLZwz3HVaRXImfF/tNdTVSOr0RI5PpcFoXYldpKJ
909
+ 3Cc4MAtdZxJMdOZoSBszgZxhGC0zxspZyDkVLz8GZF/Q7ZhxAXHNqmbzBFV8FMGASAKzLjtHR0IzdAhq
910
+ jZM15NTYMYa4lwcIGyM/ZwGiTFRPlSYsKd2Y6+JCawPzJ0iYVBTKMZ+RmRIWbj0EyCPaUJKLbWWBM8pQ
911
+ FVkjnakkWaROkZiMSK2bAHhkp6tRNbgOX50SsOooG0ID2AyPLkr8gsCh0M48p8BOK4s2gnUDzdkhzo8Z
912
+ X5YGk0Vuss/v1isATv5F02p5oIVg5inznRRD5WAHVl4QhGH1vDzIITMunaIE8sgMcuHBMKccSujfTg+S
913
+ P3KptikSTKDPo3Tf0U/ws39xFY38THtvUBBYGpk/MR9w7czoixbaglPHFOmjGohzdXCJYF/XR2mhrKPP
914
+ MYezRAjK2fGTOsMB313odUW6eXFo1Mn4tEhftulR7bCJcVPNtEQcp2khJEPaantHsyAY5euT4DjEHRZ9
915
+ vfJSCRBhdRPuxyxy5/W3hKLZ8IP9hdZMfJ75Fmq6PP5s96PHPwN3GeuFUZ2y8JPrVAUMmeTnAd/lym73
916
+ gypsUtWOMU7/k91LjKre5QpvgKsCrruDfzMy/PhHPHOHWOXIp36AvxHKu2HuR2jsPWSVM8aMDG/mdfPd
917
+ CVH+Gev6UV0zujvwvu/zWwTPA5gyIrjbjBj/dfcTZJ6fQ958n7FeqGz3I6PJ28j+3sYabZt4f3pTOIZ4
918
+ +PLJfXoLrtIGd/8Uj7+PNeW2ocofxlsvCmFgQwKyFzCiuoKx6TsY7aX4siUwqLpjXMLpnJzynYRrtyS8
919
+ flGi1RTS/VrVuvpOMQEo3q0rcAk7Aj6XsyDufBV//4pZHFxLiBgXV1Xw94wKu6/hM6yo6j8P1XtZtox9
920
+ i75c5zM85Y7UPlsTcsiG8Ar+gtff4Lg5cwmIV0NlcW4JReSBvOYFPEWfRS2j2pnbcF1OUVV4HMfgosTT
921
+ NbliRzE31qWRP5SO2FL8HNWGjkBiuQSaCvJQul7YCI6N83dHIfBq3q0oFoqtNvUB8jGoxXakd+4JKUKR
922
+ izymx0WpgbWOv+wgw+Qh129yT3tGqukRe+SqT025IwffwBPPuDd191qXHrmMZ91mggoX46MBdkPa5LZU
923
+ 4KKmuy5ltqSmG9/9tjd64ZjzyJ9Zx88vCY3hYyEFUZE7ep6/qfY/L4/3gYxn2843mZfiaEUPZPSuyfRZ
924
+ kxJUdowJ68Z9Qt20ptp5012HyCE8L9ZkxtnCW2v4hD+oYnBYMRD+vG2vE8eRvNwUl5Gyao5aw2yOdZvV
925
+ INWM4Jgt8/8PXnUe94nUaQrjQ99znsgFjFD9hFEqujLktKxhxSJ+HqlxpD65i9GuszYydROfawWyObiO
926
+ z43wXnjspvymHEqBYBb3j3S6M+V9r776ankJRXzARwhBIXR74dvRzIYCIhRGVJtUfY4iqLeI6vdYsTM9
927
+ XdSSdizjNwrlNiBUL6R/Y7FEgFL2UpAfAmagDllxDMdaWS9ZY6EYeyS6oAd/VKhE8Zhy+fDbxUzfcBFE
928
+ SxrN4+8cmYAU0zm0lviGJ43VTZc4EAaeQfsgjKnkdYvqZBaP03JWfNsstu5if9wzyPjGcddmYIUGiJYE
929
+ KrDdCYgqJ/o2Bp6wJbCTKSj0WrWwGIVBXgtCb4itYKzfu1YWeawHYrylgGihV92jV4khqSyNlQRkdgXM
930
+ yMn++MaX8kpIkKqDl3COemGZL2HgIHsP8Nfp2NLQ4TMBXO1TluFkJb4kQzSLYon7bJ4JInJmIsxMQT1v
931
+ BgWMLz0DjJZoIrRmhVSlXJjxeq3RnCVcgpgjuUKShNWjvUp+/BEzaNiJOLh8pDHYagyRktxJIWaDSyxu
932
+ hkh7DY2y4ozXt7GJXvD6mTCyaowYC1e56bJcmCaOhS9YA0PXdODQtRcBp5/xytHyqkEQrBhohWFouwNp
933
+ z17hBwjFgfc/N9MDYcVDIxMj8bgvkQ6DaEEAsDGsS5OJuofzChsq3TpIG1IBM4E6OUMM4n+CP2YxADnb
934
+ yv3ybJ3pSQHWhrMT7BTmMbo5YZax2alWTV2suWQGJIuicHLKQk7VCVS7MRDoRX8BrvFBu9r0NBRd6KkX
935
+ Qu45tzFPKwfeKYW4CAIXYAWOOwKXmGtoqiPPNBeFs962LhnAk/uoxC4Xm1PmnZuoLFKDYGO355IWabcD
936
+ DMgG3YBnJLiijbaKCIJVuXidkV31yExl0hWAWBVeD5O3jT/s+gub0EtxquG6U6/N16QgiWi7+MCtN+Qg
937
+ NYWG3PRCF8epWsdce1EVA8jvkHIWbikFCGzZtMEMCMCRsFncQRU/NPRe6fh4af7Eck5sB1ukBniAZkuF
938
+ JUxGn8Wm6vBFHdh2g/IaLjiKywA2PPJG6B1zVuWwOBfnnFmLBqryaPiHgEgoddVFjSmYJhjOwH6sQ23B
939
+ LghFQLu8vP/wy/sneIyZP4pDQ6MhIgU7pCdSKBi2GVZ/DPIeQ34t0CyDRRqpl3Gc7b0S6MgeMjNpcAgW
940
+ 7cnWrPktiyGYoretsGXhLCRn8wQJuViVzr6DMo1QqlZmF6/nctyAagM/dZb5xpaOo6J4CZOJEXq9PvXE
941
+ QNJ3ZmlW3xSBynqLk6gxXIPtepmH3oRNjcQe0PXuZOHxyLd8I1+7g5N6Ap5zj2QrZrq1WeS/WAaELnAk
942
+ 5CV7Pce28BJr5bjEjh1vn38qVhIGjdqOrI3qxS/4aGrloKd+Va3Ai+ohLIpyegSiURdkYod8a2gXsc90
943
+ JLmY2DcT1luR+rLn9WWesPz2FOLnq6YGPi8GUpAO6o+NJjYNpxjmCqbYylVSnaQFxQy4bIPmYBPn3yNY
944
+ BZHPCvz0qklwXIzex1c/VlPvdKfVGNw7NFr0FMdtqnPsqrmYg1u6qwmT2+cf0m9BhjqSS4gDhTVHSfMO
945
+ 3lcpW8lkqMQgc52j2rBztFvT2LzDXh1EIaPES1jmNCjhODIPGq35NgmLWgWb3On6uPfFgRHw37JEG3Dw
946
+ OhcbB+OLCfPRq3alTDevXBdpfEUeHZVSw2i3/U2XbpKqFGYE98LIirFxT9FIdGOrIcUieP2ypDMpiMRt
947
+ amv1qOM4ruW5R0GCNFIJsE9PA48IZJCboI6Uk2U3D/FOq3Q1aB1k50OotrIRUaeC7eyjRBdVs4QDiRwc
948
+ IiUgcQiejcqX+XQIHJFYFsjxK1V1KrRXFls5cOkwmo7TUNKTYX0Jbu4nXtK8pPphTYwpthr0fvxC8IeN
949
+ OtqomtogoEM6s2bkKsPLK5fIPTCdWF+Qj8lloZgfhGL6CzML/1nPs0GKrS8MiR7O7pXH27srGO3YwBhC
950
+ 8Nnjaxg1WEGNIIqNbIWxC2KYm3POYhTggcRTzPUkCuJiCNukGSTRB9DWic9lrnz42TWKopjrAoe9bzn6
951
+ FA/ZtKo88fU+oeeFJ3ZaO+b+pA60gZ+hHo7omyDmdxMrr59nfO0nRgpXFXf8DH325BZ85u9Rxydfh7Uk
952
+ J+vLLJQqF8ZP3eVyrN6qI6MJZU3GsgEca7LYR8sOWFQBkkXoULh7435dTG0GiiPuliRrjRSUOYLTLZx+
953
+ lZSRIl96Fo7LChElMGNxRTYjXDgDDfJW/ZS3yw2KZasM2z8rwVCxdIrZMTTdB3LtV2WRQQiNFRraaM1H
954
+ 23QPU1K8rYv+C9d2dWTw8yXQ/YTp+L6ZyiVO2yqkbFwSran64jW0eQVwhBxa0McGJkWh8mKp9AdfwGO8
955
+ 1YUnqRYSLZKyTBef9q897d952v8efm6dfdq/8rT/j2er3z5b/fTZ6rVnq1eerX7zbPXqs9Uv/nvrm//9
956
+ 83Obcr61Yv4akrjYhgQvKMrwNeL2H3IIjAM9ErXhjMuLEm6zWaVBBMeGJ2xQwGahrksSaJ+jkHCWDfz1
957
+ Ve6wzSy2ybNXVPgmCAh+LEnQOxLD+lIe75zkk26oIKPNGrbxyjVJ+NWBm5UoNfsyZ5hyUEzHs4I07euS
958
+ zHuRk9a5TdYwf3ZHvlqXANllOXJHQn5fqdOpfc7gM+sP1yV718+C56fdUFHI6ypCZPudzvpGTrwtrWru
959
+ /rVXuNR6wTGbEPgHyoxQaWnRsIf/2DsJLQgQW1G3kfwbXLBC/zK16xer4RpI0yWByy/NttWxbjEL5KVk
960
+ 9VSaNMqbMbtAwoZK2cPlaghpkFczkl65lcfpJr1eSN3qGvMvYfkM3FDOBlWru3LxSuXyu/snyuVDk4ey
961
+ 996YfOvNbN/I3sx3ugSRCRwelsoyj8s6Tei6QY6EaaiCt3vKKQ7J+K1p9N9xo6faMT84k/L/sqCx2KPF
962
+ uwwEvTkQY1BIIPKvwP2aJbessYFfJCJQleSWWYBAz3DWA+VOePVhDL2prC+Vjubnkcs4Sy796Qngb2fW
963
+ QEghRabnu61aibrAvHl3wThK/75XobYP50F7bO8o5aEr8+h95fjj0D6QgTJScqCeeOGFFJ5W60EF+fBJ
964
+ YjwI3jj5Ful9tZlshrFu8nbNsZSxoq3xRic72DVGentIaS32UbeRuDx3kBMENvK/HH/H0528I9mYmHt5
965
+ l9QjFacpcQXzKVzhEulDAsOHck/91TM7dvzgm0cmsuJcrzQZCBlA98WYygR8D2gM0850fJVWYrMQzuW6
966
+ 7dPLwaT5k9bOfaWed0Fl2k6+w4eUExaymY2jOgNSbS0IFfXeNpNshPJWDiL9Nbl+zNVO5vGYNVey7uzQ
967
+ CPLhefDGNiyegGM43mti1BG/TiFdxrtVu4I26ivp3SJGrfCh1B6iJfcSnACcJemVMkZHsJFrI0lnJdms
968
+ s6lwLLwmV4gKR4seJzhMXhnZuy+b9Hd/G3B8zj0TLgY+ZDEEUnkHS7w8hj3Hkm3YGxzI0vvCc9qr2Egb
969
+ MTkwg9sJOkT8/jQ3KmnzBOLJyS9wLo3ELR3NZZ75gRlhN8fndGHhOc1ZSa3T8F7PabYqsjMvqRWKVy/i
970
+ YEruPHv9jvnYZxalzUMH9iWulTvIaLTXEa5ZX8xVa61fFraX9QCIAKg5bh8rVRiy7m8o4pJl5O0ogZ8d
971
+ vmbCnCfH5TJKTBFva0O4Wl+l/Ix13xO6KCJPD5H51fete+aO/R8EyzZRoN8BAA==`;let pt;function Sa(){if(!pt){pt=new Uint8Array(122784);const e=atob(va),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);Vn(t,pt)}return pt}const C=0,Jr=1,xa=2,La=3,Na=4,Ta=5,Ua=6,Fa=7,Ra=8,Zi=9,M=10,O=11,mn=12,Qa=13,ka=14,Ma=15,Pa=16,Oa=17,Da=18,Ya=20;class m{constructor(t,n,r){this.prefix=new Uint8Array(t.length),this.transform=n,this.suffix=new Uint8Array(r.length);for(let i=0;i<t.length;i++)this.prefix[i]=t.charCodeAt(i);for(let i=0;i<r.length;i++)this.suffix[i]=r.charCodeAt(i)}}const Bt=[new m("",C,""),new m("",C," "),new m(" ",C," "),new m("",mn,""),new m("",M," "),new m("",C," the "),new m(" ",C,""),new m("s ",C," "),new m("",C," of "),new m("",M,""),new m("",C," and "),new m("",Qa,""),new m("",Jr,""),new m(", ",C," "),new m("",C,", "),new m(" ",M," "),new m("",C," in "),new m("",C," to "),new m("e ",C," "),new m("",C,'"'),new m("",C,"."),new m("",C,'">'),new m("",C,`
972
+ `),new m("",La,""),new m("",C,"]"),new m("",C," for "),new m("",ka,""),new m("",xa,""),new m("",C," a "),new m("",C," that "),new m(" ",M,""),new m("",C,". "),new m(".",C,""),new m(" ",C,", "),new m("",Ma,""),new m("",C," with "),new m("",C,"'"),new m("",C," from "),new m("",C," by "),new m("",Pa,""),new m("",Oa,""),new m(" the ",C,""),new m("",Na,""),new m("",C,". The "),new m("",O,""),new m("",C," on "),new m("",C," as "),new m("",C," is "),new m("",Fa,""),new m("",Jr,"ing "),new m("",C,`
973
+ `),new m("",C,":"),new m(" ",C,". "),new m("",C,"ed "),new m("",Ya,""),new m("",Da,""),new m("",Ua,""),new m("",C,"("),new m("",M,", "),new m("",Ra,""),new m("",C," at "),new m("",C,"ly "),new m(" the ",C," of "),new m("",Ta,""),new m("",Zi,""),new m(" ",M,", "),new m("",M,'"'),new m(".",C,"("),new m("",O," "),new m("",M,'">'),new m("",C,'="'),new m(" ",C,"."),new m(".com/",C,""),new m(" the ",C," of the "),new m("",M,"'"),new m("",C,". This "),new m("",C,","),new m(".",C," "),new m("",M,"("),new m("",M,"."),new m("",C," not "),new m(" ",C,'="'),new m("",C,"er "),new m(" ",O," "),new m("",C,"al "),new m(" ",O,""),new m("",C,"='"),new m("",O,'"'),new m("",M,". "),new m(" ",C,"("),new m("",C,"ful "),new m(" ",M,". "),new m("",C,"ive "),new m("",C,"less "),new m("",O,"'"),new m("",C,"est "),new m(" ",M,"."),new m("",O,'">'),new m(" ",C,"='"),new m("",M,","),new m("",C,"ize "),new m("",O,"."),new m(" ",C,""),new m(" ",C,","),new m("",M,'="'),new m("",O,'="'),new m("",C,"ous "),new m("",O,", "),new m("",M,"='"),new m(" ",M,","),new m(" ",O,'="'),new m(" ",O,", "),new m("",O,","),new m("",O,"("),new m("",O,". "),new m(" ",O,"."),new m("",O,"='"),new m(" ",O,". "),new m(" ",M,'="'),new m(" ",O,"='"),new m(" ",M,"='")],Wa=Bt.length;function Kr(e,t){return e[t]<192?(e[t]>=97&&e[t]<=122&&(e[t]^=32),1):e[t]<224?(e[t+1]^=32,2):(e[t+2]^=5,3)}function qa(e,t,n,r,i){const s=Sa(),{prefix:o}=Bt[i],{suffix:f}=Bt[i],a=Bt[i].transform;let c=a<mn?0:a-(mn-1);const u=t;c>r&&(c=r);let l=0;for(;l<o.length;)e[t++]=o[l++];n+=c,r-=c,a<=Zi&&(r-=a);for(let A=0;A<r;A++)e[t++]=s[n+A];let d=t-r;if(a===M)Kr(e,d);else if(a===O)for(;r>0;){const A=Kr(e,d);d+=A,r-=A}let h=0;for(;h<f.length;)e[t++]=f[h++];return t-u}const Ga=256,za=704,Va=26,Xr=6,_r=2,In=16,Ha=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),Za=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),ja=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),Ja=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),Ka=4,$r=24;function Xa(e,t){const n=new Uint8Array(t),r=new Ia(e),i=new Ea(n);return _a(r,i),n}function _a(e,t){let n=0,r=0,i=0;const s=[16,15,11,4];let o=0;const f=[new Ne(0,0),new Ne(0,0),new Ne(0,0)],a=128+tt.READ_SIZE,c=new tt(e),u=wa(c),l=(1<<u)-16,d=1<<u,h=d-1,A=new Uint8Array(d+a+$r),y=d,w=[],p=[];for(let g=0;g<3*ce;g++)w[g]=new Q(0,0),p[g]=new Q(0,0);for(;!r;){const g=[268435456,268435456,268435456],I=[0],E=[1,1,1],B=[0,1,0,1,0,1],b=[0];for(let x=0;x<3;x++)f[x].codes=[],f[x].htrees=new Uint32Array;c.readMoreInput();const v=ha(c);let L=v.meta_block_length;if(n+L>t.buffer.length){const x=new Uint8Array(n+L);x.set(t.buffer),t.buffer=x}if(r=v.input_end,v.is_metadata){for(ya(c);L>0;--L)c.readMoreInput(),c.readBits(8);continue}if(L===0)continue;if(v.is_uncompressed){c.bit_pos_=c.bit_pos_+7&-8,ga(t,L,n,A,h,c),n+=L;continue}for(let x=0;x<3;x++)E[x]=Hi(c)+1,E[x]>=2&&(Ut(E[x]+2,w,x*ce,c),Ut(Va,p,x*ce,c),g[x]=wt(p,x*ce,c),b[x]=1);c.readMoreInput();const T=c.readBits(2),F=In+(c.readBits(4)<<T),R=(1<<T)-1,W=F+(48<<T),U=new Uint8Array(E[0]);for(let x=0;x<E[0];x++)c.readMoreInput(),U[x]=c.readBits(2)<<1;const[N,S]=jr(E[0]<<Xr,c),[k,z]=jr(E[2]<<_r,c);f[0]=new Ne(Ga,N),f[1]=new Ne(za,E[1]),f[2]=new Ne(W,k);for(let x=0;x<3;++x)f[x].decode(c);let V=0,Z=0,H=U[I[0]],$=yt[H],re=yt[H+1],ue=f[1].htrees[0];for(;L>0;){let x;c.readMoreInput(),g[1]===0&&(Kt(E[1],w,1,I,B,b,c),g[1]=wt(p,ce,c),ue=f[1].htrees[I[1]]),g[1]--;const K=Qe(f[1].codes,ue,c);let ee=K>>6;ee>=2?(ee-=2,x=-1):x=0;const X=aa[ee]+(K>>3&7),ie=oa[X],de=ie.offset+c.readBits(ie.nbits),Ce=ca[ee]+(K&7),se=fa[Ce],G=se.offset+c.readBits(se.nbits);let ve=A[n-1&h],Zn=A[n-2&h];for(let te=0;te<de;te++){c.readMoreInput(),g[0]===0&&(Kt(E[0],w,0,I,B,b,c),g[0]=wt(p,0,c),V=I[0]<<Xr,H=U[I[0]],$=yt[H],re=yt[H+1]);const Se=Zr[$+ve]|Zr[re+Zn],xe=S[V+Se];g[0]--,Zn=ve,ve=Qe(f[0].codes,f[0].htrees[xe],c),A[n&h]=ve,(n&h)===h&&t.write(A,d),n++}if(L-=de,L<=0)break;if(x<0){c.readMoreInput(),g[2]===0&&(Kt(E[2],w,2,I,B,b,c),g[2]=wt(p,2*ce,c),Z=I[2]<<_r),g[2]--;const te=(G>4?3:G-2)&255,Se=z[Z+te];if(x=Qe(f[2].codes,f[2].htrees[Se],c),x>=F){x-=F;const xe=x&R;x>>=T;const Ve=(x>>1)+1,Ot=(2+(x&1)<<Ve)-4;x=F+(Ot+c.readBits(Ve)<<T)+xe}}const ze=$a(x,s,o);if(ze<0)throw new Error("[BrotliDecompress] invalid distance");n<l&&i!==l?i=n:i=l;let dt=n&h;if(ze>i)if(G>=Ka&&G<=$r){let te=ja[G];const Se=ze-i-1,xe=Ja[G],Ve=(1<<xe)-1,Ot=Se&Ve,jn=Se>>xe;if(te+=Ot*G,jn<Wa){const Dt=qa(A,dt,te,G,jn);if(dt+=Dt,n+=Dt,L-=Dt,dt>=y){t.write(A,d);for(let At=0;At<dt-y;At++)A[At]=A[y+At]}}else throw new Error("Invalid backward reference")}else throw new Error("Invalid backward reference");else{if(x>0&&(s[o&3]=ze,o++),G>L)throw new Error("Invalid backward reference");for(let te=0;te<G;te++)A[n&h]=A[n-ze&h],(n&h)===h&&t.write(A,d),n++,L--}}n&=1073741823}t.write(A,n&h)}function $a(e,t,n){return e<In?(n+=Ha[e],n&=3,t[n]+Za[e]):e-In+1}function ec(e,t){const n=new Uint8Array(t);try{let r=0,i=0;for(;r<e.length-8;){const s=e[r++]<<24|e[r++]<<16|e[r++]<<8|e[r++],o=e[r++]<<24|e[r++]<<16|e[r++]<<8|e[r++];if(e.length-r<o)throw new Error("lz4 not hadoop");if(n.length<s)throw new Error("lz4 not hadoop");if(En(e.subarray(r,r+o),n,i)!==s)throw new Error("lz4 not hadoop");if(r+=o,i+=s,r===e.length)return n}if(r<e.length)throw new Error("lz4 not hadoop")}catch(r){if(r instanceof Error&&r.message!=="lz4 not hadoop")throw r;En(e,n,0)}return n}function tc(e,t){const n=new Uint8Array(t);return En(e,n,0),n}function En(e,t,n){let r=n;for(let i=0;i<e.length;){const s=e[i++];let o=s>>4;if(o){let d=o+240;for(;d===255;)o+=d=e[i++];if(t.set(e.subarray(i,i+o),r),r+=o,i+=o,i>=e.length)return r-n}const f=e[i++]|e[i++]<<8;if(!f||f>r)throw new Error(`lz4 offset out of range ${f}`);let a=s&15,c=a+240;for(;c===255;)a+=c=e[i++];a+=4;let u=r-f;const l=r+a;for(;r<l;)t[r++]=t[u++]}return r-n}const nc={SNAPPY:jf(),GZIP:(e,t)=>Vn(e,new Uint8Array(t)),BROTLI:Xa,ZSTD:e=>Zf(e),LZ4:ec,LZ4_RAW:tc},bn=async({url:e,byteLength:t})=>{const n=await Do({url:e,byteLength:t});return{url:e,file:n,metadata:await Wn(n)}},ji=(e,t)=>e.key_value_metadata?.find(n=>n.key===t)?.value??void 0,rc=e=>{try{const t=JSON.parse(ji(e,"pandas")??"{}").index_columns?.[0];return typeof t=="string"?t:null}catch{return null}},ei=e=>Number(e.num_rows),ic=(e,t,n)=>{if(e.sort((i,s)=>i.rowStart-s.rowStart),e.length===1&&e[0].rowStart===t&&e[0].data.length===n-t)return e[0].data;const r=new Array(n-t);for(const{rowStart:i,data:s}of e)for(let o=0;o<s.length;o++){const f=i+o;f>=t&&f<n&&(r[f-t]=s[o])}return r},sc=async(e,t,n,r)=>{let i=0;for(const s of e.metadata.row_groups){const o=i+Number(s.num_rows),f=new Map;await Uf({file:e.file,metadata:e.metadata,columns:t,rowStart:i,rowEnd:o,compressors:nc,parsers:{geometryFromBytes:c=>c},onChunk:({columnName:c,columnData:u,rowStart:l})=>{const d=f.get(c)??[];d.push({rowStart:l,data:u}),f.set(c,d)}});const a={};for(const c of t)a[c]=ic(f.get(c)??[],i,o);n(a,i,o),i=o}},Re={a:1,b:0,c:0,d:1,tx:0,ty:0},Ft=(e,t)=>({a:e.a*t.a+e.b*t.c,b:e.a*t.b+e.b*t.d,c:e.c*t.a+e.d*t.c,d:e.c*t.b+e.d*t.d,tx:e.a*t.tx+e.b*t.ty+e.tx,ty:e.c*t.tx+e.d*t.ty+e.ty}),oc=e=>{const t=e.a*e.d-e.b*e.c;if(!Number.isFinite(t)||t===0)throw new Error("Coordinate transform is not invertible");const n=e.d/t,r=-e.b/t,i=-e.c/t,s=e.a/t;return{a:n,b:r,c:i,d:s,tx:-(n*e.tx+r*e.ty),ty:-(i*e.tx+s*e.ty)}},_t=(e,t)=>typeof e=="object"&&Array.isArray(e.axes)?e.axes.map(n=>n.name):t,Ji=e=>typeof e=="string"?e:e?.name,fe=(e,t)=>{const n=e.indexOf(t);if(n===-1)throw new Error(`Transform has no '${t}' axis (axes: ${e.join(", ")})`);return n},Hn=(e,t)=>{const n=_t(e.input,t);switch(e.type){case"identity":return Re;case"scale":{const r=e.scale??[];return{...Re,a:r[fe(n,"x")],d:r[fe(n,"y")]}}case"translation":{const r=e.translation??[];return{...Re,tx:r[fe(n,"x")],ty:r[fe(n,"y")]}}case"affine":{const r=e.affine??[],i=_t(e.output,n),s=r[fe(i,"x")],o=r[fe(i,"y")],f=fe(n,"x"),a=fe(n,"y"),c=n.length;return{a:s[f],b:s[a],tx:s[c],c:o[f],d:o[a],ty:o[c]}}case"sequence":{let r=Re,i=n;for(const s of e.transformations??[])r=Ft(Hn(s,i),r),i=_t(s.output,i);return r}default:throw new Error(`Unsupported coordinate transformation type '${e.type}'`)}},fc=e=>{if(!Object.values(e).every(Number.isFinite))throw new Error("Coordinate transform has non-finite or missing values");return e},ti=e=>(e??[]).map(t=>Ji(t.output)).filter(t=>!!t),ni=(e,t,n)=>{const r=(e??[]).find(i=>Ji(i.output)===t);return r?fc(Hn(r,n)):null},ac=(e,t)=>{const n=ti(e),r=new Set(ti(t));return n.includes("global")&&r.has("global")?"global":n.find(i=>r.has(i))??null},cc=(e,t,n,r,i=Re)=>{const s=ac(e,n);if(!s)throw new Error("Element and image share no coordinate system");const o=Ft(ni(e,s,t),i),f=ni(n,s,r);return Ft(oc(o),f)},$t=["images","labels","shapes","points","tables"],ke=async e=>{const t=await fetch(e);if(t.status===404||t.status===403)return null;if(!t.ok)throw new Error(`${e} returned ${t.status}`);const n=await t.text();try{return JSON.parse(n)}catch{return null}},lc=async e=>{const t=await ke(`${e}/zarr.json`);return t?.zarr_format===3&&t.node_type==="group"?t.attributes??{}:null},uc=e=>{const t=new Map,n=r=>{let i=t.get(r);return i||(i={node_type:"group",attributes:{}},t.set(r,i)),i};for(const[r,i]of Object.entries(e)){const s=r.lastIndexOf("/"),o=s===-1?"":r.slice(0,s),f=r.slice(s+1);if(f===".zattrs")n(o).attributes=i??{};else if(f===".zarray"){const a=n(o);a.node_type="array",a.shape=i?.shape,a.data_type=i?.dtype}else f===".zgroup"&&n(o)}return t},ri=(e,t)=>{const n=Object.fromEntries($t.map(i=>[i,[]]));for(const i of e.keys()){const[s,o,...f]=i.split("/");f.length===0&&o&&$t.includes(s)&&n[s].push(o)}const r=[["images",t?.image],["shapes",t?.shapes],["points",t?.points],["tables",t?.table]];for(const[i,s]of r)s&&!n[i].includes(s)&&n[i].push(s);for(const i of $t)n[i].sort();return n},dc=async(e,t)=>{const n=await ke(`${e}/zarr.json`);if(n){const o=n.consolidated_metadata?.metadata??{},f=new Map(Object.entries(o));return{url:e,zarrFormat:3,rootAttrs:n.attributes??{},nodes:f,elements:ri(f,t)}}const r=await ke(`${e}/.zmetadata`),i=uc(r?.metadata??{}),s=i.get("")?.attributes??await ke(`${e}/.zattrs`)??{};if(!r&&!s.spatialdata_attrs)throw new Error(`No SpatialData store found at ${e}`);return{url:e,zarrFormat:2,rootAttrs:s,nodes:i,elements:ri(i,t)}},Ac=8,Ae=new Map,hc=(e,t)=>`${e}/${t}.zarr`,gc=(e,t,n)=>{const r=hc(e,t),i=`${r}|${JSON.stringify(n??{})}`;let s=Ae.get(i);for(s?Ae.delete(i):(s=dc(r,n),s.catch(()=>Ae.delete(i))),Ae.set(i,s);Ae.size>Ac;)Ae.delete(Ae.keys().next().value);return s},mt=(e,t,n)=>{const r=e.elements[t];return n?r.includes(n)?n:null:r[0]??null},Me=async(e,t)=>{const n=e.nodes.get(t);if(n)return n.attributes??{};const r=e.zarrFormat===3?await ke(`${e.url}/${t}/zarr.json`):{attributes:await ke(`${e.url}/${t}/.zattrs`)},i=r?.attributes??{};return e.nodes.set(t,{node_type:r?.node_type??"group",attributes:i,shape:r?.shape,data_type:r?.data_type}),i},wc=e=>e.ome??e,ii=(e,t)=>e?e.map(n=>typeof n=="string"?n:n.name):t,yc=async(e,t,n)=>{const[r,i]=await Promise.all([Me(e,`images/${t}`),Me(e,n)]),s=wc(r).multiscales?.[0]??{},o=ii(s.axes,["c","y","x"]),f=(s.datasets?.[0]?.coordinateTransformations??[]).reduce((a,c)=>Ft(Hn(c,o),a),Re);return cc(s.coordinateTransformations,o,i.coordinateTransformations,ii(i.axes,["x","y"]),f)},si=async e=>{try{const r=await fetch(e,{method:"HEAD"});if(r.status===404)return null;const i=Number(r.headers.get("Content-Length")),s=(r.headers.get("Content-Type")??"").includes("html");if(r.ok&&!s&&i>0)return i}catch{}const t=await fetch(e,{headers:{Range:"bytes=0-0"}});if(!t.ok||(t.headers.get("Content-Type")??"").includes("html"))return await t.body?.cancel(),null;const n=Number(t.headers.get("Content-Range")?.split("/")[1]);if(t.status===206){if(await t.body?.cancel(),n>0)return n;throw new Error(`${e}: the server answered a range request but its CORS policy hides Content-Range (allow HEAD, or add Content-Range to the exposed response headers)`)}return(await t.arrayBuffer()).byteLength||null},Ki=async e=>{const t=await si(e);if(t)return[{url:e,byteLength:t}];const n=[],r=8;for(let i=0;;i+=r){const s=Array.from({length:r},(f,a)=>`${e}/part.${i+a}.parquet`),o=await Promise.all(s.map(si));for(let f=0;f<r;f++){if(!o[f])return n;n.push({url:s[f],byteLength:o[f]})}}},pc=(e,t)=>{const n=e.nodes.get(`tables/${t}/obs`)?.attributes??{};return Array.isArray(n["column-order"])?n["column-order"]:[]},Xi=(e,t)=>{const n=e.nodes.get(t)?.attributes?.["encoding-type"];return n==="categorical"?`${t}/codes`:typeof n=="string"&&n.startsWith("nullable-")?`${t}/values`:t},_i=(e,t)=>{const n=e.nodes.get(`tables/${t}/obs`)?.attributes??{};return`tables/${t}/obs/${String(n._index??"_index")}`},$i=(e,t)=>e.nodes.get(Xi(e,_i(e,t)))?.shape?.[0]??0,es=async(e,t)=>{await Me(e,`tables/${t}/obs`);const n=_i(e,t);await Me(e,n);const r=Xi(e,n);r!==n&&await Me(e,r)},mc=(e,t,n,r)=>r===0?{mode:"none"}:e&&n.includes(e)?{mode:"column",column:e}:r===t?{mode:"order"}:{mode:"none"},Ic=async(e,t,n,r)=>{const i=await lc(`${e.url}/shapes/${n}/shapes.zarr`);if(!i)return null;const s=i.join;if(!s||typeof i.number_cells!="number"||typeof i.n_shapes!="number")return null;const o=s.mode==="none"?null:i.table??null;return o!==null&&o!==r||o&&(await es(e,o),$i(e,o)!==i.number_cells)?null:{imageName:t,shapesName:n,shapesFiles:[],geometryColumn:"geometry",shapesIndexColumn:i.shapes_index_column??null,nShapes:i.n_shapes,tableName:o,nObs:o?i.number_cells:0,join:s,nCells:i.number_cells}},oi=new WeakMap,Ec=async(e,t)=>{const n=mt(e,"images",t?.image),r=mt(e,"shapes",t?.shapes);if(!n||!r)return null;const i=await Ic(e,n,r,mt(e,"tables",t?.table));if(i)return i;const s=await Ki(`${e.url}/shapes/${r}/shapes.parquet`);if(s.length===0)return null;const{metadata:o}=await bn(s[0]);let f="geometry";try{f=JSON.parse(ji(o,"geo")??"{}").primary_column??"geometry"}catch{}const a=rc(o);let c=ei(o);for(const y of s.slice(1))c+=ei((await bn(y)).metadata);const u=mt(e,"tables",t?.table);u&&(await Me(e,`tables/${u}`),await es(e,u));const l=u?$i(e,u):0,d=u?e.nodes.get(`tables/${u}`)?.attributes?.region:null,h=Array.isArray(d)&&d.length>1;h&&console.warn(`SpatialData: table '${u}' annotates ${d.length} regions; cells are shown unannotated.`);const A=h?{mode:"none"}:mc(a,c,u?pc(e,u):[],l);return A.mode==="order"&&console.warn(`SpatialData: table '${u}' shares no id column with shapes '${r}'; assuming both are in the same cell order.`),{imageName:n,shapesName:r,shapesFiles:s,geometryColumn:f,shapesIndexColumn:a,nShapes:c,tableName:A.mode==="none"?null:u,nObs:l,join:A,nCells:A.mode==="none"?c:l}},bc=(e,t)=>{let n=oi.get(e);n||(n=new Map,oi.set(e,n));const r=JSON.stringify(t??{});let i=n.get(r);return i||(i=Ec(e,t),i.catch(()=>n.delete(r)),n.set(r,i)),i},Bc=3,Cc=6,vc=64,Sc=e=>{const t=(e&536870912)!==0,n=(e&2147483648)!==0,r=(e&1073741824)!==0,i=e&268435455,s=Math.floor(i/1e3),o=i%1e3;let f=2;return(n||s===1||s===3)&&f++,(r||s===2||s===3)&&f++,{type:o,dims:f,hasSrid:t}},fi=e=>{if(!e||e.byteLength<9)return null;const t=new DataView(e.buffer,e.byteOffset,e.byteLength);let n=0;const r=()=>{const f=t.getUint8(n)===1,a=Sc(t.getUint32(n+1,f));return n+=5+(a.hasSrid?4:0),{little:f,...a}};let i=r();if(i.type===Cc){if(t.getUint32(n,i.little)===0)return null;n+=4,i=r()}if(i.type!==Bc||t.getUint32(n,i.little)===0)return null;n+=4;const s=t.getUint32(n,i.little);if(n+=4,s===0)return null;const o=i.dims*8;return n+s*o>e.byteLength?null:{view:t,little:i.little,start:n,n:s,stride:o}},Bn=(e,t)=>e.view.getFloat64(e.start+t*e.stride,e.little),Cn=(e,t)=>e.view.getFloat64(e.start+t*e.stride+8,e.little),xc=e=>Bn(e,0)===Bn(e,e.n-1)&&Cn(e,0)===Cn(e,e.n-1),ts=e=>e.n+(xc(e)?0:1),Lc=(e,t,n,r,i)=>{const s=ts(e),o=a=>a<e.n?a:0,f=(a,c)=>{const u=Bn(e,c),l=Cn(e,c);t[n+a*2]=i.a*u+i.b*l+i.tx,t[n+a*2+1]=i.c*u+i.d*l+i.ty};if(s<=r){for(let a=0;a<s;a++)f(a,o(a));for(let a=s;a<r;a++)f(a,o(s-1));return}for(let a=0;a<r;a++)f(a,o(Math.round(a*(s-1)/(r-1))))},Nc=(e,t,n=null,r=e.length)=>{let i=0;for(let u=0;u<e.length;u++){const l=fi(e[u]);l&&(i=Math.max(i,ts(l)))}const s=Math.min(Math.max(i,4),vc),o=s*2,f=new Float32Array(r*o).fill(NaN),a=new Uint8Array(r);for(let u=0;u<e.length;u++){const l=n?n[u]:u;if(l<0||l>=r)continue;const d=fi(e[u]);d&&(Lc(d,f,l*o,s,t),a[l]=1)}let c=0;for(let u=0;u<r;u++)a[u]||c++;return{coords:f,polygonOffset:o,nMissing:c}},Tc=(e,t)=>{const n=e.length;if(n===t.length){let o=!0;for(let f=0;f<n;f++)if(String(e[f])!==String(t[f])){o=!1;break}if(o)return{destIndex:null,nUnmatched:0}}const r=new Map;for(let o=0;o<t.length;o++)r.set(String(t[o]),o);const i=new Int32Array(n);let s=0;for(let o=0;o<n;o++){const f=r.get(String(e[o]));i[o]=f??-1,f===void 0&&s++}return{destIndex:i,nUnmatched:s}},en=self;en.onmessage=async e=>{const{rootUrl:t,uuid:n,elements:r}=e.data;try{const i=await gc(t,n,r),s=await bc(i,r);if(!s)throw new Error("No shapes element to draw cells from");const o=await yc(i,s.imageName,`shapes/${s.shapesName}`),f=[s.geometryColumn];s.join.mode==="column"&&s.shapesIndexColumn&&f.push(s.shapesIndexColumn);const a=[],c=[],u=s.shapesFiles.length?s.shapesFiles:await Ki(`${i.url}/shapes/${s.shapesName}/shapes.parquet`);for(const w of u){const p=await bn(w);await sc(p,f,g=>{const I=g[s.geometryColumn];for(let B=0;B<I.length;B++)a.push(I[B]);const E=s.shapesIndexColumn?g[s.shapesIndexColumn]:void 0;if(E)for(let B=0;B<E.length;B++)c.push(E[B])})}let l=null,d=0;if(s.join.mode==="column"){const w=Fs(new rs(`${i.url}/tables/${s.tableName}/obs`)),p=await fo(w,s.join.column);({destIndex:l,nUnmatched:d}=Tc(c,p))}const{coords:h,polygonOffset:A,nMissing:y}=Nc(a,o,l,s.nCells);en.postMessage({type:"DONE",polygonCoords:h,polygonOffset:A,nCells:s.nCells,nMissing:y,nUnmatched:d},[h.buffer])}catch(i){console.error(i),en.postMessage({type:"ERROR",message:i instanceof Error?i.message:String(i)})}};
974
+ //# sourceMappingURL=spatialdataShapes.worker-DQV1zeTt.js.map