@genome-spy/core 0.75.0 → 0.76.0

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 (74) hide show
  1. package/dist/bundle/{esm-CgfVIRJ-.js → esm-BimDEpBb.js} +1 -1
  2. package/dist/bundle/{esm-DtE8VqAv.js → esm-Bvlm1uVk.js} +1 -1
  3. package/dist/bundle/{esm-sIoQYZ21.js → esm-CngqBe45.js} +17 -17
  4. package/dist/bundle/{esm-DQiq2Zhd.js → esm-D_euN86T.js} +43 -43
  5. package/dist/bundle/index.es.js +3253 -3137
  6. package/dist/bundle/index.js +97 -96
  7. package/dist/schema.json +352 -0
  8. package/dist/src/config/defaults/markDefaults.d.ts.map +1 -1
  9. package/dist/src/config/defaults/markDefaults.js +1 -12
  10. package/dist/src/config/defaults/scaleDefaults.d.ts.map +1 -1
  11. package/dist/src/config/defaults/scaleDefaults.js +1 -0
  12. package/dist/src/config/markConfig.d.ts.map +1 -1
  13. package/dist/src/config/markConfig.js +16 -8
  14. package/dist/src/config/themes.d.ts.map +1 -1
  15. package/dist/src/config/themes.js +15 -2
  16. package/dist/src/data/sources/lazy/registerBuiltInLazySources.js +2 -2
  17. package/dist/src/data/sources/lazy/registerCoreLazySources.d.ts +2 -0
  18. package/dist/src/data/sources/lazy/registerCoreLazySources.d.ts.map +1 -0
  19. package/dist/src/data/sources/lazy/registerCoreLazySources.js +2 -0
  20. package/dist/src/data/sources/lazy/tabixSource.d.ts +7 -0
  21. package/dist/src/data/sources/lazy/tabixSource.d.ts.map +1 -1
  22. package/dist/src/data/sources/lazy/tabixSource.js +18 -0
  23. package/dist/src/data/sources/lazy/tabixTsvSource.d.ts +37 -0
  24. package/dist/src/data/sources/lazy/tabixTsvSource.d.ts.map +1 -0
  25. package/dist/src/data/sources/lazy/tabixTsvSource.js +163 -0
  26. package/dist/src/genomeSpyBase.d.ts.map +1 -1
  27. package/dist/src/genomeSpyBase.js +4 -1
  28. package/dist/src/gl/webGLHelper.d.ts +5 -2
  29. package/dist/src/gl/webGLHelper.d.ts.map +1 -1
  30. package/dist/src/gl/webGLHelper.js +20 -3
  31. package/dist/src/marks/__snapshots__/shaderSnapshot.test.js.snap +1082 -0
  32. package/dist/src/marks/link.vertex.glsl.js +1 -1
  33. package/dist/src/minimal.d.ts.map +1 -1
  34. package/dist/src/minimal.js +5 -4
  35. package/dist/src/scale/scale.js +10 -2
  36. package/dist/src/scales/domainPlanner.js +1 -1
  37. package/dist/src/scales/scaleResolution.d.ts.map +1 -1
  38. package/dist/src/scales/scaleResolution.js +9 -3
  39. package/dist/src/scales/selectionDomainUtils.d.ts +10 -0
  40. package/dist/src/scales/selectionDomainUtils.d.ts.map +1 -1
  41. package/dist/src/scales/selectionDomainUtils.js +32 -3
  42. package/dist/src/spec/channel.d.ts +30 -0
  43. package/dist/src/spec/data.d.ts +40 -0
  44. package/dist/src/spec/parameter.d.ts +6 -0
  45. package/dist/src/spec/transform.d.ts +6 -0
  46. package/dist/src/view/axisGridView.d.ts.map +1 -1
  47. package/dist/src/view/axisGridView.js +2 -1
  48. package/dist/src/view/axisView.d.ts.map +1 -1
  49. package/dist/src/view/axisView.js +2 -1
  50. package/dist/src/view/facetView.d.ts.map +1 -1
  51. package/dist/src/view/facetView.js +2 -1
  52. package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
  53. package/dist/src/view/gridView/gridChild.js +9 -1
  54. package/dist/src/view/gridView/gridView.d.ts.map +1 -1
  55. package/dist/src/view/gridView/gridView.js +198 -32
  56. package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
  57. package/dist/src/view/gridView/scrollbar.js +5 -1
  58. package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
  59. package/dist/src/view/gridView/selectionRect.js +5 -1
  60. package/dist/src/view/gridView/separatorView.d.ts.map +1 -1
  61. package/dist/src/view/gridView/separatorView.js +5 -1
  62. package/dist/src/view/testUtils.d.ts +30 -3
  63. package/dist/src/view/testUtils.d.ts.map +1 -1
  64. package/dist/src/view/testUtils.js +51 -2
  65. package/dist/src/view/viewSelectors.d.ts +38 -10
  66. package/dist/src/view/viewSelectors.d.ts.map +1 -1
  67. package/dist/src/view/viewSelectors.js +67 -2
  68. package/dist/src/view/viewUtilTypes.d.ts +15 -0
  69. package/dist/src/view/viewUtils.d.ts.map +1 -1
  70. package/dist/src/view/viewUtils.js +10 -0
  71. package/package.json +2 -2
  72. package/LICENSE +0 -21
  73. /package/dist/bundle/{esm-BDFRLEuD.js → esm-C49STiCR.js} +0 -0
  74. /package/dist/bundle/{esm-CGX-qz1d.js → esm-CuVa5T98.js} +0 -0
@@ -1,19 +1,19 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.genomeSpyEmbed={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Object.defineProperty,n=(e,t)=>()=>(e&&(t=e(e=0)),t),r=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},i=globalThis,a=i.ShadowRoot&&(i.ShadyCSS===void 0||i.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,o=Symbol(),s=new WeakMap,c=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==o)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(a&&e===void 0){let n=t!==void 0&&t.length===1;n&&(e=s.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&s.set(t,e))}return e}toString(){return this.cssText}},l=e=>new c(typeof e==`string`?e:e+``,void 0,o),u=(e,t)=>{if(a)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let n of t){let t=document.createElement(`style`),r=i.litNonce;r!==void 0&&t.setAttribute(`nonce`,r),t.textContent=n.cssText,e.appendChild(t)}},d=a?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return l(t)})(e):e,{is:f,defineProperty:p,getOwnPropertyDescriptor:m,getOwnPropertyNames:h,getOwnPropertySymbols:g,getPrototypeOf:_}=Object,v=globalThis,y=v.trustedTypes,b=y?y.emptyScript:``,x=v.reactiveElementPolyfillSupport,S=(e,t)=>e,C={toAttribute(e,t){switch(t){case Boolean:e=e?b:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},w=(e,t)=>!f(e,t),T={attribute:!0,type:String,converter:C,reflect:!1,useDefault:!1,hasChanged:w};Symbol.metadata??=Symbol(`metadata`),v.litPropertyMetadata??=new WeakMap;var E=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=T){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&p(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=m(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??T}static _$Ei(){if(this.hasOwnProperty(S(`elementProperties`)))return;let e=_(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(S(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(S(`properties`))){let e=this.properties,t=[...h(e),...g(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(d(e))}else e!==void 0&&t.push(d(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return u(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?C:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?C:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??w)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};E.elementStyles=[],E.shadowRootOptions={mode:`open`},E[S(`elementProperties`)]=new Map,E[S(`finalized`)]=new Map,x?.({ReactiveElement:E}),(v.reactiveElementVersions??=[]).push(`2.1.2`);var ee=globalThis,te=e=>e,ne=ee.trustedTypes,re=ne?ne.createPolicy(`lit-html`,{createHTML:e=>e}):void 0,ie=`$lit$`,ae=`lit$${Math.random().toFixed(9).slice(2)}$`,oe=`?`+ae,se=`<${oe}>`,ce=document,le=()=>ce.createComment(``),ue=e=>e===null||typeof e!=`object`&&typeof e!=`function`,de=Array.isArray,fe=e=>de(e)||typeof e?.[Symbol.iterator]==`function`,pe=`[
2
- \f\r]`,me=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,he=/-->/g,ge=/>/g,_e=RegExp(`>|${pe}(?:([^\\s"'>=/]+)(${pe}*=${pe}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),ve=/'/g,ye=/"/g,be=/^(?:script|style|textarea|title)$/i,D=(e=>(t,...n)=>({_$litType$:e,strings:t,values:n}))(1),xe=Symbol.for(`lit-noChange`),Se=Symbol.for(`lit-nothing`),Ce=new WeakMap,we=ce.createTreeWalker(ce,129);function Te(e,t){if(!de(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return re===void 0?t:re.createHTML(t)}var Ee=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=me;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===me?c[1]===`!--`?o=he:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=_e):(be.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=_e):o=ge:o===_e?c[0]===`>`?(o=i??me,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?_e:c[3]===`"`?ye:ve):o===ye||o===ve?o=_e:o===he||o===ge?o=me:(o=_e,i=void 0);let d=o===_e&&e[t+1].startsWith(`/>`)?` `:``;a+=o===me?n+se:l>=0?(r.push(s),n.slice(0,l)+ie+n.slice(l)+ae+d):n+ae+(l===-2?t:d)}return[Te(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},De=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=Ee(t,n);if(this.el=e.createElement(l,r),we.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=we.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(ie)){let t=u[o++],n=i.getAttribute(e).split(ae),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?Me:r[1]===`?`?Ne:r[1]===`@`?Pe:je}),i.removeAttribute(e)}else e.startsWith(ae)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(be.test(i.tagName)){let e=i.textContent.split(ae),t=e.length-1;if(t>0){i.textContent=ne?ne.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],le()),we.nextNode(),c.push({type:2,index:++a});i.append(e[t],le())}}}else if(i.nodeType===8)if(i.data===oe)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(ae,e+1))!==-1;)c.push({type:7,index:a}),e+=ae.length-1}a++}}static createElement(e,t){let n=ce.createElement(`template`);return n.innerHTML=e,n}};function Oe(e,t,n=e,r){if(t===xe)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=ue(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=Oe(e,i._$AS(e,t.values),i,r)),t}var ke=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??ce).importNode(t,!0);we.currentNode=r;let i=we.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new Ae(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new Fe(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=we.nextNode(),a++)}return we.currentNode=ce,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},Ae=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=Se,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=Oe(this,e,t),ue(e)?e===Se||e==null||e===``?(this._$AH!==Se&&this._$AR(),this._$AH=Se):e!==this._$AH&&e!==xe&&this._(e):e._$litType$===void 0?e.nodeType===void 0?fe(e)?this.k(e):this._(e):this.T(e):this.$(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==Se&&ue(this._$AH)?this._$AA.nextSibling.data=e:this.T(ce.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=De.createElement(Te(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new ke(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=Ce.get(e.strings);return t===void 0&&Ce.set(e.strings,t=new De(e)),t}k(t){de(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(le()),this.O(le()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=te(e).nextSibling;te(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},je=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=Se,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=Se}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=Oe(this,e,t,0),a=!ue(e)||e!==this._$AH&&e!==xe,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=Oe(this,r[n+o],t,o),s===xe&&(s=this._$AH[o]),a||=!ue(s)||s!==this._$AH[o],s===Se?e=Se:e!==Se&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===Se?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},Me=class extends je{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===Se?void 0:e}},Ne=class extends je{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==Se)}},Pe=class extends je{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=Oe(this,e,t,0)??Se)===xe)return;let n=this._$AH,r=e===Se&&n!==Se||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==Se&&(n===Se||r);r&&this.element.removeEventListener(this.name,this,n),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH==`function`?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},Fe=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){Oe(this,e)}},Ie=ee.litHtmlPolyfillSupport;Ie?.(De,Ae),(ee.litHtmlVersions??=[]).push(`3.3.2`);var Le=(e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new Ae(t.insertBefore(le(),e),e,void 0,n??{})}return i._$AI(e),i},Re=globalThis,ze=class extends E{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=Le(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return xe}};ze._$litElement$=!0,ze.finalized=!0,Re.litElementHydrateSupport?.({LitElement:ze});var Be=Re.litElementPolyfillSupport;Be?.({LitElement:ze}),(Re.litElementVersions??=[]).push(`4.2.2`);function Ve(e,t,n){return e.fields=t||[],e.fname=n,e}function He(e){return e==null?null:e.fname}function Ue(e){return e==null?null:e.fields}function We(e){return e.length===1?Ge(e[0]):Ke(e)}var Ge=e=>function(t){return t[e]},Ke=e=>{let t=e.length;return function(n){for(let r=0;r<t;++r)n=n[e[r]];return n}};function qe(e){throw Error(e)}function Je(e){let t=[],n=e.length,r=null,i=0,a=``,o,s,c;e+=``;function l(){t.push(a+e.substring(o,s)),a=``,o=s+1}for(o=s=0;s<n;++s)if(c=e[s],c===`\\`)a+=e.substring(o,s++),o=s;else if(c===r)l(),r=null,i=-1;else if(r)continue;else o===i&&c===`"`||o===i&&c===`'`?(o=s+1,r=c):c===`.`&&!i?s>o?l():o=s+1:c===`[`?(s>o&&l(),i=o=s+1):c===`]`&&(i||qe(`Access path missing open bracket: `+e),i>0&&l(),i=0,o=s+1);return i&&qe(`Access path missing closing bracket: `+e),r&&qe(`Access path missing closing quote: `+e),s>o&&(s++,l()),t}function Ye(e,t,n){let r=Je(e);return e=r.length===1?r[0]:e,Ve((n&&n.get||We)(r),[e],t||e)}Ye(`id`);var Xe=Ve(e=>e,[],`identity`);Ve(()=>0,[],`zero`),Ve(()=>1,[],`one`),Ve(()=>!0,[],`true`),Ve(()=>!1,[],`false`);var Ze=new Set([...Object.getOwnPropertyNames(Object.prototype).filter(e=>typeof Object.prototype[e]==`function`),`__proto__`]),Qe=Array.isArray;function $e(e){return e===Object(e)}function et(e){return e[e.length-1]}function tt(e){return e==null||e===``?null:+e}var O=e=>t=>e*Math.exp(t),nt=e=>t=>Math.log(e*t),rt=e=>t=>Math.sign(t)*Math.log1p(Math.abs(t/e)),it=e=>t=>Math.sign(t)*Math.expm1(Math.abs(t))*e,at=e=>t=>t<0?-((-t)**+e):t**+e;function k(e,t,n,r){let i=n(e[0]),a=n(et(e)),o=(a-i)*t;return[r(i-o),r(a-o)]}function ot(e,t){return k(e,t,tt,Xe)}function st(e,t){var n=Math.sign(e[0]);return k(e,t,nt(n),O(n))}function A(e,t,n){return k(e,t,at(n),at(1/n))}function ct(e,t,n,r,i){let a=r(e[0]),o=r(et(e)),s=t==null?(a+o)/2:r(t);return[i(s+(a-s)*n),i(s+(o-s)*n)]}function lt(e,t,n){return ct(e,t,n,tt,Xe)}function ut(e,t,n){let r=Math.sign(e[0]);return ct(e,t,n,nt(r),O(r))}function dt(e,t,n,r){return ct(e,t,n,at(r),at(1/r))}function ft(e,t,n,r){return ct(e,t,n,rt(r),it(r))}function j(e){return e==null?[]:Qe(e)?e:[e]}function pt(e,t,n){let r=e[0],i=e[1],a;return i<r&&(a=i,i=r,r=a),a=i-r,a>=n-t?[t,n]:[r=Math.min(Math.max(r,t),n-a),r+a]}function mt(e){return typeof e==`function`}var ht=`descending`;function gt(e,t,n){n||={},t=j(t)||[];let r=[],i=[],a={},o=n.comparator||vt;return j(e).forEach((e,o)=>{e!=null&&(r.push(t[o]===ht?-1:1),i.push(e=mt(e)?e:Ye(e,null,n)),(Ue(e)||[]).forEach(e=>a[e]=1))}),i.length===0?null:Ve(o(i,r),Object.keys(a))}var _t=(e,t)=>(e<t||e==null)&&t!=null?-1:(e>t||t==null)&&e!=null?1:(t=t instanceof Date?+t:t,e=e instanceof Date?+e:e)!==e&&t===t?-1:t!==t&&e===e?1:0,vt=(e,t)=>e.length===1?yt(e[0],t[0]):bt(e,t,e.length),yt=(e,t)=>function(n,r){return _t(e(n),e(r))*t},bt=(e,t,n)=>(t.push(0),function(r,i){let a,o=0,s=-1;for(;o===0&&++s<n;)a=e[s],o=_t(a(r),a(i));return o*t[s]});function xt(e){for(let t,n,r=1,i=arguments.length;r<i;++r)for(n in t=arguments[r],t)e[n]=t[n];return e}function St(e,t){return Object.hasOwn(e,t)}function Ct(e){return typeof e==`boolean`}function wt(e){return Object.prototype.toString.call(e)===`[object Date]`}function Tt(e){return e&&mt(e[Symbol.iterator])}function M(e){return typeof e==`number`}function Et(e){return Object.prototype.toString.call(e)===`[object RegExp]`}function N(e){return typeof e==`string`}function P(e,t){let n=e[0],r=et(e),i=+t;return i?i===1?r:n+i*(r-n):n}function Dt(e){return e&&et(e)-e[0]||0}function Ot(e){return Qe(e)?`[${e.map(e=>e===null?`null`:Ot(e))}]`:$e(e)||N(e)?JSON.stringify(e).replaceAll(`\u2028`,`\\u2028`).replaceAll(`\u2029`,`\\u2029`):e}function kt(e){return e==null||e===``?null:!e||e===`false`||e===`0`?!1:!!e}var At=e=>M(e)||wt(e)?e:Date.parse(e);function jt(e,t){return t||=At,e==null||e===``?null:t(e)}function Mt(e){return e==null||e===``?null:e+``}function Nt(e){let t={},n=e.length;for(let r=0;r<n;++r)t[e[r]]=!0;return t}var Pt={},Ft={},It=34,Lt=10,Rt=13;function zt(e){return Function(`d`,`return {`+e.map(function(e,t){return JSON.stringify(e)+`: d[`+t+`] || ""`}).join(`,`)+`}`)}function Bt(e,t){var n=zt(e);return function(r,i){return t(n(r),i,e)}}function Vt(e){var t=Object.create(null),n=[];return e.forEach(function(e){for(var r in e)r in t||n.push(t[r]=r)}),n}function Ht(e,t){var n=e+``,r=n.length;return r<t?Array(t-r+1).join(0)+n:n}function Ut(e){return e<0?`-`+Ht(-e,6):e>9999?`+`+Ht(e,6):Ht(e,4)}function Wt(e){var t=e.getUTCHours(),n=e.getUTCMinutes(),r=e.getUTCSeconds(),i=e.getUTCMilliseconds();return isNaN(e)?`Invalid Date`:Ut(e.getUTCFullYear(),4)+`-`+Ht(e.getUTCMonth()+1,2)+`-`+Ht(e.getUTCDate(),2)+(i?`T`+Ht(t,2)+`:`+Ht(n,2)+`:`+Ht(r,2)+`.`+Ht(i,3)+`Z`:r?`T`+Ht(t,2)+`:`+Ht(n,2)+`:`+Ht(r,2)+`Z`:n||t?`T`+Ht(t,2)+`:`+Ht(n,2)+`Z`:``)}function Gt(e){var t=RegExp(`["`+e+`
3
- \r]`),n=e.charCodeAt(0);function r(e,t){var n,r,a=i(e,function(e,i){if(n)return n(e,i-1);r=e,n=t?Bt(e,t):zt(e)});return a.columns=r||[],a}function i(e,t){var r=[],i=e.length,a=0,o=0,s,c=i<=0,l=!1;e.charCodeAt(i-1)===Lt&&--i,e.charCodeAt(i-1)===Rt&&--i;function u(){if(c)return Ft;if(l)return l=!1,Pt;var t,r=a,o;if(e.charCodeAt(r)===It){for(;a++<i&&e.charCodeAt(a)!==It||e.charCodeAt(++a)===It;);return(t=a)>=i?c=!0:(o=e.charCodeAt(a++))===Lt?l=!0:o===Rt&&(l=!0,e.charCodeAt(a)===Lt&&++a),e.slice(r+1,t-1).replace(/""/g,`"`)}for(;a<i;){if((o=e.charCodeAt(t=a++))===Lt)l=!0;else if(o===Rt)l=!0,e.charCodeAt(a)===Lt&&++a;else if(o!==n)continue;return e.slice(r,t)}return c=!0,e.slice(r,i)}for(;(s=u())!==Ft;){for(var d=[];s!==Pt&&s!==Ft;)d.push(s),s=u();t&&(d=t(d,o++))==null||r.push(d)}return r}function a(t,n){return t.map(function(t){return n.map(function(e){return u(t[e])}).join(e)})}function o(t,n){return n??=Vt(t),[n.map(u).join(e)].concat(a(t,n)).join(`
4
- `)}function s(e,t){return t??=Vt(e),a(e,t).join(`
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.genomeSpyEmbed={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Object.defineProperty,n=(e,t)=>()=>(e&&(t=e(e=0)),t),r=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},i=globalThis,a=i.ShadowRoot&&(i.ShadyCSS===void 0||i.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,o=Symbol(),s=new WeakMap,c=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==o)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(a&&e===void 0){let n=t!==void 0&&t.length===1;n&&(e=s.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&s.set(t,e))}return e}toString(){return this.cssText}},l=e=>new c(typeof e==`string`?e:e+``,void 0,o),u=(e,t)=>{if(a)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let n of t){let t=document.createElement(`style`),r=i.litNonce;r!==void 0&&t.setAttribute(`nonce`,r),t.textContent=n.cssText,e.appendChild(t)}},d=a?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return l(t)})(e):e,{is:f,defineProperty:p,getOwnPropertyDescriptor:m,getOwnPropertyNames:h,getOwnPropertySymbols:g,getPrototypeOf:_}=Object,v=globalThis,y=v.trustedTypes,b=y?y.emptyScript:``,x=v.reactiveElementPolyfillSupport,S=(e,t)=>e,C={toAttribute(e,t){switch(t){case Boolean:e=e?b:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},w=(e,t)=>!f(e,t),T={attribute:!0,type:String,converter:C,reflect:!1,useDefault:!1,hasChanged:w};Symbol.metadata??=Symbol(`metadata`),v.litPropertyMetadata??=new WeakMap;var E=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=T){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&p(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=m(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??T}static _$Ei(){if(this.hasOwnProperty(S(`elementProperties`)))return;let e=_(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(S(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(S(`properties`))){let e=this.properties,t=[...h(e),...g(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(d(e))}else e!==void 0&&t.push(d(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return u(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?C:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?C:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??w)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};E.elementStyles=[],E.shadowRootOptions={mode:`open`},E[S(`elementProperties`)]=new Map,E[S(`finalized`)]=new Map,x?.({ReactiveElement:E}),(v.reactiveElementVersions??=[]).push(`2.1.2`);var D=globalThis,ee=e=>e,te=D.trustedTypes,ne=te?te.createPolicy(`lit-html`,{createHTML:e=>e}):void 0,re=`$lit$`,ie=`lit$${Math.random().toFixed(9).slice(2)}$`,ae=`?`+ie,oe=`<${ae}>`,se=document,ce=()=>se.createComment(``),le=e=>e===null||typeof e!=`object`&&typeof e!=`function`,ue=Array.isArray,de=e=>ue(e)||typeof e?.[Symbol.iterator]==`function`,fe=`[
2
+ \f\r]`,pe=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,me=/-->/g,he=/>/g,ge=RegExp(`>|${fe}(?:([^\\s"'>=/]+)(${fe}*=${fe}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),_e=/'/g,ve=/"/g,ye=/^(?:script|style|textarea|title)$/i,O=(e=>(t,...n)=>({_$litType$:e,strings:t,values:n}))(1),be=Symbol.for(`lit-noChange`),xe=Symbol.for(`lit-nothing`),Se=new WeakMap,Ce=se.createTreeWalker(se,129);function we(e,t){if(!ue(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return ne===void 0?t:ne.createHTML(t)}var Te=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=pe;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===pe?c[1]===`!--`?o=me:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=ge):(ye.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=ge):o=he:o===ge?c[0]===`>`?(o=i??pe,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?ge:c[3]===`"`?ve:_e):o===ve||o===_e?o=ge:o===me||o===he?o=pe:(o=ge,i=void 0);let d=o===ge&&e[t+1].startsWith(`/>`)?` `:``;a+=o===pe?n+oe:l>=0?(r.push(s),n.slice(0,l)+re+n.slice(l)+ie+d):n+ie+(l===-2?t:d)}return[we(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},Ee=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=Te(t,n);if(this.el=e.createElement(l,r),Ce.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=Ce.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(re)){let t=u[o++],n=i.getAttribute(e).split(ie),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?je:r[1]===`?`?Me:r[1]===`@`?Ne:Ae}),i.removeAttribute(e)}else e.startsWith(ie)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(ye.test(i.tagName)){let e=i.textContent.split(ie),t=e.length-1;if(t>0){i.textContent=te?te.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],ce()),Ce.nextNode(),c.push({type:2,index:++a});i.append(e[t],ce())}}}else if(i.nodeType===8)if(i.data===ae)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(ie,e+1))!==-1;)c.push({type:7,index:a}),e+=ie.length-1}a++}}static createElement(e,t){let n=se.createElement(`template`);return n.innerHTML=e,n}};function De(e,t,n=e,r){if(t===be)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=le(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=De(e,i._$AS(e,t.values),i,r)),t}var Oe=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??se).importNode(t,!0);Ce.currentNode=r;let i=Ce.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new ke(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new Pe(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=Ce.nextNode(),a++)}return Ce.currentNode=se,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},ke=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=xe,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=De(this,e,t),le(e)?e===xe||e==null||e===``?(this._$AH!==xe&&this._$AR(),this._$AH=xe):e!==this._$AH&&e!==be&&this._(e):e._$litType$===void 0?e.nodeType===void 0?de(e)?this.k(e):this._(e):this.T(e):this.$(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==xe&&le(this._$AH)?this._$AA.nextSibling.data=e:this.T(se.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=Ee.createElement(we(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new Oe(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=Se.get(e.strings);return t===void 0&&Se.set(e.strings,t=new Ee(e)),t}k(t){ue(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(ce()),this.O(ce()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=ee(e).nextSibling;ee(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},Ae=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=xe,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=xe}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=De(this,e,t,0),a=!le(e)||e!==this._$AH&&e!==be,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=De(this,r[n+o],t,o),s===be&&(s=this._$AH[o]),a||=!le(s)||s!==this._$AH[o],s===xe?e=xe:e!==xe&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===xe?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},je=class extends Ae{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===xe?void 0:e}},Me=class extends Ae{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==xe)}},Ne=class extends Ae{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=De(this,e,t,0)??xe)===be)return;let n=this._$AH,r=e===xe&&n!==xe||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==xe&&(n===xe||r);r&&this.element.removeEventListener(this.name,this,n),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH==`function`?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},Pe=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){De(this,e)}},Fe=D.litHtmlPolyfillSupport;Fe?.(Ee,ke),(D.litHtmlVersions??=[]).push(`3.3.2`);var Ie=(e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new ke(t.insertBefore(ce(),e),e,void 0,n??{})}return i._$AI(e),i},Le=globalThis,Re=class extends E{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=Ie(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return be}};Re._$litElement$=!0,Re.finalized=!0,Le.litElementHydrateSupport?.({LitElement:Re});var ze=Le.litElementPolyfillSupport;ze?.({LitElement:Re}),(Le.litElementVersions??=[]).push(`4.2.2`);function Be(e,t,n){return e.fields=t||[],e.fname=n,e}function Ve(e){return e==null?null:e.fname}function He(e){return e==null?null:e.fields}function Ue(e){return e.length===1?We(e[0]):Ge(e)}var We=e=>function(t){return t[e]},Ge=e=>{let t=e.length;return function(n){for(let r=0;r<t;++r)n=n[e[r]];return n}};function Ke(e){throw Error(e)}function qe(e){let t=[],n=e.length,r=null,i=0,a=``,o,s,c;e+=``;function l(){t.push(a+e.substring(o,s)),a=``,o=s+1}for(o=s=0;s<n;++s)if(c=e[s],c===`\\`)a+=e.substring(o,s++),o=s;else if(c===r)l(),r=null,i=-1;else if(r)continue;else o===i&&c===`"`||o===i&&c===`'`?(o=s+1,r=c):c===`.`&&!i?s>o?l():o=s+1:c===`[`?(s>o&&l(),i=o=s+1):c===`]`&&(i||Ke(`Access path missing open bracket: `+e),i>0&&l(),i=0,o=s+1);return i&&Ke(`Access path missing closing bracket: `+e),r&&Ke(`Access path missing closing quote: `+e),s>o&&(s++,l()),t}function Je(e,t,n){let r=qe(e);return e=r.length===1?r[0]:e,Be((n&&n.get||Ue)(r),[e],t||e)}Je(`id`);var Ye=Be(e=>e,[],`identity`);Be(()=>0,[],`zero`),Be(()=>1,[],`one`),Be(()=>!0,[],`true`),Be(()=>!1,[],`false`);var Xe=new Set([...Object.getOwnPropertyNames(Object.prototype).filter(e=>typeof Object.prototype[e]==`function`),`__proto__`]),k=Array.isArray;function Ze(e){return e===Object(e)}function Qe(e){return e[e.length-1]}function $e(e){return e==null||e===``?null:+e}var A=e=>t=>e*Math.exp(t),et=e=>t=>Math.log(e*t),tt=e=>t=>Math.sign(t)*Math.log1p(Math.abs(t/e)),nt=e=>t=>Math.sign(t)*Math.expm1(Math.abs(t))*e,rt=e=>t=>t<0?-((-t)**+e):t**+e;function j(e,t,n,r){let i=n(e[0]),a=n(Qe(e)),o=(a-i)*t;return[r(i-o),r(a-o)]}function it(e,t){return j(e,t,$e,Ye)}function at(e,t){var n=Math.sign(e[0]);return j(e,t,et(n),A(n))}function M(e,t,n){return j(e,t,rt(n),rt(1/n))}function ot(e,t,n,r,i){let a=r(e[0]),o=r(Qe(e)),s=t==null?(a+o)/2:r(t);return[i(s+(a-s)*n),i(s+(o-s)*n)]}function st(e,t,n){return ot(e,t,n,$e,Ye)}function ct(e,t,n){let r=Math.sign(e[0]);return ot(e,t,n,et(r),A(r))}function lt(e,t,n,r){return ot(e,t,n,rt(r),rt(1/r))}function ut(e,t,n,r){return ot(e,t,n,tt(r),nt(r))}function N(e){return e==null?[]:k(e)?e:[e]}function dt(e,t,n){let r=e[0],i=e[1],a;return i<r&&(a=i,i=r,r=a),a=i-r,a>=n-t?[t,n]:[r=Math.min(Math.max(r,t),n-a),r+a]}function ft(e){return typeof e==`function`}var pt=`descending`;function mt(e,t,n){n||={},t=N(t)||[];let r=[],i=[],a={},o=n.comparator||gt;return N(e).forEach((e,o)=>{e!=null&&(r.push(t[o]===pt?-1:1),i.push(e=ft(e)?e:Je(e,null,n)),(He(e)||[]).forEach(e=>a[e]=1))}),i.length===0?null:Be(o(i,r),Object.keys(a))}var ht=(e,t)=>(e<t||e==null)&&t!=null?-1:(e>t||t==null)&&e!=null?1:(t=t instanceof Date?+t:t,e=e instanceof Date?+e:e)!==e&&t===t?-1:t!==t&&e===e?1:0,gt=(e,t)=>e.length===1?_t(e[0],t[0]):vt(e,t,e.length),_t=(e,t)=>function(n,r){return ht(e(n),e(r))*t},vt=(e,t,n)=>(t.push(0),function(r,i){let a,o=0,s=-1;for(;o===0&&++s<n;)a=e[s],o=ht(a(r),a(i));return o*t[s]});function yt(e){for(let t,n,r=1,i=arguments.length;r<i;++r)for(n in t=arguments[r],t)e[n]=t[n];return e}function bt(e,t){return Object.hasOwn(e,t)}function xt(e){return typeof e==`boolean`}function St(e){return Object.prototype.toString.call(e)===`[object Date]`}function Ct(e){return e&&ft(e[Symbol.iterator])}function P(e){return typeof e==`number`}function wt(e){return Object.prototype.toString.call(e)===`[object RegExp]`}function F(e){return typeof e==`string`}function I(e,t){let n=e[0],r=Qe(e),i=+t;return i?i===1?r:n+i*(r-n):n}function Tt(e){return e&&Qe(e)-e[0]||0}function Et(e){return k(e)?`[${e.map(e=>e===null?`null`:Et(e))}]`:Ze(e)||F(e)?JSON.stringify(e).replaceAll(`\u2028`,`\\u2028`).replaceAll(`\u2029`,`\\u2029`):e}function Dt(e){return e==null||e===``?null:!e||e===`false`||e===`0`?!1:!!e}var Ot=e=>P(e)||St(e)?e:Date.parse(e);function kt(e,t){return t||=Ot,e==null||e===``?null:t(e)}function At(e){return e==null||e===``?null:e+``}function jt(e){let t={},n=e.length;for(let r=0;r<n;++r)t[e[r]]=!0;return t}var Mt={},Nt={},Pt=34,Ft=10,It=13;function Lt(e){return Function(`d`,`return {`+e.map(function(e,t){return JSON.stringify(e)+`: d[`+t+`] || ""`}).join(`,`)+`}`)}function Rt(e,t){var n=Lt(e);return function(r,i){return t(n(r),i,e)}}function zt(e){var t=Object.create(null),n=[];return e.forEach(function(e){for(var r in e)r in t||n.push(t[r]=r)}),n}function Bt(e,t){var n=e+``,r=n.length;return r<t?Array(t-r+1).join(0)+n:n}function Vt(e){return e<0?`-`+Bt(-e,6):e>9999?`+`+Bt(e,6):Bt(e,4)}function Ht(e){var t=e.getUTCHours(),n=e.getUTCMinutes(),r=e.getUTCSeconds(),i=e.getUTCMilliseconds();return isNaN(e)?`Invalid Date`:Vt(e.getUTCFullYear(),4)+`-`+Bt(e.getUTCMonth()+1,2)+`-`+Bt(e.getUTCDate(),2)+(i?`T`+Bt(t,2)+`:`+Bt(n,2)+`:`+Bt(r,2)+`.`+Bt(i,3)+`Z`:r?`T`+Bt(t,2)+`:`+Bt(n,2)+`:`+Bt(r,2)+`Z`:n||t?`T`+Bt(t,2)+`:`+Bt(n,2)+`Z`:``)}function Ut(e){var t=RegExp(`["`+e+`
3
+ \r]`),n=e.charCodeAt(0);function r(e,t){var n,r,a=i(e,function(e,i){if(n)return n(e,i-1);r=e,n=t?Rt(e,t):Lt(e)});return a.columns=r||[],a}function i(e,t){var r=[],i=e.length,a=0,o=0,s,c=i<=0,l=!1;e.charCodeAt(i-1)===Ft&&--i,e.charCodeAt(i-1)===It&&--i;function u(){if(c)return Nt;if(l)return l=!1,Mt;var t,r=a,o;if(e.charCodeAt(r)===Pt){for(;a++<i&&e.charCodeAt(a)!==Pt||e.charCodeAt(++a)===Pt;);return(t=a)>=i?c=!0:(o=e.charCodeAt(a++))===Ft?l=!0:o===It&&(l=!0,e.charCodeAt(a)===Ft&&++a),e.slice(r+1,t-1).replace(/""/g,`"`)}for(;a<i;){if((o=e.charCodeAt(t=a++))===Ft)l=!0;else if(o===It)l=!0,e.charCodeAt(a)===Ft&&++a;else if(o!==n)continue;return e.slice(r,t)}return c=!0,e.slice(r,i)}for(;(s=u())!==Nt;){for(var d=[];s!==Mt&&s!==Nt;)d.push(s),s=u();t&&(d=t(d,o++))==null||r.push(d)}return r}function a(t,n){return t.map(function(t){return n.map(function(e){return u(t[e])}).join(e)})}function o(t,n){return n??=zt(t),[n.map(u).join(e)].concat(a(t,n)).join(`
4
+ `)}function s(e,t){return t??=zt(e),a(e,t).join(`
5
5
  `)}function c(e){return e.map(l).join(`
6
- `)}function l(t){return t.map(u).join(e)}function u(e){return e==null?``:e instanceof Date?Wt(e):t.test(e+=``)?`"`+e.replace(/"/g,`""`)+`"`:e}return{parse:r,parseRows:i,format:o,formatBody:s,formatRows:c,formatRow:l,formatValue:u}}var Kt=Gt(` `);Kt.parse;var qt=Kt.parseRows;Kt.format,Kt.formatBody,Kt.formatRows,Kt.formatRow,Kt.formatValue;function Jt(e){return e}function Yt(e){if(e==null)return Jt;var t,n,r=e.scale[0],i=e.scale[1],a=e.translate[0],o=e.translate[1];return function(e,s){s||(t=n=0);var c=2,l=e.length,u=Array(l);for(u[0]=(t+=e[0])*r+a,u[1]=(n+=e[1])*i+o;c<l;)u[c]=e[c],++c;return u}}function Xt(e,t){for(var n,r=e.length,i=r-t;i<--r;)n=e[i],e[i++]=e[r],e[r]=n}function Zt(e,t){return typeof t==`string`&&(t=e.objects[t]),t.type===`GeometryCollection`?{type:`FeatureCollection`,features:t.geometries.map(function(t){return Qt(e,t)})}:Qt(e,t)}function Qt(e,t){var n=t.id,r=t.bbox,i=t.properties==null?{}:t.properties,a=$t(e,t);return n==null&&r==null?{type:`Feature`,properties:i,geometry:a}:r==null?{type:`Feature`,id:n,properties:i,geometry:a}:{type:`Feature`,id:n,bbox:r,properties:i,geometry:a}}function $t(e,t){var n=Yt(e.transform),r=e.arcs;function i(e,t){t.length&&t.pop();for(var i=r[e<0?~e:e],a=0,o=i.length;a<o;++a)t.push(n(i[a],a));e<0&&Xt(t,o)}function a(e){return n(e)}function o(e){for(var t=[],n=0,r=e.length;n<r;++n)i(e[n],t);return t.length<2&&t.push(t[0]),t}function s(e){for(var t=o(e);t.length<4;)t.push(t[0]);return t}function c(e){return e.map(s)}function l(e){var t=e.type,n;switch(t){case`GeometryCollection`:return{type:t,geometries:e.geometries.map(l)};case`Point`:n=a(e.coordinates);break;case`MultiPoint`:n=e.coordinates.map(a);break;case`LineString`:n=o(e.arcs);break;case`MultiLineString`:n=e.arcs.map(o);break;case`Polygon`:n=c(e.arcs);break;case`MultiPolygon`:n=e.arcs.map(c);break;default:return null}return{type:t,coordinates:n}}return l(t)}function en(e,t){var n={},r={},i={},a=[],o=-1;t.forEach(function(n,r){var i=e.arcs[n<0?~n:n],a;i.length<3&&!i[1][0]&&!i[1][1]&&(a=t[++o],t[o]=n,t[r]=a)}),t.forEach(function(e){var t=s(e),n=t[0],a=t[1],o,c;if(o=i[n])if(delete i[o.end],o.push(e),o.end=a,c=r[a]){delete r[c.start];var l=c===o?o:o.concat(c);r[l.start=o.start]=i[l.end=c.end]=l}else r[o.start]=i[o.end]=o;else if(o=r[a])if(delete r[o.start],o.unshift(e),o.start=n,c=i[n]){delete i[c.end];var u=c===o?o:c.concat(o);r[u.start=c.start]=i[u.end=o.end]=u}else r[o.start]=i[o.end]=o;else o=[e],r[o.start=n]=i[o.end=a]=o});function s(t){var n=e.arcs[t<0?~t:t],r=n[0],i;return e.transform?(i=[0,0],n.forEach(function(e){i[0]+=e[0],i[1]+=e[1]})):i=n[n.length-1],t<0?[i,r]:[r,i]}function c(e,t){for(var r in e){var i=e[r];delete t[i.start],delete i.start,delete i.end,i.forEach(function(e){n[e<0?~e:e]=1}),a.push(i)}}return c(i,r),c(r,i),t.forEach(function(e){n[e<0?~e:e]||a.push([e])}),a}function tn(e){return $t(e,nn.apply(this,arguments))}function nn(e,t,n){var r,i,a;if(arguments.length>1)r=rn(e,t,n);else for(i=0,r=Array(a=e.arcs.length);i<a;++i)r[i]=i;return{type:`MultiLineString`,arcs:en(e,r)}}function rn(e,t,n){var r=[],i=[],a;function o(e){var t=e<0?~e:e;(i[t]||(i[t]=[])).push({i:e,g:a})}function s(e){e.forEach(o)}function c(e){e.forEach(s)}function l(e){e.forEach(c)}function u(e){switch(a=e,e.type){case`GeometryCollection`:e.geometries.forEach(u);break;case`LineString`:s(e.arcs);break;case`MultiLineString`:case`Polygon`:c(e.arcs);break;case`MultiPolygon`:l(e.arcs);break}}return u(t),i.forEach(n==null?function(e){r.push(e[0].i)}:function(e){n(e[0].g,e[e.length-1].g)&&r.push(e[0].i)}),r}function an(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function on(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function sn(e){let t,n,r;e.length===2?(t=e===an||e===on?e:cn,n=e,r=e):(t=an,n=(t,n)=>an(e(t),n),r=(t,n)=>e(t)-n);function i(e,r,i=0,a=e.length){if(i<a){if(t(r,r)!==0)return a;do{let t=i+a>>>1;n(e[t],r)<0?i=t+1:a=t}while(i<a)}return i}function a(e,r,i=0,a=e.length){if(i<a){if(t(r,r)!==0)return a;do{let t=i+a>>>1;n(e[t],r)<=0?i=t+1:a=t}while(i<a)}return i}function o(e,t,n=0,a=e.length){let o=i(e,t,n,a-1);return o>n&&r(e[o-1],t)>-r(e[o],t)?o-1:o}return{left:i,center:o,right:a}}function cn(){return 0}function ln(e){return e===null?NaN:+e}function*un(e,t){if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(yield t);else{let n=-1;for(let r of e)(r=t(r,++n,e))!=null&&(r=+r)>=r&&(yield r)}}var dn=sn(an),fn=dn.right;dn.left,sn(ln).center;function pn(e,t){let n=0;if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&++n;else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(i=+i)>=i&&++n}return n}function mn(e,t){let n=0,r,i=0,a=0;if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(r=t-i,i+=r/++n,a+=r*(t-i));else{let o=-1;for(let s of e)(s=t(s,++o,e))!=null&&(s=+s)>=s&&(r=s-i,i+=r/++n,a+=r*(s-i))}if(n>1)return a/(n-1)}function hn(e,t){let n,r;if(t===void 0)for(let t of e)t!=null&&(n===void 0?t>=t&&(n=r=t):(n>t&&(n=t),r<t&&(r=t)));else{let i=-1;for(let a of e)(a=t(a,++i,e))!=null&&(n===void 0?a>=a&&(n=r=a):(n>a&&(n=a),r<a&&(r=a)))}return[n,r]}var gn=class extends Map{constructor(e,t=bn){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),e!=null)for(let[t,n]of e)this.set(t,n)}get(e){return super.get(_n(this,e))}has(e){return super.has(_n(this,e))}set(e,t){return super.set(vn(this,e),t)}delete(e){return super.delete(yn(this,e))}};function _n({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):n}function vn({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function yn({_intern:e,_key:t},n){let r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function bn(e){return typeof e==`object`&&e?e.valueOf():e}function xn(e){return e}function Sn(e,...t){return wn(e,xn,xn,t)}function Cn(e,...t){return wn(e,Array.from,xn,t)}function wn(e,t,n,r){return(function e(i,a){if(a>=r.length)return n(i);let o=new gn,s=r[a++],c=-1;for(let e of i){let t=s(e,++c,i),n=o.get(t);n?n.push(e):o.set(t,[e])}for(let[t,n]of o)o.set(t,e(n,a));return t(o)})(e,0)}function Tn(e=an){if(e===an)return En;if(typeof e!=`function`)throw TypeError(`compare is not a function`);return(t,n)=>{let r=e(t,n);return r||r===0?r:(e(n,n)===0)-(e(t,t)===0)}}function En(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(e<t?-1:e>t?1:0)}var Dn=Math.sqrt(50),On=Math.sqrt(10),kn=Math.sqrt(2);function An(e,t,n){let r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/10**i,o=a>=Dn?10:a>=On?5:a>=kn?2:1,s,c,l;return i<0?(l=10**-i/o,s=Math.round(e*l),c=Math.round(t*l),s/l<e&&++s,c/l>t&&--c,l=-l):(l=10**i*o,s=Math.round(e/l),c=Math.round(t/l),s*l<e&&++s,c*l>t&&--c),c<s&&.5<=n&&n<2?An(e,t,n*2):[s,c,l]}function jn(e,t,n){if(t=+t,e=+e,n=+n,!(n>0))return[];if(e===t)return[e];let r=t<e,[i,a,o]=r?An(t,e,n):An(e,t,n);if(!(a>=i))return[];let s=a-i+1,c=Array(s);if(r)if(o<0)for(let e=0;e<s;++e)c[e]=(a-e)/-o;else for(let e=0;e<s;++e)c[e]=(a-e)*o;else if(o<0)for(let e=0;e<s;++e)c[e]=(i+e)/-o;else for(let e=0;e<s;++e)c[e]=(i+e)*o;return c}function Mn(e,t,n){return t=+t,e=+e,n=+n,An(e,t,n)[2]}function Nn(e,t,n){t=+t,e=+e,n=+n;let r=t<e,i=r?Mn(t,e,n):Mn(e,t,n);return(r?-1:1)*(i<0?1/-i:i)}function Pn(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n<t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n<i||n===void 0&&i>=i)&&(n=i)}return n}function Fn(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n>t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function In(e,t,n=0,r=1/0,i){if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(e.length-1,r)),!(n<=t&&t<=r))return e;for(i=i===void 0?En:Tn(i);r>n;){if(r-n>600){let a=r-n+1,o=t-n+1,s=Math.log(a),c=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*c*(a-c)/a)*(o-a/2<0?-1:1),u=Math.max(n,Math.floor(t-o*c/a+l)),d=Math.min(r,Math.floor(t+(a-o)*c/a+l));In(e,t,u,d,i)}let a=e[t],o=n,s=r;for(Ln(e,n,t),i(e[r],a)>0&&Ln(e,n,r);o<s;){for(Ln(e,o,s),++o,--s;i(e[o],a)<0;)++o;for(;i(e[s],a)>0;)--s}i(e[n],a)===0?Ln(e,n,s):(++s,Ln(e,s,r)),s<=t&&(n=s+1),t<=s&&(r=s-1)}return e}function Ln(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function Rn(e,t,n){if(e=Float64Array.from(un(e,n)),!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return Fn(e);if(t>=1)return Pn(e);var r,i=(r-1)*t,a=Math.floor(i),o=Pn(In(e,a).subarray(0,a+1));return o+(Fn(e.subarray(a+1))-o)*(i-a)}}function zn(e,t,n=ln){if(!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return+n(e[0],0,e);if(t>=1)return+n(e[r-1],r-1,e);var r,i=(r-1)*t,a=Math.floor(i),o=+n(e[a],a,e);return o+(+n(e[a+1],a+1,e)-o)*(i-a)}}function Bn(e,t){let n=0,r=0;if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(++n,r+=t);else{let i=-1;for(let a of e)(a=t(a,++i,e))!=null&&(a=+a)>=a&&(++n,r+=a)}if(n)return r/n}function Vn(e,t){return Rn(e,.5,t)}function Hn(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r<i;)a[r]=e+r*n;return a}function Un(e,t){let n=0;if(t===void 0)for(let t of e)(t=+t)&&(n+=t);else{let r=-1;for(let i of e)(i=+t(i,++r,e))&&(n+=i)}return n}function Wn(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString(`en`).replace(/,/g,``):e.toString(10)}function Gn(e,t){if(!isFinite(e)||e===0)return null;var n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf(`e`),r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function Kn(e){return e=Gn(Math.abs(e)),e?e[1]:NaN}function qn(e,t){return function(n,r){for(var i=n.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(t)}}function Jn(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}var Yn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Xn(e){if(!(t=Yn.exec(e)))throw Error(`invalid format: `+e);var t;return new Zn({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Xn.prototype=Zn.prototype;function Zn(e){this.fill=e.fill===void 0?` `:e.fill+``,this.align=e.align===void 0?`>`:e.align+``,this.sign=e.sign===void 0?`-`:e.sign+``,this.symbol=e.symbol===void 0?``:e.symbol+``,this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?``:e.type+``}Zn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?`0`:``)+(this.width===void 0?``:Math.max(1,this.width|0))+(this.comma?`,`:``)+(this.precision===void 0?``:`.`+Math.max(0,this.precision|0))+(this.trim?`~`:``)+this.type};function Qn(e){out:for(var t=e.length,n=1,r=-1,i;n<t;++n)switch(e[n]){case`.`:r=i=n;break;case`0`:r===0&&(r=n),i=n;break;default:if(!+e[n])break out;r>0&&(r=0);break}return r>0?e.slice(0,r)+e.slice(i+1):e}var $n;function er(e,t){var n=Gn(e,t);if(!n)return $n=void 0,e.toPrecision(t);var r=n[0],i=n[1],a=i-($n=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return a===o?r:a>o?r+Array(a-o+1).join(`0`):a>0?r.slice(0,a)+`.`+r.slice(a):`0.`+Array(1-a).join(`0`)+Gn(e,Math.max(0,t+a-1))[0]}function tr(e,t){var n=Gn(e,t);if(!n)return e+``;var r=n[0],i=n[1];return i<0?`0.`+Array(-i).join(`0`)+r:r.length>i+1?r.slice(0,i+1)+`.`+r.slice(i+1):r+Array(i-r.length+2).join(`0`)}var nr={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+``,d:Wn,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>tr(e*100,t),r:tr,s:er,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function rr(e){return e}var ir=Array.prototype.map,ar=[`y`,`z`,`a`,`f`,`p`,`n`,`µ`,`m`,``,`k`,`M`,`G`,`T`,`P`,`E`,`Z`,`Y`];function or(e){var t=e.grouping===void 0||e.thousands===void 0?rr:qn(ir.call(e.grouping,Number),e.thousands+``),n=e.currency===void 0?``:e.currency[0]+``,r=e.currency===void 0?``:e.currency[1]+``,i=e.decimal===void 0?`.`:e.decimal+``,a=e.numerals===void 0?rr:Jn(ir.call(e.numerals,String)),o=e.percent===void 0?`%`:e.percent+``,s=e.minus===void 0?`−`:e.minus+``,c=e.nan===void 0?`NaN`:e.nan+``;function l(e,l){e=Xn(e);var u=e.fill,d=e.align,f=e.sign,p=e.symbol,m=e.zero,h=e.width,g=e.comma,_=e.precision,v=e.trim,y=e.type;y===`n`?(g=!0,y=`g`):nr[y]||(_===void 0&&(_=12),v=!0,y=`g`),(m||u===`0`&&d===`=`)&&(m=!0,u=`0`,d=`=`);var b=(l&&l.prefix!==void 0?l.prefix:``)+(p===`$`?n:p===`#`&&/[boxX]/.test(y)?`0`+y.toLowerCase():``),x=(p===`$`?r:/[%p]/.test(y)?o:``)+(l&&l.suffix!==void 0?l.suffix:``),S=nr[y],C=/[defgprs%]/.test(y);_=_===void 0?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_));function w(e){var n=b,r=x,o,l,p;if(y===`c`)r=S(e)+r,e=``;else{e=+e;var w=e<0||1/e<0;if(e=isNaN(e)?c:S(Math.abs(e),_),v&&(e=Qn(e)),w&&+e==0&&f!==`+`&&(w=!1),n=(w?f===`(`?f:s:f===`-`||f===`(`?``:f)+n,r=(y===`s`&&!isNaN(e)&&$n!==void 0?ar[8+$n/3]:``)+r+(w&&f===`(`?`)`:``),C){for(o=-1,l=e.length;++o<l;)if(p=e.charCodeAt(o),48>p||p>57){r=(p===46?i+e.slice(o+1):e.slice(o))+r,e=e.slice(0,o);break}}}g&&!m&&(e=t(e,1/0));var T=n.length+e.length+r.length,E=T<h?Array(h-T+1).join(u):``;switch(g&&m&&(e=t(E+e,E.length?h-r.length:1/0),E=``),d){case`<`:e=n+e+r+E;break;case`=`:e=n+E+e+r;break;case`^`:e=E.slice(0,T=E.length>>1)+n+e+r+E.slice(T);break;default:e=E+n+e+r;break}return a(e)}return w.toString=function(){return e+``},w}function u(e,t){var n=Math.max(-8,Math.min(8,Math.floor(Kn(t)/3)))*3,r=10**-n,i=l((e=Xn(e),e.type=`f`,e),{suffix:ar[8+n/3]});return function(e){return i(r*e)}}return{format:l,formatPrefix:u}}var sr,cr,lr;ur({thousands:`,`,grouping:[3],currency:[`$`,``]});function ur(e){return sr=or(e),cr=sr.format,lr=sr.formatPrefix,sr}function dr(e){return Math.max(0,-Kn(Math.abs(e)))}function fr(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Kn(t)/3)))*3-Kn(Math.abs(e)))}function pr(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Kn(t)-Kn(e))+1}var mr=new Date,hr=new Date;function gr(e,t,n,r){function i(t){return e(t=arguments.length===0?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),i.round=e=>{let t=i(e),n=i.ceil(e);return e-t<n-e?t:n},i.offset=(e,n)=>(t(e=new Date(+e),n==null?1:Math.floor(n)),e),i.range=(n,r,a)=>{let o=[];if(n=i.ceil(n),a=a==null?1:Math.floor(a),!(n<r)||!(a>0))return o;let s;do o.push(s=new Date(+n)),t(n,a),e(n);while(s<n&&n<r);return o},i.filter=n=>gr(t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)},(e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}),n&&(i.count=(t,r)=>(mr.setTime(+t),hr.setTime(+r),e(mr),e(hr),Math.floor(n(mr,hr))),i.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?i.filter(r?t=>r(t)%e===0:t=>i.count(0,t)%e===0):i)),i}var _r=gr(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);_r.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?gr(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):_r),_r.range;var vr=1e3,yr=vr*60,br=yr*60,xr=br*24,Sr=xr*7,Cr=xr*30,wr=xr*365,Tr=gr(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*vr)},(e,t)=>(t-e)/vr,e=>e.getUTCSeconds());Tr.range;var Er=gr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*vr)},(e,t)=>{e.setTime(+e+t*yr)},(e,t)=>(t-e)/yr,e=>e.getMinutes());Er.range;var Dr=gr(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*yr)},(e,t)=>(t-e)/yr,e=>e.getUTCMinutes());Dr.range;var Or=gr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*vr-e.getMinutes()*yr)},(e,t)=>{e.setTime(+e+t*br)},(e,t)=>(t-e)/br,e=>e.getHours());Or.range;var kr=gr(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*br)},(e,t)=>(t-e)/br,e=>e.getUTCHours());kr.range;var Ar=gr(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*yr)/xr,e=>e.getDate()-1);Ar.range;var jr=gr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/xr,e=>e.getUTCDate()-1);jr.range;var Mr=gr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/xr,e=>Math.floor(e/xr));Mr.range;function Nr(e){return gr(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*yr)/Sr)}var Pr=Nr(0),Fr=Nr(1),Ir=Nr(2),Lr=Nr(3),Rr=Nr(4),zr=Nr(5),Br=Nr(6);Pr.range,Fr.range,Ir.range,Lr.range,Rr.range,zr.range,Br.range;function Vr(e){return gr(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/Sr)}var Hr=Vr(0),Ur=Vr(1),Wr=Vr(2),Gr=Vr(3),Kr=Vr(4),qr=Vr(5),Jr=Vr(6);Hr.range,Ur.range,Wr.range,Gr.range,Kr.range,qr.range,Jr.range;var Yr=gr(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());Yr.range;var Xr=gr(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());Xr.range;var Zr=gr(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());Zr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:gr(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)}),Zr.range;var Qr=gr(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Qr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:gr(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)}),Qr.range;function $r(e,t,n,r,i,a){let o=[[Tr,1,vr],[Tr,5,5*vr],[Tr,15,15*vr],[Tr,30,30*vr],[a,1,yr],[a,5,5*yr],[a,15,15*yr],[a,30,30*yr],[i,1,br],[i,3,3*br],[i,6,6*br],[i,12,12*br],[r,1,xr],[r,2,2*xr],[n,1,Sr],[t,1,Cr],[t,3,3*Cr],[e,1,wr]];function s(e,t,n){let r=t<e;r&&([e,t]=[t,e]);let i=n&&typeof n.range==`function`?n:c(e,t,n),a=i?i.range(e,+t+1):[];return r?a.reverse():a}function c(t,n,r){let i=Math.abs(n-t)/r,a=sn(([,,e])=>e).right(o,i);if(a===o.length)return e.every(Nn(t/wr,n/wr,r));if(a===0)return _r.every(Math.max(Nn(t,n,r),1));let[s,c]=o[i/o[a-1][2]<o[a][2]/i?a-1:a];return s.every(c)}return[s,c]}var[ei,ti]=$r(Qr,Xr,Hr,Mr,kr,Dr),[ni,ri]=$r(Zr,Yr,Pr,Ar,Or,Er),ii=`year`,ai=`quarter`,oi=`month`,si=`week`,ci=`date`,li=`dayofyear`,ui=`hours`,di=`minutes`,fi=`seconds`,pi=`milliseconds`;[ii,ai,oi,si,ci,`day`,li,ui,di,fi,pi].reduce((e,t,n)=>(e[t]=1+n,e),{}),`${ii}${oi}`,`${ii}${oi}${ci}`,`${ui}${di}`,si+``,si+``;var mi={[ii]:Zr,[ai]:Yr.every(3),[oi]:Yr,[si]:Pr,[ci]:Ar,day:Ar,[li]:Ar,[ui]:Or,[di]:Er,[fi]:Tr,[pi]:_r},hi={[ii]:Qr,[ai]:Xr.every(3),[oi]:Xr,[si]:Hr,[ci]:jr,day:jr,[li]:jr,[ui]:kr,[di]:Dr,[fi]:Tr,[pi]:_r};function gi(e){return mi[e]}function _i(e){return hi[e]}var vi=1e3,yi=vi*60,bi=yi*60,xi=bi*24;xi*7;var Si=xi*30;xi*365,[ii,oi,ci,ui,di,fi,pi].slice(0,-1).slice(0,-1).slice(0,-1).slice(0,-1),5*vi,15*vi,30*vi,5*yi,15*yi,30*yi,3*bi,6*bi,12*bi,3*Si;function Ci(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function wi(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function Ti(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}function Ei(e){var t=e.dateTime,n=e.date,r=e.time,i=e.periods,a=e.days,o=e.shortDays,s=e.months,c=e.shortMonths,l=Mi(i),u=Ni(i),d=Mi(a),f=Ni(a),p=Mi(o),m=Ni(o),h=Mi(s),g=Ni(s),_=Mi(c),v=Ni(c),y={a:oe,A:se,b:ce,B:le,c:null,d:ea,e:ea,f:aa,g:ga,G:va,H:ta,I:na,j:ra,L:ia,m:oa,M:sa,p:ue,q:de,Q:Va,s:Ha,S:ca,u:la,U:ua,V:fa,w:pa,W:ma,x:null,X:null,y:ha,Y:_a,Z:ya,"%":Ba},b={a:fe,A:pe,b:me,B:he,c:null,d:ba,e:ba,f:Ta,g:Ia,G:Ra,H:xa,I:Sa,j:Ca,L:wa,m:Ea,M:Da,p:ge,q:_e,Q:Va,s:Ha,S:Oa,u:ka,U:Aa,V:Ma,w:Na,W:Pa,x:null,X:null,y:Fa,Y:La,Z:za,"%":Ba},x={a:E,A:ee,b:te,B:ne,c:re,d:Wi,e:Wi,f:Xi,g:Bi,G:zi,H:Ki,I:Ki,j:Gi,L:Yi,m:Ui,M:qi,p:T,q:Hi,Q:Qi,s:$i,S:Ji,u:Fi,U:Ii,V:Li,w:Pi,W:Ri,x:ie,X:ae,y:Bi,Y:zi,Z:Vi,"%":Zi};y.x=S(n,y),y.X=S(r,y),y.c=S(t,y),b.x=S(n,b),b.X=S(r,b),b.c=S(t,b);function S(e,t){return function(n){var r=[],i=-1,a=0,o=e.length,s,c,l;for(n instanceof Date||(n=new Date(+n));++i<o;)e.charCodeAt(i)===37&&(r.push(e.slice(a,i)),(c=Di[s=e.charAt(++i)])==null?c=s===`e`?` `:`0`:s=e.charAt(++i),(l=t[s])&&(s=l(n,c)),r.push(s),a=i+1);return r.push(e.slice(a,i)),r.join(``)}}function C(e,t){return function(n){var r=Ti(1900,void 0,1),i=w(r,e,n+=``,0),a,o;if(i!=n.length)return null;if(`Q`in r)return new Date(r.Q);if(`s`in r)return new Date(r.s*1e3+(`L`in r?r.L:0));if(t&&!(`Z`in r)&&(r.Z=0),`p`in r&&(r.H=r.H%12+r.p*12),r.m===void 0&&(r.m=`q`in r?r.q:0),`V`in r){if(r.V<1||r.V>53)return null;`w`in r||(r.w=1),`Z`in r?(a=wi(Ti(r.y,0,1)),o=a.getUTCDay(),a=o>4||o===0?Ur.ceil(a):Ur(a),a=jr.offset(a,(r.V-1)*7),r.y=a.getUTCFullYear(),r.m=a.getUTCMonth(),r.d=a.getUTCDate()+(r.w+6)%7):(a=Ci(Ti(r.y,0,1)),o=a.getDay(),a=o>4||o===0?Fr.ceil(a):Fr(a),a=Ar.offset(a,(r.V-1)*7),r.y=a.getFullYear(),r.m=a.getMonth(),r.d=a.getDate()+(r.w+6)%7)}else (`W`in r||`U`in r)&&(`w`in r||(r.w=`u`in r?r.u%7:`W`in r?1:0),o=`Z`in r?wi(Ti(r.y,0,1)).getUTCDay():Ci(Ti(r.y,0,1)).getDay(),r.m=0,r.d=`W`in r?(r.w+6)%7+r.W*7-(o+5)%7:r.w+r.U*7-(o+6)%7);return`Z`in r?(r.H+=r.Z/100|0,r.M+=r.Z%100,wi(r)):Ci(r)}}function w(e,t,n,r){for(var i=0,a=t.length,o=n.length,s,c;i<a;){if(r>=o)return-1;if(s=t.charCodeAt(i++),s===37){if(s=t.charAt(i++),c=x[s in Di?t.charAt(i++):s],!c||(r=c(e,n,r))<0)return-1}else if(s!=n.charCodeAt(r++))return-1}return r}function T(e,t,n){var r=l.exec(t.slice(n));return r?(e.p=u.get(r[0].toLowerCase()),n+r[0].length):-1}function E(e,t,n){var r=p.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1}function ee(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=f.get(r[0].toLowerCase()),n+r[0].length):-1}function te(e,t,n){var r=_.exec(t.slice(n));return r?(e.m=v.get(r[0].toLowerCase()),n+r[0].length):-1}function ne(e,t,n){var r=h.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1}function re(e,n,r){return w(e,t,n,r)}function ie(e,t,r){return w(e,n,t,r)}function ae(e,t,n){return w(e,r,t,n)}function oe(e){return o[e.getDay()]}function se(e){return a[e.getDay()]}function ce(e){return c[e.getMonth()]}function le(e){return s[e.getMonth()]}function ue(e){return i[+(e.getHours()>=12)]}function de(e){return 1+~~(e.getMonth()/3)}function fe(e){return o[e.getUTCDay()]}function pe(e){return a[e.getUTCDay()]}function me(e){return c[e.getUTCMonth()]}function he(e){return s[e.getUTCMonth()]}function ge(e){return i[+(e.getUTCHours()>=12)]}function _e(e){return 1+~~(e.getUTCMonth()/3)}return{format:function(e){var t=S(e+=``,y);return t.toString=function(){return e},t},parse:function(e){var t=C(e+=``,!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=S(e+=``,b);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+=``,!0);return t.toString=function(){return e},t}}}var Di={"-":``,_:` `,0:`0`},Oi=/^\s*\d+/,ki=/^%/,Ai=/[\\^$*+?|[\]().{}]/g;function F(e,t,n){var r=e<0?`-`:``,i=(r?-e:e)+``,a=i.length;return r+(a<n?Array(n-a+1).join(t)+i:i)}function ji(e){return e.replace(Ai,`\\$&`)}function Mi(e){return RegExp(`^(?:`+e.map(ji).join(`|`)+`)`,`i`)}function Ni(e){return new Map(e.map((e,t)=>[e.toLowerCase(),t]))}function Pi(e,t,n){var r=Oi.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function Fi(e,t,n){var r=Oi.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function Ii(e,t,n){var r=Oi.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function Li(e,t,n){var r=Oi.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function Ri(e,t,n){var r=Oi.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function zi(e,t,n){var r=Oi.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function Bi(e,t,n){var r=Oi.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Vi(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||`00`)),n+r[0].length):-1}function Hi(e,t,n){var r=Oi.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function Ui(e,t,n){var r=Oi.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Wi(e,t,n){var r=Oi.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function Gi(e,t,n){var r=Oi.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function Ki(e,t,n){var r=Oi.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function qi(e,t,n){var r=Oi.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function Ji(e,t,n){var r=Oi.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function Yi(e,t,n){var r=Oi.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function Xi(e,t,n){var r=Oi.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Zi(e,t,n){var r=ki.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function Qi(e,t,n){var r=Oi.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function $i(e,t,n){var r=Oi.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function ea(e,t){return F(e.getDate(),t,2)}function ta(e,t){return F(e.getHours(),t,2)}function na(e,t){return F(e.getHours()%12||12,t,2)}function ra(e,t){return F(1+Ar.count(Zr(e),e),t,3)}function ia(e,t){return F(e.getMilliseconds(),t,3)}function aa(e,t){return ia(e,t)+`000`}function oa(e,t){return F(e.getMonth()+1,t,2)}function sa(e,t){return F(e.getMinutes(),t,2)}function ca(e,t){return F(e.getSeconds(),t,2)}function la(e){var t=e.getDay();return t===0?7:t}function ua(e,t){return F(Pr.count(Zr(e)-1,e),t,2)}function da(e){var t=e.getDay();return t>=4||t===0?Rr(e):Rr.ceil(e)}function fa(e,t){return e=da(e),F(Rr.count(Zr(e),e)+(Zr(e).getDay()===4),t,2)}function pa(e){return e.getDay()}function ma(e,t){return F(Fr.count(Zr(e)-1,e),t,2)}function ha(e,t){return F(e.getFullYear()%100,t,2)}function ga(e,t){return e=da(e),F(e.getFullYear()%100,t,2)}function _a(e,t){return F(e.getFullYear()%1e4,t,4)}function va(e,t){var n=e.getDay();return e=n>=4||n===0?Rr(e):Rr.ceil(e),F(e.getFullYear()%1e4,t,4)}function ya(e){var t=e.getTimezoneOffset();return(t>0?`-`:(t*=-1,`+`))+F(t/60|0,`0`,2)+F(t%60,`0`,2)}function ba(e,t){return F(e.getUTCDate(),t,2)}function xa(e,t){return F(e.getUTCHours(),t,2)}function Sa(e,t){return F(e.getUTCHours()%12||12,t,2)}function Ca(e,t){return F(1+jr.count(Qr(e),e),t,3)}function wa(e,t){return F(e.getUTCMilliseconds(),t,3)}function Ta(e,t){return wa(e,t)+`000`}function Ea(e,t){return F(e.getUTCMonth()+1,t,2)}function Da(e,t){return F(e.getUTCMinutes(),t,2)}function Oa(e,t){return F(e.getUTCSeconds(),t,2)}function ka(e){var t=e.getUTCDay();return t===0?7:t}function Aa(e,t){return F(Hr.count(Qr(e)-1,e),t,2)}function ja(e){var t=e.getUTCDay();return t>=4||t===0?Kr(e):Kr.ceil(e)}function Ma(e,t){return e=ja(e),F(Kr.count(Qr(e),e)+(Qr(e).getUTCDay()===4),t,2)}function Na(e){return e.getUTCDay()}function Pa(e,t){return F(Ur.count(Qr(e)-1,e),t,2)}function Fa(e,t){return F(e.getUTCFullYear()%100,t,2)}function Ia(e,t){return e=ja(e),F(e.getUTCFullYear()%100,t,2)}function La(e,t){return F(e.getUTCFullYear()%1e4,t,4)}function Ra(e,t){var n=e.getUTCDay();return e=n>=4||n===0?Kr(e):Kr.ceil(e),F(e.getUTCFullYear()%1e4,t,4)}function za(){return`+0000`}function Ba(){return`%`}function Va(e){return+e}function Ha(e){return Math.floor(e/1e3)}var Ua,Wa,Ga,Ka,qa;Ja({dateTime:`%x, %X`,date:`%-m/%-d/%Y`,time:`%-I:%M:%S %p`,periods:[`AM`,`PM`],days:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],shortDays:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],months:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],shortMonths:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`]});function Ja(e){return Ua=Ei(e),Wa=Ua.format,Ga=Ua.parse,Ka=Ua.utcFormat,qa=Ua.utcParse,Ua}function Ya(e){let t={};return n=>t[n]||(t[n]=e(n))}function Xa(e,t){return n=>{let r=e(n),i=r.indexOf(t);if(i<0)return r;let a=Za(r,i),o=a<r.length?r.slice(a):``;for(;--a>i;)if(r[a]!==`0`){++a;break}return r.slice(0,a)+o}}function Za(e,t){let n=e.lastIndexOf(`e`),r;if(n>0)return n;for(n=e.length;--n>t;)if(r=e.charCodeAt(n),r>=48&&r<=57)return n+1}function Qa(e){let t=Ya(e.format),n=e.formatPrefix;return{format:t,formatPrefix:n,formatFloat(e){let n=Xn(e||`,`);if(n.precision==null){switch(n.precision=12,n.type){case`%`:n.precision-=2;break;case`e`:--n.precision;break}return Xa(t(n),t(`.1f`)(1)[1])}else return t(n)},formatSpan(e,r,i,a){a=Xn(a??`,f`);let o=Nn(e,r,i),s=Math.max(Math.abs(e),Math.abs(r)),c;if(a.precision==null)switch(a.type){case`s`:return isNaN(c=fr(o,s))||(a.precision=c),n(a,s);case``:case`e`:case`g`:case`p`:case`r`:isNaN(c=pr(o,s))||(a.precision=c-(a.type===`e`));break;case`f`:case`%`:isNaN(c=dr(o))||(a.precision=c-(a.type===`%`)*2);break}return t(a)}}}$a();function $a(){return Qa({format:cr,formatPrefix:lr})}function eo(e,t,n){n||={},$e(n)||qe(`Invalid time multi-format specifier: ${n}`);let r=t(fi),i=t(di),a=t(ui),o=t(ci),s=t(si),c=t(oi),l=t(ai),u=t(ii),d=e(n.milliseconds||`.%L`),f=e(n.seconds||`:%S`),p=e(n.minutes||`%I:%M`),m=e(n.hours||`%I %p`),h=e(n.date||n.day||`%a %d`),g=e(n.week||`%b %d`),_=e(n.month||`%B`),v=e(n.quarter||`%B`),y=e(n.year||`%Y`);return e=>(r(e)<e?d:i(e)<e?f:a(e)<e?p:o(e)<e?m:c(e)<e?s(e)<e?h:g:u(e)<e?l(e)<e?_:v:y)(e)}function to(e){let t=Ya(e.format),n=Ya(e.utcFormat);return{timeFormat:e=>N(e)?t(e):eo(t,gi,e),utcFormat:e=>N(e)?n(e):eo(n,_i,e),timeParse:Ya(e.parse),utcParse:Ya(e.utcParse)}}var no;ro();function ro(){return no=to({format:Wa,parse:Ga,utcFormat:Ka,utcParse:qa})}function io(e){return to(Ei(e))}function ao(e){return arguments.length?no=io(e):no}var oo=e=>e!=null&&e===e,so=e=>e===`true`||e===`false`||e===!0||e===!1,co=e=>!Number.isNaN(Date.parse(e)),lo=e=>!Number.isNaN(+e)&&!(e instanceof Date),uo=e=>lo(e)&&Number.isInteger(+e),fo={boolean:kt,integer:tt,number:tt,date:jt,string:Mt,unknown:Xe},po=[so,uo,lo,co],mo=[`boolean`,`integer`,`number`,`date`];function ho(e,t){if(!e||!e.length)return`unknown`;let n=e.length,r=po.length,i=po.map((e,t)=>t+1);for(let a=0,o=0,s,c;a<n;++a)for(c=t?e[a][t]:e[a],s=0;s<r;++s)if(i[s]&&oo(c)&&!po[s](c)&&(i[s]=0,++o,o===po.length))return`string`;return mo[i.reduce((e,t)=>e===0?t:e,0)-1]}function go(e,t){return t.reduce((t,n)=>(t[n]=ho(e,n),t),{})}function _o(e){let t=function(t,n){let r={delimiter:e};return vo(t,n?xt(n,r):r)};return t.responseType=`text`,t}function vo(e,t){return t.header&&(e=t.header.map(Ot).join(t.delimiter)+`
7
- `+e),Gt(t.delimiter).parse(e+``)}vo.responseType=`text`;function yo(e){return typeof Buffer==`function`&&mt(Buffer.isBuffer)?Buffer.isBuffer(e):!1}function bo(e,t){let n=t&&t.property?Ye(t.property):Xe;return $e(e)&&!yo(e)?xo(n(e),t):n(JSON.parse(e))}bo.responseType=`json`;function xo(e,t){return!Qe(e)&&Tt(e)&&(e=[...e]),t&&t.copy?JSON.parse(JSON.stringify(e)):e}var So={interior:(e,t)=>e!==t,exterior:(e,t)=>e===t};function Co(e,t){let n,r,i,a;return e=bo(e,t),t&&t.feature?(n=Zt,i=t.feature):t&&t.mesh?(n=tn,i=t.mesh,a=So[t.filter]):qe(`Missing TopoJSON feature or mesh parameter.`),r=(r=e.objects[i])?n(e,r,a):qe(`Invalid TopoJSON object: `+i),r&&r.features||[r]}Co.responseType=`json`;var wo={dsv:vo,csv:_o(`,`),tsv:_o(` `),json:bo,topojson:Co};function To(e,t){return arguments.length>1?(wo[e]=t,this):St(wo,e)?wo[e]:null}function Eo(e,t,n,r){t||={};let i=To(t.type||`json`);return i||qe(`Unknown data format type: `+t.type),e=i(e,t),t.parse&&Do(e,t.parse,n,r),St(e,`columns`)&&delete e.columns,e}function Do(e,t,n,r){if(!e.length)return;let i=ao();n||=i.timeParse,r||=i.utcParse;let a=e.columns||Object.keys(e[0]),o,s,c,l,u,d;t===`auto`&&(t=go(e,a)),a=Object.keys(t);let f=a.map(e=>{let i=t[e],a,o;if(i&&(i.startsWith(`date:`)||i.startsWith(`utc:`)))return a=i.split(/:(.+)?/,2),o=a[1],(o[0]===`'`&&o[o.length-1]===`'`||o[0]===`"`&&o[o.length-1]===`"`)&&(o=o.slice(1,-1)),(a[0]===`utc`?r:n)(o);if(!fo[i])throw Error(`Illegal format pattern: `+e+`:`+i);return fo[i]});for(c=0,u=e.length,d=a.length;c<u;++c)for(o=e[c],l=0;l<d;++l)s=a[l],o[s]=f[l](o[s])}var Oo,ko,Ao,jo,Mo,No,Po,Fo=n((()=>{Oo=[`BOOLEAN`,`INT32`,`INT64`,`INT96`,`FLOAT`,`DOUBLE`,`BYTE_ARRAY`,`FIXED_LEN_BYTE_ARRAY`],ko=[`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`],jo=[`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`],Mo=[`UNCOMPRESSED`,`SNAPPY`,`GZIP`,`LZO`,`BROTLI`,`LZ4`,`ZSTD`,`LZ4_RAW`],No=[`DATA_PAGE`,`INDEX_PAGE`,`DICTIONARY_PAGE`,`DATA_PAGE_V2`],Po=[`SPHERICAL`,`VINCENTY`,`THOMAS`,`ANDOYER`,`KARNEY`]}));function Io(e){let t=Lo(e);if(t.type===1)return{type:`Point`,coordinates:Ro(e,t)};if(t.type===2)return{type:`LineString`,coordinates:zo(e,t)};if(t.type===3)return{type:`Polygon`,coordinates:Bo(e,t)};if(t.type===4){let n=[];for(let r=0;r<t.count;r++)n.push(Ro(e,Lo(e)));return{type:`MultiPoint`,coordinates:n}}else if(t.type===5){let n=[];for(let r=0;r<t.count;r++)n.push(zo(e,Lo(e)));return{type:`MultiLineString`,coordinates:n}}else if(t.type===6){let n=[];for(let r=0;r<t.count;r++)n.push(Bo(e,Lo(e)));return{type:`MultiPolygon`,coordinates:n}}else if(t.type===7){let n=[];for(let r=0;r<t.count;r++)n.push(Io(e));return{type:`GeometryCollection`,geometries:n}}else throw Error(`Unsupported geometry type: ${t.type}`)}function Lo(e){let{view:t}=e,n=t.getUint8(e.offset++)===1,r=t.getUint32(e.offset,n);e.offset+=4;let i=r%1e3,a=Math.floor(r/1e3),o=0;i>1&&i<=7&&(o=t.getUint32(e.offset,n),e.offset+=4);let s=2;return a&&s++,a===3&&s++,{littleEndian:n,type:i,dim:s,count:o}}function Ro(e,t){let n=[];for(let r=0;r<t.dim;r++){let r=e.view.getFloat64(e.offset,t.littleEndian);e.offset+=8,n.push(r)}return n}function zo(e,t){let n=[];for(let r=0;r<t.count;r++)n.push(Ro(e,t));return n}function Bo(e,t){let{view:n}=e,r=[];for(let i=0;i<t.count;i++){let i=n.getUint32(e.offset,t.littleEndian);e.offset+=4,r.push(zo(e,{...t,count:i}))}return r}var Vo=n((()=>{}));function Ho(e,t,n,r){if(t&&n.endsWith(`_DICTIONARY`)){let n=e;e instanceof Uint8Array&&!(t instanceof Uint8Array)&&(n=new t.constructor(e.length));for(let r=0;r<e.length;r++)n[r]=t[e[r]];return n}else return Uo(e,r)}function Uo(e,t){let{element:n,parsers:r,utf8:i=!0,schemaPath:a}=t,{type:o,converted_type:s,logical_type:c}=n;if(a?.some(e=>e.element.logical_type?.type===`VARIANT`)&&o===`BYTE_ARRAY`&&s!==`UTF8`&&c?.type!==`STRING`)return e;if(s===`DECIMAL`){let t=10**-(n.scale||0),r=Array(e.length);for(let n=0;n<r.length;n++)e[n]instanceof Uint8Array?r[n]=Wo(e[n])*t:r[n]=Number(e[n])*t;return r}if(!s&&o===`INT96`)return Array.from(e).map(e=>r.timestampFromNanoseconds(Go(e)));if(s===`DATE`)return Array.from(e).map(e=>r.dateFromDays(e));if(s===`TIMESTAMP_MILLIS`)return Array.from(e).map(e=>r.timestampFromMilliseconds(e));if(s===`TIMESTAMP_MICROS`)return Array.from(e).map(e=>r.timestampFromMicroseconds(e));if(s===`JSON`)return e.map(e=>JSON.parse(qo.decode(e)));if(s===`BSON`)throw Error(`parquet bson not supported`);if(s===`INTERVAL`)throw Error(`parquet interval not supported`);if(c?.type===`GEOMETRY`)return e.map(e=>r.geometryFromBytes(e));if(c?.type===`GEOGRAPHY`)return e.map(e=>r.geographyFromBytes(e));if(s===`UTF8`||c?.type===`STRING`||i&&o===`BYTE_ARRAY`)return e.map(e=>r.stringFromBytes(e));if(s===`UINT_64`||c?.type===`INTEGER`&&c.bitWidth===64&&!c.isSigned){if(e instanceof BigInt64Array)return new BigUint64Array(e.buffer,e.byteOffset,e.length);let t=new BigUint64Array(e.length);for(let n=0;n<t.length;n++)t[n]=BigInt(e[n]);return t}if(s===`UINT_32`||c?.type===`INTEGER`&&c.bitWidth===32&&!c.isSigned){if(e instanceof Int32Array)return new Uint32Array(e.buffer,e.byteOffset,e.length);let t=new Uint32Array(e.length);for(let n=0;n<t.length;n++)t[n]=e[n];return t}if(c?.type===`FLOAT16`)return Array.from(e).map(Ko);if(c?.type===`TIMESTAMP`){let{unit:t}=c,n=r.timestampFromMilliseconds;t===`MICROS`&&(n=r.timestampFromMicroseconds),t===`NANOS`&&(n=r.timestampFromNanoseconds);let i=Array(e.length);for(let t=0;t<i.length;t++)i[t]=n(e[t]);return i}return e}function Wo(e){if(!e.length)return 0;let t=0n;for(let n of e)t=t*256n+BigInt(n);let n=e.length*8;return t>=2n**BigInt(n-1)&&(t-=2n**BigInt(n)),Number(t)}function Go(e){let t=(e>>64n)-2440588n,n=e&18446744073709551615n;return t*86400000000000n+n}function Ko(e){if(!e)return;let 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)}var qo,Jo,Yo=n((()=>{Vo(),qo=new TextDecoder,Jo={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&&qo.decode(e)},geometryFromBytes(e){return e&&Io({view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0})},geographyFromBytes(e){return e&&Io({view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0})}}}));function Xo(e,t,n){let r=e[t],i=[],a=1;if(r.num_children)for(;i.length<r.num_children;){let r=e[t+a],o=Xo(e,t+a,[...n,r.name]);a+=o.count,i.push(o)}return{count:a,element:r,children:i,path:n}}function Zo(e,t){let n=Xo(e,0,[]),r=[n];for(let e of t){let i=n.children.find(t=>t.element.name===e);if(!i)throw Error(`parquet schema element not found: ${t}`);r.push(i),n=i}return r}function Qo(e){let t=[];function n(e){if(e.children.length)for(let t of e.children)n(t);else t.push(e.path.join(`.`))}return n(e),t}function $o(e){let t=0;for(let{element:n}of e)n.repetition_type===`REPEATED`&&t++;return t}function es(e){let t=0;for(let{element:n}of e.slice(1))n.repetition_type!==`REQUIRED`&&t++;return t}function ts(e){if(!e||e.element.converted_type!==`LIST`||e.children.length>1)return!1;let t=e.children[0];return!(t.children.length>1||t.element.repetition_type!==`REPEATED`)}function ns(e){if(!e||e.element.converted_type!==`MAP`||e.children.length>1)return!1;let t=e.children[0];return!(t.children.length!==2||t.element.repetition_type!==`REPEATED`||t.children.find(e=>e.element.name===`key`)?.element.repetition_type===`REPEATED`||t.children.find(e=>e.element.name===`value`)?.element.repetition_type===`REPEATED`)}function rs(e){if(e.length!==2)return!1;let[,t]=e;return!(t.element.repetition_type===`REPEATED`||t.children.length)}var is=n((()=>{}));function as(e){let t=0,n={};for(;e.offset<e.view.byteLength;){let[r,i,a]=ds(e,t);if(t=a,r===fs.STOP)break;n[`field_${i}`]=os(e,r)}return n}function os(e,t){switch(t){case fs.TRUE:return!0;case fs.FALSE:return!1;case fs.BYTE:return e.view.getInt8(e.offset++);case fs.I16:case fs.I32:return ls(e);case fs.I64:return us(e);case fs.DOUBLE:{let t=e.view.getFloat64(e.offset,!0);return e.offset+=8,t}case fs.BINARY:{let t=ss(e),n=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t,n}case fs.LIST:{let t=e.view.getUint8(e.offset++),n=t&15,r=t>>4;r===15&&(r=ss(e));let i=n===fs.TRUE||n===fs.FALSE,a=Array(r);for(let t=0;t<r;t++)a[t]=i?os(e,fs.BYTE)===1:os(e,n);return a}case fs.STRUCT:{let t={},n=0;for(;;){let[r,i,a]=ds(e,n);if(n=a,r===fs.STOP)break;t[`field_${i}`]=os(e,r)}return t}default:throw Error(`thrift unhandled type: ${t}`)}}function ss(e){let t=0,n=0;for(;;){let r=e.view.getUint8(e.offset++);if(t|=(r&127)<<n,!(r&128))return t;n+=7}}function cs(e){let t=0n,n=0n;for(;;){let r=e.view.getUint8(e.offset++);if(t|=BigInt(r&127)<<n,!(r&128))return t;n+=7n}}function ls(e){let t=ss(e);return t>>>1^-(t&1)}function us(e){let t=cs(e);return t>>1n^-(t&1n)}function ds(e,t){let n=e.view.getUint8(e.offset++),r=n&15;if(r===fs.STOP)return[0,0,t];let i=n>>4,a=i?t+i:ls(e);return[r,a,a]}var fs,ps=n((()=>{fs={STOP:0,TRUE:1,FALSE:2,BYTE:3,I16:4,I32:5,I64:6,DOUBLE:7,BINARY:8,LIST:9,SET:10,MAP:11,STRUCT:12,UUID:13}}));function ms(e,t){let n=new Map,r=t?.find(({key:e})=>e===`geo`)?.value,i=(r&&JSON.parse(r)?.columns)??{};for(let[e,t]of Object.entries(i)){if(t.encoding!==`WKB`)continue;let r=t.edges===`spherical`?`GEOGRAPHY`:`GEOMETRY`,i=t.crs?.id??t.crs?.ids?.[0],a=i?`${i.authority}:${i.code.toString()}`:void 0;n.set(e,{type:r,crs:a})}for(let t=1;t<e.length;t++){let r=e[t],{logical_type:i,name:a,num_children:o,repetition_type:s,type:c}=r;if(o){t+=o;continue}c===`BYTE_ARRAY`&&i===void 0&&s!==`REPEATED`&&(r.logical_type=n.get(a))}}var hs=n((()=>{}));function gs(e){return e&&Ts.decode(e)}async function _s(e,{parsers:t,initialFetchSize:n=ws,geoparquet:r=!0}={}){if(!e||!(e.byteLength>=0))throw Error(`parquet expected AsyncBuffer`);let i=Math.max(0,e.byteLength-n),a=await e.slice(i,e.byteLength),o=new DataView(a);if(o.getUint32(a.byteLength-4,!0)!==827474256)throw Error(`parquet file invalid (footer != PAR1)`);let s=o.getUint32(a.byteLength-8,!0);if(s>e.byteLength-8)throw Error(`parquet metadata length ${s} exceeds available buffer ${e.byteLength-8}`);if(s+8>n){let n=e.byteLength-s-8,o=await e.slice(n,i),c=new ArrayBuffer(s+8),l=new Uint8Array(c);return l.set(new Uint8Array(o)),l.set(new Uint8Array(a),i-n),vs(c,{parsers:t,geoparquet:r})}else return vs(a,{parsers:t,geoparquet:r})}function vs(e,{parsers:t,geoparquet:n=!0}={}){if(!(e instanceof ArrayBuffer))throw Error(`parquet expected ArrayBuffer`);let r=new DataView(e);if(t={...Jo,...t},r.byteLength<8)throw Error(`parquet file is too short`);if(r.getUint32(r.byteLength-4,!0)!==827474256)throw Error(`parquet file invalid (footer != PAR1)`);let i=r.byteLength-8,a=r.getUint32(i,!0);if(a>r.byteLength-8)throw Error(`parquet metadata length ${a} exceeds available buffer ${r.byteLength-8}`);let o=as({view:r,offset:i-a}),s=o.field_1,c=o.field_2.map(e=>({type:Oo[e.field_1],type_length:e.field_2,repetition_type:Ao[e.field_3],name:gs(e.field_4),num_children:e.field_5,converted_type:jo[e.field_6],scale:e.field_7,precision:e.field_8,field_id:e.field_9,logical_type:bs(e.field_10)})),l=c.filter(e=>e.type),u=o.field_3,d=o.field_4.map(e=>({columns:e.field_1.map((e,n)=>({file_path:gs(e.field_1),file_offset:e.field_2,meta_data:e.field_3&&{type:Oo[e.field_3.field_1],encodings:e.field_3.field_2?.map(e=>ko[e]),path_in_schema:e.field_3.field_3.map(gs),codec:Mo[e.field_3.field_4],num_values:e.field_3.field_5,total_uncompressed_size:e.field_3.field_6,total_compressed_size:e.field_3.field_7,key_value_metadata:e.field_3.field_8?.map(e=>({key:gs(e.field_1),value:gs(e.field_2)})),data_page_offset:e.field_3.field_9,index_page_offset:e.field_3.field_10,dictionary_page_offset:e.field_3.field_11,statistics:Ss(e.field_3.field_12,l[n],t),encoding_stats:e.field_3.field_13?.map(e=>({page_type:No[e.field_1],encoding:ko[e.field_2],count:e.field_3})),bloom_filter_offset:e.field_3.field_14,bloom_filter_length:e.field_3.field_15,size_statistics:e.field_3.field_16&&{unencoded_byte_array_data_bytes:e.field_3.field_16.field_1,repetition_level_histogram:e.field_3.field_16.field_2,definition_level_histogram:e.field_3.field_16.field_3},geospatial_statistics:e.field_3.field_17&&{bbox:e.field_3.field_17.field_1&&{xmin:e.field_3.field_17.field_1.field_1,xmax:e.field_3.field_17.field_1.field_2,ymin:e.field_3.field_17.field_1.field_3,ymax:e.field_3.field_17.field_1.field_4,zmin:e.field_3.field_17.field_1.field_5,zmax:e.field_3.field_17.field_1.field_6,mmin:e.field_3.field_17.field_1.field_7,mmax:e.field_3.field_17.field_1.field_8},geospatial_types:e.field_3.field_17.field_2}},offset_index_offset:e.field_4,offset_index_length:e.field_5,column_index_offset:e.field_6,column_index_length:e.field_7,crypto_metadata:e.field_8,encrypted_column_metadata:e.field_9})),total_byte_size:e.field_2,num_rows:e.field_3,sorting_columns:e.field_4?.map(e=>({column_idx:e.field_1,descending:e.field_2,nulls_first:e.field_3})),file_offset:e.field_5,total_compressed_size:e.field_6,ordinal:e.field_7})),f=o.field_5?.map(e=>({key:gs(e.field_1),value:gs(e.field_2)})),p=gs(o.field_6);return n&&ms(c,f),{version:s,schema:c,num_rows:u,row_groups:d,key_value_metadata:f,created_by:p,metadata_length:a}}function ys({schema:e}){return Zo(e,[])[0]}function bs(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:xs(e.field_7.field_2)}:e?.field_8?{type:`TIMESTAMP`,isAdjustedToUTC:e.field_8.field_1,unit:xs(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:gs(e.field_17.field_1)}:e?.field_18?{type:`GEOGRAPHY`,crs:gs(e.field_18.field_1),algorithm:Po[e.field_18.field_2]}:e}function xs(e){if(e.field_1)return`MILLIS`;if(e.field_2)return`MICROS`;if(e.field_3)return`NANOS`;throw Error(`parquet time unit required`)}function Ss(e,t,n){return e&&{max:Cs(e.field_1,t,n),min:Cs(e.field_2,t,n),null_count:e.field_3,distinct_count:e.field_4,max_value:Cs(e.field_5,t,n),min_value:Cs(e.field_6,t,n),is_max_value_exact:e.field_7,is_min_value_exact:e.field_8}}function Cs(e,t,n){let{type:r,converted_type:i,logical_type:a}=t;if(e===void 0)return e;if(r===`BOOLEAN`)return e[0]===1;if(r===`BYTE_ARRAY`)return n.stringFromBytes(e);let o=new DataView(e.buffer,e.byteOffset,e.byteLength);return r===`FLOAT`&&o.byteLength===4?o.getFloat32(0,!0):r===`DOUBLE`&&o.byteLength===8?o.getFloat64(0,!0):r===`INT32`&&i===`DATE`?n.dateFromDays(o.getInt32(0,!0)):r===`INT64`&&i===`TIMESTAMP_MILLIS`?n.timestampFromMilliseconds(o.getBigInt64(0,!0)):r===`INT64`&&i===`TIMESTAMP_MICROS`?n.timestampFromMicroseconds(o.getBigInt64(0,!0)):r===`INT64`&&a?.type===`TIMESTAMP`&&a?.unit===`NANOS`?n.timestampFromNanoseconds(o.getBigInt64(0,!0)):r===`INT64`&&a?.type===`TIMESTAMP`&&a?.unit===`MICROS`?n.timestampFromMicroseconds(o.getBigInt64(0,!0)):r===`INT64`&&a?.type===`TIMESTAMP`?n.timestampFromMilliseconds(o.getBigInt64(0,!0)):r===`INT32`&&o.byteLength===4?o.getInt32(0,!0):r===`INT64`&&o.byteLength===8?o.getBigInt64(0,!0):i===`DECIMAL`?Wo(e)*10**-(t.scale||0):a?.type===`FLOAT16`?Ko(e):e}var ws,Ts,Es=n((()=>{Fo(),Yo(),is(),ps(),hs(),ws=1<<19,Ts=new TextDecoder}));function Ds(e,t){let n=1e4;for(let r=0;r<t.length;r+=n)e.push(...t.slice(r,r+n))}function Os(e,t,n=!0){if(n?e===t:e==t)return!0;if(e instanceof Uint8Array&&t instanceof Uint8Array)return Os(Array.from(e),Array.from(t),n);if(!e||!t||typeof e!=typeof t)return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!Os(e[r],t[r],n))return!1;return!0}if(typeof e!=`object`)return!1;let r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let i of r)if(!Os(e[i],t[i],n))return!1;return!0}function ks(e){if(!e)return[];if(e.length===1)return e[0];let t=[];for(let n of e)Ds(t,n);return t}var As=n((()=>{}));function js({rowGroup:e,physicalColumns:t,filter:n,strict:r=!0}){if(!n)return!1;if(`$and`in n&&Array.isArray(n.$and))return n.$and.some(n=>js({rowGroup:e,physicalColumns:t,filter:n,strict:r}));if(`$or`in n&&Array.isArray(n.$or))return n.$or.every(n=>js({rowGroup:e,physicalColumns:t,filter:n,strict:r}));if(`$nor`in n&&Array.isArray(n.$nor))return!1;for(let[i,a]of Object.entries(n)){let n=t.indexOf(i);if(n===-1)continue;let o=e.columns[n].meta_data?.statistics;if(!o)continue;let{min:s,max:c,min_value:l,max_value:u}=o,d=l===void 0?s:l,f=u===void 0?c:u;if(!(d===void 0||f===void 0)){for(let[e,t]of Object.entries(a||{}))if(e===`$gt`&&f<=t||e===`$gte`&&f<t||e===`$lt`&&d>=t||e===`$lte`&&d>t||e===`$eq`&&(t<d||t>f)||e===`$ne`&&Os(d,f,r)&&Os(d,t,r)||e===`$in`&&Array.isArray(t)&&t.every(e=>e<d||e>f)||e===`$nin`&&Array.isArray(t)&&Os(d,f,r)&&t.includes(d))return!0}}return!1}var Ms=n((()=>{As()}));function Ns({metadata:e,rowStart:t=0,rowEnd:n=1/0,columns:r,filter:i,filterStrict:a=!0,useOffsetIndex:o=!1}){if(!e)throw Error(`parquetPlan requires metadata`);let s=[],c=[],l=[],u=Qo(ys(e)),d=0;for(let f of e.row_groups){let e=Number(f.num_rows),p=d+e;if(e>0&&p>t&&d<n&&!js({rowGroup:f,physicalColumns:u,filter:i,strict:a})){let i=[],a=1/0,u=-1/0;for(let e of f.columns){let t=e.meta_data;if(e.file_path)throw Error(`parquet file_path not supported`);if(!t)throw Error(`parquet column metadata is undefined`);if(!r||r.includes(t.path_in_schema[0])){let n=t.dictionary_page_offset||t.data_page_offset,r=Number(n),s=Number(n+t.total_compressed_size);if(r<a&&(a=r),s>u&&(u=s),o&&e.offset_index_offset&&e.offset_index_length){let n=Number(e.offset_index_offset);i.push({columnMetadata:t,offsetIndex:{startByte:n,endByte:n+e.offset_index_length},bounds:{startByte:r,endByte:s}})}else i.push({columnMetadata:t,range:{startByte:r,endByte:s}})}}let p=Math.max(t-d,0),m=Math.min(n-d,e);s.push({chunks:i,rowGroup:f,groupStart:d,groupRows:e,selectStart:p,selectEnd:m});let h;for(let e of i)if(`offsetIndex`in e)l.push(e.offsetIndex);else{let{range:t}=e;r?c.push(t):h&&t.endByte-h.startByte<=Fs?h.endByte=t.endByte:(h&&c.push(h),h={...t})}h&&c.push(h)}d=p}return isFinite(n)||(n=d),c.push(...l),{metadata:e,rowStart:t,rowEnd:n,columns:r,fetches:c,groups:s}}function Ps(e,{fetches:t}){let n=t.map(({startByte:t,endByte:n})=>e.slice(t,n));return{byteLength:e.byteLength,slice(r,i=e.byteLength){let a=t.findIndex(({startByte:e,endByte:t})=>e<=r&&i<=t);if(a<0)return e.slice(r,i);if(t[a].startByte!==r||t[a].endByte!==i){let e=r-t[a].startByte,o=i-t[a].startByte;return n[a]instanceof Promise?n[a].then(t=>t.slice(e,o)):n[a].slice(e,o)}else return n[a]}}}var Fs,Is=n((()=>{Ms(),Es(),is(),Fs=1<<21}));function Ls(e,t=Jo){if(Array.isArray(e))return e.map(e=>Ls(e,t));if(typeof e!=`object`)return e;if(`metadata`in e){let n=Bs(e.metadata),r=e.typed_value&&Rs(e.typed_value,n,t),i=e.value&&Hs(zs(e.value),n,t);return r&&i?{...i,...r}:r??i}return e}function Rs(e,t,n){if(e&&typeof e==`object`&&!Array.isArray(e)&&!(e instanceof Uint8Array)){if(`typed_value`in e)return Rs(e.typed_value,t,n);if(`value`in e&&e.value instanceof Uint8Array)return Hs(zs(e.value),t,n);let r={};for(let[i,a]of Object.entries(e))r[i]=Rs(a,t,n);return r}return e instanceof Uint8Array?Hs(zs(e),t,n):Array.isArray(e)?e.map(e=>Rs(e,t,n)):e}function zs(e){return{view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0}}function Bs(e){let t=Ys.get(e.buffer);t||(t=new Map,Ys.set(e.buffer,t));let n=`${e.byteOffset}:${e.byteLength}`,r=t.get(n);if(r)return r;let i=zs(e),a=i.view.getUint8(i.offset++),o=a&15;if(o!==1)throw Error(`parquet unsupported variant metadata version: ${o}`);let s=(a>>4&1)==1,c=(a>>6&3)+1,l=Vs(i,c),u=Array(l+1);for(let e=0;e<u.length;e++)u[e]=Vs(i,c);let d=i.offset,f=Array(l);for(let t=0;t<l;t++){let n=u[t],r=u[t+1],i=new Uint8Array(e.buffer,e.byteOffset+d+n,r-n);f[t]=Js.decode(i)}let p={dictionary:f,sorted:s};return t.set(n,p),p}function Vs(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 Hs(e,t,n){let r=e.view.getUint8(e.offset++),i=r&3,a=r>>2;if(i===0)return Us(e,a,n);if(i===2)return Ws(e,a,t,n);if(i===3)return Gs(e,a,t,n);let o=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,a);return e.offset+=a,Js.decode(o)}function Us(e,t,n){switch(t){case 0:return null;case 1:return!0;case 2:return!1;case 3:{let t=e.view.getInt8(e.offset);return e.offset+=1,t}case 4:{let t=e.view.getInt16(e.offset,!0);return e.offset+=2,t}case 5:{let t=e.view.getInt32(e.offset,!0);return e.offset+=4,t}case 6:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,t}case 7:{let t=e.view.getFloat64(e.offset,!0);return e.offset+=8,t}case 8:return Ks(e,4);case 9:return Ks(e,8);case 10:return Ks(e,16);case 11:{let t=e.view.getInt32(e.offset,!0);return e.offset+=4,n.dateFromDays(t)}case 12:case 13:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,n.timestampFromMicroseconds(t)}case 14:{let t=e.view.getFloat32(e.offset,!0);return e.offset+=4,t}case 15:return qs(e);case 16:{let t=qs(e);return Js.decode(t)}case 17:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,t}case 18:case 19:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,n.timestampFromNanoseconds(t)}case 20:{let t=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,16);e.offset+=16;let n=Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``);return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}default:throw Error(`parquet unsupported variant primitive type: ${t}`)}}function Ws(e,t,n,r){let i=(t&3)+1,a=(t>>2&3)+1,o=t>>4&1?Vs(e,4):e.view.getUint8(e.offset++),s=Array(o);for(let t=0;t<o;t++)s[t]=Vs(e,a);let c=Array(o+1);for(let t=0;t<c.length;t++)c[t]=Vs(e,i);let l={};for(let t=0;t<o;t++){let i=n.dictionary[s[t]];l[i]=Hs({view:e.view,offset:e.offset+c[t]},n,r)}return e.offset+=c[c.length-1],l}function Gs(e,t,n,r){let i=t&3,a=t>>2&1,o=i+1,s=Vs(e,a?4:1),c=Array(s+1);for(let t=0;t<c.length;t++)c[t]=Vs(e,o);let l=e.offset,u=Array(s);for(let t=0;t<s;t++)u[t]=Hs({view:e.view,offset:l+c[t]},n,r);return e.offset=l+c[c.length-1],u}function Ks(e,t){let 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{let t=e.view.getBigUint64(e.offset,!0);r=e.view.getBigInt64(e.offset+8,!0)<<64n|t,e.offset+=16}return Number(r)*10**-n}function qs(e){let t=e.view.getUint32(e.offset,!0);e.offset+=4;let n=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t,n}var Js,Ys,Xs=n((()=>{Yo(),Js=new TextDecoder,Ys=new WeakMap}));function Zs(e,t,n,r,i){let a=es(i);if(!t?.length&&!n.length){if(!a||!r.length)return r;t=Array(r.length).fill(a)}let o=t?.length||n.length,s=i.map(({element:e})=>e.repetition_type),c=0,l=[e],u=e,d=0,f=0,p=0;if(n[0])for(;d<s.length-2&&p<n[0];)d++,s[d]!==`REQUIRED`&&(u=u.at(-1),l.push(u),f++),s[d]===`REPEATED`&&p++;for(let e=0;e<o;e++){let i=t?.length?t[e]:a,o=n[e];for(;d&&(o<p||s[d]!==`REPEATED`);)s[d]!==`REQUIRED`&&(l.pop(),f--),s[d]===`REPEATED`&&p--,d--;for(u=l.at(-1);(d<s.length-2||s[d+1]===`REPEATED`)&&(f<i||s[d+1]===`REQUIRED`);){if(d++,s[d]!==`REQUIRED`){let e=[];u.push(e),u=e,l.push(e),f++}s[d]===`REPEATED`&&p++}i===a?u.push(r[c++]):d===s.length-2?u.push(null):u.push([])}if(!e.length)for(let e=0;e<a;e++){let e=[];u.push(e),u=e}return e}function Qs(e,t,n,r=0){let i=t.path.join(`.`),a=t.element.repetition_type===`OPTIONAL`,o=a?r+1:r;if(ts(t)){let s=t.children[0],c=o;s.children.length===1&&(s=s.children[0],c++),Qs(e,s,n,c);let l=s.path.join(`.`),u=e.get(l);if(!u)throw Error(`parquet list column missing values`);a&&$s(u,r),e.set(i,u),e.delete(l);return}if(ns(t)){let s=t.children[0].element.name;Qs(e,t.children[0].children[0],n,o+1),Qs(e,t.children[0].children[1],n,o+1);let c=e.get(`${i}.${s}.key`),l=e.get(`${i}.${s}.value`);if(!c)throw Error(`parquet map column missing keys`);if(!l)throw Error(`parquet map column missing values`);if(c.length!==l.length)throw Error(`parquet map column key/value length mismatch`);let u=ec(c,l,o);a&&$s(u,r),e.delete(`${i}.${s}.key`),e.delete(`${i}.${s}.value`),e.set(i,u);return}if(t.children.length){let o=t.element.repetition_type===`REQUIRED`?r:r+1,s={};for(let r of t.children){Qs(e,r,n,o);let t=e.get(r.path.join(`.`));if(!t)throw Error(`parquet struct missing child data`);s[r.element.name]=t}for(let n of t.children)e.delete(n.path.join(`.`));let c=tc(s,o);t.element.logical_type?.type===`VARIANT`&&(c=Ls(c,n)),a&&$s(c,r),e.set(i,c)}}function $s(e,t){for(let n=0;n<e.length;n++)t?$s(e[n],t-1):e[n]=e[n][0]}function ec(e,t,n){let r=[];for(let i=0;i<e.length;i++)if(n)r.push(ec(e[i],t[i],n-1));else if(e[i]){let n={};for(let r=0;r<e[i].length;r++){let a=t[i][r];n[e[i][r]]=a===void 0?null:a}r.push(n)}else r.push(void 0);return r}function tc(e,t){let n=Object.keys(e),r=e[n[0]]?.length,i=[];for(let a=0;a<r;a++){let o={};for(let t of n){if(e[t].length!==r)throw Error(`parquet struct parsing error`);o[t]=e[t][a]}t?i.push(tc(o,t-1)):i.push(o)}return i}var nc=n((()=>{is(),Xs()}));function rc(e,t,n){let r=n instanceof Int32Array,i=ss(e),a=ss(e);ss(e);let o=us(e),s=0;n[s++]=r?Number(o):o;let c=i/a;for(;s<t;){let i=us(e),l=new Uint8Array(a);for(let t=0;t<a;t++)l[t]=e.view.getUint8(e.offset++);for(let u=0;u<a&&s<t;u++){let a=BigInt(l[u]);if(a){let l=0n,u=c,d=(1n<<a)-1n;for(;u&&s<t;){let t=BigInt(e.view.getUint8(e.offset))>>l&d;for(l+=a;l>=8;)l-=8n,e.offset++,l&&(t|=BigInt(e.view.getUint8(e.offset))<<a-l&d);let c=i+t;o+=c,n[s++]=r?Number(o):o,u--}u&&(e.offset+=Math.ceil((u*Number(a)+Number(l))/8))}else for(let e=0;e<c&&s<t;e++)o+=i,n[s++]=r?Number(o):o}}}function ic(e,t,n){let r=new Int32Array(t);rc(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 ac(e,t,n){let r=new Int32Array(t);rc(e,t,r);let i=new Int32Array(t);rc(e,t,i);for(let a=0;a<t;a++){let t=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,i[a]);r[a]?(n[a]=new Uint8Array(r[a]+i[a]),n[a].set(n[a-1].subarray(0,r[a])),n[a].set(t,r[a])):n[a]=t,e.offset+=i[a]}}var oc=n((()=>{ps()}));function sc(e){return 32-Math.clz32(e)}function cc(e,t,n,r){r===void 0&&(r=e.view.getUint32(e.offset,!0),e.offset+=4);let i=e.offset,a=0;for(;a<n.length;){let r=ss(e);if(r&1)a=uc(e,r,t,n,a);else{let i=r>>>1;lc(e,i,t,n,a),a+=i}}e.offset=i+r}function lc(e,t,n,r,i){let a=n+7>>3,o=0;for(let t=0;t<a;t++)o|=e.view.getUint8(e.offset++)<<(t<<3);for(let e=0;e<t;e++)r[i+e]=o}function uc(e,t,n,r,i){let a=t>>1<<3,o=(1<<n)-1,s=0;if(e.offset<e.view.byteLength)s=e.view.getUint8(e.offset++);else if(o)throw Error(`parquet bitpack offset ${e.offset} out of range`);let c=8,l=0;for(;a;)l>8?(l-=8,c-=8,s>>>=8):c-l<n?(s|=e.view.getUint8(e.offset)<<c,e.offset++,c+=8):(i<r.length&&(r[i++]=s>>l&o),a--,l+=n);return i}function dc(e,t,n,r){let i=fc(n,r),a=new Uint8Array(t*i);for(let n=0;n<i;n++)for(let r=0;r<t;r++)a[r*i+n]=e.view.getUint8(e.offset++);if(n===`FLOAT`)return new Float32Array(a.buffer);if(n===`DOUBLE`)return new Float64Array(a.buffer);if(n===`INT32`)return new Int32Array(a.buffer);if(n===`INT64`)return new BigInt64Array(a.buffer);if(n===`FIXED_LEN_BYTE_ARRAY`){let e=Array(t);for(let n=0;n<t;n++)e[n]=a.subarray(n*i,(n+1)*i);return e}throw Error(`parquet byte_stream_split unsupported type: ${n}`)}function fc(e,t){switch(e){case`INT32`:case`FLOAT`:return 4;case`INT64`:case`DOUBLE`:return 8;case`FIXED_LEN_BYTE_ARRAY`:if(!t)throw Error(`parquet byteWidth missing type_length`);return t;default:throw Error(`parquet unsupported type: ${e}`)}}var pc=n((()=>{ps()}));function mc(e,t,n,r){if(n===0)return[];if(t===`BOOLEAN`)return hc(e,n);if(t===`INT32`)return gc(e,n);if(t===`INT64`)return _c(e,n);if(t===`INT96`)return vc(e,n);if(t===`FLOAT`)return yc(e,n);if(t===`DOUBLE`)return bc(e,n);if(t===`BYTE_ARRAY`)return xc(e,n);if(t===`FIXED_LEN_BYTE_ARRAY`){if(!r)throw Error(`parquet missing fixed length`);return Sc(e,n,r)}else throw Error(`parquet unhandled type: ${t}`)}function hc(e,t){let n=Array(t);for(let r=0;r<t;r++){let t=e.offset+(r/8|0),i=r%8;n[r]=(e.view.getUint8(t)&1<<i)!=0}return e.offset+=Math.ceil(t/8),n}function gc(e,t){let n=(e.view.byteOffset+e.offset)%4?new Int32Array(Cc(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 _c(e,t){let n=(e.view.byteOffset+e.offset)%8?new BigInt64Array(Cc(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 vc(e,t){let n=Array(t);for(let r=0;r<t;r++){let t=e.view.getBigInt64(e.offset+r*12,!0),i=e.view.getInt32(e.offset+r*12+8,!0);n[r]=BigInt(i)<<64n|t}return e.offset+=t*12,n}function yc(e,t){let n=(e.view.byteOffset+e.offset)%4?new Float32Array(Cc(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 bc(e,t){let n=(e.view.byteOffset+e.offset)%8?new Float64Array(Cc(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 xc(e,t){let n=Array(t);for(let r=0;r<t;r++){let t=e.view.getUint32(e.offset,!0);e.offset+=4,n[r]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t),e.offset+=t}return n}function Sc(e,t,n){let r=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 Cc(e,t,n){let r=new ArrayBuffer(n);return new Uint8Array(r).set(new Uint8Array(e,t,n)),r}var wc=n((()=>{}));function Tc(e,t,n,r,i){for(let a=0;a<i;a++)n[r+a]=e[t+a]}function Ec(e,t){let n=e.byteLength,r=t.byteLength,i=0,a=0;for(;i<n;){let t=e[i];if(i++,t<128)break}if(r&&i>=n)throw Error(`invalid snappy length header`);for(;i<n;){let r=e[i],o=0;if(i++,i>=n)throw Error(`missing eof marker`);if(r&3){let s=0;switch(r&3){case 1:o=(r>>>2&7)+4,s=e[i]+(r>>>5<<8),i++;break;case 2:if(n<=i+1)throw Error(`snappy error end of input`);o=(r>>>2)+1,s=e[i]+(e[i+1]<<8),i+=2;break;case 3:if(n<=i+3)throw Error(`snappy error end of input`);o=(r>>>2)+1,s=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+(e[i+3]<<24),i+=4;break;default:break}if(s===0||isNaN(s))throw Error(`invalid offset ${s} pos ${i} inputLength ${n}`);if(s>a)throw Error(`cannot copy from before start of buffer`);Tc(t,a-s,t,a,o),a+=o}else{let o=(r>>>2)+1;if(o>60){if(i+3>=n)throw Error(`snappy error literal pos + 3 >= inputLength`);let t=o-60;o=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+(e[i+3]<<24),o=(o&Dc[t])+1,i+=t}if(i+o>n)throw Error(`snappy error literal exceeds input length`);Tc(e,i,t,a,o),i+=o,a+=o}}if(a!==r)throw Error(`premature end of input`)}var Dc,Oc=n((()=>{Dc=[0,255,65535,16777215,4294967295]}));function kc(e,t,{type:n,element:r,schemaPath:i}){let a=new DataView(e.buffer,e.byteOffset,e.byteLength),o={view:a,offset:0},s,c=Ac(o,t,i),{definitionLevels:l,numNulls:u}=jc(o,t,i),d=t.num_values-u;if(t.encoding===`PLAIN`)s=mc(o,n,d,r.type_length);else if(t.encoding===`PLAIN_DICTIONARY`||t.encoding===`RLE_DICTIONARY`||t.encoding===`RLE`){let e=n===`BOOLEAN`?1:a.getUint8(o.offset++);e?(s=Array(d),n===`BOOLEAN`?(cc(o,e,s),s=s.map(e=>!!e)):cc(o,e,s,a.byteLength-o.offset)):s=new Uint8Array(d)}else if(t.encoding===`BYTE_STREAM_SPLIT`)s=dc(o,d,n,r.type_length);else if(t.encoding===`DELTA_BINARY_PACKED`)s=n===`INT32`?new Int32Array(d):new BigInt64Array(d),rc(o,d,s);else if(t.encoding===`DELTA_LENGTH_BYTE_ARRAY`)s=Array(d),ic(o,d,s);else throw Error(`parquet unsupported encoding: ${t.encoding}`);return{definitionLevels:l,repetitionLevels:c,dataPage:s}}function Ac(e,t,n){if(n.length>1){let r=$o(n);if(r){let n=Array(t.num_values);return cc(e,sc(r),n),n}}return[]}function jc(e,t,n){let r=es(n);if(!r)return{definitionLevels:[],numNulls:0};let i=Array(t.num_values);cc(e,sc(r),i);let a=t.num_values;for(let e of i)e===r&&a--;return a===0&&(i.length=0),{definitionLevels:i,numNulls:a}}function Mc(e,t,n,r){let i,a=r?.[n];if(n===`UNCOMPRESSED`)i=e;else if(a)i=a(e,t);else if(n===`SNAPPY`)i=new Uint8Array(t),Ec(e,i);else throw Error(`parquet unsupported compression codec: ${n}`);if(i?.length!==t)throw Error(`parquet decompressed page length ${i?.length} does not match header ${t}`);return i}function Nc(e,t,n){let r={view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0},{type:i,element:a,schemaPath:o,codec:s,compressors:c}=n,l=t.data_page_header_v2;if(!l)throw Error(`parquet data page header v2 is undefined`);let u=Pc(r,l,o);r.offset=l.repetition_levels_byte_length;let d=Fc(r,l,o),f=t.uncompressed_page_size-l.definition_levels_byte_length-l.repetition_levels_byte_length,p=e.subarray(r.offset);l.is_compressed!==!1&&(p=Mc(p,f,s,c));let m=new DataView(p.buffer,p.byteOffset,p.byteLength),h={view:m,offset:0},g,_=l.num_values-l.num_nulls;if(l.encoding===`PLAIN`)g=mc(h,i,_,a.type_length);else if(l.encoding===`RLE`)g=Array(_),cc(h,1,g),g=g.map(e=>!!e);else if(l.encoding===`PLAIN_DICTIONARY`||l.encoding===`RLE_DICTIONARY`){let e=m.getUint8(h.offset++);g=Array(_),cc(h,e,g,f-1)}else if(l.encoding===`DELTA_BINARY_PACKED`)g=i===`INT32`?new Int32Array(_):new BigInt64Array(_),rc(h,_,g);else if(l.encoding===`DELTA_LENGTH_BYTE_ARRAY`)g=Array(_),ic(h,_,g);else if(l.encoding===`DELTA_BYTE_ARRAY`)g=Array(_),ac(h,_,g);else if(l.encoding===`BYTE_STREAM_SPLIT`)g=dc(h,_,i,a.type_length);else throw Error(`parquet unsupported encoding: ${l.encoding}`);return{definitionLevels:d,repetitionLevels:u,dataPage:g}}function Pc(e,t,n){let r=$o(n);if(!r)return[];let i=Array(t.num_values);return cc(e,sc(r),i,t.repetition_levels_byte_length),i}function Fc(e,t,n){let r=es(n);if(r){let n=Array(t.num_values);return cc(e,sc(r),n,t.definition_levels_byte_length),n}}var Ic=n((()=>{oc(),pc(),wc(),is(),Oc()}));function Lc(e,{groupStart:t,selectStart:n,selectEnd:r},i,a){let{pathInSchema:o,schemaPath:s}=i,c=rs(s),l=[],u,d,f=0,p=0,m=a&&(()=>{d&&a({pathInSchema:o,columnData:d,rowStart:t+f-d.length,rowEnd:t+f})});for(;(c?f<r:e.offset<e.view.byteLength-1)&&!(e.offset>=e.view.byteLength-1);){let t=zc(e);if(t.type===`DICTIONARY_PAGE`){let{data:n}=Rc(e,t,i,u,void 0,0);n&&(u=Uo(n,i))}else{let r=d?.length||0,a=Rc(e,t,i,u,d,n-f);a.skipped?(l.length||(p+=a.skipped),f+=a.skipped):a.data&&d===a.data?f+=a.data.length-r:a.data&&a.data.length&&(m?.(),l.push(a.data),f+=a.data.length,d=a.data)}}return m?.(),{data:l,skipped:p}}function Rc(e,t,n,r,i,a){let{type:o,element:s,schemaPath:c,codec:l,compressors:u}=n,d=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`){let e=t.data_page_header;if(!e)throw Error(`parquet data page header is undefined`);if(a>e.num_values&&rs(c))return{skipped:e.num_values};let{definitionLevels:o,repetitionLevels:s,dataPage:f}=kc(Mc(d,Number(t.uncompressed_page_size),l,u),e,n),p=Ho(f,r,e.encoding,n);return{skipped:0,data:Zs(Array.isArray(i)?i:[],o,s,p,c)}}else if(t.type===`DATA_PAGE_V2`){let e=t.data_page_header_v2;if(!e)throw Error(`parquet data page header v2 is undefined`);if(a>e.num_rows)return{skipped:e.num_values};let{definitionLevels:o,repetitionLevels:s,dataPage:l}=Nc(d,t,n),u=Ho(l,r,e.encoding,n);return{skipped:0,data:Zs(Array.isArray(i)?i:[],o,s,u,c)}}else if(t.type===`DICTIONARY_PAGE`){let e=t.dictionary_page_header;if(!e)throw Error(`parquet dictionary page header is undefined`);let n=Mc(d,Number(t.uncompressed_page_size),l,u);return{skipped:0,data:mc({view:new DataView(n.buffer,n.byteOffset,n.byteLength),offset:0},o,e.num_values,s.type_length)}}else throw Error(`parquet unsupported page type: ${t.type}`)}function zc(e){let t=as(e);return{type:No[t.field_1],uncompressed_page_size:t.field_2,compressed_page_size:t.field_3,crc:t.field_4,data_page_header:t.field_5&&{num_values:t.field_5.field_1,encoding:ko[t.field_5.field_2],definition_level_encoding:ko[t.field_5.field_3],repetition_level_encoding:ko[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}},index_page_header:t.field_6,dictionary_page_header:t.field_7&&{num_values:t.field_7.field_1,encoding:ko[t.field_7.field_2],is_sorted:t.field_7.field_3},data_page_header_v2: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:ko[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}}}var Bc=n((()=>{nc(),Fo(),Yo(),Ic(),wc(),is(),ps()}));function Vc(e){let t=as(e);return{page_locations:t.field_1.map(Hc),unencoded_byte_array_data_bytes:t.field_2}}function Hc(e){return{offset:e.field_1,compressed_page_size:e.field_2,first_row_index:e.field_3}}var Uc=n((()=>{ps()}));function Wc(e,{metadata:t},n){let{file:r,compressors:i,utf8:a}=e,o=[],s={...Jo,...e.parsers};for(let c of n.chunks){let{columnMetadata:l}=c,u=Zo(t.schema,l.path_in_schema),d={pathInSchema:l.path_in_schema,type:l.type,element:u[u.length-1].element,schemaPath:u,codec:l.codec,parsers:s,compressors:i,utf8:a};if(!(`offsetIndex`in c)){o.push({pathInSchema:l.path_in_schema,data:Promise.resolve(r.slice(c.range.startByte,c.range.endByte)).then(t=>Lc({view:new DataView(t),offset:0},n,d,e.onPage))});continue}o.push({pathInSchema:l.path_in_schema,data:Promise.resolve(r.slice(c.offsetIndex.startByte,c.offsetIndex.endByte)).then(async t=>{let i=Vc({view:new DataView(t),offset:0}),{selectStart:a,selectEnd:o}=n,s=i.page_locations,c=NaN,l=NaN,u=0;for(let e=0;e<s.length;e++){let t=s[e],r=Number(t.first_row_index),i=e+1<s.length?Number(s[e+1].first_row_index):n.groupRows;r<o&&i>a&&(Number.isNaN(c)&&(c=Number(t.offset),u=r),l=Number(t.offset)+t.compressed_page_size)}let f=await r.slice(c,l),{data:p,skipped:m}=Lc({view:new DataView(f),offset:0},u?{...n,groupStart:n.groupStart+u,selectStart:n.selectStart-u,selectEnd:n.selectEnd-u}:n,d,e.onPage);return{data:p,skipped:u+m}})})}return{groupStart:n.groupStart,groupRows:n.groupRows,asyncColumns:o}}function Gc(e,t,n){let{asyncColumns:r}=e;n={...Jo,...n};let i=[];for(let e of t.children)if(e.children.length){let t=r.filter(t=>t.pathInSchema[0]===e.element.name);if(!t.length)continue;let a=new Map,o=Promise.all(t.map(e=>e.data.then(({data:t})=>{a.set(e.pathInSchema.join(`.`),ks(t))}))).then(()=>{Qs(a,e,n);let t=a.get(e.path.join(`.`));if(!t)throw Error(`parquet column data not assembled`);return{data:[t],skipped:0}});i.push({pathInSchema:e.path,data:o})}else{let t=r.find(t=>t.pathInSchema[0]===e.element.name);t&&i.push(t)}return{...e,asyncColumns:i}}var Kc=n((()=>{nc(),Bc(),Yo(),Uc(),is(),As()})),qc=r({parquetRead:()=>$c,parquetReadObjects:()=>el});function Jc(e){if(!e.metadata)throw Error(`parquet requires metadata`);let t=Ns(e);return e.file=Ps(e.file,t),t.groups.map(n=>Wc(e,t,n))}function Yc(e){if(!e)return[];if(e.length===1)return e[0];let t=0;for(let n of e)t+=n.length;let n=Array(t),r=0;for(let t of e){for(let e=0;e<t.length;e++)n[r+e]=t[e];r+=t.length}return n}function Xc(e){let t=e.join(``),n=tl.get(t);if(n)return n;let r=e.map((e,t)=>JSON.stringify(e)+`: columnData[`+t+`][row - columnSkipped[`+t+`]]`).join(`,
6
+ `)}function l(t){return t.map(u).join(e)}function u(e){return e==null?``:e instanceof Date?Ht(e):t.test(e+=``)?`"`+e.replace(/"/g,`""`)+`"`:e}return{parse:r,parseRows:i,format:o,formatBody:s,formatRows:c,formatRow:l,formatValue:u}}var Wt=Ut(` `);Wt.parse;var Gt=Wt.parseRows;Wt.format,Wt.formatBody,Wt.formatRows,Wt.formatRow,Wt.formatValue;function Kt(e){return e}function qt(e){if(e==null)return Kt;var t,n,r=e.scale[0],i=e.scale[1],a=e.translate[0],o=e.translate[1];return function(e,s){s||(t=n=0);var c=2,l=e.length,u=Array(l);for(u[0]=(t+=e[0])*r+a,u[1]=(n+=e[1])*i+o;c<l;)u[c]=e[c],++c;return u}}function Jt(e,t){for(var n,r=e.length,i=r-t;i<--r;)n=e[i],e[i++]=e[r],e[r]=n}function Yt(e,t){return typeof t==`string`&&(t=e.objects[t]),t.type===`GeometryCollection`?{type:`FeatureCollection`,features:t.geometries.map(function(t){return Xt(e,t)})}:Xt(e,t)}function Xt(e,t){var n=t.id,r=t.bbox,i=t.properties==null?{}:t.properties,a=Zt(e,t);return n==null&&r==null?{type:`Feature`,properties:i,geometry:a}:r==null?{type:`Feature`,id:n,properties:i,geometry:a}:{type:`Feature`,id:n,bbox:r,properties:i,geometry:a}}function Zt(e,t){var n=qt(e.transform),r=e.arcs;function i(e,t){t.length&&t.pop();for(var i=r[e<0?~e:e],a=0,o=i.length;a<o;++a)t.push(n(i[a],a));e<0&&Jt(t,o)}function a(e){return n(e)}function o(e){for(var t=[],n=0,r=e.length;n<r;++n)i(e[n],t);return t.length<2&&t.push(t[0]),t}function s(e){for(var t=o(e);t.length<4;)t.push(t[0]);return t}function c(e){return e.map(s)}function l(e){var t=e.type,n;switch(t){case`GeometryCollection`:return{type:t,geometries:e.geometries.map(l)};case`Point`:n=a(e.coordinates);break;case`MultiPoint`:n=e.coordinates.map(a);break;case`LineString`:n=o(e.arcs);break;case`MultiLineString`:n=e.arcs.map(o);break;case`Polygon`:n=c(e.arcs);break;case`MultiPolygon`:n=e.arcs.map(c);break;default:return null}return{type:t,coordinates:n}}return l(t)}function Qt(e,t){var n={},r={},i={},a=[],o=-1;t.forEach(function(n,r){var i=e.arcs[n<0?~n:n],a;i.length<3&&!i[1][0]&&!i[1][1]&&(a=t[++o],t[o]=n,t[r]=a)}),t.forEach(function(e){var t=s(e),n=t[0],a=t[1],o,c;if(o=i[n])if(delete i[o.end],o.push(e),o.end=a,c=r[a]){delete r[c.start];var l=c===o?o:o.concat(c);r[l.start=o.start]=i[l.end=c.end]=l}else r[o.start]=i[o.end]=o;else if(o=r[a])if(delete r[o.start],o.unshift(e),o.start=n,c=i[n]){delete i[c.end];var u=c===o?o:c.concat(o);r[u.start=c.start]=i[u.end=o.end]=u}else r[o.start]=i[o.end]=o;else o=[e],r[o.start=n]=i[o.end=a]=o});function s(t){var n=e.arcs[t<0?~t:t],r=n[0],i;return e.transform?(i=[0,0],n.forEach(function(e){i[0]+=e[0],i[1]+=e[1]})):i=n[n.length-1],t<0?[i,r]:[r,i]}function c(e,t){for(var r in e){var i=e[r];delete t[i.start],delete i.start,delete i.end,i.forEach(function(e){n[e<0?~e:e]=1}),a.push(i)}}return c(i,r),c(r,i),t.forEach(function(e){n[e<0?~e:e]||a.push([e])}),a}function $t(e){return Zt(e,en.apply(this,arguments))}function en(e,t,n){var r,i,a;if(arguments.length>1)r=tn(e,t,n);else for(i=0,r=Array(a=e.arcs.length);i<a;++i)r[i]=i;return{type:`MultiLineString`,arcs:Qt(e,r)}}function tn(e,t,n){var r=[],i=[],a;function o(e){var t=e<0?~e:e;(i[t]||(i[t]=[])).push({i:e,g:a})}function s(e){e.forEach(o)}function c(e){e.forEach(s)}function l(e){e.forEach(c)}function u(e){switch(a=e,e.type){case`GeometryCollection`:e.geometries.forEach(u);break;case`LineString`:s(e.arcs);break;case`MultiLineString`:case`Polygon`:c(e.arcs);break;case`MultiPolygon`:l(e.arcs);break}}return u(t),i.forEach(n==null?function(e){r.push(e[0].i)}:function(e){n(e[0].g,e[e.length-1].g)&&r.push(e[0].i)}),r}function nn(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function rn(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function an(e){let t,n,r;e.length===2?(t=e===nn||e===rn?e:on,n=e,r=e):(t=nn,n=(t,n)=>nn(e(t),n),r=(t,n)=>e(t)-n);function i(e,r,i=0,a=e.length){if(i<a){if(t(r,r)!==0)return a;do{let t=i+a>>>1;n(e[t],r)<0?i=t+1:a=t}while(i<a)}return i}function a(e,r,i=0,a=e.length){if(i<a){if(t(r,r)!==0)return a;do{let t=i+a>>>1;n(e[t],r)<=0?i=t+1:a=t}while(i<a)}return i}function o(e,t,n=0,a=e.length){let o=i(e,t,n,a-1);return o>n&&r(e[o-1],t)>-r(e[o],t)?o-1:o}return{left:i,center:o,right:a}}function on(){return 0}function sn(e){return e===null?NaN:+e}function*cn(e,t){if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(yield t);else{let n=-1;for(let r of e)(r=t(r,++n,e))!=null&&(r=+r)>=r&&(yield r)}}var ln=an(nn),un=ln.right;ln.left,an(sn).center;function dn(e,t){let n=0;if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&++n;else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(i=+i)>=i&&++n}return n}function fn(e,t){let n=0,r,i=0,a=0;if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(r=t-i,i+=r/++n,a+=r*(t-i));else{let o=-1;for(let s of e)(s=t(s,++o,e))!=null&&(s=+s)>=s&&(r=s-i,i+=r/++n,a+=r*(s-i))}if(n>1)return a/(n-1)}function pn(e,t){let n,r;if(t===void 0)for(let t of e)t!=null&&(n===void 0?t>=t&&(n=r=t):(n>t&&(n=t),r<t&&(r=t)));else{let i=-1;for(let a of e)(a=t(a,++i,e))!=null&&(n===void 0?a>=a&&(n=r=a):(n>a&&(n=a),r<a&&(r=a)))}return[n,r]}var mn=class extends Map{constructor(e,t=vn){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),e!=null)for(let[t,n]of e)this.set(t,n)}get(e){return super.get(hn(this,e))}has(e){return super.has(hn(this,e))}set(e,t){return super.set(gn(this,e),t)}delete(e){return super.delete(_n(this,e))}};function hn({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):n}function gn({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function _n({_intern:e,_key:t},n){let r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function vn(e){return typeof e==`object`&&e?e.valueOf():e}function yn(e){return e}function bn(e,...t){return Sn(e,yn,yn,t)}function xn(e,...t){return Sn(e,Array.from,yn,t)}function Sn(e,t,n,r){return(function e(i,a){if(a>=r.length)return n(i);let o=new mn,s=r[a++],c=-1;for(let e of i){let t=s(e,++c,i),n=o.get(t);n?n.push(e):o.set(t,[e])}for(let[t,n]of o)o.set(t,e(n,a));return t(o)})(e,0)}function Cn(e=nn){if(e===nn)return wn;if(typeof e!=`function`)throw TypeError(`compare is not a function`);return(t,n)=>{let r=e(t,n);return r||r===0?r:(e(n,n)===0)-(e(t,t)===0)}}function wn(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(e<t?-1:e>t?1:0)}var Tn=Math.sqrt(50),En=Math.sqrt(10),Dn=Math.sqrt(2);function On(e,t,n){let r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/10**i,o=a>=Tn?10:a>=En?5:a>=Dn?2:1,s,c,l;return i<0?(l=10**-i/o,s=Math.round(e*l),c=Math.round(t*l),s/l<e&&++s,c/l>t&&--c,l=-l):(l=10**i*o,s=Math.round(e/l),c=Math.round(t/l),s*l<e&&++s,c*l>t&&--c),c<s&&.5<=n&&n<2?On(e,t,n*2):[s,c,l]}function kn(e,t,n){if(t=+t,e=+e,n=+n,!(n>0))return[];if(e===t)return[e];let r=t<e,[i,a,o]=r?On(t,e,n):On(e,t,n);if(!(a>=i))return[];let s=a-i+1,c=Array(s);if(r)if(o<0)for(let e=0;e<s;++e)c[e]=(a-e)/-o;else for(let e=0;e<s;++e)c[e]=(a-e)*o;else if(o<0)for(let e=0;e<s;++e)c[e]=(i+e)/-o;else for(let e=0;e<s;++e)c[e]=(i+e)*o;return c}function An(e,t,n){return t=+t,e=+e,n=+n,On(e,t,n)[2]}function jn(e,t,n){t=+t,e=+e,n=+n;let r=t<e,i=r?An(t,e,n):An(e,t,n);return(r?-1:1)*(i<0?1/-i:i)}function Mn(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n<t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n<i||n===void 0&&i>=i)&&(n=i)}return n}function Nn(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n>t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function Pn(e,t,n=0,r=1/0,i){if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(e.length-1,r)),!(n<=t&&t<=r))return e;for(i=i===void 0?wn:Cn(i);r>n;){if(r-n>600){let a=r-n+1,o=t-n+1,s=Math.log(a),c=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*c*(a-c)/a)*(o-a/2<0?-1:1),u=Math.max(n,Math.floor(t-o*c/a+l)),d=Math.min(r,Math.floor(t+(a-o)*c/a+l));Pn(e,t,u,d,i)}let a=e[t],o=n,s=r;for(Fn(e,n,t),i(e[r],a)>0&&Fn(e,n,r);o<s;){for(Fn(e,o,s),++o,--s;i(e[o],a)<0;)++o;for(;i(e[s],a)>0;)--s}i(e[n],a)===0?Fn(e,n,s):(++s,Fn(e,s,r)),s<=t&&(n=s+1),t<=s&&(r=s-1)}return e}function Fn(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function In(e,t,n){if(e=Float64Array.from(cn(e,n)),!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return Nn(e);if(t>=1)return Mn(e);var r,i=(r-1)*t,a=Math.floor(i),o=Mn(Pn(e,a).subarray(0,a+1));return o+(Nn(e.subarray(a+1))-o)*(i-a)}}function Ln(e,t,n=sn){if(!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return+n(e[0],0,e);if(t>=1)return+n(e[r-1],r-1,e);var r,i=(r-1)*t,a=Math.floor(i),o=+n(e[a],a,e);return o+(+n(e[a+1],a+1,e)-o)*(i-a)}}function Rn(e,t){let n=0,r=0;if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(++n,r+=t);else{let i=-1;for(let a of e)(a=t(a,++i,e))!=null&&(a=+a)>=a&&(++n,r+=a)}if(n)return r/n}function zn(e,t){return In(e,.5,t)}function Bn(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r<i;)a[r]=e+r*n;return a}function Vn(e,t){let n=0;if(t===void 0)for(let t of e)(t=+t)&&(n+=t);else{let r=-1;for(let i of e)(i=+t(i,++r,e))&&(n+=i)}return n}function Hn(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString(`en`).replace(/,/g,``):e.toString(10)}function Un(e,t){if(!isFinite(e)||e===0)return null;var n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf(`e`),r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function Wn(e){return e=Un(Math.abs(e)),e?e[1]:NaN}function Gn(e,t){return function(n,r){for(var i=n.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(t)}}function Kn(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}var qn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Jn(e){if(!(t=qn.exec(e)))throw Error(`invalid format: `+e);var t;return new Yn({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Jn.prototype=Yn.prototype;function Yn(e){this.fill=e.fill===void 0?` `:e.fill+``,this.align=e.align===void 0?`>`:e.align+``,this.sign=e.sign===void 0?`-`:e.sign+``,this.symbol=e.symbol===void 0?``:e.symbol+``,this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?``:e.type+``}Yn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?`0`:``)+(this.width===void 0?``:Math.max(1,this.width|0))+(this.comma?`,`:``)+(this.precision===void 0?``:`.`+Math.max(0,this.precision|0))+(this.trim?`~`:``)+this.type};function Xn(e){out:for(var t=e.length,n=1,r=-1,i;n<t;++n)switch(e[n]){case`.`:r=i=n;break;case`0`:r===0&&(r=n),i=n;break;default:if(!+e[n])break out;r>0&&(r=0);break}return r>0?e.slice(0,r)+e.slice(i+1):e}var Zn;function Qn(e,t){var n=Un(e,t);if(!n)return Zn=void 0,e.toPrecision(t);var r=n[0],i=n[1],a=i-(Zn=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return a===o?r:a>o?r+Array(a-o+1).join(`0`):a>0?r.slice(0,a)+`.`+r.slice(a):`0.`+Array(1-a).join(`0`)+Un(e,Math.max(0,t+a-1))[0]}function $n(e,t){var n=Un(e,t);if(!n)return e+``;var r=n[0],i=n[1];return i<0?`0.`+Array(-i).join(`0`)+r:r.length>i+1?r.slice(0,i+1)+`.`+r.slice(i+1):r+Array(i-r.length+2).join(`0`)}var er={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+``,d:Hn,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>$n(e*100,t),r:$n,s:Qn,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function tr(e){return e}var nr=Array.prototype.map,rr=[`y`,`z`,`a`,`f`,`p`,`n`,`µ`,`m`,``,`k`,`M`,`G`,`T`,`P`,`E`,`Z`,`Y`];function ir(e){var t=e.grouping===void 0||e.thousands===void 0?tr:Gn(nr.call(e.grouping,Number),e.thousands+``),n=e.currency===void 0?``:e.currency[0]+``,r=e.currency===void 0?``:e.currency[1]+``,i=e.decimal===void 0?`.`:e.decimal+``,a=e.numerals===void 0?tr:Kn(nr.call(e.numerals,String)),o=e.percent===void 0?`%`:e.percent+``,s=e.minus===void 0?`−`:e.minus+``,c=e.nan===void 0?`NaN`:e.nan+``;function l(e,l){e=Jn(e);var u=e.fill,d=e.align,f=e.sign,p=e.symbol,m=e.zero,h=e.width,g=e.comma,_=e.precision,v=e.trim,y=e.type;y===`n`?(g=!0,y=`g`):er[y]||(_===void 0&&(_=12),v=!0,y=`g`),(m||u===`0`&&d===`=`)&&(m=!0,u=`0`,d=`=`);var b=(l&&l.prefix!==void 0?l.prefix:``)+(p===`$`?n:p===`#`&&/[boxX]/.test(y)?`0`+y.toLowerCase():``),x=(p===`$`?r:/[%p]/.test(y)?o:``)+(l&&l.suffix!==void 0?l.suffix:``),S=er[y],C=/[defgprs%]/.test(y);_=_===void 0?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_));function w(e){var n=b,r=x,o,l,p;if(y===`c`)r=S(e)+r,e=``;else{e=+e;var w=e<0||1/e<0;if(e=isNaN(e)?c:S(Math.abs(e),_),v&&(e=Xn(e)),w&&+e==0&&f!==`+`&&(w=!1),n=(w?f===`(`?f:s:f===`-`||f===`(`?``:f)+n,r=(y===`s`&&!isNaN(e)&&Zn!==void 0?rr[8+Zn/3]:``)+r+(w&&f===`(`?`)`:``),C){for(o=-1,l=e.length;++o<l;)if(p=e.charCodeAt(o),48>p||p>57){r=(p===46?i+e.slice(o+1):e.slice(o))+r,e=e.slice(0,o);break}}}g&&!m&&(e=t(e,1/0));var T=n.length+e.length+r.length,E=T<h?Array(h-T+1).join(u):``;switch(g&&m&&(e=t(E+e,E.length?h-r.length:1/0),E=``),d){case`<`:e=n+e+r+E;break;case`=`:e=n+E+e+r;break;case`^`:e=E.slice(0,T=E.length>>1)+n+e+r+E.slice(T);break;default:e=E+n+e+r;break}return a(e)}return w.toString=function(){return e+``},w}function u(e,t){var n=Math.max(-8,Math.min(8,Math.floor(Wn(t)/3)))*3,r=10**-n,i=l((e=Jn(e),e.type=`f`,e),{suffix:rr[8+n/3]});return function(e){return i(r*e)}}return{format:l,formatPrefix:u}}var ar,or,sr;cr({thousands:`,`,grouping:[3],currency:[`$`,``]});function cr(e){return ar=ir(e),or=ar.format,sr=ar.formatPrefix,ar}function lr(e){return Math.max(0,-Wn(Math.abs(e)))}function ur(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Wn(t)/3)))*3-Wn(Math.abs(e)))}function dr(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Wn(t)-Wn(e))+1}var fr=new Date,pr=new Date;function mr(e,t,n,r){function i(t){return e(t=arguments.length===0?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),i.round=e=>{let t=i(e),n=i.ceil(e);return e-t<n-e?t:n},i.offset=(e,n)=>(t(e=new Date(+e),n==null?1:Math.floor(n)),e),i.range=(n,r,a)=>{let o=[];if(n=i.ceil(n),a=a==null?1:Math.floor(a),!(n<r)||!(a>0))return o;let s;do o.push(s=new Date(+n)),t(n,a),e(n);while(s<n&&n<r);return o},i.filter=n=>mr(t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)},(e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}),n&&(i.count=(t,r)=>(fr.setTime(+t),pr.setTime(+r),e(fr),e(pr),Math.floor(n(fr,pr))),i.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?i.filter(r?t=>r(t)%e===0:t=>i.count(0,t)%e===0):i)),i}var hr=mr(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);hr.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?mr(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):hr),hr.range;var gr=1e3,_r=gr*60,vr=_r*60,yr=vr*24,br=yr*7,xr=yr*30,Sr=yr*365,Cr=mr(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*gr)},(e,t)=>(t-e)/gr,e=>e.getUTCSeconds());Cr.range;var wr=mr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*gr)},(e,t)=>{e.setTime(+e+t*_r)},(e,t)=>(t-e)/_r,e=>e.getMinutes());wr.range;var Tr=mr(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*_r)},(e,t)=>(t-e)/_r,e=>e.getUTCMinutes());Tr.range;var Er=mr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*gr-e.getMinutes()*_r)},(e,t)=>{e.setTime(+e+t*vr)},(e,t)=>(t-e)/vr,e=>e.getHours());Er.range;var Dr=mr(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*vr)},(e,t)=>(t-e)/vr,e=>e.getUTCHours());Dr.range;var Or=mr(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*_r)/yr,e=>e.getDate()-1);Or.range;var kr=mr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/yr,e=>e.getUTCDate()-1);kr.range;var Ar=mr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/yr,e=>Math.floor(e/yr));Ar.range;function jr(e){return mr(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*_r)/br)}var Mr=jr(0),Nr=jr(1),Pr=jr(2),Fr=jr(3),Ir=jr(4),Lr=jr(5),Rr=jr(6);Mr.range,Nr.range,Pr.range,Fr.range,Ir.range,Lr.range,Rr.range;function zr(e){return mr(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/br)}var Br=zr(0),Vr=zr(1),Hr=zr(2),Ur=zr(3),Wr=zr(4),Gr=zr(5),Kr=zr(6);Br.range,Vr.range,Hr.range,Ur.range,Wr.range,Gr.range,Kr.range;var qr=mr(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());qr.range;var Jr=mr(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());Jr.range;var Yr=mr(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());Yr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:mr(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)}),Yr.range;var Xr=mr(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Xr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:mr(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)}),Xr.range;function Zr(e,t,n,r,i,a){let o=[[Cr,1,gr],[Cr,5,5*gr],[Cr,15,15*gr],[Cr,30,30*gr],[a,1,_r],[a,5,5*_r],[a,15,15*_r],[a,30,30*_r],[i,1,vr],[i,3,3*vr],[i,6,6*vr],[i,12,12*vr],[r,1,yr],[r,2,2*yr],[n,1,br],[t,1,xr],[t,3,3*xr],[e,1,Sr]];function s(e,t,n){let r=t<e;r&&([e,t]=[t,e]);let i=n&&typeof n.range==`function`?n:c(e,t,n),a=i?i.range(e,+t+1):[];return r?a.reverse():a}function c(t,n,r){let i=Math.abs(n-t)/r,a=an(([,,e])=>e).right(o,i);if(a===o.length)return e.every(jn(t/Sr,n/Sr,r));if(a===0)return hr.every(Math.max(jn(t,n,r),1));let[s,c]=o[i/o[a-1][2]<o[a][2]/i?a-1:a];return s.every(c)}return[s,c]}var[Qr,$r]=Zr(Xr,Jr,Br,Ar,Dr,Tr),[ei,ti]=Zr(Yr,qr,Mr,Or,Er,wr),ni=`year`,ri=`quarter`,ii=`month`,ai=`week`,oi=`date`,si=`dayofyear`,ci=`hours`,li=`minutes`,ui=`seconds`,di=`milliseconds`;[ni,ri,ii,ai,oi,`day`,si,ci,li,ui,di].reduce((e,t,n)=>(e[t]=1+n,e),{}),`${ni}${ii}`,`${ni}${ii}${oi}`,`${ci}${li}`,ai+``,ai+``;var fi={[ni]:Yr,[ri]:qr.every(3),[ii]:qr,[ai]:Mr,[oi]:Or,day:Or,[si]:Or,[ci]:Er,[li]:wr,[ui]:Cr,[di]:hr},pi={[ni]:Xr,[ri]:Jr.every(3),[ii]:Jr,[ai]:Br,[oi]:kr,day:kr,[si]:kr,[ci]:Dr,[li]:Tr,[ui]:Cr,[di]:hr};function mi(e){return fi[e]}function hi(e){return pi[e]}var gi=1e3,_i=gi*60,vi=_i*60,yi=vi*24;yi*7;var bi=yi*30;yi*365,[ni,ii,oi,ci,li,ui,di].slice(0,-1).slice(0,-1).slice(0,-1).slice(0,-1),5*gi,15*gi,30*gi,5*_i,15*_i,30*_i,3*vi,6*vi,12*vi,3*bi;function xi(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function Si(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function Ci(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}function wi(e){var t=e.dateTime,n=e.date,r=e.time,i=e.periods,a=e.days,o=e.shortDays,s=e.months,c=e.shortMonths,l=Ai(i),u=ji(i),d=Ai(a),f=ji(a),p=Ai(o),m=ji(o),h=Ai(s),g=ji(s),_=Ai(c),v=ji(c),y={a:ae,A:oe,b:se,B:ce,c:null,d:Qi,e:Qi,f:ra,g:ma,G:ga,H:$i,I:ea,j:ta,L:na,m:ia,M:aa,p:le,q:ue,Q:za,s:Ba,S:oa,u:sa,U:ca,V:ua,w:da,W:fa,x:null,X:null,y:pa,Y:ha,Z:_a,"%":Ra},b={a:de,A:fe,b:pe,B:me,c:null,d:va,e:va,f:Ca,g:Pa,G:Ia,H:ya,I:ba,j:xa,L:Sa,m:wa,M:Ta,p:he,q:ge,Q:za,s:Ba,S:Ea,u:Da,U:Oa,V:Aa,w:ja,W:Ma,x:null,X:null,y:Na,Y:Fa,Z:La,"%":Ra},x={a:E,A:D,b:ee,B:te,c:ne,d:Hi,e:Hi,f:Ji,g:Ri,G:Li,H:Wi,I:Wi,j:Ui,L:qi,m:Vi,M:Gi,p:T,q:Bi,Q:Xi,s:Zi,S:Ki,u:Ni,U:Pi,V:Fi,w:Mi,W:Ii,x:re,X:ie,y:Ri,Y:Li,Z:zi,"%":Yi};y.x=S(n,y),y.X=S(r,y),y.c=S(t,y),b.x=S(n,b),b.X=S(r,b),b.c=S(t,b);function S(e,t){return function(n){var r=[],i=-1,a=0,o=e.length,s,c,l;for(n instanceof Date||(n=new Date(+n));++i<o;)e.charCodeAt(i)===37&&(r.push(e.slice(a,i)),(c=Ti[s=e.charAt(++i)])==null?c=s===`e`?` `:`0`:s=e.charAt(++i),(l=t[s])&&(s=l(n,c)),r.push(s),a=i+1);return r.push(e.slice(a,i)),r.join(``)}}function C(e,t){return function(n){var r=Ci(1900,void 0,1),i=w(r,e,n+=``,0),a,o;if(i!=n.length)return null;if(`Q`in r)return new Date(r.Q);if(`s`in r)return new Date(r.s*1e3+(`L`in r?r.L:0));if(t&&!(`Z`in r)&&(r.Z=0),`p`in r&&(r.H=r.H%12+r.p*12),r.m===void 0&&(r.m=`q`in r?r.q:0),`V`in r){if(r.V<1||r.V>53)return null;`w`in r||(r.w=1),`Z`in r?(a=Si(Ci(r.y,0,1)),o=a.getUTCDay(),a=o>4||o===0?Vr.ceil(a):Vr(a),a=kr.offset(a,(r.V-1)*7),r.y=a.getUTCFullYear(),r.m=a.getUTCMonth(),r.d=a.getUTCDate()+(r.w+6)%7):(a=xi(Ci(r.y,0,1)),o=a.getDay(),a=o>4||o===0?Nr.ceil(a):Nr(a),a=Or.offset(a,(r.V-1)*7),r.y=a.getFullYear(),r.m=a.getMonth(),r.d=a.getDate()+(r.w+6)%7)}else (`W`in r||`U`in r)&&(`w`in r||(r.w=`u`in r?r.u%7:`W`in r?1:0),o=`Z`in r?Si(Ci(r.y,0,1)).getUTCDay():xi(Ci(r.y,0,1)).getDay(),r.m=0,r.d=`W`in r?(r.w+6)%7+r.W*7-(o+5)%7:r.w+r.U*7-(o+6)%7);return`Z`in r?(r.H+=r.Z/100|0,r.M+=r.Z%100,Si(r)):xi(r)}}function w(e,t,n,r){for(var i=0,a=t.length,o=n.length,s,c;i<a;){if(r>=o)return-1;if(s=t.charCodeAt(i++),s===37){if(s=t.charAt(i++),c=x[s in Ti?t.charAt(i++):s],!c||(r=c(e,n,r))<0)return-1}else if(s!=n.charCodeAt(r++))return-1}return r}function T(e,t,n){var r=l.exec(t.slice(n));return r?(e.p=u.get(r[0].toLowerCase()),n+r[0].length):-1}function E(e,t,n){var r=p.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1}function D(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=f.get(r[0].toLowerCase()),n+r[0].length):-1}function ee(e,t,n){var r=_.exec(t.slice(n));return r?(e.m=v.get(r[0].toLowerCase()),n+r[0].length):-1}function te(e,t,n){var r=h.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1}function ne(e,n,r){return w(e,t,n,r)}function re(e,t,r){return w(e,n,t,r)}function ie(e,t,n){return w(e,r,t,n)}function ae(e){return o[e.getDay()]}function oe(e){return a[e.getDay()]}function se(e){return c[e.getMonth()]}function ce(e){return s[e.getMonth()]}function le(e){return i[+(e.getHours()>=12)]}function ue(e){return 1+~~(e.getMonth()/3)}function de(e){return o[e.getUTCDay()]}function fe(e){return a[e.getUTCDay()]}function pe(e){return c[e.getUTCMonth()]}function me(e){return s[e.getUTCMonth()]}function he(e){return i[+(e.getUTCHours()>=12)]}function ge(e){return 1+~~(e.getUTCMonth()/3)}return{format:function(e){var t=S(e+=``,y);return t.toString=function(){return e},t},parse:function(e){var t=C(e+=``,!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=S(e+=``,b);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+=``,!0);return t.toString=function(){return e},t}}}var Ti={"-":``,_:` `,0:`0`},Ei=/^\s*\d+/,Di=/^%/,Oi=/[\\^$*+?|[\]().{}]/g;function L(e,t,n){var r=e<0?`-`:``,i=(r?-e:e)+``,a=i.length;return r+(a<n?Array(n-a+1).join(t)+i:i)}function ki(e){return e.replace(Oi,`\\$&`)}function Ai(e){return RegExp(`^(?:`+e.map(ki).join(`|`)+`)`,`i`)}function ji(e){return new Map(e.map((e,t)=>[e.toLowerCase(),t]))}function Mi(e,t,n){var r=Ei.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function Ni(e,t,n){var r=Ei.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function Pi(e,t,n){var r=Ei.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function Fi(e,t,n){var r=Ei.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function Ii(e,t,n){var r=Ei.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function Li(e,t,n){var r=Ei.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function Ri(e,t,n){var r=Ei.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function zi(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||`00`)),n+r[0].length):-1}function Bi(e,t,n){var r=Ei.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function Vi(e,t,n){var r=Ei.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Hi(e,t,n){var r=Ei.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function Ui(e,t,n){var r=Ei.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function Wi(e,t,n){var r=Ei.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function Gi(e,t,n){var r=Ei.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function Ki(e,t,n){var r=Ei.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function qi(e,t,n){var r=Ei.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function Ji(e,t,n){var r=Ei.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Yi(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function Xi(e,t,n){var r=Ei.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function Zi(e,t,n){var r=Ei.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function Qi(e,t){return L(e.getDate(),t,2)}function $i(e,t){return L(e.getHours(),t,2)}function ea(e,t){return L(e.getHours()%12||12,t,2)}function ta(e,t){return L(1+Or.count(Yr(e),e),t,3)}function na(e,t){return L(e.getMilliseconds(),t,3)}function ra(e,t){return na(e,t)+`000`}function ia(e,t){return L(e.getMonth()+1,t,2)}function aa(e,t){return L(e.getMinutes(),t,2)}function oa(e,t){return L(e.getSeconds(),t,2)}function sa(e){var t=e.getDay();return t===0?7:t}function ca(e,t){return L(Mr.count(Yr(e)-1,e),t,2)}function la(e){var t=e.getDay();return t>=4||t===0?Ir(e):Ir.ceil(e)}function ua(e,t){return e=la(e),L(Ir.count(Yr(e),e)+(Yr(e).getDay()===4),t,2)}function da(e){return e.getDay()}function fa(e,t){return L(Nr.count(Yr(e)-1,e),t,2)}function pa(e,t){return L(e.getFullYear()%100,t,2)}function ma(e,t){return e=la(e),L(e.getFullYear()%100,t,2)}function ha(e,t){return L(e.getFullYear()%1e4,t,4)}function ga(e,t){var n=e.getDay();return e=n>=4||n===0?Ir(e):Ir.ceil(e),L(e.getFullYear()%1e4,t,4)}function _a(e){var t=e.getTimezoneOffset();return(t>0?`-`:(t*=-1,`+`))+L(t/60|0,`0`,2)+L(t%60,`0`,2)}function va(e,t){return L(e.getUTCDate(),t,2)}function ya(e,t){return L(e.getUTCHours(),t,2)}function ba(e,t){return L(e.getUTCHours()%12||12,t,2)}function xa(e,t){return L(1+kr.count(Xr(e),e),t,3)}function Sa(e,t){return L(e.getUTCMilliseconds(),t,3)}function Ca(e,t){return Sa(e,t)+`000`}function wa(e,t){return L(e.getUTCMonth()+1,t,2)}function Ta(e,t){return L(e.getUTCMinutes(),t,2)}function Ea(e,t){return L(e.getUTCSeconds(),t,2)}function Da(e){var t=e.getUTCDay();return t===0?7:t}function Oa(e,t){return L(Br.count(Xr(e)-1,e),t,2)}function ka(e){var t=e.getUTCDay();return t>=4||t===0?Wr(e):Wr.ceil(e)}function Aa(e,t){return e=ka(e),L(Wr.count(Xr(e),e)+(Xr(e).getUTCDay()===4),t,2)}function ja(e){return e.getUTCDay()}function Ma(e,t){return L(Vr.count(Xr(e)-1,e),t,2)}function Na(e,t){return L(e.getUTCFullYear()%100,t,2)}function Pa(e,t){return e=ka(e),L(e.getUTCFullYear()%100,t,2)}function Fa(e,t){return L(e.getUTCFullYear()%1e4,t,4)}function Ia(e,t){var n=e.getUTCDay();return e=n>=4||n===0?Wr(e):Wr.ceil(e),L(e.getUTCFullYear()%1e4,t,4)}function La(){return`+0000`}function Ra(){return`%`}function za(e){return+e}function Ba(e){return Math.floor(e/1e3)}var Va,Ha,Ua,Wa,Ga;Ka({dateTime:`%x, %X`,date:`%-m/%-d/%Y`,time:`%-I:%M:%S %p`,periods:[`AM`,`PM`],days:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],shortDays:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],months:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],shortMonths:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`]});function Ka(e){return Va=wi(e),Ha=Va.format,Ua=Va.parse,Wa=Va.utcFormat,Ga=Va.utcParse,Va}function qa(e){let t={};return n=>t[n]||(t[n]=e(n))}function Ja(e,t){return n=>{let r=e(n),i=r.indexOf(t);if(i<0)return r;let a=Ya(r,i),o=a<r.length?r.slice(a):``;for(;--a>i;)if(r[a]!==`0`){++a;break}return r.slice(0,a)+o}}function Ya(e,t){let n=e.lastIndexOf(`e`),r;if(n>0)return n;for(n=e.length;--n>t;)if(r=e.charCodeAt(n),r>=48&&r<=57)return n+1}function Xa(e){let t=qa(e.format),n=e.formatPrefix;return{format:t,formatPrefix:n,formatFloat(e){let n=Jn(e||`,`);if(n.precision==null){switch(n.precision=12,n.type){case`%`:n.precision-=2;break;case`e`:--n.precision;break}return Ja(t(n),t(`.1f`)(1)[1])}else return t(n)},formatSpan(e,r,i,a){a=Jn(a??`,f`);let o=jn(e,r,i),s=Math.max(Math.abs(e),Math.abs(r)),c;if(a.precision==null)switch(a.type){case`s`:return isNaN(c=ur(o,s))||(a.precision=c),n(a,s);case``:case`e`:case`g`:case`p`:case`r`:isNaN(c=dr(o,s))||(a.precision=c-(a.type===`e`));break;case`f`:case`%`:isNaN(c=lr(o))||(a.precision=c-(a.type===`%`)*2);break}return t(a)}}}Za();function Za(){return Xa({format:or,formatPrefix:sr})}function Qa(e,t,n){n||={},Ze(n)||Ke(`Invalid time multi-format specifier: ${n}`);let r=t(ui),i=t(li),a=t(ci),o=t(oi),s=t(ai),c=t(ii),l=t(ri),u=t(ni),d=e(n.milliseconds||`.%L`),f=e(n.seconds||`:%S`),p=e(n.minutes||`%I:%M`),m=e(n.hours||`%I %p`),h=e(n.date||n.day||`%a %d`),g=e(n.week||`%b %d`),_=e(n.month||`%B`),v=e(n.quarter||`%B`),y=e(n.year||`%Y`);return e=>(r(e)<e?d:i(e)<e?f:a(e)<e?p:o(e)<e?m:c(e)<e?s(e)<e?h:g:u(e)<e?l(e)<e?_:v:y)(e)}function $a(e){let t=qa(e.format),n=qa(e.utcFormat);return{timeFormat:e=>F(e)?t(e):Qa(t,mi,e),utcFormat:e=>F(e)?n(e):Qa(n,hi,e),timeParse:qa(e.parse),utcParse:qa(e.utcParse)}}var eo;to();function to(){return eo=$a({format:Ha,parse:Ua,utcFormat:Wa,utcParse:Ga})}function no(e){return $a(wi(e))}function ro(e){return arguments.length?eo=no(e):eo}var io=e=>e!=null&&e===e,ao=e=>e===`true`||e===`false`||e===!0||e===!1,oo=e=>!Number.isNaN(Date.parse(e)),so=e=>!Number.isNaN(+e)&&!(e instanceof Date),co=e=>so(e)&&Number.isInteger(+e),lo={boolean:Dt,integer:$e,number:$e,date:kt,string:At,unknown:Ye},uo=[ao,co,so,oo],fo=[`boolean`,`integer`,`number`,`date`];function po(e,t){if(!e||!e.length)return`unknown`;let n=e.length,r=uo.length,i=uo.map((e,t)=>t+1);for(let a=0,o=0,s,c;a<n;++a)for(c=t?e[a][t]:e[a],s=0;s<r;++s)if(i[s]&&io(c)&&!uo[s](c)&&(i[s]=0,++o,o===uo.length))return`string`;return fo[i.reduce((e,t)=>e===0?t:e,0)-1]}function mo(e,t){return t.reduce((t,n)=>(t[n]=po(e,n),t),{})}function ho(e){let t=function(t,n){let r={delimiter:e};return go(t,n?yt(n,r):r)};return t.responseType=`text`,t}function go(e,t){return t.header&&(e=t.header.map(Et).join(t.delimiter)+`
7
+ `+e),Ut(t.delimiter).parse(e+``)}go.responseType=`text`;function _o(e){return typeof Buffer==`function`&&ft(Buffer.isBuffer)?Buffer.isBuffer(e):!1}function vo(e,t){let n=t&&t.property?Je(t.property):Ye;return Ze(e)&&!_o(e)?yo(n(e),t):n(JSON.parse(e))}vo.responseType=`json`;function yo(e,t){return!k(e)&&Ct(e)&&(e=[...e]),t&&t.copy?JSON.parse(JSON.stringify(e)):e}var bo={interior:(e,t)=>e!==t,exterior:(e,t)=>e===t};function xo(e,t){let n,r,i,a;return e=vo(e,t),t&&t.feature?(n=Yt,i=t.feature):t&&t.mesh?(n=$t,i=t.mesh,a=bo[t.filter]):Ke(`Missing TopoJSON feature or mesh parameter.`),r=(r=e.objects[i])?n(e,r,a):Ke(`Invalid TopoJSON object: `+i),r&&r.features||[r]}xo.responseType=`json`;var So={dsv:go,csv:ho(`,`),tsv:ho(` `),json:vo,topojson:xo};function Co(e,t){return arguments.length>1?(So[e]=t,this):bt(So,e)?So[e]:null}function wo(e,t,n,r){t||={};let i=Co(t.type||`json`);return i||Ke(`Unknown data format type: `+t.type),e=i(e,t),t.parse&&To(e,t.parse,n,r),bt(e,`columns`)&&delete e.columns,e}function To(e,t,n,r){if(!e.length)return;let i=ro();n||=i.timeParse,r||=i.utcParse;let a=e.columns||Object.keys(e[0]),o,s,c,l,u,d;t===`auto`&&(t=mo(e,a)),a=Object.keys(t);let f=a.map(e=>{let i=t[e],a,o;if(i&&(i.startsWith(`date:`)||i.startsWith(`utc:`)))return a=i.split(/:(.+)?/,2),o=a[1],(o[0]===`'`&&o[o.length-1]===`'`||o[0]===`"`&&o[o.length-1]===`"`)&&(o=o.slice(1,-1)),(a[0]===`utc`?r:n)(o);if(!lo[i])throw Error(`Illegal format pattern: `+e+`:`+i);return lo[i]});for(c=0,u=e.length,d=a.length;c<u;++c)for(o=e[c],l=0;l<d;++l)s=a[l],o[s]=f[l](o[s])}var Eo,Do,Oo,ko,Ao,jo,Mo,No=n((()=>{Eo=[`BOOLEAN`,`INT32`,`INT64`,`INT96`,`FLOAT`,`DOUBLE`,`BYTE_ARRAY`,`FIXED_LEN_BYTE_ARRAY`],Do=[`PLAIN`,`GROUP_VAR_INT`,`PLAIN_DICTIONARY`,`RLE`,`BIT_PACKED`,`DELTA_BINARY_PACKED`,`DELTA_LENGTH_BYTE_ARRAY`,`DELTA_BYTE_ARRAY`,`RLE_DICTIONARY`,`BYTE_STREAM_SPLIT`],Oo=[`REQUIRED`,`OPTIONAL`,`REPEATED`],ko=[`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`],Ao=[`UNCOMPRESSED`,`SNAPPY`,`GZIP`,`LZO`,`BROTLI`,`LZ4`,`ZSTD`,`LZ4_RAW`],jo=[`DATA_PAGE`,`INDEX_PAGE`,`DICTIONARY_PAGE`,`DATA_PAGE_V2`],Mo=[`SPHERICAL`,`VINCENTY`,`THOMAS`,`ANDOYER`,`KARNEY`]}));function Po(e){let t=Fo(e);if(t.type===1)return{type:`Point`,coordinates:Io(e,t)};if(t.type===2)return{type:`LineString`,coordinates:Lo(e,t)};if(t.type===3)return{type:`Polygon`,coordinates:Ro(e,t)};if(t.type===4){let n=[];for(let r=0;r<t.count;r++)n.push(Io(e,Fo(e)));return{type:`MultiPoint`,coordinates:n}}else if(t.type===5){let n=[];for(let r=0;r<t.count;r++)n.push(Lo(e,Fo(e)));return{type:`MultiLineString`,coordinates:n}}else if(t.type===6){let n=[];for(let r=0;r<t.count;r++)n.push(Ro(e,Fo(e)));return{type:`MultiPolygon`,coordinates:n}}else if(t.type===7){let n=[];for(let r=0;r<t.count;r++)n.push(Po(e));return{type:`GeometryCollection`,geometries:n}}else throw Error(`Unsupported geometry type: ${t.type}`)}function Fo(e){let{view:t}=e,n=t.getUint8(e.offset++)===1,r=t.getUint32(e.offset,n);e.offset+=4;let i=r%1e3,a=Math.floor(r/1e3),o=0;i>1&&i<=7&&(o=t.getUint32(e.offset,n),e.offset+=4);let s=2;return a&&s++,a===3&&s++,{littleEndian:n,type:i,dim:s,count:o}}function Io(e,t){let n=[];for(let r=0;r<t.dim;r++){let r=e.view.getFloat64(e.offset,t.littleEndian);e.offset+=8,n.push(r)}return n}function Lo(e,t){let n=[];for(let r=0;r<t.count;r++)n.push(Io(e,t));return n}function Ro(e,t){let{view:n}=e,r=[];for(let i=0;i<t.count;i++){let i=n.getUint32(e.offset,t.littleEndian);e.offset+=4,r.push(Lo(e,{...t,count:i}))}return r}var zo=n((()=>{}));function Bo(e,t,n,r){if(t&&n.endsWith(`_DICTIONARY`)){let n=e;e instanceof Uint8Array&&!(t instanceof Uint8Array)&&(n=new t.constructor(e.length));for(let r=0;r<e.length;r++)n[r]=t[e[r]];return n}else return Vo(e,r)}function Vo(e,t){let{element:n,parsers:r,utf8:i=!0,schemaPath:a}=t,{type:o,converted_type:s,logical_type:c}=n;if(a?.some(e=>e.element.logical_type?.type===`VARIANT`)&&o===`BYTE_ARRAY`&&s!==`UTF8`&&c?.type!==`STRING`)return e;if(s===`DECIMAL`){let t=10**-(n.scale||0),r=Array(e.length);for(let n=0;n<r.length;n++)e[n]instanceof Uint8Array?r[n]=Ho(e[n])*t:r[n]=Number(e[n])*t;return r}if(!s&&o===`INT96`)return Array.from(e).map(e=>r.timestampFromNanoseconds(Uo(e)));if(s===`DATE`)return Array.from(e).map(e=>r.dateFromDays(e));if(s===`TIMESTAMP_MILLIS`)return Array.from(e).map(e=>r.timestampFromMilliseconds(e));if(s===`TIMESTAMP_MICROS`)return Array.from(e).map(e=>r.timestampFromMicroseconds(e));if(s===`JSON`)return e.map(e=>JSON.parse(Go.decode(e)));if(s===`BSON`)throw Error(`parquet bson not supported`);if(s===`INTERVAL`)throw Error(`parquet interval not supported`);if(c?.type===`GEOMETRY`)return e.map(e=>r.geometryFromBytes(e));if(c?.type===`GEOGRAPHY`)return e.map(e=>r.geographyFromBytes(e));if(s===`UTF8`||c?.type===`STRING`||i&&o===`BYTE_ARRAY`)return e.map(e=>r.stringFromBytes(e));if(s===`UINT_64`||c?.type===`INTEGER`&&c.bitWidth===64&&!c.isSigned){if(e instanceof BigInt64Array)return new BigUint64Array(e.buffer,e.byteOffset,e.length);let t=new BigUint64Array(e.length);for(let n=0;n<t.length;n++)t[n]=BigInt(e[n]);return t}if(s===`UINT_32`||c?.type===`INTEGER`&&c.bitWidth===32&&!c.isSigned){if(e instanceof Int32Array)return new Uint32Array(e.buffer,e.byteOffset,e.length);let t=new Uint32Array(e.length);for(let n=0;n<t.length;n++)t[n]=e[n];return t}if(c?.type===`FLOAT16`)return Array.from(e).map(Wo);if(c?.type===`TIMESTAMP`){let{unit:t}=c,n=r.timestampFromMilliseconds;t===`MICROS`&&(n=r.timestampFromMicroseconds),t===`NANOS`&&(n=r.timestampFromNanoseconds);let i=Array(e.length);for(let t=0;t<i.length;t++)i[t]=n(e[t]);return i}return e}function Ho(e){if(!e.length)return 0;let t=0n;for(let n of e)t=t*256n+BigInt(n);let n=e.length*8;return t>=2n**BigInt(n-1)&&(t-=2n**BigInt(n)),Number(t)}function Uo(e){let t=(e>>64n)-2440588n,n=e&18446744073709551615n;return t*86400000000000n+n}function Wo(e){if(!e)return;let 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)}var Go,Ko,qo=n((()=>{zo(),Go=new TextDecoder,Ko={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&&Go.decode(e)},geometryFromBytes(e){return e&&Po({view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0})},geographyFromBytes(e){return e&&Po({view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0})}}}));function Jo(e,t,n){let r=e[t],i=[],a=1;if(r.num_children)for(;i.length<r.num_children;){let r=e[t+a],o=Jo(e,t+a,[...n,r.name]);a+=o.count,i.push(o)}return{count:a,element:r,children:i,path:n}}function Yo(e,t){let n=Jo(e,0,[]),r=[n];for(let e of t){let i=n.children.find(t=>t.element.name===e);if(!i)throw Error(`parquet schema element not found: ${t}`);r.push(i),n=i}return r}function Xo(e){let t=[];function n(e){if(e.children.length)for(let t of e.children)n(t);else t.push(e.path.join(`.`))}return n(e),t}function Zo(e){let t=0;for(let{element:n}of e)n.repetition_type===`REPEATED`&&t++;return t}function Qo(e){let t=0;for(let{element:n}of e.slice(1))n.repetition_type!==`REQUIRED`&&t++;return t}function $o(e){if(!e||e.element.converted_type!==`LIST`||e.children.length>1)return!1;let t=e.children[0];return!(t.children.length>1||t.element.repetition_type!==`REPEATED`)}function es(e){if(!e||e.element.converted_type!==`MAP`||e.children.length>1)return!1;let t=e.children[0];return!(t.children.length!==2||t.element.repetition_type!==`REPEATED`||t.children.find(e=>e.element.name===`key`)?.element.repetition_type===`REPEATED`||t.children.find(e=>e.element.name===`value`)?.element.repetition_type===`REPEATED`)}function ts(e){if(e.length!==2)return!1;let[,t]=e;return!(t.element.repetition_type===`REPEATED`||t.children.length)}var ns=n((()=>{}));function rs(e){let t=0,n={};for(;e.offset<e.view.byteLength;){let[r,i,a]=ls(e,t);if(t=a,r===us.STOP)break;n[`field_${i}`]=is(e,r)}return n}function is(e,t){switch(t){case us.TRUE:return!0;case us.FALSE:return!1;case us.BYTE:return e.view.getInt8(e.offset++);case us.I16:case us.I32:return ss(e);case us.I64:return cs(e);case us.DOUBLE:{let t=e.view.getFloat64(e.offset,!0);return e.offset+=8,t}case us.BINARY:{let t=as(e),n=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t,n}case us.LIST:{let t=e.view.getUint8(e.offset++),n=t&15,r=t>>4;r===15&&(r=as(e));let i=n===us.TRUE||n===us.FALSE,a=Array(r);for(let t=0;t<r;t++)a[t]=i?is(e,us.BYTE)===1:is(e,n);return a}case us.STRUCT:{let t={},n=0;for(;;){let[r,i,a]=ls(e,n);if(n=a,r===us.STOP)break;t[`field_${i}`]=is(e,r)}return t}default:throw Error(`thrift unhandled type: ${t}`)}}function as(e){let t=0,n=0;for(;;){let r=e.view.getUint8(e.offset++);if(t|=(r&127)<<n,!(r&128))return t;n+=7}}function os(e){let t=0n,n=0n;for(;;){let r=e.view.getUint8(e.offset++);if(t|=BigInt(r&127)<<n,!(r&128))return t;n+=7n}}function ss(e){let t=as(e);return t>>>1^-(t&1)}function cs(e){let t=os(e);return t>>1n^-(t&1n)}function ls(e,t){let n=e.view.getUint8(e.offset++),r=n&15;if(r===us.STOP)return[0,0,t];let i=n>>4,a=i?t+i:ss(e);return[r,a,a]}var us,ds=n((()=>{us={STOP:0,TRUE:1,FALSE:2,BYTE:3,I16:4,I32:5,I64:6,DOUBLE:7,BINARY:8,LIST:9,SET:10,MAP:11,STRUCT:12,UUID:13}}));function fs(e,t){let n=new Map,r=t?.find(({key:e})=>e===`geo`)?.value,i=(r&&JSON.parse(r)?.columns)??{};for(let[e,t]of Object.entries(i)){if(t.encoding!==`WKB`)continue;let r=t.edges===`spherical`?`GEOGRAPHY`:`GEOMETRY`,i=t.crs?.id??t.crs?.ids?.[0],a=i?`${i.authority}:${i.code.toString()}`:void 0;n.set(e,{type:r,crs:a})}for(let t=1;t<e.length;t++){let r=e[t],{logical_type:i,name:a,num_children:o,repetition_type:s,type:c}=r;if(o){t+=o;continue}c===`BYTE_ARRAY`&&i===void 0&&s!==`REPEATED`&&(r.logical_type=n.get(a))}}var ps=n((()=>{}));function ms(e){return e&&Cs.decode(e)}async function hs(e,{parsers:t,initialFetchSize:n=Ss,geoparquet:r=!0}={}){if(!e||!(e.byteLength>=0))throw Error(`parquet expected AsyncBuffer`);let i=Math.max(0,e.byteLength-n),a=await e.slice(i,e.byteLength),o=new DataView(a);if(o.getUint32(a.byteLength-4,!0)!==827474256)throw Error(`parquet file invalid (footer != PAR1)`);let s=o.getUint32(a.byteLength-8,!0);if(s>e.byteLength-8)throw Error(`parquet metadata length ${s} exceeds available buffer ${e.byteLength-8}`);if(s+8>n){let n=e.byteLength-s-8,o=await e.slice(n,i),c=new ArrayBuffer(s+8),l=new Uint8Array(c);return l.set(new Uint8Array(o)),l.set(new Uint8Array(a),i-n),gs(c,{parsers:t,geoparquet:r})}else return gs(a,{parsers:t,geoparquet:r})}function gs(e,{parsers:t,geoparquet:n=!0}={}){if(!(e instanceof ArrayBuffer))throw Error(`parquet expected ArrayBuffer`);let r=new DataView(e);if(t={...Ko,...t},r.byteLength<8)throw Error(`parquet file is too short`);if(r.getUint32(r.byteLength-4,!0)!==827474256)throw Error(`parquet file invalid (footer != PAR1)`);let i=r.byteLength-8,a=r.getUint32(i,!0);if(a>r.byteLength-8)throw Error(`parquet metadata length ${a} exceeds available buffer ${r.byteLength-8}`);let o=rs({view:r,offset:i-a}),s=o.field_1,c=o.field_2.map(e=>({type:Eo[e.field_1],type_length:e.field_2,repetition_type:Oo[e.field_3],name:ms(e.field_4),num_children:e.field_5,converted_type:ko[e.field_6],scale:e.field_7,precision:e.field_8,field_id:e.field_9,logical_type:vs(e.field_10)})),l=c.filter(e=>e.type),u=o.field_3,d=o.field_4.map(e=>({columns:e.field_1.map((e,n)=>({file_path:ms(e.field_1),file_offset:e.field_2,meta_data:e.field_3&&{type:Eo[e.field_3.field_1],encodings:e.field_3.field_2?.map(e=>Do[e]),path_in_schema:e.field_3.field_3.map(ms),codec:Ao[e.field_3.field_4],num_values:e.field_3.field_5,total_uncompressed_size:e.field_3.field_6,total_compressed_size:e.field_3.field_7,key_value_metadata:e.field_3.field_8?.map(e=>({key:ms(e.field_1),value:ms(e.field_2)})),data_page_offset:e.field_3.field_9,index_page_offset:e.field_3.field_10,dictionary_page_offset:e.field_3.field_11,statistics:bs(e.field_3.field_12,l[n],t),encoding_stats:e.field_3.field_13?.map(e=>({page_type:jo[e.field_1],encoding:Do[e.field_2],count:e.field_3})),bloom_filter_offset:e.field_3.field_14,bloom_filter_length:e.field_3.field_15,size_statistics:e.field_3.field_16&&{unencoded_byte_array_data_bytes:e.field_3.field_16.field_1,repetition_level_histogram:e.field_3.field_16.field_2,definition_level_histogram:e.field_3.field_16.field_3},geospatial_statistics:e.field_3.field_17&&{bbox:e.field_3.field_17.field_1&&{xmin:e.field_3.field_17.field_1.field_1,xmax:e.field_3.field_17.field_1.field_2,ymin:e.field_3.field_17.field_1.field_3,ymax:e.field_3.field_17.field_1.field_4,zmin:e.field_3.field_17.field_1.field_5,zmax:e.field_3.field_17.field_1.field_6,mmin:e.field_3.field_17.field_1.field_7,mmax:e.field_3.field_17.field_1.field_8},geospatial_types:e.field_3.field_17.field_2}},offset_index_offset:e.field_4,offset_index_length:e.field_5,column_index_offset:e.field_6,column_index_length:e.field_7,crypto_metadata:e.field_8,encrypted_column_metadata:e.field_9})),total_byte_size:e.field_2,num_rows:e.field_3,sorting_columns:e.field_4?.map(e=>({column_idx:e.field_1,descending:e.field_2,nulls_first:e.field_3})),file_offset:e.field_5,total_compressed_size:e.field_6,ordinal:e.field_7})),f=o.field_5?.map(e=>({key:ms(e.field_1),value:ms(e.field_2)})),p=ms(o.field_6);return n&&fs(c,f),{version:s,schema:c,num_rows:u,row_groups:d,key_value_metadata:f,created_by:p,metadata_length:a}}function _s({schema:e}){return Yo(e,[])[0]}function vs(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:ys(e.field_7.field_2)}:e?.field_8?{type:`TIMESTAMP`,isAdjustedToUTC:e.field_8.field_1,unit:ys(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:ms(e.field_17.field_1)}:e?.field_18?{type:`GEOGRAPHY`,crs:ms(e.field_18.field_1),algorithm:Mo[e.field_18.field_2]}:e}function ys(e){if(e.field_1)return`MILLIS`;if(e.field_2)return`MICROS`;if(e.field_3)return`NANOS`;throw Error(`parquet time unit required`)}function bs(e,t,n){return e&&{max:xs(e.field_1,t,n),min:xs(e.field_2,t,n),null_count:e.field_3,distinct_count:e.field_4,max_value:xs(e.field_5,t,n),min_value:xs(e.field_6,t,n),is_max_value_exact:e.field_7,is_min_value_exact:e.field_8}}function xs(e,t,n){let{type:r,converted_type:i,logical_type:a}=t;if(e===void 0)return e;if(r===`BOOLEAN`)return e[0]===1;if(r===`BYTE_ARRAY`)return n.stringFromBytes(e);let o=new DataView(e.buffer,e.byteOffset,e.byteLength);return r===`FLOAT`&&o.byteLength===4?o.getFloat32(0,!0):r===`DOUBLE`&&o.byteLength===8?o.getFloat64(0,!0):r===`INT32`&&i===`DATE`?n.dateFromDays(o.getInt32(0,!0)):r===`INT64`&&i===`TIMESTAMP_MILLIS`?n.timestampFromMilliseconds(o.getBigInt64(0,!0)):r===`INT64`&&i===`TIMESTAMP_MICROS`?n.timestampFromMicroseconds(o.getBigInt64(0,!0)):r===`INT64`&&a?.type===`TIMESTAMP`&&a?.unit===`NANOS`?n.timestampFromNanoseconds(o.getBigInt64(0,!0)):r===`INT64`&&a?.type===`TIMESTAMP`&&a?.unit===`MICROS`?n.timestampFromMicroseconds(o.getBigInt64(0,!0)):r===`INT64`&&a?.type===`TIMESTAMP`?n.timestampFromMilliseconds(o.getBigInt64(0,!0)):r===`INT32`&&o.byteLength===4?o.getInt32(0,!0):r===`INT64`&&o.byteLength===8?o.getBigInt64(0,!0):i===`DECIMAL`?Ho(e)*10**-(t.scale||0):a?.type===`FLOAT16`?Wo(e):e}var Ss,Cs,ws=n((()=>{No(),qo(),ns(),ds(),ps(),Ss=1<<19,Cs=new TextDecoder}));function Ts(e,t){let n=1e4;for(let r=0;r<t.length;r+=n)e.push(...t.slice(r,r+n))}function Es(e,t,n=!0){if(n?e===t:e==t)return!0;if(e instanceof Uint8Array&&t instanceof Uint8Array)return Es(Array.from(e),Array.from(t),n);if(!e||!t||typeof e!=typeof t)return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!Es(e[r],t[r],n))return!1;return!0}if(typeof e!=`object`)return!1;let r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let i of r)if(!Es(e[i],t[i],n))return!1;return!0}function Ds(e){if(!e)return[];if(e.length===1)return e[0];let t=[];for(let n of e)Ts(t,n);return t}var Os=n((()=>{}));function ks({rowGroup:e,physicalColumns:t,filter:n,strict:r=!0}){if(!n)return!1;if(`$and`in n&&Array.isArray(n.$and))return n.$and.some(n=>ks({rowGroup:e,physicalColumns:t,filter:n,strict:r}));if(`$or`in n&&Array.isArray(n.$or))return n.$or.every(n=>ks({rowGroup:e,physicalColumns:t,filter:n,strict:r}));if(`$nor`in n&&Array.isArray(n.$nor))return!1;for(let[i,a]of Object.entries(n)){let n=t.indexOf(i);if(n===-1)continue;let o=e.columns[n].meta_data?.statistics;if(!o)continue;let{min:s,max:c,min_value:l,max_value:u}=o,d=l===void 0?s:l,f=u===void 0?c:u;if(!(d===void 0||f===void 0)){for(let[e,t]of Object.entries(a||{}))if(e===`$gt`&&f<=t||e===`$gte`&&f<t||e===`$lt`&&d>=t||e===`$lte`&&d>t||e===`$eq`&&(t<d||t>f)||e===`$ne`&&Es(d,f,r)&&Es(d,t,r)||e===`$in`&&Array.isArray(t)&&t.every(e=>e<d||e>f)||e===`$nin`&&Array.isArray(t)&&Es(d,f,r)&&t.includes(d))return!0}}return!1}var As=n((()=>{Os()}));function js({metadata:e,rowStart:t=0,rowEnd:n=1/0,columns:r,filter:i,filterStrict:a=!0,useOffsetIndex:o=!1}){if(!e)throw Error(`parquetPlan requires metadata`);let s=[],c=[],l=[],u=Xo(_s(e)),d=0;for(let f of e.row_groups){let e=Number(f.num_rows),p=d+e;if(e>0&&p>t&&d<n&&!ks({rowGroup:f,physicalColumns:u,filter:i,strict:a})){let i=[],a=1/0,u=-1/0;for(let e of f.columns){let t=e.meta_data;if(e.file_path)throw Error(`parquet file_path not supported`);if(!t)throw Error(`parquet column metadata is undefined`);if(!r||r.includes(t.path_in_schema[0])){let n=t.dictionary_page_offset||t.data_page_offset,r=Number(n),s=Number(n+t.total_compressed_size);if(r<a&&(a=r),s>u&&(u=s),o&&e.offset_index_offset&&e.offset_index_length){let n=Number(e.offset_index_offset);i.push({columnMetadata:t,offsetIndex:{startByte:n,endByte:n+e.offset_index_length},bounds:{startByte:r,endByte:s}})}else i.push({columnMetadata:t,range:{startByte:r,endByte:s}})}}let p=Math.max(t-d,0),m=Math.min(n-d,e);s.push({chunks:i,rowGroup:f,groupStart:d,groupRows:e,selectStart:p,selectEnd:m});let h;for(let e of i)if(`offsetIndex`in e)l.push(e.offsetIndex);else{let{range:t}=e;r?c.push(t):h&&t.endByte-h.startByte<=Ns?h.endByte=t.endByte:(h&&c.push(h),h={...t})}h&&c.push(h)}d=p}return isFinite(n)||(n=d),c.push(...l),{metadata:e,rowStart:t,rowEnd:n,columns:r,fetches:c,groups:s}}function Ms(e,{fetches:t}){let n=t.map(({startByte:t,endByte:n})=>e.slice(t,n));return{byteLength:e.byteLength,slice(r,i=e.byteLength){let a=t.findIndex(({startByte:e,endByte:t})=>e<=r&&i<=t);if(a<0)return e.slice(r,i);if(t[a].startByte!==r||t[a].endByte!==i){let e=r-t[a].startByte,o=i-t[a].startByte;return n[a]instanceof Promise?n[a].then(t=>t.slice(e,o)):n[a].slice(e,o)}else return n[a]}}}var Ns,Ps=n((()=>{As(),ws(),ns(),Ns=1<<21}));function Fs(e,t=Ko){if(Array.isArray(e))return e.map(e=>Fs(e,t));if(typeof e!=`object`)return e;if(`metadata`in e){let n=Rs(e.metadata),r=e.typed_value&&Is(e.typed_value,n,t),i=e.value&&Bs(Ls(e.value),n,t);return r&&i?{...i,...r}:r??i}return e}function Is(e,t,n){if(e&&typeof e==`object`&&!Array.isArray(e)&&!(e instanceof Uint8Array)){if(`typed_value`in e)return Is(e.typed_value,t,n);if(`value`in e&&e.value instanceof Uint8Array)return Bs(Ls(e.value),t,n);let r={};for(let[i,a]of Object.entries(e))r[i]=Is(a,t,n);return r}return e instanceof Uint8Array?Bs(Ls(e),t,n):Array.isArray(e)?e.map(e=>Is(e,t,n)):e}function Ls(e){return{view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0}}function Rs(e){let t=qs.get(e.buffer);t||(t=new Map,qs.set(e.buffer,t));let n=`${e.byteOffset}:${e.byteLength}`,r=t.get(n);if(r)return r;let i=Ls(e),a=i.view.getUint8(i.offset++),o=a&15;if(o!==1)throw Error(`parquet unsupported variant metadata version: ${o}`);let s=(a>>4&1)==1,c=(a>>6&3)+1,l=zs(i,c),u=Array(l+1);for(let e=0;e<u.length;e++)u[e]=zs(i,c);let d=i.offset,f=Array(l);for(let t=0;t<l;t++){let n=u[t],r=u[t+1],i=new Uint8Array(e.buffer,e.byteOffset+d+n,r-n);f[t]=Ks.decode(i)}let p={dictionary:f,sorted:s};return t.set(n,p),p}function zs(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 Bs(e,t,n){let r=e.view.getUint8(e.offset++),i=r&3,a=r>>2;if(i===0)return Vs(e,a,n);if(i===2)return Hs(e,a,t,n);if(i===3)return Us(e,a,t,n);let o=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,a);return e.offset+=a,Ks.decode(o)}function Vs(e,t,n){switch(t){case 0:return null;case 1:return!0;case 2:return!1;case 3:{let t=e.view.getInt8(e.offset);return e.offset+=1,t}case 4:{let t=e.view.getInt16(e.offset,!0);return e.offset+=2,t}case 5:{let t=e.view.getInt32(e.offset,!0);return e.offset+=4,t}case 6:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,t}case 7:{let t=e.view.getFloat64(e.offset,!0);return e.offset+=8,t}case 8:return Ws(e,4);case 9:return Ws(e,8);case 10:return Ws(e,16);case 11:{let t=e.view.getInt32(e.offset,!0);return e.offset+=4,n.dateFromDays(t)}case 12:case 13:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,n.timestampFromMicroseconds(t)}case 14:{let t=e.view.getFloat32(e.offset,!0);return e.offset+=4,t}case 15:return Gs(e);case 16:{let t=Gs(e);return Ks.decode(t)}case 17:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,t}case 18:case 19:{let t=e.view.getBigInt64(e.offset,!0);return e.offset+=8,n.timestampFromNanoseconds(t)}case 20:{let t=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,16);e.offset+=16;let n=Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``);return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}default:throw Error(`parquet unsupported variant primitive type: ${t}`)}}function Hs(e,t,n,r){let i=(t&3)+1,a=(t>>2&3)+1,o=t>>4&1?zs(e,4):e.view.getUint8(e.offset++),s=Array(o);for(let t=0;t<o;t++)s[t]=zs(e,a);let c=Array(o+1);for(let t=0;t<c.length;t++)c[t]=zs(e,i);let l={};for(let t=0;t<o;t++){let i=n.dictionary[s[t]];l[i]=Bs({view:e.view,offset:e.offset+c[t]},n,r)}return e.offset+=c[c.length-1],l}function Us(e,t,n,r){let i=t&3,a=t>>2&1,o=i+1,s=zs(e,a?4:1),c=Array(s+1);for(let t=0;t<c.length;t++)c[t]=zs(e,o);let l=e.offset,u=Array(s);for(let t=0;t<s;t++)u[t]=Bs({view:e.view,offset:l+c[t]},n,r);return e.offset=l+c[c.length-1],u}function Ws(e,t){let 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{let t=e.view.getBigUint64(e.offset,!0);r=e.view.getBigInt64(e.offset+8,!0)<<64n|t,e.offset+=16}return Number(r)*10**-n}function Gs(e){let t=e.view.getUint32(e.offset,!0);e.offset+=4;let n=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t,n}var Ks,qs,Js=n((()=>{qo(),Ks=new TextDecoder,qs=new WeakMap}));function Ys(e,t,n,r,i){let a=Qo(i);if(!t?.length&&!n.length){if(!a||!r.length)return r;t=Array(r.length).fill(a)}let o=t?.length||n.length,s=i.map(({element:e})=>e.repetition_type),c=0,l=[e],u=e,d=0,f=0,p=0;if(n[0])for(;d<s.length-2&&p<n[0];)d++,s[d]!==`REQUIRED`&&(u=u.at(-1),l.push(u),f++),s[d]===`REPEATED`&&p++;for(let e=0;e<o;e++){let i=t?.length?t[e]:a,o=n[e];for(;d&&(o<p||s[d]!==`REPEATED`);)s[d]!==`REQUIRED`&&(l.pop(),f--),s[d]===`REPEATED`&&p--,d--;for(u=l.at(-1);(d<s.length-2||s[d+1]===`REPEATED`)&&(f<i||s[d+1]===`REQUIRED`);){if(d++,s[d]!==`REQUIRED`){let e=[];u.push(e),u=e,l.push(e),f++}s[d]===`REPEATED`&&p++}i===a?u.push(r[c++]):d===s.length-2?u.push(null):u.push([])}if(!e.length)for(let e=0;e<a;e++){let e=[];u.push(e),u=e}return e}function Xs(e,t,n,r=0){let i=t.path.join(`.`),a=t.element.repetition_type===`OPTIONAL`,o=a?r+1:r;if($o(t)){let s=t.children[0],c=o;s.children.length===1&&(s=s.children[0],c++),Xs(e,s,n,c);let l=s.path.join(`.`),u=e.get(l);if(!u)throw Error(`parquet list column missing values`);a&&Zs(u,r),e.set(i,u),e.delete(l);return}if(es(t)){let s=t.children[0].element.name;Xs(e,t.children[0].children[0],n,o+1),Xs(e,t.children[0].children[1],n,o+1);let c=e.get(`${i}.${s}.key`),l=e.get(`${i}.${s}.value`);if(!c)throw Error(`parquet map column missing keys`);if(!l)throw Error(`parquet map column missing values`);if(c.length!==l.length)throw Error(`parquet map column key/value length mismatch`);let u=Qs(c,l,o);a&&Zs(u,r),e.delete(`${i}.${s}.key`),e.delete(`${i}.${s}.value`),e.set(i,u);return}if(t.children.length){let o=t.element.repetition_type===`REQUIRED`?r:r+1,s={};for(let r of t.children){Xs(e,r,n,o);let t=e.get(r.path.join(`.`));if(!t)throw Error(`parquet struct missing child data`);s[r.element.name]=t}for(let n of t.children)e.delete(n.path.join(`.`));let c=$s(s,o);t.element.logical_type?.type===`VARIANT`&&(c=Fs(c,n)),a&&Zs(c,r),e.set(i,c)}}function Zs(e,t){for(let n=0;n<e.length;n++)t?Zs(e[n],t-1):e[n]=e[n][0]}function Qs(e,t,n){let r=[];for(let i=0;i<e.length;i++)if(n)r.push(Qs(e[i],t[i],n-1));else if(e[i]){let n={};for(let r=0;r<e[i].length;r++){let a=t[i][r];n[e[i][r]]=a===void 0?null:a}r.push(n)}else r.push(void 0);return r}function $s(e,t){let n=Object.keys(e),r=e[n[0]]?.length,i=[];for(let a=0;a<r;a++){let o={};for(let t of n){if(e[t].length!==r)throw Error(`parquet struct parsing error`);o[t]=e[t][a]}t?i.push($s(o,t-1)):i.push(o)}return i}var ec=n((()=>{ns(),Js()}));function tc(e,t,n){let r=n instanceof Int32Array,i=as(e),a=as(e);as(e);let o=cs(e),s=0;n[s++]=r?Number(o):o;let c=i/a;for(;s<t;){let i=cs(e),l=new Uint8Array(a);for(let t=0;t<a;t++)l[t]=e.view.getUint8(e.offset++);for(let u=0;u<a&&s<t;u++){let a=BigInt(l[u]);if(a){let l=0n,u=c,d=(1n<<a)-1n;for(;u&&s<t;){let t=BigInt(e.view.getUint8(e.offset))>>l&d;for(l+=a;l>=8;)l-=8n,e.offset++,l&&(t|=BigInt(e.view.getUint8(e.offset))<<a-l&d);let c=i+t;o+=c,n[s++]=r?Number(o):o,u--}u&&(e.offset+=Math.ceil((u*Number(a)+Number(l))/8))}else for(let e=0;e<c&&s<t;e++)o+=i,n[s++]=r?Number(o):o}}}function nc(e,t,n){let r=new Int32Array(t);tc(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 rc(e,t,n){let r=new Int32Array(t);tc(e,t,r);let i=new Int32Array(t);tc(e,t,i);for(let a=0;a<t;a++){let t=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,i[a]);r[a]?(n[a]=new Uint8Array(r[a]+i[a]),n[a].set(n[a-1].subarray(0,r[a])),n[a].set(t,r[a])):n[a]=t,e.offset+=i[a]}}var ic=n((()=>{ds()}));function ac(e){return 32-Math.clz32(e)}function oc(e,t,n,r){r===void 0&&(r=e.view.getUint32(e.offset,!0),e.offset+=4);let i=e.offset,a=0;for(;a<n.length;){let r=as(e);if(r&1)a=cc(e,r,t,n,a);else{let i=r>>>1;sc(e,i,t,n,a),a+=i}}e.offset=i+r}function sc(e,t,n,r,i){let a=n+7>>3,o=0;for(let t=0;t<a;t++)o|=e.view.getUint8(e.offset++)<<(t<<3);for(let e=0;e<t;e++)r[i+e]=o}function cc(e,t,n,r,i){let a=t>>1<<3,o=(1<<n)-1,s=0;if(e.offset<e.view.byteLength)s=e.view.getUint8(e.offset++);else if(o)throw Error(`parquet bitpack offset ${e.offset} out of range`);let c=8,l=0;for(;a;)l>8?(l-=8,c-=8,s>>>=8):c-l<n?(s|=e.view.getUint8(e.offset)<<c,e.offset++,c+=8):(i<r.length&&(r[i++]=s>>l&o),a--,l+=n);return i}function lc(e,t,n,r){let i=uc(n,r),a=new Uint8Array(t*i);for(let n=0;n<i;n++)for(let r=0;r<t;r++)a[r*i+n]=e.view.getUint8(e.offset++);if(n===`FLOAT`)return new Float32Array(a.buffer);if(n===`DOUBLE`)return new Float64Array(a.buffer);if(n===`INT32`)return new Int32Array(a.buffer);if(n===`INT64`)return new BigInt64Array(a.buffer);if(n===`FIXED_LEN_BYTE_ARRAY`){let e=Array(t);for(let n=0;n<t;n++)e[n]=a.subarray(n*i,(n+1)*i);return e}throw Error(`parquet byte_stream_split unsupported type: ${n}`)}function uc(e,t){switch(e){case`INT32`:case`FLOAT`:return 4;case`INT64`:case`DOUBLE`:return 8;case`FIXED_LEN_BYTE_ARRAY`:if(!t)throw Error(`parquet byteWidth missing type_length`);return t;default:throw Error(`parquet unsupported type: ${e}`)}}var dc=n((()=>{ds()}));function fc(e,t,n,r){if(n===0)return[];if(t===`BOOLEAN`)return pc(e,n);if(t===`INT32`)return mc(e,n);if(t===`INT64`)return hc(e,n);if(t===`INT96`)return gc(e,n);if(t===`FLOAT`)return _c(e,n);if(t===`DOUBLE`)return vc(e,n);if(t===`BYTE_ARRAY`)return yc(e,n);if(t===`FIXED_LEN_BYTE_ARRAY`){if(!r)throw Error(`parquet missing fixed length`);return bc(e,n,r)}else throw Error(`parquet unhandled type: ${t}`)}function pc(e,t){let n=Array(t);for(let r=0;r<t;r++){let t=e.offset+(r/8|0),i=r%8;n[r]=(e.view.getUint8(t)&1<<i)!=0}return e.offset+=Math.ceil(t/8),n}function mc(e,t){let n=(e.view.byteOffset+e.offset)%4?new Int32Array(xc(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 hc(e,t){let n=(e.view.byteOffset+e.offset)%8?new BigInt64Array(xc(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 gc(e,t){let n=Array(t);for(let r=0;r<t;r++){let t=e.view.getBigInt64(e.offset+r*12,!0),i=e.view.getInt32(e.offset+r*12+8,!0);n[r]=BigInt(i)<<64n|t}return e.offset+=t*12,n}function _c(e,t){let n=(e.view.byteOffset+e.offset)%4?new Float32Array(xc(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 vc(e,t){let n=(e.view.byteOffset+e.offset)%8?new Float64Array(xc(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 yc(e,t){let n=Array(t);for(let r=0;r<t;r++){let t=e.view.getUint32(e.offset,!0);e.offset+=4,n[r]=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t),e.offset+=t}return n}function bc(e,t,n){let r=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 xc(e,t,n){let r=new ArrayBuffer(n);return new Uint8Array(r).set(new Uint8Array(e,t,n)),r}var Sc=n((()=>{}));function Cc(e,t,n,r,i){for(let a=0;a<i;a++)n[r+a]=e[t+a]}function wc(e,t){let n=e.byteLength,r=t.byteLength,i=0,a=0;for(;i<n;){let t=e[i];if(i++,t<128)break}if(r&&i>=n)throw Error(`invalid snappy length header`);for(;i<n;){let r=e[i],o=0;if(i++,i>=n)throw Error(`missing eof marker`);if(r&3){let s=0;switch(r&3){case 1:o=(r>>>2&7)+4,s=e[i]+(r>>>5<<8),i++;break;case 2:if(n<=i+1)throw Error(`snappy error end of input`);o=(r>>>2)+1,s=e[i]+(e[i+1]<<8),i+=2;break;case 3:if(n<=i+3)throw Error(`snappy error end of input`);o=(r>>>2)+1,s=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+(e[i+3]<<24),i+=4;break;default:break}if(s===0||isNaN(s))throw Error(`invalid offset ${s} pos ${i} inputLength ${n}`);if(s>a)throw Error(`cannot copy from before start of buffer`);Cc(t,a-s,t,a,o),a+=o}else{let o=(r>>>2)+1;if(o>60){if(i+3>=n)throw Error(`snappy error literal pos + 3 >= inputLength`);let t=o-60;o=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+(e[i+3]<<24),o=(o&Tc[t])+1,i+=t}if(i+o>n)throw Error(`snappy error literal exceeds input length`);Cc(e,i,t,a,o),i+=o,a+=o}}if(a!==r)throw Error(`premature end of input`)}var Tc,Ec=n((()=>{Tc=[0,255,65535,16777215,4294967295]}));function Dc(e,t,{type:n,element:r,schemaPath:i}){let a=new DataView(e.buffer,e.byteOffset,e.byteLength),o={view:a,offset:0},s,c=Oc(o,t,i),{definitionLevels:l,numNulls:u}=kc(o,t,i),d=t.num_values-u;if(t.encoding===`PLAIN`)s=fc(o,n,d,r.type_length);else if(t.encoding===`PLAIN_DICTIONARY`||t.encoding===`RLE_DICTIONARY`||t.encoding===`RLE`){let e=n===`BOOLEAN`?1:a.getUint8(o.offset++);e?(s=Array(d),n===`BOOLEAN`?(oc(o,e,s),s=s.map(e=>!!e)):oc(o,e,s,a.byteLength-o.offset)):s=new Uint8Array(d)}else if(t.encoding===`BYTE_STREAM_SPLIT`)s=lc(o,d,n,r.type_length);else if(t.encoding===`DELTA_BINARY_PACKED`)s=n===`INT32`?new Int32Array(d):new BigInt64Array(d),tc(o,d,s);else if(t.encoding===`DELTA_LENGTH_BYTE_ARRAY`)s=Array(d),nc(o,d,s);else throw Error(`parquet unsupported encoding: ${t.encoding}`);return{definitionLevels:l,repetitionLevels:c,dataPage:s}}function Oc(e,t,n){if(n.length>1){let r=Zo(n);if(r){let n=Array(t.num_values);return oc(e,ac(r),n),n}}return[]}function kc(e,t,n){let r=Qo(n);if(!r)return{definitionLevels:[],numNulls:0};let i=Array(t.num_values);oc(e,ac(r),i);let a=t.num_values;for(let e of i)e===r&&a--;return a===0&&(i.length=0),{definitionLevels:i,numNulls:a}}function Ac(e,t,n,r){let i,a=r?.[n];if(n===`UNCOMPRESSED`)i=e;else if(a)i=a(e,t);else if(n===`SNAPPY`)i=new Uint8Array(t),wc(e,i);else throw Error(`parquet unsupported compression codec: ${n}`);if(i?.length!==t)throw Error(`parquet decompressed page length ${i?.length} does not match header ${t}`);return i}function jc(e,t,n){let r={view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0},{type:i,element:a,schemaPath:o,codec:s,compressors:c}=n,l=t.data_page_header_v2;if(!l)throw Error(`parquet data page header v2 is undefined`);let u=Mc(r,l,o);r.offset=l.repetition_levels_byte_length;let d=Nc(r,l,o),f=t.uncompressed_page_size-l.definition_levels_byte_length-l.repetition_levels_byte_length,p=e.subarray(r.offset);l.is_compressed!==!1&&(p=Ac(p,f,s,c));let m=new DataView(p.buffer,p.byteOffset,p.byteLength),h={view:m,offset:0},g,_=l.num_values-l.num_nulls;if(l.encoding===`PLAIN`)g=fc(h,i,_,a.type_length);else if(l.encoding===`RLE`)g=Array(_),oc(h,1,g),g=g.map(e=>!!e);else if(l.encoding===`PLAIN_DICTIONARY`||l.encoding===`RLE_DICTIONARY`){let e=m.getUint8(h.offset++);g=Array(_),oc(h,e,g,f-1)}else if(l.encoding===`DELTA_BINARY_PACKED`)g=i===`INT32`?new Int32Array(_):new BigInt64Array(_),tc(h,_,g);else if(l.encoding===`DELTA_LENGTH_BYTE_ARRAY`)g=Array(_),nc(h,_,g);else if(l.encoding===`DELTA_BYTE_ARRAY`)g=Array(_),rc(h,_,g);else if(l.encoding===`BYTE_STREAM_SPLIT`)g=lc(h,_,i,a.type_length);else throw Error(`parquet unsupported encoding: ${l.encoding}`);return{definitionLevels:d,repetitionLevels:u,dataPage:g}}function Mc(e,t,n){let r=Zo(n);if(!r)return[];let i=Array(t.num_values);return oc(e,ac(r),i,t.repetition_levels_byte_length),i}function Nc(e,t,n){let r=Qo(n);if(r){let n=Array(t.num_values);return oc(e,ac(r),n,t.definition_levels_byte_length),n}}var Pc=n((()=>{ic(),dc(),Sc(),ns(),Ec()}));function Fc(e,{groupStart:t,selectStart:n,selectEnd:r},i,a){let{pathInSchema:o,schemaPath:s}=i,c=ts(s),l=[],u,d,f=0,p=0,m=a&&(()=>{d&&a({pathInSchema:o,columnData:d,rowStart:t+f-d.length,rowEnd:t+f})});for(;(c?f<r:e.offset<e.view.byteLength-1)&&!(e.offset>=e.view.byteLength-1);){let t=Lc(e);if(t.type===`DICTIONARY_PAGE`){let{data:n}=Ic(e,t,i,u,void 0,0);n&&(u=Vo(n,i))}else{let r=d?.length||0,a=Ic(e,t,i,u,d,n-f);a.skipped?(l.length||(p+=a.skipped),f+=a.skipped):a.data&&d===a.data?f+=a.data.length-r:a.data&&a.data.length&&(m?.(),l.push(a.data),f+=a.data.length,d=a.data)}}return m?.(),{data:l,skipped:p}}function Ic(e,t,n,r,i,a){let{type:o,element:s,schemaPath:c,codec:l,compressors:u}=n,d=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`){let e=t.data_page_header;if(!e)throw Error(`parquet data page header is undefined`);if(a>e.num_values&&ts(c))return{skipped:e.num_values};let{definitionLevels:o,repetitionLevels:s,dataPage:f}=Dc(Ac(d,Number(t.uncompressed_page_size),l,u),e,n),p=Bo(f,r,e.encoding,n);return{skipped:0,data:Ys(Array.isArray(i)?i:[],o,s,p,c)}}else if(t.type===`DATA_PAGE_V2`){let e=t.data_page_header_v2;if(!e)throw Error(`parquet data page header v2 is undefined`);if(a>e.num_rows)return{skipped:e.num_values};let{definitionLevels:o,repetitionLevels:s,dataPage:l}=jc(d,t,n),u=Bo(l,r,e.encoding,n);return{skipped:0,data:Ys(Array.isArray(i)?i:[],o,s,u,c)}}else if(t.type===`DICTIONARY_PAGE`){let e=t.dictionary_page_header;if(!e)throw Error(`parquet dictionary page header is undefined`);let n=Ac(d,Number(t.uncompressed_page_size),l,u);return{skipped:0,data:fc({view:new DataView(n.buffer,n.byteOffset,n.byteLength),offset:0},o,e.num_values,s.type_length)}}else throw Error(`parquet unsupported page type: ${t.type}`)}function Lc(e){let t=rs(e);return{type:jo[t.field_1],uncompressed_page_size:t.field_2,compressed_page_size:t.field_3,crc:t.field_4,data_page_header:t.field_5&&{num_values:t.field_5.field_1,encoding:Do[t.field_5.field_2],definition_level_encoding:Do[t.field_5.field_3],repetition_level_encoding:Do[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}},index_page_header:t.field_6,dictionary_page_header:t.field_7&&{num_values:t.field_7.field_1,encoding:Do[t.field_7.field_2],is_sorted:t.field_7.field_3},data_page_header_v2: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:Do[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}}}var Rc=n((()=>{ec(),No(),qo(),Pc(),Sc(),ns(),ds()}));function zc(e){let t=rs(e);return{page_locations:t.field_1.map(Bc),unencoded_byte_array_data_bytes:t.field_2}}function Bc(e){return{offset:e.field_1,compressed_page_size:e.field_2,first_row_index:e.field_3}}var Vc=n((()=>{ds()}));function Hc(e,{metadata:t},n){let{file:r,compressors:i,utf8:a}=e,o=[],s={...Ko,...e.parsers};for(let c of n.chunks){let{columnMetadata:l}=c,u=Yo(t.schema,l.path_in_schema),d={pathInSchema:l.path_in_schema,type:l.type,element:u[u.length-1].element,schemaPath:u,codec:l.codec,parsers:s,compressors:i,utf8:a};if(!(`offsetIndex`in c)){o.push({pathInSchema:l.path_in_schema,data:Promise.resolve(r.slice(c.range.startByte,c.range.endByte)).then(t=>Fc({view:new DataView(t),offset:0},n,d,e.onPage))});continue}o.push({pathInSchema:l.path_in_schema,data:Promise.resolve(r.slice(c.offsetIndex.startByte,c.offsetIndex.endByte)).then(async t=>{let i=zc({view:new DataView(t),offset:0}),{selectStart:a,selectEnd:o}=n,s=i.page_locations,c=NaN,l=NaN,u=0;for(let e=0;e<s.length;e++){let t=s[e],r=Number(t.first_row_index),i=e+1<s.length?Number(s[e+1].first_row_index):n.groupRows;r<o&&i>a&&(Number.isNaN(c)&&(c=Number(t.offset),u=r),l=Number(t.offset)+t.compressed_page_size)}let f=await r.slice(c,l),{data:p,skipped:m}=Fc({view:new DataView(f),offset:0},u?{...n,groupStart:n.groupStart+u,selectStart:n.selectStart-u,selectEnd:n.selectEnd-u}:n,d,e.onPage);return{data:p,skipped:u+m}})})}return{groupStart:n.groupStart,groupRows:n.groupRows,asyncColumns:o}}function Uc(e,t,n){let{asyncColumns:r}=e;n={...Ko,...n};let i=[];for(let e of t.children)if(e.children.length){let t=r.filter(t=>t.pathInSchema[0]===e.element.name);if(!t.length)continue;let a=new Map,o=Promise.all(t.map(e=>e.data.then(({data:t})=>{a.set(e.pathInSchema.join(`.`),Ds(t))}))).then(()=>{Xs(a,e,n);let t=a.get(e.path.join(`.`));if(!t)throw Error(`parquet column data not assembled`);return{data:[t],skipped:0}});i.push({pathInSchema:e.path,data:o})}else{let t=r.find(t=>t.pathInSchema[0]===e.element.name);t&&i.push(t)}return{...e,asyncColumns:i}}var Wc=n((()=>{ec(),Rc(),qo(),Vc(),ns(),Os()})),Gc=r({parquetRead:()=>Zc,parquetReadObjects:()=>Qc});function Kc(e){if(!e.metadata)throw Error(`parquet requires metadata`);let t=js(e);return e.file=Ms(e.file,t),t.groups.map(n=>Hc(e,t,n))}function qc(e){if(!e)return[];if(e.length===1)return e[0];let t=0;for(let n of e)t+=n.length;let n=Array(t),r=0;for(let t of e){for(let e=0;e<t.length;e++)n[r+e]=t[e];r+=t.length}return n}function Jc(e){let t=e.join(``),n=$c.get(t);if(n)return n;let r=e.map((e,t)=>JSON.stringify(e)+`: columnData[`+t+`][row - columnSkipped[`+t+`]]`).join(`,
8
8
  `),i=Function(`groupData`,`selectStart`,`selectCount`,`columnData`,`columnSkipped`,`for (let selectRow = 0; selectRow < selectCount; selectRow++) {
9
9
  const row = selectStart + selectRow;
10
10
  groupData[selectRow] = {
11
11
  `+r+`
12
12
  };
13
13
  }
14
- return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<n;o++){let n=t+o,s={};for(let e=0;e<r.length;e++)s[r[e]]=i[e][n-a[e]];e[o]=s}return e}async function Qc({asyncColumns:e},t,n){let r=await Promise.all(e.map(e=>e.data)),i=e.length,a=Array(i),o=Array(i),s=Array(i);for(let t=0;t<i;t++)a[t]=e[t].pathInSchema[0],o[t]=Yc(r[t].data),s[t]=r[t].skipped;let c=n-t,l=Array(c);return i>nl?Zc(l,t,c,a,o,s):Xc(a)(l,t,c,o,s)}async function $c(e){if(`rowFormat`in e)throw Error(`parquetRead supports only object rows; use rowFormat: "object" implicitly`);if(`filter`in e||`filterStrict`in e)throw Error(`parquetRead does not support filtering`);e.metadata??=await _s(e.file,e);let{rowStart:t=0,rowEnd:n,onChunk:r,onComplete:i}=e,a=Jc(e);if(!i&&!r){for(let{asyncColumns:e}of a)for(let{data:t}of e)await t;return}let o=ys(e.metadata),s=a.map(t=>Gc(t,o,e.parsers));if(r)for(let e of s)for(let t of e.asyncColumns)t.data.then(n=>{let i=e.groupStart+n.skipped;for(let e of n.data)r({columnName:t.pathInSchema[0],columnData:e,rowStart:i,rowEnd:i+e.length}),i+=e.length});if(i){let e=[];for(let r of s)Ds(e,await Qc(r,Math.max(t-r.groupStart,0),Math.min((n??1/0)-r.groupStart,r.groupRows)));i(e)}else for(let{asyncColumns:e}of s)for(let{data:t}of e)await t}function el(e){return new Promise((t,n)=>{$c({...e,onComplete:t}).catch(n)})}var tl,nl,rl=n((()=>{Es(),Is(),Kc(),As(),tl=new Map,nl=200}));async function il(){let{parquetReadObjects:e}=await Promise.resolve().then(()=>(rl(),qc));return e}async function al(e){return await(await il())({file:e instanceof Uint8Array?e.buffer:e})}al.responseType=`arrayBuffer`,To(`parquet`,al);function ol(e,t){function n(){this.constructor=e}n.prototype=t.prototype,e.prototype=new n}function sl(e,t,n,r){this.message=e,this.expected=t,this.found=n,this.location=r,this.name=`SyntaxError`,typeof Error.captureStackTrace==`function`&&Error.captureStackTrace(this,sl)}function cl(e,t){t=t===void 0?{}:t;var n={},r={declaration:mt},i=mt,a=`(`,o=A(`(`,!1),s=`)`,c=A(`)`,!1),l=function(e,t,n,r){return{type:e,name:t,comment:n,fields:r}},u=`simple`,d=A(`simple`,!1),f=`object`,p=A(`object`,!1),m=`table`,h=A(`table`,!1),g=`auto`,_=A(`auto`,!1),v=`primary`,y=A(`primary`,!1),b=`index`,x=A(`index`,!1),S=`unique`,C=A(`unique`,!1),w=function(e,t){return t},T=function(e,t){return e.name&&t.unshift(e),t},E=`#`,ee=A(`#`,!1),te=`;`,ne=A(`;`,!1),re=function(e,t,n){return{type:e,name:t,comment:n}},ie=`[`,ae=A(`[`,!1),oe=`]`,se=A(`]`,!1),ce=function(e,t,n,r){return{type:e,size:t,name:n,comment:r}},le=function(e,t,n,r){return{type:e,vals:t,name:n,comment:r}},ue=`,`,de=A(`,`,!1),fe=function(e,t){return t.unshift(e),t},pe=`int`,me=A(`int`,!1),he=`uint`,ge=A(`uint`,!1),_e=`short`,ve=A(`short`,!1),ye=`ushort`,be=A(`ushort`,!1),D=`byte`,xe=A(`byte`,!1),Se=`ubyte`,Ce=A(`ubyte`,!1),we=`float`,Te=A(`float`,!1),Ee=`char`,De=A(`char`,!1),Oe=`string`,ke=A(`string`,!1),Ae=`lstring`,je=A(`lstring`,!1),Me=`enum`,Ne=A(`enum`,!1),Pe=`double`,Fe=A(`double`,!1),Ie=`bigint`,Le=A(`bigint`,!1),Re=`set`,ze=A(`set`,!1),Be=function(e,t){return e+` `+t},Ve=/^[a-zA-Z_]/,He=ct([[`a`,`z`],[`A`,`Z`],`_`],!1,!1),Ue=/^[a-zA-Z0-9_]/,We=ct([[`a`,`z`],[`A`,`Z`],[`0`,`9`],`_`],!1,!1),Ge=function(e){return st()},Ke=/^[^\n\r]/,qe=ct([`
15
- `,`\r`],!0,!1),Je=function(e){return e.join(``).replace(/^"/,``).replace(/"$/,``)},Ye=ut(`integer`),Xe=/^[0-9]/,Ze=ct([[`0`,`9`]],!1,!1),Qe=function(){return parseInt(st(),10)},$e=ut(`whitespace`),et=/^[ \t\n\r]/,tt=ct([` `,` `,`
16
- `,`\r`],!1,!1),O=0,nt=0,rt=[{line:1,column:1}],it=0,at=[],k=0,ot;if(`startRule`in t){if(!(t.startRule in r))throw Error(`Can't start parsing from rule "`+t.startRule+`".`);i=r[t.startRule]}function st(){return e.substring(nt,O)}function A(e,t){return{type:`literal`,text:e,ignoreCase:t}}function ct(e,t,n){return{type:`class`,parts:e,inverted:t,ignoreCase:n}}function lt(){return{type:`end`}}function ut(e){return{type:`other`,description:e}}function dt(t){var n=rt[t],r;if(n)return n;for(r=t-1;!rt[r];)r--;for(n=rt[r],n={line:n.line,column:n.column};r<t;)e.charCodeAt(r)===10?(n.line++,n.column=1):n.column++,r++;return rt[t]=n,n}function ft(e,t){var n=dt(e),r=dt(t);return{start:{offset:e,line:n.line,column:n.column},end:{offset:t,line:r.line,column:r.column}}}function j(e){O<it||(O>it&&(it=O,at=[]),at.push(e))}function pt(e,t,n){return new sl(sl.buildMessage(e,t),e,t,n)}function mt(){var t=O,r=P(),i,u,d,f,p,m,h,g,_,v,y,b;return r===n?(O=t,t=n):(i=ht(),i===n?(O=t,t=n):(u=P(),u===n?(O=t,t=n):(d=gt(),d===n?(O=t,t=n):(f=P(),f===n?(O=t,t=n):(p=vt(),p===n?(O=t,t=n):(m=P(),m===n?(O=t,t=n):(e.charCodeAt(O)===40?(h=a,O++):(h=n,k===0&&j(o)),h===n?(O=t,t=n):(g=P(),g===n?(O=t,t=n):(_=yt(),_===n?(O=t,t=n):(v=P(),v===n?(O=t,t=n):(e.charCodeAt(O)===41?(y=s,O++):(y=n,k===0&&j(c)),y===n?(O=t,t=n):(b=P(),b===n?(O=t,t=n):(nt=t,r=l(i,d,p,_),t=r))))))))))))),t}function ht(){var t;return e.substr(O,6)===u?(t=u,O+=6):(t=n,k===0&&j(d)),t===n&&(e.substr(O,6)===f?(t=f,O+=6):(t=n,k===0&&j(p)),t===n&&(e.substr(O,5)===m?(t=m,O+=5):(t=n,k===0&&j(h)))),t}function gt(){var t=M(),r,i,a;return t===n&&(t=O,r=M(),r===n?(O=t,t=n):(i=_t(),i===n?(O=t,t=n):(r=[r,i],t=r)),t===n&&(t=O,r=M(),r===n?(O=t,t=n):(e.substr(O,4)===g?(i=g,O+=4):(i=n,k===0&&j(_)),i===n?(O=t,t=n):(r=[r,i],t=r)),t===n&&(t=O,r=M(),r===n?(O=t,t=n):(i=_t(),i===n?(O=t,t=n):(e.substr(O,4)===g?(a=g,O+=4):(a=n,k===0&&j(_)),a===n?(O=t,t=n):(r=[r,i,a],t=r)))))),t}function _t(){var t;return e.substr(O,7)===v?(t=v,O+=7):(t=n,k===0&&j(y)),t===n&&(e.substr(O,5)===b?(t=b,O+=5):(t=n,k===0&&j(x)),t===n&&(e.substr(O,6)===S?(t=S,O+=6):(t=n,k===0&&j(C)))),t}function vt(){var e=Et();return e===n&&(e=P()),e}function yt(){var e=O,t=St(),r,i,a,o,s;if(t!==n)if(r=P(),r!==n){for(i=[],a=O,o=P(),o===n?(O=a,a=n):(s=St(),s===n?(O=a,a=n):(nt=a,o=w(t,s),a=o));a!==n;)i.push(a),a=O,o=P(),o===n?(O=a,a=n):(s=St(),s===n?(O=a,a=n):(nt=a,o=w(t,s),a=o));i===n?(O=e,e=n):(a=P(),a===n?(O=e,e=n):(nt=e,t=T(t,i),e=t))}else O=e,e=n;else O=e,e=n;return e}function bt(){var t;return e.charCodeAt(O)===35?(t=E,O++):(t=n,k===0&&j(ee)),t}function xt(){var e=O,t=P(),r,i,a;return t===n?(O=e,e=n):(r=bt(),r===n?(O=e,e=n):(i=Et(),i===n?(O=e,e=n):(a=P(),a===n?(O=e,e=n):(t=[t,r,i,a],e=t)))),e}function St(){var t=O,r=wt(),i,l,u,d,f,p,m,h,g,_,v,y;return r===n?(O=t,t=n):(i=P(),i===n?(O=t,t=n):(l=M(),l===n?(O=t,t=n):(u=P(),u===n?(O=t,t=n):(e.charCodeAt(O)===59?(d=te,O++):(d=n,k===0&&j(ne)),d===n?(O=t,t=n):(f=P(),f===n?(O=t,t=n):(p=vt(),p===n?(O=t,t=n):(nt=t,r=re(r,l,p),t=r))))))),t===n&&(t=O,r=wt(),r===n?(O=t,t=n):(i=P(),i===n?(O=t,t=n):(e.charCodeAt(O)===91?(l=ie,O++):(l=n,k===0&&j(ae)),l===n?(O=t,t=n):(u=P(),u===n?(O=t,t=n):(d=Tt(),d===n?(O=t,t=n):(f=P(),f===n?(O=t,t=n):(e.charCodeAt(O)===93?(p=oe,O++):(p=n,k===0&&j(se)),p===n?(O=t,t=n):(m=P(),m===n?(O=t,t=n):(h=M(),h===n?(O=t,t=n):(g=P(),g===n?(O=t,t=n):(e.charCodeAt(O)===59?(_=te,O++):(_=n,k===0&&j(ne)),_===n?(O=t,t=n):(v=P(),v===n?(O=t,t=n):(y=vt(),y===n?(O=t,t=n):(nt=t,r=ce(r,d,h,y),t=r))))))))))))),t===n&&(t=O,r=wt(),r===n?(O=t,t=n):(i=P(),i===n?(O=t,t=n):(e.charCodeAt(O)===40?(l=a,O++):(l=n,k===0&&j(o)),l===n?(O=t,t=n):(u=P(),u===n?(O=t,t=n):(d=Ct(),d===n?(O=t,t=n):(f=P(),f===n?(O=t,t=n):(e.charCodeAt(O)===41?(p=s,O++):(p=n,k===0&&j(c)),p===n?(O=t,t=n):(m=P(),m===n?(O=t,t=n):(h=M(),h===n?(O=t,t=n):(g=P(),g===n?(O=t,t=n):(e.charCodeAt(O)===59?(_=te,O++):(_=n,k===0&&j(ne)),_===n?(O=t,t=n):(v=P(),v===n?(O=t,t=n):(y=vt(),y===n?(O=t,t=n):(nt=t,r=le(r,d,h,y),t=r))))))))))))),t===n&&(t=xt()))),t}function Ct(){var t=O,r=M(),i,a,o,s,c;if(r!==n){for(i=[],a=O,e.charCodeAt(O)===44?(o=ue,O++):(o=n,k===0&&j(de)),o===n?(O=a,a=n):(s=P(),s===n?(O=a,a=n):(c=M(),c===n?(O=a,a=n):(nt=a,o=w(r,c),a=o)));a!==n;)i.push(a),a=O,e.charCodeAt(O)===44?(o=ue,O++):(o=n,k===0&&j(de)),o===n?(O=a,a=n):(s=P(),s===n?(O=a,a=n):(c=M(),c===n?(O=a,a=n):(nt=a,o=w(r,c),a=o)));i===n?(O=t,t=n):(nt=t,r=fe(r,i),t=r)}else O=t,t=n;return t}function wt(){var t,r,i,a;return e.substr(O,3)===pe?(t=pe,O+=3):(t=n,k===0&&j(me)),t===n&&(e.substr(O,4)===he?(t=he,O+=4):(t=n,k===0&&j(ge)),t===n&&(e.substr(O,5)===_e?(t=_e,O+=5):(t=n,k===0&&j(ve)),t===n&&(e.substr(O,6)===ye?(t=ye,O+=6):(t=n,k===0&&j(be)),t===n&&(e.substr(O,4)===D?(t=D,O+=4):(t=n,k===0&&j(xe)),t===n&&(e.substr(O,5)===Se?(t=Se,O+=5):(t=n,k===0&&j(Ce)),t===n&&(e.substr(O,5)===we?(t=we,O+=5):(t=n,k===0&&j(Te)),t===n&&(e.substr(O,4)===Ee?(t=Ee,O+=4):(t=n,k===0&&j(De)),t===n&&(e.substr(O,6)===Oe?(t=Oe,O+=6):(t=n,k===0&&j(ke)),t===n&&(e.substr(O,7)===Ae?(t=Ae,O+=7):(t=n,k===0&&j(je)),t===n&&(e.substr(O,4)===Me?(t=Me,O+=4):(t=n,k===0&&j(Ne)),t===n&&(e.substr(O,6)===Pe?(t=Pe,O+=6):(t=n,k===0&&j(Fe)),t===n&&(e.substr(O,6)===Ie?(t=Ie,O+=6):(t=n,k===0&&j(Le)),t===n&&(e.substr(O,3)===Re?(t=Re,O+=3):(t=n,k===0&&j(ze)),t===n&&(t=O,r=ht(),r===n?(O=t,t=n):(i=P(),i===n?(O=t,t=n):(a=gt(),a===n?(O=t,t=n):(nt=t,r=Be(r,a),t=r))))))))))))))))),t}function Tt(){var e=N();return e===n&&(e=M()),e}function M(){var t=O,r=O,i,a,o;if(Ve.test(e.charAt(O))?(i=e.charAt(O),O++):(i=n,k===0&&j(He)),i!==n){for(a=[],Ue.test(e.charAt(O))?(o=e.charAt(O),O++):(o=n,k===0&&j(We));o!==n;)a.push(o),Ue.test(e.charAt(O))?(o=e.charAt(O),O++):(o=n,k===0&&j(We));a===n?(O=r,r=n):(i=[i,a],r=i)}else O=r,r=n;return r!==n&&(nt=t,r=Ge(r)),t=r,t}function Et(){var t=O,r=[],i;for(Ke.test(e.charAt(O))?(i=e.charAt(O),O++):(i=n,k===0&&j(qe));i!==n;)r.push(i),Ke.test(e.charAt(O))?(i=e.charAt(O),O++):(i=n,k===0&&j(qe));return r!==n&&(nt=t,r=Je(r)),t=r,t}function N(){var t,r,i,a;if(k++,t=O,r=P(),r!==n){if(i=[],Xe.test(e.charAt(O))?(a=e.charAt(O),O++):(a=n,k===0&&j(Ze)),a!==n)for(;a!==n;)i.push(a),Xe.test(e.charAt(O))?(a=e.charAt(O),O++):(a=n,k===0&&j(Ze));else i=n;i===n?(O=t,t=n):(nt=t,r=Qe(),t=r)}else O=t,t=n;return k--,t===n&&(r=n,k===0&&j(Ye)),t}function P(){var t,r;for(k++,t=[],et.test(e.charAt(O))?(r=e.charAt(O),O++):(r=n,k===0&&j(tt));r!==n;)t.push(r),et.test(e.charAt(O))?(r=e.charAt(O),O++):(r=n,k===0&&j(tt));return k--,t===n&&(r=n,k===0&&j($e)),t}if(ot=i(),ot!==n&&O===e.length)return ot;throw ot!==n&&O<e.length&&j(lt()),pt(at,it<e.length?e.charAt(it):null,it<e.length?ft(it,it+1):ft(it,it))}var ll,ul=n((()=>{ol(sl,Error),sl.buildMessage=function(e,t){var n={literal:function(e){return`"`+i(e.text)+`"`},class:function(e){var t=``,n;for(n=0;n<e.parts.length;n++)t+=e.parts[n]instanceof Array?a(e.parts[n][0])+`-`+a(e.parts[n][1]):a(e.parts[n]);return`[`+(e.inverted?`^`:``)+t+`]`},any:function(e){return`any character`},end:function(e){return`end of input`},other:function(e){return e.description}};function r(e){return e.charCodeAt(0).toString(16).toUpperCase()}function i(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`).replace(/\0/g,`\\0`).replace(/\t/g,`\\t`).replace(/\n/g,`\\n`).replace(/\r/g,`\\r`).replace(/[\x00-\x0F]/g,function(e){return`\\x0`+r(e)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(e){return`\\x`+r(e)})}function a(e){return e.replace(/\\/g,`\\\\`).replace(/\]/g,`\\]`).replace(/\^/g,`\\^`).replace(/-/g,`\\-`).replace(/\0/g,`\\0`).replace(/\t/g,`\\t`).replace(/\n/g,`\\n`).replace(/\r/g,`\\r`).replace(/[\x00-\x0F]/g,function(e){return`\\x0`+r(e)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(e){return`\\x`+r(e)})}function o(e){return n[e.type](e)}function s(e){var t=Array(e.length),n,r;for(n=0;n<e.length;n++)t[n]=o(e[n]);if(t.sort(),t.length>0){for(n=1,r=1;n<t.length;n++)t[n-1]!==t[n]&&(t[r]=t[n],r++);t.length=r}switch(t.length){case 1:return t[0];case 2:return t[0]+` or `+t[1];default:return t.slice(0,-1).join(`, `)+`, or `+t[t.length-1]}}function c(e){return e?`"`+i(e)+`"`:`end of input`}return`Expected `+s(e)+` but `+c(t)+` found.`},ll={SyntaxError:sl,parse:cl}})),dl=r({bigChain:()=>fl,bigGenePred:()=>pl,bigInteract:()=>ml,bigLink:()=>hl,bigMaf:()=>gl,bigNarrowPeak:()=>_l,bigPsl:()=>vl,defaultBedSchema:()=>yl,mafFrames:()=>bl,mafSummary:()=>xl}),fl,pl,ml,hl,gl,_l,vl,yl,bl,xl,Sl=n((()=>{fl=`table bigChain
14
+ return groupData;`);return $c.set(t,i),i}function Yc(e,t,n,r,i,a){for(let o=0;o<n;o++){let n=t+o,s={};for(let e=0;e<r.length;e++)s[r[e]]=i[e][n-a[e]];e[o]=s}return e}async function Xc({asyncColumns:e},t,n){let r=await Promise.all(e.map(e=>e.data)),i=e.length,a=Array(i),o=Array(i),s=Array(i);for(let t=0;t<i;t++)a[t]=e[t].pathInSchema[0],o[t]=qc(r[t].data),s[t]=r[t].skipped;let c=n-t,l=Array(c);return i>el?Yc(l,t,c,a,o,s):Jc(a)(l,t,c,o,s)}async function Zc(e){if(`rowFormat`in e)throw Error(`parquetRead supports only object rows; use rowFormat: "object" implicitly`);if(`filter`in e||`filterStrict`in e)throw Error(`parquetRead does not support filtering`);e.metadata??=await hs(e.file,e);let{rowStart:t=0,rowEnd:n,onChunk:r,onComplete:i}=e,a=Kc(e);if(!i&&!r){for(let{asyncColumns:e}of a)for(let{data:t}of e)await t;return}let o=_s(e.metadata),s=a.map(t=>Uc(t,o,e.parsers));if(r)for(let e of s)for(let t of e.asyncColumns)t.data.then(n=>{let i=e.groupStart+n.skipped;for(let e of n.data)r({columnName:t.pathInSchema[0],columnData:e,rowStart:i,rowEnd:i+e.length}),i+=e.length});if(i){let e=[];for(let r of s)Ts(e,await Xc(r,Math.max(t-r.groupStart,0),Math.min((n??1/0)-r.groupStart,r.groupRows)));i(e)}else for(let{asyncColumns:e}of s)for(let{data:t}of e)await t}function Qc(e){return new Promise((t,n)=>{Zc({...e,onComplete:t}).catch(n)})}var $c,el,tl=n((()=>{ws(),Ps(),Wc(),Os(),$c=new Map,el=200}));async function nl(){let{parquetReadObjects:e}=await Promise.resolve().then(()=>(tl(),Gc));return e}async function rl(e){return await(await nl())({file:e instanceof Uint8Array?e.buffer:e})}rl.responseType=`arrayBuffer`,Co(`parquet`,rl);function il(e,t){function n(){this.constructor=e}n.prototype=t.prototype,e.prototype=new n}function al(e,t,n,r){this.message=e,this.expected=t,this.found=n,this.location=r,this.name=`SyntaxError`,typeof Error.captureStackTrace==`function`&&Error.captureStackTrace(this,al)}function ol(e,t){t=t===void 0?{}:t;var n={},r={declaration:ft},i=ft,a=`(`,o=M(`(`,!1),s=`)`,c=M(`)`,!1),l=function(e,t,n,r){return{type:e,name:t,comment:n,fields:r}},u=`simple`,d=M(`simple`,!1),f=`object`,p=M(`object`,!1),m=`table`,h=M(`table`,!1),g=`auto`,_=M(`auto`,!1),v=`primary`,y=M(`primary`,!1),b=`index`,x=M(`index`,!1),S=`unique`,C=M(`unique`,!1),w=function(e,t){return t},T=function(e,t){return e.name&&t.unshift(e),t},E=`#`,D=M(`#`,!1),ee=`;`,te=M(`;`,!1),ne=function(e,t,n){return{type:e,name:t,comment:n}},re=`[`,ie=M(`[`,!1),ae=`]`,oe=M(`]`,!1),se=function(e,t,n,r){return{type:e,size:t,name:n,comment:r}},ce=function(e,t,n,r){return{type:e,vals:t,name:n,comment:r}},le=`,`,ue=M(`,`,!1),de=function(e,t){return t.unshift(e),t},fe=`int`,pe=M(`int`,!1),me=`uint`,he=M(`uint`,!1),ge=`short`,_e=M(`short`,!1),ve=`ushort`,ye=M(`ushort`,!1),O=`byte`,be=M(`byte`,!1),xe=`ubyte`,Se=M(`ubyte`,!1),Ce=`float`,we=M(`float`,!1),Te=`char`,Ee=M(`char`,!1),De=`string`,Oe=M(`string`,!1),ke=`lstring`,Ae=M(`lstring`,!1),je=`enum`,Me=M(`enum`,!1),Ne=`double`,Pe=M(`double`,!1),Fe=`bigint`,Ie=M(`bigint`,!1),Le=`set`,Re=M(`set`,!1),ze=function(e,t){return e+` `+t},Be=/^[a-zA-Z_]/,Ve=ot([[`a`,`z`],[`A`,`Z`],`_`],!1,!1),He=/^[a-zA-Z0-9_]/,Ue=ot([[`a`,`z`],[`A`,`Z`],[`0`,`9`],`_`],!1,!1),We=function(e){return at()},Ge=/^[^\n\r]/,Ke=ot([`
15
+ `,`\r`],!0,!1),qe=function(e){return e.join(``).replace(/^"/,``).replace(/"$/,``)},Je=ct(`integer`),Ye=/^[0-9]/,Xe=ot([[`0`,`9`]],!1,!1),k=function(){return parseInt(at(),10)},Ze=ct(`whitespace`),Qe=/^[ \t\n\r]/,$e=ot([` `,` `,`
16
+ `,`\r`],!1,!1),A=0,et=0,tt=[{line:1,column:1}],nt=0,rt=[],j=0,it;if(`startRule`in t){if(!(t.startRule in r))throw Error(`Can't start parsing from rule "`+t.startRule+`".`);i=r[t.startRule]}function at(){return e.substring(et,A)}function M(e,t){return{type:`literal`,text:e,ignoreCase:t}}function ot(e,t,n){return{type:`class`,parts:e,inverted:t,ignoreCase:n}}function st(){return{type:`end`}}function ct(e){return{type:`other`,description:e}}function lt(t){var n=tt[t],r;if(n)return n;for(r=t-1;!tt[r];)r--;for(n=tt[r],n={line:n.line,column:n.column};r<t;)e.charCodeAt(r)===10?(n.line++,n.column=1):n.column++,r++;return tt[t]=n,n}function ut(e,t){var n=lt(e),r=lt(t);return{start:{offset:e,line:n.line,column:n.column},end:{offset:t,line:r.line,column:r.column}}}function N(e){A<nt||(A>nt&&(nt=A,rt=[]),rt.push(e))}function dt(e,t,n){return new al(al.buildMessage(e,t),e,t,n)}function ft(){var t=A,r=I(),i,u,d,f,p,m,h,g,_,v,y,b;return r===n?(A=t,t=n):(i=pt(),i===n?(A=t,t=n):(u=I(),u===n?(A=t,t=n):(d=mt(),d===n?(A=t,t=n):(f=I(),f===n?(A=t,t=n):(p=gt(),p===n?(A=t,t=n):(m=I(),m===n?(A=t,t=n):(e.charCodeAt(A)===40?(h=a,A++):(h=n,j===0&&N(o)),h===n?(A=t,t=n):(g=I(),g===n?(A=t,t=n):(_=_t(),_===n?(A=t,t=n):(v=I(),v===n?(A=t,t=n):(e.charCodeAt(A)===41?(y=s,A++):(y=n,j===0&&N(c)),y===n?(A=t,t=n):(b=I(),b===n?(A=t,t=n):(et=t,r=l(i,d,p,_),t=r))))))))))))),t}function pt(){var t;return e.substr(A,6)===u?(t=u,A+=6):(t=n,j===0&&N(d)),t===n&&(e.substr(A,6)===f?(t=f,A+=6):(t=n,j===0&&N(p)),t===n&&(e.substr(A,5)===m?(t=m,A+=5):(t=n,j===0&&N(h)))),t}function mt(){var t=P(),r,i,a;return t===n&&(t=A,r=P(),r===n?(A=t,t=n):(i=ht(),i===n?(A=t,t=n):(r=[r,i],t=r)),t===n&&(t=A,r=P(),r===n?(A=t,t=n):(e.substr(A,4)===g?(i=g,A+=4):(i=n,j===0&&N(_)),i===n?(A=t,t=n):(r=[r,i],t=r)),t===n&&(t=A,r=P(),r===n?(A=t,t=n):(i=ht(),i===n?(A=t,t=n):(e.substr(A,4)===g?(a=g,A+=4):(a=n,j===0&&N(_)),a===n?(A=t,t=n):(r=[r,i,a],t=r)))))),t}function ht(){var t;return e.substr(A,7)===v?(t=v,A+=7):(t=n,j===0&&N(y)),t===n&&(e.substr(A,5)===b?(t=b,A+=5):(t=n,j===0&&N(x)),t===n&&(e.substr(A,6)===S?(t=S,A+=6):(t=n,j===0&&N(C)))),t}function gt(){var e=wt();return e===n&&(e=I()),e}function _t(){var e=A,t=bt(),r,i,a,o,s;if(t!==n)if(r=I(),r!==n){for(i=[],a=A,o=I(),o===n?(A=a,a=n):(s=bt(),s===n?(A=a,a=n):(et=a,o=w(t,s),a=o));a!==n;)i.push(a),a=A,o=I(),o===n?(A=a,a=n):(s=bt(),s===n?(A=a,a=n):(et=a,o=w(t,s),a=o));i===n?(A=e,e=n):(a=I(),a===n?(A=e,e=n):(et=e,t=T(t,i),e=t))}else A=e,e=n;else A=e,e=n;return e}function vt(){var t;return e.charCodeAt(A)===35?(t=E,A++):(t=n,j===0&&N(D)),t}function yt(){var e=A,t=I(),r,i,a;return t===n?(A=e,e=n):(r=vt(),r===n?(A=e,e=n):(i=wt(),i===n?(A=e,e=n):(a=I(),a===n?(A=e,e=n):(t=[t,r,i,a],e=t)))),e}function bt(){var t=A,r=St(),i,l,u,d,f,p,m,h,g,_,v,y;return r===n?(A=t,t=n):(i=I(),i===n?(A=t,t=n):(l=P(),l===n?(A=t,t=n):(u=I(),u===n?(A=t,t=n):(e.charCodeAt(A)===59?(d=ee,A++):(d=n,j===0&&N(te)),d===n?(A=t,t=n):(f=I(),f===n?(A=t,t=n):(p=gt(),p===n?(A=t,t=n):(et=t,r=ne(r,l,p),t=r))))))),t===n&&(t=A,r=St(),r===n?(A=t,t=n):(i=I(),i===n?(A=t,t=n):(e.charCodeAt(A)===91?(l=re,A++):(l=n,j===0&&N(ie)),l===n?(A=t,t=n):(u=I(),u===n?(A=t,t=n):(d=Ct(),d===n?(A=t,t=n):(f=I(),f===n?(A=t,t=n):(e.charCodeAt(A)===93?(p=ae,A++):(p=n,j===0&&N(oe)),p===n?(A=t,t=n):(m=I(),m===n?(A=t,t=n):(h=P(),h===n?(A=t,t=n):(g=I(),g===n?(A=t,t=n):(e.charCodeAt(A)===59?(_=ee,A++):(_=n,j===0&&N(te)),_===n?(A=t,t=n):(v=I(),v===n?(A=t,t=n):(y=gt(),y===n?(A=t,t=n):(et=t,r=se(r,d,h,y),t=r))))))))))))),t===n&&(t=A,r=St(),r===n?(A=t,t=n):(i=I(),i===n?(A=t,t=n):(e.charCodeAt(A)===40?(l=a,A++):(l=n,j===0&&N(o)),l===n?(A=t,t=n):(u=I(),u===n?(A=t,t=n):(d=xt(),d===n?(A=t,t=n):(f=I(),f===n?(A=t,t=n):(e.charCodeAt(A)===41?(p=s,A++):(p=n,j===0&&N(c)),p===n?(A=t,t=n):(m=I(),m===n?(A=t,t=n):(h=P(),h===n?(A=t,t=n):(g=I(),g===n?(A=t,t=n):(e.charCodeAt(A)===59?(_=ee,A++):(_=n,j===0&&N(te)),_===n?(A=t,t=n):(v=I(),v===n?(A=t,t=n):(y=gt(),y===n?(A=t,t=n):(et=t,r=ce(r,d,h,y),t=r))))))))))))),t===n&&(t=yt()))),t}function xt(){var t=A,r=P(),i,a,o,s,c;if(r!==n){for(i=[],a=A,e.charCodeAt(A)===44?(o=le,A++):(o=n,j===0&&N(ue)),o===n?(A=a,a=n):(s=I(),s===n?(A=a,a=n):(c=P(),c===n?(A=a,a=n):(et=a,o=w(r,c),a=o)));a!==n;)i.push(a),a=A,e.charCodeAt(A)===44?(o=le,A++):(o=n,j===0&&N(ue)),o===n?(A=a,a=n):(s=I(),s===n?(A=a,a=n):(c=P(),c===n?(A=a,a=n):(et=a,o=w(r,c),a=o)));i===n?(A=t,t=n):(et=t,r=de(r,i),t=r)}else A=t,t=n;return t}function St(){var t,r,i,a;return e.substr(A,3)===fe?(t=fe,A+=3):(t=n,j===0&&N(pe)),t===n&&(e.substr(A,4)===me?(t=me,A+=4):(t=n,j===0&&N(he)),t===n&&(e.substr(A,5)===ge?(t=ge,A+=5):(t=n,j===0&&N(_e)),t===n&&(e.substr(A,6)===ve?(t=ve,A+=6):(t=n,j===0&&N(ye)),t===n&&(e.substr(A,4)===O?(t=O,A+=4):(t=n,j===0&&N(be)),t===n&&(e.substr(A,5)===xe?(t=xe,A+=5):(t=n,j===0&&N(Se)),t===n&&(e.substr(A,5)===Ce?(t=Ce,A+=5):(t=n,j===0&&N(we)),t===n&&(e.substr(A,4)===Te?(t=Te,A+=4):(t=n,j===0&&N(Ee)),t===n&&(e.substr(A,6)===De?(t=De,A+=6):(t=n,j===0&&N(Oe)),t===n&&(e.substr(A,7)===ke?(t=ke,A+=7):(t=n,j===0&&N(Ae)),t===n&&(e.substr(A,4)===je?(t=je,A+=4):(t=n,j===0&&N(Me)),t===n&&(e.substr(A,6)===Ne?(t=Ne,A+=6):(t=n,j===0&&N(Pe)),t===n&&(e.substr(A,6)===Fe?(t=Fe,A+=6):(t=n,j===0&&N(Ie)),t===n&&(e.substr(A,3)===Le?(t=Le,A+=3):(t=n,j===0&&N(Re)),t===n&&(t=A,r=pt(),r===n?(A=t,t=n):(i=I(),i===n?(A=t,t=n):(a=mt(),a===n?(A=t,t=n):(et=t,r=ze(r,a),t=r))))))))))))))))),t}function Ct(){var e=F();return e===n&&(e=P()),e}function P(){var t=A,r=A,i,a,o;if(Be.test(e.charAt(A))?(i=e.charAt(A),A++):(i=n,j===0&&N(Ve)),i!==n){for(a=[],He.test(e.charAt(A))?(o=e.charAt(A),A++):(o=n,j===0&&N(Ue));o!==n;)a.push(o),He.test(e.charAt(A))?(o=e.charAt(A),A++):(o=n,j===0&&N(Ue));a===n?(A=r,r=n):(i=[i,a],r=i)}else A=r,r=n;return r!==n&&(et=t,r=We(r)),t=r,t}function wt(){var t=A,r=[],i;for(Ge.test(e.charAt(A))?(i=e.charAt(A),A++):(i=n,j===0&&N(Ke));i!==n;)r.push(i),Ge.test(e.charAt(A))?(i=e.charAt(A),A++):(i=n,j===0&&N(Ke));return r!==n&&(et=t,r=qe(r)),t=r,t}function F(){var t,r,i,a;if(j++,t=A,r=I(),r!==n){if(i=[],Ye.test(e.charAt(A))?(a=e.charAt(A),A++):(a=n,j===0&&N(Xe)),a!==n)for(;a!==n;)i.push(a),Ye.test(e.charAt(A))?(a=e.charAt(A),A++):(a=n,j===0&&N(Xe));else i=n;i===n?(A=t,t=n):(et=t,r=k(),t=r)}else A=t,t=n;return j--,t===n&&(r=n,j===0&&N(Je)),t}function I(){var t,r;for(j++,t=[],Qe.test(e.charAt(A))?(r=e.charAt(A),A++):(r=n,j===0&&N($e));r!==n;)t.push(r),Qe.test(e.charAt(A))?(r=e.charAt(A),A++):(r=n,j===0&&N($e));return j--,t===n&&(r=n,j===0&&N(Ze)),t}if(it=i(),it!==n&&A===e.length)return it;throw it!==n&&A<e.length&&N(st()),dt(rt,nt<e.length?e.charAt(nt):null,nt<e.length?ut(nt,nt+1):ut(nt,nt))}var sl,cl=n((()=>{il(al,Error),al.buildMessage=function(e,t){var n={literal:function(e){return`"`+i(e.text)+`"`},class:function(e){var t=``,n;for(n=0;n<e.parts.length;n++)t+=e.parts[n]instanceof Array?a(e.parts[n][0])+`-`+a(e.parts[n][1]):a(e.parts[n]);return`[`+(e.inverted?`^`:``)+t+`]`},any:function(e){return`any character`},end:function(e){return`end of input`},other:function(e){return e.description}};function r(e){return e.charCodeAt(0).toString(16).toUpperCase()}function i(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`).replace(/\0/g,`\\0`).replace(/\t/g,`\\t`).replace(/\n/g,`\\n`).replace(/\r/g,`\\r`).replace(/[\x00-\x0F]/g,function(e){return`\\x0`+r(e)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(e){return`\\x`+r(e)})}function a(e){return e.replace(/\\/g,`\\\\`).replace(/\]/g,`\\]`).replace(/\^/g,`\\^`).replace(/-/g,`\\-`).replace(/\0/g,`\\0`).replace(/\t/g,`\\t`).replace(/\n/g,`\\n`).replace(/\r/g,`\\r`).replace(/[\x00-\x0F]/g,function(e){return`\\x0`+r(e)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(e){return`\\x`+r(e)})}function o(e){return n[e.type](e)}function s(e){var t=Array(e.length),n,r;for(n=0;n<e.length;n++)t[n]=o(e[n]);if(t.sort(),t.length>0){for(n=1,r=1;n<t.length;n++)t[n-1]!==t[n]&&(t[r]=t[n],r++);t.length=r}switch(t.length){case 1:return t[0];case 2:return t[0]+` or `+t[1];default:return t.slice(0,-1).join(`, `)+`, or `+t[t.length-1]}}function c(e){return e?`"`+i(e)+`"`:`end of input`}return`Expected `+s(e)+` but `+c(t)+` found.`},sl={SyntaxError:al,parse:ol}})),ll=r({bigChain:()=>ul,bigGenePred:()=>dl,bigInteract:()=>fl,bigLink:()=>pl,bigMaf:()=>ml,bigNarrowPeak:()=>hl,bigPsl:()=>gl,defaultBedSchema:()=>_l,mafFrames:()=>vl,mafSummary:()=>yl}),ul,dl,fl,pl,ml,hl,gl,_l,vl,yl,bl=n((()=>{ul=`table bigChain
17
17
  "bigChain pairwise alignment"
18
18
  (
19
19
  string chrom; "Reference sequence chromosome or scaffold"
@@ -28,7 +28,7 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
28
28
  uint qStart; "start of alignment on query sequence"
29
29
  uint qEnd; "end of alignment on query sequence"
30
30
  uint chainScore; "score from chain"
31
- )`,pl=`table bigGenePred
31
+ )`,dl=`table bigGenePred
32
32
  "bigGenePred gene models"
33
33
  (
34
34
  string chrom; "Reference sequence chromosome or scaffold"
@@ -51,7 +51,7 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
51
51
  string geneName; "Primary identifier for gene"
52
52
  string geneName2; "Alternative/human readable gene name"
53
53
  string geneType; "Gene type"
54
- )`,ml=`table interact
54
+ )`,fl=`table interact
55
55
  "interaction between two regions"
56
56
  (
57
57
  string chrom; "Chromosome (or contig, scaffold, etc.). For interchromosomal, use 2 records"
@@ -73,7 +73,7 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
73
73
  string targetName; "Identifier of target/upper/this region"
74
74
  string targetStrand; "Orientation of target/upper/this region: + or -. Use . if not applicable"
75
75
 
76
- )`,hl=`table bigLink
76
+ )`,pl=`table bigLink
77
77
  "bigLink pairwise alignment"
78
78
  (
79
79
  string chrom; "Reference sequence chromosome or scaffold"
@@ -81,14 +81,14 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
81
81
  uint chromEnd; "End position in chromosome"
82
82
  string name; "Name or ID of item, ideally both human readable and unique"
83
83
  uint qStart; "start of alignment on query sequence"
84
- )`,gl=`table bedMaf
84
+ )`,ml=`table bedMaf
85
85
  "Bed3 with MAF block"
86
86
  (
87
87
  string chrom; "Reference sequence chromosome or scaffold"
88
88
  uint chromStart; "Start position in chromosome"
89
89
  uint chromEnd; "End position in chromosome"
90
90
  lstring mafBlock; "MAF block"
91
- )`,_l=`table bigNarrowPeak
91
+ )`,hl=`table bigNarrowPeak
92
92
  "BED6+4 Peaks of signal enrichment based on pooled, normalized (interpreted) data."
93
93
  (
94
94
  string chrom; "Reference sequence chromosome or scaffold"
@@ -101,7 +101,7 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
101
101
  float pValue; "Statistical significance of signal value (-log10). Set to -1 if not used."
102
102
  float qValue; "Statistical significance with multiple-test correction applied (FDR -log10). Set to -1 if not used."
103
103
  int peak; "Point-source called for this peak; 0-based offset from chromStart. Set to -1 if no point-source called."
104
- )`,vl=`table bigPsl
104
+ )`,gl=`table bigPsl
105
105
  "bigPsl pairwise alignment"
106
106
  (
107
107
  string chrom; "Reference sequence chromosome or scaffold"
@@ -133,7 +133,7 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
133
133
  uint repMatch; " Number of bases that match but are part of repeats "
134
134
  uint nCount; " Number of 'N' bases "
135
135
  uint seqType; "0=empty, 1=nucleotide, 2=amino_acid"
136
- )`,yl=`table defaultBedSchema
136
+ )`,_l=`table defaultBedSchema
137
137
  "BED12"
138
138
  (
139
139
  string chrom; "The name of the chromosome (e.g. chr3, chrY, chr2_random) or scaffold (e.g. scaffold10671)."
@@ -148,7 +148,7 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
148
148
  uint blockCount; " The number of blocks (exons) in the BED line."
149
149
  uint[blockCount] blockSizes; " A comma-separated list of the block sizes. The number of items in this list should correspond to blockCount."
150
150
  uint[blockCount] blockStarts; "A comma-separated list of block starts. All of the blockStart positions should be calculated relative to chromStart. The number of items in this list should correspond to blockCount."
151
- )`,bl=`table mafFrames
151
+ )`,vl=`table mafFrames
152
152
  "codon frame assignment for MAF components"
153
153
  (
154
154
  string chrom; "Reference sequence chromosome or scaffold"
@@ -162,7 +162,7 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
162
162
  int nextFramePos; "target position of the next base (in transcription direction) that continues this frame, or -1 if none, or frame not contiguous"
163
163
  ubyte isExonStart; "does this start the CDS portion of an exon?"
164
164
  ubyte isExonEnd; "does this end the CDS portion of an exon?"
165
- )`,xl=`table mafSummary
165
+ )`,yl=`table mafSummary
166
166
  "Positions and scores for alignment blocks"
167
167
  (
168
168
  string chrom; "Reference sequence chromosome or scaffold"
@@ -172,16 +172,16 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
172
172
  float score; "Floating point score."
173
173
  char[1] leftStatus; "Gap/break annotation for preceding block"
174
174
  char[1] rightStatus; "Gap/break annotation for following block"
175
- )`})),Cl,wl=n((()=>{Sl(),ul(),Cl=Object.fromEntries(Object.entries(dl).map(([e,t])=>[e,ll.parse(t.trim())]))}));function Tl(e){let t=new Set([`uint`,`int`,`float`,`long`]);return{...e,fields:e.fields.map(e=>({...e,isArray:e.size&&e.type!==`char`,arrayIsNumeric:e.size&&t.has(e.type),isNumeric:!e.size&&t.has(e.type)})).filter(e=>!!e.name)}}var El=n((()=>{}));function Dl(e){return e.length>=12&&!Number.isNaN(Number.parseInt(e[9],10))&&e[10]?.split(`,`).filter(e=>!!e).length===Number.parseInt(e[9],10)}var Ol,kl,Al=n((()=>{ul(),wl(),El(),Ol={".":0,"-":-1,"+":1},kl=class{autoSql;attemptDefaultBed;constructor(e={}){if(e.autoSql)this.autoSql=Tl(ll.parse(e.autoSql));else if(e.type){if(!Cl[e.type])throw Error(`Type not found`);this.autoSql=Tl(Cl[e.type])}else this.autoSql=Tl(Cl.defaultBedSchema),this.attemptDefaultBed=!0}parseLine(e,t={}){let{autoSql:n}=this,{uniqueId:r}=t,i=Array.isArray(e)?e:e.split(` `),a={};if(!this.attemptDefaultBed||this.attemptDefaultBed&&Dl(i))for(let e=0;e<n.fields.length;e++){let t=n.fields[e],r=i[e],{isNumeric:o,isArray:s,arrayIsNumeric:c,name:l}=t;if(r==null)break;if(r!==`.`){if(o){let e=Number(r);r=Number.isNaN(e)?r:e}else s&&(r=r.split(`,`),r.at(-1)===``&&r.pop(),c&&(r=r.map(Number)));a[l]=r}}else{let e=[`chrom`,`chromStart`,`chromEnd`,`name`];a=Object.fromEntries(i.map((t,n)=>[e[n]||`field`+n,t])),a.chromStart=+a.chromStart,a.chromEnd=+a.chromEnd,Number.isNaN(Number.parseFloat(a.field4))||(a.score=+a.field4,delete a.field4),(a.field5===`+`||a.field5===`-`)&&(a.strand=a.field5,delete a.field5)}return r&&(a.uniqueId=r),a.strand=Ol[a.strand]||0,a.chrom=decodeURIComponent(a.chrom),a}}})),jl=r({default:()=>kl}),Ml=n((()=>{Al()})),Nl=/^\s*$/,Pl=/^\s*(?:browser\b|track\b|#)/,Fl;async function Il(){return Fl??=Promise.resolve().then(()=>(Ml(),jl)).then(e=>e.default),Fl}async function Ll(e){let t=new(await(Il())),n=!1,r=[],i=e.split(/\r?\n/);for(let e=0;e<i.length;e++){let a=i[e];if(a.length!=0){if(!n){if(Nl.test(a)||Pl.test(a))continue;n=!0}try{r.push(t.parseLine(a))}catch(t){throw Error(`Cannot parse BED line ${e+1}: ${t.message}`,{cause:t})}}}return r}To(`bed`,Ll);var Rl=/^\s*$/,zl=/^\s*(?:browser\b|track\b|#)/,Bl=[`chrom1`,`start1`,`end1`,`chrom2`,`start2`,`end2`,`name`,`score`,`strand1`,`strand2`],Vl=Bl.slice(0,6),Hl=e=>e,Ul=e=>e==`.`?null:e,Wl=e=>e==`+`?1:e==`-`?-1:0,Gl=e=>{if(e==`.`||e==`-1`||e==``)return null;let t=Number(e);return Number.isInteger(t)?t:null},Kl={chrom1:Ul,chrom2:Ul,name:Ul,strand1:Wl,strand2:Wl,start1:Gl,end1:Gl,start2:Gl,end2:Gl,score:e=>{if(e==`.`||e==``)return null;let t=Number(e);return Number.isNaN(t)?e:t}};function ql(e){if(e.length<Vl.length)return!1;for(let t=0;t<Vl.length;t++)if(e[t]!=Vl[t])return!1;return!0}function Jl(e,t={}){let n=e.split(/\r?\n/),r=t.columns,i=!1,a=!1,o=0,s=[],c=[],l=[];for(let e of n){if(o++,e.length==0)continue;if(!i){if(Rl.test(e)||zl.test(e))continue;i=!0}if(Rl.test(e))continue;let t=e.split(` `);if(!a){let e=r||(ql(t)?t:Bl);for(let t of e)s.push(t),c.push(Kl[t]??Hl);if(a=!0,!r&&e==t)continue}for(;s.length<t.length;)s.push(`field`+(s.length+1)),c.push(Hl);if(t.length<Vl.length)throw Error(`BEDPE line ${o} has ${t.length} columns, expected at least ${Vl.length}.`);let n={};for(let e=0;e<t.length;e++){let r=s[e];n[r]=c[e](t[e])}l.push(n)}return l}To(`bedpe`,Jl);function Yl(e,t){let n=[],r;for(let t of e.split(`
176
- `))if(t.startsWith(`>`))r={identifier:t.match(/>(\S+)/)[1],sequence:``},n.push(r);else if(r)r.sequence+=t.trim();else throw Error(`Invalid fasta file!`);return n}To(`fasta`,Yl);function Xl(e,t){return e.length==t.length&&e.every((n,r)=>e[r]===t[r])}function Zl(e){return Array.isArray(e)?e:e===void 0?[]:[e]}function Ql(e){return e[e.length-1]}function $l(e,t,n){return n=(n-e)/(t-e),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}function eu(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function tu(e,t){switch(arguments.length){case 0:break;case 1:typeof e==`function`?this.interpolator(e):this.range(e);break;default:this.domain(e),typeof t==`function`?this.interpolator(t):this.range(t);break}return this}var nu=Symbol(`implicit`);function ru(){var e=new gn,t=[],n=[],r=nu;function i(i){let a=e.get(i);if(a===void 0){if(r!==nu)return r;e.set(i,a=t.push(i)-1)}return n[a%n.length]}return i.domain=function(n){if(!arguments.length)return t.slice();t=[],e=new gn;for(let r of n)e.has(r)||e.set(r,t.push(r)-1);return i},i.range=function(e){return arguments.length?(n=Array.from(e),i):n.slice()},i.unknown=function(e){return arguments.length?(r=e,i):r},i.copy=function(){return ru(t,n).unknown(r)},eu.apply(i,arguments),i}function iu(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function au(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function ou(){}var su=.7,cu=1/su,lu=`\\s*([+-]?\\d+)\\s*`,uu=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,du=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,fu=/^#([0-9a-f]{3,8})$/,pu=RegExp(`^rgb\\(${lu},${lu},${lu}\\)$`),mu=RegExp(`^rgb\\(${du},${du},${du}\\)$`),hu=RegExp(`^rgba\\(${lu},${lu},${lu},${uu}\\)$`),gu=RegExp(`^rgba\\(${du},${du},${du},${uu}\\)$`),_u=RegExp(`^hsl\\(${uu},${du},${du}\\)$`),vu=RegExp(`^hsla\\(${uu},${du},${du},${uu}\\)$`),yu={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};iu(ou,wu,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:bu,formatHex:bu,formatHex8:xu,formatHsl:Su,formatRgb:Cu,toString:Cu});function bu(){return this.rgb().formatHex()}function xu(){return this.rgb().formatHex8()}function Su(){return Lu(this).formatHsl()}function Cu(){return this.rgb().formatRgb()}function wu(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=fu.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?Tu(t):n===3?new ku(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Eu(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Eu(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=pu.exec(e))?new ku(t[1],t[2],t[3],1):(t=mu.exec(e))?new ku(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=hu.exec(e))?Eu(t[1],t[2],t[3],t[4]):(t=gu.exec(e))?Eu(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=_u.exec(e))?Iu(t[1],t[2]/100,t[3]/100,1):(t=vu.exec(e))?Iu(t[1],t[2]/100,t[3]/100,t[4]):yu.hasOwnProperty(e)?Tu(yu[e]):e===`transparent`?new ku(NaN,NaN,NaN,0):null}function Tu(e){return new ku(e>>16&255,e>>8&255,e&255,1)}function Eu(e,t,n,r){return r<=0&&(e=t=n=NaN),new ku(e,t,n,r)}function Du(e){return e instanceof ou||(e=wu(e)),e?(e=e.rgb(),new ku(e.r,e.g,e.b,e.opacity)):new ku}function Ou(e,t,n,r){return arguments.length===1?Du(e):new ku(e,t,n,r??1)}function ku(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}iu(ku,Ou,au(ou,{brighter(e){return e=e==null?cu:cu**+e,new ku(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?su:su**+e,new ku(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new ku(Pu(this.r),Pu(this.g),Pu(this.b),Nu(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Au,formatHex:Au,formatHex8:ju,formatRgb:Mu,toString:Mu}));function Au(){return`#${Fu(this.r)}${Fu(this.g)}${Fu(this.b)}`}function ju(){return`#${Fu(this.r)}${Fu(this.g)}${Fu(this.b)}${Fu((isNaN(this.opacity)?1:this.opacity)*255)}`}function Mu(){let e=Nu(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Pu(this.r)}, ${Pu(this.g)}, ${Pu(this.b)}${e===1?`)`:`, ${e})`}`}function Nu(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Pu(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Fu(e){return e=Pu(e),(e<16?`0`:``)+e.toString(16)}function Iu(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new zu(e,t,n,r)}function Lu(e){if(e instanceof zu)return new zu(e.h,e.s,e.l,e.opacity);if(e instanceof ou||(e=wu(e)),!e)return new zu;if(e instanceof zu)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n<r)*6:n===a?(r-t)/s+2:(t-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new zu(o,s,c,e.opacity)}function Ru(e,t,n,r){return arguments.length===1?Lu(e):new zu(e,t,n,r??1)}function zu(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}iu(zu,Ru,au(ou,{brighter(e){return e=e==null?cu:cu**+e,new zu(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?su:su**+e,new zu(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new ku(Hu(e>=240?e-240:e+120,i,r),Hu(e,i,r),Hu(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new zu(Bu(this.h),Vu(this.s),Vu(this.l),Nu(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=Nu(this.opacity);return`${e===1?`hsl(`:`hsla(`}${Bu(this.h)}, ${Vu(this.s)*100}%, ${Vu(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function Bu(e){return e=(e||0)%360,e<0?e+360:e}function Vu(e){return Math.max(0,Math.min(1,e||0))}function Hu(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var Uu=Math.PI/180,Wu=180/Math.PI,Gu=18,Ku=.96422,qu=1,Ju=.82521,Yu=4/29,Xu=6/29,Zu=3*Xu*Xu,Qu=Xu*Xu*Xu;function $u(e){if(e instanceof td)return new td(e.l,e.a,e.b,e.opacity);if(e instanceof cd)return ld(e);e instanceof ku||(e=Du(e));var t=ad(e.r),n=ad(e.g),r=ad(e.b),i=nd((.2225045*t+.7168786*n+.0606169*r)/qu),a,o;return t===n&&n===r?a=o=i:(a=nd((.4360747*t+.3850649*n+.1430804*r)/Ku),o=nd((.0139322*t+.0971045*n+.7141733*r)/Ju)),new td(116*i-16,500*(a-i),200*(i-o),e.opacity)}function ed(e,t,n,r){return arguments.length===1?$u(e):new td(e,t,n,r??1)}function td(e,t,n,r){this.l=+e,this.a=+t,this.b=+n,this.opacity=+r}iu(td,ed,au(ou,{brighter(e){return new td(this.l+Gu*(e??1),this.a,this.b,this.opacity)},darker(e){return new td(this.l-Gu*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,n=isNaN(this.b)?e:e-this.b/200;return t=Ku*rd(t),e=qu*rd(e),n=Ju*rd(n),new ku(id(3.1338561*t-1.6168667*e-.4906146*n),id(-.9787684*t+1.9161415*e+.033454*n),id(.0719453*t-.2289914*e+1.4052427*n),this.opacity)}}));function nd(e){return e>Qu?e**(1/3):e/Zu+Yu}function rd(e){return e>Xu?e*e*e:Zu*(e-Yu)}function id(e){return 255*(e<=.0031308?12.92*e:1.055*e**(1/2.4)-.055)}function ad(e){return(e/=255)<=.04045?e/12.92:((e+.055)/1.055)**2.4}function od(e){if(e instanceof cd)return new cd(e.h,e.c,e.l,e.opacity);if(e instanceof td||(e=$u(e)),e.a===0&&e.b===0)return new cd(NaN,0<e.l&&e.l<100?0:NaN,e.l,e.opacity);var t=Math.atan2(e.b,e.a)*Wu;return new cd(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function sd(e,t,n,r){return arguments.length===1?od(e):new cd(e,t,n,r??1)}function cd(e,t,n,r){this.h=+e,this.c=+t,this.l=+n,this.opacity=+r}function ld(e){if(isNaN(e.h))return new td(e.l,0,0,e.opacity);var t=e.h*Uu;return new td(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}iu(cd,sd,au(ou,{brighter(e){return new cd(this.h,this.c,this.l+Gu*(e??1),this.opacity)},darker(e){return new cd(this.h,this.c,this.l-Gu*(e??1),this.opacity)},rgb(){return ld(this).rgb()}}));var ud=-.14861,dd=1.78277,fd=-.29227,pd=-.90649,md=1.97294,hd=md*pd,gd=md*dd,_d=dd*fd-pd*ud;function vd(e){if(e instanceof bd)return new bd(e.h,e.s,e.l,e.opacity);e instanceof ku||(e=Du(e));var t=e.r/255,n=e.g/255,r=e.b/255,i=(_d*r+hd*t-gd*n)/(_d+hd-gd),a=r-i,o=(md*(n-i)-fd*a)/pd,s=Math.sqrt(o*o+a*a)/(md*i*(1-i)),c=s?Math.atan2(o,a)*Wu-120:NaN;return new bd(c<0?c+360:c,s,i,e.opacity)}function yd(e,t,n,r){return arguments.length===1?vd(e):new bd(e,t,n,r??1)}function bd(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}iu(bd,yd,au(ou,{brighter(e){return e=e==null?cu:cu**+e,new bd(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?su:su**+e,new bd(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*Uu,t=+this.l,n=isNaN(this.s)?0:this.s*t*(1-t),r=Math.cos(e),i=Math.sin(e);return new ku(255*(t+n*(ud*r+dd*i)),255*(t+n*(fd*r+pd*i)),255*(t+md*r*n),this.opacity)}}));function xd(e,t,n,r,i){var a=e*e,o=a*e;return((1-3*e+3*a-o)*t+(4-6*a+3*o)*n+(1+3*e+3*a-3*o)*r+o*i)/6}function Sd(e){var t=e.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,t-1):Math.floor(n*t),i=e[r],a=e[r+1],o=r>0?e[r-1]:2*i-a,s=r<t-1?e[r+2]:2*a-i;return xd((n-r/t)*t,o,i,a,s)}}function Cd(e){var t=e.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*t),i=e[(r+t-1)%t],a=e[r%t],o=e[(r+1)%t],s=e[(r+2)%t];return xd((n-r/t)*t,i,a,o,s)}}var wd=e=>()=>e;function Td(e,t){return function(n){return e+n*t}}function Ed(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Dd(e,t){var n=t-e;return n?Td(e,n>180||n<-180?n-360*Math.round(n/360):n):wd(isNaN(e)?t:e)}function Od(e){return(e=+e)==1?kd:function(t,n){return n-t?Ed(t,n,e):wd(isNaN(t)?n:t)}}function kd(e,t){var n=t-e;return n?Td(e,n):wd(isNaN(e)?t:e)}var Ad=(function e(t){var n=Od(t);function r(e,t){var r=n((e=Ou(e)).r,(t=Ou(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=kd(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function jd(e){return function(t){var n=t.length,r=Array(n),i=Array(n),a=Array(n),o,s;for(o=0;o<n;++o)s=Ou(t[o]),r[o]=s.r||0,i[o]=s.g||0,a[o]=s.b||0;return r=e(r),i=e(i),a=e(a),s.opacity=1,function(e){return s.r=r(e),s.g=i(e),s.b=a(e),s+``}}}var Md=jd(Sd),Nd=jd(Cd);function Pd(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function Fd(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Id(e,t){return(Fd(t)?Pd:Ld)(e,t)}function Ld(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=Array(r),a=Array(n),o;for(o=0;o<r;++o)i[o]=Kd(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(e){for(o=0;o<r;++o)a[o]=i[o](e);return a}}function Rd(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function zd(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function Bd(e,t){var n={},r={},i;for(i in(typeof e!=`object`||!e)&&(e={}),(typeof t!=`object`||!t)&&(t={}),t)i in e?n[i]=Kd(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var Vd=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Hd=new RegExp(Vd.source,`g`);function Ud(e){return function(){return e}}function Wd(e){return function(t){return e(t)+``}}function Gd(e,t){var n=Vd.lastIndex=Hd.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=Vd.exec(e))&&(i=Hd.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:zd(r,i)})),n=Hd.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?Wd(c[0].x):Ud(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}function Kd(e,t){var n=typeof t,r;return t==null||n===`boolean`?wd(t):(n===`number`?zd:n===`string`?(r=wu(t))?(t=r,Ad):Gd:t instanceof wu?Ad:t instanceof Date?Rd:Fd(t)?Pd:Array.isArray(t)?Ld:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?Bd:zd)(e,t)}function qd(e){var t=e.length;return function(n){return e[Math.max(0,Math.min(t-1,Math.floor(n*t)))]}}function Jd(e,t){var n=Dd(+e,+t);return function(e){var t=n(e);return t-360*Math.floor(t/360)}}function Yd(e,t){return e=+e,t=+t,function(n){return Math.round(e*(1-n)+t*n)}}var Xd=180/Math.PI,Zd={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Qd(e,t,n,r,i,a){var o,s,c;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(c=e*n+t*r)&&(n-=e*c,r-=t*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),e*r<t*n&&(e=-e,t=-t,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*Xd,skewX:Math.atan(c)*Xd,scaleX:o,scaleY:s}}var $d;function ef(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?Zd:Qd(t.a,t.b,t.c,t.d,t.e,t.f)}function tf(e){return e==null||($d||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),$d.setAttribute(`transform`,e),!(e=$d.transform.baseVal.consolidate()))?Zd:(e=e.matrix,Qd(e.a,e.b,e.c,e.d,e.e,e.f))}function nf(e,t,n,r){function i(e){return e.length?e.pop()+` `:``}function a(e,r,i,a,o,s){if(e!==i||r!==a){var c=o.push(`translate(`,null,t,null,n);s.push({i:c-4,x:zd(e,i)},{i:c-2,x:zd(r,a)})}else (i||a)&&o.push(`translate(`+i+t+a+n)}function o(e,t,n,a){e===t?t&&n.push(i(n)+`rotate(`+t+r):(e-t>180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:zd(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:zd(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:zd(e,n)},{i:s-2,x:zd(t,r)})}else (n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t<n;)r[(a=i[t]).i]=a.x(e);return r.join(``)}}}var rf=nf(ef,`px, `,`px)`,`deg)`),af=nf(tf,`, `,`)`,`)`),of=1e-12;function sf(e){return((e=Math.exp(e))+1/e)/2}function cf(e){return((e=Math.exp(e))-1/e)/2}function lf(e){return((e=Math.exp(2*e))-1)/(e+1)}var uf=(function e(t,n,r){function i(e,i){var a=e[0],o=e[1],s=e[2],c=i[0],l=i[1],u=i[2],d=c-a,f=l-o,p=d*d+f*f,m,h;if(p<of)h=Math.log(u/s)/t,m=function(e){return[a+e*d,o+e*f,s*Math.exp(t*e*h)]};else{var g=Math.sqrt(p),_=(u*u-s*s+r*p)/(2*s*n*g),v=(u*u-s*s-r*p)/(2*u*n*g),y=Math.log(Math.sqrt(_*_+1)-_);h=(Math.log(Math.sqrt(v*v+1)-v)-y)/t,m=function(e){var r=e*h,i=sf(y),c=s/(n*g)*(i*lf(t*r+y)-cf(y));return[a+c*d,o+c*f,s*i/sf(t*r+y)]}}return m.duration=h*1e3*t/Math.SQRT2,m}return i.rho=function(t){var n=Math.max(.001,+t),r=n*n;return e(n,r,r*r)},i})(Math.SQRT2,2,4);function df(e){return function(t,n){var r=e((t=Ru(t)).h,(n=Ru(n)).h),i=kd(t.s,n.s),a=kd(t.l,n.l),o=kd(t.opacity,n.opacity);return function(e){return t.h=r(e),t.s=i(e),t.l=a(e),t.opacity=o(e),t+``}}}var ff=df(Dd),pf=df(kd);function mf(e,t){var n=kd((e=ed(e)).l,(t=ed(t)).l),r=kd(e.a,t.a),i=kd(e.b,t.b),a=kd(e.opacity,t.opacity);return function(t){return e.l=n(t),e.a=r(t),e.b=i(t),e.opacity=a(t),e+``}}function hf(e){return function(t,n){var r=e((t=sd(t)).h,(n=sd(n)).h),i=kd(t.c,n.c),a=kd(t.l,n.l),o=kd(t.opacity,n.opacity);return function(e){return t.h=r(e),t.c=i(e),t.l=a(e),t.opacity=o(e),t+``}}}var gf=hf(Dd),_f=hf(kd);function vf(e){return(function t(n){n=+n;function r(t,r){var i=e((t=yd(t)).h,(r=yd(r)).h),a=kd(t.s,r.s),o=kd(t.l,r.l),s=kd(t.opacity,r.opacity);return function(e){return t.h=i(e),t.s=a(e),t.l=o(e**+n),t.opacity=s(e),t+``}}return r.gamma=t,r})(1)}var yf=vf(Dd),bf=vf(kd);function xf(e,t){t===void 0&&(t=e,e=Kd);for(var n=0,r=t.length-1,i=t[0],a=Array(r<0?0:r);n<r;)a[n]=e(i,i=t[++n]);return function(e){var t=Math.max(0,Math.min(r-1,Math.floor(e*=r)));return a[t](e-t)}}function Sf(e,t){for(var n=Array(t),r=0;r<t;++r)n[r]=e(r/(t-1));return n}var Cf=r({interpolate:()=>Kd,interpolateArray:()=>Id,interpolateBasis:()=>Sd,interpolateBasisClosed:()=>Cd,interpolateCubehelix:()=>yf,interpolateCubehelixLong:()=>bf,interpolateDate:()=>Rd,interpolateDiscrete:()=>qd,interpolateHcl:()=>gf,interpolateHclLong:()=>_f,interpolateHsl:()=>ff,interpolateHslLong:()=>pf,interpolateHue:()=>Jd,interpolateLab:()=>mf,interpolateNumber:()=>zd,interpolateNumberArray:()=>Pd,interpolateObject:()=>Bd,interpolateRgb:()=>Ad,interpolateRgbBasis:()=>Md,interpolateRgbBasisClosed:()=>Nd,interpolateRound:()=>Yd,interpolateString:()=>Gd,interpolateTransformCss:()=>rf,interpolateTransformSvg:()=>af,interpolateZoom:()=>uf,piecewise:()=>xf,quantize:()=>Sf});function wf(e){return function(){return e}}function Tf(e){return+e}var Ef=[0,1];function Df(e){return e}function Of(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:wf(isNaN(t)?NaN:.5)}function kf(e,t){var n;return e>t&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}function Af(e,t,n){var r=e[0],i=e[1],a=t[0],o=t[1];return i<r?(r=Of(i,r),a=n(o,a)):(r=Of(r,i),a=n(a,o)),function(e){return a(r(e))}}function jf(e,t,n){var r=Math.min(e.length,t.length)-1,i=Array(r),a=Array(r),o=-1;for(e[r]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++o<r;)i[o]=Of(e[o],e[o+1]),a[o]=n(t[o],t[o+1]);return function(t){var n=fn(e,t,1,r)-1;return a[n](i[n](t))}}function Mf(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function Nf(){var e=Ef,t=Ef,n=Kd,r,i,a,o=Df,s,c,l;function u(){var n=Math.min(e.length,t.length);return o!==Df&&(o=kf(e[0],e[n-1])),s=n>2?jf:Af,c=l=null,d}function d(i){return i==null||isNaN(i=+i)?a:(c||=s(e.map(r),t,n))(r(o(i)))}return d.invert=function(n){return o(i((l||=s(t,e.map(r),zd))(n)))},d.domain=function(t){return arguments.length?(e=Array.from(t,Tf),u()):e.slice()},d.range=function(e){return arguments.length?(t=Array.from(e),u()):t.slice()},d.rangeRound=function(e){return t=Array.from(e),n=Yd,u()},d.clamp=function(e){return arguments.length?(o=e?!0:Df,u()):o!==Df},d.interpolate=function(e){return arguments.length?(n=e,u()):n},d.unknown=function(e){return arguments.length?(a=e,d):a},function(e,t){return r=e,i=t,u()}}function Pf(){return Nf()(Df,Df)}function Ff(e,t,n,r){var i=Nn(e,t,n),a;switch(r=Xn(r??`,f`),r.type){case`s`:var o=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(a=fr(i,o))&&(r.precision=a),lr(r,o);case``:case`e`:case`g`:case`p`:case`r`:r.precision==null&&!isNaN(a=pr(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=a-(r.type===`e`));break;case`f`:case`%`:r.precision==null&&!isNaN(a=dr(i))&&(r.precision=a-(r.type===`%`)*2);break}return cr(r)}function If(e){var t=e.domain;return e.ticks=function(e){var n=t();return jn(n[0],n[n.length-1],e??10)},e.tickFormat=function(e,n){var r=t();return Ff(r[0],r[r.length-1],e??10,n)},e.nice=function(n){n??=10;var r=t(),i=0,a=r.length-1,o=r[i],s=r[a],c,l,u=10;for(s<o&&(l=o,o=s,s=l,l=i,i=a,a=l);u-- >0;){if(l=Mn(o,s,n),l===c)return r[i]=o,r[a]=s,t(r);if(l>0)o=Math.floor(o/l)*l,s=Math.ceil(s/l)*l;else if(l<0)o=Math.ceil(o*l)/l,s=Math.floor(s*l)/l;else break;c=l}return e},e}function Lf(){var e=Pf();return e.copy=function(){return Mf(e,Lf())},eu.apply(e,arguments),If(e)}function Rf(e){var t;function n(e){return e==null||isNaN(e=+e)?t:e}return n.invert=n,n.domain=n.range=function(t){return arguments.length?(e=Array.from(t,Tf),n):e.slice()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return Rf(e).unknown(t)},e=arguments.length?Array.from(e,Tf):[0,1],If(n)}function zf(e,t){e=e.slice();var n=0,r=e.length-1,i=e[n],a=e[r],o;return a<i&&(o=n,n=r,r=o,o=i,i=a,a=o),e[n]=t.floor(i),e[r]=t.ceil(a),e}function Bf(e){return Math.log(e)}function Vf(e){return Math.exp(e)}function Hf(e){return-Math.log(-e)}function Uf(e){return-Math.exp(-e)}function Wf(e){return isFinite(e)?+(`1e`+e):e<0?0:e}function Gf(e){return e===10?Wf:e===Math.E?Math.exp:t=>e**+t}function Kf(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function qf(e){return(t,n)=>-e(-t,n)}function Jf(e){let t=e(Bf,Vf),n=t.domain,r=10,i,a;function o(){return i=Kf(r),a=Gf(r),n()[0]<0?(i=qf(i),a=qf(a),e(Hf,Uf)):e(Bf,Vf),t}return t.base=function(e){return arguments.length?(r=+e,o()):r},t.domain=function(e){return arguments.length?(n(e),o()):n()},t.ticks=e=>{let t=n(),o=t[0],s=t[t.length-1],c=s<o;c&&([o,s]=[s,o]);let l=i(o),u=i(s),d,f,p=e==null?10:+e,m=[];if(!(r%1)&&u-l<p){if(l=Math.floor(l),u=Math.ceil(u),o>0){for(;l<=u;++l)for(d=1;d<r;++d)if(f=l<0?d/a(-l):d*a(l),!(f<o)){if(f>s)break;m.push(f)}}else for(;l<=u;++l)for(d=r-1;d>=1;--d)if(f=l>0?d/a(-l):d*a(l),!(f<o)){if(f>s)break;m.push(f)}m.length*2<p&&(m=jn(o,s,p))}else m=jn(l,u,Math.min(u-l,p)).map(a);return c?m.reverse():m},t.tickFormat=(e,n)=>{if(e??=10,n??=r===10?`s`:`,`,typeof n!=`function`&&(!(r%1)&&(n=Xn(n)).precision==null&&(n.trim=!0),n=cr(n)),e===1/0)return n;let o=Math.max(1,r*e/t.ticks().length);return e=>{let t=e/a(Math.round(i(e)));return t*r<r-.5&&(t*=r),t<=o?n(e):``}},t.nice=()=>n(zf(n(),{floor:e=>a(Math.floor(i(e))),ceil:e=>a(Math.ceil(i(e)))})),t}function Yf(){let e=Jf(Nf()).domain([1,10]);return e.copy=()=>Mf(e,Yf()).base(e.base()),eu.apply(e,arguments),e}function Xf(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function Zf(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Qf(e){var t=1,n=e(Xf(t),Zf(t));return n.constant=function(n){return arguments.length?e(Xf(t=+n),Zf(t)):t},If(n)}function $f(){var e=Qf(Nf());return e.copy=function(){return Mf(e,$f()).constant(e.constant())},eu.apply(e,arguments)}function ep(e){return function(t){return t<0?-((-t)**+e):t**+e}}function tp(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function np(e){return e<0?-e*e:e*e}function rp(e){var t=e(Df,Df),n=1;function r(){return n===1?e(Df,Df):n===.5?e(tp,np):e(ep(n),ep(1/n))}return t.exponent=function(e){return arguments.length?(n=+e,r()):n},If(t)}function ip(){var e=rp(Nf());return e.copy=function(){return Mf(e,ip()).exponent(e.exponent())},eu.apply(e,arguments),e}function ap(){return ip.apply(null,arguments).exponent(.5)}function op(){var e=[],t=[],n=[],r;function i(){var r=0,i=Math.max(1,t.length);for(n=Array(i-1);++r<i;)n[r-1]=zn(e,r/i);return a}function a(e){return e==null||isNaN(e=+e)?r:t[fn(n,e)]}return a.invertExtent=function(r){var i=t.indexOf(r);return i<0?[NaN,NaN]:[i>0?n[i-1]:e[0],i<n.length?n[i]:e[e.length-1]]},a.domain=function(t){if(!arguments.length)return e.slice();e=[];for(let n of t)n!=null&&!isNaN(n=+n)&&e.push(n);return e.sort(an),i()},a.range=function(e){return arguments.length?(t=Array.from(e),i()):t.slice()},a.unknown=function(e){return arguments.length?(r=e,a):r},a.quantiles=function(){return n.slice()},a.copy=function(){return op().domain(e).range(t).unknown(r)},eu.apply(a,arguments)}function sp(){var e=0,t=1,n=1,r=[.5],i=[0,1],a;function o(e){return e!=null&&e<=e?i[fn(r,e,0,n)]:a}function s(){var i=-1;for(r=Array(n);++i<n;)r[i]=((i+1)*t-(i-n)*e)/(n+1);return o}return o.domain=function(n){return arguments.length?([e,t]=n,e=+e,t=+t,s()):[e,t]},o.range=function(e){return arguments.length?(n=(i=Array.from(e)).length-1,s()):i.slice()},o.invertExtent=function(a){var o=i.indexOf(a);return o<0?[NaN,NaN]:o<1?[e,r[0]]:o>=n?[r[n-1],t]:[r[o-1],r[o]]},o.unknown=function(e){return arguments.length&&(a=e),o},o.thresholds=function(){return r.slice()},o.copy=function(){return sp().domain([e,t]).range(i).unknown(a)},eu.apply(If(o),arguments)}function cp(){var e=[.5],t=[0,1],n,r=1;function i(i){return i!=null&&i<=i?t[fn(e,i,0,r)]:n}return i.domain=function(n){return arguments.length?(e=Array.from(n),r=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(n){return arguments.length?(t=Array.from(n),r=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(n){var r=t.indexOf(n);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(n=e,i):n},i.copy=function(){return cp().domain(e).range(t).unknown(n)},eu.apply(i,arguments)}function lp(e){return new Date(e)}function up(e){return e instanceof Date?+e:+new Date(+e)}function dp(e,t,n,r,i,a,o,s,c,l){var u=Pf(),d=u.invert,f=u.domain,p=l(`.%L`),m=l(`:%S`),h=l(`%I:%M`),g=l(`%I %p`),_=l(`%a %d`),v=l(`%b %d`),y=l(`%B`),b=l(`%Y`);function x(e){return(c(e)<e?p:s(e)<e?m:o(e)<e?h:a(e)<e?g:r(e)<e?i(e)<e?_:v:n(e)<e?y:b)(e)}return u.invert=function(e){return new Date(d(e))},u.domain=function(e){return arguments.length?f(Array.from(e,up)):f().map(lp)},u.ticks=function(t){var n=f();return e(n[0],n[n.length-1],t??10)},u.tickFormat=function(e,t){return t==null?x:l(t)},u.nice=function(e){var n=f();return(!e||typeof e.range!=`function`)&&(e=t(n[0],n[n.length-1],e??10)),e?f(zf(n,e)):u},u.copy=function(){return Mf(u,dp(e,t,n,r,i,a,o,s,c,l))},u}function fp(){return eu.apply(dp(ni,ri,Zr,Yr,Pr,Ar,Or,Er,Tr,Wa).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function pp(){return eu.apply(dp(ei,ti,Qr,Xr,Hr,jr,kr,Dr,Tr,Ka).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function mp(){var e=0,t=1,n,r,i,a,o=Df,s=!1,c;function l(e){return e==null||isNaN(e=+e)?c:o(i===0?.5:(e=(a(e)-n)*i,s?Math.max(0,Math.min(1,e)):e))}l.domain=function(o){return arguments.length?([e,t]=o,n=a(e=+e),r=a(t=+t),i=n===r?0:1/(r-n),l):[e,t]},l.clamp=function(e){return arguments.length?(s=!!e,l):s},l.interpolator=function(e){return arguments.length?(o=e,l):o};function u(e){return function(t){var n,r;return arguments.length?([n,r]=t,o=e(n,r),l):[o(0),o(1)]}}return l.range=u(Kd),l.rangeRound=u(Yd),l.unknown=function(e){return arguments.length?(c=e,l):c},function(o){return a=o,n=o(e),r=o(t),i=n===r?0:1/(r-n),l}}function hp(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function gp(){var e=If(mp()(Df));return e.copy=function(){return hp(e,gp())},tu.apply(e,arguments)}function _p(){var e=Jf(mp()).domain([1,10]);return e.copy=function(){return hp(e,_p()).base(e.base())},tu.apply(e,arguments)}function vp(){var e=Qf(mp());return e.copy=function(){return hp(e,vp()).constant(e.constant())},tu.apply(e,arguments)}function yp(){var e=rp(mp());return e.copy=function(){return hp(e,yp()).exponent(e.exponent())},tu.apply(e,arguments)}function bp(){return yp.apply(null,arguments).exponent(.5)}function xp(){var e=0,t=.5,n=1,r=1,i,a,o,s,c,l=Df,u,d=!1,f;function p(e){return isNaN(e=+e)?f:(e=.5+((e=+u(e))-a)*(r*e<r*a?s:c),l(d?Math.max(0,Math.min(1,e)):e))}p.domain=function(l){return arguments.length?([e,t,n]=l,i=u(e=+e),a=u(t=+t),o=u(n=+n),s=i===a?0:.5/(a-i),c=a===o?0:.5/(o-a),r=a<i?-1:1,p):[e,t,n]},p.clamp=function(e){return arguments.length?(d=!!e,p):d},p.interpolator=function(e){return arguments.length?(l=e,p):l};function m(e){return function(t){var n,r,i;return arguments.length?([n,r,i]=t,l=xf(e,[n,r,i]),p):[l(0),l(.5),l(1)]}}return p.range=m(Kd),p.rangeRound=m(Yd),p.unknown=function(e){return arguments.length?(f=e,p):f},function(l){return u=l,i=l(e),a=l(t),o=l(n),s=i===a?0:.5/(a-i),c=a===o?0:.5/(o-a),r=a<i?-1:1,p}}function Sp(){var e=If(xp()(Df));return e.copy=function(){return hp(e,Sp())},tu.apply(e,arguments)}function Cp(){var e=Jf(xp()).domain([.1,1,10]);return e.copy=function(){return hp(e,Cp()).base(e.base())},tu.apply(e,arguments)}function wp(){var e=Qf(xp());return e.copy=function(){return hp(e,wp()).constant(e.constant())},tu.apply(e,arguments)}function Tp(){var e=rp(xp());return e.copy=function(){return hp(e,Tp()).exponent(e.exponent())},tu.apply(e,arguments)}function Ep(){return Tp.apply(null,arguments).exponent(.5)}function Dp(e){for(var t=e.length/6|0,n=Array(t),r=0;r<t;)n[r]=`#`+e.slice(r*6,++r*6);return n}var Op=Dp(`1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf`),kp=Dp(`7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666`),Ap=Dp(`1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666`),jp=Dp(`4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0`),Mp=Dp(`a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928`),Np=Dp(`fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2`),Pp=Dp(`b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc`),Fp=Dp(`e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999`),Ip=Dp(`66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3`),Lp=Dp(`8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f`);function Rp(e,t,n){let r=e-t+n*2;return e?r>0?r:1:0}var zp=`identity`,Bp=`linear`,Vp=`sqrt`,Hp=`symlog`,Up=`time`,Wp=`sequential`,Gp=`diverging`,Kp=`quantile`,qp=`quantize`,Jp=`threshold`,Yp=`ordinal`,Xp=`point`,Zp=`band`,Qp=`bin-ordinal`,$p=`continuous`,em=`discrete`,tm=`discretizing`,nm=`interpolating`,rm=`temporal`;function im(e){return function(t){let n=t[0],r=t[1],i;return r<n&&(i=n,n=r,r=i),[e.invert(n),e.invert(r)]}}function am(e){return function(t){let n=e.range(),r=t[0],i=t[1],a=-1,o,s,c,l;for(i<r&&(s=r,r=i,i=s),c=0,l=n.length;c<l;++c)n[c]>=r&&n[c]<=i&&(a<0&&(a=c),o=c);if(!(a<0))return r=e.invertExtent(n[a]),i=e.invertExtent(n[o]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function om(){let e=ru().unknown(void 0),t=e.domain,n=e.range,r=[0,1],i,a,o=!1,s=0,c=0,l=.5;delete e.unknown;function u(){let e=t().length,u=r[1]<r[0],d=r[1-u],f=Rp(e,s,c),p=r[u-0];i=(d-p)/(f||1),o&&(i=Math.floor(i)),p+=(d-p-i*(e-s))*l,a=i*(1-s),o&&(p=Math.round(p),a=Math.round(a));let m=Hn(e).map(e=>p+i*e);return n(u?m.reverse():m)}return e.domain=function(e){return arguments.length?(t(e),u()):t()},e.range=function(e){return arguments.length?(r=[+e[0],+e[1]],u()):r.slice()},e.rangeRound=function(e){return r=[+e[0],+e[1]],o=!0,u()},e.bandwidth=function(){return a},e.step=function(){return i},e.round=function(e){return arguments.length?(o=!!e,u()):o},e.padding=function(e){return arguments.length?(c=Math.max(0,Math.min(1,e)),s=c,u()):s},e.paddingInner=function(e){return arguments.length?(s=Math.max(0,Math.min(1,e)),u()):s},e.paddingOuter=function(e){return arguments.length?(c=Math.max(0,Math.min(1,e)),u()):c},e.align=function(e){return arguments.length?(l=Math.max(0,Math.min(1,e)),u()):l},e.invertRange=function(e){if(e[0]==null||e[1]==null)return;let i=r[1]<r[0],o=i?n().reverse():n(),s=o.length-1,c=+e[0],l=+e[1],u,d,f;if(!(c!==c||l!==l)&&(l<c&&(f=c,c=l,l=f),!(l<o[0]||c>r[1-i])))return u=Math.max(0,fn(o,c)-1),d=c===l?u:fn(o,l)-1,c-o[u]>a+1e-10&&++u,i&&(f=u,u=s-d,d=s-f),u>d?void 0:t().slice(u,d+1)},e.invert=function(t){let n=e.invertRange([t,t]);return n&&n[0]},e.copy=function(){return om().domain(t()).range(r).round(o).paddingInner(s).paddingOuter(c).align(l)},u()}function sm(e){let t=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,e.copy=function(){return sm(t())},e}function cm(){return sm(om().paddingInner(1))}var lm=Array.prototype.map;function um(e){return lm.call(e,tt)}var dm=Array.prototype.slice;function fm(){let e=[],t=[];function n(n){return n==null||n!==n?void 0:t[(fn(e,n)-1)%t.length]}return n.domain=function(t){return arguments.length?(e=um(t),n):e.slice()},n.range=function(e){return arguments.length?(t=dm.call(e),n):t.slice()},n.tickFormat=function(t,n){return Ff(e[0],et(e),t??10,n)},n.copy=function(){return fm().domain(n.domain()).range(n.range())},n}var pm=new Map,mm=Symbol(`vega_scale`);function hm(e){return e[mm]=!0,e}function gm(e,t,n){let r=function(){let n=t();return n.invertRange||=n.invert?im(n):n.invertExtent?am(n):void 0,n.type=e,hm(n)};return r.metadata=Nt(j(n)),r}function I(e,t,n){return arguments.length>1?(pm.set(e,gm(e,t,n)),this):_m(e)?pm.get(e):void 0}I(zp,Rf),I(Bp,Lf,$p),I(`log`,Yf,[$p,`log`]),I(`pow`,ip,$p),I(Vp,ap,$p),I(Hp,$f,$p),I(Up,fp,[$p,rm]),I(`utc`,pp,[$p,rm]),I(Wp,gp,[$p,nm]),I(`${Wp}-${Bp}`,gp,[$p,nm]),I(`${Wp}-log`,_p,[$p,nm,`log`]),I(`${Wp}-pow`,yp,[$p,nm]),I(`${Wp}-${Vp}`,bp,[$p,nm]),I(`${Wp}-${Hp}`,vp,[$p,nm]),I(`${Gp}-${Bp}`,Sp,[$p,nm]),I(`${Gp}-log`,Cp,[$p,nm,`log`]),I(`${Gp}-pow`,Tp,[$p,nm]),I(`${Gp}-${Vp}`,Ep,[$p,nm]),I(`${Gp}-${Hp}`,wp,[$p,nm]),I(Kp,op,[tm,Kp]),I(qp,sp,tm),I(Jp,cp,tm),I(Qp,fm,[em,tm]),I(Yp,ru,em),I(Zp,om,em),I(Xp,cm,em);function _m(e){return pm.has(e)}function vm(e,t){let n=pm.get(e);return n&&n.metadata[t]}function ym(e){return vm(e,$p)}function bm(e){return vm(e,em)}function xm(e){return vm(e,tm)}function Sm(e){return vm(e,`log`)}function Cm(e){return vm(e,nm)}function wm(e,t){let n=t[0],r=et(t)-n;return function(t){return e(n+t*r)}}function Tm(e,t,n){return xf(Dm(t||`rgb`,n),e)}function Em(e,t){let n=Array(t),r=t+1;for(let i=0;i<t;)n[i]=e(++i/r);return n}function Dm(e,t){let n=Cf[Om(e)];return t!=null&&n&&n.gamma?n.gamma(t):n}function Om(e){return`interpolate`+e.toLowerCase().split(`-`).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}var km={blues:`cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90`,greens:`d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429`,greys:`e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e`,oranges:`fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303`,purples:`e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c`,reds:`fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13`,blueGreen:`d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429`,bluePurple:`ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71`,greenBlue:`d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1`,orangeRed:`fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403`,purpleBlue:`dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281`,purpleBlueGreen:`dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353`,purpleRed:`dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a`,redPurple:`fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174`,yellowGreen:`e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034`,yellowOrangeBrown:`feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204`,yellowOrangeRed:`fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225`,blueOrange:`134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07`,brownBlueGreen:`704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147`,purpleGreen:`5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29`,purpleOrange:`4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07`,redBlue:`8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85`,redGrey:`8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434`,yellowGreenBlue:`eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185`,redYellowBlue:`a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695`,redYellowGreen:`a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837`,pinkYellowGreen:`8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419`,spectral:`9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2`,viridis:`440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725`,magma:`0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf`,inferno:`0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4`,plasma:`0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921`,cividis:`00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647`,rainbow:`6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa`,sinebow:`ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040`,turbo:`23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00`,browns:`eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632`,tealBlues:`bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985`,teals:`bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667`,warmGreys:`dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e`,goldGreen:`f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36`,goldOrange:`f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26`,goldRed:`f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e`,lightGreyRed:`efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b`,lightGreyTeal:`e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc`,lightMulti:`e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c`,lightOrange:`f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b`,lightTealBlue:`e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988`,darkBlue:`3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff`,darkGold:`3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff`,darkGreen:`3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa`,darkMulti:`3737371f5287197d8c29a86995ce3fffe800ffffff`,darkRed:`3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c`},Am={accent:kp,category10:Op,category20:`1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5`,category20b:`393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6`,category20c:`3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9`,dark2:Ap,observable10:jp,paired:Mp,pastel1:Np,pastel2:Pp,set1:Fp,set2:Ip,set3:Lp,tableau10:`4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac`,tableau20:`4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5`};function jm(e){if(Qe(e))return e;let t=e.length/6|0,n=Array(t);for(let r=0;r<t;)n[r]=`#`+e.slice(r*6,++r*6);return n}function Mm(e,t){for(let n in e)Pm(n,t(e[n]))}var Nm={};Mm(Am,jm),Mm(km,e=>Tm(jm(e)));function Pm(e,t){return e&&=e.toLowerCase(),arguments.length>1?(Nm[e]=t,this):Nm[e]}function Fm(e,t,n){return M(t)&&n!=null&&(t=Math.min(t,~~(Dt(e.domain())/n)||1)),$e(t)&&(t.step,t=t.interval),t}function Im(e,t,n){var r=e.range(),i=Math.floor(r[0]),a=Math.ceil(et(r));if(i>a&&(r=a,a=i,i=r),t=t.filter(function(t){return t=e(t),i<=t&&t<=a}),n>0&&t.length>1){for(var o=[t[0],et(t)];t.length>n&&t.length>=3;)t=t.filter(function(e,t){return!(t%2)});t.length<3&&(t=o)}return t}function Lm(e,t){return e.bins?Im(e,Rm(e.bins,t)):e.ticks?e.ticks(t):e.domain()}function Rm(e,t){var n=e.length,r=~~(n/(t||n));return r<2?e.slice():e.filter(function(e,t){return!(t%r)})}function zm(e,t,n){var r=e.tickFormat?e.tickFormat(t,n):n?cr(n):String;if(Sm(e.type)){var i=Vm(n);r=e.bins?i:Bm(r,i)}return r}function Bm(e,t){return function(n){return e(n)?t(n):``}}function Vm(e){var t=Xn(e||`,`);if(t.precision==null){switch(t.precision=12,t.type){case`%`:t.precision-=2;break;case`e`:--t.precision;break}return Hm(cr(t),cr(`.1f`)(1)[1])}else return cr(t)}function Hm(e,t){return function(n){var r=e(n),i=r.indexOf(t),a,o;if(i<0)return r;for(a=Um(r,i),o=a<r.length?r.slice(a):``;--a>i;)if(r[a]!==`0`){++a;break}return r.slice(0,a)+o}}function Um(e,t){var n=e.lastIndexOf(`e`),r;if(n>0)return n;for(n=e.length;--n>t;)if(r=e.charCodeAt(n),r>=48&&r<=57)return n+1}var Wm=[],Gm=[];function Km(e,t){Gm.push({guard:e,Source:t})}function qm(e,t){for(let n of Wm)if(n.guard(e))return new n.Source(e,t);for(let n of Gm)if(n.guard(e))return new n.Source(e,t);throw Error(`Cannot figure out the data source type: `+JSON.stringify(e))}var Jm=class{stats={count:0,first:null};#e=!1;#t=!1;#n=[];paramRuntimeProvider=null;get behavior(){return 0}get domainSensitiveScaleChannels(){return[]}get label(){return`(${this.constructor.name})`}constructor(e){this.paramRuntimeProvider=e,this.children=[],this.parent=void 0,this.completed=!1}get disposed(){return this.#t}reset(){this.completed=!1;for(let e of this.children)e.reset();this.stats.count=0,this.stats.first=null}initialize(){}initializeOnce(){this.#e||=(this.initialize(),!0)}#r(){this._propagate=Function(`children`,`stats`,Hn(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
175
+ )`})),xl,Sl=n((()=>{bl(),cl(),xl=Object.fromEntries(Object.entries(ll).map(([e,t])=>[e,sl.parse(t.trim())]))}));function Cl(e){let t=new Set([`uint`,`int`,`float`,`long`]);return{...e,fields:e.fields.map(e=>({...e,isArray:e.size&&e.type!==`char`,arrayIsNumeric:e.size&&t.has(e.type),isNumeric:!e.size&&t.has(e.type)})).filter(e=>!!e.name)}}var wl=n((()=>{}));function Tl(e){return e.length>=12&&!Number.isNaN(Number.parseInt(e[9],10))&&e[10]?.split(`,`).filter(e=>!!e).length===Number.parseInt(e[9],10)}var El,Dl,Ol=n((()=>{cl(),Sl(),wl(),El={".":0,"-":-1,"+":1},Dl=class{autoSql;attemptDefaultBed;constructor(e={}){if(e.autoSql)this.autoSql=Cl(sl.parse(e.autoSql));else if(e.type){if(!xl[e.type])throw Error(`Type not found`);this.autoSql=Cl(xl[e.type])}else this.autoSql=Cl(xl.defaultBedSchema),this.attemptDefaultBed=!0}parseLine(e,t={}){let{autoSql:n}=this,{uniqueId:r}=t,i=Array.isArray(e)?e:e.split(` `),a={};if(!this.attemptDefaultBed||this.attemptDefaultBed&&Tl(i))for(let e=0;e<n.fields.length;e++){let t=n.fields[e],r=i[e],{isNumeric:o,isArray:s,arrayIsNumeric:c,name:l}=t;if(r==null)break;if(r!==`.`){if(o){let e=Number(r);r=Number.isNaN(e)?r:e}else s&&(r=r.split(`,`),r.at(-1)===``&&r.pop(),c&&(r=r.map(Number)));a[l]=r}}else{let e=[`chrom`,`chromStart`,`chromEnd`,`name`];a=Object.fromEntries(i.map((t,n)=>[e[n]||`field`+n,t])),a.chromStart=+a.chromStart,a.chromEnd=+a.chromEnd,Number.isNaN(Number.parseFloat(a.field4))||(a.score=+a.field4,delete a.field4),(a.field5===`+`||a.field5===`-`)&&(a.strand=a.field5,delete a.field5)}return r&&(a.uniqueId=r),a.strand=El[a.strand]||0,a.chrom=decodeURIComponent(a.chrom),a}}})),kl=r({default:()=>Dl}),Al=n((()=>{Ol()})),jl=/^\s*$/,Ml=/^\s*(?:browser\b|track\b|#)/,Nl;async function Pl(){return Nl??=Promise.resolve().then(()=>(Al(),kl)).then(e=>e.default),Nl}async function Fl(e){let t=new(await(Pl())),n=!1,r=[],i=e.split(/\r?\n/);for(let e=0;e<i.length;e++){let a=i[e];if(a.length!=0){if(!n){if(jl.test(a)||Ml.test(a))continue;n=!0}try{r.push(t.parseLine(a))}catch(t){throw Error(`Cannot parse BED line ${e+1}: ${t.message}`,{cause:t})}}}return r}Co(`bed`,Fl);var Il=/^\s*$/,Ll=/^\s*(?:browser\b|track\b|#)/,Rl=[`chrom1`,`start1`,`end1`,`chrom2`,`start2`,`end2`,`name`,`score`,`strand1`,`strand2`],zl=Rl.slice(0,6),Bl=e=>e,Vl=e=>e==`.`?null:e,Hl=e=>e==`+`?1:e==`-`?-1:0,Ul=e=>{if(e==`.`||e==`-1`||e==``)return null;let t=Number(e);return Number.isInteger(t)?t:null},Wl={chrom1:Vl,chrom2:Vl,name:Vl,strand1:Hl,strand2:Hl,start1:Ul,end1:Ul,start2:Ul,end2:Ul,score:e=>{if(e==`.`||e==``)return null;let t=Number(e);return Number.isNaN(t)?e:t}};function Gl(e){if(e.length<zl.length)return!1;for(let t=0;t<zl.length;t++)if(e[t]!=zl[t])return!1;return!0}function Kl(e,t={}){let n=e.split(/\r?\n/),r=t.columns,i=!1,a=!1,o=0,s=[],c=[],l=[];for(let e of n){if(o++,e.length==0)continue;if(!i){if(Il.test(e)||Ll.test(e))continue;i=!0}if(Il.test(e))continue;let t=e.split(` `);if(!a){let e=r||(Gl(t)?t:Rl);for(let t of e)s.push(t),c.push(Wl[t]??Bl);if(a=!0,!r&&e==t)continue}for(;s.length<t.length;)s.push(`field`+(s.length+1)),c.push(Bl);if(t.length<zl.length)throw Error(`BEDPE line ${o} has ${t.length} columns, expected at least ${zl.length}.`);let n={};for(let e=0;e<t.length;e++){let r=s[e];n[r]=c[e](t[e])}l.push(n)}return l}Co(`bedpe`,Kl);function ql(e,t){let n=[],r;for(let t of e.split(`
176
+ `))if(t.startsWith(`>`))r={identifier:t.match(/>(\S+)/)[1],sequence:``},n.push(r);else if(r)r.sequence+=t.trim();else throw Error(`Invalid fasta file!`);return n}Co(`fasta`,ql);function Jl(e,t){return e.length==t.length&&e.every((n,r)=>e[r]===t[r])}function Yl(e){return Array.isArray(e)?e:e===void 0?[]:[e]}function Xl(e){return e[e.length-1]}function Zl(e,t,n){return n=(n-e)/(t-e),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}function Ql(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function $l(e,t){switch(arguments.length){case 0:break;case 1:typeof e==`function`?this.interpolator(e):this.range(e);break;default:this.domain(e),typeof t==`function`?this.interpolator(t):this.range(t);break}return this}var eu=Symbol(`implicit`);function tu(){var e=new mn,t=[],n=[],r=eu;function i(i){let a=e.get(i);if(a===void 0){if(r!==eu)return r;e.set(i,a=t.push(i)-1)}return n[a%n.length]}return i.domain=function(n){if(!arguments.length)return t.slice();t=[],e=new mn;for(let r of n)e.has(r)||e.set(r,t.push(r)-1);return i},i.range=function(e){return arguments.length?(n=Array.from(e),i):n.slice()},i.unknown=function(e){return arguments.length?(r=e,i):r},i.copy=function(){return tu(t,n).unknown(r)},Ql.apply(i,arguments),i}function nu(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function ru(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function iu(){}var au=.7,ou=1/au,su=`\\s*([+-]?\\d+)\\s*`,cu=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,lu=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,uu=/^#([0-9a-f]{3,8})$/,du=RegExp(`^rgb\\(${su},${su},${su}\\)$`),fu=RegExp(`^rgb\\(${lu},${lu},${lu}\\)$`),pu=RegExp(`^rgba\\(${su},${su},${su},${cu}\\)$`),mu=RegExp(`^rgba\\(${lu},${lu},${lu},${cu}\\)$`),hu=RegExp(`^hsl\\(${cu},${lu},${lu}\\)$`),gu=RegExp(`^hsla\\(${cu},${lu},${lu},${cu}\\)$`),_u={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};nu(iu,Su,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:vu,formatHex:vu,formatHex8:yu,formatHsl:bu,formatRgb:xu,toString:xu});function vu(){return this.rgb().formatHex()}function yu(){return this.rgb().formatHex8()}function bu(){return Fu(this).formatHsl()}function xu(){return this.rgb().formatRgb()}function Su(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=uu.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?Cu(t):n===3?new Du(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?wu(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?wu(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=du.exec(e))?new Du(t[1],t[2],t[3],1):(t=fu.exec(e))?new Du(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=pu.exec(e))?wu(t[1],t[2],t[3],t[4]):(t=mu.exec(e))?wu(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=hu.exec(e))?Pu(t[1],t[2]/100,t[3]/100,1):(t=gu.exec(e))?Pu(t[1],t[2]/100,t[3]/100,t[4]):_u.hasOwnProperty(e)?Cu(_u[e]):e===`transparent`?new Du(NaN,NaN,NaN,0):null}function Cu(e){return new Du(e>>16&255,e>>8&255,e&255,1)}function wu(e,t,n,r){return r<=0&&(e=t=n=NaN),new Du(e,t,n,r)}function Tu(e){return e instanceof iu||(e=Su(e)),e?(e=e.rgb(),new Du(e.r,e.g,e.b,e.opacity)):new Du}function Eu(e,t,n,r){return arguments.length===1?Tu(e):new Du(e,t,n,r??1)}function Du(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}nu(Du,Eu,ru(iu,{brighter(e){return e=e==null?ou:ou**+e,new Du(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?au:au**+e,new Du(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Du(Mu(this.r),Mu(this.g),Mu(this.b),ju(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ou,formatHex:Ou,formatHex8:ku,formatRgb:Au,toString:Au}));function Ou(){return`#${Nu(this.r)}${Nu(this.g)}${Nu(this.b)}`}function ku(){return`#${Nu(this.r)}${Nu(this.g)}${Nu(this.b)}${Nu((isNaN(this.opacity)?1:this.opacity)*255)}`}function Au(){let e=ju(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Mu(this.r)}, ${Mu(this.g)}, ${Mu(this.b)}${e===1?`)`:`, ${e})`}`}function ju(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Mu(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Nu(e){return e=Mu(e),(e<16?`0`:``)+e.toString(16)}function Pu(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Lu(e,t,n,r)}function Fu(e){if(e instanceof Lu)return new Lu(e.h,e.s,e.l,e.opacity);if(e instanceof iu||(e=Su(e)),!e)return new Lu;if(e instanceof Lu)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n<r)*6:n===a?(r-t)/s+2:(t-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new Lu(o,s,c,e.opacity)}function Iu(e,t,n,r){return arguments.length===1?Fu(e):new Lu(e,t,n,r??1)}function Lu(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}nu(Lu,Iu,ru(iu,{brighter(e){return e=e==null?ou:ou**+e,new Lu(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?au:au**+e,new Lu(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new Du(Bu(e>=240?e-240:e+120,i,r),Bu(e,i,r),Bu(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Lu(Ru(this.h),zu(this.s),zu(this.l),ju(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=ju(this.opacity);return`${e===1?`hsl(`:`hsla(`}${Ru(this.h)}, ${zu(this.s)*100}%, ${zu(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function Ru(e){return e=(e||0)%360,e<0?e+360:e}function zu(e){return Math.max(0,Math.min(1,e||0))}function Bu(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var Vu=Math.PI/180,Hu=180/Math.PI,Uu=18,Wu=.96422,Gu=1,Ku=.82521,qu=4/29,Ju=6/29,Yu=3*Ju*Ju,Xu=Ju*Ju*Ju;function Zu(e){if(e instanceof $u)return new $u(e.l,e.a,e.b,e.opacity);if(e instanceof od)return sd(e);e instanceof Du||(e=Tu(e));var t=rd(e.r),n=rd(e.g),r=rd(e.b),i=ed((.2225045*t+.7168786*n+.0606169*r)/Gu),a,o;return t===n&&n===r?a=o=i:(a=ed((.4360747*t+.3850649*n+.1430804*r)/Wu),o=ed((.0139322*t+.0971045*n+.7141733*r)/Ku)),new $u(116*i-16,500*(a-i),200*(i-o),e.opacity)}function Qu(e,t,n,r){return arguments.length===1?Zu(e):new $u(e,t,n,r??1)}function $u(e,t,n,r){this.l=+e,this.a=+t,this.b=+n,this.opacity=+r}nu($u,Qu,ru(iu,{brighter(e){return new $u(this.l+Uu*(e??1),this.a,this.b,this.opacity)},darker(e){return new $u(this.l-Uu*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,n=isNaN(this.b)?e:e-this.b/200;return t=Wu*td(t),e=Gu*td(e),n=Ku*td(n),new Du(nd(3.1338561*t-1.6168667*e-.4906146*n),nd(-.9787684*t+1.9161415*e+.033454*n),nd(.0719453*t-.2289914*e+1.4052427*n),this.opacity)}}));function ed(e){return e>Xu?e**(1/3):e/Yu+qu}function td(e){return e>Ju?e*e*e:Yu*(e-qu)}function nd(e){return 255*(e<=.0031308?12.92*e:1.055*e**(1/2.4)-.055)}function rd(e){return(e/=255)<=.04045?e/12.92:((e+.055)/1.055)**2.4}function id(e){if(e instanceof od)return new od(e.h,e.c,e.l,e.opacity);if(e instanceof $u||(e=Zu(e)),e.a===0&&e.b===0)return new od(NaN,0<e.l&&e.l<100?0:NaN,e.l,e.opacity);var t=Math.atan2(e.b,e.a)*Hu;return new od(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function ad(e,t,n,r){return arguments.length===1?id(e):new od(e,t,n,r??1)}function od(e,t,n,r){this.h=+e,this.c=+t,this.l=+n,this.opacity=+r}function sd(e){if(isNaN(e.h))return new $u(e.l,0,0,e.opacity);var t=e.h*Vu;return new $u(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}nu(od,ad,ru(iu,{brighter(e){return new od(this.h,this.c,this.l+Uu*(e??1),this.opacity)},darker(e){return new od(this.h,this.c,this.l-Uu*(e??1),this.opacity)},rgb(){return sd(this).rgb()}}));var cd=-.14861,ld=1.78277,ud=-.29227,dd=-.90649,fd=1.97294,pd=fd*dd,md=fd*ld,hd=ld*ud-dd*cd;function gd(e){if(e instanceof vd)return new vd(e.h,e.s,e.l,e.opacity);e instanceof Du||(e=Tu(e));var t=e.r/255,n=e.g/255,r=e.b/255,i=(hd*r+pd*t-md*n)/(hd+pd-md),a=r-i,o=(fd*(n-i)-ud*a)/dd,s=Math.sqrt(o*o+a*a)/(fd*i*(1-i)),c=s?Math.atan2(o,a)*Hu-120:NaN;return new vd(c<0?c+360:c,s,i,e.opacity)}function _d(e,t,n,r){return arguments.length===1?gd(e):new vd(e,t,n,r??1)}function vd(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}nu(vd,_d,ru(iu,{brighter(e){return e=e==null?ou:ou**+e,new vd(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?au:au**+e,new vd(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*Vu,t=+this.l,n=isNaN(this.s)?0:this.s*t*(1-t),r=Math.cos(e),i=Math.sin(e);return new Du(255*(t+n*(cd*r+ld*i)),255*(t+n*(ud*r+dd*i)),255*(t+fd*r*n),this.opacity)}}));function yd(e,t,n,r,i){var a=e*e,o=a*e;return((1-3*e+3*a-o)*t+(4-6*a+3*o)*n+(1+3*e+3*a-3*o)*r+o*i)/6}function bd(e){var t=e.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,t-1):Math.floor(n*t),i=e[r],a=e[r+1],o=r>0?e[r-1]:2*i-a,s=r<t-1?e[r+2]:2*a-i;return yd((n-r/t)*t,o,i,a,s)}}function xd(e){var t=e.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*t),i=e[(r+t-1)%t],a=e[r%t],o=e[(r+1)%t],s=e[(r+2)%t];return yd((n-r/t)*t,i,a,o,s)}}var Sd=e=>()=>e;function Cd(e,t){return function(n){return e+n*t}}function wd(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Td(e,t){var n=t-e;return n?Cd(e,n>180||n<-180?n-360*Math.round(n/360):n):Sd(isNaN(e)?t:e)}function Ed(e){return(e=+e)==1?Dd:function(t,n){return n-t?wd(t,n,e):Sd(isNaN(t)?n:t)}}function Dd(e,t){var n=t-e;return n?Cd(e,n):Sd(isNaN(e)?t:e)}var Od=(function e(t){var n=Ed(t);function r(e,t){var r=n((e=Eu(e)).r,(t=Eu(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=Dd(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function kd(e){return function(t){var n=t.length,r=Array(n),i=Array(n),a=Array(n),o,s;for(o=0;o<n;++o)s=Eu(t[o]),r[o]=s.r||0,i[o]=s.g||0,a[o]=s.b||0;return r=e(r),i=e(i),a=e(a),s.opacity=1,function(e){return s.r=r(e),s.g=i(e),s.b=a(e),s+``}}}var Ad=kd(bd),jd=kd(xd);function Md(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function Nd(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Pd(e,t){return(Nd(t)?Md:Fd)(e,t)}function Fd(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=Array(r),a=Array(n),o;for(o=0;o<r;++o)i[o]=Wd(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(e){for(o=0;o<r;++o)a[o]=i[o](e);return a}}function Id(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function Ld(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function Rd(e,t){var n={},r={},i;for(i in(typeof e!=`object`||!e)&&(e={}),(typeof t!=`object`||!t)&&(t={}),t)i in e?n[i]=Wd(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var zd=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Bd=new RegExp(zd.source,`g`);function Vd(e){return function(){return e}}function Hd(e){return function(t){return e(t)+``}}function Ud(e,t){var n=zd.lastIndex=Bd.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=zd.exec(e))&&(i=Bd.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:Ld(r,i)})),n=Bd.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?Hd(c[0].x):Vd(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}function Wd(e,t){var n=typeof t,r;return t==null||n===`boolean`?Sd(t):(n===`number`?Ld:n===`string`?(r=Su(t))?(t=r,Od):Ud:t instanceof Su?Od:t instanceof Date?Id:Nd(t)?Md:Array.isArray(t)?Fd:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?Rd:Ld)(e,t)}function Gd(e){var t=e.length;return function(n){return e[Math.max(0,Math.min(t-1,Math.floor(n*t)))]}}function Kd(e,t){var n=Td(+e,+t);return function(e){var t=n(e);return t-360*Math.floor(t/360)}}function qd(e,t){return e=+e,t=+t,function(n){return Math.round(e*(1-n)+t*n)}}var Jd=180/Math.PI,Yd={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Xd(e,t,n,r,i,a){var o,s,c;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(c=e*n+t*r)&&(n-=e*c,r-=t*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),e*r<t*n&&(e=-e,t=-t,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*Jd,skewX:Math.atan(c)*Jd,scaleX:o,scaleY:s}}var Zd;function Qd(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?Yd:Xd(t.a,t.b,t.c,t.d,t.e,t.f)}function $d(e){return e==null||(Zd||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),Zd.setAttribute(`transform`,e),!(e=Zd.transform.baseVal.consolidate()))?Yd:(e=e.matrix,Xd(e.a,e.b,e.c,e.d,e.e,e.f))}function ef(e,t,n,r){function i(e){return e.length?e.pop()+` `:``}function a(e,r,i,a,o,s){if(e!==i||r!==a){var c=o.push(`translate(`,null,t,null,n);s.push({i:c-4,x:Ld(e,i)},{i:c-2,x:Ld(r,a)})}else (i||a)&&o.push(`translate(`+i+t+a+n)}function o(e,t,n,a){e===t?t&&n.push(i(n)+`rotate(`+t+r):(e-t>180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:Ld(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:Ld(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:Ld(e,n)},{i:s-2,x:Ld(t,r)})}else (n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t<n;)r[(a=i[t]).i]=a.x(e);return r.join(``)}}}var tf=ef(Qd,`px, `,`px)`,`deg)`),nf=ef($d,`, `,`)`,`)`),rf=1e-12;function af(e){return((e=Math.exp(e))+1/e)/2}function of(e){return((e=Math.exp(e))-1/e)/2}function sf(e){return((e=Math.exp(2*e))-1)/(e+1)}var cf=(function e(t,n,r){function i(e,i){var a=e[0],o=e[1],s=e[2],c=i[0],l=i[1],u=i[2],d=c-a,f=l-o,p=d*d+f*f,m,h;if(p<rf)h=Math.log(u/s)/t,m=function(e){return[a+e*d,o+e*f,s*Math.exp(t*e*h)]};else{var g=Math.sqrt(p),_=(u*u-s*s+r*p)/(2*s*n*g),v=(u*u-s*s-r*p)/(2*u*n*g),y=Math.log(Math.sqrt(_*_+1)-_);h=(Math.log(Math.sqrt(v*v+1)-v)-y)/t,m=function(e){var r=e*h,i=af(y),c=s/(n*g)*(i*sf(t*r+y)-of(y));return[a+c*d,o+c*f,s*i/af(t*r+y)]}}return m.duration=h*1e3*t/Math.SQRT2,m}return i.rho=function(t){var n=Math.max(.001,+t),r=n*n;return e(n,r,r*r)},i})(Math.SQRT2,2,4);function lf(e){return function(t,n){var r=e((t=Iu(t)).h,(n=Iu(n)).h),i=Dd(t.s,n.s),a=Dd(t.l,n.l),o=Dd(t.opacity,n.opacity);return function(e){return t.h=r(e),t.s=i(e),t.l=a(e),t.opacity=o(e),t+``}}}var uf=lf(Td),df=lf(Dd);function ff(e,t){var n=Dd((e=Qu(e)).l,(t=Qu(t)).l),r=Dd(e.a,t.a),i=Dd(e.b,t.b),a=Dd(e.opacity,t.opacity);return function(t){return e.l=n(t),e.a=r(t),e.b=i(t),e.opacity=a(t),e+``}}function pf(e){return function(t,n){var r=e((t=ad(t)).h,(n=ad(n)).h),i=Dd(t.c,n.c),a=Dd(t.l,n.l),o=Dd(t.opacity,n.opacity);return function(e){return t.h=r(e),t.c=i(e),t.l=a(e),t.opacity=o(e),t+``}}}var mf=pf(Td),hf=pf(Dd);function gf(e){return(function t(n){n=+n;function r(t,r){var i=e((t=_d(t)).h,(r=_d(r)).h),a=Dd(t.s,r.s),o=Dd(t.l,r.l),s=Dd(t.opacity,r.opacity);return function(e){return t.h=i(e),t.s=a(e),t.l=o(e**+n),t.opacity=s(e),t+``}}return r.gamma=t,r})(1)}var _f=gf(Td),vf=gf(Dd);function yf(e,t){t===void 0&&(t=e,e=Wd);for(var n=0,r=t.length-1,i=t[0],a=Array(r<0?0:r);n<r;)a[n]=e(i,i=t[++n]);return function(e){var t=Math.max(0,Math.min(r-1,Math.floor(e*=r)));return a[t](e-t)}}function bf(e,t){for(var n=Array(t),r=0;r<t;++r)n[r]=e(r/(t-1));return n}var xf=r({interpolate:()=>Wd,interpolateArray:()=>Pd,interpolateBasis:()=>bd,interpolateBasisClosed:()=>xd,interpolateCubehelix:()=>_f,interpolateCubehelixLong:()=>vf,interpolateDate:()=>Id,interpolateDiscrete:()=>Gd,interpolateHcl:()=>mf,interpolateHclLong:()=>hf,interpolateHsl:()=>uf,interpolateHslLong:()=>df,interpolateHue:()=>Kd,interpolateLab:()=>ff,interpolateNumber:()=>Ld,interpolateNumberArray:()=>Md,interpolateObject:()=>Rd,interpolateRgb:()=>Od,interpolateRgbBasis:()=>Ad,interpolateRgbBasisClosed:()=>jd,interpolateRound:()=>qd,interpolateString:()=>Ud,interpolateTransformCss:()=>tf,interpolateTransformSvg:()=>nf,interpolateZoom:()=>cf,piecewise:()=>yf,quantize:()=>bf});function Sf(e){return function(){return e}}function Cf(e){return+e}var wf=[0,1];function Tf(e){return e}function Ef(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:Sf(isNaN(t)?NaN:.5)}function Df(e,t){var n;return e>t&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}function Of(e,t,n){var r=e[0],i=e[1],a=t[0],o=t[1];return i<r?(r=Ef(i,r),a=n(o,a)):(r=Ef(r,i),a=n(a,o)),function(e){return a(r(e))}}function kf(e,t,n){var r=Math.min(e.length,t.length)-1,i=Array(r),a=Array(r),o=-1;for(e[r]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++o<r;)i[o]=Ef(e[o],e[o+1]),a[o]=n(t[o],t[o+1]);return function(t){var n=un(e,t,1,r)-1;return a[n](i[n](t))}}function Af(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function jf(){var e=wf,t=wf,n=Wd,r,i,a,o=Tf,s,c,l;function u(){var n=Math.min(e.length,t.length);return o!==Tf&&(o=Df(e[0],e[n-1])),s=n>2?kf:Of,c=l=null,d}function d(i){return i==null||isNaN(i=+i)?a:(c||=s(e.map(r),t,n))(r(o(i)))}return d.invert=function(n){return o(i((l||=s(t,e.map(r),Ld))(n)))},d.domain=function(t){return arguments.length?(e=Array.from(t,Cf),u()):e.slice()},d.range=function(e){return arguments.length?(t=Array.from(e),u()):t.slice()},d.rangeRound=function(e){return t=Array.from(e),n=qd,u()},d.clamp=function(e){return arguments.length?(o=e?!0:Tf,u()):o!==Tf},d.interpolate=function(e){return arguments.length?(n=e,u()):n},d.unknown=function(e){return arguments.length?(a=e,d):a},function(e,t){return r=e,i=t,u()}}function Mf(){return jf()(Tf,Tf)}function Nf(e,t,n,r){var i=jn(e,t,n),a;switch(r=Jn(r??`,f`),r.type){case`s`:var o=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(a=ur(i,o))&&(r.precision=a),sr(r,o);case``:case`e`:case`g`:case`p`:case`r`:r.precision==null&&!isNaN(a=dr(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=a-(r.type===`e`));break;case`f`:case`%`:r.precision==null&&!isNaN(a=lr(i))&&(r.precision=a-(r.type===`%`)*2);break}return or(r)}function Pf(e){var t=e.domain;return e.ticks=function(e){var n=t();return kn(n[0],n[n.length-1],e??10)},e.tickFormat=function(e,n){var r=t();return Nf(r[0],r[r.length-1],e??10,n)},e.nice=function(n){n??=10;var r=t(),i=0,a=r.length-1,o=r[i],s=r[a],c,l,u=10;for(s<o&&(l=o,o=s,s=l,l=i,i=a,a=l);u-- >0;){if(l=An(o,s,n),l===c)return r[i]=o,r[a]=s,t(r);if(l>0)o=Math.floor(o/l)*l,s=Math.ceil(s/l)*l;else if(l<0)o=Math.ceil(o*l)/l,s=Math.floor(s*l)/l;else break;c=l}return e},e}function Ff(){var e=Mf();return e.copy=function(){return Af(e,Ff())},Ql.apply(e,arguments),Pf(e)}function If(e){var t;function n(e){return e==null||isNaN(e=+e)?t:e}return n.invert=n,n.domain=n.range=function(t){return arguments.length?(e=Array.from(t,Cf),n):e.slice()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return If(e).unknown(t)},e=arguments.length?Array.from(e,Cf):[0,1],Pf(n)}function Lf(e,t){e=e.slice();var n=0,r=e.length-1,i=e[n],a=e[r],o;return a<i&&(o=n,n=r,r=o,o=i,i=a,a=o),e[n]=t.floor(i),e[r]=t.ceil(a),e}function Rf(e){return Math.log(e)}function zf(e){return Math.exp(e)}function Bf(e){return-Math.log(-e)}function Vf(e){return-Math.exp(-e)}function Hf(e){return isFinite(e)?+(`1e`+e):e<0?0:e}function Uf(e){return e===10?Hf:e===Math.E?Math.exp:t=>e**+t}function Wf(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function Gf(e){return(t,n)=>-e(-t,n)}function Kf(e){let t=e(Rf,zf),n=t.domain,r=10,i,a;function o(){return i=Wf(r),a=Uf(r),n()[0]<0?(i=Gf(i),a=Gf(a),e(Bf,Vf)):e(Rf,zf),t}return t.base=function(e){return arguments.length?(r=+e,o()):r},t.domain=function(e){return arguments.length?(n(e),o()):n()},t.ticks=e=>{let t=n(),o=t[0],s=t[t.length-1],c=s<o;c&&([o,s]=[s,o]);let l=i(o),u=i(s),d,f,p=e==null?10:+e,m=[];if(!(r%1)&&u-l<p){if(l=Math.floor(l),u=Math.ceil(u),o>0){for(;l<=u;++l)for(d=1;d<r;++d)if(f=l<0?d/a(-l):d*a(l),!(f<o)){if(f>s)break;m.push(f)}}else for(;l<=u;++l)for(d=r-1;d>=1;--d)if(f=l>0?d/a(-l):d*a(l),!(f<o)){if(f>s)break;m.push(f)}m.length*2<p&&(m=kn(o,s,p))}else m=kn(l,u,Math.min(u-l,p)).map(a);return c?m.reverse():m},t.tickFormat=(e,n)=>{if(e??=10,n??=r===10?`s`:`,`,typeof n!=`function`&&(!(r%1)&&(n=Jn(n)).precision==null&&(n.trim=!0),n=or(n)),e===1/0)return n;let o=Math.max(1,r*e/t.ticks().length);return e=>{let t=e/a(Math.round(i(e)));return t*r<r-.5&&(t*=r),t<=o?n(e):``}},t.nice=()=>n(Lf(n(),{floor:e=>a(Math.floor(i(e))),ceil:e=>a(Math.ceil(i(e)))})),t}function qf(){let e=Kf(jf()).domain([1,10]);return e.copy=()=>Af(e,qf()).base(e.base()),Ql.apply(e,arguments),e}function Jf(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function Yf(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Xf(e){var t=1,n=e(Jf(t),Yf(t));return n.constant=function(n){return arguments.length?e(Jf(t=+n),Yf(t)):t},Pf(n)}function Zf(){var e=Xf(jf());return e.copy=function(){return Af(e,Zf()).constant(e.constant())},Ql.apply(e,arguments)}function Qf(e){return function(t){return t<0?-((-t)**+e):t**+e}}function $f(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function ep(e){return e<0?-e*e:e*e}function tp(e){var t=e(Tf,Tf),n=1;function r(){return n===1?e(Tf,Tf):n===.5?e($f,ep):e(Qf(n),Qf(1/n))}return t.exponent=function(e){return arguments.length?(n=+e,r()):n},Pf(t)}function np(){var e=tp(jf());return e.copy=function(){return Af(e,np()).exponent(e.exponent())},Ql.apply(e,arguments),e}function rp(){return np.apply(null,arguments).exponent(.5)}function ip(){var e=[],t=[],n=[],r;function i(){var r=0,i=Math.max(1,t.length);for(n=Array(i-1);++r<i;)n[r-1]=Ln(e,r/i);return a}function a(e){return e==null||isNaN(e=+e)?r:t[un(n,e)]}return a.invertExtent=function(r){var i=t.indexOf(r);return i<0?[NaN,NaN]:[i>0?n[i-1]:e[0],i<n.length?n[i]:e[e.length-1]]},a.domain=function(t){if(!arguments.length)return e.slice();e=[];for(let n of t)n!=null&&!isNaN(n=+n)&&e.push(n);return e.sort(nn),i()},a.range=function(e){return arguments.length?(t=Array.from(e),i()):t.slice()},a.unknown=function(e){return arguments.length?(r=e,a):r},a.quantiles=function(){return n.slice()},a.copy=function(){return ip().domain(e).range(t).unknown(r)},Ql.apply(a,arguments)}function ap(){var e=0,t=1,n=1,r=[.5],i=[0,1],a;function o(e){return e!=null&&e<=e?i[un(r,e,0,n)]:a}function s(){var i=-1;for(r=Array(n);++i<n;)r[i]=((i+1)*t-(i-n)*e)/(n+1);return o}return o.domain=function(n){return arguments.length?([e,t]=n,e=+e,t=+t,s()):[e,t]},o.range=function(e){return arguments.length?(n=(i=Array.from(e)).length-1,s()):i.slice()},o.invertExtent=function(a){var o=i.indexOf(a);return o<0?[NaN,NaN]:o<1?[e,r[0]]:o>=n?[r[n-1],t]:[r[o-1],r[o]]},o.unknown=function(e){return arguments.length&&(a=e),o},o.thresholds=function(){return r.slice()},o.copy=function(){return ap().domain([e,t]).range(i).unknown(a)},Ql.apply(Pf(o),arguments)}function op(){var e=[.5],t=[0,1],n,r=1;function i(i){return i!=null&&i<=i?t[un(e,i,0,r)]:n}return i.domain=function(n){return arguments.length?(e=Array.from(n),r=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(n){return arguments.length?(t=Array.from(n),r=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(n){var r=t.indexOf(n);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(n=e,i):n},i.copy=function(){return op().domain(e).range(t).unknown(n)},Ql.apply(i,arguments)}function sp(e){return new Date(e)}function cp(e){return e instanceof Date?+e:+new Date(+e)}function lp(e,t,n,r,i,a,o,s,c,l){var u=Mf(),d=u.invert,f=u.domain,p=l(`.%L`),m=l(`:%S`),h=l(`%I:%M`),g=l(`%I %p`),_=l(`%a %d`),v=l(`%b %d`),y=l(`%B`),b=l(`%Y`);function x(e){return(c(e)<e?p:s(e)<e?m:o(e)<e?h:a(e)<e?g:r(e)<e?i(e)<e?_:v:n(e)<e?y:b)(e)}return u.invert=function(e){return new Date(d(e))},u.domain=function(e){return arguments.length?f(Array.from(e,cp)):f().map(sp)},u.ticks=function(t){var n=f();return e(n[0],n[n.length-1],t??10)},u.tickFormat=function(e,t){return t==null?x:l(t)},u.nice=function(e){var n=f();return(!e||typeof e.range!=`function`)&&(e=t(n[0],n[n.length-1],e??10)),e?f(Lf(n,e)):u},u.copy=function(){return Af(u,lp(e,t,n,r,i,a,o,s,c,l))},u}function up(){return Ql.apply(lp(ei,ti,Yr,qr,Mr,Or,Er,wr,Cr,Ha).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function dp(){return Ql.apply(lp(Qr,$r,Xr,Jr,Br,kr,Dr,Tr,Cr,Wa).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function fp(){var e=0,t=1,n,r,i,a,o=Tf,s=!1,c;function l(e){return e==null||isNaN(e=+e)?c:o(i===0?.5:(e=(a(e)-n)*i,s?Math.max(0,Math.min(1,e)):e))}l.domain=function(o){return arguments.length?([e,t]=o,n=a(e=+e),r=a(t=+t),i=n===r?0:1/(r-n),l):[e,t]},l.clamp=function(e){return arguments.length?(s=!!e,l):s},l.interpolator=function(e){return arguments.length?(o=e,l):o};function u(e){return function(t){var n,r;return arguments.length?([n,r]=t,o=e(n,r),l):[o(0),o(1)]}}return l.range=u(Wd),l.rangeRound=u(qd),l.unknown=function(e){return arguments.length?(c=e,l):c},function(o){return a=o,n=o(e),r=o(t),i=n===r?0:1/(r-n),l}}function pp(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function mp(){var e=Pf(fp()(Tf));return e.copy=function(){return pp(e,mp())},$l.apply(e,arguments)}function hp(){var e=Kf(fp()).domain([1,10]);return e.copy=function(){return pp(e,hp()).base(e.base())},$l.apply(e,arguments)}function gp(){var e=Xf(fp());return e.copy=function(){return pp(e,gp()).constant(e.constant())},$l.apply(e,arguments)}function _p(){var e=tp(fp());return e.copy=function(){return pp(e,_p()).exponent(e.exponent())},$l.apply(e,arguments)}function vp(){return _p.apply(null,arguments).exponent(.5)}function yp(){var e=0,t=.5,n=1,r=1,i,a,o,s,c,l=Tf,u,d=!1,f;function p(e){return isNaN(e=+e)?f:(e=.5+((e=+u(e))-a)*(r*e<r*a?s:c),l(d?Math.max(0,Math.min(1,e)):e))}p.domain=function(l){return arguments.length?([e,t,n]=l,i=u(e=+e),a=u(t=+t),o=u(n=+n),s=i===a?0:.5/(a-i),c=a===o?0:.5/(o-a),r=a<i?-1:1,p):[e,t,n]},p.clamp=function(e){return arguments.length?(d=!!e,p):d},p.interpolator=function(e){return arguments.length?(l=e,p):l};function m(e){return function(t){var n,r,i;return arguments.length?([n,r,i]=t,l=yf(e,[n,r,i]),p):[l(0),l(.5),l(1)]}}return p.range=m(Wd),p.rangeRound=m(qd),p.unknown=function(e){return arguments.length?(f=e,p):f},function(l){return u=l,i=l(e),a=l(t),o=l(n),s=i===a?0:.5/(a-i),c=a===o?0:.5/(o-a),r=a<i?-1:1,p}}function bp(){var e=Pf(yp()(Tf));return e.copy=function(){return pp(e,bp())},$l.apply(e,arguments)}function xp(){var e=Kf(yp()).domain([.1,1,10]);return e.copy=function(){return pp(e,xp()).base(e.base())},$l.apply(e,arguments)}function Sp(){var e=Xf(yp());return e.copy=function(){return pp(e,Sp()).constant(e.constant())},$l.apply(e,arguments)}function Cp(){var e=tp(yp());return e.copy=function(){return pp(e,Cp()).exponent(e.exponent())},$l.apply(e,arguments)}function wp(){return Cp.apply(null,arguments).exponent(.5)}function Tp(e){for(var t=e.length/6|0,n=Array(t),r=0;r<t;)n[r]=`#`+e.slice(r*6,++r*6);return n}var Ep=Tp(`1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf`),Dp=Tp(`7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666`),Op=Tp(`1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666`),kp=Tp(`4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0`),Ap=Tp(`a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928`),jp=Tp(`fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2`),Mp=Tp(`b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc`),Np=Tp(`e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999`),Pp=Tp(`66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3`),Fp=Tp(`8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f`);function Ip(e,t,n){let r=e-t+n*2;return e?r>0?r:1:0}var Lp=`identity`,Rp=`linear`,zp=`sqrt`,Bp=`symlog`,Vp=`time`,Hp=`sequential`,Up=`diverging`,Wp=`quantile`,Gp=`quantize`,Kp=`threshold`,qp=`ordinal`,Jp=`point`,Yp=`band`,Xp=`bin-ordinal`,Zp=`continuous`,Qp=`discrete`,$p=`discretizing`,em=`interpolating`,tm=`temporal`;function nm(e){return function(t){let n=t[0],r=t[1],i;return r<n&&(i=n,n=r,r=i),[e.invert(n),e.invert(r)]}}function rm(e){return function(t){let n=e.range(),r=t[0],i=t[1],a=-1,o,s,c,l;for(i<r&&(s=r,r=i,i=s),c=0,l=n.length;c<l;++c)n[c]>=r&&n[c]<=i&&(a<0&&(a=c),o=c);if(!(a<0))return r=e.invertExtent(n[a]),i=e.invertExtent(n[o]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function im(){let e=tu().unknown(void 0),t=e.domain,n=e.range,r=[0,1],i,a,o=!1,s=0,c=0,l=.5;delete e.unknown;function u(){let e=t().length,u=r[1]<r[0],d=r[1-u],f=Ip(e,s,c),p=r[u-0];i=(d-p)/(f||1),o&&(i=Math.floor(i)),p+=(d-p-i*(e-s))*l,a=i*(1-s),o&&(p=Math.round(p),a=Math.round(a));let m=Bn(e).map(e=>p+i*e);return n(u?m.reverse():m)}return e.domain=function(e){return arguments.length?(t(e),u()):t()},e.range=function(e){return arguments.length?(r=[+e[0],+e[1]],u()):r.slice()},e.rangeRound=function(e){return r=[+e[0],+e[1]],o=!0,u()},e.bandwidth=function(){return a},e.step=function(){return i},e.round=function(e){return arguments.length?(o=!!e,u()):o},e.padding=function(e){return arguments.length?(c=Math.max(0,Math.min(1,e)),s=c,u()):s},e.paddingInner=function(e){return arguments.length?(s=Math.max(0,Math.min(1,e)),u()):s},e.paddingOuter=function(e){return arguments.length?(c=Math.max(0,Math.min(1,e)),u()):c},e.align=function(e){return arguments.length?(l=Math.max(0,Math.min(1,e)),u()):l},e.invertRange=function(e){if(e[0]==null||e[1]==null)return;let i=r[1]<r[0],o=i?n().reverse():n(),s=o.length-1,c=+e[0],l=+e[1],u,d,f;if(!(c!==c||l!==l)&&(l<c&&(f=c,c=l,l=f),!(l<o[0]||c>r[1-i])))return u=Math.max(0,un(o,c)-1),d=c===l?u:un(o,l)-1,c-o[u]>a+1e-10&&++u,i&&(f=u,u=s-d,d=s-f),u>d?void 0:t().slice(u,d+1)},e.invert=function(t){let n=e.invertRange([t,t]);return n&&n[0]},e.copy=function(){return im().domain(t()).range(r).round(o).paddingInner(s).paddingOuter(c).align(l)},u()}function am(e){let t=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,e.copy=function(){return am(t())},e}function om(){return am(im().paddingInner(1))}var sm=Array.prototype.map;function cm(e){return sm.call(e,$e)}var lm=Array.prototype.slice;function um(){let e=[],t=[];function n(n){return n==null||n!==n?void 0:t[(un(e,n)-1)%t.length]}return n.domain=function(t){return arguments.length?(e=cm(t),n):e.slice()},n.range=function(e){return arguments.length?(t=lm.call(e),n):t.slice()},n.tickFormat=function(t,n){return Nf(e[0],Qe(e),t??10,n)},n.copy=function(){return um().domain(n.domain()).range(n.range())},n}var dm=new Map,fm=Symbol(`vega_scale`);function pm(e){return e[fm]=!0,e}function mm(e,t,n){let r=function(){let n=t();return n.invertRange||=n.invert?nm(n):n.invertExtent?rm(n):void 0,n.type=e,pm(n)};return r.metadata=jt(N(n)),r}function R(e,t,n){return arguments.length>1?(dm.set(e,mm(e,t,n)),this):hm(e)?dm.get(e):void 0}R(Lp,If),R(Rp,Ff,Zp),R(`log`,qf,[Zp,`log`]),R(`pow`,np,Zp),R(zp,rp,Zp),R(Bp,Zf,Zp),R(Vp,up,[Zp,tm]),R(`utc`,dp,[Zp,tm]),R(Hp,mp,[Zp,em]),R(`${Hp}-${Rp}`,mp,[Zp,em]),R(`${Hp}-log`,hp,[Zp,em,`log`]),R(`${Hp}-pow`,_p,[Zp,em]),R(`${Hp}-${zp}`,vp,[Zp,em]),R(`${Hp}-${Bp}`,gp,[Zp,em]),R(`${Up}-${Rp}`,bp,[Zp,em]),R(`${Up}-log`,xp,[Zp,em,`log`]),R(`${Up}-pow`,Cp,[Zp,em]),R(`${Up}-${zp}`,wp,[Zp,em]),R(`${Up}-${Bp}`,Sp,[Zp,em]),R(Wp,ip,[$p,Wp]),R(Gp,ap,$p),R(Kp,op,$p),R(Xp,um,[Qp,$p]),R(qp,tu,Qp),R(Yp,im,Qp),R(Jp,om,Qp);function hm(e){return dm.has(e)}function gm(e,t){let n=dm.get(e);return n&&n.metadata[t]}function _m(e){return gm(e,Zp)}function vm(e){return gm(e,Qp)}function ym(e){return gm(e,$p)}function bm(e){return gm(e,`log`)}function xm(e){return gm(e,em)}function Sm(e,t){let n=t[0],r=Qe(t)-n;return function(t){return e(n+t*r)}}function Cm(e,t,n){return yf(Tm(t||`rgb`,n),e)}function wm(e,t){let n=Array(t),r=t+1;for(let i=0;i<t;)n[i]=e(++i/r);return n}function Tm(e,t){let n=xf[Em(e)];return t!=null&&n&&n.gamma?n.gamma(t):n}function Em(e){return`interpolate`+e.toLowerCase().split(`-`).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}var Dm={blues:`cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90`,greens:`d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429`,greys:`e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e`,oranges:`fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303`,purples:`e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c`,reds:`fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13`,blueGreen:`d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429`,bluePurple:`ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71`,greenBlue:`d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1`,orangeRed:`fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403`,purpleBlue:`dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281`,purpleBlueGreen:`dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353`,purpleRed:`dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a`,redPurple:`fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174`,yellowGreen:`e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034`,yellowOrangeBrown:`feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204`,yellowOrangeRed:`fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225`,blueOrange:`134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07`,brownBlueGreen:`704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147`,purpleGreen:`5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29`,purpleOrange:`4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07`,redBlue:`8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85`,redGrey:`8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434`,yellowGreenBlue:`eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185`,redYellowBlue:`a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695`,redYellowGreen:`a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837`,pinkYellowGreen:`8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419`,spectral:`9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2`,viridis:`440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725`,magma:`0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf`,inferno:`0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4`,plasma:`0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921`,cividis:`00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647`,rainbow:`6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa`,sinebow:`ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040`,turbo:`23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00`,browns:`eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632`,tealBlues:`bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985`,teals:`bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667`,warmGreys:`dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e`,goldGreen:`f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36`,goldOrange:`f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26`,goldRed:`f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e`,lightGreyRed:`efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b`,lightGreyTeal:`e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc`,lightMulti:`e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c`,lightOrange:`f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b`,lightTealBlue:`e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988`,darkBlue:`3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff`,darkGold:`3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff`,darkGreen:`3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa`,darkMulti:`3737371f5287197d8c29a86995ce3fffe800ffffff`,darkRed:`3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c`},Om={accent:Dp,category10:Ep,category20:`1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5`,category20b:`393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6`,category20c:`3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9`,dark2:Op,observable10:kp,paired:Ap,pastel1:jp,pastel2:Mp,set1:Np,set2:Pp,set3:Fp,tableau10:`4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac`,tableau20:`4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5`};function km(e){if(k(e))return e;let t=e.length/6|0,n=Array(t);for(let r=0;r<t;)n[r]=`#`+e.slice(r*6,++r*6);return n}function Am(e,t){for(let n in e)Mm(n,t(e[n]))}var jm={};Am(Om,km),Am(Dm,e=>Cm(km(e)));function Mm(e,t){return e&&=e.toLowerCase(),arguments.length>1?(jm[e]=t,this):jm[e]}function Nm(e,t,n){return P(t)&&n!=null&&(t=Math.min(t,~~(Tt(e.domain())/n)||1)),Ze(t)&&(t.step,t=t.interval),t}function Pm(e,t,n){var r=e.range(),i=Math.floor(r[0]),a=Math.ceil(Qe(r));if(i>a&&(r=a,a=i,i=r),t=t.filter(function(t){return t=e(t),i<=t&&t<=a}),n>0&&t.length>1){for(var o=[t[0],Qe(t)];t.length>n&&t.length>=3;)t=t.filter(function(e,t){return!(t%2)});t.length<3&&(t=o)}return t}function Fm(e,t){return e.bins?Pm(e,Im(e.bins,t)):e.ticks?e.ticks(t):e.domain()}function Im(e,t){var n=e.length,r=~~(n/(t||n));return r<2?e.slice():e.filter(function(e,t){return!(t%r)})}function Lm(e,t,n){var r=e.tickFormat?e.tickFormat(t,n):n?or(n):String;if(bm(e.type)){var i=zm(n);r=e.bins?i:Rm(r,i)}return r}function Rm(e,t){return function(n){return e(n)?t(n):``}}function zm(e){var t=Jn(e||`,`);if(t.precision==null){switch(t.precision=12,t.type){case`%`:t.precision-=2;break;case`e`:--t.precision;break}return Bm(or(t),or(`.1f`)(1)[1])}else return or(t)}function Bm(e,t){return function(n){var r=e(n),i=r.indexOf(t),a,o;if(i<0)return r;for(a=Vm(r,i),o=a<r.length?r.slice(a):``;--a>i;)if(r[a]!==`0`){++a;break}return r.slice(0,a)+o}}function Vm(e,t){var n=e.lastIndexOf(`e`),r;if(n>0)return n;for(n=e.length;--n>t;)if(r=e.charCodeAt(n),r>=48&&r<=57)return n+1}var Hm=[],Um=[];function Wm(e,t){Um.push({guard:e,Source:t})}function Gm(e,t){for(let n of Hm)if(n.guard(e))return new n.Source(e,t);for(let n of Um)if(n.guard(e))return new n.Source(e,t);throw Error(`Cannot figure out the data source type: `+JSON.stringify(e))}var Km=class{stats={count:0,first:null};#e=!1;#t=!1;#n=[];paramRuntimeProvider=null;get behavior(){return 0}get domainSensitiveScaleChannels(){return[]}get label(){return`(${this.constructor.name})`}constructor(e){this.paramRuntimeProvider=e,this.children=[],this.parent=void 0,this.completed=!1}get disposed(){return this.#t}reset(){this.completed=!1;for(let e of this.children)e.reset();this.stats.count=0,this.stats.first=null}initialize(){}initializeOnce(){this.#e||=(this.initialize(),!0)}#r(){this._propagate=Function(`children`,`stats`,Bn(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
177
177
  `)+`return function propagate(datum) {
178
178
  if (stats.count === 0) {
179
179
  stats.first = structuredClone(datum);
180
180
  }
181
181
  stats.count++;
182
- ${Hn(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
182
+ ${Bn(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
183
183
  `)}
184
- };`)(this.children,this.stats)}setParent(e){this.parent=e}addChild(e){if(e.parent)throw Error(`Cannot add the child! It already has a parent.`);return this.children.push(e),e.setParent(this),this.#r(),this}adopt(e){e.parent&&e.parent.removeChild(e),this.addChild(e)}adoptChildrenOf(e){for(let t of e.children)this.adopt(t)}insertAsParent(e){if(this.isRoot())throw Error(`Cannot insert a new parent for a root node!`);e.parent=this.parent,this.parent.children[this.parent.children.indexOf(this)]=e,this.parent.#r(),this.parent=void 0,e.addChild(this)}removeChild(e){let t=this.children.indexOf(e);if(t>-1)this.children.splice(t,1),e.parent=void 0,this.#r();else throw Error(`Trying to remove an unknown child node!`)}excise(){if(this.isRoot())throw Error(`Cannot excise root node!`);if(this.isTerminal())this.parent.removeChild(this);else if(this.children.length==1){let e=this.children[0];e.setParent(this.parent),this.parent.children[this.parent.children.indexOf(this)]=e,this.parent.#r(),this.setParent(void 0),this.children.length=0}else throw Error(`Cannot excise a node that has multiple children!`)}isRoot(){return!this.parent}isBranching(){return this.children.length>1}isTerminal(){return this.children.length==0}visit(e){e(this);for(let t of this.children)t.visit(e);e.afterChildren&&e.afterChildren(this)}subtreeToString(e=0){let t=this.children.map(t=>t.subtreeToString(e+1)).join(``);return`${` `.repeat(e*2)}* ${this.label}${`identifier`in this&&this.identifier?`: `+this.identifier:``} \n${t}`}handle(e){this._propagate(e)}complete(){this.completed=!0;for(let e of this.children)e.complete()}registerDisposer(e){this.#t?e():this.#n.push(e)}dispose(){if(!this.#t){this.#t=!0;for(let e of this.#n)e();this.#n.length=0}}disposeSubtree(){let e=()=>void 0;e.afterChildren=e=>{e.dispose()},this.visit(e)}beginBatch(e){for(let t of this.children)t.beginBatch(e)}get paramRuntime(){if(this.paramRuntimeProvider&&this.paramRuntimeProvider.paramRuntime)return this.paramRuntimeProvider.paramRuntime;if(!this.parent)throw Error(`Cannot find paramRuntime!`);return this.parent.paramRuntime}repropagate(){if(this.parent)this.parent.repropagate();else throw Error(`Cannot repropagate data, no FlowNode with stored data found!`)}_propagate(e){}};function Ym(e){let t=new Set;for(;e;){for(let n of e.domainSensitiveScaleChannels)t.add(n);e=e.parent}return t}function Xm(e){return e.type==`file`}function Zm(e){return e.type==`facet`}var Qm=class extends Jm{view;constructor(e){super(),this.view=e}get identifier(){}setLoadingStatus(e,t){this.view.context.dataFlow.loadingStatusRegistry.set(this.view,e,t)}get paramRuntime(){return this.view.paramRuntime}handle(e){throw Error(`Source does not handle incoming data!`)}async load(){}repropagate(){this.load()}},$m=class extends Qm{initializedPromise=Promise.resolve();_lastLoadedDomain;constructor(e,t){if(super(e),!t)throw Error(`No channel has been specified for the lazy data source. Must be either "x" or "y".`);if(t!==`x`&&t!==`y`)throw Error(`Invalid channel specified for the lazy data source: ${t}. Must be either "x" or "y"`);if(this.channel=t,this.scaleResolution=this.view.getScaleResolution(t),!this.scaleResolution){let e=[`The lazy data source cannot find a resolved scale for channel "${t}".`];throw eh(this.view)||e.push(`Make sure the view has a "shared" scale resolution as it is not a unit view.`),Error(e.join(` `))}let n=()=>{this.view.isVisible()&&this.onDomainChanged(this.scaleResolution.getDomain(),this.scaleResolution.getComplexDomain())};this.scaleResolution.addEventListener(`domain`,n),this.view.context.addBroadcastListener(`layoutComputed`,n)}get genome(){let e=this.scaleResolution.getScale();if(`genome`in e){let t=e.genome();if(t)return t}throw Error(`No genome has been defined!`)}onDomainChanged(e,t){}requestRender(){this.view.context.animator.requestRender()}async load(){this.reset(),this.complete()}publishData(e){this._lastLoadedDomain=Array.from(this.scaleResolution.getDomain()),this.reset(),this.beginBatch({type:`file`});for(let t of e)for(let e of t)this._propagate(e);this.complete()}isDataReadyForDomain(e){let t=e[this.channel];if(!t||!this._lastLoadedDomain)return!1;let[n,r]=t[0]<=t[1]?t:[t[1],t[0]],[i,a]=this._lastLoadedDomain[0]<=this._lastLoadedDomain[1]?this._lastLoadedDomain:[this._lastLoadedDomain[1],this._lastLoadedDomain[0]];return n>=i&&r<=a}};function eh(e){return typeof e.getMarkType==`function`}var th=class extends $m{ticks=[];constructor(e,t){let n={axis:{},...e};super(t,n.channel),this.params=e}get label(){return`axisTickSource`}async load(){this.ticks=null,await this.onDomainChanged()}async onDomainChanged(){let e=this.scaleResolution.getScale(),t=this.scaleResolution.getAxisLength(),n=this.params.axis,r=e.type==`locus`?()=>85:e=>30+55*$l(100,700,e),i=M(n.tickCount)?n.tickCount:Math.round(t/r(t)),a=Fm(e,i,n.tickMinStep),o=n.values?Im(e,n.values,a):Lm(e,a);if(this.ticks==null||!Xl(o,this.ticks)){this.ticks=o;let t=zm(e,i,n.format);this.publishData([o.map(e=>({value:e,label:t(e)}))])}}};function nh(e){return e?.type==`axisTicks`}Km(nh,th);var rh=class extends $m{constructor(e,t){super(t,e.channel)}get label(){return`axisGenomeSource`}async load(){this.publishData([this.genome.chromosomes])}};function ih(e){return e?.type==`axisGenome`}Km(ih,rh);function ah(e,t){return!t||/^(data:|([A-Za-z]+:)?\/\/)/.test(e)||e.startsWith(`/`)?e:(t.endsWith(`/`)||(t+=`/`),t+e)}function oh(e){if(!e)return e;if(/[?#]/.test(e))throw Error(`Invalid base URL: ${e} - cannot contain query or hash.`);return e.endsWith(`/`)?e:e+`/`}var sh=class extends Jm{#e;constructor(e,t){super(t),this.#e=e.type}get label(){return this.#e}},ch=`_uniqueId`,lh=1e4,uh=[null],dh=class extends sh{get behavior(){return 2}constructor(e){super(e),this.params=e,this.as=e.as??`_uniqueId`,this._blocks=[],this._usedBlocks=0,this._id=-1}initialize(){}reset(){super.reset(),this._usedBlocks=0,this._id=-1}handle(e){e[this.as]=this._nextId(),this._propagate(e)}_nextId(){return++this._id%1e4==0&&(this._id=this._getBlock()*lh),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){let e=uh.length;return uh[e]=this,this._blocks.push(e),this._usedBlocks++,e}};function L(e,t=e){return/^[A-Za-z0-9_]+$/.test(e)?Ve(Function(`validator`,`
184
+ };`)(this.children,this.stats)}setParent(e){this.parent=e}addChild(e){if(e.parent)throw Error(`Cannot add the child! It already has a parent.`);return this.children.push(e),e.setParent(this),this.#r(),this}adopt(e){e.parent&&e.parent.removeChild(e),this.addChild(e)}adoptChildrenOf(e){for(let t of e.children)this.adopt(t)}insertAsParent(e){if(this.isRoot())throw Error(`Cannot insert a new parent for a root node!`);e.parent=this.parent,this.parent.children[this.parent.children.indexOf(this)]=e,this.parent.#r(),this.parent=void 0,e.addChild(this)}removeChild(e){let t=this.children.indexOf(e);if(t>-1)this.children.splice(t,1),e.parent=void 0,this.#r();else throw Error(`Trying to remove an unknown child node!`)}excise(){if(this.isRoot())throw Error(`Cannot excise root node!`);if(this.isTerminal())this.parent.removeChild(this);else if(this.children.length==1){let e=this.children[0];e.setParent(this.parent),this.parent.children[this.parent.children.indexOf(this)]=e,this.parent.#r(),this.setParent(void 0),this.children.length=0}else throw Error(`Cannot excise a node that has multiple children!`)}isRoot(){return!this.parent}isBranching(){return this.children.length>1}isTerminal(){return this.children.length==0}visit(e){e(this);for(let t of this.children)t.visit(e);e.afterChildren&&e.afterChildren(this)}subtreeToString(e=0){let t=this.children.map(t=>t.subtreeToString(e+1)).join(``);return`${` `.repeat(e*2)}* ${this.label}${`identifier`in this&&this.identifier?`: `+this.identifier:``} \n${t}`}handle(e){this._propagate(e)}complete(){this.completed=!0;for(let e of this.children)e.complete()}registerDisposer(e){this.#t?e():this.#n.push(e)}dispose(){if(!this.#t){this.#t=!0;for(let e of this.#n)e();this.#n.length=0}}disposeSubtree(){let e=()=>void 0;e.afterChildren=e=>{e.dispose()},this.visit(e)}beginBatch(e){for(let t of this.children)t.beginBatch(e)}get paramRuntime(){if(this.paramRuntimeProvider&&this.paramRuntimeProvider.paramRuntime)return this.paramRuntimeProvider.paramRuntime;if(!this.parent)throw Error(`Cannot find paramRuntime!`);return this.parent.paramRuntime}repropagate(){if(this.parent)this.parent.repropagate();else throw Error(`Cannot repropagate data, no FlowNode with stored data found!`)}_propagate(e){}};function qm(e){let t=new Set;for(;e;){for(let n of e.domainSensitiveScaleChannels)t.add(n);e=e.parent}return t}function Jm(e){return e.type==`file`}function Ym(e){return e.type==`facet`}var Xm=class extends Km{view;constructor(e){super(),this.view=e}get identifier(){}setLoadingStatus(e,t){this.view.context.dataFlow.loadingStatusRegistry.set(this.view,e,t)}get paramRuntime(){return this.view.paramRuntime}handle(e){throw Error(`Source does not handle incoming data!`)}async load(){}repropagate(){this.load()}},Zm=class extends Xm{initializedPromise=Promise.resolve();_lastLoadedDomain;constructor(e,t){if(super(e),!t)throw Error(`No channel has been specified for the lazy data source. Must be either "x" or "y".`);if(t!==`x`&&t!==`y`)throw Error(`Invalid channel specified for the lazy data source: ${t}. Must be either "x" or "y"`);if(this.channel=t,this.scaleResolution=this.view.getScaleResolution(t),!this.scaleResolution){let e=[`The lazy data source cannot find a resolved scale for channel "${t}".`];throw Qm(this.view)||e.push(`Make sure the view has a "shared" scale resolution as it is not a unit view.`),Error(e.join(` `))}let n=()=>{this.view.isVisible()&&this.onDomainChanged(this.scaleResolution.getDomain(),this.scaleResolution.getComplexDomain())};this.scaleResolution.addEventListener(`domain`,n),this.view.context.addBroadcastListener(`layoutComputed`,n)}get genome(){let e=this.scaleResolution.getScale();if(`genome`in e){let t=e.genome();if(t)return t}throw Error(`No genome has been defined!`)}onDomainChanged(e,t){}requestRender(){this.view.context.animator.requestRender()}async load(){this.reset(),this.complete()}publishData(e){this._lastLoadedDomain=Array.from(this.scaleResolution.getDomain()),this.reset(),this.beginBatch({type:`file`});for(let t of e)for(let e of t)this._propagate(e);this.complete()}isDataReadyForDomain(e){let t=e[this.channel];if(!t||!this._lastLoadedDomain)return!1;let[n,r]=t[0]<=t[1]?t:[t[1],t[0]],[i,a]=this._lastLoadedDomain[0]<=this._lastLoadedDomain[1]?this._lastLoadedDomain:[this._lastLoadedDomain[1],this._lastLoadedDomain[0]];return n>=i&&r<=a}};function Qm(e){return typeof e.getMarkType==`function`}var $m=class extends Zm{ticks=[];constructor(e,t){let n={axis:{},...e};super(t,n.channel),this.params=e}get label(){return`axisTickSource`}async load(){this.ticks=null,await this.onDomainChanged()}async onDomainChanged(){let e=this.scaleResolution.getScale(),t=this.scaleResolution.getAxisLength(),n=this.params.axis,r=e.type==`locus`?()=>85:e=>30+55*Zl(100,700,e),i=P(n.tickCount)?n.tickCount:Math.round(t/r(t)),a=Nm(e,i,n.tickMinStep),o=n.values?Pm(e,n.values,a):Fm(e,a);if(this.ticks==null||!Jl(o,this.ticks)){this.ticks=o;let t=Lm(e,i,n.format);this.publishData([o.map(e=>({value:e,label:t(e)}))])}}};function eh(e){return e?.type==`axisTicks`}Wm(eh,$m);var th=class extends Zm{constructor(e,t){super(t,e.channel)}get label(){return`axisGenomeSource`}async load(){this.publishData([this.genome.chromosomes])}};function nh(e){return e?.type==`axisGenome`}Wm(nh,th);function rh(e,t){return!t||/^(data:|([A-Za-z]+:)?\/\/)/.test(e)||e.startsWith(`/`)?e:(t.endsWith(`/`)||(t+=`/`),t+e)}function ih(e){if(!e)return e;if(/[?#]/.test(e))throw Error(`Invalid base URL: ${e} - cannot contain query or hash.`);return e.endsWith(`/`)?e:e+`/`}var ah=class extends Km{#e;constructor(e,t){super(t),this.#e=e.type}get label(){return this.#e}},oh=`_uniqueId`,sh=1e4,ch=[null],lh=class extends ah{get behavior(){return 2}constructor(e){super(e),this.params=e,this.as=e.as??`_uniqueId`,this._blocks=[],this._usedBlocks=0,this._id=-1}initialize(){}reset(){super.reset(),this._usedBlocks=0,this._id=-1}handle(e){e[this.as]=this._nextId(),this._propagate(e)}_nextId(){return++this._id%1e4==0&&(this._id=this._getBlock()*sh),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){let e=ch.length;return ch[e]=this,this._blocks.push(e),this._usedBlocks++,e}};function z(e,t=e){return/^[A-Za-z0-9_]+$/.test(e)?Be(Function(`validator`,`
185
185
  let validated = !validator;
186
186
  return function accessField(datum) {
187
187
  if (!validated) {
@@ -189,9 +189,9 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
189
189
  validated = true;
190
190
  }
191
191
  return datum[${JSON.stringify(e)}];
192
- }`)(function(t){e in t||fh(t,e)}),[e],t):Ye(e)}function fh(e,t){throw Error(`Invalid field "${t}". Available fields or properties: ${Object.keys(e).join(`, `)}`)}function ph(e,t,n){if(!e)throw Error(`Cannot create an accessor without a channel.`);function r(n){let r=n;return r.fields??=[],r.constant=r.fields.length===0,r.channelDef=t,r.channel=e,r.sourceKey=gh(t),r.scaleChannel=((Mh(t)&&t.resolutionChannel)??(Zh(e)&&e))||void 0,r.scaleChannel!==void 0&&(r.domainKeyBase=_h({scaleChannel:r.scaleChannel,source:hh(t)}).domainKeyBase),r.equals=e=>e?r===e||r.sourceKey!==void 0&&r.sourceKey===e.sourceKey:!1,r.asNumberAccessor=()=>r,r}function i(e){if(R(e)){let t=r(n.createExpression(e.expr));if(t.fields.length>0)throw Error(`Expression in DatumDef/ValueDef cannot access data fields: `+e.expr);return t}else{let t=e;return r(()=>t)}}if(Ah(t))try{return r(L(t.field))}catch(e){throw Error(`Invalid field definition: ${e.message}`,{cause:e})}else if(Ih(t))return r(n.createExpression(t.expr));else if(jh(t))return i(t.datum);else if(kh(t))return i(t.value);else throw Error(`Invalid channel definition: "${e}": ${JSON.stringify(t)}! The channel definition must contain one of the following properties: "field", "datum", "value" or "expr".`)}function mh(e){return e.scaleChannel!==void 0}function hh(e){if(Ah(e))return{kind:`field`,value:e.field};if(Ih(e))return{kind:`expr`,value:e.expr};if(jh(e))return{kind:`datum`,value:e.datum};if(kh(e))return{kind:`value`,value:e.value};throw Error(`Cannot derive a domain key from channel definition: `+JSON.stringify(e))}function gh(e){let t=hh(e);return t.kind===`datum`||t.kind===`value`?`constant|`+bh(t.value):t.kind+`|`+yh(t)}function _h({scaleChannel:e,source:t,type:n}){if(!e)throw Error(`Cannot build a domain key without a scale channel.`);let r=e+`|`+t.kind+`|`+yh(t);return{domainKeyBase:r,domainKey:n?n+`|`+r:void 0}}function vh(e,t){let{domainKey:n,domainKeyBase:r}=_h({scaleChannel:e.scaleChannel,source:hh(e.channelDef),type:t});if(!n)throw Error(`Cannot finalize a domain key without a resolved type.`);return e.domainKeyBase=r,e.domainKey=n,n}function yh(e){switch(e.kind){case`field`:case`expr`:return e.value;case`datum`:case`value`:return bh(e.value);default:throw Error(`Unknown domain key source.`)}}function bh(e){return R(e)?`expr:`+e.expr:e===void 0?`undefined`:JSON.stringify(e)}function xh(e,t,n,r){let i,a=bg(!1),o=()=>{if(i)return i;let o=n.findValue(e);if(!o)return a;let s={};if(ag(o)){let n=Object.keys(o.intervals);for(let r of n){let n=t[r];if(Ah(n)){s[r]=n.field;continue}else if(n&&`condition`in n){let e=n.condition;if(Ah(e)){s[r]=e.field;continue}}throw Error(`Selection "${e}" has an interval for "${r}" channel, but could not find a fieldDef: ${JSON.stringify(t[r])}`)}}let c=ig({type:`filter`,param:e,fields:s,empty:r},o);return i=n.createExpression(c),i};return Object.assign(e=>o()(e),{param:e,empty:r??!0})}function Sh(e,t,n,r){let i=Lh(t)||Rh(t)?Array.isArray(t.condition)?t.condition:[t.condition]:[],a=[...i,t],o=a.map((t,o)=>{let s=i[o];return{accessor:ph(e,t,r),predicate:s?.param?xh(s.param,n,r,s.empty):Object.assign(bg(o===a.length-1),{empty:!1})}});if(o.filter(e=>!e.accessor.constant).length>1)throw Error(`Only one accessor can be non-constant. Channel: `+e);return o}function Ch(e,t){let n={},r=t=>e.getScaleResolution(t)?.getScale();for(let[i,a]of Object.entries(t)){if(!a)continue;let o=i;wh(o)||(n[o]=Dh(Sh(o,a,t,e.paramRuntime),r))}return n}function wh(e){return e===`key`||e===`search`}function Th(e){return e.branches.map(e=>e.accessor)}function Eh(e){return e.branches.find(e=>!e.accessor.constant)?.accessor}function Dh(e,t){if(e.length===1){let n=Oh(e[0].accessor,t);return Object.assign(n,{branches:e})}let n=e.map(e=>e.predicate),r=e.map(e=>Oh(e.accessor,t));return Object.assign(e=>{for(let t=0;t<r.length;t++)if(n[t](e))return r[t](e)},{constant:!1,branches:e,scale:r.map(e=>e.scale).find(e=>e),channelDef:e.at(-1).accessor.channelDef})}function Oh(e,t){let{channel:n,scaleChannel:r,channelDef:i}=e,a=e.scaleChannel?t(r):void 0;if(r&&!a)throw Error(`Missing scale! "${n}": ${JSON.stringify(i)}`);return Object.assign(a?t=>a(e(t)):t=>e(t),{scale:a,constant:e.constant,branches:[{accessor:e,predicate:bg(!0)}],channelDef:i})}function kh(e){return e&&`value`in e}function Ah(e){return e&&`field`in e}function jh(e){return e&&`datum`in e}function Mh(e){return Ah(e)||jh(e)||Ih(e)||Fh(e)}function Nh(e){if(Rh(e)){let t=e.condition;if(!Array.isArray(t)&&Mh(t))return t}else if(Mh(e))return e}function Ph(e,t){let n=e.mark.encoding[t];if(Array.isArray(n))throw Error(`Not a channel def with scale!`);{let e=Nh(n);if(e)return e}throw Error(`Not a channel def with scale!`)}function Fh(e){return e&&`chrom`in e}function Ih(e){return e&&`expr`in e}function Lh(e){return(Ah(e)||jh(e))&&`condition`in e}function Rh(e){return kh(e)&&`condition`in e}var zh=[`x`,`y`],Bh=[`x2`,`y2`],Vh=[...zh,...Bh];function Hh(e){return zh.includes(e)}function Uh(e){return Vh.includes(e)}var Wh={x:`x2`,y:`y2`},Gh=Object.fromEntries(Object.entries(Wh).map(e=>[e[1],e[0]]));function Kh(e){return e in Gh}function qh(e){let t=Wh[e];if(t)return t;throw Error(`${e} has no secondary channel!`)}function Jh(e){return Gh[e]??e}function Yh(e){return[`color`,`fill`,`stroke`].includes(Jh(e))}function Xh(e){return[`shape`].includes(e)}function Zh(e){return[`x`,`y`,`x2`,`y2`,`color`,`fill`,`stroke`,`opacity`,`fillOpacity`,`strokeOpacity`,`strokeWidth`,`size`,`shape`,`angle`,`dx`,`dy`,`sample`].includes(e)}function Qh(e){switch(e){case`shape`:return[`circle`,`square`,`cross`,`diamond`,`triangle-up`,`triangle-right`,`triangle-down`,`triangle-left`,`tick-up`,`tick-right`,`tick-down`,`tick-left`];default:}}function $h(e){if(!Xh(e))throw Error(`Not a discrete channel: `+e);let t=new Map(Qh(e).map((e,t)=>[e,t]));return n=>{let r=t.get(n);if(r!==void 0)return r;throw Error(`Invalid value for "${e}" channel: ${n}`)}}function eg(e){return{type:`single`,datum:e,uniqueId:e?.[ch]}}function tg(e){return e??=[],{type:`multi`,data:new Map(e.map(e=>[e[ch],e]))}}function ng(e){return{type:`interval`,intervals:Object.fromEntries(e.map(e=>[e,null]))}}function rg(e,{add:t,remove:n,toggle:r}){let i=e.data;for(let e of t??[])i.set(e[ch],e);for(let e of n??[])i.delete(e[ch]);for(let e of r??[]){let t=e[ch];i.has(t)?i.delete(t):i.set(t,e)}return{type:`multi`,data:i}}function ig(e,t){let n=!!(e.empty??!0),r=_g(e.param),i=e.fields??{};if(og(t))return`${r}.uniqueId == null ? ${n} : ${r}.uniqueId === datum[${JSON.stringify(ch)}]`;if(sg(t))return`${r}.data.size == 0 ? ${n} : mapHasKey(${r}.data, datum[${JSON.stringify(ch)}])`;if(ag(t)){let a=Object.keys(t.intervals),o=Object.keys(i).filter(Hh);if(o.length===0)throw Error(`Filtering using interval selections requires at least one primary positional channel in the config! `+JSON.stringify(e));if(o.some(e=>!a.includes(e)))throw Error(`Selection channels (${a.join(`, `)}) do not match the fields: ${JSON.stringify(e)}!`);let s=e=>`datum[${JSON.stringify(e)}]`;return a.map(e=>{let t=qh(e),a=i[e];return`(${r}.intervals.${e} ? (${`${r}.intervals.${e}[0] <= ${s(i[t]??i[e])}`} && ${`${s(a)} <= ${r}.intervals.${e}[1]`}) : ${n})`}).join(` && `)}else throw Error(`Unrecognized selection type : ${JSON.stringify(t)}`)}function ag(e){return e.type===`interval`}function og(e){return e.type===`single`}function sg(e){return e.type===`multi`}function cg(e){let t=typeof e==`string`?{type:e}:{...e};return t.on=t.on?pg(t.on):lg(t)?{type:`click`}:void 0,t.clear=t.clear===!1?void 0:t.clear===!0||t.clear==null?{type:`dblclick`}:pg(t.clear),lg(t)&&t.on.type===`click`&&(t.toggle=!0),t}function lg(e){return e&&e.type==`point`}function ug(e){return e&&e.type==`interval`}function dg(e){return Object.values(e.intervals).some(e=>e&&e.length===2)}function fg(e,t){return Object.entries(e.intervals).every(([e,n])=>(e==`x`||e==`y`)&&n&&n[0]<=t[e]&&n[1]>=t[e])}function pg(e){if(typeof e==`string`){let t=e.match(/^([a-zA-Z]+)(?:\[(.+)\])?$/);if(!t)throw Error(`Invalid event type string: ${e}`);let[,n,r]=t,i={type:n};return r&&(i.filter=r),i}else return e}function R(e){return typeof e==`object`&&!!e&&`expr`in e&&N(e.expr)}function mg(e){if(R(e))throw Error(`ExprRef `+JSON.stringify(e)+` not allowed here. Expected a scalar value.`);return e}function hg(e){return(`expr`in e||`bind`in e)&&!(`select`in e)}function gg(e){return!(`expr`in e||`bind`in e)&&`select`in e}function _g(e){if(!/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(e))throw Error(`Invalid parameter name: `+e+`. Must be a valid JavaScript identifier.`);return e}function vg(e,t,n){if(`select`in e){let t=cg(e.select);if(lg(t))return t.toggle?tg():eg(null);if(ug(t)){if(!t.encodings)throw Error(`Interval selection "`+e.name+`" must have encodings defined!`);return ng(t.encodings)}throw Error(`Unknown selection config for parameter "`+e.name+`".`)}if(`expr`in e){let r=n??t?.createExpression(e.expr);if(!r)throw Error(`Cannot evaluate expression for parameter "`+e.name+`".`);return r(null)}return`value`in e?e.value:null}function yg(e,t,n,r,i={}){let a={...t},o=new Set,s=!1,c=!1,l=i.batchMode??`microtask`;r?.(()=>{c=!0,o.clear(),s=!1});let u=()=>{if(c)return;if(!n||o.size===0){s=!1;return}let e=new Set(o);o.clear(),s=!1,n(e)},d=t=>{c||(o.add(t),s||(s=!0,queueMicrotask(()=>{c||(l==`whenPropagated`&&e.whenPropagated?e.whenPropagated().then(u).catch(()=>{u()}):u())})))};for(let[i,o]of Object.entries(t))if(R(o))if(n){let t=()=>d(i),n=e.watchExpression?e.watchExpression(o.expr,t,{scopeOwned:!r,registerDisposer:r}):e.createExpression(o.expr);if(!e.watchExpression){let e=n.subscribe(t);r?.(e)}Object.defineProperty(a,i,{enumerable:!0,get(){return n()}})}else{let t=e.createExpression(o.expr);Object.defineProperty(a,i,{enumerable:!0,get(){return t()}})}else a[i]=o;return a}function bg(e){return Object.assign(()=>e,{subscribe:()=>()=>void 0,invalidate:()=>void 0,identifier:()=>`constant`,fields:[],globals:[],code:JSON.stringify(e)})}function xg(e,t,n=!0){let r,i=e=>void 0;return function(...a){return new Promise((o,s)=>{n&&i(`debounced`),clearTimeout(r),i=s,r=window.setTimeout(()=>{clearTimeout(r),i=e=>void 0,o(e(...a))},typeof t==`function`?t():t)})}}var Sg=class extends $m{#e=new AbortController;#t=[0,0];#n=[0,0];#r=0;params;setupDebouncing(e){let t=()=>mg(e.debounce),n=e.debounceMode;if(n==`domain`)this.onDomainChanged=xg(this.onDomainChanged.bind(this),t,!1);else if(n==`window`)this.loadInterval=xg(this.loadInterval.bind(this),t,!1);else throw Error(`Invalid debounceMode: `+n)}onDomainChanged(e){this.#n=e;let t=mg(this.params?.windowSize)??-1;e[1]-e[0]>t||this.callIfWindowsChanged(e,t,async e=>{await this.initializedPromise,this.loadInterval(e)})}reloadLastDomain(){let e=this.#n;this.#n=[0,0],this.#t=[0,0],this._lastLoadedDomain=void 0,this.onDomainChanged(e)}async loadInterval(e){}publishData(e){let t=this._lastLoadedDomain;super.publishData(e),t&&(this._lastLoadedDomain=t)}async discretizeAndLoad(e,t){this.#e.abort(),this.setLoadingStatus(`loading`),this.#e=new AbortController;let n=this.#e.signal,r=this.genome.continuousToDiscreteChromosomeIntervals(e);try{let i=await Promise.all(r.map(async e=>t(e,n)));if(!n.aborted)return this.setLoadingStatus(`complete`),this._lastLoadedDomain=Array.from(e),i}catch(e){if(!n.aborted)throw this.setLoadingStatus(`error`,e.message),e}}callIfWindowsChanged(e,t,n){let r=[Math.max(Math.floor(e[0]/t)*t,0),Math.min(Math.ceil(e[1]/t)*t,this.genome.totalSize)],i=this.#t;(t!==this.#r||r[0]<i[0]||r[1]>i[1])&&(this.#t=r,this.#r=t,n(r))}},Cg=n((()=>{})),wg,Tg=n((()=>{wg=class{constructor(e){this.blob=e}async read(e,t=0){if(!e)return new Uint8Array;let n=t,r=n+e,i=this.blob.slice(n,r);return i.bytes?i.bytes():new Uint8Array(await i.arrayBuffer())}async readFile(e){let t=typeof e==`string`?e:e?.encoding;if(t===`utf8`)return this.blob.text();if(t)throw Error(`unsupported encoding: ${t}`);return this.blob.bytes?this.blob.bytes():new Uint8Array(await this.blob.arrayBuffer())}async stat(){return{size:this.blob.size}}async close(){}}}));function Eg(e){return(typeof e==`object`&&e&&`message`in e?e.message:`${e}`).replace(/\.$/,``)}var Dg,Og=n((()=>{Dg=class{constructor(e,t={}){this.baseOverrides={},this.url=e;let n=t.fetch||globalThis.fetch.bind(globalThis);t.overrides&&(this.baseOverrides=t.overrides),this.fetchImplementation=n}async fetch(e,t){let n=t=>Error(`${Eg(t)} fetching ${e}`,{cause:t}),r;try{r=await this.fetchImplementation(e,t)}catch(i){if(`${i}`.includes(`Failed to fetch`)){console.warn(`generic-filehandle: refetching ${e} to attempt to work around chrome CORS header caching bug`);try{r=await this.fetchImplementation(e,{...t,cache:`reload`})}catch(e){throw n(e)}}else throw n(i)}return r}async read(e,t,n={}){if(e===0)return new Uint8Array;let{headers:r={},signal:i,overrides:a={}}=n;e<1/0?r.range=`bytes=${t}-${t+e-1}`:e===1/0&&t!==0&&(r.range=`bytes=${t}-`);let o=await this.fetch(this.url,{...this.baseOverrides,...a,headers:{...this.baseOverrides.headers,...a.headers,...r},method:`GET`,redirect:`follow`,mode:`cors`,signal:i});if(!o.ok)throw Error(`HTTP ${o.status} fetching ${this.url}`);if(o.status===200&&t===0||o.status===206){let t=o.headers.get(`content-range`),n=/\/(\d+)$/.exec(t||``);n?.[1]&&(this._stat={size:parseInt(n[1],10)});let r=o.bytes?await o.bytes():new Uint8Array(await o.arrayBuffer());return r.byteLength<=e?r:r.subarray(0,e)}throw Error(o.status===200?`${this.url} fetch returned status 200, expected 206`:`HTTP ${o.status} fetching ${this.url}`)}async readFile(e={}){let t,n;if(typeof e==`string`)t=e,n={};else{t=e.encoding;let{encoding:r,...i}=e;n=i}let{headers:r={},signal:i,overrides:a={}}=n,o=await this.fetch(this.url,{...this.baseOverrides,...a,headers:{...this.baseOverrides.headers,...a.headers,...r},method:`GET`,redirect:`follow`,mode:`cors`,signal:i});if(!o.ok)throw Error(`HTTP ${o.status} fetching ${this.url}`);if(t===`utf8`)return o.text();if(t)throw Error(`unsupported encoding: ${t}`);return o.bytes?o.bytes():new Uint8Array(await o.arrayBuffer())}async stat(){if(!this._stat&&(await this.read(10,0),!this._stat))throw Error(`unable to determine size of file at ${this.url}`);return this._stat}async close(){}}})),kg=r({BlobFile:()=>wg,LocalFile:()=>Ag,RemoteFile:()=>Dg}),Ag,jg=n((()=>{Cg(),Tg(),Og(),Ag=class{readFile(){throw Error(`unimplemented`)}read(){throw Error(`unimplemented`)}close(){throw Error(`unimplemented`)}}}));function Mg(e,t=0){let n=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24;return((e[t+4]|e[t+5]<<8|e[t+6]<<16|e[t+7]<<24)>>>0)*Pg+(n>>>0)}var Ng,Pg,Fg=n((()=>{Ng=65536,Pg=Ng*Ng}));function Ig(e,t,n){let r=t[Lg],i=n?n[Lg]:1/0;return r<=e&&i>e?0:r<e?-1:1}var Lg,Rg,zg=n((()=>{Fg(),Lg=1,Rg=class{filehandle;index;constructor({filehandle:e}){this.filehandle=e}_getIndex(){return this.index||=this._readIndex().catch(e=>{throw this.index=void 0,e}),this.index}async _readIndex(){let e=Mg(await this.filehandle.read(8,0));if(!e)return[[0,0]];let t=Array(e+1);t[0]=[0,0];let n=16*e;if(n>2**53-1)throw TypeError(`integer overflow`);let r=await this.filehandle.read(n,8);for(let n=0;n<e;n+=1){let e=Mg(r,n*16),i=Mg(r,n*16+8);t[n+1]=[e,i]}return t}async getLastBlock(){return(await this._getIndex()).at(-1)}async getRelevantBlocksForRead(e,t){let n=t+e;if(e===0)return[];let r=await this._getIndex(),i=[],a=0,o=r.length-1,s=Math.floor(r.length/2),c=Ig(t,r[s],r[s+1]);for(;c!==0;)c>0?o=s-1:c<0&&(a=s+1),s=Math.ceil((o-a)/2)+a,c=Ig(t,r[s],r[s+1]);i.push(r[s]);let l=s+1;for(;l<r.length&&(i.push(r[l]),!(r[l][Lg]>=n));l+=1);return i[i.length-1][Lg]<n&&i.push([]),i}}})),Bg=n((()=>{}));function Vg(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Hg(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var n=t.shift();if(n){if(typeof n!=`object`)throw TypeError(n+`must be non-object`);for(var r in n)Vg(n,r)&&(e[r]=n[r])}}return e}function Ug(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)}var Wg,Gg,Kg,qg,Jg,Yg,Xg,Zg,Qg=n((()=>{Wg={arraySet:function(e,t,n,r,i){if(t.subarray&&e.subarray){e.set(t.subarray(n,n+r),i);return}for(var a=0;a<r;a++)e[i+a]=t[n+a]},flattenChunks:function(e){var t,n,r=0,i,a,o;for(t=0,n=e.length;t<n;t++)r+=e[t].length;for(o=new Uint8Array(r),i=0,t=0,n=e.length;t<n;t++)a=e[t],o.set(a,i),i+=a.length;return o},Buf8:function(e){return new Uint8Array(e)},Buf16:function(e){return new Uint16Array(e)},Buf32:function(e){return new Int32Array(e)}},Gg={arraySet:function(e,t,n,r,i){for(var a=0;a<r;a++)e[i+a]=t[n+a]},flattenChunks:function(e){return[].concat.apply([],e)},Buf8:function(e){return Array(e)},Buf16:function(e){return Array(e)},Buf32:function(e){return Array(e)}},Kg=()=>{let e=typeof Uint8Array<`u`&&typeof Uint16Array<`u`&&typeof Int32Array<`u`;return Kg=()=>e,e},qg=(e,t,n,r,i)=>(qg=Kg()?Wg.arraySet:Gg.arraySet,qg(e,t,n,r,i)),Jg=e=>(Jg=Kg()?Wg.flattenChunks:Gg.flattenChunks,Jg(e)),Yg=e=>(Yg=Kg()?Wg.Buf8:Gg.Buf8,Yg(e)),Xg=e=>(Xg=Kg()?Wg.Buf16:Gg.Buf16,Xg(e)),Zg=e=>(Zg=Kg()?Wg.Buf32:Gg.Buf32,Zg(e))}));function $g(e){var t,n,r,i,a,o=e.length,s=0;for(i=0;i<o;i++)n=e.charCodeAt(i),(n&64512)==55296&&i+1<o&&(r=e.charCodeAt(i+1),(r&64512)==56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),s+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(s),a=0,i=0;a<s;i++)n=e.charCodeAt(i),(n&64512)==55296&&i+1<o&&(r=e.charCodeAt(i+1),(r&64512)==56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t}function e_(e,t){if(t<65534&&(e.subarray&&a_()||!e.subarray&&i_()))return String.fromCharCode.apply(null,Ug(e,t));for(var n=``,r=0;r<t;r++)n+=String.fromCharCode(e[r]);return n}function t_(e){for(var t=new Uint8Array(e.length),n=0,r=t.length;n<r;n++)t[n]=e.charCodeAt(n);return t}function n_(e,t){var n,r,i,a,o=t||e.length,s=Array(o*2);for(r=0,n=0;n<o;){if(i=e[n++],i<128){s[r++]=i;continue}if(a=o_(i),a>4){s[r++]=65533,n+=a-1;continue}for(i&=a===2?31:a===3?15:7;a>1&&n<o;)i=i<<6|e[n++]&63,a--;if(a>1){s[r++]=65533;continue}i<65536?s[r++]=i:(i-=65536,s[r++]=55296|i>>10&1023,s[r++]=56320|i&1023)}return e_(s,r)}function r_(e,t){var n;for(t||=e.length,t>e.length&&(t=e.length),n=t-1;n>=0&&(e[n]&192)==128;)n--;return n<0||n===0?t:n+o_(e[n])>t?n:t}var i_,a_,o_,s_=n((()=>{Qg(),i_=function(){let e=!0;try{String.fromCharCode.apply(null,[0])}catch{e=!1}return i_=()=>e,e},a_=function(){let e=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{e=!1}return a_=()=>e,e},o_=function(e){for(var t=Yg(256),n=0;n<256;n++)t[n]=n>=252?6:n>=248?5:n>=240?4:n>=224?3:n>=192?2:1;return t[254]=t[254]=1,o_=e=>t[e],t[e]}}));function c_(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=``,this.comment=``,this.hcrc=0,this.done=!1}var l_=n((()=>{}));function u_(e,t,n,r){for(var i=e&65535|0,a=e>>>16&65535|0,o=0;n!==0;){o=n>2e3?2e3:n,n-=o;do i=i+t[r++]|0,a=a+i|0;while(--o);i%=65521,a%=65521}return i|a<<16|0}var d_=n((()=>{}));function f_(){for(var e,t=[],n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t}function p_(e,t,n,r){var i=m_(),a=r+n;e^=-1;for(var o=r;o<a;o++)e=e>>>8^i[(e^t[o])&255];return e^-1}var m_,h_=n((()=>{m_=function(){let e=f_();return m_=()=>e,e}}));function g_(e,t){var n=e.state,r=e.next_in,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x,S,C,w,T=e.input,E;i=r+(e.avail_in-5),a=e.next_out,E=e.output,o=a-(t-e.avail_out),s=a+(e.avail_out-257),c=n.dmax,l=n.wsize,u=n.whave,d=n.wnext,f=n.window,p=n.hold,m=n.bits,h=n.lencode,g=n.distcode,_=(1<<n.lenbits)-1,v=(1<<n.distbits)-1;top:do{m<15&&(p+=T[r++]<<m,m+=8,p+=T[r++]<<m,m+=8),y=h[p&_];dolen:for(;;){if(b=y>>>24,p>>>=b,m-=b,b=y>>>16&255,b===0)E[a++]=y&65535;else if(b&16){x=y&65535,b&=15,b&&(m<b&&(p+=T[r++]<<m,m+=8),x+=p&(1<<b)-1,p>>>=b,m-=b),m<15&&(p+=T[r++]<<m,m+=8,p+=T[r++]<<m,m+=8),y=g[p&v];dodist:for(;;){if(b=y>>>24,p>>>=b,m-=b,b=y>>>16&255,b&16){if(S=y&65535,b&=15,m<b&&(p+=T[r++]<<m,m+=8,m<b&&(p+=T[r++]<<m,m+=8)),S+=p&(1<<b)-1,S>c){e.msg=`invalid distance too far back`,n.mode=__;break top}if(p>>>=b,m-=b,b=a-o,S>b){if(b=S-b,b>u&&n.sane){e.msg=`invalid distance too far back`,n.mode=__;break top}if(C=0,w=f,d===0){if(C+=l-b,b<x){x-=b;do E[a++]=f[C++];while(--b);C=a-S,w=E}}else if(d<b){if(C+=l+d-b,b-=d,b<x){x-=b;do E[a++]=f[C++];while(--b);if(C=0,d<x){b=d,x-=b;do E[a++]=f[C++];while(--b);C=a-S,w=E}}}else if(C+=d-b,b<x){x-=b;do E[a++]=f[C++];while(--b);C=a-S,w=E}for(;x>2;)E[a++]=w[C++],E[a++]=w[C++],E[a++]=w[C++],x-=3;x&&(E[a++]=w[C++],x>1&&(E[a++]=w[C++]))}else{C=a-S;do E[a++]=E[C++],E[a++]=E[C++],E[a++]=E[C++],x-=3;while(x>2);x&&(E[a++]=E[C++],x>1&&(E[a++]=E[C++]))}}else if(b&64){e.msg=`invalid distance code`,n.mode=__;break top}else{y=g[(y&65535)+(p&(1<<b)-1)];continue dodist}break}}else if(!(b&64)){y=h[(y&65535)+(p&(1<<b)-1)];continue dolen}else if(b&32){n.mode=v_;break top}else{e.msg=`invalid literal/length code`,n.mode=__;break top}break}}while(r<i&&a<s);x=m>>3,r-=x,m-=x<<3,p&=(1<<m)-1,e.next_in=r,e.next_out=a,e.avail_in=r<i?5+(i-r):5-(r-i),e.avail_out=a<s?257+(s-a):257-(a-s),n.hold=p,n.bits=m}var __,v_,y_=n((()=>{__=30,v_=12}));function b_(e,t,n,r,i,a,o,s){var c=s.bits,l=0,u=0,d=0,f=0,p=0,m=0,h=0,g=0,_=0,v=0,y,b,x,S,C,w=null,T=0,E,ee=Xg(x_+1),te=Xg(x_+1),ne=null,re=0,ie,ae,oe;for(l=0;l<=x_;l++)ee[l]=0;for(u=0;u<r;u++)ee[t[n+u]]++;for(p=c,f=x_;f>=1&&ee[f]===0;f--);if(p>f&&(p=f),f===0)return i[a++]=20971520,i[a++]=20971520,s.bits=1,0;for(d=1;d<f&&ee[d]===0;d++);for(p<d&&(p=d),g=1,l=1;l<=x_;l++)if(g<<=1,g-=ee[l],g<0)return-1;if(g>0&&(e===w_||f!==1))return-1;for(te[1]=0,l=1;l<x_;l++)te[l+1]=te[l]+ee[l];for(u=0;u<r;u++)t[n+u]!==0&&(o[te[t[n+u]]++]=u);if(e===w_?(w=ne=o,E=19):e===T_?(w=D_,T-=257,ne=O_,re-=257,E=256):(w=k_,ne=A_,E=-1),v=0,u=0,l=d,C=a,m=p,h=0,x=-1,_=1<<p,S=_-1,e===T_&&_>S_||e===E_&&_>C_)return 1;for(;;){ie=l-h,o[u]<E?(ae=0,oe=o[u]):o[u]>E?(ae=ne[re+o[u]],oe=w[T+o[u]]):(ae=96,oe=0),y=1<<l-h,b=1<<m,d=b;do b-=y,i[C+(v>>h)+b]=ie<<24|ae<<16|oe|0;while(b!==0);for(y=1<<l-1;v&y;)y>>=1;if(y===0?v=0:(v&=y-1,v+=y),u++,--ee[l]===0){if(l===f)break;l=t[n+o[u]]}if(l>p&&(v&S)!==x){for(h===0&&(h=p),C+=d,m=l-h,g=1<<m;m+h<f&&(g-=ee[m+h],!(g<=0));)m++,g<<=1;if(_+=1<<m,e===T_&&_>S_||e===E_&&_>C_)return 1;x=v&S,i[x]=p<<24|m<<16|C-a|0}}return v!==0&&(i[C+v]=l-h<<24|4194304),s.bits=p,0}var x_,S_,C_,w_,T_,E_,D_,O_,k_,A_,j_=n((()=>{Qg(),x_=15,S_=852,C_=592,w_=0,T_=1,E_=2,D_=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],O_=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],k_=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],A_=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]}));function M_(e){return(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24)}function N_(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=Xg(320),this.work=Xg(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function P_(e){var t;return!e||!e.state?$_:(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=``,t.wrap&&(e.adler=t.wrap&1),t.mode=iv,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=Zg(Fv),t.distcode=t.distdyn=Zg(Iv),t.sane=1,t.back=-1,X_)}function F_(e){var t;return!e||!e.state?$_:(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,P_(e))}function I_(e,t){var n,r;return!e||!e.state||(r=e.state,t<0?(n=0,t=-t):(n=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?$_:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,F_(e))}function L_(e,t){var n,r;return e?(r=new N_,e.state=r,r.window=null,n=I_(e,t),n!==X_&&(e.state=null),n):$_}function R_(e){if(Lv){var t;for(Rv=Zg(512),zv=Zg(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(b_(G_,e.lens,0,288,Rv,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;b_(K_,e.lens,0,32,zv,0,e.work,{bits:5}),Lv=!1}e.lencode=Rv,e.lenbits=9,e.distcode=zv,e.distbits=5}function z_(e,t,n,r){var i,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=Yg(a.wsize)),r>=a.wsize?(qg(a.window,t,n-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>r&&(i=r),qg(a.window,t,n-r,i,a.wnext),r-=i,r?(qg(a.window,t,n-r,r,0),a.wnext=r,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=i))),0}function B_(e,t){var n,r,i,a,o,s,c,l,u,d,f,p,m,h,g=0,_,v,y,b,x,S,C,w,T=Yg(4),E,ee,te=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&e.avail_in!==0)return $_;n=e.state,n.mode===hv&&(n.mode=gv),o=e.next_out,i=e.output,c=e.avail_out,a=e.next_in,r=e.input,s=e.avail_in,l=n.hold,u=n.bits,d=s,f=c,w=X_;inf_leave:for(;;)switch(n.mode){case iv:if(n.wrap===0){n.mode=gv;break}for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.wrap&2&&l===35615){n.check=0,T[0]=l&255,T[1]=l>>>8&255,n.check=p_(n.check,T,2,0),l=0,u=0,n.mode=av;break}if(n.flags=0,n.head&&(n.head.done=!1),!(n.wrap&1)||(((l&255)<<8)+(l>>8))%31){e.msg=`incorrect header check`,n.mode=z;break}if((l&15)!==rv){e.msg=`unknown compression method`,n.mode=z;break}if(l>>>=4,u-=4,C=(l&15)+8,n.wbits===0)n.wbits=C;else if(C>n.wbits){e.msg=`invalid window size`,n.mode=z;break}n.dmax=1<<C,e.adler=n.check=1,n.mode=l&512?pv:hv,l=0,u=0;break;case av:for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.flags=l,(n.flags&255)!==rv){e.msg=`unknown compression method`,n.mode=z;break}if(n.flags&57344){e.msg=`unknown header flags set`,n.mode=z;break}n.head&&(n.head.text=l>>8&1),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=p_(n.check,T,2,0)),l=0,u=0,n.mode=ov;case ov:for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.head&&(n.head.time=l),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,T[2]=l>>>16&255,T[3]=l>>>24&255,n.check=p_(n.check,T,4,0)),l=0,u=0,n.mode=sv;case sv:for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.head&&(n.head.xflags=l&255,n.head.os=l>>8),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=p_(n.check,T,2,0)),l=0,u=0,n.mode=cv;case cv:if(n.flags&1024){for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.length=l,n.head&&(n.head.extra_len=l),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=p_(n.check,T,2,0)),l=0,u=0}else n.head&&(n.head.extra=null);n.mode=lv;case lv:if(n.flags&1024&&(p=n.length,p>s&&(p=s),p&&(n.head&&(C=n.head.extra_len-n.length,n.head.extra||(n.head.extra=Array(n.head.extra_len)),qg(n.head.extra,r,a,p,C)),n.flags&512&&(n.check=p_(n.check,r,p,a)),s-=p,a+=p,n.length-=p),n.length))break inf_leave;n.length=0,n.mode=uv;case uv:if(n.flags&2048){if(s===0)break inf_leave;p=0;do C=r[a+ p++],n.head&&C&&n.length<65536&&(n.head.name+=String.fromCharCode(C));while(C&&p<s);if(n.flags&512&&(n.check=p_(n.check,r,p,a)),s-=p,a+=p,C)break inf_leave}else n.head&&(n.head.name=null);n.length=0,n.mode=dv;case dv:if(n.flags&4096){if(s===0)break inf_leave;p=0;do C=r[a+ p++],n.head&&C&&n.length<65536&&(n.head.comment+=String.fromCharCode(C));while(C&&p<s);if(n.flags&512&&(n.check=p_(n.check,r,p,a)),s-=p,a+=p,C)break inf_leave}else n.head&&(n.head.comment=null);n.mode=fv;case fv:if(n.flags&512){for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l!==(n.check&65535)){e.msg=`header crc mismatch`,n.mode=z;break}l=0,u=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=hv;break;case pv:for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}e.adler=n.check=M_(l),l=0,u=0,n.mode=mv;case mv:if(n.havedict===0)return e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,Q_;e.adler=n.check=1,n.mode=hv;case hv:if(t===J_||t===Y_)break inf_leave;case gv:if(n.last){l>>>=u&7,u-=u&7,n.mode=Av;break}for(;u<3;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}switch(n.last=l&1,l>>>=1,--u,l&3){case 0:n.mode=_v;break;case 1:if(R_(n),n.mode=Cv,t===Y_){l>>>=2,u-=2;break inf_leave}break;case 2:n.mode=bv;break;case 3:e.msg=`invalid block type`,n.mode=z}l>>>=2,u-=2;break;case _v:for(l>>>=u&7,u-=u&7;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if((l&65535)!=(l>>>16^65535)){e.msg=`invalid stored block lengths`,n.mode=z;break}if(n.length=l&65535,l=0,u=0,n.mode=vv,t===Y_)break inf_leave;case vv:n.mode=yv;case yv:if(p=n.length,p){if(p>s&&(p=s),p>c&&(p=c),p===0)break inf_leave;qg(i,r,a,p,o),s-=p,a+=p,c-=p,o+=p,n.length-=p;break}n.mode=hv;break;case bv:for(;u<14;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.nlen=(l&31)+257,l>>>=5,u-=5,n.ndist=(l&31)+1,l>>>=5,u-=5,n.ncode=(l&15)+4,l>>>=4,u-=4,n.nlen>286||n.ndist>30){e.msg=`too many length or distance symbols`,n.mode=z;break}n.have=0,n.mode=xv;case xv:for(;n.have<n.ncode;){for(;u<3;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.lens[te[n.have++]]=l&7,l>>>=3,u-=3}for(;n.have<19;)n.lens[te[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,E={bits:n.lenbits},w=b_(W_,n.lens,0,19,n.lencode,0,n.work,E),n.lenbits=E.bits,w){e.msg=`invalid code lengths set`,n.mode=z;break}n.have=0,n.mode=Sv;case Sv:for(;n.have<n.nlen+n.ndist;){for(;g=n.lencode[l&(1<<n.lenbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(y<16)l>>>=_,u-=_,n.lens[n.have++]=y;else{if(y===16){for(ee=_+2;u<ee;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l>>>=_,u-=_,n.have===0){e.msg=`invalid bit length repeat`,n.mode=z;break}C=n.lens[n.have-1],p=3+(l&3),l>>>=2,u-=2}else if(y===17){for(ee=_+3;u<ee;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=_,u-=_,C=0,p=3+(l&7),l>>>=3,u-=3}else{for(ee=_+7;u<ee;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=_,u-=_,C=0,p=11+(l&127),l>>>=7,u-=7}if(n.have+p>n.nlen+n.ndist){e.msg=`invalid bit length repeat`,n.mode=z;break}for(;p--;)n.lens[n.have++]=C}}if(n.mode===z)break;if(n.lens[256]===0){e.msg=`invalid code -- missing end-of-block`,n.mode=z;break}if(n.lenbits=9,E={bits:n.lenbits},w=b_(G_,n.lens,0,n.nlen,n.lencode,0,n.work,E),n.lenbits=E.bits,w){e.msg=`invalid literal/lengths set`,n.mode=z;break}if(n.distbits=6,n.distcode=n.distdyn,E={bits:n.distbits},w=b_(K_,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,E),n.distbits=E.bits,w){e.msg=`invalid distances set`,n.mode=z;break}if(n.mode=Cv,t===Y_)break inf_leave;case Cv:n.mode=wv;case wv:if(s>=6&&c>=258){e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,g_(e,f),o=e.next_out,i=e.output,c=e.avail_out,a=e.next_in,r=e.input,s=e.avail_in,l=n.hold,u=n.bits,n.mode===hv&&(n.back=-1);break}for(n.back=0;g=n.lencode[l&(1<<n.lenbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(v&&!(v&240)){for(b=_,x=v,S=y;g=n.lencode[S+((l&(1<<b+x)-1)>>b)],_=g>>>24,v=g>>>16&255,y=g&65535,!(b+_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=b,u-=b,n.back+=b}if(l>>>=_,u-=_,n.back+=_,n.length=y,v===0){n.mode=kv;break}if(v&32){n.back=-1,n.mode=hv;break}if(v&64){e.msg=`invalid literal/length code`,n.mode=z;break}n.extra=v&15,n.mode=Tv;case Tv:if(n.extra){for(ee=n.extra;u<ee;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.length+=l&(1<<n.extra)-1,l>>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=Ev;case Ev:for(;g=n.distcode[l&(1<<n.distbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(!(v&240)){for(b=_,x=v,S=y;g=n.distcode[S+((l&(1<<b+x)-1)>>b)],_=g>>>24,v=g>>>16&255,y=g&65535,!(b+_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=b,u-=b,n.back+=b}if(l>>>=_,u-=_,n.back+=_,v&64){e.msg=`invalid distance code`,n.mode=z;break}n.offset=y,n.extra=v&15,n.mode=Dv;case Dv:if(n.extra){for(ee=n.extra;u<ee;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.offset+=l&(1<<n.extra)-1,l>>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg=`invalid distance too far back`,n.mode=z;break}n.mode=Ov;case Ov:if(c===0)break inf_leave;if(p=f-c,n.offset>p){if(p=n.offset-p,p>n.whave&&n.sane){e.msg=`invalid distance too far back`,n.mode=z;break}p>n.wnext?(p-=n.wnext,m=n.wsize-p):m=n.wnext-p,p>n.length&&(p=n.length),h=n.window}else h=i,m=o-n.offset,p=n.length;p>c&&(p=c),c-=p,n.length-=p;do i[o++]=h[m++];while(--p);n.length===0&&(n.mode=wv);break;case kv:if(c===0)break inf_leave;i[o++]=n.length,c--,n.mode=wv;break;case Av:if(n.wrap){for(;u<32;){if(s===0)break inf_leave;s--,l|=r[a++]<<u,u+=8}if(f-=c,e.total_out+=f,n.total+=f,f&&(e.adler=n.check=n.flags?p_(n.check,i,f,o-f):u_(n.check,i,f,o-f)),f=c,(n.flags?l:M_(l))!==n.check){e.msg=`incorrect data check`,n.mode=z;break}l=0,u=0}n.mode=jv;case jv:if(n.wrap&&n.flags){for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l!==(n.total&4294967295)){e.msg=`incorrect length check`,n.mode=z;break}l=0,u=0}n.mode=Mv;case Mv:w=Z_;break inf_leave;case z:w=ev;break inf_leave;case Nv:return tv;case Pv:default:return $_}return e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,(n.wsize||f!==e.avail_out&&n.mode<z&&(n.mode<Av||t!==q_))&&z_(e,e.output,e.next_out,f-e.avail_out)?(n.mode=Nv,tv):(d-=e.avail_in,f-=e.avail_out,e.total_in+=d,e.total_out+=f,n.total+=f,n.wrap&&f&&(e.adler=n.check=n.flags?p_(n.check,i,f,e.next_out-f):u_(n.check,i,f,e.next_out-f)),e.data_type=n.bits+(n.last?64:0)+(n.mode===hv?128:0)+(n.mode===Cv||n.mode===vv?256:0),(d===0&&f===0||t===q_)&&w===X_&&(w=nv),w)}function V_(e){if(!e||!e.state)return $_;var t=e.state;return t.window&&=null,e.state=null,X_}function H_(e,t){var n;return!e||!e.state||(n=e.state,!(n.wrap&2))?$_:(n.head=t,t.done=!1,X_)}function U_(e,t){var n=t.length,r,i,a;return!e||!e.state||(r=e.state,r.wrap!==0&&r.mode!==mv)?$_:r.mode===mv&&(i=1,i=u_(i,t,n,0),i!==r.check)?ev:(a=z_(e,t,n,n),a?(r.mode=Nv,tv):(r.havedict=1,X_))}var W_,G_,K_,q_,J_,Y_,X_,Z_,Q_,$_,ev,tv,nv,rv,iv,av,ov,sv,cv,lv,uv,dv,fv,pv,mv,hv,gv,_v,vv,yv,bv,xv,Sv,Cv,wv,Tv,Ev,Dv,Ov,kv,Av,jv,Mv,z,Nv,Pv,Fv,Iv,Lv,Rv,zv,Bv=n((()=>{d_(),h_(),y_(),j_(),Qg(),W_=0,G_=1,K_=2,q_=4,J_=5,Y_=6,X_=0,Z_=1,Q_=2,$_=-2,ev=-3,tv=-4,nv=-5,rv=8,iv=1,av=2,ov=3,sv=4,cv=5,lv=6,uv=7,dv=8,fv=9,pv=10,mv=11,hv=12,gv=13,_v=14,vv=15,yv=16,bv=17,xv=18,Sv=19,Cv=20,wv=21,Tv=22,Ev=23,Dv=24,Ov=25,kv=26,Av=27,jv=28,Mv=29,z=30,Nv=31,Pv=32,Fv=852,Iv=592,Lv=!0})),Vv,Hv=n((()=>{Vv={2:`need dictionary`,1:`stream end`,0:``,"-1":`file error`,"-2":`stream error`,"-3":`data error`,"-4":`insufficient memory`,"-5":`buffer error`,"-6":`incompatible version`}}));function Uv(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=``,this.state=null,this.data_type=2,this.adler=0}var Wv=n((()=>{}));function Gv(e,t){var n=new qv(t);if(n.push(e,!0),n.err)throw n.msg||Vv[n.err];return n.result}var Kv,qv,Jv,Yv=n((()=>{Qg(),s_(),Bg(),l_(),Bv(),Hv(),Wv(),Kv=Object.prototype.toString,qv=class e{constructor(t){if(!(this instanceof e))return new e(t);this.options=Hg({chunkSize:16384,windowBits:0,to:``},t||{});var n=this.options;n.raw&&n.windowBits>=0&&n.windowBits<16&&(n.windowBits=-n.windowBits,n.windowBits===0&&(n.windowBits=-15)),n.windowBits>=0&&n.windowBits<16&&!(t&&t.windowBits)&&(n.windowBits+=32),n.windowBits>15&&n.windowBits<48&&(n.windowBits&15||(n.windowBits|=15)),this.err=0,this.msg=``,this.ended=!1,this.chunks=[],this.strm=new Uv,this.strm.avail_out=0;var r=L_(this.strm,n.windowBits);if(r!==0||(this.header=new c_,H_(this.strm,this.header),n.dictionary&&(typeof n.dictionary==`string`?n.dictionary=$g(n.dictionary):Kv.call(n.dictionary)===`[object ArrayBuffer]`&&(n.dictionary=new Uint8Array(n.dictionary)),n.raw&&(r=U_(this.strm,n.dictionary),r!==0))))throw Error(Vv[r])}push(e,t){var n=this.strm,r=this.options.chunkSize,i=this.options.dictionary,a,o,s,c,l,u,d=!1;if(this.ended)return!1;o=t===~~t?t:t===!0?4:0,typeof e==`string`?n.input=t_(e):Kv.call(e)===`[object ArrayBuffer]`?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;do{if(n.avail_out===0&&(n.output=Yg(r),n.next_out=0,n.avail_out=r),a=B_(n,0),a===2&&i&&(u=typeof i==`string`?$g(i):Kv.call(i)===`[object ArrayBuffer]`?new Uint8Array(i):i,a=U_(this.strm,u)),a===-5&&d===!0&&(a=0,d=!1),a!==1&&a!==0)return this.onEnd(a),this.ended=!0,!1;n.next_out&&(n.avail_out===0||a===1||n.avail_in===0&&(o===4||o===2))&&(this.options.to===`string`?(s=r_(n.output,n.next_out),c=n.next_out-s,l=n_(n.output,s),n.next_out=c,n.avail_out=r-c,c&&qg(n.output,n.output,s,c,0),this.onData(l)):this.onData(Ug(n.output,n.next_out))),n.avail_in===0&&n.avail_out===0&&(d=!0)}while((n.avail_in>0||n.avail_out===0)&&a!==1);return a===1&&(o=4),o===4?(a=V_(this.strm),this.onEnd(a),this.ended=!0,a===0):o===2?(this.onEnd(0),n.avail_out=0,!0):!0}onData(e){this.chunks.push(e)}onEnd(e){e===0&&(this.options.to===`string`?this.result=this.chunks.join(``):this.result=Jg(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg}},Jv=Gv})),Xv=n((()=>{})),Zv=n((()=>{Bg(),Yv(),Xv()}));function Qv(e){try{let a=B.__wbindgen_add_to_stack_pointer(-16),o=fy(e,B.__wbindgen_export2),s=Py;B.decompress_all(a,o,s);var t=sy().getInt32(a+0,!0),n=sy().getInt32(a+4,!0),r=sy().getInt32(a+8,!0);if(sy().getInt32(a+12,!0))throw py(r);var i=oy(t,n).slice();return B.__wbindgen_export(t,n*1,1),i}finally{B.__wbindgen_add_to_stack_pointer(16)}}function $v(e){try{let r=B.__wbindgen_add_to_stack_pointer(-16),i=fy(e,B.__wbindgen_export2),a=Py;B.decompress_block(r,i,a);var t=sy().getInt32(r+0,!0),n=sy().getInt32(r+4,!0);if(sy().getInt32(r+8,!0))throw py(n);return Cy.__wrap(t)}finally{B.__wbindgen_add_to_stack_pointer(16)}}function ey(e,t,n,r,i){try{let s=B.__wbindgen_add_to_stack_pointer(-16),c=fy(e,B.__wbindgen_export2),l=Py;B.decompress_chunk_slice(s,c,l,t,n,r,i);var a=sy().getInt32(s+0,!0),o=sy().getInt32(s+4,!0);if(sy().getInt32(s+8,!0))throw py(o);return Sy.__wrap(a)}finally{B.__wbindgen_add_to_stack_pointer(16)}}function ty(e,t){return ry(Error(ly(e,t)))}function ny(e,t){throw Error(ly(e,t))}function ry(e){Ay===ky.length&&ky.push(ky.length+1);let t=Ay;return Ay=ky[t],ky[t]=e,t}function iy(e){e<132||(ky[e]=Ay,Ay=e)}function ay(e,t){return e>>>=0,cy().subarray(e/8,e/8+t)}function oy(e,t){return e>>>=0,uy().subarray(e/1,e/1+t)}function sy(){return(Ey===null||Ey.buffer.detached===!0||Ey.buffer.detached===void 0&&Ey.buffer!==B.memory.buffer)&&(Ey=new DataView(B.memory.buffer)),Ey}function cy(){return(Dy===null||Dy.byteLength===0)&&(Dy=new Float64Array(B.memory.buffer)),Dy}function ly(e,t){return e>>>=0,my(e,t)}function uy(){return(Oy===null||Oy.byteLength===0)&&(Oy=new Uint8Array(B.memory.buffer)),Oy}function dy(e){return ky[e]}function fy(e,t){let n=t(e.length*1,1)>>>0;return uy().set(e,n/1),Py=e.length,n}function py(e){let t=dy(e);return iy(e),t}function my(e,t){return Ny+=t,Ny>=My&&(jy=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),jy.decode(),Ny=t),jy.decode(uy().subarray(e,e+t))}function hy(e){B=e}async function gy(){return Fy||(Iy||=(async()=>{let e=await(await fetch(xy)).arrayBuffer(),{instance:t}=await WebAssembly.instantiate(e,{"./bgzf_wasm_bg.js":by});return Fy=t.exports,hy(Fy),Fy})(),Iy)}async function _y(e){return await gy(),Qv(e)}async function vy(e,t,n,r,i){await gy();let a=ey(e,t,n,r,i),o=a.buffer,s=[...a.cpositions],c=[...a.dpositions];return a.free(),{buffer:o,cpositions:s,dpositions:c}}var yy,by,xy,Sy,Cy,wy,Ty,Ey,Dy,Oy,ky,Ay,jy,My,Ny,Py,B,Fy,Iy,Ly=n((()=>{yy={},yy.d=(e,t)=>{for(var n in t)yy.o(t,n)&&!yy.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},yy.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),yy.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})},by={},yy.r(by),yy.d(by,{ChunkSliceResult:()=>Sy,DecompressResult:()=>Cy,__wbg_Error_8c4e43fe74559d73:()=>ty,__wbg___wbindgen_throw_be289d5034ed271b:()=>ny,__wbg_set_wasm:()=>hy,decompress_all:()=>Qv,decompress_block:()=>$v,decompress_chunk_slice:()=>ey}),xy=`data:application/wasm;base64,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AAsgASADNgIEIAEgAjYCACABQfiSwAAgACgCBCAAKAIIIgAtAAggAC0ACRAeAAuLAQEBfyMAQRBrIgMkAAJAIAIgAWoiASACTw0AQQBBABBNAAsgA0EEaiAAKAIAIgIgACgCBCABIAJBAXQiAiABIAJLGyICQQggAkEISxsiAkEBQQEQIAJAIAMoAgRBAUcNACADKAIIIAMoAgwQTQALIAMoAgghASAAIAI2AgAgACABNgIEIANBEGokAAuHAQEBfyMAQSBrIgIkAAJAAkAgACgCAEGAgICAeEYNACABIAAoAgQgACgCCBBSIQAMAQsgAkEIakEIaiAAKAIMKAIAIgBBCGopAgA3AwAgAkEIakEQaiAAQRBqKQIANwMAIAIgACkCADcDCCABKAIAIAEoAgQgAkEIahALIQALIAJBIGokACAAC3wBAX8CQCAAKAIAIgAoAgwiAUUNACAAKAIQIAFBARBWCwJAIAAoAhgiAUUNACAAKAIcIAFBA3RBCBBWCwJAIAAoAiQiAUUNACAAKAIoIAFBA3RBCBBWCwJAIABBf0YNACAAIAAoAgRBf2oiATYCBCABDQAgAEEwQQQQVgsLhAEBAn8jAEEQayIGJABBACEHIAZBADYCDAJAAkACQAJAAkAgASgCACACIAMgBCAFIAZBDGoQUA4EAQIAAwALQZCFwABB7ABB/IXAABA/AAsgACAGKAIMNgIEDAILIABBADoAAUEBIQcMAQtBASEHIABBAToAAQsgACAHOgAAIAZBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgQgAkEBdCICQQQgAkEESxsiAkEIQQgQIAJAIAEoAgRBAUcNACABKAIIIAEoAgwQTQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtoAQF/IwBBMGsiAiQAAkAQaEH/AXENACACQTBqJAAPCyACIAE2AiQgAkECNgIQIAJBpJLAADYCDCACQgE3AhggAkEErUIghiACQSRqrYQ3AyggAiACQShqNgIUIAJBDGpBtJLAABBAAAtoAgF/AX4jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQI2AgwgA0GcmMAANgIIIANCAjcCFCADQQStQiCGIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhBA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ABWAAAAWgAAAF4AAABiAAAAZgAAAGoAAABuAAAAcgAAAHYAAAB6AAAAfgAAAIIAAACGAAAAigAAAI4AAACSAAAAlgAAAJoAAACeAAAAogAAAKYAAACqAAAArgAAALIAAAC2AAAAugAAAL4AAADCAAAAxgAAAMoAAADOAAAA0gAAANYAAADaAAAA3gAAAOIAAADmAAAA6gAAAO4AAADyAAAA9gAAAPoAAAD+AAABAgAAAQYAAAEKAAABDgAAARIAAAEWAAABGgAAAR4AAAEiAAABJgAAASoAAAEuAAABMgAAATYAAAE6AAABPgAAAUIAAAFGAAABSgAAAU4AAAFSAAABVgAAAVoAAAFeAAABYgAAAWYAAAFqAAABbgAAAXIAAAF2AAABegAAAX4AAAGCAAABhgAAAYoAAAGOAAABkgAAAZYAAAGaAAABngAAAaIAAAGmAAABqgAAAa4AAAGyAAABtgAAAboAAAG+AAABwgAAAcYAAAHKAAABzgAAAdIAAAHWAAAB2gAAAd4AAAHiAAAB5gAAAeoAAAHuAAAB8gAAAfYAAAH6AAAB/gAAAgIAAAIGAAACCgAAAg4AAAISAAACFgAAAhoAAAIeAAACIgAAAiYAAAIqAAACLgAAAjIAAAI2AAACOgAAAj4AAAJCAAACRgAAAkoAAAJOAAACUgAAAlYAAAJaAAACXgAAAmIAAAJmAAACagAAAm4AAAJyAAACdgAAAnoAAAJ+AAACggAAAoYAAAKKAAACjgAAApIAAAKWAAACmgAAAp4AAAKiAAACpgAAAqoAAAKuAAACsgAAArYAAAK6AAACvgAAAsIAAALGAAACygAAAs4AAALSAAAC1gAAAtoAAALeAAAC4gAAAuYAAALqAAAC7gAAAvIAAAL2AAAC+gAAAv4AAAMCAAADBgAAAwoAAAMOAAADEgAAAxYAAAMaAAADHgAAAyIAAAMmAAADKgAAAy4AAAMyAAADNgAAAzoAAAM+AAADQgAAA0YAAANKAAADTgAAA1IAAANWAAADWgAAA14AAANiAAADZgAAA2oAAANuAAADcgAAA3YAAAN6AAADfgAAA4IAAAOGAAADigAAA44AAAOSAAADlgAAA5oAAAOeAAADogAAA6YAAAOqAAADrgAAA7IAAAO2AAADugAAA74AAAPCAAADxgAAA8oAAAPOAAAD0gAAA9YAAAPaAAAD3gAAA+IAAAPmAAAD6gAAA+4AAAPyAAAD9gAAA/oAAAP+AAKAAAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAQALAAEADQABAA8AAQARAAIAEwACABcAAgAbAAIAHwADACMAAwArAAMAMwADADsABABDAAQAUwAEAGMABABzAAUAgwAFAKMABQDDAAUA4wAAAAIBAAACAQAAAgF8/YsyV+ZX+QLfRL/jSOevbV3L1ixQ62N4QaZXcRuLuW1lbW9yeSBhbGxvY2F0aW9uIG9mICBieXRlcyBmYWlsZWQAAAAJEAAVAAAAFQkQAA0AAAAGARAAGAAAAGQBAAAJAAAAAAAAAAgAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAMAAAABAAAAAoAAAALAAAADAAAAAAAAAAIAAAABAAAAA0AAAAOAAAADwAAABAAAAARAAAAEAAAAAQAAAASAAAAEwAAABQAAAAIAAAAAAAAAAgAAAAEAAAAFQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAANsAEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAADbABAAKgAAALcEAAANAAAACQAAAAwAAAAEAAAAFgAAAGNhcGFjaXR5IG92ZXJmbG93AAAAUAoQABEAAAC6ABAAIAAAABwAAAAFAAAAAQAAAAAAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OXJhbmdlIGVuZCBpbmRleCAgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggAABMCxAAEAAAAFwLEAAiAAAAc2xpY2UgaW5kZXggc3RhcnRzIGF0ICBidXQgZW5kcyBhdCAAkAsQABYAAACmCxAADQAAAHJhbmdlIHN0YXJ0IGluZGV4IAAAxAsQABIAAABcCxAAIgAAAGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAADoCxAAIAAAAAgMEAASAAAAUmVmQ2VsbCBhbHJlYWR5IGJvcnJvd2VkAEHEmMAACwQEAAAAACkEbmFtZQEiAVgfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgA8CXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AgZ3YWxydXMGMC4yNC40DHdhc20tYmluZGdlbgcwLjIuMTA4`,Sy=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,wy.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,wy.unregister(this),e}free(){let e=this.__destroy_into_raw();B.__wbg_chunksliceresult_free(e,0)}get buffer(){try{let r=B.__wbindgen_add_to_stack_pointer(-16);B.chunksliceresult_buffer(r,this.__wbg_ptr);var e=sy().getInt32(r+0,!0),t=sy().getInt32(r+4,!0),n=oy(e,t).slice();return B.__wbindgen_export(e,t*1,1),n}finally{B.__wbindgen_add_to_stack_pointer(16)}}get cpositions(){try{let r=B.__wbindgen_add_to_stack_pointer(-16);B.chunksliceresult_cpositions(r,this.__wbg_ptr);var e=sy().getInt32(r+0,!0),t=sy().getInt32(r+4,!0),n=ay(e,t).slice();return B.__wbindgen_export(e,t*8,8),n}finally{B.__wbindgen_add_to_stack_pointer(16)}}get dpositions(){try{let r=B.__wbindgen_add_to_stack_pointer(-16);B.chunksliceresult_dpositions(r,this.__wbg_ptr);var e=sy().getInt32(r+0,!0),t=sy().getInt32(r+4,!0),n=ay(e,t).slice();return B.__wbindgen_export(e,t*8,8),n}finally{B.__wbindgen_add_to_stack_pointer(16)}}},Symbol.dispose&&(Sy.prototype[Symbol.dispose]=Sy.prototype.free),Cy=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Ty.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ty.unregister(this),e}free(){let e=this.__destroy_into_raw();B.__wbg_decompressresult_free(e,0)}get bytes_read(){return B.decompressresult_bytes_read(this.__wbg_ptr)>>>0}get data(){try{let r=B.__wbindgen_add_to_stack_pointer(-16);B.decompressresult_data(r,this.__wbg_ptr);var e=sy().getInt32(r+0,!0),t=sy().getInt32(r+4,!0),n=oy(e,t).slice();return B.__wbindgen_export(e,t*1,1),n}finally{B.__wbindgen_add_to_stack_pointer(16)}}},Symbol.dispose&&(Cy.prototype[Symbol.dispose]=Cy.prototype.free),wy=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>B.__wbg_chunksliceresult_free(e>>>0,1)),Ty=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>B.__wbg_decompressresult_free(e>>>0,1)),Ey=null,Dy=null,Oy=null,ky=Array(128).fill(void 0),ky.push(void 0,null,!0,!1),Ay=ky.length,jy=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),jy.decode(),My=2146435072,Ny=0,Py=0,Fy=null,Iy=null}));function Ry(e){return e.length>=2&&e[0]===31&&e[1]===139}async function zy(e){if(typeof DecompressionStream<`u`){let t=new DecompressionStream(`gzip`),n=t.writable.getWriter(),r=n.write(e).then(()=>n.close()),i=[],a=t.readable.getReader();for(;;){let{done:e,value:t}=await a.read();if(e)break;i.push(t)}await r;let o=i.reduce((e,t)=>e+t.length,0),s=new Uint8Array(o),c=0;for(let e of i)s.set(e,c),c+=e.length;return s}else return Jv(e,void 0)}async function By(e){try{return await _y(e)}catch(t){if(/invalid bgzf header/.exec(`${t}`)){if(Ry(e))return zy(e);throw Error(`problem decompressing block: not a valid bgzf or gzip block`)}throw/invalid gzip header/.exec(`${t}`)?Error(`problem decompressing block: incorrect gzip header check`):t}}async function Vy(e,t,n){try{let{minv:n,maxv:r}=t,i=await vy(e,n.blockPosition,n.dataPosition,r.blockPosition,r.dataPosition);return{buffer:i.buffer,cpositions:i.cpositions,dpositions:i.dpositions}}catch(e){throw/invalid gzip header/.exec(`${e}`)?Error(`problem decompressing block: incorrect gzip header check`):e}}var Hy=n((()=>{Zv(),Ly()}));function Uy(e){let t=0;for(let n of e)t+=n.length;return t}function Wy(e,t){let n=new Uint8Array(t??Uy(e)),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var Gy=n((()=>{})),Ky,qy=n((()=>{zg(),Hy(),Gy(),Ky=class{filehandle;gzi;constructor({filehandle:e,gziFilehandle:t}){this.filehandle=e,this.gzi=new Rg({filehandle:t})}async _readAndUncompressBlock(e,t){let n=t;n||=(await this.filehandle.stat()).size;let r=n-e;return By(await this.filehandle.read(r,e))}async read(e,t){let n=await this.gzi.getRelevantBlocksForRead(e,t),r=[];for(let i=0;i<n.length-1;i+=1){let a=await this._readAndUncompressBlock(n[i][0],n[i+1][0]),[,o]=n[i],s=o>=t?0:t-o,c=Math.min(t+e,o+a.length)-o;s>=0&&s<a.length&&r.push(a.subarray(s,c))}return Wy(r)}}})),Jy=n((()=>{qy(),Hy()}));function Yy(e,t,n,r){return e+t*Math.floor(r/n)+r%n}async function Xy(e,t={}){let n=new TextDecoder(`utf8`).decode(await e.readFile(t)),r=[],i=[],a=[],o=[],s=[],c={},l=0,u=n.length,d=0;for(;l<u;){let e=n.indexOf(`
193
- `,l);e===-1&&(e=u);let t=n.slice(l,e);if(t.endsWith(`\r`)&&(t=t.slice(0,-1)),t=t.trim(),l=e+1,t.length===0)continue;let f=t.indexOf(` `),p=t.indexOf(` `,f+1),m=t.indexOf(` `,p+1),h=t.indexOf(` `,m+1),g=t.slice(0,f);if(g.startsWith(`>`))throw Error(`found > in sequence name, might have supplied FASTA file for the FASTA index`);r.push(g),a.push(+t.slice(f+1,p)),i.push(+t.slice(p+1,m)),o.push(+t.slice(m+1,h)),s.push(+t.slice(h+1)),c[g]=d,d++}return{names:r,nameToIndex:c,offsets:i,lengths:a,lineLengths:o,lineBytes:s}}var Zy,Qy=n((()=>{jg(),Zy=class{constructor({fasta:e,fai:t,path:n,faiPath:r}){if(e)this.fasta=e;else if(n)this.fasta=new Ag(n);else throw Error(`Need to pass filehandle for fasta or path to localfile`);if(t)this.fai=t;else if(r)this.fai=new Ag(r);else if(n)this.fai=new Ag(`${n}.fai`);else throw Error(`Need to pass filehandle for or path to localfile`)}async _getIndexes(e){return this.indexes||=Xy(this.fai,e).catch(e=>{throw this.indexes=void 0,e}),this.indexes}async getSequenceNames(e){return(await this._getIndexes(e)).names}async getSequenceSizes(e){let t=await this._getIndexes(e);if(!t.sizesCache){let e={};for(let n=0;n<t.names.length;n++)e[t.names[n]]=t.lengths[n];t.sizesCache=e}return t.sizesCache}async getSequenceSize(e,t){let n=await this._getIndexes(t),r=n.nameToIndex[e];return r===void 0?void 0:n.lengths[r]}async hasReferenceSequence(e,t){return(await this._getIndexes(t)).nameToIndex[e]!==void 0}async getResiduesByName(e,t,n,r){let i=await this._getIndexes(r),a=i.nameToIndex[e];if(a!==void 0)return this._fetchFromIndex(i.offsets[a],i.lineBytes[a],i.lineLengths[a],i.lengths[a],t,n,r)}async getSequence(e,t,n,r){return this.getResiduesByName(e,t,n,r)}async _fetchFromIndex(e,t,n,r,i=0,a,o){let s=a;if(i<0)throw TypeError(`regionStart cannot be less than 0`);if((s===void 0||s>r)&&(s=r),i>=s)return``;let c=Yy(e,t,n,i),l=Yy(e,t,n,s)-c,u=new TextDecoder(`utf8`).decode(await this.fasta.read(l,c,o)).replace(/\s+/g,``);if(/[^\x20-\x7e]/.test(u.slice(0,1e3)))throw Error(`Non-ASCII characters detected in sequence. The file may be gzip compressed. Use BgzipIndexedFasta for bgzip files, or decompress the file.`);return u}}})),$y,eb=n((()=>{Jy(),jg(),Qy(),$y=class extends Zy{constructor({fasta:e,path:t,fai:n,faiPath:r,gzi:i,gziPath:a}){super({fasta:e,path:t,fai:n,faiPath:r}),e&&i?this.fasta=new Ky({filehandle:e,gziFilehandle:i}):t&&a&&(this.fasta=new Ky({filehandle:new Ag(t),gziFilehandle:new Ag(a)}))}}})),tb=r({BgzipIndexedFasta:()=>$y,FetchableSmallFasta:()=>rb,IndexedFasta:()=>Zy,parseSmallFasta:()=>nb});function nb(e){return e.split(`>`).filter(e=>/\S/.test(e)).map(e=>{let[t,...n]=e.split(`
194
- `),[r,...i]=t.split(` `),a=n.join(``).replace(/\s/g,``);return{id:r,description:i.join(` `),sequence:a}})}var rb,ib=n((()=>{jg(),eb(),Qy(),rb=class{constructor({fasta:e,path:t}){if(e)this.fasta=e;else if(t)this.fasta=new Ag(t);else throw Error(`Need to pass fasta or path`);this.data=this.fasta.readFile().then(e=>nb(new TextDecoder(`utf8`).decode(e)))}async fetch(e,t,n){let r=(await this.data).find(t=>t.id===e),i=n-t;if(!r)throw Error(`no sequence with id ${e} exists`);return r.sequence.slice(t,i)}async getSequenceNames(){return(await this.data).map(e=>e.id)}}})),ab=class extends Sg{constructor(e,t){let n={channel:`x`,windowSize:7e3,debounce:200,debounceMode:`window`,...e};if(super(t,n.channel),this.params=n,!this.params.url)throw Error(`No URL provided for IndexedFastaSource`);this.setupDebouncing(this.params),this.initializedPromise=new Promise(e=>{Promise.all([Promise.resolve().then(()=>(ib(),tb)),Promise.resolve().then(()=>(jg(),kg))]).then(([{IndexedFasta:t},{RemoteFile:n}])=>{let r=e=>new n(ah(e,this.view.getBaseUrl()));this.fasta=new t({fasta:r(this.params.url),fai:r(this.params.indexUrl??this.params.url+`.fai`)}),e()})})}get label(){return`bigWigSource`}async loadInterval(e){let t=await this.discretizeAndLoad(e,async(e,t)=>this.fasta.getSequence(e.chrom,e.startPos,e.endPos,{signal:t}).then(t=>{if(t!=null)return{chrom:e.chrom,start:e.startPos,sequence:t};console.log(`No sequence found for interval ${e.chrom}:${e.startPos}-${e.endPos}`)}));this.publishData([t.filter(e=>e!==void 0)])}};function ob(e){return e?.type==`indexedFasta`}Km(ob,ab);function sb(e,t,n){let r=Number(!!n),i=Number(!n);return BigInt(e.getInt32(t,n)*i+e.getInt32(t+4,n)*r)<<lb|BigInt(e.getUint32(t,n)*r+e.getUint32(t+4,n)*i)}function cb(e,t,n){let r=e.getUint32(t,n),i=e.getUint32(t+4,n),a=Number(!!n),o=Number(!n);return BigInt(r*o+i*a)<<lb|BigInt(r*a+i*o)}var lb,ub=n((()=>{lb=BigInt(32)})),db=n((()=>{ub(),`getBigInt64`in DataView||(DataView.prototype.getBigInt64=function(e,t){return sb(this,e,t)}),`getBigUint64`in DataView||(DataView.prototype.getBigUint64=function(e,t){return cb(this,e,t)})})),fb,pb,mb=n((()=>{fb=class{},pb=class{constructor(){this.signals=new Set,this.abortController=new AbortController}addSignal(e=new fb){if(this.signal.aborted)throw Error(`cannot add a signal, already aborted!`);this.signals.add(e),e.aborted?this.handleAborted(e):typeof e.addEventListener==`function`&&e.addEventListener(`abort`,()=>{this.handleAborted(e)})}handleAborted(e){this.signals.delete(e),this.signals.size===0&&this.abortController.abort()}get signal(){return this.abortController.signal}abort(){this.abortController.abort()}}})),hb,gb=n((()=>{hb=class{constructor(){this.callbacks=new Set}addCallback(e=()=>{}){this.callbacks.add(e),this.currentMessage&&e(this.currentMessage)}callback(e){this.currentMessage=e;for(let t of this.callbacks)t(e)}}})),_b,vb=n((()=>{mb(),gb(),_b=class e{constructor({fill:e,cache:t}){if(typeof e!=`function`)throw TypeError(`must pass a fill function`);if(typeof t!=`object`)throw TypeError(`must pass a cache object`);if(typeof t.get!=`function`||typeof t.set!=`function`||typeof t.delete!=`function`)throw TypeError(`cache must implement get(key), set(key, val), and and delete(key)`);this.cache=t,this.fillCallback=e}static isAbortException(e){return e.name===`AbortError`||e.code===`ERR_ABORTED`||e.message===`AbortError: aborted`||e.message===`Error: aborted`}evict(e,t){this.cache.get(e)===t&&this.cache.delete(e)}fill(e,t,n,r){let i=new pb,a=new hb;a.addCallback(r);let o={aborter:i,promise:this.fillCallback(t,i.signal,e=>{a.callback(e)}),settled:!1,statusReporter:a,get aborted(){return this.aborter.signal.aborted}};o.aborter.addSignal(n),o.aborter.signal.addEventListener(`abort`,()=>{o.settled||this.evict(e,o)}),o.promise.then(()=>{o.settled=!0},()=>{o.settled=!0,this.evict(e,o)}).catch(e=>{throw console.error(e),e}),this.cache.set(e,o)}static checkSinglePromise(e,t){function n(){if(t?.aborted)throw Object.assign(Error(`aborted`),{code:`ERR_ABORTED`})}return e.then(e=>(n(),e),e=>{throw n(),e})}has(e){return this.cache.has(e)}get(t,n,r,i){if(!r&&n instanceof AbortSignal)throw TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");let a=this.cache.get(t);return a?a.aborted&&!a.settled?(this.evict(t,a),this.get(t,n,r,i)):a.settled?a.promise:(a.aborter.addSignal(r),a.statusReporter.addCallback(i),e.checkSinglePromise(a.promise,r)):(this.fill(t,n,r,i),e.checkSinglePromise(this.cache.get(t).promise,r))}delete(e){let t=this.cache.get(e);t&&(t.settled||t.aborter.abort(),this.cache.delete(e))}clear(){let e=this.cache.keys(),t=0;for(let n=e.next();!n.done;n=e.next())this.delete(n.value),t+=1;return t}}})),yb=n((()=>{vb()})),bb,V,H,xb,U,Sb,Cb,wb,Tb,Eb,Db,Ob,kb,Ab,jb,Mb,Nb,Pb,Fb=n((()=>{bb=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},V=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Pb=class extends Map{constructor(e={}){if(super(),H.add(this),xb.set(this,0),U.set(this,new Map),Sb.set(this,new Map),Cb.set(this,void 0),wb.set(this,void 0),Tb.set(this,void 0),!(e.maxSize&&e.maxSize>0))throw TypeError("`maxSize` must be a number greater than 0");if(typeof e.maxAge==`number`&&e.maxAge===0)throw TypeError("`maxAge` must be a number greater than 0");bb(this,Cb,e.maxSize,`f`),bb(this,wb,e.maxAge||1/0,`f`),bb(this,Tb,e.onEviction,`f`)}get __oldCache(){return V(this,Sb,`f`)}get(e){if(V(this,U,`f`).has(e)){let t=V(this,U,`f`).get(e);return V(this,H,`m`,kb).call(this,e,t)}if(V(this,Sb,`f`).has(e)){let t=V(this,Sb,`f`).get(e);if(!V(this,H,`m`,Db).call(this,e,t))return V(this,H,`m`,Mb).call(this,e,t),t.value}}set(e,t,{maxAge:n=V(this,wb,`f`)}={}){let r=typeof n==`number`&&n!==1/0?Date.now()+n:void 0;return V(this,U,`f`).has(e)?V(this,U,`f`).set(e,{value:t,expiry:r}):V(this,H,`m`,jb).call(this,e,{value:t,expiry:r}),this}has(e){return V(this,U,`f`).has(e)?!V(this,H,`m`,Db).call(this,e,V(this,U,`f`).get(e)):V(this,Sb,`f`).has(e)?!V(this,H,`m`,Db).call(this,e,V(this,Sb,`f`).get(e)):!1}peek(e){if(V(this,U,`f`).has(e))return V(this,H,`m`,Ab).call(this,e,V(this,U,`f`));if(V(this,Sb,`f`).has(e))return V(this,H,`m`,Ab).call(this,e,V(this,Sb,`f`))}expiresIn(e){let t=V(this,U,`f`).get(e)??V(this,Sb,`f`).get(e);if(t)return t.expiry?t.expiry-Date.now():1/0}delete(e){var t;let n=V(this,U,`f`).delete(e);return n&&bb(this,xb,(t=V(this,xb,`f`),t--,t),`f`),V(this,Sb,`f`).delete(e)||n}clear(){V(this,U,`f`).clear(),V(this,Sb,`f`).clear(),bb(this,xb,0,`f`)}resize(e){if(!(e&&e>0))throw TypeError("`maxSize` must be a number greater than 0");let t=[...V(this,H,`m`,Nb).call(this)],n=t.length-e;n<0?(bb(this,U,new Map(t),`f`),bb(this,Sb,new Map,`f`),bb(this,xb,t.length,`f`)):(n>0&&V(this,H,`m`,Eb).call(this,t.slice(0,n)),bb(this,Sb,new Map(t.slice(n)),`f`),bb(this,U,new Map,`f`),bb(this,xb,0,`f`)),bb(this,Cb,e,`f`)}evict(e=1){let t=e;if(!t||t<=0)return;let n=[...V(this,H,`m`,Nb).call(this)],r=Math.trunc(Math.min(t,Math.max(n.length-1,0)));r<=0||(V(this,H,`m`,Eb).call(this,n.slice(0,r)),bb(this,Sb,new Map(n.slice(r)),`f`),bb(this,U,new Map,`f`),bb(this,xb,0,`f`))}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[(xb=new WeakMap,U=new WeakMap,Sb=new WeakMap,Cb=new WeakMap,wb=new WeakMap,Tb=new WeakMap,H=new WeakSet,Eb=function(e){if(typeof V(this,Tb,`f`)==`function`)for(let[t,n]of e)V(this,Tb,`f`).call(this,t,n.value)},Db=function(e,t){return typeof t.expiry==`number`&&t.expiry<=Date.now()?(typeof V(this,Tb,`f`)==`function`&&V(this,Tb,`f`).call(this,e,t.value),this.delete(e)):!1},Ob=function(e,t){if(!V(this,H,`m`,Db).call(this,e,t))return t.value},kb=function(e,t){return t.expiry?V(this,H,`m`,Ob).call(this,e,t):t.value},Ab=function(e,t){let n=t.get(e);return V(this,H,`m`,kb).call(this,e,n)},jb=function(e,t){var n;V(this,U,`f`).set(e,t),bb(this,xb,(n=V(this,xb,`f`),n++,n),`f`),V(this,xb,`f`)>=V(this,Cb,`f`)&&(bb(this,xb,0,`f`),V(this,H,`m`,Eb).call(this,V(this,Sb,`f`)),bb(this,Sb,V(this,U,`f`),`f`),bb(this,U,new Map,`f`))},Mb=function(e,t){V(this,Sb,`f`).delete(e),V(this,H,`m`,jb).call(this,e,t)},Nb=function*(){for(let e of V(this,Sb,`f`)){let[t,n]=e;V(this,U,`f`).has(t)||V(this,H,`m`,Db).call(this,t,n)||(yield e)}for(let e of V(this,U,`f`)){let[t,n]=e;V(this,H,`m`,Db).call(this,t,n)||(yield e)}},Symbol.iterator)](){for(let e of V(this,U,`f`)){let[t,n]=e;V(this,H,`m`,Db).call(this,t,n)||(yield[t,n.value])}for(let e of V(this,Sb,`f`)){let[t,n]=e;V(this,U,`f`).has(t)||V(this,H,`m`,Db).call(this,t,n)||(yield[t,n.value])}}*entriesDescending(){let e=[...V(this,U,`f`)];for(let t=e.length-1;t>=0;--t){let[n,r]=e[t];V(this,H,`m`,Db).call(this,n,r)||(yield[n,r.value])}e=[...V(this,Sb,`f`)];for(let t=e.length-1;t>=0;--t){let[n,r]=e[t];V(this,U,`f`).has(n)||V(this,H,`m`,Db).call(this,n,r)||(yield[n,r.value])}}*entriesAscending(){for(let[e,t]of V(this,H,`m`,Nb).call(this))yield[e,t.value]}get size(){if(!V(this,xb,`f`))return V(this,Sb,`f`).size;let e=0;for(let t of V(this,Sb,`f`).keys())V(this,U,`f`).has(t)||e++;return Math.min(V(this,xb,`f`)+e,V(this,Cb,`f`))}get maxSize(){return V(this,Cb,`f`)}get maxAge(){return V(this,wb,`f`)}entries(){return this.entriesAscending()}forEach(e,t=this){for(let[n,r]of this.entriesAscending())e.call(t,r,n,this)}get[Symbol.toStringTag](){return`QuickLRU`}toString(){return`QuickLRU(${this.size}/${this.maxSize})`}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.toString()}}}));function Ib(e){let t=[...e].sort((e,t)=>e.min===t.min?e.max-t.max:e.min-t.min),n=[],r=t[0];for(let e=1;e<t.length;e++){let i=t[e];i.min>r.max+1?(n.push(r),r=i):i.max>r.max&&(r={min:r.min,max:i.max})}return n.push(r),n}var Lb=n((()=>{}));function Rb(e,t,n,r,i,a){try{let u=G.__wbindgen_add_to_stack_pointer(-16),d=ex(e,G.__wbindgen_export),f=xx,p=$b(t,G.__wbindgen_export),m=xx,h=$b(n,G.__wbindgen_export),g=xx;G.decompress_and_parse_bigwig(u,d,f,p,m,h,g,r,i,a);var o=W().getInt32(u+0,!0),s=W().getInt32(u+4,!0),c=W().getInt32(u+8,!0);if(W().getInt32(u+12,!0))throw tx(c);var l=Jb(o,s).slice();return G.__wbindgen_export2(o,s*1,1),l}finally{G.__wbindgen_add_to_stack_pointer(16)}}function zb(e,t,n,r,i,a,o){try{let d=G.__wbindgen_add_to_stack_pointer(-16),f=ex(e,G.__wbindgen_export),p=xx,m=$b(t,G.__wbindgen_export),h=xx,g=$b(n,G.__wbindgen_export),_=xx;G.decompress_and_parse_summary(d,f,p,m,h,g,_,r,i,a,o);var s=W().getInt32(d+0,!0),c=W().getInt32(d+4,!0),l=W().getInt32(d+8,!0);if(W().getInt32(d+12,!0))throw tx(l);var u=Jb(s,c).slice();return G.__wbindgen_export2(s,c*1,1),u}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Bb(e,t){try{let o=G.__wbindgen_add_to_stack_pointer(-16),s=ex(e,G.__wbindgen_export),c=xx;G.inflate_raw(o,s,c,t);var n=W().getInt32(o+0,!0),r=W().getInt32(o+4,!0),i=W().getInt32(o+8,!0);if(W().getInt32(o+12,!0))throw tx(i);var a=Jb(n,r).slice();return G.__wbindgen_export2(n,r*1,1),a}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Vb(e,t,n,r){try{let c=G.__wbindgen_add_to_stack_pointer(-16),l=ex(e,G.__wbindgen_export),u=xx,d=$b(t,G.__wbindgen_export),f=xx,p=$b(n,G.__wbindgen_export),m=xx;G.inflate_raw_batch(c,l,u,d,f,p,m,r);var i=W().getInt32(c+0,!0),a=W().getInt32(c+4,!0),o=W().getInt32(c+8,!0);if(W().getInt32(c+12,!0))throw tx(o);var s=Jb(i,a).slice();return G.__wbindgen_export2(i,a*1,1),s}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Hb(e){try{let a=G.__wbindgen_add_to_stack_pointer(-16),o=ex(e,G.__wbindgen_export),s=xx;G.inflate_raw_unknown_size(a,o,s);var t=W().getInt32(a+0,!0),n=W().getInt32(a+4,!0),r=W().getInt32(a+8,!0);if(W().getInt32(a+12,!0))throw tx(r);var i=Jb(t,n).slice();return G.__wbindgen_export2(t,n*1,1),i}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Ub(e,t,n){try{let o=G.__wbindgen_add_to_stack_pointer(-16),s=ex(e,G.__wbindgen_export),c=xx;G.parse_bigwig_block(o,s,c,t,n);var r=W().getInt32(o+0,!0),i=W().getInt32(o+4,!0),a=Jb(r,i).slice();return G.__wbindgen_export2(r,i*1,1),a}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Wb(e,t,n,r){try{let s=G.__wbindgen_add_to_stack_pointer(-16),c=ex(e,G.__wbindgen_export),l=xx;G.parse_summary_block(s,c,l,t,n,r);var i=W().getInt32(s+0,!0),a=W().getInt32(s+4,!0),o=Jb(i,a).slice();return G.__wbindgen_export2(i,a*1,1),o}finally{G.__wbindgen_add_to_stack_pointer(16)}}function Gb(e,t){return Kb(Error(Yb(e,t)))}function Kb(e){_x===gx.length&&gx.push(gx.length+1);let t=_x;return _x=gx[t],gx[t]=e,t}function qb(e){e<1028||(gx[e]=_x,_x=e)}function Jb(e,t){return e>>>=0,Zb().subarray(e/1,e/1+t)}function W(){return(px===null||px.buffer.detached===!0||px.buffer.detached===void 0&&px.buffer!==G.memory.buffer)&&(px=new DataView(G.memory.buffer)),px}function Yb(e,t){return e>>>=0,nx(e,t)}function Xb(){return(mx===null||mx.byteLength===0)&&(mx=new Uint32Array(G.memory.buffer)),mx}function Zb(){return(hx===null||hx.byteLength===0)&&(hx=new Uint8Array(G.memory.buffer)),hx}function Qb(e){return gx[e]}function $b(e,t){let n=t(e.length*4,4)>>>0;return Xb().set(e,n/4),xx=e.length,n}function ex(e,t){let n=t(e.length*1,1)>>>0;return Zb().set(e,n/1),xx=e.length,n}function tx(e){let t=Qb(e);return qb(e),t}function nx(e,t){return bx+=t,bx>=yx&&(vx=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),vx.decode(),bx=t),vx.decode(Zb().subarray(e,e+t))}function rx(e){G=e}async function ix(){return Sx||(Cx||=(async()=>{let e=await(await fetch(fx)).arrayBuffer(),{instance:t}=await WebAssembly.instantiate(e,{"./inflate_wasm_bg.js":dx});return Sx=t.exports,rx(Sx),Sx})(),Cx)}async function ax(e,t,n,r){await ix();let i=Vb(e,t,n,r),a=new DataView(i.buffer,i.byteOffset,i.byteLength),o=a.getUint32(0,!0),s=4+(o+1)*4,c=Array(o+1);for(let e=0;e<=o;e++)c[e]=a.getUint32(4+e*4,!0);return{data:i.subarray(s),offsets:c}}function ox(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0,!0);if(t===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array};let n=4+t*4,r=n+t*4;return{starts:new Int32Array(e.buffer,e.byteOffset+4,t),ends:new Int32Array(e.buffer,e.byteOffset+n,t),scores:new Float32Array(e.buffer,e.byteOffset+r,t)}}function sx(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0,!0);if(t===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,minScores:new Float32Array,maxScores:new Float32Array};let n=4+t*4,r=n+t*4,i=r+t*4,a=i+t*4;return{starts:new Int32Array(e.buffer,e.byteOffset+4,t),ends:new Int32Array(e.buffer,e.byteOffset+n,t),scores:new Float32Array(e.buffer,e.byteOffset+r,t),minScores:new Float32Array(e.buffer,e.byteOffset+i,t),maxScores:new Float32Array(e.buffer,e.byteOffset+a,t)}}async function cx(e,t,n,r,i,a){return await ix(),ox(Rb(e,t,n,r,i,a))}async function lx(e,t,n,r,i,a,o){return await ix(),sx(zb(e,t,n,r,i,a,o))}var ux,dx,fx,px,mx,hx,gx,_x,vx,yx,bx,xx,G,Sx,Cx,wx=n((()=>{ux={},ux.d=(e,t)=>{for(var n in t)ux.o(t,n)&&!ux.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},ux.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),ux.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})},dx={},ux.r(dx),ux.d(dx,{__wbg_Error_83742b46f01ce22d:()=>Gb,__wbg_set_wasm:()=>rx,decompress_and_parse_bigwig:()=>Rb,decompress_and_parse_summary:()=>zb,inflate_raw:()=>Bb,inflate_raw_batch:()=>Vb,inflate_raw_unknown_size:()=>Hb,parse_bigwig_block:()=>Ub,parse_summary_block:()=>Wb}),fx=`data:application/wasm;base64,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IGlzIMASIGJ1dCB0aGUgaW5kZXggaXMgwAAScmFuZ2Ugc3RhcnQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAQcmFuZ2UgZW5kIGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAFmRlY29tcHJlc3Npb24gZmFpbGVkOiDAAMACOiDAAC9ydXN0Yy80YTRlZjQ5M2UzYTE0ODhjNmUzMjE1NzAyMzgwODRiMzg5NDhmNmRiL2xpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5ycwAvcnVzdGMvNGE0ZWY0OTNlM2ExNDg4YzZlMzIxNTcwMjM4MDg0YjM4OTQ4ZjZkYi9saWJyYXJ5L2NvcmUvc3JjL2ZtdC9udW0ucnMAL2hvbWUvY2RpZXNoLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMTQvc3JjL2V4dGVybnJlZi5ycwAvcnVzdGMvNGE0ZWY0OTNlM2ExNDg4YzZlMzIxNTcwMjM4MDg0YjM4OTQ4ZjZkYi9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi4xMS9zcmMvZGxtYWxsb2MucnMAL2hvbWUvY2RpZXNoLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbGliZGVmbGF0ZXItMS4yNS4yL3NyYy9saWIucnMAALwCEAAKAAAAbAAAABkAAAC8AhAACgAAAGwAAAAnAAAAvAIQAAoAAABsAAAAOQAAALwCEAAKAAAAbAAAAEsAAAC8AhAACgAAAGAAAAAZAAAAvAIQAAoAAABgAAAAJwAAALwCEAAKAAAAYAAAADkAAAC8AhAACgAAAGAAAABLAAAAvAIQAAoAAABkAAAAGQAAALwCEAAKAAAAZAAAACcAAAC8AhAACgAAAGQAAAA5AAAAvAIQAAoAAABkAAAASwAAALwCEAAKAAAAQAAAAAsAAAC8AhAACgAAAFgAAAALAAAAvAIQAAoAAABJAAAAEwAAALwCEAAKAAAAUwAAACsAAAC8AhAACgAAAE0AAAAPAAAAvAIQAAoAAABKAAAAHAAAALwCEAAKAAAAOQAAAB0AAABkZWNvbXByZXNzaW9uIG91dHB1dCB0b28gbGFyZ2UAALwCEAAKAAAAJgEAABMAAAC8AhAACgAAAC0BAAAdAAAAvAIQAAoAAAAnAQAAHAAAALwCEAAKAAAAoAEAABMAAAC8AhAACgAAAKcBAAAdAAAAvAIQAAoAAAChAQAAHAAAAEJhZERhdGFJbnN1ZmZpY2llbnRTcGFjZYMBEABnAAAAfwAAABEAAACDARAAZwAAAIwAAAARAAAAbGliZGVmbGF0ZV9kZWZsYXRlX2RlY29tcHJlc3MgcmV0dXJuZWQgYW4gdW5rbm93biBlcnJvciB0eXBlOiB0aGlzIGlzIGFuIGludGVybmFsIGJ1ZyB0aGF0ICoqbXVzdCoqIGJlIGZpeGVkZwIQAF8AAAANAQAAFQAAAGxpYmRlZmxhdGVfYWxsb2NfZGVjb21wcmVzc29yIHJldHVybmVkIE5VTEw6IG91dCBvZiBtZW1vcnkAAGcCEABfAAAAnQAAABEAAAAMAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAQERIACAcJBgoFCwQMAw0CDgEPAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAAAAAAAABAAAAAgAAAAMAAAAEAAEABQABAAcAAgAJAAIADQADABEAAwAZAAQAIQAEADEABQBBAAUAYQAGAIEABgDBAAcAAQEHAIEBCAABAggAAQMJAAEECQABBgoAAQgKAAEMCwABEAsAARgMAAEgDAABMA0AAUANAAFgDQABYA0AAWAAAACAAAABgAAAAoAAAAOAAAAEgAAABYAAAAaAAAAHgAAACIAAAAmAAAAKgAAAC4AAAAyAAAANgAAADoAAAA+AAAAQgAAAEYAAABKAAAATgAAAFIAAABWAAAAWgAAAF4AAABiAAAAZgAAAGoAAABuAAAAcgAAAHYAAAB6AAAAfgAAAIIAAACGAAAAigAAAI4AAACSAAAAlgAAAJoAAACeAAAAogAAAKYAAACqAAAArgAAALIAAAC2AAAAugAAAL4AAADCAAAAxgAAAMoAAADOAAAA0gAAANYAAADaAAAA3gAAAOIAAADmAAAA6gAAAO4AAADyAAAA9gAAAPoAAAD+AAABAgAAAQYAAAEKAAABDgAAARIAAAEWAAABGgAAAR4AAAEiAAABJgAAASoAAAEuAAABMgAAATYAAAE6AAABPgAAAUIAAAFGAAABSgAAAU4AAAFSAAABVgAAAVoAAAFeAAABYgAAAWYAAAFqAAABbgAAAXIAAAF2AAABegAAAX4AAAGCAAABhgAAAYoAAAGOAAABkgAAAZYAAAGaAAABngAAAaIAAAGmAAABqgAAAa4AAAGyAAABtgAAAboAAAG+AAABwgAAAcYAAAHKAAABzgAAAdIAAAHWAAAB2gAAAd4AAAHiAAAB5gAAAeoAAAHuAAAB8gAAAfYAAAH6AAAB/gAAAgIAAAIGAAACCgAAAg4AAAISAAACFgAAAhoAAAIeAAACIgAAAiYAAAIqAAACLgAAAjIAAAI2AAACOgAAAj4AAAJCAAACRgAAAkoAAAJOAAACUgAAAlYAAAJaAAACXgAAAmIAAAJmAAACagAAAm4AAAJyAAACdgAAAnoAAAJ+AAACggAAAoYAAAKKAAACjgAAApIAAAKWAAACmgAAAp4AAAKiAAACpgAAAqoAAAKuAAACsgAAArYAAAK6AAACvgAAAsIAAALGAAACygAAAs4AAALSAAAC1gAAAtoAAALeAAAC4gAAAuYAAALqAAAC7gAAAvIAAAL2AAAC+gAAAv4AAAMCAAADBgAAAwoAAAMOAAADEgAAAxYAAAMaAAADHgAAAyIAAAMmAAADKgAAAy4AAAMyAAADNgAAAzoAAAM+AAADQgAAA0YAAANKAAADTgAAA1IAAANWAAADWgAAA14AAANiAAADZgAAA2oAAANuAAADcgAAA3YAAAN6AAADfgAAA4IAAAOGAAADigAAA44AAAOSAAADlgAAA5oAAAOeAAADogAAA6YAAAOqAAADrgAAA7IAAAO2AAADugAAA74AAAPCAAADxgAAA8oAAAPOAAAD0gAAA9YAAAPaAAAD3gAAA+IAAAPmAAAD6gAAA+4AAAPyAAAD9gAAA/oAAAP+AAKAAAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAQALAAEADQABAA8AAQARAAIAEwACABcAAgAbAAIAHwADACMAAwArAAMAMwADADsABABDAAQAUwAEAGMABABzAAUAgwAFAKMABQDDAAUA4wAAAAIBAAACAQAAAgFtXcvWLFDrY3hBpldxG4u5I8o7SqZ3fJNCY0mvl2+yhAAAAAAIAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAADAAAAAQAAAAKAAAACwAAAAwAAAAAAAAACAAAAAQAAAANAAAADgAAAA8AAAAQAAAAEQAAABAAAAAEAAAAEgAAABMAAAAUAAAACAAAAAAAAAAIAAAABAAAABUAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAAA8AhAAKgAAALEEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAPAIQACoAAAC3BAAADQAAAAkAAAAMAAAABAAAABYAAABFcnJvcgAAABcAAAAMAAAABAAAABgAAAAZAAAAGgAAAAAAAAAAAAAAAQAAABsAAABhIGZvcm1hdHRpbmcgdHJhaXQgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3Igd2hlbiB0aGUgdW5kZXJseWluZyBzdHJlYW0gZGlkIG5vdAAA7gAQAEgAAACKAgAADgAAAGNhcGFjaXR5IG92ZXJmbG93AAAA6wEQAFAAAAAcAAAABQAAADAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5NwEQAEsAAABXAgAABQAAAFJlZkNlbGwgYWxyZWFkeSBib3Jyb3dlZABB2JvAAAsEBAAAAAApBG5hbWUBIgFjH19fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIAPAlwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQIGd2FscnVzBjAuMjUuMgx3YXNtLWJpbmRnZW4HMC4yLjExNA==`,px=null,mx=null,hx=null,gx=Array(1024).fill(void 0),gx.push(void 0,null,!0,!1),_x=gx.length,vx=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),vx.decode(),yx=2146435072,bx=0,xx=0,Sx=null,Cx=null}));async function Tx(e,t,n){let r=new Uint32Array(t.length),i=new Uint32Array(t.length);for(let e=0;e<t.length;e++){let n=t[e];r[e]=n.offset,i[e]=n.length}return ax(e,r,i,n)}async function Ex(e,t,n,r,i){let a=new Uint32Array(t.length),o=new Uint32Array(t.length);for(let e=0;e<t.length;e++){let n=t[e];a[e]=n.offset,o[e]=n.length}return cx(e,a,o,n,r,i)}async function Dx(e,t,n,r,i,a){let o=new Uint32Array(t.length),s=new Uint32Array(t.length);for(let e=0;e<t.length;e++){let n=t[e];o[e]=n.offset,s[e]=n.length}return lx(e,o,s,n,r,i,a)}var Ox=n((()=>{wx()}));function kx(e){e.sort((e,t)=>e.offset-t.offset);let t=[],n,r;for(let i of e)n&&r&&i.offset-r<=2e3?(n.length=i.offset+i.length-n.offset,n.blocks.push(i),r=i.offset+i.length):(n={blocks:[i],length:i.length,offset:i.offset},t.push(n),r=i.offset+i.length);return t}var Ax=n((()=>{}));function jx(e,t,n,r){return e<r&&t>=n}function Mx(e,t,n){let r=[],i=t,a=new DataView(e.buffer,e.byteOffset,e.length);for(;i<e.byteLength;){let e=a.getUint32(i,!0);i+=4;let t=a.getUint32(i,!0);i+=4;let o=a.getUint32(i,!0);i+=4;let s=a.getUint32(i,!0);i+=4;let c=a.getFloat32(i,!0);i+=4;let l=a.getFloat32(i,!0);i+=4;let u=a.getFloat32(i,!0);i+=8,(!n||e===n.chrId&&jx(t,o,n.start,n.end))&&r.push({start:t,end:o,maxScore:l,minScore:c,summary:!0,score:u/(s||1)})}return r}function Nx(e,t,n,r){let i=[],a=t,o=new DataView(e.buffer,e.byteOffset,e.length);for(;a<e.byteLength;){let t=a,s=o.getUint32(a,!0);a+=4;let c=o.getInt32(a,!0);a+=4;let l=o.getInt32(a,!0);a+=4;let u=a;for(;u<e.length&&e[u]!==0;u++);let d=e.subarray(a,u),f=Ix.decode(d);a=u+1,(!r||s===r.chrId&&jx(c,l,r.start,r.end))&&i.push({start:c,end:l,rest:f,uniqueId:`bb-${n+t}`})}return i}function Px(e,t,n){let r=e.subarray(t),i=new DataView(r.buffer,r.byteOffset,r.length),a=i.getInt32(4,!0),o=i.getUint32(12,!0),s=i.getUint32(16,!0),c=i.getUint8(20),l=i.getUint16(22,!0),u=24,d=[];switch(c){case 1:for(let e=0;e<l;e++){let e=i.getInt32(u,!0);u+=4;let t=i.getInt32(u,!0);u+=4;let r=i.getFloat32(u,!0);u+=4,(!n||jx(e,t,n.start,n.end))&&d.push({start:e,end:t,score:r})}break;case 2:for(let e=0;e<l;e++){let e=i.getInt32(u,!0);u+=4;let t=i.getFloat32(u,!0);u+=4;let r=e+s;(!n||jx(e,r,n.start,n.end))&&d.push({score:t,start:e,end:r})}break;case 3:for(let e=0;e<l;e++){let t=i.getFloat32(u,!0);u+=4;let r=a+e*o,c=r+s;(!n||jx(r,c,n.start,n.end))&&d.push({score:t,start:r,end:c})}break}return d}function Fx(e,t,n){let r=new DataView(e.buffer,e.byteOffset+t,e.length-t),i=r.getInt32(4,!0),a=r.getUint32(12,!0),o=r.getUint32(16,!0),s=r.getUint8(20),c=r.getUint16(22,!0),l=new Int32Array(c),u=new Int32Array(c),d=new Float32Array(c);if(!n){switch(s){case 1:{let e=24;for(let t=0;t<c;t++)l[t]=r.getInt32(e,!0),u[t]=r.getInt32(e+4,!0),d[t]=r.getFloat32(e+8,!0),e+=12;return{starts:l,ends:u,scores:d}}case 2:{let e=24;for(let t=0;t<c;t++){let n=r.getInt32(e,!0);l[t]=n,u[t]=n+o,d[t]=r.getFloat32(e+4,!0),e+=8}return{starts:l,ends:u,scores:d}}case 3:{let e=24;for(let t=0;t<c;t++){let n=i+t*a;l[t]=n,u[t]=n+o,d[t]=r.getFloat32(e,!0),e+=4}return{starts:l,ends:u,scores:d}}}return{starts:l,ends:u,scores:d}}let f=n.start,p=n.end,m=0;switch(s){case 1:{let e=24;for(let t=0;t<c;t++){let t=r.getInt32(e,!0),n=r.getInt32(e+4,!0);t<p&&n>=f&&(l[m]=t,u[m]=n,d[m]=r.getFloat32(e+8,!0),m++),e+=12}break}case 2:{let e=24;for(let t=0;t<c;t++){let t=r.getInt32(e,!0),n=t+o;t<p&&n>=f&&(l[m]=t,u[m]=n,d[m]=r.getFloat32(e+4,!0),m++),e+=8}break}case 3:{let e=24;for(let t=0;t<c;t++){let n=i+t*a,s=n+o;n<p&&s>=f&&(l[m]=n,u[m]=s,d[m]=r.getFloat32(e,!0),m++),e+=4}break}}return m<c?{starts:l.subarray(0,m),ends:u.subarray(0,m),scores:d.subarray(0,m)}:{starts:l,ends:u,scores:d}}var Ix,Lx,Rx,zx=n((()=>{yb(),Fb(),Lb(),Ox(),Ax(),Ix=new TextDecoder(`utf8`),Lx=610839776,Rx=class{bbi;refsByName;rTreeOffset;uncompressBufSize;blockType;rTreePromise;featureCache=new _b({cache:new Pb({maxSize:1e3}),fill:async({length:e,offset:t},n)=>this.bbi.read(e,t,{signal:n})});constructor(e,t,n,r,i){if(this.bbi=e,this.refsByName=t,this.rTreeOffset=n,this.uncompressBufSize=r,this.blockType=i,!(n>=0))throw Error(`invalid rTreeOffset!`)}async _collectBlocks(e,t,n,r){let i=this.refsByName[e];if(i===void 0)return;this.rTreePromise||=this.bbi.read(48,this.rTreeOffset,r);let a=await this.rTreePromise,o=new DataView(a.buffer,a.byteOffset,a.length),s=o.getUint32(0,!0);if(s!==Lx)throw Error(`invalid cirTree magic: 0x${s.toString(16)} (expected 0x${Lx.toString(16)}) at offset ${this.rTreeOffset}, file may be corrupt or unsupported`);let c=4+o.getUint32(4,!0)*32,l=(e,r,a,o)=>(e<i||e===i&&r<=n)&&(a>i||a===i&&o>=t),u=[],d=[this.rTreeOffset+48];for(;d.length>0;){let e=Ib(d.map(e=>({min:e,max:e+c}))),t=[];for(let{min:n,max:i}of e){let e=i-n,a=n,o=await this.featureCache.get(`${e}_${a}`,{length:e,offset:a},r?.signal);for(let e of d)if(n<=e&&e<=i){let n=o.subarray(e-a),r=new DataView(n.buffer,n.byteOffset,n.length),i=r.getUint8(0),s=r.getUint16(2,!0),c=4;if(i===1)for(let e=0;e<s;e++){let e=r.getUint32(c,!0),t=r.getUint32(c+4,!0),n=r.getUint32(c+8,!0),i=r.getUint32(c+12,!0),a=Number(r.getBigUint64(c+16,!0)),o=Number(r.getBigUint64(c+24,!0));c+=32,l(e,t,n,i)&&u.push({offset:a,length:o})}else if(i===0)for(let e=0;e<s;e++){let e=r.getUint32(c,!0),n=r.getUint32(c+4,!0),i=r.getUint32(c+8,!0),a=r.getUint32(c+12,!0),o=Number(r.getBigUint64(c+16,!0));c+=24,l(e,n,i,a)&&t.push(o)}}}d=t}return{blocks:u,chrId:i}}async readWigData(e,t,n,r){let i=await this._collectBlocks(e,t,n,r);if(!i)return[];let{blocks:a,chrId:o}=i;return this.readFeatures(a,{...r,request:{chrId:o,start:t,end:n}})}async readWigDataAsArrays(e,t,n,r){let i=await this._collectBlocks(e,t,n,r),a=i?.blocks??[],o=i?{chrId:i.chrId,start:t,end:n}:void 0,s={...r,request:o};return this.blockType===`summary`?this._readSummaryFeaturesAsArrays(a,s):this._readBigWigFeaturesAsArrays(a,s)}async readFeatures(e,t={}){let{blockType:n,uncompressBufSize:r}=this,{signal:i,request:a}=t,o=kx(e),s=[];for(let e of o){let t=await this.bbi.read(e.length,e.offset,{signal:i}),o=e.offset,c=e.blocks,l,u;if(r>0){let e=[];for(let t of c)e.push({offset:t.offset-o,length:t.length});let n=await Tx(t,e,r);l=n.data,u=n.offsets}else{l=t,u=[];for(let e of c)u.push(e.offset-o);u.push(t.length)}for(let e=0;e<c.length;e++){let t=u[e],r=u[e+1],i=l.subarray(t,r),o;switch(n){case`summary`:o=Mx(i,0,a);break;case`bigwig`:o=Px(i,0,a);break;case`bigbed`:o=Nx(i,0,c[e].offset*256,a);break;default:o=[],console.warn(`Don't know what to do with ${n}`)}for(let e of o)s.push(e)}}return s}async _readBigWigFeaturesAsArrays(e,t={}){let{uncompressBufSize:n}=this,{signal:r,request:i}=t,a=kx(e),o=[],s=[],c=[],l=0;for(let e of a){let{length:t,offset:a}=e,u=await this.bbi.read(t,a,{signal:r}),d=e.blocks.map(t=>({offset:t.offset-e.offset,length:t.length}));if(n>0){let e=await Ex(u,d,n,i?.start??0,i?.end??0);e.starts.length>0&&(o.push(e.starts),s.push(e.ends),c.push(e.scores),l+=e.starts.length)}else for(let e of d){let t=Fx(u.subarray(e.offset,e.offset+e.length),0,i);t.starts.length>0&&(o.push(t.starts),s.push(t.ends),c.push(t.scores),l+=t.starts.length)}}if(o.length===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,isSummary:!1};if(o.length===1)return{starts:o[0],ends:s[0],scores:c[0],isSummary:!1};let u=new Int32Array(l),d=new Int32Array(l),f=new Float32Array(l),p=0;for(let e=0;e<o.length;e++)u.set(o[e],p),d.set(s[e],p),f.set(c[e],p),p+=o[e].length;return{starts:u,ends:d,scores:f,isSummary:!1}}async _readSummaryFeaturesAsArrays(e,t={}){let{uncompressBufSize:n}=this,{signal:r,request:i}=t,a=kx(e),o=[],s=[],c=[],l=[],u=[],d=0;for(let e of a){let{length:t,offset:a}=e,f=await this.bbi.read(t,a,{signal:r}),p=e.blocks.map(t=>({offset:t.offset-e.offset,length:t.length}));if(n>0){let e=await Dx(f,p,n,i?.chrId??0,i?.start??0,i?.end??0);e.starts.length>0&&(o.push(e.starts),s.push(e.ends),c.push(e.scores),l.push(e.minScores),u.push(e.maxScores),d+=e.starts.length)}else for(let e of p){let t=Mx(f.subarray(e.offset,e.offset+e.length),0,i);if(t.length>0){let e=new Int32Array(t.length),n=new Int32Array(t.length),r=new Float32Array(t.length),i=new Float32Array(t.length),a=new Float32Array(t.length);for(let o=0;o<t.length;o++){let s=t[o];e[o]=s.start,n[o]=s.end,r[o]=s.score??0,i[o]=s.minScore??0,a[o]=s.maxScore??0}o.push(e),s.push(n),c.push(r),l.push(i),u.push(a),d+=t.length}}}if(o.length===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,minScores:new Float32Array,maxScores:new Float32Array,isSummary:!0};if(o.length===1)return{starts:o[0],ends:s[0],scores:c[0],minScores:l[0],maxScores:u[0],isSummary:!0};let f=new Int32Array(d),p=new Int32Array(d),m=new Float32Array(d),h=new Float32Array(d),g=new Float32Array(d),_=0;for(let e=0;e<o.length;e++)f.set(o[e],_),p.set(s[e],_),m.set(c[e],_),h.set(l[e],_),g.set(u[e],_),_+=o[e].length;return{starts:f,ends:p,scores:m,minScores:h,maxScores:g,isSummary:!0}}}}));function Bx(e){return new DataView(e.buffer,e.byteOffset,e.length)}var Vx,Hx,Ux,Wx,Gx=n((()=>{jg(),zx(),Vx=-2003829722,Hx=-2021002517,Ux=new TextDecoder(`utf8`),Wx=class{bbi;headerP;renameRefSeqs;getHeader(e){return this.headerP||=this._getHeader(e).catch(e=>{throw this.headerP=void 0,e}),this.headerP}constructor(e){let{filehandle:t,renameRefSeqs:n=e=>e,path:r,url:i}=e;if(this.renameRefSeqs=n,t)this.bbi=t;else if(i)this.bbi=new Dg(i);else if(r)this.bbi=new Ag(r);else throw Error(`no file given`)}async _getHeader(e){let t=await this._getMainHeader(e),n=await this._readChromosomeTree(t,e);return{...t,...n}}async _getMainHeader(e,t=2e3){let n=await this.bbi.read(t,0,e),r=Bx(n),i=0,a=r.getInt32(i,!0);if(i+=4,a!==Vx&&a!==Hx)throw Error(`not a BigWig/BigBed file`);let o=r.getUint16(i,!0);i+=2;let s=r.getUint16(i,!0);i+=2;let c=Number(r.getBigUint64(i,!0));i+=8;let l=Number(r.getBigUint64(i,!0));i+=8;let u=Number(r.getBigUint64(i,!0));i+=8;let d=r.getUint16(i,!0);i+=2;let f=r.getUint16(i,!0);i+=2;let p=Number(r.getBigUint64(i,!0));i+=8;let m=Number(r.getBigUint64(i,!0));i+=8;let h=r.getUint32(i,!0);i+=4;let g=Number(r.getBigUint64(i,!0));i+=8;let _=[];for(let e=0;e<s;e++){let e=r.getUint32(i,!0);i+=4;let t=r.getUint32(i,!0);i+=4;let n=Number(r.getBigUint64(i,!0));i+=8;let a=Number(r.getBigUint64(i,!0));i+=8,_.push({reductionLevel:e,reserved:t,dataOffset:n,indexOffset:a})}let v=a===Hx?`bigbed`:`bigwig`;if(p>t||m>t-40)return this._getMainHeader(e,t*2);let y;if(m){let e=n.subarray(m),t=0,r=Bx(e),i=Number(r.getBigUint64(t,!0));t+=8;let a=r.getFloat64(t,!0);t+=8;let o=r.getFloat64(t,!0);t+=8;let s=r.getFloat64(t,!0);t+=8,y={scoreMin:a,scoreMax:o,scoreSum:s,scoreSumSquares:r.getFloat64(t,!0),basesCovered:i}}else throw Error(`no stats`);return{zoomLevels:_,magic:a,extHeaderOffset:g,numZoomLevels:s,fieldCount:d,totalSummary:y,definedFieldCount:f,uncompressBufSize:h,asOffset:p,chromosomeTreeOffset:c,totalSummaryOffset:m,unzoomedDataOffset:l,unzoomedIndexOffset:u,fileType:v,version:o,autoSql:p?Ux.decode(n.subarray(p,n.indexOf(0,p))):``}}async _readChromosomeTree(e,t){let n=[],r={},i=e.chromosomeTreeOffset,a=Bx(await this.bbi.read(32,i,t)),o=a.getUint32(8,!0),s=a.getUint32(12,!0),c=async e=>{let t=Bx(await this.bbi.read(4,e)),i=t.getUint8(0),a=t.getUint16(2,!0);if(i){let t=await this.bbi.read(a*(o+s),e+4),i=Bx(t),c=0;for(let e=0;e<a;e++){let e=t.indexOf(0,c),a=e!==-1&&e<c+o?e:c+o,s=Ux.decode(t.subarray(c,a));c+=o;let l=i.getUint32(c,!0);c+=4;let u=i.getUint32(c,!0);c+=4,r[this.renameRefSeqs(s)]=l,n[l]={name:s,id:l,length:u}}}else{let t=Bx(await this.bbi.read(a*(o+8),e+4)),n=[],r=0;for(let e=0;e<a;e++){r+=o;let e=Number(t.getBigUint64(r,!0));r+=8,n.push(c(e))}await Promise.all(n)}};return await c(i+32),{refsByName:r,refsByNumber:n}}viewCache=new Map;getOrCreateBlockView(e,t,n,r){let i=`${t}_${r}`,a=this.viewCache.get(i);return a||(a=new Rx(this.bbi,e,t,n,r),this.viewCache.set(i,a)),a}async getUnzoomedView(e){let{unzoomedIndexOffset:t,refsByName:n,uncompressBufSize:r,fileType:i}=await this.getHeader(e);return this.getOrCreateBlockView(n,t,r,i)}async _getView(e){let{basesPerSpan:t,scale:n}=e||{},r=t?1/t:n??1;return this.getView(r,e)}async getFeatures(e,t,n,r){return(await this._getView(r)).readWigData(this.renameRefSeqs(e),t,n,r)}async getFeaturesAsArrays(e,t,n,r){return(await this._getView(r)).readWigDataAsArrays(this.renameRefSeqs(e),t,n,r)}}})),Kx,qx=n((()=>{Gx(),Kx=class extends Wx{async getView(e,t){let{zoomLevels:n,refsByName:r,uncompressBufSize:i}=await this.getHeader(t),a=1/e,o=n.length-1;for(let e=o;e>=0;--e){let t=n[e];if(t&&t.reductionLevel<=2*a)return this.getOrCreateBlockView(r,t.indexOffset,i,`summary`)}return this.getUnzoomedView(t)}}}));function Jx(e,t){if(t<0)return;let n=0;for(let r=0;r<t;r++){if(n=e.indexOf(` `,n),n===-1)return;n++}let r=e.indexOf(` `,n);return r===-1?e.slice(n):e.slice(n,r)}function Yx(e,t,n){let r=e.indexOf(0,t),i=r!==-1&&r<t+n?r:t+n;return Zx.decode(e.subarray(t,i))}async function Xx(e,t,n,r,i,a,o,s){let c=4+n*(r+i),l=await e.read(c,t,s),u=new DataView(l.buffer,l.byteOffset,l.length),d=u.getInt8(0),f=u.getInt16(2,!0),p=4;if(d===0){let t=[];for(let e=0;e<f;e++){let e=Yx(l,p,r);p+=r;let n=Number(u.getBigUint64(p,!0));p+=8,t.push({key:e,offset:n})}let c=0,d=t.length-1,m=t.length-1;for(;c<=d;){let e=Math.floor((c+d)/2);a.localeCompare(t[e].key)<0?(m=e-1,d=e-1):c=e+1}return Xx(e,m>=0?t[m].offset:t[0].offset,n,r,i,a,o,s)}else if(d===1){let e=[];for(let t=0;t<f;t++){let t=Yx(l,p,r);p+=r;let n=Number(u.getBigUint64(p,!0));p+=8;let i=u.getUint32(p,!0);p+=4,p+=4,e.push({key:t,offset:n,length:i})}let t=0,n=e.length-1;for(;t<=n;){let r=Math.floor((t+n)/2),i=a.localeCompare(e[r].key);if(i===0)return{...e[r],field:o};i<0?n=r-1:t=r+1}return}}var Zx,Qx,$x=n((()=>{yb(),Fb(),Gx(),Zx=new TextDecoder(`utf8`),Qx=class extends Wx{readIndicesCache=new _b({cache:new Pb({maxSize:1}),fill:(e,t)=>this._readIndices({...e,signal:t})});readIndices(e={}){let{signal:t,...n}=e;return this.readIndicesCache.get(JSON.stringify(n),e,t)}async getView(e,t){return this.getUnzoomedView(t)}async _readIndices(e){let{extHeaderOffset:t}=await this.getHeader(e),n=await this.bbi.read(64,t),r=new DataView(n.buffer,n.byteOffset,n.length),i=r.getUint16(2,!0),a=Number(r.getBigUint64(4,!0));if(i===0)return[];let o=20*i,s=await this.bbi.read(o,a),c=[];for(let e=0;e<i;e+=1){let t=s.subarray(e*20),n=new DataView(t.buffer,t.byteOffset,t.length),r=n.getInt16(0,!0),i=n.getInt16(2,!0),a=Number(n.getBigUint64(4,!0)),o=n.getInt16(16,!0);c.push({type:r,fieldcount:i,offset:a,field:o})}return c}async searchExtraIndexBlocks(e,t={}){let n=await this.readIndices(t);if(n.length===0)return[];let r=n.map(async n=>{let{offset:r,field:i}=n,a=await this.bbi.read(32,r,t),o=new DataView(a.buffer,a.byteOffset,a.length),s=o.getInt32(4,!0),c=o.getInt32(8,!0),l=o.getInt32(12,!0);return Xx(this.bbi,r+32,s,c,l,e,i,t)});return(await Promise.all(r)).filter(e=>e!==void 0)}async searchExtraIndex(e,t={}){let n=await this.searchExtraIndexBlocks(e,t);if(n.length===0)return[];let r=await this.getUnzoomedView(t);return(await Promise.all(n.map(async e=>(await r.readFeatures([e],t)).map(t=>({...t,field:e.field}))))).flat().filter(t=>{if(!t.rest)return!1;let n=(t.field||0)-3;return Jx(t.rest,n)===e})}}}));async function eS(e,t){let n=await e.getHeader(t),r=[];for(let i of Object.values(n.refsByNumber)){let n=await e.getFeaturesAsArrays(i.name,0,i.length,t);!n.isSummary&&n.starts.length>0&&r.push(n)}return r}var tS=n((()=>{})),nS,rS=n((()=>{nS=class{starts;ends;scores;minScores;maxScores;isSummary;_source;_refName;constructor(e,t,n){this.starts=e.starts,this.ends=e.ends,this.scores=e.scores,this.isSummary=e.isSummary,this.minScores=e.isSummary?e.minScores:void 0,this.maxScores=e.isSummary?e.maxScores:void 0,this._source=t,this._refName=n}get length(){return this.starts.length}get source(){return this._source}get refName(){return this._refName}start(e){return this.starts[e]}end(e){return this.ends[e]}score(e){return this.scores[e]}minScore(e){return this.minScores?.[e]}maxScore(e){return this.maxScores?.[e]}id(e){return`${this._source}:${this._refName}:${this.starts[e]}-${this.ends[e]}`}get(e,t){switch(t){case`start`:return this.starts[e];case`end`:return this.ends[e];case`score`:return this.scores[e];case`refName`:return this._refName;case`source`:return this._source;case`minScore`:return this.minScores?.[e];case`maxScore`:return this.maxScores?.[e];case`summary`:return this.isSummary;default:return}}}})),iS=r({ArrayFeatureView:()=>nS,BigBed:()=>Qx,BigWig:()=>Kx,parseBigWig:()=>eS}),aS=n((()=>{db(),qx(),$x(),tS(),rS()})),oS=class extends Sg{#e=[];#t;constructor(e,t){let n={pixelsPerBin:2,channel:`x`,debounce:200,debounceMode:`window`,...e},r=mg(n.channel);if(super(t,r),this.params=yg(t.paramRuntime,n,e=>{e.has(`url`)?this.#n().then(()=>this.reloadLastDomain()):e.has(`pixelsPerBin`)&&this.reloadLastDomain()},e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!this.params.url)throw Error(`No URL provided for BigWigSource`);this.setupDebouncing(this.params),this.#n()}get label(){return`bigWigSource`}#n(){return this.initializedPromise=new Promise((e,t)=>{Promise.all([Promise.resolve().then(()=>(aS(),iS)),Promise.resolve().then(()=>(jg(),kg))]).then(([{BigWig:n},{RemoteFile:r}])=>{this.#t=new n({filehandle:new r(ah(mg(this.params.url),this.view.getBaseUrl()))}),this.setLoadingStatus(`loading`),this.#t.getHeader().then(t=>{this.#e=t.zoomLevels.map(e=>e.reductionLevel).reverse(),this.#e.push(1),this.setLoadingStatus(`complete`),e()}).catch(e=>{this.load(),this.setLoadingStatus(`error`,`${mg(this.params.url)}: ${e.message}`),t(e)})})}),this.initializedPromise}async onDomainChanged(e){await this.initializedPromise;let t=this.scaleResolution.getAxisLength()||700,n=cS(e,t,this.#e),r=Math.max(n*t,5e3);this.callIfWindowsChanged(e,r,e=>this.loadInterval(e,n))}async loadInterval(e,t){let n=1/2/t/mg(this.params.pixelsPerBin),r=await this.discretizeAndLoad(e,(e,t)=>this.#t.getFeatures(e.chrom,e.startPos,e.endPos,{scale:n,signal:t}).then(t=>t.map(t=>({chrom:e.chrom,start:t.start,end:t.end,score:t.score}))));r&&this.publishData(r)}};function sS(e){return e?.type==`bigwig`}Km(sS,oS);function cS(e,t,n){let r=(e[1]-e[0])/t;return n.find(e=>e<r)??n.at(-1)}var lS=class extends Sg{parser;bbi;parseLine;constructor(e,t){let n={channel:`x`,windowSize:1e6,debounce:200,debounceMode:`window`,...e},r=mg(n.channel);if(super(t,r),this.params=yg(t.paramRuntime,n,e=>{e.has(`url`)?this.#e().then(()=>this.reloadLastDomain()):e.has(`windowSize`)&&this.reloadLastDomain()},e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!this.params.url)throw Error(`No URL provided for BigBedSource`);this.setupDebouncing(this.params),this.#e()}get label(){return`bigBedSource`}#e(){return this.initializedPromise=new Promise((e,t)=>{Promise.all([Promise.resolve().then(()=>(Ml(),jl)),Promise.resolve().then(()=>(aS(),iS)),Promise.resolve().then(()=>(jg(),kg))]).then(([n,{BigBed:r},{RemoteFile:i}])=>{let a=n.default;this.bbi=new r({filehandle:new i(ah(mg(this.params.url),this.view.getBaseUrl()))}),this.setLoadingStatus(`loading`),this.bbi.getHeader().then(async t=>{this.parser=new a({autoSql:t.autoSql});try{let e=uS(this.parser);this.parseLine=(t,n)=>e(t,n.start,n.end,n.rest)}catch{this.parseLine=(e,t)=>this.parser.parseLine(`${e}\t${t.start}\t${t.end}\t${t.rest}`)}this.setLoadingStatus(`complete`),e()}).catch(e=>{this.load(),this.setLoadingStatus(`error`,`${mg(this.params.url)}: ${e.message}`),t(e)})})}),this.initializedPromise}async loadInterval(e){let t=await this.discretizeAndLoad(e,async(e,t)=>this.bbi.getFeatures(e.chrom,e.startPos,e.endPos,{signal:t}).then(t=>t.map(t=>this.parseLine(e.chrom,t))));t&&this.publishData(t)}};function uS(e){let t=e.autoSql.fields.filter(e=>e.type).slice(3),n=0,r=``,i=0,a={};function o(){let e=r.indexOf(` `,n);e<0&&(e=i);let t=r.substring(n,e);return n=e+1,t}function s(){let e=0,t=r.charCodeAt(n),a=1;t===45&&(a=-1,n++,t=r.charCodeAt(n));do{if(t===9){n++;break}e=e*10+t-48,t=r.charCodeAt(++n)}while(n<i);return e*a}let c=t.map(e=>`${JSON.stringify(e.name)}: ${e.isNumeric?`0`:`emptyString`}`),l=Function(`
192
+ }`)(function(t){e in t||uh(t,e)}),[e],t):Je(e)}function uh(e,t){throw Error(`Invalid field "${t}". Available fields or properties: ${Object.keys(e).join(`, `)}`)}function dh(e,t,n){if(!e)throw Error(`Cannot create an accessor without a channel.`);function r(n){let r=n;return r.fields??=[],r.constant=r.fields.length===0,r.channelDef=t,r.channel=e,r.sourceKey=mh(t),r.scaleChannel=((Ah(t)&&t.resolutionChannel)??(Yh(e)&&e))||void 0,r.scaleChannel!==void 0&&(r.domainKeyBase=hh({scaleChannel:r.scaleChannel,source:ph(t)}).domainKeyBase),r.equals=e=>e?r===e||r.sourceKey!==void 0&&r.sourceKey===e.sourceKey:!1,r.asNumberAccessor=()=>r,r}function i(e){if(B(e)){let t=r(n.createExpression(e.expr));if(t.fields.length>0)throw Error(`Expression in DatumDef/ValueDef cannot access data fields: `+e.expr);return t}else{let t=e;return r(()=>t)}}if(Oh(t))try{return r(z(t.field))}catch(e){throw Error(`Invalid field definition: ${e.message}`,{cause:e})}else if(Ph(t))return r(n.createExpression(t.expr));else if(kh(t))return i(t.datum);else if(Dh(t))return i(t.value);else throw Error(`Invalid channel definition: "${e}": ${JSON.stringify(t)}! The channel definition must contain one of the following properties: "field", "datum", "value" or "expr".`)}function fh(e){return e.scaleChannel!==void 0}function ph(e){if(Oh(e))return{kind:`field`,value:e.field};if(Ph(e))return{kind:`expr`,value:e.expr};if(kh(e))return{kind:`datum`,value:e.datum};if(Dh(e))return{kind:`value`,value:e.value};throw Error(`Cannot derive a domain key from channel definition: `+JSON.stringify(e))}function mh(e){let t=ph(e);return t.kind===`datum`||t.kind===`value`?`constant|`+vh(t.value):t.kind+`|`+_h(t)}function hh({scaleChannel:e,source:t,type:n}){if(!e)throw Error(`Cannot build a domain key without a scale channel.`);let r=e+`|`+t.kind+`|`+_h(t);return{domainKeyBase:r,domainKey:n?n+`|`+r:void 0}}function gh(e,t){let{domainKey:n,domainKeyBase:r}=hh({scaleChannel:e.scaleChannel,source:ph(e.channelDef),type:t});if(!n)throw Error(`Cannot finalize a domain key without a resolved type.`);return e.domainKeyBase=r,e.domainKey=n,n}function _h(e){switch(e.kind){case`field`:case`expr`:return e.value;case`datum`:case`value`:return vh(e.value);default:throw Error(`Unknown domain key source.`)}}function vh(e){return B(e)?`expr:`+e.expr:e===void 0?`undefined`:JSON.stringify(e)}function yh(e,t,n,r){let i,a=vg(!1),o=()=>{if(i)return i;let o=n.findValue(e);if(!o)return a;let s={};if(rg(o)){let n=Object.keys(o.intervals);for(let r of n){let n=t[r];if(Oh(n)){s[r]=n.field;continue}else if(n&&`condition`in n){let e=n.condition;if(Oh(e)){s[r]=e.field;continue}}throw Error(`Selection "${e}" has an interval for "${r}" channel, but could not find a fieldDef: ${JSON.stringify(t[r])}`)}}let c=ng({type:`filter`,param:e,fields:s,empty:r},o);return i=n.createExpression(c),i};return Object.assign(e=>o()(e),{param:e,empty:r??!0})}function bh(e,t,n,r){let i=Fh(t)||Ih(t)?Array.isArray(t.condition)?t.condition:[t.condition]:[],a=[...i,t],o=a.map((t,o)=>{let s=i[o];return{accessor:dh(e,t,r),predicate:s?.param?yh(s.param,n,r,s.empty):Object.assign(vg(o===a.length-1),{empty:!1})}});if(o.filter(e=>!e.accessor.constant).length>1)throw Error(`Only one accessor can be non-constant. Channel: `+e);return o}function xh(e,t){let n={},r=t=>e.getScaleResolution(t)?.getScale();for(let[i,a]of Object.entries(t)){if(!a)continue;let o=i;Sh(o)||(n[o]=Th(bh(o,a,t,e.paramRuntime),r))}return n}function Sh(e){return e===`key`||e===`search`}function Ch(e){return e.branches.map(e=>e.accessor)}function wh(e){return e.branches.find(e=>!e.accessor.constant)?.accessor}function Th(e,t){if(e.length===1){let n=Eh(e[0].accessor,t);return Object.assign(n,{branches:e})}let n=e.map(e=>e.predicate),r=e.map(e=>Eh(e.accessor,t));return Object.assign(e=>{for(let t=0;t<r.length;t++)if(n[t](e))return r[t](e)},{constant:!1,branches:e,scale:r.map(e=>e.scale).find(e=>e),channelDef:e.at(-1).accessor.channelDef})}function Eh(e,t){let{channel:n,scaleChannel:r,channelDef:i}=e,a=e.scaleChannel?t(r):void 0;if(r&&!a)throw Error(`Missing scale! "${n}": ${JSON.stringify(i)}`);return Object.assign(a?t=>a(e(t)):t=>e(t),{scale:a,constant:e.constant,branches:[{accessor:e,predicate:vg(!0)}],channelDef:i})}function Dh(e){return e&&`value`in e}function Oh(e){return e&&`field`in e}function kh(e){return e&&`datum`in e}function Ah(e){return Oh(e)||kh(e)||Ph(e)||Nh(e)}function jh(e){if(Ih(e)){let t=e.condition;if(!Array.isArray(t)&&Ah(t))return t}else if(Ah(e))return e}function Mh(e,t){let n=e.mark.encoding[t];if(Array.isArray(n))throw Error(`Not a channel def with scale!`);{let e=jh(n);if(e)return e}throw Error(`Not a channel def with scale!`)}function Nh(e){return e&&`chrom`in e}function Ph(e){return e&&`expr`in e}function Fh(e){return(Oh(e)||kh(e))&&`condition`in e}function Ih(e){return Dh(e)&&`condition`in e}var Lh=[`x`,`y`],Rh=[`x2`,`y2`],zh=[...Lh,...Rh];function Bh(e){return Lh.includes(e)}function Vh(e){return zh.includes(e)}var Hh={x:`x2`,y:`y2`},Uh=Object.fromEntries(Object.entries(Hh).map(e=>[e[1],e[0]]));function Wh(e){return e in Uh}function Gh(e){let t=Hh[e];if(t)return t;throw Error(`${e} has no secondary channel!`)}function Kh(e){return Uh[e]??e}function qh(e){return[`color`,`fill`,`stroke`].includes(Kh(e))}function Jh(e){return[`shape`].includes(e)}function Yh(e){return[`x`,`y`,`x2`,`y2`,`color`,`fill`,`stroke`,`opacity`,`fillOpacity`,`strokeOpacity`,`strokeWidth`,`size`,`shape`,`angle`,`dx`,`dy`,`sample`].includes(e)}function Xh(e){switch(e){case`shape`:return[`circle`,`square`,`cross`,`diamond`,`triangle-up`,`triangle-right`,`triangle-down`,`triangle-left`,`tick-up`,`tick-right`,`tick-down`,`tick-left`];default:}}function Zh(e){if(!Jh(e))throw Error(`Not a discrete channel: `+e);let t=new Map(Xh(e).map((e,t)=>[e,t]));return n=>{let r=t.get(n);if(r!==void 0)return r;throw Error(`Invalid value for "${e}" channel: ${n}`)}}function Qh(e){return{type:`single`,datum:e,uniqueId:e?.[oh]}}function $h(e){return e??=[],{type:`multi`,data:new Map(e.map(e=>[e[oh],e]))}}function eg(e){return{type:`interval`,intervals:Object.fromEntries(e.map(e=>[e,null]))}}function tg(e,{add:t,remove:n,toggle:r}){let i=e.data;for(let e of t??[])i.set(e[oh],e);for(let e of n??[])i.delete(e[oh]);for(let e of r??[]){let t=e[oh];i.has(t)?i.delete(t):i.set(t,e)}return{type:`multi`,data:i}}function ng(e,t){let n=!!(e.empty??!0),r=hg(e.param),i=e.fields??{};if(ig(t))return`${r}.uniqueId == null ? ${n} : ${r}.uniqueId === datum[${JSON.stringify(oh)}]`;if(ag(t))return`${r}.data.size == 0 ? ${n} : mapHasKey(${r}.data, datum[${JSON.stringify(oh)}])`;if(rg(t)){let a=Object.keys(t.intervals),o=Object.keys(i).filter(Bh);if(o.length===0)throw Error(`Filtering using interval selections requires at least one primary positional channel in the config! `+JSON.stringify(e));if(o.some(e=>!a.includes(e)))throw Error(`Selection channels (${a.join(`, `)}) do not match the fields: ${JSON.stringify(e)}!`);let s=e=>`datum[${JSON.stringify(e)}]`;return a.map(e=>{let t=Gh(e),a=i[e];return`(${r}.intervals.${e} ? (${`${r}.intervals.${e}[0] <= ${s(i[t]??i[e])}`} && ${`${s(a)} <= ${r}.intervals.${e}[1]`}) : ${n})`}).join(` && `)}else throw Error(`Unrecognized selection type : ${JSON.stringify(t)}`)}function rg(e){return e.type===`interval`}function ig(e){return e.type===`single`}function ag(e){return e.type===`multi`}function og(e){let t=typeof e==`string`?{type:e}:{...e};return t.on=t.on?dg(t.on):sg(t)?{type:`click`}:void 0,t.clear=t.clear===!1?void 0:t.clear===!0||t.clear==null?{type:`dblclick`}:dg(t.clear),sg(t)&&t.on.type===`click`&&(t.toggle=!0),t}function sg(e){return e&&e.type==`point`}function cg(e){return e&&e.type==`interval`}function lg(e){return Object.values(e.intervals).some(e=>e&&e.length===2)}function ug(e,t){return Object.entries(e.intervals).every(([e,n])=>(e==`x`||e==`y`)&&n&&n[0]<=t[e]&&n[1]>=t[e])}function dg(e){if(typeof e==`string`){let t=e.match(/^([a-zA-Z]+)(?:\[(.+)\])?$/);if(!t)throw Error(`Invalid event type string: ${e}`);let[,n,r]=t,i={type:n};return r&&(i.filter=r),i}else return e}function B(e){return typeof e==`object`&&!!e&&`expr`in e&&F(e.expr)}function fg(e){if(B(e))throw Error(`ExprRef `+JSON.stringify(e)+` not allowed here. Expected a scalar value.`);return e}function pg(e){return(`expr`in e||`bind`in e)&&!(`select`in e)}function mg(e){return!(`expr`in e||`bind`in e)&&`select`in e}function hg(e){if(!/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(e))throw Error(`Invalid parameter name: `+e+`. Must be a valid JavaScript identifier.`);return e}function gg(e,t,n){if(`select`in e){let t=og(e.select);if(sg(t))return t.toggle?$h():Qh(null);if(cg(t)){if(!t.encodings)throw Error(`Interval selection "`+e.name+`" must have encodings defined!`);return eg(t.encodings)}throw Error(`Unknown selection config for parameter "`+e.name+`".`)}if(`expr`in e){let r=n??t?.createExpression(e.expr);if(!r)throw Error(`Cannot evaluate expression for parameter "`+e.name+`".`);return r(null)}return`value`in e?e.value:null}function _g(e,t,n,r,i={}){let a={...t},o=new Set,s=!1,c=!1,l=i.batchMode??`microtask`;r?.(()=>{c=!0,o.clear(),s=!1});let u=()=>{if(c)return;if(!n||o.size===0){s=!1;return}let e=new Set(o);o.clear(),s=!1,n(e)},d=t=>{c||(o.add(t),s||(s=!0,queueMicrotask(()=>{c||(l==`whenPropagated`&&e.whenPropagated?e.whenPropagated().then(u).catch(()=>{u()}):u())})))};for(let[i,o]of Object.entries(t))if(B(o))if(n){let t=()=>d(i),n=e.watchExpression?e.watchExpression(o.expr,t,{scopeOwned:!r,registerDisposer:r}):e.createExpression(o.expr);if(!e.watchExpression){let e=n.subscribe(t);r?.(e)}Object.defineProperty(a,i,{enumerable:!0,get(){return n()}})}else{let t=e.createExpression(o.expr);Object.defineProperty(a,i,{enumerable:!0,get(){return t()}})}else a[i]=o;return a}function vg(e){return Object.assign(()=>e,{subscribe:()=>()=>void 0,invalidate:()=>void 0,identifier:()=>`constant`,fields:[],globals:[],code:JSON.stringify(e)})}function yg(e,t,n=!0){let r,i=e=>void 0;return function(...a){return new Promise((o,s)=>{n&&i(`debounced`),clearTimeout(r),i=s,r=window.setTimeout(()=>{clearTimeout(r),i=e=>void 0,o(e(...a))},typeof t==`function`?t():t)})}}var bg=class extends Zm{#e=new AbortController;#t=[0,0];#n=[0,0];#r=0;params;setupDebouncing(e){let t=()=>fg(e.debounce),n=e.debounceMode;if(n==`domain`)this.onDomainChanged=yg(this.onDomainChanged.bind(this),t,!1);else if(n==`window`)this.loadInterval=yg(this.loadInterval.bind(this),t,!1);else throw Error(`Invalid debounceMode: `+n)}onDomainChanged(e){this.#n=e;let t=fg(this.params?.windowSize)??-1;e[1]-e[0]>t||this.callIfWindowsChanged(e,t,async e=>{await this.initializedPromise,this.loadInterval(e)})}reloadLastDomain(){let e=this.#n;this.#n=[0,0],this.#t=[0,0],this._lastLoadedDomain=void 0,this.onDomainChanged(e)}async loadInterval(e){}publishData(e){let t=this._lastLoadedDomain;super.publishData(e),t&&(this._lastLoadedDomain=t)}async discretizeAndLoad(e,t){this.#e.abort(),this.setLoadingStatus(`loading`),this.#e=new AbortController;let n=this.#e.signal,r=this.genome.continuousToDiscreteChromosomeIntervals(e);try{let i=await Promise.all(r.map(async e=>t(e,n)));if(!n.aborted)return this.setLoadingStatus(`complete`),this._lastLoadedDomain=Array.from(e),i}catch(e){if(!n.aborted)throw this.setLoadingStatus(`error`,e.message),e}}callIfWindowsChanged(e,t,n){let r=[Math.max(Math.floor(e[0]/t)*t,0),Math.min(Math.ceil(e[1]/t)*t,this.genome.totalSize)],i=this.#t;(t!==this.#r||r[0]<i[0]||r[1]>i[1])&&(this.#t=r,this.#r=t,n(r))}},xg=n((()=>{})),Sg,Cg=n((()=>{Sg=class{constructor(e){this.blob=e}async read(e,t=0){if(!e)return new Uint8Array;let n=t,r=n+e,i=this.blob.slice(n,r);return i.bytes?i.bytes():new Uint8Array(await i.arrayBuffer())}async readFile(e){let t=typeof e==`string`?e:e?.encoding;if(t===`utf8`)return this.blob.text();if(t)throw Error(`unsupported encoding: ${t}`);return this.blob.bytes?this.blob.bytes():new Uint8Array(await this.blob.arrayBuffer())}async stat(){return{size:this.blob.size}}async close(){}}}));function wg(e){return(typeof e==`object`&&e&&`message`in e?e.message:`${e}`).replace(/\.$/,``)}var Tg,Eg=n((()=>{Tg=class{constructor(e,t={}){this.baseOverrides={},this.url=e;let n=t.fetch||globalThis.fetch.bind(globalThis);t.overrides&&(this.baseOverrides=t.overrides),this.fetchImplementation=n}async fetch(e,t){let n=t=>Error(`${wg(t)} fetching ${e}`,{cause:t}),r;try{r=await this.fetchImplementation(e,t)}catch(i){if(`${i}`.includes(`Failed to fetch`)){console.warn(`generic-filehandle: refetching ${e} to attempt to work around chrome CORS header caching bug`);try{r=await this.fetchImplementation(e,{...t,cache:`reload`})}catch(e){throw n(e)}}else throw n(i)}return r}async read(e,t,n={}){if(e===0)return new Uint8Array;let{headers:r={},signal:i,overrides:a={}}=n;e<1/0?r.range=`bytes=${t}-${t+e-1}`:e===1/0&&t!==0&&(r.range=`bytes=${t}-`);let o=await this.fetch(this.url,{...this.baseOverrides,...a,headers:{...this.baseOverrides.headers,...a.headers,...r},method:`GET`,redirect:`follow`,mode:`cors`,signal:i});if(!o.ok)throw Error(`HTTP ${o.status} fetching ${this.url}`);if(o.status===200&&t===0||o.status===206){let t=o.headers.get(`content-range`),n=/\/(\d+)$/.exec(t||``);n?.[1]&&(this._stat={size:parseInt(n[1],10)});let r=o.bytes?await o.bytes():new Uint8Array(await o.arrayBuffer());return r.byteLength<=e?r:r.subarray(0,e)}throw Error(o.status===200?`${this.url} fetch returned status 200, expected 206`:`HTTP ${o.status} fetching ${this.url}`)}async readFile(e={}){let t,n;if(typeof e==`string`)t=e,n={};else{t=e.encoding;let{encoding:r,...i}=e;n=i}let{headers:r={},signal:i,overrides:a={}}=n,o=await this.fetch(this.url,{...this.baseOverrides,...a,headers:{...this.baseOverrides.headers,...a.headers,...r},method:`GET`,redirect:`follow`,mode:`cors`,signal:i});if(!o.ok)throw Error(`HTTP ${o.status} fetching ${this.url}`);if(t===`utf8`)return o.text();if(t)throw Error(`unsupported encoding: ${t}`);return o.bytes?o.bytes():new Uint8Array(await o.arrayBuffer())}async stat(){if(!this._stat&&(await this.read(10,0),!this._stat))throw Error(`unable to determine size of file at ${this.url}`);return this._stat}async close(){}}})),Dg=r({BlobFile:()=>Sg,LocalFile:()=>Og,RemoteFile:()=>Tg}),Og,kg=n((()=>{xg(),Cg(),Eg(),Og=class{readFile(){throw Error(`unimplemented`)}read(){throw Error(`unimplemented`)}close(){throw Error(`unimplemented`)}}}));function Ag(e,t=0){let n=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24;return((e[t+4]|e[t+5]<<8|e[t+6]<<16|e[t+7]<<24)>>>0)*Mg+(n>>>0)}var jg,Mg,Ng=n((()=>{jg=65536,Mg=jg*jg}));function Pg(e,t,n){let r=t[Fg],i=n?n[Fg]:1/0;return r<=e&&i>e?0:r<e?-1:1}var Fg,Ig,Lg=n((()=>{Ng(),Fg=1,Ig=class{filehandle;index;constructor({filehandle:e}){this.filehandle=e}_getIndex(){return this.index||=this._readIndex().catch(e=>{throw this.index=void 0,e}),this.index}async _readIndex(){let e=Ag(await this.filehandle.read(8,0));if(!e)return[[0,0]];let t=Array(e+1);t[0]=[0,0];let n=16*e;if(n>2**53-1)throw TypeError(`integer overflow`);let r=await this.filehandle.read(n,8);for(let n=0;n<e;n+=1){let e=Ag(r,n*16),i=Ag(r,n*16+8);t[n+1]=[e,i]}return t}async getLastBlock(){return(await this._getIndex()).at(-1)}async getRelevantBlocksForRead(e,t){let n=t+e;if(e===0)return[];let r=await this._getIndex(),i=[],a=0,o=r.length-1,s=Math.floor(r.length/2),c=Pg(t,r[s],r[s+1]);for(;c!==0;)c>0?o=s-1:c<0&&(a=s+1),s=Math.ceil((o-a)/2)+a,c=Pg(t,r[s],r[s+1]);i.push(r[s]);let l=s+1;for(;l<r.length&&(i.push(r[l]),!(r[l][Fg]>=n));l+=1);return i[i.length-1][Fg]<n&&i.push([]),i}}})),Rg=n((()=>{}));function zg(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Bg(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var n=t.shift();if(n){if(typeof n!=`object`)throw TypeError(n+`must be non-object`);for(var r in n)zg(n,r)&&(e[r]=n[r])}}return e}function Vg(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)}var Hg,Ug,Wg,Gg,Kg,qg,Jg,Yg,Xg=n((()=>{Hg={arraySet:function(e,t,n,r,i){if(t.subarray&&e.subarray){e.set(t.subarray(n,n+r),i);return}for(var a=0;a<r;a++)e[i+a]=t[n+a]},flattenChunks:function(e){var t,n,r=0,i,a,o;for(t=0,n=e.length;t<n;t++)r+=e[t].length;for(o=new Uint8Array(r),i=0,t=0,n=e.length;t<n;t++)a=e[t],o.set(a,i),i+=a.length;return o},Buf8:function(e){return new Uint8Array(e)},Buf16:function(e){return new Uint16Array(e)},Buf32:function(e){return new Int32Array(e)}},Ug={arraySet:function(e,t,n,r,i){for(var a=0;a<r;a++)e[i+a]=t[n+a]},flattenChunks:function(e){return[].concat.apply([],e)},Buf8:function(e){return Array(e)},Buf16:function(e){return Array(e)},Buf32:function(e){return Array(e)}},Wg=()=>{let e=typeof Uint8Array<`u`&&typeof Uint16Array<`u`&&typeof Int32Array<`u`;return Wg=()=>e,e},Gg=(e,t,n,r,i)=>(Gg=Wg()?Hg.arraySet:Ug.arraySet,Gg(e,t,n,r,i)),Kg=e=>(Kg=Wg()?Hg.flattenChunks:Ug.flattenChunks,Kg(e)),qg=e=>(qg=Wg()?Hg.Buf8:Ug.Buf8,qg(e)),Jg=e=>(Jg=Wg()?Hg.Buf16:Ug.Buf16,Jg(e)),Yg=e=>(Yg=Wg()?Hg.Buf32:Ug.Buf32,Yg(e))}));function Zg(e){var t,n,r,i,a,o=e.length,s=0;for(i=0;i<o;i++)n=e.charCodeAt(i),(n&64512)==55296&&i+1<o&&(r=e.charCodeAt(i+1),(r&64512)==56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),s+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(s),a=0,i=0;a<s;i++)n=e.charCodeAt(i),(n&64512)==55296&&i+1<o&&(r=e.charCodeAt(i+1),(r&64512)==56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t}function Qg(e,t){if(t<65534&&(e.subarray&&r_()||!e.subarray&&n_()))return String.fromCharCode.apply(null,Vg(e,t));for(var n=``,r=0;r<t;r++)n+=String.fromCharCode(e[r]);return n}function $g(e){for(var t=new Uint8Array(e.length),n=0,r=t.length;n<r;n++)t[n]=e.charCodeAt(n);return t}function e_(e,t){var n,r,i,a,o=t||e.length,s=Array(o*2);for(r=0,n=0;n<o;){if(i=e[n++],i<128){s[r++]=i;continue}if(a=i_(i),a>4){s[r++]=65533,n+=a-1;continue}for(i&=a===2?31:a===3?15:7;a>1&&n<o;)i=i<<6|e[n++]&63,a--;if(a>1){s[r++]=65533;continue}i<65536?s[r++]=i:(i-=65536,s[r++]=55296|i>>10&1023,s[r++]=56320|i&1023)}return Qg(s,r)}function t_(e,t){var n;for(t||=e.length,t>e.length&&(t=e.length),n=t-1;n>=0&&(e[n]&192)==128;)n--;return n<0||n===0?t:n+i_(e[n])>t?n:t}var n_,r_,i_,a_=n((()=>{Xg(),n_=function(){let e=!0;try{String.fromCharCode.apply(null,[0])}catch{e=!1}return n_=()=>e,e},r_=function(){let e=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{e=!1}return r_=()=>e,e},i_=function(e){for(var t=qg(256),n=0;n<256;n++)t[n]=n>=252?6:n>=248?5:n>=240?4:n>=224?3:n>=192?2:1;return t[254]=t[254]=1,i_=e=>t[e],t[e]}}));function o_(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=``,this.comment=``,this.hcrc=0,this.done=!1}var s_=n((()=>{}));function c_(e,t,n,r){for(var i=e&65535|0,a=e>>>16&65535|0,o=0;n!==0;){o=n>2e3?2e3:n,n-=o;do i=i+t[r++]|0,a=a+i|0;while(--o);i%=65521,a%=65521}return i|a<<16|0}var l_=n((()=>{}));function u_(){for(var e,t=[],n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t}function d_(e,t,n,r){var i=f_(),a=r+n;e^=-1;for(var o=r;o<a;o++)e=e>>>8^i[(e^t[o])&255];return e^-1}var f_,p_=n((()=>{f_=function(){let e=u_();return f_=()=>e,e}}));function m_(e,t){var n=e.state,r=e.next_in,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x,S,C,w,T=e.input,E;i=r+(e.avail_in-5),a=e.next_out,E=e.output,o=a-(t-e.avail_out),s=a+(e.avail_out-257),c=n.dmax,l=n.wsize,u=n.whave,d=n.wnext,f=n.window,p=n.hold,m=n.bits,h=n.lencode,g=n.distcode,_=(1<<n.lenbits)-1,v=(1<<n.distbits)-1;top:do{m<15&&(p+=T[r++]<<m,m+=8,p+=T[r++]<<m,m+=8),y=h[p&_];dolen:for(;;){if(b=y>>>24,p>>>=b,m-=b,b=y>>>16&255,b===0)E[a++]=y&65535;else if(b&16){x=y&65535,b&=15,b&&(m<b&&(p+=T[r++]<<m,m+=8),x+=p&(1<<b)-1,p>>>=b,m-=b),m<15&&(p+=T[r++]<<m,m+=8,p+=T[r++]<<m,m+=8),y=g[p&v];dodist:for(;;){if(b=y>>>24,p>>>=b,m-=b,b=y>>>16&255,b&16){if(S=y&65535,b&=15,m<b&&(p+=T[r++]<<m,m+=8,m<b&&(p+=T[r++]<<m,m+=8)),S+=p&(1<<b)-1,S>c){e.msg=`invalid distance too far back`,n.mode=h_;break top}if(p>>>=b,m-=b,b=a-o,S>b){if(b=S-b,b>u&&n.sane){e.msg=`invalid distance too far back`,n.mode=h_;break top}if(C=0,w=f,d===0){if(C+=l-b,b<x){x-=b;do E[a++]=f[C++];while(--b);C=a-S,w=E}}else if(d<b){if(C+=l+d-b,b-=d,b<x){x-=b;do E[a++]=f[C++];while(--b);if(C=0,d<x){b=d,x-=b;do E[a++]=f[C++];while(--b);C=a-S,w=E}}}else if(C+=d-b,b<x){x-=b;do E[a++]=f[C++];while(--b);C=a-S,w=E}for(;x>2;)E[a++]=w[C++],E[a++]=w[C++],E[a++]=w[C++],x-=3;x&&(E[a++]=w[C++],x>1&&(E[a++]=w[C++]))}else{C=a-S;do E[a++]=E[C++],E[a++]=E[C++],E[a++]=E[C++],x-=3;while(x>2);x&&(E[a++]=E[C++],x>1&&(E[a++]=E[C++]))}}else if(b&64){e.msg=`invalid distance code`,n.mode=h_;break top}else{y=g[(y&65535)+(p&(1<<b)-1)];continue dodist}break}}else if(!(b&64)){y=h[(y&65535)+(p&(1<<b)-1)];continue dolen}else if(b&32){n.mode=g_;break top}else{e.msg=`invalid literal/length code`,n.mode=h_;break top}break}}while(r<i&&a<s);x=m>>3,r-=x,m-=x<<3,p&=(1<<m)-1,e.next_in=r,e.next_out=a,e.avail_in=r<i?5+(i-r):5-(r-i),e.avail_out=a<s?257+(s-a):257-(a-s),n.hold=p,n.bits=m}var h_,g_,__=n((()=>{h_=30,g_=12}));function v_(e,t,n,r,i,a,o,s){var c=s.bits,l=0,u=0,d=0,f=0,p=0,m=0,h=0,g=0,_=0,v=0,y,b,x,S,C,w=null,T=0,E,D=Jg(y_+1),ee=Jg(y_+1),te=null,ne=0,re,ie,ae;for(l=0;l<=y_;l++)D[l]=0;for(u=0;u<r;u++)D[t[n+u]]++;for(p=c,f=y_;f>=1&&D[f]===0;f--);if(p>f&&(p=f),f===0)return i[a++]=20971520,i[a++]=20971520,s.bits=1,0;for(d=1;d<f&&D[d]===0;d++);for(p<d&&(p=d),g=1,l=1;l<=y_;l++)if(g<<=1,g-=D[l],g<0)return-1;if(g>0&&(e===S_||f!==1))return-1;for(ee[1]=0,l=1;l<y_;l++)ee[l+1]=ee[l]+D[l];for(u=0;u<r;u++)t[n+u]!==0&&(o[ee[t[n+u]]++]=u);if(e===S_?(w=te=o,E=19):e===C_?(w=T_,T-=257,te=E_,ne-=257,E=256):(w=D_,te=O_,E=-1),v=0,u=0,l=d,C=a,m=p,h=0,x=-1,_=1<<p,S=_-1,e===C_&&_>b_||e===w_&&_>x_)return 1;for(;;){re=l-h,o[u]<E?(ie=0,ae=o[u]):o[u]>E?(ie=te[ne+o[u]],ae=w[T+o[u]]):(ie=96,ae=0),y=1<<l-h,b=1<<m,d=b;do b-=y,i[C+(v>>h)+b]=re<<24|ie<<16|ae|0;while(b!==0);for(y=1<<l-1;v&y;)y>>=1;if(y===0?v=0:(v&=y-1,v+=y),u++,--D[l]===0){if(l===f)break;l=t[n+o[u]]}if(l>p&&(v&S)!==x){for(h===0&&(h=p),C+=d,m=l-h,g=1<<m;m+h<f&&(g-=D[m+h],!(g<=0));)m++,g<<=1;if(_+=1<<m,e===C_&&_>b_||e===w_&&_>x_)return 1;x=v&S,i[x]=p<<24|m<<16|C-a|0}}return v!==0&&(i[C+v]=l-h<<24|4194304),s.bits=p,0}var y_,b_,x_,S_,C_,w_,T_,E_,D_,O_,k_=n((()=>{Xg(),y_=15,b_=852,x_=592,S_=0,C_=1,w_=2,T_=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],E_=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],D_=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],O_=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]}));function A_(e){return(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24)}function j_(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=Jg(320),this.work=Jg(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function M_(e){var t;return!e||!e.state?Z_:(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=``,t.wrap&&(e.adler=t.wrap&1),t.mode=nv,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=Yg(Nv),t.distcode=t.distdyn=Yg(Pv),t.sane=1,t.back=-1,J_)}function N_(e){var t;return!e||!e.state?Z_:(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,M_(e))}function P_(e,t){var n,r;return!e||!e.state||(r=e.state,t<0?(n=0,t=-t):(n=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?Z_:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,N_(e))}function F_(e,t){var n,r;return e?(r=new j_,e.state=r,r.window=null,n=P_(e,t),n!==J_&&(e.state=null),n):Z_}function I_(e){if(Fv){var t;for(Iv=Yg(512),Lv=Yg(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(v_(U_,e.lens,0,288,Iv,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;v_(W_,e.lens,0,32,Lv,0,e.work,{bits:5}),Fv=!1}e.lencode=Iv,e.lenbits=9,e.distcode=Lv,e.distbits=5}function L_(e,t,n,r){var i,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=qg(a.wsize)),r>=a.wsize?(Gg(a.window,t,n-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>r&&(i=r),Gg(a.window,t,n-r,i,a.wnext),r-=i,r?(Gg(a.window,t,n-r,r,0),a.wnext=r,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=i))),0}function R_(e,t){var n,r,i,a,o,s,c,l,u,d,f,p,m,h,g=0,_,v,y,b,x,S,C,w,T=qg(4),E,D,ee=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&e.avail_in!==0)return Z_;n=e.state,n.mode===pv&&(n.mode=mv),o=e.next_out,i=e.output,c=e.avail_out,a=e.next_in,r=e.input,s=e.avail_in,l=n.hold,u=n.bits,d=s,f=c,w=J_;inf_leave:for(;;)switch(n.mode){case nv:if(n.wrap===0){n.mode=mv;break}for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.wrap&2&&l===35615){n.check=0,T[0]=l&255,T[1]=l>>>8&255,n.check=d_(n.check,T,2,0),l=0,u=0,n.mode=rv;break}if(n.flags=0,n.head&&(n.head.done=!1),!(n.wrap&1)||(((l&255)<<8)+(l>>8))%31){e.msg=`incorrect header check`,n.mode=V;break}if((l&15)!==tv){e.msg=`unknown compression method`,n.mode=V;break}if(l>>>=4,u-=4,C=(l&15)+8,n.wbits===0)n.wbits=C;else if(C>n.wbits){e.msg=`invalid window size`,n.mode=V;break}n.dmax=1<<C,e.adler=n.check=1,n.mode=l&512?dv:pv,l=0,u=0;break;case rv:for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.flags=l,(n.flags&255)!==tv){e.msg=`unknown compression method`,n.mode=V;break}if(n.flags&57344){e.msg=`unknown header flags set`,n.mode=V;break}n.head&&(n.head.text=l>>8&1),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=d_(n.check,T,2,0)),l=0,u=0,n.mode=iv;case iv:for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.head&&(n.head.time=l),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,T[2]=l>>>16&255,T[3]=l>>>24&255,n.check=d_(n.check,T,4,0)),l=0,u=0,n.mode=av;case av:for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.head&&(n.head.xflags=l&255,n.head.os=l>>8),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=d_(n.check,T,2,0)),l=0,u=0,n.mode=ov;case ov:if(n.flags&1024){for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.length=l,n.head&&(n.head.extra_len=l),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=d_(n.check,T,2,0)),l=0,u=0}else n.head&&(n.head.extra=null);n.mode=sv;case sv:if(n.flags&1024&&(p=n.length,p>s&&(p=s),p&&(n.head&&(C=n.head.extra_len-n.length,n.head.extra||(n.head.extra=Array(n.head.extra_len)),Gg(n.head.extra,r,a,p,C)),n.flags&512&&(n.check=d_(n.check,r,p,a)),s-=p,a+=p,n.length-=p),n.length))break inf_leave;n.length=0,n.mode=cv;case cv:if(n.flags&2048){if(s===0)break inf_leave;p=0;do C=r[a+ p++],n.head&&C&&n.length<65536&&(n.head.name+=String.fromCharCode(C));while(C&&p<s);if(n.flags&512&&(n.check=d_(n.check,r,p,a)),s-=p,a+=p,C)break inf_leave}else n.head&&(n.head.name=null);n.length=0,n.mode=lv;case lv:if(n.flags&4096){if(s===0)break inf_leave;p=0;do C=r[a+ p++],n.head&&C&&n.length<65536&&(n.head.comment+=String.fromCharCode(C));while(C&&p<s);if(n.flags&512&&(n.check=d_(n.check,r,p,a)),s-=p,a+=p,C)break inf_leave}else n.head&&(n.head.comment=null);n.mode=uv;case uv:if(n.flags&512){for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l!==(n.check&65535)){e.msg=`header crc mismatch`,n.mode=V;break}l=0,u=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=pv;break;case dv:for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}e.adler=n.check=A_(l),l=0,u=0,n.mode=fv;case fv:if(n.havedict===0)return e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,X_;e.adler=n.check=1,n.mode=pv;case pv:if(t===K_||t===q_)break inf_leave;case mv:if(n.last){l>>>=u&7,u-=u&7,n.mode=Ov;break}for(;u<3;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}switch(n.last=l&1,l>>>=1,--u,l&3){case 0:n.mode=hv;break;case 1:if(I_(n),n.mode=xv,t===q_){l>>>=2,u-=2;break inf_leave}break;case 2:n.mode=vv;break;case 3:e.msg=`invalid block type`,n.mode=V}l>>>=2,u-=2;break;case hv:for(l>>>=u&7,u-=u&7;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if((l&65535)!=(l>>>16^65535)){e.msg=`invalid stored block lengths`,n.mode=V;break}if(n.length=l&65535,l=0,u=0,n.mode=gv,t===q_)break inf_leave;case gv:n.mode=_v;case _v:if(p=n.length,p){if(p>s&&(p=s),p>c&&(p=c),p===0)break inf_leave;Gg(i,r,a,p,o),s-=p,a+=p,c-=p,o+=p,n.length-=p;break}n.mode=pv;break;case vv:for(;u<14;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.nlen=(l&31)+257,l>>>=5,u-=5,n.ndist=(l&31)+1,l>>>=5,u-=5,n.ncode=(l&15)+4,l>>>=4,u-=4,n.nlen>286||n.ndist>30){e.msg=`too many length or distance symbols`,n.mode=V;break}n.have=0,n.mode=yv;case yv:for(;n.have<n.ncode;){for(;u<3;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.lens[ee[n.have++]]=l&7,l>>>=3,u-=3}for(;n.have<19;)n.lens[ee[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,E={bits:n.lenbits},w=v_(H_,n.lens,0,19,n.lencode,0,n.work,E),n.lenbits=E.bits,w){e.msg=`invalid code lengths set`,n.mode=V;break}n.have=0,n.mode=bv;case bv:for(;n.have<n.nlen+n.ndist;){for(;g=n.lencode[l&(1<<n.lenbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(y<16)l>>>=_,u-=_,n.lens[n.have++]=y;else{if(y===16){for(D=_+2;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l>>>=_,u-=_,n.have===0){e.msg=`invalid bit length repeat`,n.mode=V;break}C=n.lens[n.have-1],p=3+(l&3),l>>>=2,u-=2}else if(y===17){for(D=_+3;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=_,u-=_,C=0,p=3+(l&7),l>>>=3,u-=3}else{for(D=_+7;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=_,u-=_,C=0,p=11+(l&127),l>>>=7,u-=7}if(n.have+p>n.nlen+n.ndist){e.msg=`invalid bit length repeat`,n.mode=V;break}for(;p--;)n.lens[n.have++]=C}}if(n.mode===V)break;if(n.lens[256]===0){e.msg=`invalid code -- missing end-of-block`,n.mode=V;break}if(n.lenbits=9,E={bits:n.lenbits},w=v_(U_,n.lens,0,n.nlen,n.lencode,0,n.work,E),n.lenbits=E.bits,w){e.msg=`invalid literal/lengths set`,n.mode=V;break}if(n.distbits=6,n.distcode=n.distdyn,E={bits:n.distbits},w=v_(W_,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,E),n.distbits=E.bits,w){e.msg=`invalid distances set`,n.mode=V;break}if(n.mode=xv,t===q_)break inf_leave;case xv:n.mode=Sv;case Sv:if(s>=6&&c>=258){e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,m_(e,f),o=e.next_out,i=e.output,c=e.avail_out,a=e.next_in,r=e.input,s=e.avail_in,l=n.hold,u=n.bits,n.mode===pv&&(n.back=-1);break}for(n.back=0;g=n.lencode[l&(1<<n.lenbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(v&&!(v&240)){for(b=_,x=v,S=y;g=n.lencode[S+((l&(1<<b+x)-1)>>b)],_=g>>>24,v=g>>>16&255,y=g&65535,!(b+_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=b,u-=b,n.back+=b}if(l>>>=_,u-=_,n.back+=_,n.length=y,v===0){n.mode=Dv;break}if(v&32){n.back=-1,n.mode=pv;break}if(v&64){e.msg=`invalid literal/length code`,n.mode=V;break}n.extra=v&15,n.mode=Cv;case Cv:if(n.extra){for(D=n.extra;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.length+=l&(1<<n.extra)-1,l>>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=wv;case wv:for(;g=n.distcode[l&(1<<n.distbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(!(v&240)){for(b=_,x=v,S=y;g=n.distcode[S+((l&(1<<b+x)-1)>>b)],_=g>>>24,v=g>>>16&255,y=g&65535,!(b+_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=b,u-=b,n.back+=b}if(l>>>=_,u-=_,n.back+=_,v&64){e.msg=`invalid distance code`,n.mode=V;break}n.offset=y,n.extra=v&15,n.mode=Tv;case Tv:if(n.extra){for(D=n.extra;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.offset+=l&(1<<n.extra)-1,l>>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg=`invalid distance too far back`,n.mode=V;break}n.mode=Ev;case Ev:if(c===0)break inf_leave;if(p=f-c,n.offset>p){if(p=n.offset-p,p>n.whave&&n.sane){e.msg=`invalid distance too far back`,n.mode=V;break}p>n.wnext?(p-=n.wnext,m=n.wsize-p):m=n.wnext-p,p>n.length&&(p=n.length),h=n.window}else h=i,m=o-n.offset,p=n.length;p>c&&(p=c),c-=p,n.length-=p;do i[o++]=h[m++];while(--p);n.length===0&&(n.mode=Sv);break;case Dv:if(c===0)break inf_leave;i[o++]=n.length,c--,n.mode=Sv;break;case Ov:if(n.wrap){for(;u<32;){if(s===0)break inf_leave;s--,l|=r[a++]<<u,u+=8}if(f-=c,e.total_out+=f,n.total+=f,f&&(e.adler=n.check=n.flags?d_(n.check,i,f,o-f):c_(n.check,i,f,o-f)),f=c,(n.flags?l:A_(l))!==n.check){e.msg=`incorrect data check`,n.mode=V;break}l=0,u=0}n.mode=kv;case kv:if(n.wrap&&n.flags){for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l!==(n.total&4294967295)){e.msg=`incorrect length check`,n.mode=V;break}l=0,u=0}n.mode=Av;case Av:w=Y_;break inf_leave;case V:w=Q_;break inf_leave;case jv:return $_;case Mv:default:return Z_}return e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,(n.wsize||f!==e.avail_out&&n.mode<V&&(n.mode<Ov||t!==G_))&&L_(e,e.output,e.next_out,f-e.avail_out)?(n.mode=jv,$_):(d-=e.avail_in,f-=e.avail_out,e.total_in+=d,e.total_out+=f,n.total+=f,n.wrap&&f&&(e.adler=n.check=n.flags?d_(n.check,i,f,e.next_out-f):c_(n.check,i,f,e.next_out-f)),e.data_type=n.bits+(n.last?64:0)+(n.mode===pv?128:0)+(n.mode===xv||n.mode===gv?256:0),(d===0&&f===0||t===G_)&&w===J_&&(w=ev),w)}function z_(e){if(!e||!e.state)return Z_;var t=e.state;return t.window&&=null,e.state=null,J_}function B_(e,t){var n;return!e||!e.state||(n=e.state,!(n.wrap&2))?Z_:(n.head=t,t.done=!1,J_)}function V_(e,t){var n=t.length,r,i,a;return!e||!e.state||(r=e.state,r.wrap!==0&&r.mode!==fv)?Z_:r.mode===fv&&(i=1,i=c_(i,t,n,0),i!==r.check)?Q_:(a=L_(e,t,n,n),a?(r.mode=jv,$_):(r.havedict=1,J_))}var H_,U_,W_,G_,K_,q_,J_,Y_,X_,Z_,Q_,$_,ev,tv,nv,rv,iv,av,ov,sv,cv,lv,uv,dv,fv,pv,mv,hv,gv,_v,vv,yv,bv,xv,Sv,Cv,wv,Tv,Ev,Dv,Ov,kv,Av,V,jv,Mv,Nv,Pv,Fv,Iv,Lv,Rv=n((()=>{l_(),p_(),__(),k_(),Xg(),H_=0,U_=1,W_=2,G_=4,K_=5,q_=6,J_=0,Y_=1,X_=2,Z_=-2,Q_=-3,$_=-4,ev=-5,tv=8,nv=1,rv=2,iv=3,av=4,ov=5,sv=6,cv=7,lv=8,uv=9,dv=10,fv=11,pv=12,mv=13,hv=14,gv=15,_v=16,vv=17,yv=18,bv=19,xv=20,Sv=21,Cv=22,wv=23,Tv=24,Ev=25,Dv=26,Ov=27,kv=28,Av=29,V=30,jv=31,Mv=32,Nv=852,Pv=592,Fv=!0})),zv,Bv=n((()=>{zv={2:`need dictionary`,1:`stream end`,0:``,"-1":`file error`,"-2":`stream error`,"-3":`data error`,"-4":`insufficient memory`,"-5":`buffer error`,"-6":`incompatible version`}}));function Vv(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=``,this.state=null,this.data_type=2,this.adler=0}var Hv=n((()=>{}));function Uv(e,t){var n=new Gv(t);if(n.push(e,!0),n.err)throw n.msg||zv[n.err];return n.result}var Wv,Gv,Kv,qv=n((()=>{Xg(),a_(),Rg(),s_(),Rv(),Bv(),Hv(),Wv=Object.prototype.toString,Gv=class e{constructor(t){if(!(this instanceof e))return new e(t);this.options=Bg({chunkSize:16384,windowBits:0,to:``},t||{});var n=this.options;n.raw&&n.windowBits>=0&&n.windowBits<16&&(n.windowBits=-n.windowBits,n.windowBits===0&&(n.windowBits=-15)),n.windowBits>=0&&n.windowBits<16&&!(t&&t.windowBits)&&(n.windowBits+=32),n.windowBits>15&&n.windowBits<48&&(n.windowBits&15||(n.windowBits|=15)),this.err=0,this.msg=``,this.ended=!1,this.chunks=[],this.strm=new Vv,this.strm.avail_out=0;var r=F_(this.strm,n.windowBits);if(r!==0||(this.header=new o_,B_(this.strm,this.header),n.dictionary&&(typeof n.dictionary==`string`?n.dictionary=Zg(n.dictionary):Wv.call(n.dictionary)===`[object ArrayBuffer]`&&(n.dictionary=new Uint8Array(n.dictionary)),n.raw&&(r=V_(this.strm,n.dictionary),r!==0))))throw Error(zv[r])}push(e,t){var n=this.strm,r=this.options.chunkSize,i=this.options.dictionary,a,o,s,c,l,u,d=!1;if(this.ended)return!1;o=t===~~t?t:t===!0?4:0,typeof e==`string`?n.input=$g(e):Wv.call(e)===`[object ArrayBuffer]`?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;do{if(n.avail_out===0&&(n.output=qg(r),n.next_out=0,n.avail_out=r),a=R_(n,0),a===2&&i&&(u=typeof i==`string`?Zg(i):Wv.call(i)===`[object ArrayBuffer]`?new Uint8Array(i):i,a=V_(this.strm,u)),a===-5&&d===!0&&(a=0,d=!1),a!==1&&a!==0)return this.onEnd(a),this.ended=!0,!1;n.next_out&&(n.avail_out===0||a===1||n.avail_in===0&&(o===4||o===2))&&(this.options.to===`string`?(s=t_(n.output,n.next_out),c=n.next_out-s,l=e_(n.output,s),n.next_out=c,n.avail_out=r-c,c&&Gg(n.output,n.output,s,c,0),this.onData(l)):this.onData(Vg(n.output,n.next_out))),n.avail_in===0&&n.avail_out===0&&(d=!0)}while((n.avail_in>0||n.avail_out===0)&&a!==1);return a===1&&(o=4),o===4?(a=z_(this.strm),this.onEnd(a),this.ended=!0,a===0):o===2?(this.onEnd(0),n.avail_out=0,!0):!0}onData(e){this.chunks.push(e)}onEnd(e){e===0&&(this.options.to===`string`?this.result=this.chunks.join(``):this.result=Kg(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg}},Kv=Uv})),Jv=n((()=>{})),Yv=n((()=>{Rg(),qv(),Jv()}));function Xv(e){try{let a=H.__wbindgen_add_to_stack_pointer(-16),o=uy(e,H.__wbindgen_export2),s=My;H.decompress_all(a,o,s);var t=ay().getInt32(a+0,!0),n=ay().getInt32(a+4,!0),r=ay().getInt32(a+8,!0);if(ay().getInt32(a+12,!0))throw dy(r);var i=iy(t,n).slice();return H.__wbindgen_export(t,n*1,1),i}finally{H.__wbindgen_add_to_stack_pointer(16)}}function Zv(e){try{let r=H.__wbindgen_add_to_stack_pointer(-16),i=uy(e,H.__wbindgen_export2),a=My;H.decompress_block(r,i,a);var t=ay().getInt32(r+0,!0),n=ay().getInt32(r+4,!0);if(ay().getInt32(r+8,!0))throw dy(n);return xy.__wrap(t)}finally{H.__wbindgen_add_to_stack_pointer(16)}}function Qv(e,t,n,r,i){try{let s=H.__wbindgen_add_to_stack_pointer(-16),c=uy(e,H.__wbindgen_export2),l=My;H.decompress_chunk_slice(s,c,l,t,n,r,i);var a=ay().getInt32(s+0,!0),o=ay().getInt32(s+4,!0);if(ay().getInt32(s+8,!0))throw dy(o);return by.__wrap(a)}finally{H.__wbindgen_add_to_stack_pointer(16)}}function $v(e,t){return ty(Error(sy(e,t)))}function ey(e,t){throw Error(sy(e,t))}function ty(e){Oy===Dy.length&&Dy.push(Dy.length+1);let t=Oy;return Oy=Dy[t],Dy[t]=e,t}function ny(e){e<132||(Dy[e]=Oy,Oy=e)}function ry(e,t){return e>>>=0,oy().subarray(e/8,e/8+t)}function iy(e,t){return e>>>=0,cy().subarray(e/1,e/1+t)}function ay(){return(wy===null||wy.buffer.detached===!0||wy.buffer.detached===void 0&&wy.buffer!==H.memory.buffer)&&(wy=new DataView(H.memory.buffer)),wy}function oy(){return(Ty===null||Ty.byteLength===0)&&(Ty=new Float64Array(H.memory.buffer)),Ty}function sy(e,t){return e>>>=0,fy(e,t)}function cy(){return(Ey===null||Ey.byteLength===0)&&(Ey=new Uint8Array(H.memory.buffer)),Ey}function ly(e){return Dy[e]}function uy(e,t){let n=t(e.length*1,1)>>>0;return cy().set(e,n/1),My=e.length,n}function dy(e){let t=ly(e);return ny(e),t}function fy(e,t){return jy+=t,jy>=Ay&&(ky=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),ky.decode(),jy=t),ky.decode(cy().subarray(e,e+t))}function py(e){H=e}async function my(){return Ny||(Py||=(async()=>{let e=await(await fetch(yy)).arrayBuffer(),{instance:t}=await WebAssembly.instantiate(e,{"./bgzf_wasm_bg.js":vy});return Ny=t.exports,py(Ny),Ny})(),Py)}async function hy(e){return await my(),Xv(e)}async function gy(e,t,n,r,i){await my();let a=Qv(e,t,n,r,i),o=a.buffer,s=[...a.cpositions],c=[...a.dpositions];return a.free(),{buffer:o,cpositions:s,dpositions:c}}var _y,vy,yy,by,xy,Sy,Cy,wy,Ty,Ey,Dy,Oy,ky,Ay,jy,My,H,Ny,Py,Fy=n((()=>{_y={},_y.d=(e,t)=>{for(var n in t)_y.o(t,n)&&!_y.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},_y.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),_y.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})},vy={},_y.r(vy),_y.d(vy,{ChunkSliceResult:()=>by,DecompressResult:()=>xy,__wbg_Error_8c4e43fe74559d73:()=>$v,__wbg___wbindgen_throw_be289d5034ed271b:()=>ey,__wbg_set_wasm:()=>py,decompress_all:()=>Xv,decompress_block:()=>Zv,decompress_chunk_slice:()=>Qv}),yy=`data:application/wasm;base64,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AAsgASADNgIEIAEgAjYCACABQfiSwAAgACgCBCAAKAIIIgAtAAggAC0ACRAeAAuLAQEBfyMAQRBrIgMkAAJAIAIgAWoiASACTw0AQQBBABBNAAsgA0EEaiAAKAIAIgIgACgCBCABIAJBAXQiAiABIAJLGyICQQggAkEISxsiAkEBQQEQIAJAIAMoAgRBAUcNACADKAIIIAMoAgwQTQALIAMoAgghASAAIAI2AgAgACABNgIEIANBEGokAAuHAQEBfyMAQSBrIgIkAAJAAkAgACgCAEGAgICAeEYNACABIAAoAgQgACgCCBBSIQAMAQsgAkEIakEIaiAAKAIMKAIAIgBBCGopAgA3AwAgAkEIakEQaiAAQRBqKQIANwMAIAIgACkCADcDCCABKAIAIAEoAgQgAkEIahALIQALIAJBIGokACAAC3wBAX8CQCAAKAIAIgAoAgwiAUUNACAAKAIQIAFBARBWCwJAIAAoAhgiAUUNACAAKAIcIAFBA3RBCBBWCwJAIAAoAiQiAUUNACAAKAIoIAFBA3RBCBBWCwJAIABBf0YNACAAIAAoAgRBf2oiATYCBCABDQAgAEEwQQQQVgsLhAEBAn8jAEEQayIGJABBACEHIAZBADYCDAJAAkACQAJAAkAgASgCACACIAMgBCAFIAZBDGoQUA4EAQIAAwALQZCFwABB7ABB/IXAABA/AAsgACAGKAIMNgIEDAILIABBADoAAUEBIQcMAQtBASEHIABBAToAAQsgACAHOgAAIAZBEGokAAtrAQN/IwBBEGsiASQAIAFBBGogACgCACICIAAoAgQgAkEBdCICQQQgAkEESxsiAkEIQQgQIAJAIAEoAgRBAUcNACABKAIIIAEoAgwQTQALIAEoAgghAyAAIAI2AgAgACADNgIEIAFBEGokAAtoAQF/IwBBMGsiAiQAAkAQaEH/AXENACACQTBqJAAPCyACIAE2AiQgAkECNgIQIAJBpJLAADYCDCACQgE3AhggAkEErUIghiACQSRqrYQ3AyggAiACQShqNgIUIAJBDGpBtJLAABBAAAtoAgF/AX4jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQI2AgwgA0GcmMAANgIIIANCAjcCFCADQQStQiCGIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhBA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ABWAAAAWgAAAF4AAABiAAAAZgAAAGoAAABuAAAAcgAAAHYAAAB6AAAAfgAAAIIAAACGAAAAigAAAI4AAACSAAAAlgAAAJoAAACeAAAAogAAAKYAAACqAAAArgAAALIAAAC2AAAAugAAAL4AAADCAAAAxgAAAMoAAADOAAAA0gAAANYAAADaAAAA3gAAAOIAAADmAAAA6gAAAO4AAADyAAAA9gAAAPoAAAD+AAABAgAAAQYAAAEKAAABDgAAARIAAAEWAAABGgAAAR4AAAEiAAABJgAAASoAAAEuAAABMgAAATYAAAE6AAABPgAAAUIAAAFGAAABSgAAAU4AAAFSAAABVgAAAVoAAAFeAAABYgAAAWYAAAFqAAABbgAAAXIAAAF2AAABegAAAX4AAAGCAAABhgAAAYoAAAGOAAABkgAAAZYAAAGaAAABngAAAaIAAAGmAAABqgAAAa4AAAGyAAABtgAAAboAAAG+AAABwgAAAcYAAAHKAAABzgAAAdIAAAHWAAAB2gAAAd4AAAHiAAAB5gAAAeoAAAHuAAAB8gAAAfYAAAH6AAAB/gAAAgIAAAIGAAACCgAAAg4AAAISAAACFgAAAhoAAAIeAAACIgAAAiYAAAIqAAACLgAAAjIAAAI2AAACOgAAAj4AAAJCAAACRgAAAkoAAAJOAAACUgAAAlYAAAJaAAACXgAAAmIAAAJmAAACagAAAm4AAAJyAAACdgAAAnoAAAJ+AAACggAAAoYAAAKKAAACjgAAApIAAAKWAAACmgAAAp4AAAKiAAACpgAAAqoAAAKuAAACsgAAArYAAAK6AAACvgAAAsIAAALGAAACygAAAs4AAALSAAAC1gAAAtoAAALeAAAC4gAAAuYAAALqAAAC7gAAAvIAAAL2AAAC+gAAAv4AAAMCAAADBgAAAwoAAAMOAAADEgAAAxYAAAMaAAADHgAAAyIAAAMmAAADKgAAAy4AAAMyAAADNgAAAzoAAAM+AAADQgAAA0YAAANKAAADTgAAA1IAAANWAAADWgAAA14AAANiAAADZgAAA2oAAANuAAADcgAAA3YAAAN6AAADfgAAA4IAAAOGAAADigAAA44AAAOSAAADlgAAA5oAAAOeAAADogAAA6YAAAOqAAADrgAAA7IAAAO2AAADugAAA74AAAPCAAADxgAAA8oAAAPOAAAD0gAAA9YAAAPaAAAD3gAAA+IAAAPmAAAD6gAAA+4AAAPyAAAD9gAAA/oAAAP+AAKAAAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAQALAAEADQABAA8AAQARAAIAEwACABcAAgAbAAIAHwADACMAAwArAAMAMwADADsABABDAAQAUwAEAGMABABzAAUAgwAFAKMABQDDAAUA4wAAAAIBAAACAQAAAgF8/YsyV+ZX+QLfRL/jSOevbV3L1ixQ62N4QaZXcRuLuW1lbW9yeSBhbGxvY2F0aW9uIG9mICBieXRlcyBmYWlsZWQAAAAJEAAVAAAAFQkQAA0AAAAGARAAGAAAAGQBAAAJAAAAAAAAAAgAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAMAAAABAAAAAoAAAALAAAADAAAAAAAAAAIAAAABAAAAA0AAAAOAAAADwAAABAAAAARAAAAEAAAAAQAAAASAAAAEwAAABQAAAAIAAAAAAAAAAgAAAAEAAAAFQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAANsAEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAADbABAAKgAAALcEAAANAAAACQAAAAwAAAAEAAAAFgAAAGNhcGFjaXR5IG92ZXJmbG93AAAAUAoQABEAAAC6ABAAIAAAABwAAAAFAAAAAQAAAAAAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OXJhbmdlIGVuZCBpbmRleCAgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggAABMCxAAEAAAAFwLEAAiAAAAc2xpY2UgaW5kZXggc3RhcnRzIGF0ICBidXQgZW5kcyBhdCAAkAsQABYAAACmCxAADQAAAHJhbmdlIHN0YXJ0IGluZGV4IAAAxAsQABIAAABcCxAAIgAAAGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAADoCxAAIAAAAAgMEAASAAAAUmVmQ2VsbCBhbHJlYWR5IGJvcnJvd2VkAEHEmMAACwQEAAAAACkEbmFtZQEiAVgfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgA8CXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AgZ3YWxydXMGMC4yNC40DHdhc20tYmluZGdlbgcwLjIuMTA4`,by=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Sy.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Sy.unregister(this),e}free(){let e=this.__destroy_into_raw();H.__wbg_chunksliceresult_free(e,0)}get buffer(){try{let r=H.__wbindgen_add_to_stack_pointer(-16);H.chunksliceresult_buffer(r,this.__wbg_ptr);var e=ay().getInt32(r+0,!0),t=ay().getInt32(r+4,!0),n=iy(e,t).slice();return H.__wbindgen_export(e,t*1,1),n}finally{H.__wbindgen_add_to_stack_pointer(16)}}get cpositions(){try{let r=H.__wbindgen_add_to_stack_pointer(-16);H.chunksliceresult_cpositions(r,this.__wbg_ptr);var e=ay().getInt32(r+0,!0),t=ay().getInt32(r+4,!0),n=ry(e,t).slice();return H.__wbindgen_export(e,t*8,8),n}finally{H.__wbindgen_add_to_stack_pointer(16)}}get dpositions(){try{let r=H.__wbindgen_add_to_stack_pointer(-16);H.chunksliceresult_dpositions(r,this.__wbg_ptr);var e=ay().getInt32(r+0,!0),t=ay().getInt32(r+4,!0),n=ry(e,t).slice();return H.__wbindgen_export(e,t*8,8),n}finally{H.__wbindgen_add_to_stack_pointer(16)}}},Symbol.dispose&&(by.prototype[Symbol.dispose]=by.prototype.free),xy=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Cy.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Cy.unregister(this),e}free(){let e=this.__destroy_into_raw();H.__wbg_decompressresult_free(e,0)}get bytes_read(){return H.decompressresult_bytes_read(this.__wbg_ptr)>>>0}get data(){try{let r=H.__wbindgen_add_to_stack_pointer(-16);H.decompressresult_data(r,this.__wbg_ptr);var e=ay().getInt32(r+0,!0),t=ay().getInt32(r+4,!0),n=iy(e,t).slice();return H.__wbindgen_export(e,t*1,1),n}finally{H.__wbindgen_add_to_stack_pointer(16)}}},Symbol.dispose&&(xy.prototype[Symbol.dispose]=xy.prototype.free),Sy=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>H.__wbg_chunksliceresult_free(e>>>0,1)),Cy=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>H.__wbg_decompressresult_free(e>>>0,1)),wy=null,Ty=null,Ey=null,Dy=Array(128).fill(void 0),Dy.push(void 0,null,!0,!1),Oy=Dy.length,ky=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),ky.decode(),Ay=2146435072,jy=0,My=0,Ny=null,Py=null}));function Iy(e){return e.length>=2&&e[0]===31&&e[1]===139}async function Ly(e){if(typeof DecompressionStream<`u`){let t=new DecompressionStream(`gzip`),n=t.writable.getWriter(),r=n.write(e).then(()=>n.close()),i=[],a=t.readable.getReader();for(;;){let{done:e,value:t}=await a.read();if(e)break;i.push(t)}await r;let o=i.reduce((e,t)=>e+t.length,0),s=new Uint8Array(o),c=0;for(let e of i)s.set(e,c),c+=e.length;return s}else return Kv(e,void 0)}async function Ry(e){try{return await hy(e)}catch(t){if(/invalid bgzf header/.exec(`${t}`)){if(Iy(e))return Ly(e);throw Error(`problem decompressing block: not a valid bgzf or gzip block`)}throw/invalid gzip header/.exec(`${t}`)?Error(`problem decompressing block: incorrect gzip header check`):t}}async function zy(e,t,n){try{let{minv:n,maxv:r}=t,i=await gy(e,n.blockPosition,n.dataPosition,r.blockPosition,r.dataPosition);return{buffer:i.buffer,cpositions:i.cpositions,dpositions:i.dpositions}}catch(e){throw/invalid gzip header/.exec(`${e}`)?Error(`problem decompressing block: incorrect gzip header check`):e}}var By=n((()=>{Yv(),Fy()}));function Vy(e){let t=0;for(let n of e)t+=n.length;return t}function Hy(e,t){let n=new Uint8Array(t??Vy(e)),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var Uy=n((()=>{})),Wy,Gy=n((()=>{Lg(),By(),Uy(),Wy=class{filehandle;gzi;constructor({filehandle:e,gziFilehandle:t}){this.filehandle=e,this.gzi=new Ig({filehandle:t})}async _readAndUncompressBlock(e,t){let n=t;n||=(await this.filehandle.stat()).size;let r=n-e;return Ry(await this.filehandle.read(r,e))}async read(e,t){let n=await this.gzi.getRelevantBlocksForRead(e,t),r=[];for(let i=0;i<n.length-1;i+=1){let a=await this._readAndUncompressBlock(n[i][0],n[i+1][0]),[,o]=n[i],s=o>=t?0:t-o,c=Math.min(t+e,o+a.length)-o;s>=0&&s<a.length&&r.push(a.subarray(s,c))}return Hy(r)}}})),Ky=n((()=>{Gy(),By()}));function qy(e,t,n,r){return e+t*Math.floor(r/n)+r%n}async function Jy(e,t={}){let n=new TextDecoder(`utf8`).decode(await e.readFile(t)),r=[],i=[],a=[],o=[],s=[],c={},l=0,u=n.length,d=0;for(;l<u;){let e=n.indexOf(`
193
+ `,l);e===-1&&(e=u);let t=n.slice(l,e);if(t.endsWith(`\r`)&&(t=t.slice(0,-1)),t=t.trim(),l=e+1,t.length===0)continue;let f=t.indexOf(` `),p=t.indexOf(` `,f+1),m=t.indexOf(` `,p+1),h=t.indexOf(` `,m+1),g=t.slice(0,f);if(g.startsWith(`>`))throw Error(`found > in sequence name, might have supplied FASTA file for the FASTA index`);r.push(g),a.push(+t.slice(f+1,p)),i.push(+t.slice(p+1,m)),o.push(+t.slice(m+1,h)),s.push(+t.slice(h+1)),c[g]=d,d++}return{names:r,nameToIndex:c,offsets:i,lengths:a,lineLengths:o,lineBytes:s}}var Yy,Xy=n((()=>{kg(),Yy=class{constructor({fasta:e,fai:t,path:n,faiPath:r}){if(e)this.fasta=e;else if(n)this.fasta=new Og(n);else throw Error(`Need to pass filehandle for fasta or path to localfile`);if(t)this.fai=t;else if(r)this.fai=new Og(r);else if(n)this.fai=new Og(`${n}.fai`);else throw Error(`Need to pass filehandle for or path to localfile`)}async _getIndexes(e){return this.indexes||=Jy(this.fai,e).catch(e=>{throw this.indexes=void 0,e}),this.indexes}async getSequenceNames(e){return(await this._getIndexes(e)).names}async getSequenceSizes(e){let t=await this._getIndexes(e);if(!t.sizesCache){let e={};for(let n=0;n<t.names.length;n++)e[t.names[n]]=t.lengths[n];t.sizesCache=e}return t.sizesCache}async getSequenceSize(e,t){let n=await this._getIndexes(t),r=n.nameToIndex[e];return r===void 0?void 0:n.lengths[r]}async hasReferenceSequence(e,t){return(await this._getIndexes(t)).nameToIndex[e]!==void 0}async getResiduesByName(e,t,n,r){let i=await this._getIndexes(r),a=i.nameToIndex[e];if(a!==void 0)return this._fetchFromIndex(i.offsets[a],i.lineBytes[a],i.lineLengths[a],i.lengths[a],t,n,r)}async getSequence(e,t,n,r){return this.getResiduesByName(e,t,n,r)}async _fetchFromIndex(e,t,n,r,i=0,a,o){let s=a;if(i<0)throw TypeError(`regionStart cannot be less than 0`);if((s===void 0||s>r)&&(s=r),i>=s)return``;let c=qy(e,t,n,i),l=qy(e,t,n,s)-c,u=new TextDecoder(`utf8`).decode(await this.fasta.read(l,c,o)).replace(/\s+/g,``);if(/[^\x20-\x7e]/.test(u.slice(0,1e3)))throw Error(`Non-ASCII characters detected in sequence. The file may be gzip compressed. Use BgzipIndexedFasta for bgzip files, or decompress the file.`);return u}}})),Zy,Qy=n((()=>{Ky(),kg(),Xy(),Zy=class extends Yy{constructor({fasta:e,path:t,fai:n,faiPath:r,gzi:i,gziPath:a}){super({fasta:e,path:t,fai:n,faiPath:r}),e&&i?this.fasta=new Wy({filehandle:e,gziFilehandle:i}):t&&a&&(this.fasta=new Wy({filehandle:new Og(t),gziFilehandle:new Og(a)}))}}})),$y=r({BgzipIndexedFasta:()=>Zy,FetchableSmallFasta:()=>tb,IndexedFasta:()=>Yy,parseSmallFasta:()=>eb});function eb(e){return e.split(`>`).filter(e=>/\S/.test(e)).map(e=>{let[t,...n]=e.split(`
194
+ `),[r,...i]=t.split(` `),a=n.join(``).replace(/\s/g,``);return{id:r,description:i.join(` `),sequence:a}})}var tb,nb=n((()=>{kg(),Qy(),Xy(),tb=class{constructor({fasta:e,path:t}){if(e)this.fasta=e;else if(t)this.fasta=new Og(t);else throw Error(`Need to pass fasta or path`);this.data=this.fasta.readFile().then(e=>eb(new TextDecoder(`utf8`).decode(e)))}async fetch(e,t,n){let r=(await this.data).find(t=>t.id===e),i=n-t;if(!r)throw Error(`no sequence with id ${e} exists`);return r.sequence.slice(t,i)}async getSequenceNames(){return(await this.data).map(e=>e.id)}}})),rb=class extends bg{constructor(e,t){let n={channel:`x`,windowSize:7e3,debounce:200,debounceMode:`window`,...e};if(super(t,n.channel),this.params=n,!this.params.url)throw Error(`No URL provided for IndexedFastaSource`);this.setupDebouncing(this.params),this.initializedPromise=new Promise(e=>{Promise.all([Promise.resolve().then(()=>(nb(),$y)),Promise.resolve().then(()=>(kg(),Dg))]).then(([{IndexedFasta:t},{RemoteFile:n}])=>{let r=e=>new n(rh(e,this.view.getBaseUrl()));this.fasta=new t({fasta:r(this.params.url),fai:r(this.params.indexUrl??this.params.url+`.fai`)}),e()})})}get label(){return`bigWigSource`}async loadInterval(e){let t=await this.discretizeAndLoad(e,async(e,t)=>this.fasta.getSequence(e.chrom,e.startPos,e.endPos,{signal:t}).then(t=>{if(t!=null)return{chrom:e.chrom,start:e.startPos,sequence:t};console.log(`No sequence found for interval ${e.chrom}:${e.startPos}-${e.endPos}`)}));this.publishData([t.filter(e=>e!==void 0)])}};function ib(e){return e?.type==`indexedFasta`}Wm(ib,rb);function ab(e,t,n){let r=Number(!!n),i=Number(!n);return BigInt(e.getInt32(t,n)*i+e.getInt32(t+4,n)*r)<<sb|BigInt(e.getUint32(t,n)*r+e.getUint32(t+4,n)*i)}function ob(e,t,n){let r=e.getUint32(t,n),i=e.getUint32(t+4,n),a=Number(!!n),o=Number(!n);return BigInt(r*o+i*a)<<sb|BigInt(r*a+i*o)}var sb,cb=n((()=>{sb=BigInt(32)})),lb=n((()=>{cb(),`getBigInt64`in DataView||(DataView.prototype.getBigInt64=function(e,t){return ab(this,e,t)}),`getBigUint64`in DataView||(DataView.prototype.getBigUint64=function(e,t){return ob(this,e,t)})})),ub,db,fb=n((()=>{ub=class{},db=class{constructor(){this.signals=new Set,this.abortController=new AbortController}addSignal(e=new ub){if(this.signal.aborted)throw Error(`cannot add a signal, already aborted!`);this.signals.add(e),e.aborted?this.handleAborted(e):typeof e.addEventListener==`function`&&e.addEventListener(`abort`,()=>{this.handleAborted(e)})}handleAborted(e){this.signals.delete(e),this.signals.size===0&&this.abortController.abort()}get signal(){return this.abortController.signal}abort(){this.abortController.abort()}}})),pb,mb=n((()=>{pb=class{constructor(){this.callbacks=new Set}addCallback(e=()=>{}){this.callbacks.add(e),this.currentMessage&&e(this.currentMessage)}callback(e){this.currentMessage=e;for(let t of this.callbacks)t(e)}}})),hb,gb=n((()=>{fb(),mb(),hb=class e{constructor({fill:e,cache:t}){if(typeof e!=`function`)throw TypeError(`must pass a fill function`);if(typeof t!=`object`)throw TypeError(`must pass a cache object`);if(typeof t.get!=`function`||typeof t.set!=`function`||typeof t.delete!=`function`)throw TypeError(`cache must implement get(key), set(key, val), and and delete(key)`);this.cache=t,this.fillCallback=e}static isAbortException(e){return e.name===`AbortError`||e.code===`ERR_ABORTED`||e.message===`AbortError: aborted`||e.message===`Error: aborted`}evict(e,t){this.cache.get(e)===t&&this.cache.delete(e)}fill(e,t,n,r){let i=new db,a=new pb;a.addCallback(r);let o={aborter:i,promise:this.fillCallback(t,i.signal,e=>{a.callback(e)}),settled:!1,statusReporter:a,get aborted(){return this.aborter.signal.aborted}};o.aborter.addSignal(n),o.aborter.signal.addEventListener(`abort`,()=>{o.settled||this.evict(e,o)}),o.promise.then(()=>{o.settled=!0},()=>{o.settled=!0,this.evict(e,o)}).catch(e=>{throw console.error(e),e}),this.cache.set(e,o)}static checkSinglePromise(e,t){function n(){if(t?.aborted)throw Object.assign(Error(`aborted`),{code:`ERR_ABORTED`})}return e.then(e=>(n(),e),e=>{throw n(),e})}has(e){return this.cache.has(e)}get(t,n,r,i){if(!r&&n instanceof AbortSignal)throw TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");let a=this.cache.get(t);return a?a.aborted&&!a.settled?(this.evict(t,a),this.get(t,n,r,i)):a.settled?a.promise:(a.aborter.addSignal(r),a.statusReporter.addCallback(i),e.checkSinglePromise(a.promise,r)):(this.fill(t,n,r,i),e.checkSinglePromise(this.cache.get(t).promise,r))}delete(e){let t=this.cache.get(e);t&&(t.settled||t.aborter.abort(),this.cache.delete(e))}clear(){let e=this.cache.keys(),t=0;for(let n=e.next();!n.done;n=e.next())this.delete(n.value),t+=1;return t}}})),_b=n((()=>{gb()})),vb,U,W,yb,G,bb,xb,Sb,Cb,wb,Tb,Eb,Db,Ob,kb,Ab,jb,Mb,Nb=n((()=>{vb=function(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n},U=function(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)},Mb=class extends Map{constructor(e={}){if(super(),W.add(this),yb.set(this,0),G.set(this,new Map),bb.set(this,new Map),xb.set(this,void 0),Sb.set(this,void 0),Cb.set(this,void 0),!(e.maxSize&&e.maxSize>0))throw TypeError("`maxSize` must be a number greater than 0");if(typeof e.maxAge==`number`&&e.maxAge===0)throw TypeError("`maxAge` must be a number greater than 0");vb(this,xb,e.maxSize,`f`),vb(this,Sb,e.maxAge||1/0,`f`),vb(this,Cb,e.onEviction,`f`)}get __oldCache(){return U(this,bb,`f`)}get(e){if(U(this,G,`f`).has(e)){let t=U(this,G,`f`).get(e);return U(this,W,`m`,Db).call(this,e,t)}if(U(this,bb,`f`).has(e)){let t=U(this,bb,`f`).get(e);if(!U(this,W,`m`,Tb).call(this,e,t))return U(this,W,`m`,Ab).call(this,e,t),t.value}}set(e,t,{maxAge:n=U(this,Sb,`f`)}={}){let r=typeof n==`number`&&n!==1/0?Date.now()+n:void 0;return U(this,G,`f`).has(e)?U(this,G,`f`).set(e,{value:t,expiry:r}):U(this,W,`m`,kb).call(this,e,{value:t,expiry:r}),this}has(e){return U(this,G,`f`).has(e)?!U(this,W,`m`,Tb).call(this,e,U(this,G,`f`).get(e)):U(this,bb,`f`).has(e)?!U(this,W,`m`,Tb).call(this,e,U(this,bb,`f`).get(e)):!1}peek(e){if(U(this,G,`f`).has(e))return U(this,W,`m`,Ob).call(this,e,U(this,G,`f`));if(U(this,bb,`f`).has(e))return U(this,W,`m`,Ob).call(this,e,U(this,bb,`f`))}expiresIn(e){let t=U(this,G,`f`).get(e)??U(this,bb,`f`).get(e);if(t)return t.expiry?t.expiry-Date.now():1/0}delete(e){var t;let n=U(this,G,`f`).delete(e);return n&&vb(this,yb,(t=U(this,yb,`f`),t--,t),`f`),U(this,bb,`f`).delete(e)||n}clear(){U(this,G,`f`).clear(),U(this,bb,`f`).clear(),vb(this,yb,0,`f`)}resize(e){if(!(e&&e>0))throw TypeError("`maxSize` must be a number greater than 0");let t=[...U(this,W,`m`,jb).call(this)],n=t.length-e;n<0?(vb(this,G,new Map(t),`f`),vb(this,bb,new Map,`f`),vb(this,yb,t.length,`f`)):(n>0&&U(this,W,`m`,wb).call(this,t.slice(0,n)),vb(this,bb,new Map(t.slice(n)),`f`),vb(this,G,new Map,`f`),vb(this,yb,0,`f`)),vb(this,xb,e,`f`)}evict(e=1){let t=e;if(!t||t<=0)return;let n=[...U(this,W,`m`,jb).call(this)],r=Math.trunc(Math.min(t,Math.max(n.length-1,0)));r<=0||(U(this,W,`m`,wb).call(this,n.slice(0,r)),vb(this,bb,new Map(n.slice(r)),`f`),vb(this,G,new Map,`f`),vb(this,yb,0,`f`))}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[(yb=new WeakMap,G=new WeakMap,bb=new WeakMap,xb=new WeakMap,Sb=new WeakMap,Cb=new WeakMap,W=new WeakSet,wb=function(e){if(typeof U(this,Cb,`f`)==`function`)for(let[t,n]of e)U(this,Cb,`f`).call(this,t,n.value)},Tb=function(e,t){return typeof t.expiry==`number`&&t.expiry<=Date.now()?(typeof U(this,Cb,`f`)==`function`&&U(this,Cb,`f`).call(this,e,t.value),this.delete(e)):!1},Eb=function(e,t){if(!U(this,W,`m`,Tb).call(this,e,t))return t.value},Db=function(e,t){return t.expiry?U(this,W,`m`,Eb).call(this,e,t):t.value},Ob=function(e,t){let n=t.get(e);return U(this,W,`m`,Db).call(this,e,n)},kb=function(e,t){var n;U(this,G,`f`).set(e,t),vb(this,yb,(n=U(this,yb,`f`),n++,n),`f`),U(this,yb,`f`)>=U(this,xb,`f`)&&(vb(this,yb,0,`f`),U(this,W,`m`,wb).call(this,U(this,bb,`f`)),vb(this,bb,U(this,G,`f`),`f`),vb(this,G,new Map,`f`))},Ab=function(e,t){U(this,bb,`f`).delete(e),U(this,W,`m`,kb).call(this,e,t)},jb=function*(){for(let e of U(this,bb,`f`)){let[t,n]=e;U(this,G,`f`).has(t)||U(this,W,`m`,Tb).call(this,t,n)||(yield e)}for(let e of U(this,G,`f`)){let[t,n]=e;U(this,W,`m`,Tb).call(this,t,n)||(yield e)}},Symbol.iterator)](){for(let e of U(this,G,`f`)){let[t,n]=e;U(this,W,`m`,Tb).call(this,t,n)||(yield[t,n.value])}for(let e of U(this,bb,`f`)){let[t,n]=e;U(this,G,`f`).has(t)||U(this,W,`m`,Tb).call(this,t,n)||(yield[t,n.value])}}*entriesDescending(){let e=[...U(this,G,`f`)];for(let t=e.length-1;t>=0;--t){let[n,r]=e[t];U(this,W,`m`,Tb).call(this,n,r)||(yield[n,r.value])}e=[...U(this,bb,`f`)];for(let t=e.length-1;t>=0;--t){let[n,r]=e[t];U(this,G,`f`).has(n)||U(this,W,`m`,Tb).call(this,n,r)||(yield[n,r.value])}}*entriesAscending(){for(let[e,t]of U(this,W,`m`,jb).call(this))yield[e,t.value]}get size(){if(!U(this,yb,`f`))return U(this,bb,`f`).size;let e=0;for(let t of U(this,bb,`f`).keys())U(this,G,`f`).has(t)||e++;return Math.min(U(this,yb,`f`)+e,U(this,xb,`f`))}get maxSize(){return U(this,xb,`f`)}get maxAge(){return U(this,Sb,`f`)}entries(){return this.entriesAscending()}forEach(e,t=this){for(let[n,r]of this.entriesAscending())e.call(t,r,n,this)}get[Symbol.toStringTag](){return`QuickLRU`}toString(){return`QuickLRU(${this.size}/${this.maxSize})`}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.toString()}}}));function Pb(e){let t=[...e].sort((e,t)=>e.min===t.min?e.max-t.max:e.min-t.min),n=[],r=t[0];for(let e=1;e<t.length;e++){let i=t[e];i.min>r.max+1?(n.push(r),r=i):i.max>r.max&&(r={min:r.min,max:i.max})}return n.push(r),n}var Fb=n((()=>{}));function Ib(e,t,n,r,i,a){try{let u=K.__wbindgen_add_to_stack_pointer(-16),d=$b(e,K.__wbindgen_export),f=bx,p=Qb(t,K.__wbindgen_export),m=bx,h=Qb(n,K.__wbindgen_export),g=bx;K.decompress_and_parse_bigwig(u,d,f,p,m,h,g,r,i,a);var o=qb().getInt32(u+0,!0),s=qb().getInt32(u+4,!0),c=qb().getInt32(u+8,!0);if(qb().getInt32(u+12,!0))throw ex(c);var l=Kb(o,s).slice();return K.__wbindgen_export2(o,s*1,1),l}finally{K.__wbindgen_add_to_stack_pointer(16)}}function Lb(e,t,n,r,i,a,o){try{let d=K.__wbindgen_add_to_stack_pointer(-16),f=$b(e,K.__wbindgen_export),p=bx,m=Qb(t,K.__wbindgen_export),h=bx,g=Qb(n,K.__wbindgen_export),_=bx;K.decompress_and_parse_summary(d,f,p,m,h,g,_,r,i,a,o);var s=qb().getInt32(d+0,!0),c=qb().getInt32(d+4,!0),l=qb().getInt32(d+8,!0);if(qb().getInt32(d+12,!0))throw ex(l);var u=Kb(s,c).slice();return K.__wbindgen_export2(s,c*1,1),u}finally{K.__wbindgen_add_to_stack_pointer(16)}}function Rb(e,t){try{let o=K.__wbindgen_add_to_stack_pointer(-16),s=$b(e,K.__wbindgen_export),c=bx;K.inflate_raw(o,s,c,t);var n=qb().getInt32(o+0,!0),r=qb().getInt32(o+4,!0),i=qb().getInt32(o+8,!0);if(qb().getInt32(o+12,!0))throw ex(i);var a=Kb(n,r).slice();return K.__wbindgen_export2(n,r*1,1),a}finally{K.__wbindgen_add_to_stack_pointer(16)}}function zb(e,t,n,r){try{let c=K.__wbindgen_add_to_stack_pointer(-16),l=$b(e,K.__wbindgen_export),u=bx,d=Qb(t,K.__wbindgen_export),f=bx,p=Qb(n,K.__wbindgen_export),m=bx;K.inflate_raw_batch(c,l,u,d,f,p,m,r);var i=qb().getInt32(c+0,!0),a=qb().getInt32(c+4,!0),o=qb().getInt32(c+8,!0);if(qb().getInt32(c+12,!0))throw ex(o);var s=Kb(i,a).slice();return K.__wbindgen_export2(i,a*1,1),s}finally{K.__wbindgen_add_to_stack_pointer(16)}}function Bb(e){try{let a=K.__wbindgen_add_to_stack_pointer(-16),o=$b(e,K.__wbindgen_export),s=bx;K.inflate_raw_unknown_size(a,o,s);var t=qb().getInt32(a+0,!0),n=qb().getInt32(a+4,!0),r=qb().getInt32(a+8,!0);if(qb().getInt32(a+12,!0))throw ex(r);var i=Kb(t,n).slice();return K.__wbindgen_export2(t,n*1,1),i}finally{K.__wbindgen_add_to_stack_pointer(16)}}function Vb(e,t,n){try{let o=K.__wbindgen_add_to_stack_pointer(-16),s=$b(e,K.__wbindgen_export),c=bx;K.parse_bigwig_block(o,s,c,t,n);var r=qb().getInt32(o+0,!0),i=qb().getInt32(o+4,!0),a=Kb(r,i).slice();return K.__wbindgen_export2(r,i*1,1),a}finally{K.__wbindgen_add_to_stack_pointer(16)}}function Hb(e,t,n,r){try{let s=K.__wbindgen_add_to_stack_pointer(-16),c=$b(e,K.__wbindgen_export),l=bx;K.parse_summary_block(s,c,l,t,n,r);var i=qb().getInt32(s+0,!0),a=qb().getInt32(s+4,!0),o=Kb(i,a).slice();return K.__wbindgen_export2(i,a*1,1),o}finally{K.__wbindgen_add_to_stack_pointer(16)}}function Ub(e,t){return Wb(Error(Jb(e,t)))}function Wb(e){gx===hx.length&&hx.push(hx.length+1);let t=gx;return gx=hx[t],hx[t]=e,t}function Gb(e){e<1028||(hx[e]=gx,gx=e)}function Kb(e,t){return e>>>=0,Xb().subarray(e/1,e/1+t)}function qb(){return(fx===null||fx.buffer.detached===!0||fx.buffer.detached===void 0&&fx.buffer!==K.memory.buffer)&&(fx=new DataView(K.memory.buffer)),fx}function Jb(e,t){return e>>>=0,tx(e,t)}function Yb(){return(px===null||px.byteLength===0)&&(px=new Uint32Array(K.memory.buffer)),px}function Xb(){return(mx===null||mx.byteLength===0)&&(mx=new Uint8Array(K.memory.buffer)),mx}function Zb(e){return hx[e]}function Qb(e,t){let n=t(e.length*4,4)>>>0;return Yb().set(e,n/4),bx=e.length,n}function $b(e,t){let n=t(e.length*1,1)>>>0;return Xb().set(e,n/1),bx=e.length,n}function ex(e){let t=Zb(e);return Gb(e),t}function tx(e,t){return yx+=t,yx>=vx&&(_x=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),_x.decode(),yx=t),_x.decode(Xb().subarray(e,e+t))}function nx(e){K=e}async function rx(){return xx||(Sx||=(async()=>{let e=await(await fetch(dx)).arrayBuffer(),{instance:t}=await WebAssembly.instantiate(e,{"./inflate_wasm_bg.js":ux});return xx=t.exports,nx(xx),xx})(),Sx)}async function ix(e,t,n,r){await rx();let i=zb(e,t,n,r),a=new DataView(i.buffer,i.byteOffset,i.byteLength),o=a.getUint32(0,!0),s=4+(o+1)*4,c=Array(o+1);for(let e=0;e<=o;e++)c[e]=a.getUint32(4+e*4,!0);return{data:i.subarray(s),offsets:c}}function ax(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0,!0);if(t===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array};let n=4+t*4,r=n+t*4;return{starts:new Int32Array(e.buffer,e.byteOffset+4,t),ends:new Int32Array(e.buffer,e.byteOffset+n,t),scores:new Float32Array(e.buffer,e.byteOffset+r,t)}}function ox(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0,!0);if(t===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,minScores:new Float32Array,maxScores:new Float32Array};let n=4+t*4,r=n+t*4,i=r+t*4,a=i+t*4;return{starts:new Int32Array(e.buffer,e.byteOffset+4,t),ends:new Int32Array(e.buffer,e.byteOffset+n,t),scores:new Float32Array(e.buffer,e.byteOffset+r,t),minScores:new Float32Array(e.buffer,e.byteOffset+i,t),maxScores:new Float32Array(e.buffer,e.byteOffset+a,t)}}async function sx(e,t,n,r,i,a){return await rx(),ax(Ib(e,t,n,r,i,a))}async function cx(e,t,n,r,i,a,o){return await rx(),ox(Lb(e,t,n,r,i,a,o))}var lx,ux,dx,fx,px,mx,hx,gx,_x,vx,yx,bx,K,xx,Sx,Cx=n((()=>{lx={},lx.d=(e,t)=>{for(var n in t)lx.o(t,n)&&!lx.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},lx.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),lx.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})},ux={},lx.r(ux),lx.d(ux,{__wbg_Error_83742b46f01ce22d:()=>Ub,__wbg_set_wasm:()=>nx,decompress_and_parse_bigwig:()=>Ib,decompress_and_parse_summary:()=>Lb,inflate_raw:()=>Rb,inflate_raw_batch:()=>zb,inflate_raw_unknown_size:()=>Bb,parse_bigwig_block:()=>Vb,parse_summary_block:()=>Hb}),dx=`data:application/wasm;base64,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IGlzIMASIGJ1dCB0aGUgaW5kZXggaXMgwAAScmFuZ2Ugc3RhcnQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAQcmFuZ2UgZW5kIGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAFmRlY29tcHJlc3Npb24gZmFpbGVkOiDAAMACOiDAAC9ydXN0Yy80YTRlZjQ5M2UzYTE0ODhjNmUzMjE1NzAyMzgwODRiMzg5NDhmNmRiL2xpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5ycwAvcnVzdGMvNGE0ZWY0OTNlM2ExNDg4YzZlMzIxNTcwMjM4MDg0YjM4OTQ4ZjZkYi9saWJyYXJ5L2NvcmUvc3JjL2ZtdC9udW0ucnMAL2hvbWUvY2RpZXNoLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMTQvc3JjL2V4dGVybnJlZi5ycwAvcnVzdGMvNGE0ZWY0OTNlM2ExNDg4YzZlMzIxNTcwMjM4MDg0YjM4OTQ4ZjZkYi9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi4xMS9zcmMvZGxtYWxsb2MucnMAL2hvbWUvY2RpZXNoLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbGliZGVmbGF0ZXItMS4yNS4yL3NyYy9saWIucnMAALwCEAAKAAAAbAAAABkAAAC8AhAACgAAAGwAAAAnAAAAvAIQAAoAAABsAAAAOQAAALwCEAAKAAAAbAAAAEsAAAC8AhAACgAAAGAAAAAZAAAAvAIQAAoAAABgAAAAJwAAALwCEAAKAAAAYAAAADkAAAC8AhAACgAAAGAAAABLAAAAvAIQAAoAAABkAAAAGQAAALwCEAAKAAAAZAAAACcAAAC8AhAACgAAAGQAAAA5AAAAvAIQAAoAAABkAAAASwAAALwCEAAKAAAAQAAAAAsAAAC8AhAACgAAAFgAAAALAAAAvAIQAAoAAABJAAAAEwAAALwCEAAKAAAAUwAAACsAAAC8AhAACgAAAE0AAAAPAAAAvAIQAAoAAABKAAAAHAAAALwCEAAKAAAAOQAAAB0AAABkZWNvbXByZXNzaW9uIG91dHB1dCB0b28gbGFyZ2UAALwCEAAKAAAAJgEAABMAAAC8AhAACgAAAC0BAAAdAAAAvAIQAAoAAAAnAQAAHAAAALwCEAAKAAAAoAEAABMAAAC8AhAACgAAAKcBAAAdAAAAvAIQAAoAAAChAQAAHAAAAEJhZERhdGFJbnN1ZmZpY2llbnRTcGFjZYMBEABnAAAAfwAAABEAAACDARAAZwAAAIwAAAARAAAAbGliZGVmbGF0ZV9kZWZsYXRlX2RlY29tcHJlc3MgcmV0dXJuZWQgYW4gdW5rbm93biBlcnJvciB0eXBlOiB0aGlzIGlzIGFuIGludGVybmFsIGJ1ZyB0aGF0ICoqbXVzdCoqIGJlIGZpeGVkZwIQAF8AAAANAQAAFQAAAGxpYmRlZmxhdGVfYWxsb2NfZGVjb21wcmVzc29yIHJldHVybmVkIE5VTEw6IG91dCBvZiBtZW1vcnkAAGcCEABfAAAAnQAAABEAAAAMAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAQERIACAcJBgoFCwQMAw0CDgEPAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAAAAAAAABAAAAAgAAAAMAAAAEAAEABQABAAcAAgAJAAIADQADABEAAwAZAAQAIQAEADEABQBBAAUAYQAGAIEABgDBAAcAAQEHAIEBCAABAggAAQMJAAEECQABBgoAAQgKAAEMCwABEAsAARgMAAEgDAABMA0AAUANAAFgDQABYA0AAWAAAACAAAABgAAAAoAAAAOAAAAEgAAABYAAAAaAAAAHgAAACIAAAAmAAAAKgAAAC4AAAAyAAAANgAAADoAAAA+AAAAQgAAAEYAAABKAAAATgAAAFIAAABWAAAAWgAAAF4AAABiAAAAZgAAAGoAAABuAAAAcgAAAHYAAAB6AAAAfgAAAIIAAACGAAAAigAAAI4AAACSAAAAlgAAAJoAAACeAAAAogAAAKYAAACqAAAArgAAALIAAAC2AAAAugAAAL4AAADCAAAAxgAAAMoAAADOAAAA0gAAANYAAADaAAAA3gAAAOIAAADmAAAA6gAAAO4AAADyAAAA9gAAAPoAAAD+AAABAgAAAQYAAAEKAAABDgAAARIAAAEWAAABGgAAAR4AAAEiAAABJgAAASoAAAEuAAABMgAAATYAAAE6AAABPgAAAUIAAAFGAAABSgAAAU4AAAFSAAABVgAAAVoAAAFeAAABYgAAAWYAAAFqAAABbgAAAXIAAAF2AAABegAAAX4AAAGCAAABhgAAAYoAAAGOAAABkgAAAZYAAAGaAAABngAAAaIAAAGmAAABqgAAAa4AAAGyAAABtgAAAboAAAG+AAABwgAAAcYAAAHKAAABzgAAAdIAAAHWAAAB2gAAAd4AAAHiAAAB5gAAAeoAAAHuAAAB8gAAAfYAAAH6AAAB/gAAAgIAAAIGAAACCgAAAg4AAAISAAACFgAAAhoAAAIeAAACIgAAAiYAAAIqAAACLgAAAjIAAAI2AAACOgAAAj4AAAJCAAACRgAAAkoAAAJOAAACUgAAAlYAAAJaAAACXgAAAmIAAAJmAAACagAAAm4AAAJyAAACdgAAAnoAAAJ+AAACggAAAoYAAAKKAAACjgAAApIAAAKWAAACmgAAAp4AAAKiAAACpgAAAqoAAAKuAAACsgAAArYAAAK6AAACvgAAAsIAAALGAAACygAAAs4AAALSAAAC1gAAAtoAAALeAAAC4gAAAuYAAALqAAAC7gAAAvIAAAL2AAAC+gAAAv4AAAMCAAADBgAAAwoAAAMOAAADEgAAAxYAAAMaAAADHgAAAyIAAAMmAAADKgAAAy4AAAMyAAADNgAAAzoAAAM+AAADQgAAA0YAAANKAAADTgAAA1IAAANWAAADWgAAA14AAANiAAADZgAAA2oAAANuAAADcgAAA3YAAAN6AAADfgAAA4IAAAOGAAADigAAA44AAAOSAAADlgAAA5oAAAOeAAADogAAA6YAAAOqAAADrgAAA7IAAAO2AAADugAAA74AAAPCAAADxgAAA8oAAAPOAAAD0gAAA9YAAAPaAAAD3gAAA+IAAAPmAAAD6gAAA+4AAAPyAAAD9gAAA/oAAAP+AAKAAAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAQALAAEADQABAA8AAQARAAIAEwACABcAAgAbAAIAHwADACMAAwArAAMAMwADADsABABDAAQAUwAEAGMABABzAAUAgwAFAKMABQDDAAUA4wAAAAIBAAACAQAAAgFtXcvWLFDrY3hBpldxG4u5I8o7SqZ3fJNCY0mvl2+yhAAAAAAIAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAADAAAAAQAAAAKAAAACwAAAAwAAAAAAAAACAAAAAQAAAANAAAADgAAAA8AAAAQAAAAEQAAABAAAAAEAAAAEgAAABMAAAAUAAAACAAAAAAAAAAIAAAABAAAABUAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAAA8AhAAKgAAALEEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAPAIQACoAAAC3BAAADQAAAAkAAAAMAAAABAAAABYAAABFcnJvcgAAABcAAAAMAAAABAAAABgAAAAZAAAAGgAAAAAAAAAAAAAAAQAAABsAAABhIGZvcm1hdHRpbmcgdHJhaXQgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3Igd2hlbiB0aGUgdW5kZXJseWluZyBzdHJlYW0gZGlkIG5vdAAA7gAQAEgAAACKAgAADgAAAGNhcGFjaXR5IG92ZXJmbG93AAAA6wEQAFAAAAAcAAAABQAAADAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5NwEQAEsAAABXAgAABQAAAFJlZkNlbGwgYWxyZWFkeSBib3Jyb3dlZABB2JvAAAsEBAAAAAApBG5hbWUBIgFjH19fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIAPAlwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQIGd2FscnVzBjAuMjUuMgx3YXNtLWJpbmRnZW4HMC4yLjExNA==`,fx=null,px=null,mx=null,hx=Array(1024).fill(void 0),hx.push(void 0,null,!0,!1),gx=hx.length,_x=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),_x.decode(),vx=2146435072,yx=0,bx=0,xx=null,Sx=null}));async function wx(e,t,n){let r=new Uint32Array(t.length),i=new Uint32Array(t.length);for(let e=0;e<t.length;e++){let n=t[e];r[e]=n.offset,i[e]=n.length}return ix(e,r,i,n)}async function Tx(e,t,n,r,i){let a=new Uint32Array(t.length),o=new Uint32Array(t.length);for(let e=0;e<t.length;e++){let n=t[e];a[e]=n.offset,o[e]=n.length}return sx(e,a,o,n,r,i)}async function Ex(e,t,n,r,i,a){let o=new Uint32Array(t.length),s=new Uint32Array(t.length);for(let e=0;e<t.length;e++){let n=t[e];o[e]=n.offset,s[e]=n.length}return cx(e,o,s,n,r,i,a)}var Dx=n((()=>{Cx()}));function Ox(e){e.sort((e,t)=>e.offset-t.offset);let t=[],n,r;for(let i of e)n&&r&&i.offset-r<=2e3?(n.length=i.offset+i.length-n.offset,n.blocks.push(i),r=i.offset+i.length):(n={blocks:[i],length:i.length,offset:i.offset},t.push(n),r=i.offset+i.length);return t}var kx=n((()=>{}));function Ax(e,t,n,r){return e<r&&t>=n}function jx(e,t,n){let r=[],i=t,a=new DataView(e.buffer,e.byteOffset,e.length);for(;i<e.byteLength;){let e=a.getUint32(i,!0);i+=4;let t=a.getUint32(i,!0);i+=4;let o=a.getUint32(i,!0);i+=4;let s=a.getUint32(i,!0);i+=4;let c=a.getFloat32(i,!0);i+=4;let l=a.getFloat32(i,!0);i+=4;let u=a.getFloat32(i,!0);i+=8,(!n||e===n.chrId&&Ax(t,o,n.start,n.end))&&r.push({start:t,end:o,maxScore:l,minScore:c,summary:!0,score:u/(s||1)})}return r}function Mx(e,t,n,r){let i=[],a=t,o=new DataView(e.buffer,e.byteOffset,e.length);for(;a<e.byteLength;){let t=a,s=o.getUint32(a,!0);a+=4;let c=o.getInt32(a,!0);a+=4;let l=o.getInt32(a,!0);a+=4;let u=a;for(;u<e.length&&e[u]!==0;u++);let d=e.subarray(a,u),f=Fx.decode(d);a=u+1,(!r||s===r.chrId&&Ax(c,l,r.start,r.end))&&i.push({start:c,end:l,rest:f,uniqueId:`bb-${n+t}`})}return i}function Nx(e,t,n){let r=e.subarray(t),i=new DataView(r.buffer,r.byteOffset,r.length),a=i.getInt32(4,!0),o=i.getUint32(12,!0),s=i.getUint32(16,!0),c=i.getUint8(20),l=i.getUint16(22,!0),u=24,d=[];switch(c){case 1:for(let e=0;e<l;e++){let e=i.getInt32(u,!0);u+=4;let t=i.getInt32(u,!0);u+=4;let r=i.getFloat32(u,!0);u+=4,(!n||Ax(e,t,n.start,n.end))&&d.push({start:e,end:t,score:r})}break;case 2:for(let e=0;e<l;e++){let e=i.getInt32(u,!0);u+=4;let t=i.getFloat32(u,!0);u+=4;let r=e+s;(!n||Ax(e,r,n.start,n.end))&&d.push({score:t,start:e,end:r})}break;case 3:for(let e=0;e<l;e++){let t=i.getFloat32(u,!0);u+=4;let r=a+e*o,c=r+s;(!n||Ax(r,c,n.start,n.end))&&d.push({score:t,start:r,end:c})}break}return d}function Px(e,t,n){let r=new DataView(e.buffer,e.byteOffset+t,e.length-t),i=r.getInt32(4,!0),a=r.getUint32(12,!0),o=r.getUint32(16,!0),s=r.getUint8(20),c=r.getUint16(22,!0),l=new Int32Array(c),u=new Int32Array(c),d=new Float32Array(c);if(!n){switch(s){case 1:{let e=24;for(let t=0;t<c;t++)l[t]=r.getInt32(e,!0),u[t]=r.getInt32(e+4,!0),d[t]=r.getFloat32(e+8,!0),e+=12;return{starts:l,ends:u,scores:d}}case 2:{let e=24;for(let t=0;t<c;t++){let n=r.getInt32(e,!0);l[t]=n,u[t]=n+o,d[t]=r.getFloat32(e+4,!0),e+=8}return{starts:l,ends:u,scores:d}}case 3:{let e=24;for(let t=0;t<c;t++){let n=i+t*a;l[t]=n,u[t]=n+o,d[t]=r.getFloat32(e,!0),e+=4}return{starts:l,ends:u,scores:d}}}return{starts:l,ends:u,scores:d}}let f=n.start,p=n.end,m=0;switch(s){case 1:{let e=24;for(let t=0;t<c;t++){let t=r.getInt32(e,!0),n=r.getInt32(e+4,!0);t<p&&n>=f&&(l[m]=t,u[m]=n,d[m]=r.getFloat32(e+8,!0),m++),e+=12}break}case 2:{let e=24;for(let t=0;t<c;t++){let t=r.getInt32(e,!0),n=t+o;t<p&&n>=f&&(l[m]=t,u[m]=n,d[m]=r.getFloat32(e+4,!0),m++),e+=8}break}case 3:{let e=24;for(let t=0;t<c;t++){let n=i+t*a,s=n+o;n<p&&s>=f&&(l[m]=n,u[m]=s,d[m]=r.getFloat32(e,!0),m++),e+=4}break}}return m<c?{starts:l.subarray(0,m),ends:u.subarray(0,m),scores:d.subarray(0,m)}:{starts:l,ends:u,scores:d}}var Fx,Ix,Lx,Rx=n((()=>{_b(),Nb(),Fb(),Dx(),kx(),Fx=new TextDecoder(`utf8`),Ix=610839776,Lx=class{bbi;refsByName;rTreeOffset;uncompressBufSize;blockType;rTreePromise;featureCache=new hb({cache:new Mb({maxSize:1e3}),fill:async({length:e,offset:t},n)=>this.bbi.read(e,t,{signal:n})});constructor(e,t,n,r,i){if(this.bbi=e,this.refsByName=t,this.rTreeOffset=n,this.uncompressBufSize=r,this.blockType=i,!(n>=0))throw Error(`invalid rTreeOffset!`)}async _collectBlocks(e,t,n,r){let i=this.refsByName[e];if(i===void 0)return;this.rTreePromise||=this.bbi.read(48,this.rTreeOffset,r);let a=await this.rTreePromise,o=new DataView(a.buffer,a.byteOffset,a.length),s=o.getUint32(0,!0);if(s!==Ix)throw Error(`invalid cirTree magic: 0x${s.toString(16)} (expected 0x${Ix.toString(16)}) at offset ${this.rTreeOffset}, file may be corrupt or unsupported`);let c=4+o.getUint32(4,!0)*32,l=(e,r,a,o)=>(e<i||e===i&&r<=n)&&(a>i||a===i&&o>=t),u=[],d=[this.rTreeOffset+48];for(;d.length>0;){let e=Pb(d.map(e=>({min:e,max:e+c}))),t=[];for(let{min:n,max:i}of e){let e=i-n,a=n,o=await this.featureCache.get(`${e}_${a}`,{length:e,offset:a},r?.signal);for(let e of d)if(n<=e&&e<=i){let n=o.subarray(e-a),r=new DataView(n.buffer,n.byteOffset,n.length),i=r.getUint8(0),s=r.getUint16(2,!0),c=4;if(i===1)for(let e=0;e<s;e++){let e=r.getUint32(c,!0),t=r.getUint32(c+4,!0),n=r.getUint32(c+8,!0),i=r.getUint32(c+12,!0),a=Number(r.getBigUint64(c+16,!0)),o=Number(r.getBigUint64(c+24,!0));c+=32,l(e,t,n,i)&&u.push({offset:a,length:o})}else if(i===0)for(let e=0;e<s;e++){let e=r.getUint32(c,!0),n=r.getUint32(c+4,!0),i=r.getUint32(c+8,!0),a=r.getUint32(c+12,!0),o=Number(r.getBigUint64(c+16,!0));c+=24,l(e,n,i,a)&&t.push(o)}}}d=t}return{blocks:u,chrId:i}}async readWigData(e,t,n,r){let i=await this._collectBlocks(e,t,n,r);if(!i)return[];let{blocks:a,chrId:o}=i;return this.readFeatures(a,{...r,request:{chrId:o,start:t,end:n}})}async readWigDataAsArrays(e,t,n,r){let i=await this._collectBlocks(e,t,n,r),a=i?.blocks??[],o=i?{chrId:i.chrId,start:t,end:n}:void 0,s={...r,request:o};return this.blockType===`summary`?this._readSummaryFeaturesAsArrays(a,s):this._readBigWigFeaturesAsArrays(a,s)}async readFeatures(e,t={}){let{blockType:n,uncompressBufSize:r}=this,{signal:i,request:a}=t,o=Ox(e),s=[];for(let e of o){let t=await this.bbi.read(e.length,e.offset,{signal:i}),o=e.offset,c=e.blocks,l,u;if(r>0){let e=[];for(let t of c)e.push({offset:t.offset-o,length:t.length});let n=await wx(t,e,r);l=n.data,u=n.offsets}else{l=t,u=[];for(let e of c)u.push(e.offset-o);u.push(t.length)}for(let e=0;e<c.length;e++){let t=u[e],r=u[e+1],i=l.subarray(t,r),o;switch(n){case`summary`:o=jx(i,0,a);break;case`bigwig`:o=Nx(i,0,a);break;case`bigbed`:o=Mx(i,0,c[e].offset*256,a);break;default:o=[],console.warn(`Don't know what to do with ${n}`)}for(let e of o)s.push(e)}}return s}async _readBigWigFeaturesAsArrays(e,t={}){let{uncompressBufSize:n}=this,{signal:r,request:i}=t,a=Ox(e),o=[],s=[],c=[],l=0;for(let e of a){let{length:t,offset:a}=e,u=await this.bbi.read(t,a,{signal:r}),d=e.blocks.map(t=>({offset:t.offset-e.offset,length:t.length}));if(n>0){let e=await Tx(u,d,n,i?.start??0,i?.end??0);e.starts.length>0&&(o.push(e.starts),s.push(e.ends),c.push(e.scores),l+=e.starts.length)}else for(let e of d){let t=Px(u.subarray(e.offset,e.offset+e.length),0,i);t.starts.length>0&&(o.push(t.starts),s.push(t.ends),c.push(t.scores),l+=t.starts.length)}}if(o.length===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,isSummary:!1};if(o.length===1)return{starts:o[0],ends:s[0],scores:c[0],isSummary:!1};let u=new Int32Array(l),d=new Int32Array(l),f=new Float32Array(l),p=0;for(let e=0;e<o.length;e++)u.set(o[e],p),d.set(s[e],p),f.set(c[e],p),p+=o[e].length;return{starts:u,ends:d,scores:f,isSummary:!1}}async _readSummaryFeaturesAsArrays(e,t={}){let{uncompressBufSize:n}=this,{signal:r,request:i}=t,a=Ox(e),o=[],s=[],c=[],l=[],u=[],d=0;for(let e of a){let{length:t,offset:a}=e,f=await this.bbi.read(t,a,{signal:r}),p=e.blocks.map(t=>({offset:t.offset-e.offset,length:t.length}));if(n>0){let e=await Ex(f,p,n,i?.chrId??0,i?.start??0,i?.end??0);e.starts.length>0&&(o.push(e.starts),s.push(e.ends),c.push(e.scores),l.push(e.minScores),u.push(e.maxScores),d+=e.starts.length)}else for(let e of p){let t=jx(f.subarray(e.offset,e.offset+e.length),0,i);if(t.length>0){let e=new Int32Array(t.length),n=new Int32Array(t.length),r=new Float32Array(t.length),i=new Float32Array(t.length),a=new Float32Array(t.length);for(let o=0;o<t.length;o++){let s=t[o];e[o]=s.start,n[o]=s.end,r[o]=s.score??0,i[o]=s.minScore??0,a[o]=s.maxScore??0}o.push(e),s.push(n),c.push(r),l.push(i),u.push(a),d+=t.length}}}if(o.length===0)return{starts:new Int32Array,ends:new Int32Array,scores:new Float32Array,minScores:new Float32Array,maxScores:new Float32Array,isSummary:!0};if(o.length===1)return{starts:o[0],ends:s[0],scores:c[0],minScores:l[0],maxScores:u[0],isSummary:!0};let f=new Int32Array(d),p=new Int32Array(d),m=new Float32Array(d),h=new Float32Array(d),g=new Float32Array(d),_=0;for(let e=0;e<o.length;e++)f.set(o[e],_),p.set(s[e],_),m.set(c[e],_),h.set(l[e],_),g.set(u[e],_),_+=o[e].length;return{starts:f,ends:p,scores:m,minScores:h,maxScores:g,isSummary:!0}}}}));function zx(e){return new DataView(e.buffer,e.byteOffset,e.length)}var Bx,Vx,Hx,Ux,Wx=n((()=>{kg(),Rx(),Bx=-2003829722,Vx=-2021002517,Hx=new TextDecoder(`utf8`),Ux=class{bbi;headerP;renameRefSeqs;getHeader(e){return this.headerP||=this._getHeader(e).catch(e=>{throw this.headerP=void 0,e}),this.headerP}constructor(e){let{filehandle:t,renameRefSeqs:n=e=>e,path:r,url:i}=e;if(this.renameRefSeqs=n,t)this.bbi=t;else if(i)this.bbi=new Tg(i);else if(r)this.bbi=new Og(r);else throw Error(`no file given`)}async _getHeader(e){let t=await this._getMainHeader(e),n=await this._readChromosomeTree(t,e);return{...t,...n}}async _getMainHeader(e,t=2e3){let n=await this.bbi.read(t,0,e),r=zx(n),i=0,a=r.getInt32(i,!0);if(i+=4,a!==Bx&&a!==Vx)throw Error(`not a BigWig/BigBed file`);let o=r.getUint16(i,!0);i+=2;let s=r.getUint16(i,!0);i+=2;let c=Number(r.getBigUint64(i,!0));i+=8;let l=Number(r.getBigUint64(i,!0));i+=8;let u=Number(r.getBigUint64(i,!0));i+=8;let d=r.getUint16(i,!0);i+=2;let f=r.getUint16(i,!0);i+=2;let p=Number(r.getBigUint64(i,!0));i+=8;let m=Number(r.getBigUint64(i,!0));i+=8;let h=r.getUint32(i,!0);i+=4;let g=Number(r.getBigUint64(i,!0));i+=8;let _=[];for(let e=0;e<s;e++){let e=r.getUint32(i,!0);i+=4;let t=r.getUint32(i,!0);i+=4;let n=Number(r.getBigUint64(i,!0));i+=8;let a=Number(r.getBigUint64(i,!0));i+=8,_.push({reductionLevel:e,reserved:t,dataOffset:n,indexOffset:a})}let v=a===Vx?`bigbed`:`bigwig`;if(p>t||m>t-40)return this._getMainHeader(e,t*2);let y;if(m){let e=n.subarray(m),t=0,r=zx(e),i=Number(r.getBigUint64(t,!0));t+=8;let a=r.getFloat64(t,!0);t+=8;let o=r.getFloat64(t,!0);t+=8;let s=r.getFloat64(t,!0);t+=8,y={scoreMin:a,scoreMax:o,scoreSum:s,scoreSumSquares:r.getFloat64(t,!0),basesCovered:i}}else throw Error(`no stats`);return{zoomLevels:_,magic:a,extHeaderOffset:g,numZoomLevels:s,fieldCount:d,totalSummary:y,definedFieldCount:f,uncompressBufSize:h,asOffset:p,chromosomeTreeOffset:c,totalSummaryOffset:m,unzoomedDataOffset:l,unzoomedIndexOffset:u,fileType:v,version:o,autoSql:p?Hx.decode(n.subarray(p,n.indexOf(0,p))):``}}async _readChromosomeTree(e,t){let n=[],r={},i=e.chromosomeTreeOffset,a=zx(await this.bbi.read(32,i,t)),o=a.getUint32(8,!0),s=a.getUint32(12,!0),c=async e=>{let t=zx(await this.bbi.read(4,e)),i=t.getUint8(0),a=t.getUint16(2,!0);if(i){let t=await this.bbi.read(a*(o+s),e+4),i=zx(t),c=0;for(let e=0;e<a;e++){let e=t.indexOf(0,c),a=e!==-1&&e<c+o?e:c+o,s=Hx.decode(t.subarray(c,a));c+=o;let l=i.getUint32(c,!0);c+=4;let u=i.getUint32(c,!0);c+=4,r[this.renameRefSeqs(s)]=l,n[l]={name:s,id:l,length:u}}}else{let t=zx(await this.bbi.read(a*(o+8),e+4)),n=[],r=0;for(let e=0;e<a;e++){r+=o;let e=Number(t.getBigUint64(r,!0));r+=8,n.push(c(e))}await Promise.all(n)}};return await c(i+32),{refsByName:r,refsByNumber:n}}viewCache=new Map;getOrCreateBlockView(e,t,n,r){let i=`${t}_${r}`,a=this.viewCache.get(i);return a||(a=new Lx(this.bbi,e,t,n,r),this.viewCache.set(i,a)),a}async getUnzoomedView(e){let{unzoomedIndexOffset:t,refsByName:n,uncompressBufSize:r,fileType:i}=await this.getHeader(e);return this.getOrCreateBlockView(n,t,r,i)}async _getView(e){let{basesPerSpan:t,scale:n}=e||{},r=t?1/t:n??1;return this.getView(r,e)}async getFeatures(e,t,n,r){return(await this._getView(r)).readWigData(this.renameRefSeqs(e),t,n,r)}async getFeaturesAsArrays(e,t,n,r){return(await this._getView(r)).readWigDataAsArrays(this.renameRefSeqs(e),t,n,r)}}})),Gx,Kx=n((()=>{Wx(),Gx=class extends Ux{async getView(e,t){let{zoomLevels:n,refsByName:r,uncompressBufSize:i}=await this.getHeader(t),a=1/e,o=n.length-1;for(let e=o;e>=0;--e){let t=n[e];if(t&&t.reductionLevel<=2*a)return this.getOrCreateBlockView(r,t.indexOffset,i,`summary`)}return this.getUnzoomedView(t)}}}));function qx(e,t){if(t<0)return;let n=0;for(let r=0;r<t;r++){if(n=e.indexOf(` `,n),n===-1)return;n++}let r=e.indexOf(` `,n);return r===-1?e.slice(n):e.slice(n,r)}function Jx(e,t,n){let r=e.indexOf(0,t),i=r!==-1&&r<t+n?r:t+n;return Xx.decode(e.subarray(t,i))}async function Yx(e,t,n,r,i,a,o,s){let c=4+n*(r+i),l=await e.read(c,t,s),u=new DataView(l.buffer,l.byteOffset,l.length),d=u.getInt8(0),f=u.getInt16(2,!0),p=4;if(d===0){let t=[];for(let e=0;e<f;e++){let e=Jx(l,p,r);p+=r;let n=Number(u.getBigUint64(p,!0));p+=8,t.push({key:e,offset:n})}let c=0,d=t.length-1,m=t.length-1;for(;c<=d;){let e=Math.floor((c+d)/2);a.localeCompare(t[e].key)<0?(m=e-1,d=e-1):c=e+1}return Yx(e,m>=0?t[m].offset:t[0].offset,n,r,i,a,o,s)}else if(d===1){let e=[];for(let t=0;t<f;t++){let t=Jx(l,p,r);p+=r;let n=Number(u.getBigUint64(p,!0));p+=8;let i=u.getUint32(p,!0);p+=4,p+=4,e.push({key:t,offset:n,length:i})}let t=0,n=e.length-1;for(;t<=n;){let r=Math.floor((t+n)/2),i=a.localeCompare(e[r].key);if(i===0)return{...e[r],field:o};i<0?n=r-1:t=r+1}return}}var Xx,Zx,Qx=n((()=>{_b(),Nb(),Wx(),Xx=new TextDecoder(`utf8`),Zx=class extends Ux{readIndicesCache=new hb({cache:new Mb({maxSize:1}),fill:(e,t)=>this._readIndices({...e,signal:t})});readIndices(e={}){let{signal:t,...n}=e;return this.readIndicesCache.get(JSON.stringify(n),e,t)}async getView(e,t){return this.getUnzoomedView(t)}async _readIndices(e){let{extHeaderOffset:t}=await this.getHeader(e),n=await this.bbi.read(64,t),r=new DataView(n.buffer,n.byteOffset,n.length),i=r.getUint16(2,!0),a=Number(r.getBigUint64(4,!0));if(i===0)return[];let o=20*i,s=await this.bbi.read(o,a),c=[];for(let e=0;e<i;e+=1){let t=s.subarray(e*20),n=new DataView(t.buffer,t.byteOffset,t.length),r=n.getInt16(0,!0),i=n.getInt16(2,!0),a=Number(n.getBigUint64(4,!0)),o=n.getInt16(16,!0);c.push({type:r,fieldcount:i,offset:a,field:o})}return c}async searchExtraIndexBlocks(e,t={}){let n=await this.readIndices(t);if(n.length===0)return[];let r=n.map(async n=>{let{offset:r,field:i}=n,a=await this.bbi.read(32,r,t),o=new DataView(a.buffer,a.byteOffset,a.length),s=o.getInt32(4,!0),c=o.getInt32(8,!0),l=o.getInt32(12,!0);return Yx(this.bbi,r+32,s,c,l,e,i,t)});return(await Promise.all(r)).filter(e=>e!==void 0)}async searchExtraIndex(e,t={}){let n=await this.searchExtraIndexBlocks(e,t);if(n.length===0)return[];let r=await this.getUnzoomedView(t);return(await Promise.all(n.map(async e=>(await r.readFeatures([e],t)).map(t=>({...t,field:e.field}))))).flat().filter(t=>{if(!t.rest)return!1;let n=(t.field||0)-3;return qx(t.rest,n)===e})}}}));async function $x(e,t){let n=await e.getHeader(t),r=[];for(let i of Object.values(n.refsByNumber)){let n=await e.getFeaturesAsArrays(i.name,0,i.length,t);!n.isSummary&&n.starts.length>0&&r.push(n)}return r}var eS=n((()=>{})),tS,nS=n((()=>{tS=class{starts;ends;scores;minScores;maxScores;isSummary;_source;_refName;constructor(e,t,n){this.starts=e.starts,this.ends=e.ends,this.scores=e.scores,this.isSummary=e.isSummary,this.minScores=e.isSummary?e.minScores:void 0,this.maxScores=e.isSummary?e.maxScores:void 0,this._source=t,this._refName=n}get length(){return this.starts.length}get source(){return this._source}get refName(){return this._refName}start(e){return this.starts[e]}end(e){return this.ends[e]}score(e){return this.scores[e]}minScore(e){return this.minScores?.[e]}maxScore(e){return this.maxScores?.[e]}id(e){return`${this._source}:${this._refName}:${this.starts[e]}-${this.ends[e]}`}get(e,t){switch(t){case`start`:return this.starts[e];case`end`:return this.ends[e];case`score`:return this.scores[e];case`refName`:return this._refName;case`source`:return this._source;case`minScore`:return this.minScores?.[e];case`maxScore`:return this.maxScores?.[e];case`summary`:return this.isSummary;default:return}}}})),rS=r({ArrayFeatureView:()=>tS,BigBed:()=>Zx,BigWig:()=>Gx,parseBigWig:()=>$x}),iS=n((()=>{lb(),Kx(),Qx(),eS(),nS()})),aS=class extends bg{#e=[];#t;constructor(e,t){let n={pixelsPerBin:2,channel:`x`,debounce:200,debounceMode:`window`,...e},r=fg(n.channel);if(super(t,r),this.params=_g(t.paramRuntime,n,e=>{e.has(`url`)?this.#n().then(()=>this.reloadLastDomain()):e.has(`pixelsPerBin`)&&this.reloadLastDomain()},e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!this.params.url)throw Error(`No URL provided for BigWigSource`);this.setupDebouncing(this.params),this.#n()}get label(){return`bigWigSource`}#n(){return this.initializedPromise=new Promise((e,t)=>{Promise.all([Promise.resolve().then(()=>(iS(),rS)),Promise.resolve().then(()=>(kg(),Dg))]).then(([{BigWig:n},{RemoteFile:r}])=>{this.#t=new n({filehandle:new r(rh(fg(this.params.url),this.view.getBaseUrl()))}),this.setLoadingStatus(`loading`),this.#t.getHeader().then(t=>{this.#e=t.zoomLevels.map(e=>e.reductionLevel).reverse(),this.#e.push(1),this.setLoadingStatus(`complete`),e()}).catch(e=>{this.load(),this.setLoadingStatus(`error`,`${fg(this.params.url)}: ${e.message}`),t(e)})})}),this.initializedPromise}async onDomainChanged(e){await this.initializedPromise;let t=this.scaleResolution.getAxisLength()||700,n=sS(e,t,this.#e),r=Math.max(n*t,5e3);this.callIfWindowsChanged(e,r,e=>this.loadInterval(e,n))}async loadInterval(e,t){let n=1/2/t/fg(this.params.pixelsPerBin),r=await this.discretizeAndLoad(e,(e,t)=>this.#t.getFeatures(e.chrom,e.startPos,e.endPos,{scale:n,signal:t}).then(t=>t.map(t=>({chrom:e.chrom,start:t.start,end:t.end,score:t.score}))));r&&this.publishData(r)}};function oS(e){return e?.type==`bigwig`}Wm(oS,aS);function sS(e,t,n){let r=(e[1]-e[0])/t;return n.find(e=>e<r)??n.at(-1)}var cS=class extends bg{parser;bbi;parseLine;constructor(e,t){let n={channel:`x`,windowSize:1e6,debounce:200,debounceMode:`window`,...e},r=fg(n.channel);if(super(t,r),this.params=_g(t.paramRuntime,n,e=>{e.has(`url`)?this.#e().then(()=>this.reloadLastDomain()):e.has(`windowSize`)&&this.reloadLastDomain()},e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!this.params.url)throw Error(`No URL provided for BigBedSource`);this.setupDebouncing(this.params),this.#e()}get label(){return`bigBedSource`}#e(){return this.initializedPromise=new Promise((e,t)=>{Promise.all([Promise.resolve().then(()=>(Al(),kl)),Promise.resolve().then(()=>(iS(),rS)),Promise.resolve().then(()=>(kg(),Dg))]).then(([n,{BigBed:r},{RemoteFile:i}])=>{let a=n.default;this.bbi=new r({filehandle:new i(rh(fg(this.params.url),this.view.getBaseUrl()))}),this.setLoadingStatus(`loading`),this.bbi.getHeader().then(async t=>{this.parser=new a({autoSql:t.autoSql});try{let e=lS(this.parser);this.parseLine=(t,n)=>e(t,n.start,n.end,n.rest)}catch{this.parseLine=(e,t)=>this.parser.parseLine(`${e}\t${t.start}\t${t.end}\t${t.rest}`)}this.setLoadingStatus(`complete`),e()}).catch(e=>{this.load(),this.setLoadingStatus(`error`,`${fg(this.params.url)}: ${e.message}`),t(e)})})}),this.initializedPromise}async loadInterval(e){let t=await this.discretizeAndLoad(e,async(e,t)=>this.bbi.getFeatures(e.chrom,e.startPos,e.endPos,{signal:t}).then(t=>t.map(t=>this.parseLine(e.chrom,t))));t&&this.publishData(t)}};function lS(e){let t=e.autoSql.fields.filter(e=>e.type).slice(3),n=0,r=``,i=0,a={};function o(){let e=r.indexOf(` `,n);e<0&&(e=i);let t=r.substring(n,e);return n=e+1,t}function s(){let e=0,t=r.charCodeAt(n),a=1;t===45&&(a=-1,n++,t=r.charCodeAt(n));do{if(t===9){n++;break}e=e*10+t-48,t=r.charCodeAt(++n)}while(n<i);return e*a}let c=t.map(e=>`${JSON.stringify(e.name)}: ${e.isNumeric?`0`:`emptyString`}`),l=Function(`
195
195
  const emptyString = "";
196
196
  return function makeTemplate(chrom, chromStart, chromEnd) {
197
197
  return {
@@ -201,16 +201,17 @@ return groupData;`);return tl.set(t,i),i}function Zc(e,t,n,r,i,a){for(let o=0;o<
201
201
  ${c.join(`,
202
202
  `)}
203
203
  }
204
- };`)(),u=fS(t.map(e=>{let t=e.type,n=JSON.stringify(e.name);if([`ubyte`,`int`,`uint`].includes(t))return`d[${n}] = parseInt();`;if(e.isNumeric)return`d[${n}] = Number(parseString());`;if([`char`,`string`,`lstring`].includes(t))return`d[${n}] = parseString();`;throw Error(`Unsupported type: `+t)}),50).map((e,t)=>Function(`parseInt`,`parseString`,`return function parseFieldChunk${t}(d) {
204
+ };`)(),u=dS(t.map(e=>{let t=e.type,n=JSON.stringify(e.name);if([`ubyte`,`int`,`uint`].includes(t))return`d[${n}] = parseInt();`;if(e.isNumeric)return`d[${n}] = Number(parseString());`;if([`char`,`string`,`lstring`].includes(t))return`d[${n}] = parseString();`;throw Error(`Unsupported type: `+t)}),50).map((e,t)=>Function(`parseInt`,`parseString`,`return function parseFieldChunk${t}(d) {
205
205
  ${e.join(`
206
206
  `)}
207
- }`)(s,o));function d(e){r=e,i=e.length,n=0}function f(e,t,n,r){d(r),a=l(e,t,n);for(let e of u)e(a);return a}return f}function dS(e){return e?.type==`bigbed`}Km(dS,lS);function fS(e,t){return Array.from({length:Math.ceil(e.length/t)},(n,r)=>e.slice(r*t,r*t+t))}var pS,mS=n((()=>{pS=class{constructor(e,t,n,r){this.minv=e,this.maxv=t,this.bin=n,this._fetchedSize=r}toUniqueString(){return`${this.minv.toString()}..${this.maxv.toString()} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(e){return this.minv.compareTo(e.minv)||this.maxv.compareTo(e.maxv)||this.bin-e.bin}fetchedSize(){return this._fetchedSize===void 0?this.maxv.blockPosition+65536-this.minv.blockPosition:this._fetchedSize}}}));function hS(e,t=0){let n=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24;return((e[t+4]|e[t+5]<<8|e[t+6]<<16|e[t+7]<<24)>>>0)*_S+(n>>>0)}var gS,_S,vS=n((()=>{gS=65536,_S=gS*gS}));function yS(e={}){return`aborted`in e?{signal:e}:e}function bS(e,t){let n=e.length;if(n===0)return e;let r;if(t){let i=t.blockPosition,a=t.dataPosition;r=[];for(let t=0;t<n;t++){let n=e[t],o=n.maxv;(o.blockPosition-i||o.dataPosition-a)>0&&r.push(n)}if(r.length===0)return r}else r=e;r.sort((e,t)=>{let n=e.minv.blockPosition-t.minv.blockPosition;return n===0?e.minv.dataPosition-t.minv.dataPosition:n});let i=[],a=r[0];i.push(a);let o=a.minv.blockPosition,s=a.maxv.blockPosition;for(let e=1;e<r.length;e++){let t=r[e],n=t.minv.blockPosition,c=t.maxv.blockPosition;if(n-s<65e3&&c-o<5e6){let e=t.maxv,n=a.maxv;(c-s||e.dataPosition-n.dataPosition)>0&&(a.maxv=e,s=c)}else i.push(t),a=t,o=n,s=c}return i}function xS(e,t){return{lineCount:hS(e,t)}}function SS(e,t){return e?e.compareTo(t)>0?t:e:t}function CS(e,t=e=>e){let n=0,r=0,i=[],a={};for(let o=0;o<e.length;o+=1)if(!e[o]){if(r<o){let s=``;for(let t=r;t<o;t++)s+=String.fromCharCode(e[t]);s=t(s),i[n]=s,a[s]=n}r=o+1,n+=1}return{refNameToId:a,refIdToName:i}}function wS(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function TS(e,t,n){return!!((e&t)!==t||e&n)}function ES(e,t){return t===`*`?e===void 0:`${e}`!=`${t}`}function DS(e){if(!e)return``;let{flagInclude:t=0,flagExclude:n=0,tagFilter:r}=e;return`:f${t}x${n}${r?`:${r.tag}=${r.value??`*`}`:``}`}var OS=n((()=>{vS()})),kS,AS=n((()=>{OS(),kS=class{constructor({filehandle:e,renameRefSeq:t=e=>e}){this.filehandle=e,this.renameRefSeq=t}async estimatedBytesForRegions(e,t){let n=bS((await Promise.all(e.map(e=>this.blocksForRange(e.refId,e.start,e.end,t)))).flat()),r=0;for(let e of n)r+=e.fetchedSize();return r}}}));function jS(e,t=0,n=!1){if(n)throw Error(`big-endian virtual file offsets not implemented`);return new MS(e[t+7]*1099511627776+e[t+6]*4294967296+e[t+5]*16777216+e[t+4]*65536+e[t+3]*256+e[t+2],e[t+1]<<8|e[t])}var MS,NS=n((()=>{MS=class{constructor(e,t){this.blockPosition=e,this.dataPosition=t}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(e){return this.blockPosition-e.blockPosition||this.dataPosition-e.dataPosition}}}));function PS(e,t){return e-e%t}function FS(e,t){return e-e%t+t}function IS(e,t){return--t,[[0,0],[1+(e>>26),1+(t>>26)],[9+(e>>23),9+(t>>23)],[73+(e>>20),73+(t>>20)],[585+(e>>17),585+(t>>17)],[4681+(e>>14),4681+(t>>14)]]}var LS,RS,zS=n((()=>{Fb(),mS(),AS(),OS(),NS(),LS=21578050,RS=class extends kS{async lineCount(e,t){return(await this.parse(t)).indices(e)?.stats?.lineCount||0}async _parse(e){let t=await this.filehandle.readFile(),n=new DataView(t.buffer);if(n.getUint32(0,!0)!==LS)throw Error(`Not a BAI file`);let r=n.getInt32(4,!0),i=((1<<18)-1)/7,a=8,o,s=[];for(let e=0;e<r;e++){s.push(a);let e=n.getInt32(a,!0);a+=4;for(let t=0;t<e;t+=1){let e=n.getUint32(a,!0);if(a+=4,e===i+1)a+=4,a+=32;else if(e>i+1)throw Error(`bai index contains too many bins, please use CSI`);else{let e=n.getInt32(a,!0);a+=4;for(let t=0;t<e;t++)a+=8,a+=8}}let r=n.getInt32(a,!0);a+=4;let c=Array(r);for(let e=0;e<r;e++){let n=jS(t,a);a+=8,o=SS(o,n),c[e]=n}}let c=new Pb({maxSize:5});function l(e){let r=s[e];if(r===void 0)return;let a=n.getInt32(r,!0),c;r+=4;let l={};for(let e=0;e<a;e+=1){let e=n.getUint32(r,!0);if(r+=4,e===i+1)r+=4,c=xS(t,r+16),r+=32;else if(e>i+1)throw Error(`bai index contains too many bins, please use CSI`);else{let i=n.getInt32(r,!0);r+=4;let a=Array(i);for(let n=0;n<i;n++){let i=jS(t,r);r+=8;let s=jS(t,r);r+=8,o=SS(o,i),a[n]=new pS(i,s,e)}l[e]=a}}let u=n.getInt32(r,!0);r+=4;let d=Array(u);for(let e=0;e<u;e++){let n=jS(t,r);r+=8,o=SS(o,n),d[e]=n}return{binIndex:l,linearIndex:d,stats:c}}return{bai:!0,firstDataLine:o,maxBlockSize:65536,indices:e=>{if(!c.has(e)){let t=l(e);return t&&c.set(e,t),t}return c.get(e)},refCount:r}}async indexCov(e,t,n,r){let i=16384,a=t!==void 0,o=(await this.parse(r)).indices(e);if(!o)return[];let{linearIndex:s,stats:c}=o;if(s.length===0)return[];let l=n===void 0?(s.length-1)*i:FS(n,i),u=t===void 0?0:PS(t,i),d=a?Array((l-u)/i):Array(s.length-1),f=s[s.length-1].blockPosition;if(l>(s.length-1)*i)throw Error(`query outside of range of linear index`);let p=s[u/i].blockPosition;for(let e=u/i,t=0;e<l/i;e++,t++)d[t]={score:s[e+1].blockPosition-p,start:e*i,end:e*i+i},p=s[e+1].blockPosition;return d.map(e=>({...e,score:e.score*(c?.lineCount||0)/f}))}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=await this.parse(r);if(!i)return[];let a=i.indices(e);if(!a)return[];let o=IS(t,n),s=[],{binIndex:c}=a;for(let[e,t]of o)for(let n=e;n<=t;n++){let e=c[n];if(e)for(let t=0,n=e.length;t<n;t++)s.push(e[t])}let{linearIndex:l}=a,u=l.length,d=l[Math.min(t>>14,u-1)];return bS(s,d)}async parse(e={}){return this.setupP||=this._parse(e).catch(e=>{throw this.setupP=void 0,e}),this.setupP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices(e)?.binIndex}}})),BS,VS,HS=n((()=>{BS=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],typeof Int32Array<`u`&&(BS=new Int32Array(BS)),VS=(e,t)=>{let n=t===0?0:~~t^-1;for(let t=0;t<e.length;t++)n=BS[(n^e[t])&255]^n>>>8;return n^-1}}));function US(e,t){return e*2**t}function WS(e,t){return Math.floor(e/2**t)}var GS,KS,qS,JS=n((()=>{Jy(),Fb(),mS(),AS(),OS(),NS(),GS=21582659,KS=38359875,qS=class extends kS{constructor(){super(...arguments),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(e,t){return(await this.parse(t)).indices(e)?.stats?.lineCount||0}async indexCov(){return[]}parseAuxData(e,t){let n=new DataView(e.buffer),r=n.getUint32(t,!0),i=r&65536?`zero-based-half-open`:`1-based-closed`,a={0:`generic`,1:`SAM`,2:`VCF`}[r&15];if(!a)throw Error(`invalid Tabix preset format flags ${r}`);let o={ref:n.getInt32(t+4,!0),start:n.getInt32(t+8,!0),end:n.getInt32(t+12,!0)},s=n.getInt32(t+16,!0),c=s?String.fromCharCode(s):``,l=n.getInt32(t+20,!0),u=n.getInt32(t+24,!0);return{columnNumbers:o,coordinateType:i,metaValue:s,metaChar:c,skipLines:l,format:a,formatFlags:r,...CS(e.subarray(t+28,t+28+u),this.renameRefSeq)}}async _parse(e){let t=await By(await this.filehandle.readFile(e)),n=new DataView(t.buffer),r,i=n.getUint32(0,!0);if(i===GS)r=1;else if(i===KS)r=2;else throw Error(`Not a CSI file ${i}`);this.minShift=n.getInt32(4,!0),this.depth=n.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;let a=this.maxBinNumber,o=n.getInt32(12,!0),s=o>=30?this.parseAuxData(t,16):void 0,c=n.getInt32(16+o,!0),l=16+o+4,u,d=[];for(let e=0;e<c;e++){d.push(l);let e=n.getInt32(l,!0);l+=4;for(let r=0;r<e;r++){let e=n.getUint32(l,!0);if(l+=4,e>this.maxBinNumber)l+=44;else{l+=8;let e=n.getInt32(l,!0);l+=4;for(let n=0;n<e;n+=1){let e=jS(t,l);l+=8,l+=8,u=SS(u,e)}}}}let f=new Pb({maxSize:5});function p(e){let r=d[e];if(r===void 0)return;let i=n.getInt32(r,!0);r+=4;let o={},s;for(let e=0;e<i;e++){let e=n.getUint32(r,!0);if(r+=4,e>a)s=xS(t,r+28),r+=44;else{u=SS(u,jS(t,r)),r+=8;let i=n.getInt32(r,!0);r+=4;let a=Array(i);for(let n=0;n<i;n+=1){let i=jS(t,r);r+=8;let o=jS(t,r);r+=8,a[n]=new pS(i,o,e)}o[e]=a}}return{binIndex:o,stats:s}}return{csiVersion:r,firstDataLine:u,indices:e=>{if(!f.has(e)){let t=p(e);return t&&f.set(e,t),t}return f.get(e)},refCount:c,csi:!0,maxBlockSize:65536,...s}}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=(await this.parse(r)).indices(e);if(!i)return[];let a=this.reg2bins(t,n);if(a.length===0)return[];let o=[],{binIndex:s}=i;for(let[e,t]of a)for(let n=e;n<=t;n++){let e=s[n];if(e)for(let t=0,n=e.length;t<n;t++)o.push(e[t])}return bS(o,new MS(0,0))}reg2bins(e,t){--e,e<1&&(e=1),t>2**50&&(t=2**34),--t;let n=0,r=0,i=this.minShift+this.depth*3,a=[];for(;n<=this.depth;i-=3,r+=US(1,n*3),n+=1){let n=r+WS(e,i),o=r+WS(t,i);if(o-n+a.length>this.maxBinNumber)throw Error(`query ${e}-${t} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);a.push([n,o])}return a}async parse(e={}){return this.setupP||=this._parse(e).catch(e=>{throw this.setupP=void 0,e}),this.setupP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices(e)?.binIndex}}})),YS,XS=n((()=>{YS=class{read(){throw Error(`never called`)}stat(){throw Error(`never called`)}readFile(){throw Error(`never called`)}close(){throw Error(`never called`)}}})),ZS=n((()=>{})),QS,$S=n((()=>{QS={BAM_FPAIRED:1,BAM_FPROPER_PAIR:2,BAM_FUNMAP:4,BAM_FMUNMAP:8,BAM_FREVERSE:16,BAM_FMREVERSE:32,BAM_FREAD1:64,BAM_FREAD2:128,BAM_FSECONDARY:256,BAM_FQCFAIL:512,BAM_FDUP:1024,BAM_FSUPPLEMENTARY:2048}})),eC,tC,nC,rC,iC,aC=n((()=>{ZS(),$S(),eC=`=ACMGRSVTWYHKDBN`.split(``),tC=`F F .F R .R F .R R .F2F1.F2R1.R2F1.R2R1.F1F2.F1R2.R1F2.R1R2.F2F1.F2R1.R2F1.R2R1.F F .R F .F R .R R .F1F2.R1F2.F1R2.R1R2.F2F1.R2F1.F2R1.R2R1.F1F2.R1F2.F1R2.R1R2`.split(`.`),nC=[77,73,68,78,83,72,80,61,88,63,63,63,63,63,63,63],rC=461,iC=class{constructor(e){this.bytes=e.bytes,this.fileOffset=e.fileOffset,this._dataView=new DataView(this.bytes.byteArray.buffer)}get byteArray(){return this.bytes.byteArray}get flags(){return this._cachedFlags===void 0&&(this._cachedFlags=(this._dataView.getInt32(this.bytes.start+16,!0)&4294901760)>>16),this._cachedFlags}get ref_id(){return this._cachedRefId===void 0&&(this._cachedRefId=this._dataView.getInt32(this.bytes.start+4,!0)),this._cachedRefId}get start(){return this._cachedStart===void 0&&(this._cachedStart=this._dataView.getInt32(this.bytes.start+8,!0)),this._cachedStart}get end(){return this._cachedEnd===void 0&&(this._cachedEnd=this.start+this.length_on_ref),this._cachedEnd}get mq(){let e=(this.bin_mq_nl&65280)>>8;return e===255?void 0:e}get score(){return this.mq}get qual(){if(this.isSegmentUnmapped())return null;{let e=this.b0+this.read_name_length+this.num_cigar_bytes+this.num_seq_bytes;return this.byteArray.subarray(e,e+this.seq_length)}}get strand(){return this.isReverseComplemented()?-1:1}get b0(){return this.bytes.start+36}get tagsStart(){return this._cachedTagsStart===void 0&&(this._cachedTagsStart=this.b0+this.read_name_length+this.num_cigar_bytes+this.num_seq_bytes+this.seq_length),this._cachedTagsStart}get name(){let e=this.read_name_length-1,t=this.b0,n=this.byteArray,r=Array(e);for(let i=0;i<e;i++)r[i]=n[t+i];return String.fromCharCode(...r)}get NUMERIC_MD(){if(this._cachedNUMERIC_MD===void 0){let e=this.getTagRaw(`MD`);this._cachedNUMERIC_MD=e instanceof Uint8Array?e:null}return this._cachedNUMERIC_MD===null?void 0:this._cachedNUMERIC_MD}get tags(){return this._cachedTags===void 0&&(this._cachedTags=this._computeTags()),this._cachedTags}getTag(e){return this._cachedTags===void 0?this._findTag(e,!1):this._cachedTags[e]}getTagRaw(e){return this._findTag(e,!0)}_findTag(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),i=this.tagsStart,a=this.bytes.end,o=this.byteArray;for(;i<a;){let e=o[i],s=o[i+1],c=o[i+2];i+=3;let l=e===n&&s===r;switch(c){case 65:if(l)return String.fromCharCode(o[i]);i+=1;break;case 105:if(l)return this._dataView.getInt32(i,!0);i+=4;break;case 73:if(l)return this._dataView.getUint32(i,!0);i+=4;break;case 99:if(l)return this._dataView.getInt8(i);i+=1;break;case 67:if(l)return this._dataView.getUint8(i);i+=1;break;case 115:if(l)return this._dataView.getInt16(i,!0);i+=2;break;case 83:if(l)return this._dataView.getUint16(i,!0);i+=2;break;case 102:if(l)return this._dataView.getFloat32(i,!0);i+=4;break;case 90:case 72:if(l){let e=i;for(;i<a&&o[i]!==0;)i++;if(t)return o.subarray(e,i);let n=[];for(let t=e;t<i;t++)n.push(String.fromCharCode(o[t]));return n.join(``)}for(;i<=a&&o[i++]!==0;);break;case 66:{let e=o[i++],t=this._dataView.getInt32(i,!0);i+=4;let n=o.byteOffset+i;if(l){if(e===105){if(n%4==0)return new Int32Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getInt32(i+n*4,!0);return e}else if(e===73){if(n%4==0)return new Uint32Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getUint32(i+n*4,!0);return e}else if(e===115){if(n%2==0)return new Int16Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getInt16(i+n*2,!0);return e}else if(e===83){if(n%2==0)return new Uint16Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getUint16(i+n*2,!0);return e}else if(e===99)return new Int8Array(o.buffer,n,t);else if(e===67)return new Uint8Array(o.buffer,n,t);else if(e===102){if(n%4==0)return new Float32Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getFloat32(i+n*4,!0);return e}}e===105||e===73||e===102?i+=t<<2:e===115||e===83?i+=t<<1:(e===99||e===67)&&(i+=t);break}}}}_computeTags(){let e=this.tagsStart,t=this.bytes.end,n=this.byteArray,r={};for(;e<t;){let i=String.fromCharCode(n[e],n[e+1]),a=n[e+2];switch(e+=3,a){case 65:r[i]=String.fromCharCode(n[e]),e+=1;break;case 105:r[i]=this._dataView.getInt32(e,!0),e+=4;break;case 73:r[i]=this._dataView.getUint32(e,!0),e+=4;break;case 99:r[i]=this._dataView.getInt8(e),e+=1;break;case 67:r[i]=this._dataView.getUint8(e),e+=1;break;case 115:r[i]=this._dataView.getInt16(e,!0),e+=2;break;case 83:r[i]=this._dataView.getUint16(e,!0),e+=2;break;case 102:r[i]=this._dataView.getFloat32(e,!0),e+=4;break;case 90:case 72:{let a=[];for(;e<=t;){let t=n[e++];if(t!==0)a.push(String.fromCharCode(t));else break}r[i]=a.join(``);break}case 66:{let t=n[e++],a=this._dataView.getInt32(e,!0);e+=4;let o=n.byteOffset+e;if(t===105){if(o%4==0)r[i]=new Int32Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getInt32(e+n*4,!0);r[i]=t}e+=a<<2}else if(t===73){if(o%4==0)r[i]=new Uint32Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getUint32(e+n*4,!0);r[i]=t}e+=a<<2}else if(t===115){if(o%2==0)r[i]=new Int16Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getInt16(e+n*2,!0);r[i]=t}e+=a<<1}else if(t===83){if(o%2==0)r[i]=new Uint16Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getUint16(e+n*2,!0);r[i]=t}e+=a<<1}else if(t===99)r[i]=new Int8Array(n.buffer,o,a),e+=a;else if(t===67)r[i]=new Uint8Array(n.buffer,o,a),e+=a;else if(t===102){if(o%4==0)r[i]=new Float32Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getFloat32(e+n*4,!0);r[i]=t}e+=a<<2}break}default:console.error(`Unknown BAM tag type`,a);break}}return r}isPaired(){return!!(this.flags&QS.BAM_FPAIRED)}isProperlyPaired(){return!!(this.flags&QS.BAM_FPROPER_PAIR)}isSegmentUnmapped(){return!!(this.flags&QS.BAM_FUNMAP)}isMateUnmapped(){return!!(this.flags&QS.BAM_FMUNMAP)}isReverseComplemented(){return!!(this.flags&QS.BAM_FREVERSE)}isMateReverseComplemented(){return!!(this.flags&QS.BAM_FMREVERSE)}isRead1(){return!!(this.flags&QS.BAM_FREAD1)}isRead2(){return!!(this.flags&QS.BAM_FREAD2)}isSecondary(){return!!(this.flags&QS.BAM_FSECONDARY)}isFailedQc(){return!!(this.flags&QS.BAM_FQCFAIL)}isDuplicate(){return!!(this.flags&QS.BAM_FDUP)}isSupplementary(){return!!(this.flags&QS.BAM_FSUPPLEMENTARY)}get cigarAndLength(){return this._cachedCigarAndLength===void 0&&(this._cachedCigarAndLength=this._computeCigarAndLength()),this._cachedCigarAndLength}_computeCigarAndLength(){if(this.isSegmentUnmapped())return{length_on_ref:0,NUMERIC_CIGAR:new Uint32Array};let e=this.num_cigar_ops,t=this.b0+this.read_name_length,n=this._dataView.getInt32(t,!0),r=n>>4;if((n&15)==4&&r===this.seq_length){t+=4;let e=this._dataView.getInt32(t,!0),n=e>>4;return(e&15)!=3&&console.warn(`CG tag with no N tag`),{NUMERIC_CIGAR:this.tags.CG,length_on_ref:n}}let i=this.byteArray.byteOffset+t;if(i%4==0&&e>50){let t=new Uint32Array(this.byteArray.buffer,i,e),n=0;for(let r=0;r<e;++r){let e=t[r];n+=(e>>4)*(rC>>(e&15)&1)}return{NUMERIC_CIGAR:t,length_on_ref:n}}let a=Array(e),o=0;for(let n=0;n<e;++n){let e=this._dataView.getInt32(t+n*4,!0)|0;a[n]=e,o+=(e>>4)*(rC>>(e&15)&1)}return{NUMERIC_CIGAR:a,length_on_ref:o}}get length_on_ref(){return this.cigarAndLength.length_on_ref}get NUMERIC_CIGAR(){return this.cigarAndLength.NUMERIC_CIGAR}get CIGAR(){let e=this.NUMERIC_CIGAR,t=``;for(let n=0,r=e.length;n<r;n++){let r=e[n],i=r>>4,a=nC[r&15];t+=i+String.fromCharCode(a)}return t}get num_cigar_ops(){return this.flag_nc&65535}get num_cigar_bytes(){return this.num_cigar_ops<<2}get read_name_length(){return this.bin_mq_nl&255}get num_seq_bytes(){return this.seq_length+1>>1}get NUMERIC_SEQ(){let e=this.b0+this.read_name_length+this.num_cigar_bytes;return this.byteArray.subarray(e,e+this.num_seq_bytes)}get seq(){let e=this.NUMERIC_SEQ,t=this.seq_length,n=Array(t),r=0,i=t>>1;for(let t=0;t<i;++t){let i=e[t];n[r++]=eC[(i&240)>>4],n[r++]=eC[i&15]}return r<t&&(n[r]=eC[(e[i]&240)>>4]),n.join(``)}get pair_orientation(){let e=this.flags;if(!(e&12||this.ref_id!==this.next_refid))return tC[e>>4&15|(this.template_length>0?16:0)]}get bin_mq_nl(){return this._dataView.getInt32(this.bytes.start+12,!0)}get flag_nc(){return this._dataView.getInt32(this.bytes.start+16,!0)}get seq_length(){return this._dataView.getInt32(this.bytes.start+20,!0)}get next_refid(){return this._dataView.getInt32(this.bytes.start+24,!0)}get next_pos(){return this._dataView.getInt32(this.bytes.start+28,!0)}get template_length(){return this._dataView.getInt32(this.bytes.start+32,!0)}seqAt(e){if(e<this.seq_length){let t=e>>1,n=this.byteArray[this.b0+this.read_name_length+this.num_cigar_bytes+t];return e%2==0?eC[(n&240)>>4]:eC[n&15]}else return}toJSON(){let e={};for(let t of Object.keys(this))t.startsWith(`_`)||t===`bytes`||(e[t]=this[t]);return e}}}));function oC(e){let t=e.split(/\r?\n/),n=[];for(let e of t){let[t,...r]=e.split(/\t/);t&&n.push({tag:t.slice(1),data:r.map(e=>{let t=e.indexOf(`:`);return{tag:e.slice(0,t),value:e.slice(t+1)}})})}return n}var sC=n((()=>{})),cC,lC,uC=n((()=>{Jy(),Fb(),HS(),jg(),zS(),JS(),XS(),aC(),sC(),OS(),cC=65536,lC=class{constructor({bamFilehandle:e,bamPath:t,bamUrl:n,baiPath:r,baiFilehandle:i,baiUrl:a,csiPath:o,csiFilehandle:s,csiUrl:c,htsget:l,renameRefSeqs:u=e=>e,recordClass:d}){if(this.htsget=!1,this.chunkFeatureCache=new Pb({maxSize:100}),this.renameRefSeq=u,this.RecordClass=d??iC,e)this.bam=e;else if(t)this.bam=new Ag(t);else if(n)this.bam=new Dg(n);else if(l)this.htsget=!0,this.bam=new YS;else throw Error(`unable to initialize bam`);if(s)this.index=new qS({filehandle:s});else if(o)this.index=new qS({filehandle:new Ag(o)});else if(c)this.index=new qS({filehandle:new Dg(c)});else if(i)this.index=new RS({filehandle:i});else if(r)this.index=new RS({filehandle:new Ag(r)});else if(a)this.index=new RS({filehandle:new Dg(a)});else if(t)this.index=new RS({filehandle:new Ag(`${t}.bai`)});else if(n)this.index=new RS({filehandle:new Dg(`${n}.bai`)});else if(l)this.htsget=!0;else throw Error(`unable to infer index format`)}async getHeaderPre(e){let t=yS(e);if(!this.index)return;let n=await this.index.parse(t),r=n.firstDataLine===void 0?void 0:n.firstDataLine.blockPosition+cC,i=await By(r===void 0?await this.bam.readFile():await this.bam.read(r,0)),a=new DataView(i.buffer);if(a.getInt32(0,!0)!==21840194)throw Error(`Not a BAM file`);let o=a.getInt32(4,!0);this.header=new TextDecoder(`utf8`).decode(i.subarray(8,8+o));let s=o+8;for(let e=0;e<5;e++){if(this._hasEnoughRefSeqData(i,s)){let{chrToIndex:e,indexToChr:t}=this._parseRefSeqs(i,s);return this.chrToIndex=e,this.indexToChr=t,oC(this.header)}if(r===void 0)throw Error(`Insufficient data for reference sequences in ${i.length} bytes`);r*=2,i=await By(await this.bam.read(r,0))}throw Error(`Insufficient data for reference sequences after 5 retries`)}getHeader(e){return this.headerP||=this.getHeaderPre(e).catch(e=>{throw this.headerP=void 0,e}),this.headerP}async getHeaderText(e={}){return await this.getHeader(e),this.header}_hasEnoughRefSeqData(e,t){if(t+4>e.length)return!1;let n=new DataView(e.buffer),r=n.getInt32(t,!0),i=t+4;for(let t=0;t<r;t+=1){if(i+8>e.length)return!1;let t=n.getInt32(i,!0);i=i+8+t}return!0}_parseRefSeqs(e,t){let n=new DataView(e.buffer),r=n.getInt32(t,!0),i=t+4,a={},o=[],s=new TextDecoder(`utf8`);for(let t=0;t<r;t+=1){let r=n.getInt32(i,!0),c=this.renameRefSeq(s.decode(e.subarray(i+4,i+4+r-1))),l=n.getInt32(i+r+4,!0);a[c]=t,o.push({refName:c,length:l}),i=i+8+r}return{chrToIndex:a,indexToChr:o}}async getRecordsForRange(e,t,n,r){await this.getHeader(r);let i=this.chrToIndex?.[e];if(i===void 0||!this.index)return[];let a=await this.index.blocksForRange(i,t-1,n,r);return this._fetchChunkFeaturesDirect(a,i,t,n,r)}chunkCacheKey(e,t){let{minv:n,maxv:r}=e;return`${n.blockPosition}:${n.dataPosition}-${r.blockPosition}:${r.dataPosition}${DS(t)}`}blocksOverlap(e,t,n,r){return e<=r&&t>=n}evictOverlappingChunks(e,t){for(let[n,r]of this.chunkFeatureCache)this.blocksOverlap(e,t,r.minBlock,r.maxBlock)&&this.chunkFeatureCache.delete(n)}async _fetchChunkFeaturesDirect(e,t,n,r,i={}){let{viewAsPairs:a,filterBy:o}=i,{flagInclude:s=0,flagExclude:c=0,tagFilter:l}=o||{},u=[];for(let a=0,d=e.length;a<d;a++){let d=e[a],f=this.chunkCacheKey(d,o),p=d.minv.blockPosition,m=d.maxv.blockPosition,h,g=this.chunkFeatureCache.get(f);if(g)h=g.features;else{this.evictOverlappingChunks(p,m);let{data:e,cpositions:t,dpositions:n}=await this._readChunk({chunk:d,opts:i}),r=await this.readBamFeatures(e,t,n,d);if(o){h=[];for(let e=0,t=r.length;e<t;e++){let t=r[e];TS(t.flags,s,c)||l&&ES(t.tags[l.tag],l.value)||h.push(t)}}else h=r;this.chunkFeatureCache.set(f,{minBlock:p,maxBlock:m,features:h})}let _=!1;for(let e=0,i=h.length;e<i;e++){let i=h[e];if(i.ref_id===t)if(i.start>=r){_=!0;break}else i.end>=n&&u.push(i)}if(_)break}if(a){let e=await this.fetchPairs(t,u,i);for(let t=0,n=e.length;t<n;t++)u.push(e[t])}return u}async fetchPairs(e,t,n){let{pairAcrossChr:r,maxInsertSize:i=2e5}=n,a={},o={};for(let e=0,n=t.length;e<n;e++){let n=t[e],r=n.name;a[r]=(a[r]||0)+1,o[n.fileOffset]=1}let s=[];for(let o=0,c=t.length;o<c;o++){let c=t[o],l=c.name;this.index&&a[l]===1&&(r||c.next_refid===e&&Math.abs(c.start-c.next_pos)<i)&&s.push(this.index.blocksForRange(c.next_refid,c.next_pos,c.next_pos+1,n))}let c=new Map,l=await Promise.all(s);for(let e=0,t=l.length;e<t;e++){let t=l[e];for(let e=0,n=t.length;e<n;e++){let n=t[e],r=n.toString();c.has(r)||c.set(r,n)}}return(await Promise.all([...c.values()].map(async e=>{let{data:t,cpositions:r,dpositions:i,chunk:s}=await this._readChunk({chunk:e,opts:n}),c=[],l=await this.readBamFeatures(t,r,i,s);for(let e=0,t=l.length;e<t;e++){let t=l[e];a[t.name]===1&&!o[t.fileOffset]&&c.push(t)}return c}))).flat()}async _readChunk({chunk:e,opts:t}){let{buffer:n,cpositions:r,dpositions:i}=await Vy(await this.bam.read(e.fetchedSize(),e.minv.blockPosition,t),e);return{data:n,cpositions:r,dpositions:i,chunk:e}}async readBamFeatures(e,t,n,r){let i=0,a=[],o=0,s=new DataView(e.buffer),c=n.length>0,l=t.length>0;for(;i+4<e.length;){let u=s.getInt32(i,!0),d=i+4+u-1;if(c){for(;i+r.minv.dataPosition>=n[o++];);o--}if(d<e.length){let s=new this.RecordClass({bytes:{byteArray:e,start:i,end:d},fileOffset:l?t[o]*256+(i-n[o])+r.minv.dataPosition+1:VS(e.subarray(i,d))>>>0});a.push(s)}i=d+1}return a}async hasRefSeq(e){let t=this.chrToIndex?.[e];return t===void 0?!1:this.index?.hasRefSeq(t)}async lineCount(e){let t=this.chrToIndex?.[e];return t===void 0||!this.index?0:this.index.lineCount(t)}async indexCov(e,t,n){if(!this.index)return[];await this.index.parse();let r=this.chrToIndex?.[e];return r===void 0?[]:this.index.indexCov(r,t,n)}async blocksForRange(e,t,n,r){if(!this.index)return[];await this.index.parse();let i=this.chrToIndex?.[e];return i===void 0?[]:this.index.blocksForRange(i,t,n,r)}clearFeatureCache(){this.chunkFeatureCache.clear()}async estimatedBytesForRegions(e,t){if(!this.index)return 0;if(await this.getHeader(t),!this.chrToIndex)throw Error(`Header not yet parsed`);let n=e.flatMap(e=>{let t=this.chrToIndex[e.refName];return t===void 0?[]:[{refId:t,start:e.start,end:e.end}]});return this.index.estimatedBytesForRegions(n,t)}}}));async function dC(e,t){let n=await Promise.all(e.map(async e=>{let{url:n,headers:r}=e;if(n.startsWith(`data:`)){let e=await fetch(n);if(!e.ok)throw Error(`failed to decode base64`);let t=await e.arrayBuffer();return new Uint8Array(t)}else{let{referer:e,...i}=r,a=await fetch(n,{...t,headers:{...t?.headers,...i}});if(!a.ok)throw Error(`HTTP ${a.status} fetching ${n}: ${await a.text()}`);return new Uint8Array(await a.arrayBuffer())}}));return wS(await Promise.all(n.map(e=>By(e))))}var fC,pC=n((()=>{Jy(),uC(),sC(),OS(),fC=class extends lC{constructor(e){super({htsget:!0,recordClass:e.recordClass}),this.baseUrl=e.baseUrl,this.trackId=e.trackId}async getRecordsForRange(e,t,n,r){let i=`${`${this.baseUrl}/${this.trackId}`}?referenceName=${e}&start=${t}&end=${n}&format=BAM`,a=this.chrToIndex?.[e];if(a===void 0)return[];let o=await fetch(i,{...r});if(!o.ok)throw Error(`HTTP ${o.status} fetching ${i}: ${await o.text()}`);let s=await dC((await o.json()).htsget.urls.slice(1),r),c=await this.readBamFeatures(s,[],[],{minv:{dataPosition:0,blockPosition:0},maxv:{dataPosition:0,blockPosition:0}}),l=[];for(let e=0,r=c.length;e<r;e++){let r=c[e];if(r.ref_id===a){if(r.start>=n)break;r.end>=t&&l.push(r)}}return l}async getHeader(e={}){let t=`${this.baseUrl}/${this.trackId}?referenceName=na&class=header`,n=await fetch(t,e);if(!n.ok)throw Error(`HTTP ${n.status} fetching ${t}: ${await n.text()}`);let r=await dC((await n.json()).htsget.urls,e),i=new DataView(r.buffer);if(i.getInt32(0,!0)!==21840194)throw Error(`Not a BAM file`);let a=i.getInt32(4,!0),o=oC(new TextDecoder(`utf8`).decode(r.subarray(8,8+a))),s=[],c={},l=o.filter(e=>e.tag===`SQ`);for(let[e,t]of l.entries()){let n=``,r=0;for(let e of t.data)e.tag===`SN`?n=e.value:e.tag===`LN`&&(r=+e.value);c[n]=e,s[e]={refName:n,length:r}}return this.chrToIndex=c,this.indexToChr=s,o}}})),mC=r({BAI:()=>RS,BamFile:()=>lC,BamRecord:()=>iC,CSI:()=>qS,HtsgetFile:()=>fC}),hC=n((()=>{zS(),uC(),JS(),aC(),pC()})),gC=class extends Sg{#e;chrPrefixFixer=e=>e;constructor(e,t){let n={channel:`x`,windowSize:2e4,debounce:200,debounceMode:`domain`,...e};if(super(t,n.channel),this.params=n,!this.params.url)throw Error(`No URL provided for BamSource`);this.setupDebouncing(this.params),this.initializedPromise=new Promise(e=>{Promise.all([Promise.resolve().then(()=>(hC(),mC)),Promise.resolve().then(()=>(jg(),kg))]).then(([{BamFile:t},{RemoteFile:n}])=>{let r=e=>new n(ah(e,this.view.getBaseUrl()));this.#e=new t({bamFilehandle:r(this.params.url),baiFilehandle:r(this.params.indexUrl??this.params.url+`.bai`)}),this.#e.getHeader().then(t=>{let n=this.genome.hasChrPrefix(),r=this.#e.indexToChr?.[0]?.refName.startsWith(`chr`);n&&!r?this.chrPrefixFixer=e=>e.replace(`chr`,``):!n&&r&&(this.chrPrefixFixer=e=>`chr`+e),e()})})})}get label(){return`bamSource`}async loadInterval(e){let t=await this.discretizeAndLoad(e,async(e,t)=>this.#e.getRecordsForRange(this.chrPrefixFixer(e.chrom),e.startPos,e.endPos,{signal:t}).then(t=>t.map(t=>({chrom:e.chrom,start:t.start,end:t.end,name:t.name,cigar:t.CIGAR,mapq:t.mq,strand:t.strand===1?`+`:`-`}))));t&&this.publishData(t)}};function _C(e){return e?.type==`bam`}Km(_C,gC);var vC,yC=n((()=>{vC=class{constructor(e,t,n,r){this.minv=e,this.maxv=t,this.bin=n,this._fetchedSize=r}toUniqueString(){return`${this.minv}..${this.maxv} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(e){return this.minv.compareTo(e.minv)||this.maxv.compareTo(e.maxv)||this.bin-e.bin}fetchedSize(){return this._fetchedSize===void 0?this.maxv.blockPosition+65536-this.minv.blockPosition:this._fetchedSize}}})),bC,xC=n((()=>{bC=class{constructor({filehandle:e,renameRefSeqs:t=e=>e}){this.filehandle=e,this.renameRefSeq=t}async getMetadata(e={}){let{indices:t,...n}=await this.parse(e);return n}_findFirstData(e,t){return e?e.compareTo(t)>0?t:e:t}async parse(e={}){return this.parseP||=this._parse(e).catch(e=>{throw this.parseP=void 0,e}),this.parseP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices[e]?.binIndex}_parseNameBytes(e){let t=0,n=0,r=[],i={},a=new TextDecoder(`utf8`);for(let o=0;o<e.length;o+=1)if(!e[o]){if(n<o){let s=this.renameRefSeq(a.decode(e.subarray(n,o)));r[t]=s,i[s]=t}n=o+1,t+=1}return{refNameToId:i,refIdToName:r}}}}));function SC(e,t=0){let n=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24;return((e[t+4]|e[t+5]<<8|e[t+6]<<16|e[t+7]<<24)>>>0)*wC+(n>>>0)}var CC,wC,TC=n((()=>{CC=65536,wC=CC*CC}));function EC(e,t){return t.minv.blockPosition-e.maxv.blockPosition<65e3&&t.maxv.blockPosition-e.minv.blockPosition<5e6}function DC(e,t){let n=[],r;if(e.length===0)return e;e.sort(function(e,t){let n=e.minv.blockPosition-t.minv.blockPosition;return n===0?e.minv.dataPosition-t.minv.dataPosition:n});for(let i of e)(!t||i.maxv.compareTo(t)>0)&&(r===void 0?(n.push(i),r=i):EC(r,i)?i.maxv.compareTo(r.maxv)>0&&(r.maxv=i.maxv):(n.push(i),r=i));return n}var OC=n((()=>{}));function kC(e,t=0){return new AC(e[t+7]*1099511627776+e[t+6]*4294967296+e[t+5]*16777216+e[t+4]*65536+e[t+3]*256+e[t+2],e[t+1]<<8|e[t])}var AC,jC=n((()=>{AC=class{constructor(e,t){this.blockPosition=e,this.dataPosition=t}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(e){return this.blockPosition-e.blockPosition||this.dataPosition-e.dataPosition}}}));function MC(e,t){return e*2**t}function NC(e,t){return Math.floor(e/2**t)}var PC,FC,IC,LC,RC=n((()=>{Jy(),yC(),xC(),TC(),OC(),jC(),PC=21582659,FC=38359875,IC={0:`generic`,1:`SAM`,2:`VCF`},LC=class extends bC{constructor(e){super(e),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(e,t={}){let n=await this.parse(t),r=n.refNameToId[e];if(r===void 0||!n.indices[r])return-1;let{stats:i}=n.indices[r];return i?i.lineCount:-1}indexCov(){throw Error(`CSI indexes do not support indexcov`)}parseAuxData(e,t){let n=new DataView(e.buffer),r=n.getInt32(t,!0),i=r&65536?`zero-based-half-open`:`1-based-closed`,a=IC[r&15];if(!a)throw Error(`invalid Tabix preset format flags ${r}`);let o={ref:n.getInt32(t+4,!0),start:n.getInt32(t+8,!0),end:n.getInt32(t+12,!0)},s=n.getInt32(t+16,!0),c=s?String.fromCharCode(s):void 0,l=n.getInt32(t+20,!0),u=n.getInt32(t+24,!0),{refIdToName:d,refNameToId:f}=this._parseNameBytes(e.subarray(t+28,t+28+u));return{refIdToName:d,refNameToId:f,skipLines:l,metaChar:c,columnNumbers:o,format:a,coordinateType:i}}async _parse(e={}){let t=await By(await this.filehandle.readFile(e)),n=new DataView(t.buffer),r;if(n.getUint32(0,!0)===PC)r=1;else if(n.getUint32(0,!0)===FC)r=2;else throw Error(`Not a CSI file`);this.minShift=n.getInt32(4,!0),this.depth=n.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;let i=2**(this.minShift+this.depth*3),a=n.getInt32(12,!0),o=a&&a>=30?this.parseAuxData(t,16):{refIdToName:[],refNameToId:{},metaChar:void 0,columnNumbers:{ref:0,start:1,end:2},coordinateType:`zero-based-half-open`,format:`generic`},s=n.getInt32(16+a,!0),c,l=16+a+4,u=Array(s).fill(0).map(()=>{let e=n.getInt32(l,!0);l+=4;let r={},i;for(let a=0;a<e;a+=1){let e=n.getUint32(l,!0);if(e>this.maxBinNumber)i=this.parsePseudoBin(t,l+4),l+=48;else{let i=kC(t,l+4);c=this._findFirstData(c,i);let a=n.getInt32(l+12,!0);l+=16;let o=Array(a);for(let n=0;n<a;n+=1){let r=kC(t,l),i=kC(t,l+8);l+=16,o[n]=new vC(r,i,e)}r[e]=o}}return{binIndex:r,stats:i}});return{...o,csi:!0,refCount:s,maxBlockSize:65536,firstDataLine:c,csiVersion:r,indices:u,depth:this.depth,maxBinNumber:this.maxBinNumber,maxRefLength:i}}parsePseudoBin(e,t){return{lineCount:SC(e,t+28)}}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=await this.parse(r),a=i.refNameToId[e];if(a===void 0)return[];let o=i.indices[a];if(!o)return[];let s=this.reg2bins(t,n),c=[];for(let[e,t]of s)for(let n=e;n<=t;n++)if(o.binIndex[n])for(let e of o.binIndex[n])c.push(new vC(e.minv,e.maxv,n));return DC(c,new AC(0,0))}reg2bins(e,t){--e,e<1&&(e=1),t>2**50&&(t=2**34),--t;let n=0,r=0,i=this.minShift+this.depth*3,a=[];for(;n<=this.depth;i-=3,r+=MC(1,n*3),n+=1){let n=r+NC(e,i),o=r+NC(t,i);if(o-n+a.length>this.maxBinNumber)throw Error(`query ${e}-${t} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);a.push([n,o])}return a}}}));function zC(e,t){return e+=1,--t,[[0,0],[1+(e>>26),1+(t>>26)],[9+(e>>23),9+(t>>23)],[73+(e>>20),73+(t>>20)],[585+(e>>17),585+(t>>17)],[4681+(e>>14),4681+(t>>14)]]}var BC,VC,HC,UC=n((()=>{Jy(),yC(),xC(),TC(),OC(),jC(),BC=21578324,VC=14,HC=class extends bC{async lineCount(e,t={}){let n=await this.parse(t),r=n.refNameToId[e];return r===void 0||!n.indices[r]?-1:n.indices[r].stats?.lineCount??-1}async _parse(e={}){let t=await By(await this.filehandle.readFile(e)),n=new DataView(t.buffer);if(n.getUint32(0,!0)!==BC)throw Error(`Not a TBI file`);let r=n.getUint32(4,!0),i=n.getUint32(8,!0),a=i&65536?`zero-based-half-open`:`1-based-closed`,o={0:`generic`,1:`SAM`,2:`VCF`}[i&15];if(!o)throw Error(`invalid Tabix preset format flags ${i}`);let s={ref:n.getInt32(12,!0),start:n.getInt32(16,!0),end:n.getInt32(20,!0)},c=n.getInt32(24,!0),l=((1<<18)-1)/7,u=2**29,d=c?String.fromCharCode(c):void 0,f=n.getInt32(28,!0),p=n.getInt32(32,!0),{refNameToId:m,refIdToName:h}=this._parseNameBytes(t.slice(36,36+p)),g=36+p,_;return{indices:Array(r).fill(0).map(()=>{let e=n.getInt32(g,!0);g+=4;let r={},i;for(let a=0;a<e;a+=1){let e=n.getUint32(g,!0);if(g+=4,e>l+1)throw Error(`tabix index contains too many bins, please use a CSI index`);if(e===l+1){let e=n.getInt32(g,!0);g+=4,e===2&&(i=this.parsePseudoBin(t,g)),g+=16*e}else{let i=n.getInt32(g,!0);g+=4;let a=Array(i);for(let n=0;n<i;n+=1){let r=kC(t,g),i=kC(t,g+8);g+=16,_=this._findFirstData(_,r),a[n]=new vC(r,i,e)}r[e]=a}}let a=n.getInt32(g,!0);g+=4;let o=Array(a);for(let e=0;e<a;e+=1)o[e]=kC(t,g),g+=8,_=this._findFirstData(_,o[e]);return{binIndex:r,linearIndex:o,stats:i}}),metaChar:d,maxBinNumber:l,maxRefLength:u,skipLines:f,firstDataLine:_,columnNumbers:s,coordinateType:a,format:o,refIdToName:h,refNameToId:m,maxBlockSize:65536}}parsePseudoBin(e,t){return{lineCount:SC(e,t+16)}}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=await this.parse(r),a=i.refNameToId[e];if(a===void 0)return[];let o=i.indices[a];if(!o)return[];(o.linearIndex.length>0?o.linearIndex[t>>VC>=o.linearIndex.length?o.linearIndex.length-1:t>>VC]:new AC(0,0))||console.warn(`querying outside of possible tabix range`);let s=zC(t,n),c=[];for(let[e,t]of s)for(let n=e;n<=t;n++)if(o.binIndex[n])for(let e of o.binIndex[n])c.push(new vC(e.minv,e.maxv,n));let l=o.linearIndex.length,u,d=Math.min(t>>14,l-1),f=Math.min(n>>14,l-1);for(let e=d;e<=f;++e){let t=o.linearIndex[e];t&&(!u||t.compareTo(u)<0)&&(u=t)}return DC(c,u)}}})),WC,GC=n((()=>{yb(),Jy(),Fb(),jg(),RC(),UC(),WC=class{constructor({path:e,filehandle:t,url:n,tbiPath:r,tbiUrl:i,tbiFilehandle:a,csiPath:o,csiUrl:s,csiFilehandle:c,renameRefSeqs:l,chunkCacheSize:u=5*2**20}){this.cache=new Pb({maxSize:1e3});let d=l??(e=>e);if(t)this.filehandle=t;else if(e)this.filehandle=new Ag(e);else if(n)this.filehandle=new Dg(n);else throw TypeError(`must provide either filehandle or path`);if(a)this.index=new HC({filehandle:a,renameRefSeqs:d});else if(c)this.index=new LC({filehandle:c,renameRefSeqs:d});else if(r)this.index=new HC({filehandle:new Ag(r),renameRefSeqs:d});else if(o)this.index=new LC({filehandle:new Ag(o),renameRefSeqs:d});else if(e)this.index=new HC({filehandle:new Ag(`${e}.tbi`),renameRefSeqs:d});else if(s)this.index=new LC({filehandle:new Dg(s)});else if(i)this.index=new HC({filehandle:new Dg(i)});else if(n)this.index=new HC({filehandle:new Dg(`${n}.tbi`)});else throw TypeError(`must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl`);this.renameRefSeq=d,this.hasCustomRenameRefSeq=l!==void 0,this.chunkCache=new _b({cache:new Pb({maxSize:Math.floor(u/65536)}),fill:(e,t)=>this.readChunk(e,{signal:t})})}calculateFileOffset(e,t,n,r,i){return e[n]*256+(r-t[n])+i+1}async getLines(e,t,n,r){let i,a={},o;typeof r==`function`?o=r:(a=r,o=r.lineCallback,i=r.signal);let s=await this.index.getMetadata(a),c=t??0,l=n??s.maxRefLength;if(!(c<=l))throw TypeError(`invalid start and end coordinates. start must be less than or equal to end`);if(c===l)return;let u=await this.index.blocksForRange(e,c,l,a),d=new TextDecoder(`utf8`),f=s.format===`VCF`,p={ref:s.columnNumbers.ref||0,start:s.columnNumbers.start||0,end:f?8:s.columnNumbers.end||0},m=Math.max(p.ref,p.start,p.end),h=s.metaChar?.charCodeAt(0),g=s.coordinateType===`1-based-closed`?-1:0,_=!this.hasCustomRenameRefSeq;for(let t of u){let{buffer:n,cpositions:r,dpositions:a}=await this.chunkCache.get(t.toString(),t,i),s=0,u=0,v=d.decode(n);if(n.length==v.length)for(;s<v.length;){let n=v.indexOf(`
208
- `,s);if(n===-1)break;let i=v.slice(s,n);if(a){let e=s+t.minv.dataPosition;for(;u<a.length&&e>=a[u];)u++}let d=this.checkLine(e,c,l,i,p.ref,p.start,p.end,m,h,g,f,_);if(d===null)return;d!==void 0&&o(i,this.calculateFileOffset(r,a,u,s,t.minv.dataPosition),d.start,d.end),s=n+1}else for(;s<n.length;){let i=n.indexOf(10,s);if(i===-1)break;let v=n.slice(s,i),y=d.decode(v);if(a){let e=s+t.minv.dataPosition;for(;u<a.length&&e>=a[u];)u++}let b=this.checkLine(e,c,l,y,p.ref,p.start,p.end,m,h,g,f,_);if(b===null)return;b!==void 0&&o(y,this.calculateFileOffset(r,a,u,s,t.minv.dataPosition),b.start,b.end),s=i+1}}}async getMetadata(e={}){return this.index.getMetadata(e)}async getHeaderBuffer(e={}){let{firstDataLine:t,metaChar:n,maxBlockSize:r}=await this.getMetadata(e),i=(t?.blockPosition||0)+r,a=await By(await this.filehandle.read(i,0,e));if(n){let e=-1,t=n.charCodeAt(0);for(let n=0,r=a.length;n<r;n++){let r=a[n];if(n===e+1&&r!==t)break;r===10&&(e=n)}return a.subarray(0,e+1)}return a}async getHeader(e={}){let t=new TextDecoder(`utf8`),n=await this.getHeaderBuffer(e);return t.decode(n)}async getReferenceSequenceNames(e={}){return(await this.getMetadata(e)).refIdToName}checkLine(e,t,n,r,i,a,o,s,c,l,u,d){if(c!==void 0&&r.charCodeAt(0)===c)return;if(r.length<500){let s=r.split(` `),c=s[i-1];if(!(d?c===e:this.renameRefSeq(c)===e))return;let f=+s[a-1]+l;if(f>=n)return null;let p;return p=o===0||o===a?f+1:u?this._getVcfEnd(f,s[3],s[o-1]):+s[o-1],p<=t?void 0:{start:f,end:p}}let f=-1,p=[-1];for(let e=0;e<s;e++){let e=r.indexOf(` `,f+1);if(e===-1){p.push(r.length);break}p.push(e),f=e}let m=r.slice(p[i-1]+1,p[i]);if(!(d?m===e:this.renameRefSeq(m)===e))return;let h=+r.slice(p[a-1]+1,p[a])+l;if(h>=n)return null;let g;if(g=o===0||o===a?h+1:u?this._getVcfEnd(h,r.slice(p[3]+1,p[4]),r.slice(p[o-1]+1,p[o])):+r.slice(p[o-1]+1,p[o]),!(g<=t))return{start:h,end:g}}_getVcfEnd(e,t,n){let r=e+t.length;if(n.includes(`SVTYPE=TRA`))return e+1;if(n[0]!==`.`){let e=n.indexOf(`END=`);if(e!==-1&&(e===0||n[e-1]===`;`)){let t=e+4,i=n.indexOf(`;`,t);i===-1&&(i=n.length),r=Number.parseInt(n.slice(t,i),10)}}return r}async lineCount(e,t={}){return this.index.lineCount(e,t)}async readChunk(e,t={}){return Vy(await this.filehandle.read(e.fetchedSize(),e.minv.blockPosition,t),e,this.cache)}}})),KC=r({CSI:()=>LC,TBI:()=>HC,TabixIndexedFile:()=>WC}),qC=n((()=>{GC(),RC(),UC()})),JC=class extends Sg{#e;constructor(e,t){let n={channel:`x`,windowSize:3e6,debounce:200,debounceMode:`domain`,addChrPrefix:!1,...e},r=mg(n.channel);if(super(t,r),this.params=yg(t.paramRuntime,n,e=>{e.has(`url`)||e.has(`indexUrl`)||e.has(`addChrPrefix`)?this.#t().then(()=>this.reloadLastDomain()):e.has(`windowSize`)&&this.reloadLastDomain()},e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!mg(this.params.url))throw Error(`No URL provided for TabixSource`);this.setupDebouncing(this.params),this.#t()}#t(){return this.initializedPromise=new Promise((e,t)=>{Promise.all([Promise.resolve().then(()=>(qC(),KC)),Promise.resolve().then(()=>(jg(),kg))]).then(async([{TabixIndexedFile:n},{RemoteFile:r}])=>{let i=e=>new r(ah(e,this.view.getBaseUrl())),a=mg(this.params.url),o=mg(this.params.indexUrl)??a+`.tbi`,s=mg(this.params.addChrPrefix);this.#e=new n({filehandle:i(a),tbiFilehandle:i(o),renameRefSeqs:s===!0?e=>`chr`+e:s?e=>s+e:void 0});try{this.setLoadingStatus(`loading`);let t=await this.#e.getHeader();await this._handleHeader(t),this.setLoadingStatus(`complete`),e()}catch(e){this.load(),this.setLoadingStatus(`error`,`${mg(this.params.url)}: ${e.message}`),t(e)}})}),this.initializedPromise}async loadInterval(e){await this.initializedPromise;let t=await this.discretizeAndLoad(e,async(e,t)=>{let n=[];return await this.#e.getLines(e.chrom,e.startPos,e.endPos,{lineCallback:e=>{n.push(e)},signal:t}),this._parseFeatures(n)});t&&this.publishData(t)}async _handleHeader(e){}_parseFeatures(e){return[]}};function YC(e){let t=e.indexOf(`%`);if(t===-1)return e;let n=``,r=0,i=t;for(;i<e.length;)if(e[i]===`%`&&i+2<e.length){n+=e.slice(r,i);let t=sw[e.slice(i+1,i+3)];t===void 0?n+=e.slice(i,i+3):n+=t,i+=3,r=i}else i++;return n+e.slice(r)}function XC(e){if(e.length===0||e===`.`)return{};let t={},n=e.length;e[n-1]===`
209
- `&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n),o=t[a];o||(o=[],t[a]=o);let s=n+1;for(;s<i;){let t=e.indexOf(`,`,s);if((t===-1||t>i)&&(t=i),t>s){let n=e.slice(s,t);o.push(YC(n))}s=t+1}}}r=i+1}return t}function ZC(e){if(e.length===0||e===`.`)return{};let t={},n=e.length;e[n-1]===`
210
- `&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n),o=t[a];o||(o=[],t[a]=o);let s=n+1;for(;s<i;){let t=e.indexOf(`,`,s);(t===-1||t>i)&&(t=i),t>s&&o.push(e.slice(s,t)),s=t+1}}}r=i+1}return t}function QC(e){return e.length===0||e===`.`?null:YC(e)}function $C(e){return e.length===0||e===`.`?null:e}function ew(e){let t=e.split(` `),n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8];return{seq_id:QC(n),source:QC(r),type:QC(i),start:a.length===0||a===`.`?null:+a,end:o.length===0||o===`.`?null:+o,score:s.length===0||s===`.`?null:+s,strand:$C(c),phase:$C(l),attributes:u.length===0||u===`.`?null:XC(u)}}function tw(e){let t=e.split(` `),n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8];return{seq_id:$C(n),source:$C(r),type:$C(i),start:a.length===0||a===`.`?null:+a,end:o.length===0||o===`.`?null:+o,score:s.length===0||s===`.`?null:+s,strand:$C(c),phase:$C(l),attributes:u.length===0||u===`.`?null:ZC(u)}}function nw(e){if(e===`+`)return 1;if(e===`-`)return-1;if(e===`.`)return 0}function rw(e,t){if(e.length===0||e===`.`)return;let n=e.length;e[n-1]===`
211
- `&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n);if(a===`_lineHash`){r=i+1;continue}let o=a.toLowerCase();cw.has(o)&&(o+=`2`);let s=[],c=n+1;for(;c<i;){let t=e.indexOf(`,`,c);if((t===-1||t>i)&&(t=i),t>c){let n=e.slice(c,t);s.push(YC(n))}c=t+1}t[o]=s.length===1?s[0]:s}}r=i+1}}function iw(e,t){if(e.length===0||e===`.`)return;let n=e.length;e[n-1]===`
212
- `&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n);if(a===`_lineHash`){r=i+1;continue}let o=a.toLowerCase();cw.has(o)&&(o+=`2`);let s=[],c=n+1;for(;c<i;){let t=e.indexOf(`,`,c);(t===-1||t>i)&&(t=i),t>c&&s.push(e.slice(c,t)),c=t+1}t[o]=s.length===1?s[0]:s}}r=i+1}}function aw(e){let t=e.split(` `),n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8],d={refName:n.length===0||n===`.`?``:YC(n),source:r.length===0||r===`.`?null:YC(r),type:i.length===0||i===`.`?null:YC(i),start:a.length===0||a===`.`?0:a-1,end:o.length===0||o===`.`?0:+o,score:s.length===0||s===`.`?void 0:+s,strand:nw(c),phase:l.length===0||l===`.`?void 0:+l,subfeatures:[]};return rw(u,d),d}function ow(e){let t=e.split(` `),n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8],d={refName:n.length===0||n===`.`?``:n,source:r.length===0||r===`.`?null:r,type:i.length===0||i===`.`?null:i,start:a.length===0||a===`.`?0:a-1,end:o.length===0||o===`.`?0:+o,score:s.length===0||s===`.`?void 0:+s,strand:nw(c),phase:l.length===0||l===`.`?void 0:+l,subfeatures:[]};return iw(u,d),d}var sw,cw,lw=n((()=>{sw={};for(let e=0;e<256;e++){let t=e.toString(16).toUpperCase().padStart(2,`0`);sw[t]=String.fromCharCode(e),sw[t.toLowerCase()]=String.fromCharCode(e)}cw=new Set([`start`,`end`,`seq_id`,`score`,`type`,`source`,`phase`,`strand`])}));function uw(e){return pw(fw(e))}function dw(e){return mw(fw(e))}function fw(e){let t=e.split(/\r?\n/),n=[];for(let e=0;e<t.length;e++){let r=t[e];if(r.length===0||r[0]===`#`){if(r.startsWith(`##FASTA`))break;continue}if(r[0]===`>`)break;n.push({line:r,start:0,end:0,hasEscapes:r.includes(`%`)})}return n}function pw(e){let t=[],n=new Map,r=new Map;for(let i=0;i<e.length;i++){let a=e[i],o=a.hasEscapes?ew(a.line):tw(a.line);o.child_features=[],o.derived_features=[],a.lineHash!==void 0&&(o.attributes||={},o.attributes._lineHash=[String(a.lineHash)]);let s=o.attributes,c=s?.ID,l=s?.Parent;if(!c&&!l){t.push([o]);continue}let u;if(c){let e=c[0],i=n.get(e);if(i)i.push(o),u=i;else{u=[o],l||t.push(u),n.set(e,u);let i=r.get(e);if(i){for(let e=0;e<i.length;e++)o.child_features.push(i[e]);r.delete(e)}}}else u=[o];if(l)for(let e=0;e<l.length;e++){let t=l[e],i=n.get(t);if(i)for(let e=0;e<i.length;e++)i[e].child_features.push(u);else{let e=r.get(t);e||(e=[],r.set(t,e)),e.push(u)}}}return t}function mw(e){let t=[],n=new Map,r=new Map;for(let i=0;i<e.length;i++){let a=e[i],o=a.hasEscapes?aw(a.line):ow(a.line);a.lineHash!==void 0&&(o._lineHash=String(a.lineHash));let s=o.id,c=o.parent;if(!s&&!c){t.push(o);continue}if(s&&!n.get(s)){c||t.push(o),n.set(s,o);let e=r.get(s);if(e){for(let t=0;t<e.length;t++)o.subfeatures.push(e[t]);r.delete(s)}}if(c){let e=Array.isArray(c)?c:[c];for(let t=0;t<e.length;t++){let i=e[t],a=n.get(i);if(a)a.subfeatures.push(o);else{let e=r.get(i);e||(e=[],r.set(i,e)),e.push(o)}}}}return t}var hw=n((()=>{lw()})),gw=r({parseRecords:()=>pw,parseRecordsJBrowse:()=>mw,parseStringSync:()=>uw,parseStringSyncJBrowse:()=>dw}),_w=n((()=>{hw()})),vw=class extends JC{#e;get label(){return`gff3Source`}async _handleHeader(e){this.#e=await Promise.resolve().then(()=>(_w(),gw))}_parseFeatures(e){return this.#e?.parseStringSync(e.join(`
213
- `))}};function yw(e){return e?.type==`gff3`}Km(yw,vw);function bw(e,t,n){let r=Object.create(null),i=n.length,a=t.length,o=0;if(e===`GT`){for(let e=0;e<i;e++){let i=o;for(;o<a&&t.charCodeAt(o)!==9;)o++;r[n[e]]=t.slice(i,o),o++}return r}let s=e.indexOf(`GT`);if(s===-1)return r;if(s===0){for(let e=0;e<i;e++){let i=o;for(;o<a&&t.charCodeAt(o)!==58&&t.charCodeAt(o)!==9;)o++;for(r[n[e]]=t.slice(i,o);o<a&&t.charCodeAt(o)!==9;)o++;o++}return r}let c=0;for(let t=0;t<s;t++)e.charCodeAt(t)===58&&c++;for(let e=0;e<i;e++){let i=o,s=o;for(;s<a&&t.charCodeAt(s)!==9;)s++;let l=0,u=i;for(let a=i;a<=s;a++)if(a===s||t.charCodeAt(a)===58){if(l===c){r[n[e]]=t.slice(u,a);break}l++,u=a+1}o=s+1}return r}var xw=n((()=>{}));function Sw(e,t,n,r){let i=t.length,a=0;if(e===`GT`){for(let e=0;e<n;e++){let e=a;for(;a<i&&t.charCodeAt(a)!==9;)a++;r(t,e,a),a++}return}let o=e.indexOf(`GT`);if(o===-1)return;if(o===0){for(let e=0;e<n;e++){let e=a;for(;a<i&&t.charCodeAt(a)!==58&&t.charCodeAt(a)!==9;)a++;for(r(t,e,a);a<i&&t.charCodeAt(a)!==9;)a++;a++}return}let s=0;for(let t=0;t<o;t++)e.charCodeAt(t)===58&&s++;for(let e=0;e<n;e++){let e=a,n=a;for(;n<i&&t.charCodeAt(n)!==9;)n++;let o=0,c=e;for(let i=e;i<=n;i++)if(i===n||t.charCodeAt(i)===58){if(o===s){r(t,c,i);break}o++,c=i+1}a=n+1}}var Cw=n((()=>{}));function ww(e){try{return decodeURIComponent(e)}catch{return e}}var Tw,Ew=n((()=>{xw(),Cw(),Tw=class{constructor(e,t,n,r,i){let a=0,o=0;for(;a<e.length&&o<9;)e[a]===` `&&(o+=1),a+=1;let s=o===9?a-1:a,c=e.slice(0,s).split(` `),l=e.slice(s+1),[u,d,f,p,m,h,g]=c,_=g===`.`?void 0:g.split(`;`);if(i&&!c[7])throw Error(`no INFO field specified, must contain at least a '.' (turn off strict mode to allow)`);this.CHROM=u,this.POS=+d,this.ID=f===`.`?void 0:f.split(`;`),this.REF=p,this.ALT=m===`.`?void 0:m.split(`,`),this.QUAL=h===`.`?void 0:+h,this.FILTER=_?.length===1&&_[0]===`PASS`?`PASS`:_,this.INFO=c[7]===void 0||c[7]===`.`?{}:this.parseInfo(c[7],t),this.FORMAT=c[8],this.formatMeta=n,this.rest=l,this.sampleNames=r}parseInfo(e,t){let n={},r=e.includes(`%`),i=e.split(`;`),a=i.length;for(let e=0;e<a;e++){let a=i[e],o=a.indexOf(`=`),s=o===-1?a:a.slice(0,o),c=o===-1?void 0:a.slice(o+1),l=t[s]?.Type;if(l===`Flag`)n[s]=!0;else if(!c)n[s]=!0;else{let e=l===`Integer`||l===`Float`,t=c.split(`,`),i=t.length;if(r){let r=[];for(let n=0;n<i;n++){let i=t[n];if(i===`.`)r.push(void 0);else{let t=ww(i);r.push(e?Number(t):t)}}n[s]=r}else{let r=[];for(let n=0;n<i;n++){let i=t[n];i===`.`?r.push(void 0):r.push(e?Number(i):i)}n[s]=r}}}return n}SAMPLES(){let e={},t=this.FORMAT;if(t){let n=this.rest.split(` `),r=t.split(`:`),i=[];for(let e=0;e<r.length;e++){let t=this.formatMeta[r[e]]?.Type;i.push(t===`Integer`||t===`Float`)}let a=r.length,o=this.sampleNames.length;for(let t=0;t<o;t++){let o=this.sampleNames[t],s={},c=n[t],l=c.length,u=0,d=0;for(let e=0;e<=l;e++)if(e===l||c[e]===`:`){let t=c.slice(u,e);if(t===``||t===`.`)s[r[d]]=void 0;else{let e=t.split(`,`),n=[];if(i[d])for(let t=0;t<e.length;t++){let r=e[t];n.push(r===`.`?void 0:+r)}else for(let t=0;t<e.length;t++){let r=e[t];n.push(r===`.`?void 0:r)}s[r[d]]=n}if(u=e+1,d+=1,d>=a)break}e[o]=s}}return e}GENOTYPES(){return bw(this.FORMAT??``,this.rest,this.sampleNames)}processGenotypes(e){Sw(this.FORMAT??``,this.rest,this.sampleNames.length,e)}toJSON(){return{CHROM:this.CHROM,POS:this.POS,ID:this.ID,REF:this.REF,ALT:this.ALT,QUAL:this.QUAL,FILTER:this.FILTER,INFO:this.INFO,FORMAT:this.FORMAT}}}}));function Dw(e){let t=[],n=[],r=!1,i=!1,a=e.length;for(let o=0;o<a;o++){let a=e[o];a===`"`?(r=!r,n.push(a)):a===`[`?(i=!0,n.push(a)):a===`]`?(i=!1,n.push(a)):a===`,`&&!r&&!i?(t.push(n.join(``).trim()),n.length=0):n.push(a)}return n.length>0&&t.push(n.join(``).trim()),t}function Ow(e,t){let n=e.indexOf(t);return[e.slice(0,n),e.slice(n+1)]}function kw(e){let t=Dw(e.slice(1,-1)),n=[];for(let e=0;e<t.length;e++){let r=t[e],[i,a]=Ow(r,`=`);if(a&&a.startsWith(`[`)&&a.endsWith(`]`)){let e=a.slice(1,-1).split(`,`);for(let t=0;t<e.length;t++)e[t]=e[t].trim();n.push([i,e])}else a&&a.startsWith(`"`)&&a.endsWith(`"`)?n.push([i,a.slice(1,-1)]):n.push([i,a])}return Object.fromEntries(n)}var Aw=n((()=>{})),jw,Mw=n((()=>{jw={InfoFields:{AA:{Number:1,Type:`String`,Description:`Ancestral allele`},AC:{Number:`A`,Type:`Integer`,Description:`Allele count in genotypes, for each ALT allele, in the same order as listed`},AD:{Number:`R`,Type:`Integer`,Description:`Total read depth for each allele`},ADF:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele on the forward strand`},ADR:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele on the reverse strand`},AF:{Number:`A`,Type:`Float`,Description:`Allele frequency for each ALT allele in the same order as listed (estimated from primary data, not called genotypes)`},AN:{Number:1,Type:`Integer`,Description:`Total number of alleles in called genotypes`},BQ:{Number:1,Type:`Float`,Description:`RMS base quality`},CIGAR:{Number:1,Type:`Float`,Description:`Cigar string describing how to align an alternate allele to the reference allele`},DB:{Number:0,Type:`Flag`,Description:`dbSNP membership`},DP:{Number:1,Type:`Integer`,Description:`combined depth across samples`},END:{Number:1,Type:`Integer`,Description:`End position (for use with symbolic alleles)`},H2:{Number:0,Type:`Flag`,Description:`HapMap2 membership`},H3:{Number:0,Type:`Flag`,Description:`HapMap3 membership`},MQ:{Number:1,Type:null,Description:`RMS mapping quality`},MQ0:{Number:1,Type:`Integer`,Description:`Number of MAPQ == 0 reads`},NS:{Number:1,Type:`Integer`,Description:`Number of samples with data`},SB:{Number:4,Type:`Integer`,Description:`Strand bias`},SOMATIC:{Number:0,Type:`Flag`,Description:`Somatic mutation (for cancer genomics)`},VALIDATED:{Number:0,Type:`Flag`,Description:`Validated by follow-up experiment`},"1000G":{Number:0,Type:`Flag`,Description:`1000 Genomes membership`},IMPRECISE:{Number:0,Type:`Flag`,Description:`Imprecise structural variation`},NOVEL:{Number:0,Type:`Flag`,Description:`Indicates a novel structural variation`},SVTYPE:{Number:1,Type:`String`,Description:`Type of structural variant`},SVLEN:{Number:null,Type:`Integer`,Description:`Difference in length between REF and ALT alleles`},CIPOS:{Number:2,Type:`Integer`,Description:`Confidence interval around POS for imprecise variants`},CIEND:{Number:2,Type:`Integer`,Description:`Confidence interval around END for imprecise variants`},HOMLEN:{Type:`Integer`,Description:`Length of base pair identical micro-homology at event breakpoints`},HOMSEQ:{Type:`String`,Description:`Sequence of base pair identical micro-homology at event breakpoints`},BKPTID:{Type:`String`,Description:`ID of the assembled alternate allele in the assembly file`},MEINFO:{Number:4,Type:`String`,Description:`Mobile element info of the form NAME,START,END,POLARITY`},METRANS:{Number:4,Type:`String`,Description:`Mobile element transduction info of the form CHR,START,END,POLARITY`},DGVID:{Number:1,Type:`String`,Description:`ID of this element in Database of Genomic Variation`},DBVARID:{Number:1,Type:`String`,Description:`ID of this element in DBVAR`},DBRIPID:{Number:1,Type:`String`,Description:`ID of this element in DBRIP`},MATEID:{Number:null,Type:`String`,Description:`ID of mate breakends`},PARID:{Number:1,Type:`String`,Description:`ID of partner breakend`},EVENT:{Number:1,Type:`String`,Description:`ID of event associated to breakend`},CILEN:{Number:2,Type:`Integer`,Description:`Confidence interval around the inserted material between breakend`},DPADJ:{Type:`Integer`,Description:`Read Depth of adjacency`},CN:{Number:1,Type:`Integer`,Description:`Copy number of segment containing breakend`},CNADJ:{Number:null,Type:`Integer`,Description:`Copy number of adjacency`},CICN:{Number:2,Type:`Integer`,Description:`Confidence interval around copy number for the segment`},CICNADJ:{Number:null,Type:`Integer`,Description:`Confidence interval around copy number for the adjacency`}},GenotypeFields:{AD:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele`},ADF:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele on the forward strand`},ADR:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele on the reverse strand`},DP:{Number:1,Type:`Integer`,Description:`Read depth`},EC:{Number:`A`,Type:`Integer`,Description:`Expected alternate allele counts`},FT:{Number:1,Type:`String`,Description:`Filter indicating if this genotype was "called"`},GL:{Number:`G`,Type:`Float`,Description:`Genotype likelihoods`},GP:{Number:`G`,Type:`Float`,Description:`Genotype posterior probabilities`},GQ:{Number:1,Type:`Integer`,Description:`Conditional genotype quality`},GT:{Number:1,Type:`String`,Description:`Genotype`},HQ:{Number:2,Type:`Integer`,Description:`Haplotype quality`},MQ:{Number:1,Type:`Integer`,Description:`RMS mapping quality`},PL:{Number:`G`,Type:`Integer`,Description:`Phred-scaled genotype likelihoods rounded to the closest integer`},PQ:{Number:1,Type:`Integer`,Description:`Phasing quality`},PS:{Number:1,Type:`Integer`,Description:`Phase set`}},AltTypes:{DEL:{Description:`Deletion relative to the reference`},INS:{Description:`Insertion of novel sequence relative to the reference`},DUP:{Description:`Region of elevated copy number relative to the reference`},INV:{Description:`Inversion of reference sequence`},CNV:{Description:`Copy number variable region (may be both deletion and duplication)`},"DUP:TANDEM":{Description:`Tandem duplication`},"DEL:ME":{Description:`Deletion of mobile element relative to the reference`},"INS:ME":{Description:`Insertion of a mobile element relative to the reference`},NON_REF:{Description:`Represents any possible alternative allele at this location`},"*":{Description:`Represents any possible alternative allele at this location`}},FilterTypes:{PASS:{Description:`Passed all filters`}}}})),Nw,Pw=n((()=>{Ew(),Aw(),Mw(),Nw=class{constructor({header:e,strict:t=!0}){if(!e.length)throw Error(`empty header received`);let n=e.split(/[\r\n]+/).filter(Boolean);if(!n.length)throw Error(`no non-empty header lines specified`);this.strict=t,this.metadata={INFO:{...jw.InfoFields},FORMAT:{...jw.GenotypeFields},ALT:{...jw.AltTypes},FILTER:{...jw.FilterTypes}};let r;for(let e=0;e<n.length;e++){let t=n[e];if(t.startsWith(`#`))t.startsWith(`##`)?this.parseMetadata(t):r=t;else throw Error(`Bad line in header:\n${t}`)}if(!r)throw Error(`No format line found in header`);let i=r.trim().split(` `),a=i.slice(0,8),o=[`#CHROM`,`POS`,`ID`,`REF`,`ALT`,`QUAL`,`FILTER`,`INFO`];if(i.length<8)throw Error(`VCF header missing columns:\n${r}`);if(a.length!==o.length||!a.every((e,t)=>e===o[t]))throw Error(`VCF column headers not correct:\n${r}`);this.samples=i.slice(9)}parseMetadata(e){let t=/^##(.+?)=(.*)/.exec(e.trim());if(!t)throw Error(`Line is not a valid metadata line: ${e}`);let[n,r]=t.slice(1,3),i=n;if(r?.startsWith(`<`)){i in this.metadata||(this.metadata[i]={});let[e,t]=this.parseStructuredMetaVal(r);e?this.metadata[i][e]=t:this.metadata[i]=t}else this.metadata[i]=r}parseStructuredMetaVal(e){let t=kw(e),n=t.ID;return delete t.ID,`Number`in t&&(Number.isNaN(Number(t.Number))||(t.Number=Number(t.Number))),[n,t]}getMetadata(...e){let t=this.metadata,n=e.length;for(let r=0;r<n;r++)if(t=t[e[r]],!t)return t;return t}parseLine(e){return new Tw(e,this.metadata.INFO,this.metadata.FORMAT,this.samples,this.strict)}}}));function Fw(e){let t=e[0],n=e[e.length-1];if(t===`[`||t===`]`||n===`[`||n===`]`){let t=e.split(/[[\]]/),n=e.includes(`[`)?`right`:`left`,r,i,a,o=t.length;for(let e=0;e<o;e++){let n=t[e];n&&(n.includes(`:`)?(a=n,r=i?`right`:`left`):i=n)}if(!(a&&r&&i))throw Error(`Invalid breakend: ${e}`);return{MatePosition:a,Join:r,Replacement:i,MateDirection:n}}if(t===`.`)return{Join:`left`,SingleBreakend:!0,Replacement:e.slice(1)};if(n===`.`)return{Join:`right`,SingleBreakend:!0,Replacement:e.slice(0,-1)};if(t===`<`){let t=Iw.exec(e);if(!t)throw Error(`failed to parse ${e}`);let n=t[2];return n?{Join:`left`,Replacement:n,MateDirection:`right`,MatePosition:`<${t[1]}>:1`}:void 0}if(e.includes(`<`)){let t=Lw.exec(e);if(!t)throw Error(`failed to parse ${e}`);let n=t[1];return n?{Join:`right`,Replacement:n,MateDirection:`right`,MatePosition:`<${t[2]}>:1`}:void 0}}var Iw,Lw,Rw=n((()=>{Iw=/<(.*)>(.*)/,Lw=/(.*)<(.*)>/})),zw=r({Variant:()=>Tw,default:()=>Nw,parseBreakend:()=>Fw}),Bw=n((()=>{Ew(),Pw(),Rw()})),Vw=class extends JC{#e;get label(){return`vcfSource`}async _handleHeader(e){let t=(await Promise.resolve().then(()=>(Bw(),zw))).default;this.#e=new t({header:e})}_parseFeatures(e){return e.map(e=>{let t=this.#e.parseLine(e);return delete t.GENOTYPES,t.SAMPLES=t.SAMPLES(),t})}};function Hw(e){return e?.type==`vcf`}Km(Hw,Vw);var Uw=`
207
+ }`)(s,o));function d(e){r=e,i=e.length,n=0}function f(e,t,n,r){d(r),a=l(e,t,n);for(let e of u)e(a);return a}return f}function uS(e){return e?.type==`bigbed`}Wm(uS,cS);function dS(e,t){return Array.from({length:Math.ceil(e.length/t)},(n,r)=>e.slice(r*t,r*t+t))}var fS,pS=n((()=>{fS=class{constructor(e,t,n,r){this.minv=e,this.maxv=t,this.bin=n,this._fetchedSize=r}toUniqueString(){return`${this.minv.toString()}..${this.maxv.toString()} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(e){return this.minv.compareTo(e.minv)||this.maxv.compareTo(e.maxv)||this.bin-e.bin}fetchedSize(){return this._fetchedSize===void 0?this.maxv.blockPosition+65536-this.minv.blockPosition:this._fetchedSize}}}));function mS(e,t=0){let n=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24;return((e[t+4]|e[t+5]<<8|e[t+6]<<16|e[t+7]<<24)>>>0)*gS+(n>>>0)}var hS,gS,_S=n((()=>{hS=65536,gS=hS*hS}));function vS(e={}){return`aborted`in e?{signal:e}:e}function yS(e,t){let n=e.length;if(n===0)return e;let r;if(t){let i=t.blockPosition,a=t.dataPosition;r=[];for(let t=0;t<n;t++){let n=e[t],o=n.maxv;(o.blockPosition-i||o.dataPosition-a)>0&&r.push(n)}if(r.length===0)return r}else r=e;r.sort((e,t)=>{let n=e.minv.blockPosition-t.minv.blockPosition;return n===0?e.minv.dataPosition-t.minv.dataPosition:n});let i=[],a=r[0];i.push(a);let o=a.minv.blockPosition,s=a.maxv.blockPosition;for(let e=1;e<r.length;e++){let t=r[e],n=t.minv.blockPosition,c=t.maxv.blockPosition;if(n-s<65e3&&c-o<5e6){let e=t.maxv,n=a.maxv;(c-s||e.dataPosition-n.dataPosition)>0&&(a.maxv=e,s=c)}else i.push(t),a=t,o=n,s=c}return i}function bS(e,t){return{lineCount:mS(e,t)}}function xS(e,t){return e?e.compareTo(t)>0?t:e:t}function SS(e,t=e=>e){let n=0,r=0,i=[],a={};for(let o=0;o<e.length;o+=1)if(!e[o]){if(r<o){let s=``;for(let t=r;t<o;t++)s+=String.fromCharCode(e[t]);s=t(s),i[n]=s,a[s]=n}r=o+1,n+=1}return{refNameToId:a,refIdToName:i}}function CS(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function wS(e,t,n){return!!((e&t)!==t||e&n)}function TS(e,t){return t===`*`?e===void 0:`${e}`!=`${t}`}function ES(e){if(!e)return``;let{flagInclude:t=0,flagExclude:n=0,tagFilter:r}=e;return`:f${t}x${n}${r?`:${r.tag}=${r.value??`*`}`:``}`}var DS=n((()=>{_S()})),OS,kS=n((()=>{DS(),OS=class{constructor({filehandle:e,renameRefSeq:t=e=>e}){this.filehandle=e,this.renameRefSeq=t}async estimatedBytesForRegions(e,t){let n=yS((await Promise.all(e.map(e=>this.blocksForRange(e.refId,e.start,e.end,t)))).flat()),r=0;for(let e of n)r+=e.fetchedSize();return r}}}));function AS(e,t=0,n=!1){if(n)throw Error(`big-endian virtual file offsets not implemented`);return new jS(e[t+7]*1099511627776+e[t+6]*4294967296+e[t+5]*16777216+e[t+4]*65536+e[t+3]*256+e[t+2],e[t+1]<<8|e[t])}var jS,MS=n((()=>{jS=class{constructor(e,t){this.blockPosition=e,this.dataPosition=t}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(e){return this.blockPosition-e.blockPosition||this.dataPosition-e.dataPosition}}}));function NS(e,t){return e-e%t}function PS(e,t){return e-e%t+t}function FS(e,t){return--t,[[0,0],[1+(e>>26),1+(t>>26)],[9+(e>>23),9+(t>>23)],[73+(e>>20),73+(t>>20)],[585+(e>>17),585+(t>>17)],[4681+(e>>14),4681+(t>>14)]]}var IS,LS,RS=n((()=>{Nb(),pS(),kS(),DS(),MS(),IS=21578050,LS=class extends OS{async lineCount(e,t){return(await this.parse(t)).indices(e)?.stats?.lineCount||0}async _parse(e){let t=await this.filehandle.readFile(),n=new DataView(t.buffer);if(n.getUint32(0,!0)!==IS)throw Error(`Not a BAI file`);let r=n.getInt32(4,!0),i=((1<<18)-1)/7,a=8,o,s=[];for(let e=0;e<r;e++){s.push(a);let e=n.getInt32(a,!0);a+=4;for(let t=0;t<e;t+=1){let e=n.getUint32(a,!0);if(a+=4,e===i+1)a+=4,a+=32;else if(e>i+1)throw Error(`bai index contains too many bins, please use CSI`);else{let e=n.getInt32(a,!0);a+=4;for(let t=0;t<e;t++)a+=8,a+=8}}let r=n.getInt32(a,!0);a+=4;let c=Array(r);for(let e=0;e<r;e++){let n=AS(t,a);a+=8,o=xS(o,n),c[e]=n}}let c=new Mb({maxSize:5});function l(e){let r=s[e];if(r===void 0)return;let a=n.getInt32(r,!0),c;r+=4;let l={};for(let e=0;e<a;e+=1){let e=n.getUint32(r,!0);if(r+=4,e===i+1)r+=4,c=bS(t,r+16),r+=32;else if(e>i+1)throw Error(`bai index contains too many bins, please use CSI`);else{let i=n.getInt32(r,!0);r+=4;let a=Array(i);for(let n=0;n<i;n++){let i=AS(t,r);r+=8;let s=AS(t,r);r+=8,o=xS(o,i),a[n]=new fS(i,s,e)}l[e]=a}}let u=n.getInt32(r,!0);r+=4;let d=Array(u);for(let e=0;e<u;e++){let n=AS(t,r);r+=8,o=xS(o,n),d[e]=n}return{binIndex:l,linearIndex:d,stats:c}}return{bai:!0,firstDataLine:o,maxBlockSize:65536,indices:e=>{if(!c.has(e)){let t=l(e);return t&&c.set(e,t),t}return c.get(e)},refCount:r}}async indexCov(e,t,n,r){let i=16384,a=t!==void 0,o=(await this.parse(r)).indices(e);if(!o)return[];let{linearIndex:s,stats:c}=o;if(s.length===0)return[];let l=n===void 0?(s.length-1)*i:PS(n,i),u=t===void 0?0:NS(t,i),d=a?Array((l-u)/i):Array(s.length-1),f=s[s.length-1].blockPosition;if(l>(s.length-1)*i)throw Error(`query outside of range of linear index`);let p=s[u/i].blockPosition;for(let e=u/i,t=0;e<l/i;e++,t++)d[t]={score:s[e+1].blockPosition-p,start:e*i,end:e*i+i},p=s[e+1].blockPosition;return d.map(e=>({...e,score:e.score*(c?.lineCount||0)/f}))}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=await this.parse(r);if(!i)return[];let a=i.indices(e);if(!a)return[];let o=FS(t,n),s=[],{binIndex:c}=a;for(let[e,t]of o)for(let n=e;n<=t;n++){let e=c[n];if(e)for(let t=0,n=e.length;t<n;t++)s.push(e[t])}let{linearIndex:l}=a,u=l.length,d=l[Math.min(t>>14,u-1)];return yS(s,d)}async parse(e={}){return this.setupP||=this._parse(e).catch(e=>{throw this.setupP=void 0,e}),this.setupP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices(e)?.binIndex}}})),zS,BS,VS=n((()=>{zS=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],typeof Int32Array<`u`&&(zS=new Int32Array(zS)),BS=(e,t)=>{let n=t===0?0:~~t^-1;for(let t=0;t<e.length;t++)n=zS[(n^e[t])&255]^n>>>8;return n^-1}}));function HS(e,t){return e*2**t}function US(e,t){return Math.floor(e/2**t)}var WS,GS,KS,qS=n((()=>{Ky(),Nb(),pS(),kS(),DS(),MS(),WS=21582659,GS=38359875,KS=class extends OS{constructor(){super(...arguments),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(e,t){return(await this.parse(t)).indices(e)?.stats?.lineCount||0}async indexCov(){return[]}parseAuxData(e,t){let n=new DataView(e.buffer),r=n.getUint32(t,!0),i=r&65536?`zero-based-half-open`:`1-based-closed`,a={0:`generic`,1:`SAM`,2:`VCF`}[r&15];if(!a)throw Error(`invalid Tabix preset format flags ${r}`);let o={ref:n.getInt32(t+4,!0),start:n.getInt32(t+8,!0),end:n.getInt32(t+12,!0)},s=n.getInt32(t+16,!0),c=s?String.fromCharCode(s):``,l=n.getInt32(t+20,!0),u=n.getInt32(t+24,!0);return{columnNumbers:o,coordinateType:i,metaValue:s,metaChar:c,skipLines:l,format:a,formatFlags:r,...SS(e.subarray(t+28,t+28+u),this.renameRefSeq)}}async _parse(e){let t=await Ry(await this.filehandle.readFile(e)),n=new DataView(t.buffer),r,i=n.getUint32(0,!0);if(i===WS)r=1;else if(i===GS)r=2;else throw Error(`Not a CSI file ${i}`);this.minShift=n.getInt32(4,!0),this.depth=n.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;let a=this.maxBinNumber,o=n.getInt32(12,!0),s=o>=30?this.parseAuxData(t,16):void 0,c=n.getInt32(16+o,!0),l=16+o+4,u,d=[];for(let e=0;e<c;e++){d.push(l);let e=n.getInt32(l,!0);l+=4;for(let r=0;r<e;r++){let e=n.getUint32(l,!0);if(l+=4,e>this.maxBinNumber)l+=44;else{l+=8;let e=n.getInt32(l,!0);l+=4;for(let n=0;n<e;n+=1){let e=AS(t,l);l+=8,l+=8,u=xS(u,e)}}}}let f=new Mb({maxSize:5});function p(e){let r=d[e];if(r===void 0)return;let i=n.getInt32(r,!0);r+=4;let o={},s;for(let e=0;e<i;e++){let e=n.getUint32(r,!0);if(r+=4,e>a)s=bS(t,r+28),r+=44;else{u=xS(u,AS(t,r)),r+=8;let i=n.getInt32(r,!0);r+=4;let a=Array(i);for(let n=0;n<i;n+=1){let i=AS(t,r);r+=8;let o=AS(t,r);r+=8,a[n]=new fS(i,o,e)}o[e]=a}}return{binIndex:o,stats:s}}return{csiVersion:r,firstDataLine:u,indices:e=>{if(!f.has(e)){let t=p(e);return t&&f.set(e,t),t}return f.get(e)},refCount:c,csi:!0,maxBlockSize:65536,...s}}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=(await this.parse(r)).indices(e);if(!i)return[];let a=this.reg2bins(t,n);if(a.length===0)return[];let o=[],{binIndex:s}=i;for(let[e,t]of a)for(let n=e;n<=t;n++){let e=s[n];if(e)for(let t=0,n=e.length;t<n;t++)o.push(e[t])}return yS(o,new jS(0,0))}reg2bins(e,t){--e,e<1&&(e=1),t>2**50&&(t=2**34),--t;let n=0,r=0,i=this.minShift+this.depth*3,a=[];for(;n<=this.depth;i-=3,r+=HS(1,n*3),n+=1){let n=r+US(e,i),o=r+US(t,i);if(o-n+a.length>this.maxBinNumber)throw Error(`query ${e}-${t} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);a.push([n,o])}return a}async parse(e={}){return this.setupP||=this._parse(e).catch(e=>{throw this.setupP=void 0,e}),this.setupP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices(e)?.binIndex}}})),JS,YS=n((()=>{JS=class{read(){throw Error(`never called`)}stat(){throw Error(`never called`)}readFile(){throw Error(`never called`)}close(){throw Error(`never called`)}}})),XS=n((()=>{})),ZS,QS=n((()=>{ZS={BAM_FPAIRED:1,BAM_FPROPER_PAIR:2,BAM_FUNMAP:4,BAM_FMUNMAP:8,BAM_FREVERSE:16,BAM_FMREVERSE:32,BAM_FREAD1:64,BAM_FREAD2:128,BAM_FSECONDARY:256,BAM_FQCFAIL:512,BAM_FDUP:1024,BAM_FSUPPLEMENTARY:2048}})),$S,eC,tC,nC,rC,iC=n((()=>{XS(),QS(),$S=`=ACMGRSVTWYHKDBN`.split(``),eC=`F F .F R .R F .R R .F2F1.F2R1.R2F1.R2R1.F1F2.F1R2.R1F2.R1R2.F2F1.F2R1.R2F1.R2R1.F F .R F .F R .R R .F1F2.R1F2.F1R2.R1R2.F2F1.R2F1.F2R1.R2R1.F1F2.R1F2.F1R2.R1R2`.split(`.`),tC=[77,73,68,78,83,72,80,61,88,63,63,63,63,63,63,63],nC=461,rC=class{constructor(e){this.bytes=e.bytes,this.fileOffset=e.fileOffset,this._dataView=new DataView(this.bytes.byteArray.buffer)}get byteArray(){return this.bytes.byteArray}get flags(){return this._cachedFlags===void 0&&(this._cachedFlags=(this._dataView.getInt32(this.bytes.start+16,!0)&4294901760)>>16),this._cachedFlags}get ref_id(){return this._cachedRefId===void 0&&(this._cachedRefId=this._dataView.getInt32(this.bytes.start+4,!0)),this._cachedRefId}get start(){return this._cachedStart===void 0&&(this._cachedStart=this._dataView.getInt32(this.bytes.start+8,!0)),this._cachedStart}get end(){return this._cachedEnd===void 0&&(this._cachedEnd=this.start+this.length_on_ref),this._cachedEnd}get mq(){let e=(this.bin_mq_nl&65280)>>8;return e===255?void 0:e}get score(){return this.mq}get qual(){if(this.isSegmentUnmapped())return null;{let e=this.b0+this.read_name_length+this.num_cigar_bytes+this.num_seq_bytes;return this.byteArray.subarray(e,e+this.seq_length)}}get strand(){return this.isReverseComplemented()?-1:1}get b0(){return this.bytes.start+36}get tagsStart(){return this._cachedTagsStart===void 0&&(this._cachedTagsStart=this.b0+this.read_name_length+this.num_cigar_bytes+this.num_seq_bytes+this.seq_length),this._cachedTagsStart}get name(){let e=this.read_name_length-1,t=this.b0,n=this.byteArray,r=Array(e);for(let i=0;i<e;i++)r[i]=n[t+i];return String.fromCharCode(...r)}get NUMERIC_MD(){if(this._cachedNUMERIC_MD===void 0){let e=this.getTagRaw(`MD`);this._cachedNUMERIC_MD=e instanceof Uint8Array?e:null}return this._cachedNUMERIC_MD===null?void 0:this._cachedNUMERIC_MD}get tags(){return this._cachedTags===void 0&&(this._cachedTags=this._computeTags()),this._cachedTags}getTag(e){return this._cachedTags===void 0?this._findTag(e,!1):this._cachedTags[e]}getTagRaw(e){return this._findTag(e,!0)}_findTag(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),i=this.tagsStart,a=this.bytes.end,o=this.byteArray;for(;i<a;){let e=o[i],s=o[i+1],c=o[i+2];i+=3;let l=e===n&&s===r;switch(c){case 65:if(l)return String.fromCharCode(o[i]);i+=1;break;case 105:if(l)return this._dataView.getInt32(i,!0);i+=4;break;case 73:if(l)return this._dataView.getUint32(i,!0);i+=4;break;case 99:if(l)return this._dataView.getInt8(i);i+=1;break;case 67:if(l)return this._dataView.getUint8(i);i+=1;break;case 115:if(l)return this._dataView.getInt16(i,!0);i+=2;break;case 83:if(l)return this._dataView.getUint16(i,!0);i+=2;break;case 102:if(l)return this._dataView.getFloat32(i,!0);i+=4;break;case 90:case 72:if(l){let e=i;for(;i<a&&o[i]!==0;)i++;if(t)return o.subarray(e,i);let n=[];for(let t=e;t<i;t++)n.push(String.fromCharCode(o[t]));return n.join(``)}for(;i<=a&&o[i++]!==0;);break;case 66:{let e=o[i++],t=this._dataView.getInt32(i,!0);i+=4;let n=o.byteOffset+i;if(l){if(e===105){if(n%4==0)return new Int32Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getInt32(i+n*4,!0);return e}else if(e===73){if(n%4==0)return new Uint32Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getUint32(i+n*4,!0);return e}else if(e===115){if(n%2==0)return new Int16Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getInt16(i+n*2,!0);return e}else if(e===83){if(n%2==0)return new Uint16Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getUint16(i+n*2,!0);return e}else if(e===99)return new Int8Array(o.buffer,n,t);else if(e===67)return new Uint8Array(o.buffer,n,t);else if(e===102){if(n%4==0)return new Float32Array(o.buffer,n,t);let e=Array(t);for(let n=0;n<t;n++)e[n]=this._dataView.getFloat32(i+n*4,!0);return e}}e===105||e===73||e===102?i+=t<<2:e===115||e===83?i+=t<<1:(e===99||e===67)&&(i+=t);break}}}}_computeTags(){let e=this.tagsStart,t=this.bytes.end,n=this.byteArray,r={};for(;e<t;){let i=String.fromCharCode(n[e],n[e+1]),a=n[e+2];switch(e+=3,a){case 65:r[i]=String.fromCharCode(n[e]),e+=1;break;case 105:r[i]=this._dataView.getInt32(e,!0),e+=4;break;case 73:r[i]=this._dataView.getUint32(e,!0),e+=4;break;case 99:r[i]=this._dataView.getInt8(e),e+=1;break;case 67:r[i]=this._dataView.getUint8(e),e+=1;break;case 115:r[i]=this._dataView.getInt16(e,!0),e+=2;break;case 83:r[i]=this._dataView.getUint16(e,!0),e+=2;break;case 102:r[i]=this._dataView.getFloat32(e,!0),e+=4;break;case 90:case 72:{let a=[];for(;e<=t;){let t=n[e++];if(t!==0)a.push(String.fromCharCode(t));else break}r[i]=a.join(``);break}case 66:{let t=n[e++],a=this._dataView.getInt32(e,!0);e+=4;let o=n.byteOffset+e;if(t===105){if(o%4==0)r[i]=new Int32Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getInt32(e+n*4,!0);r[i]=t}e+=a<<2}else if(t===73){if(o%4==0)r[i]=new Uint32Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getUint32(e+n*4,!0);r[i]=t}e+=a<<2}else if(t===115){if(o%2==0)r[i]=new Int16Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getInt16(e+n*2,!0);r[i]=t}e+=a<<1}else if(t===83){if(o%2==0)r[i]=new Uint16Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getUint16(e+n*2,!0);r[i]=t}e+=a<<1}else if(t===99)r[i]=new Int8Array(n.buffer,o,a),e+=a;else if(t===67)r[i]=new Uint8Array(n.buffer,o,a),e+=a;else if(t===102){if(o%4==0)r[i]=new Float32Array(n.buffer,o,a);else{let t=Array(a);for(let n=0;n<a;n++)t[n]=this._dataView.getFloat32(e+n*4,!0);r[i]=t}e+=a<<2}break}default:console.error(`Unknown BAM tag type`,a);break}}return r}isPaired(){return!!(this.flags&ZS.BAM_FPAIRED)}isProperlyPaired(){return!!(this.flags&ZS.BAM_FPROPER_PAIR)}isSegmentUnmapped(){return!!(this.flags&ZS.BAM_FUNMAP)}isMateUnmapped(){return!!(this.flags&ZS.BAM_FMUNMAP)}isReverseComplemented(){return!!(this.flags&ZS.BAM_FREVERSE)}isMateReverseComplemented(){return!!(this.flags&ZS.BAM_FMREVERSE)}isRead1(){return!!(this.flags&ZS.BAM_FREAD1)}isRead2(){return!!(this.flags&ZS.BAM_FREAD2)}isSecondary(){return!!(this.flags&ZS.BAM_FSECONDARY)}isFailedQc(){return!!(this.flags&ZS.BAM_FQCFAIL)}isDuplicate(){return!!(this.flags&ZS.BAM_FDUP)}isSupplementary(){return!!(this.flags&ZS.BAM_FSUPPLEMENTARY)}get cigarAndLength(){return this._cachedCigarAndLength===void 0&&(this._cachedCigarAndLength=this._computeCigarAndLength()),this._cachedCigarAndLength}_computeCigarAndLength(){if(this.isSegmentUnmapped())return{length_on_ref:0,NUMERIC_CIGAR:new Uint32Array};let e=this.num_cigar_ops,t=this.b0+this.read_name_length,n=this._dataView.getInt32(t,!0),r=n>>4;if((n&15)==4&&r===this.seq_length){t+=4;let e=this._dataView.getInt32(t,!0),n=e>>4;return(e&15)!=3&&console.warn(`CG tag with no N tag`),{NUMERIC_CIGAR:this.tags.CG,length_on_ref:n}}let i=this.byteArray.byteOffset+t;if(i%4==0&&e>50){let t=new Uint32Array(this.byteArray.buffer,i,e),n=0;for(let r=0;r<e;++r){let e=t[r];n+=(e>>4)*(nC>>(e&15)&1)}return{NUMERIC_CIGAR:t,length_on_ref:n}}let a=Array(e),o=0;for(let n=0;n<e;++n){let e=this._dataView.getInt32(t+n*4,!0)|0;a[n]=e,o+=(e>>4)*(nC>>(e&15)&1)}return{NUMERIC_CIGAR:a,length_on_ref:o}}get length_on_ref(){return this.cigarAndLength.length_on_ref}get NUMERIC_CIGAR(){return this.cigarAndLength.NUMERIC_CIGAR}get CIGAR(){let e=this.NUMERIC_CIGAR,t=``;for(let n=0,r=e.length;n<r;n++){let r=e[n],i=r>>4,a=tC[r&15];t+=i+String.fromCharCode(a)}return t}get num_cigar_ops(){return this.flag_nc&65535}get num_cigar_bytes(){return this.num_cigar_ops<<2}get read_name_length(){return this.bin_mq_nl&255}get num_seq_bytes(){return this.seq_length+1>>1}get NUMERIC_SEQ(){let e=this.b0+this.read_name_length+this.num_cigar_bytes;return this.byteArray.subarray(e,e+this.num_seq_bytes)}get seq(){let e=this.NUMERIC_SEQ,t=this.seq_length,n=Array(t),r=0,i=t>>1;for(let t=0;t<i;++t){let i=e[t];n[r++]=$S[(i&240)>>4],n[r++]=$S[i&15]}return r<t&&(n[r]=$S[(e[i]&240)>>4]),n.join(``)}get pair_orientation(){let e=this.flags;if(!(e&12||this.ref_id!==this.next_refid))return eC[e>>4&15|(this.template_length>0?16:0)]}get bin_mq_nl(){return this._dataView.getInt32(this.bytes.start+12,!0)}get flag_nc(){return this._dataView.getInt32(this.bytes.start+16,!0)}get seq_length(){return this._dataView.getInt32(this.bytes.start+20,!0)}get next_refid(){return this._dataView.getInt32(this.bytes.start+24,!0)}get next_pos(){return this._dataView.getInt32(this.bytes.start+28,!0)}get template_length(){return this._dataView.getInt32(this.bytes.start+32,!0)}seqAt(e){if(e<this.seq_length){let t=e>>1,n=this.byteArray[this.b0+this.read_name_length+this.num_cigar_bytes+t];return e%2==0?$S[(n&240)>>4]:$S[n&15]}else return}toJSON(){let e={};for(let t of Object.keys(this))t.startsWith(`_`)||t===`bytes`||(e[t]=this[t]);return e}}}));function aC(e){let t=e.split(/\r?\n/),n=[];for(let e of t){let[t,...r]=e.split(/\t/);t&&n.push({tag:t.slice(1),data:r.map(e=>{let t=e.indexOf(`:`);return{tag:e.slice(0,t),value:e.slice(t+1)}})})}return n}var oC=n((()=>{})),sC,cC,lC=n((()=>{Ky(),Nb(),VS(),kg(),RS(),qS(),YS(),iC(),oC(),DS(),sC=65536,cC=class{constructor({bamFilehandle:e,bamPath:t,bamUrl:n,baiPath:r,baiFilehandle:i,baiUrl:a,csiPath:o,csiFilehandle:s,csiUrl:c,htsget:l,renameRefSeqs:u=e=>e,recordClass:d}){if(this.htsget=!1,this.chunkFeatureCache=new Mb({maxSize:100}),this.renameRefSeq=u,this.RecordClass=d??rC,e)this.bam=e;else if(t)this.bam=new Og(t);else if(n)this.bam=new Tg(n);else if(l)this.htsget=!0,this.bam=new JS;else throw Error(`unable to initialize bam`);if(s)this.index=new KS({filehandle:s});else if(o)this.index=new KS({filehandle:new Og(o)});else if(c)this.index=new KS({filehandle:new Tg(c)});else if(i)this.index=new LS({filehandle:i});else if(r)this.index=new LS({filehandle:new Og(r)});else if(a)this.index=new LS({filehandle:new Tg(a)});else if(t)this.index=new LS({filehandle:new Og(`${t}.bai`)});else if(n)this.index=new LS({filehandle:new Tg(`${n}.bai`)});else if(l)this.htsget=!0;else throw Error(`unable to infer index format`)}async getHeaderPre(e){let t=vS(e);if(!this.index)return;let n=await this.index.parse(t),r=n.firstDataLine===void 0?void 0:n.firstDataLine.blockPosition+sC,i=await Ry(r===void 0?await this.bam.readFile():await this.bam.read(r,0)),a=new DataView(i.buffer);if(a.getInt32(0,!0)!==21840194)throw Error(`Not a BAM file`);let o=a.getInt32(4,!0);this.header=new TextDecoder(`utf8`).decode(i.subarray(8,8+o));let s=o+8;for(let e=0;e<5;e++){if(this._hasEnoughRefSeqData(i,s)){let{chrToIndex:e,indexToChr:t}=this._parseRefSeqs(i,s);return this.chrToIndex=e,this.indexToChr=t,aC(this.header)}if(r===void 0)throw Error(`Insufficient data for reference sequences in ${i.length} bytes`);r*=2,i=await Ry(await this.bam.read(r,0))}throw Error(`Insufficient data for reference sequences after 5 retries`)}getHeader(e){return this.headerP||=this.getHeaderPre(e).catch(e=>{throw this.headerP=void 0,e}),this.headerP}async getHeaderText(e={}){return await this.getHeader(e),this.header}_hasEnoughRefSeqData(e,t){if(t+4>e.length)return!1;let n=new DataView(e.buffer),r=n.getInt32(t,!0),i=t+4;for(let t=0;t<r;t+=1){if(i+8>e.length)return!1;let t=n.getInt32(i,!0);i=i+8+t}return!0}_parseRefSeqs(e,t){let n=new DataView(e.buffer),r=n.getInt32(t,!0),i=t+4,a={},o=[],s=new TextDecoder(`utf8`);for(let t=0;t<r;t+=1){let r=n.getInt32(i,!0),c=this.renameRefSeq(s.decode(e.subarray(i+4,i+4+r-1))),l=n.getInt32(i+r+4,!0);a[c]=t,o.push({refName:c,length:l}),i=i+8+r}return{chrToIndex:a,indexToChr:o}}async getRecordsForRange(e,t,n,r){await this.getHeader(r);let i=this.chrToIndex?.[e];if(i===void 0||!this.index)return[];let a=await this.index.blocksForRange(i,t-1,n,r);return this._fetchChunkFeaturesDirect(a,i,t,n,r)}chunkCacheKey(e,t){let{minv:n,maxv:r}=e;return`${n.blockPosition}:${n.dataPosition}-${r.blockPosition}:${r.dataPosition}${ES(t)}`}blocksOverlap(e,t,n,r){return e<=r&&t>=n}evictOverlappingChunks(e,t){for(let[n,r]of this.chunkFeatureCache)this.blocksOverlap(e,t,r.minBlock,r.maxBlock)&&this.chunkFeatureCache.delete(n)}async _fetchChunkFeaturesDirect(e,t,n,r,i={}){let{viewAsPairs:a,filterBy:o}=i,{flagInclude:s=0,flagExclude:c=0,tagFilter:l}=o||{},u=[];for(let a=0,d=e.length;a<d;a++){let d=e[a],f=this.chunkCacheKey(d,o),p=d.minv.blockPosition,m=d.maxv.blockPosition,h,g=this.chunkFeatureCache.get(f);if(g)h=g.features;else{this.evictOverlappingChunks(p,m);let{data:e,cpositions:t,dpositions:n}=await this._readChunk({chunk:d,opts:i}),r=await this.readBamFeatures(e,t,n,d);if(o){h=[];for(let e=0,t=r.length;e<t;e++){let t=r[e];wS(t.flags,s,c)||l&&TS(t.tags[l.tag],l.value)||h.push(t)}}else h=r;this.chunkFeatureCache.set(f,{minBlock:p,maxBlock:m,features:h})}let _=!1;for(let e=0,i=h.length;e<i;e++){let i=h[e];if(i.ref_id===t)if(i.start>=r){_=!0;break}else i.end>=n&&u.push(i)}if(_)break}if(a){let e=await this.fetchPairs(t,u,i);for(let t=0,n=e.length;t<n;t++)u.push(e[t])}return u}async fetchPairs(e,t,n){let{pairAcrossChr:r,maxInsertSize:i=2e5}=n,a={},o={};for(let e=0,n=t.length;e<n;e++){let n=t[e],r=n.name;a[r]=(a[r]||0)+1,o[n.fileOffset]=1}let s=[];for(let o=0,c=t.length;o<c;o++){let c=t[o],l=c.name;this.index&&a[l]===1&&(r||c.next_refid===e&&Math.abs(c.start-c.next_pos)<i)&&s.push(this.index.blocksForRange(c.next_refid,c.next_pos,c.next_pos+1,n))}let c=new Map,l=await Promise.all(s);for(let e=0,t=l.length;e<t;e++){let t=l[e];for(let e=0,n=t.length;e<n;e++){let n=t[e],r=n.toString();c.has(r)||c.set(r,n)}}return(await Promise.all([...c.values()].map(async e=>{let{data:t,cpositions:r,dpositions:i,chunk:s}=await this._readChunk({chunk:e,opts:n}),c=[],l=await this.readBamFeatures(t,r,i,s);for(let e=0,t=l.length;e<t;e++){let t=l[e];a[t.name]===1&&!o[t.fileOffset]&&c.push(t)}return c}))).flat()}async _readChunk({chunk:e,opts:t}){let{buffer:n,cpositions:r,dpositions:i}=await zy(await this.bam.read(e.fetchedSize(),e.minv.blockPosition,t),e);return{data:n,cpositions:r,dpositions:i,chunk:e}}async readBamFeatures(e,t,n,r){let i=0,a=[],o=0,s=new DataView(e.buffer),c=n.length>0,l=t.length>0;for(;i+4<e.length;){let u=s.getInt32(i,!0),d=i+4+u-1;if(c){for(;i+r.minv.dataPosition>=n[o++];);o--}if(d<e.length){let s=new this.RecordClass({bytes:{byteArray:e,start:i,end:d},fileOffset:l?t[o]*256+(i-n[o])+r.minv.dataPosition+1:BS(e.subarray(i,d))>>>0});a.push(s)}i=d+1}return a}async hasRefSeq(e){let t=this.chrToIndex?.[e];return t===void 0?!1:this.index?.hasRefSeq(t)}async lineCount(e){let t=this.chrToIndex?.[e];return t===void 0||!this.index?0:this.index.lineCount(t)}async indexCov(e,t,n){if(!this.index)return[];await this.index.parse();let r=this.chrToIndex?.[e];return r===void 0?[]:this.index.indexCov(r,t,n)}async blocksForRange(e,t,n,r){if(!this.index)return[];await this.index.parse();let i=this.chrToIndex?.[e];return i===void 0?[]:this.index.blocksForRange(i,t,n,r)}clearFeatureCache(){this.chunkFeatureCache.clear()}async estimatedBytesForRegions(e,t){if(!this.index)return 0;if(await this.getHeader(t),!this.chrToIndex)throw Error(`Header not yet parsed`);let n=e.flatMap(e=>{let t=this.chrToIndex[e.refName];return t===void 0?[]:[{refId:t,start:e.start,end:e.end}]});return this.index.estimatedBytesForRegions(n,t)}}}));async function uC(e,t){let n=await Promise.all(e.map(async e=>{let{url:n,headers:r}=e;if(n.startsWith(`data:`)){let e=await fetch(n);if(!e.ok)throw Error(`failed to decode base64`);let t=await e.arrayBuffer();return new Uint8Array(t)}else{let{referer:e,...i}=r,a=await fetch(n,{...t,headers:{...t?.headers,...i}});if(!a.ok)throw Error(`HTTP ${a.status} fetching ${n}: ${await a.text()}`);return new Uint8Array(await a.arrayBuffer())}}));return CS(await Promise.all(n.map(e=>Ry(e))))}var dC,fC=n((()=>{Ky(),lC(),oC(),DS(),dC=class extends cC{constructor(e){super({htsget:!0,recordClass:e.recordClass}),this.baseUrl=e.baseUrl,this.trackId=e.trackId}async getRecordsForRange(e,t,n,r){let i=`${`${this.baseUrl}/${this.trackId}`}?referenceName=${e}&start=${t}&end=${n}&format=BAM`,a=this.chrToIndex?.[e];if(a===void 0)return[];let o=await fetch(i,{...r});if(!o.ok)throw Error(`HTTP ${o.status} fetching ${i}: ${await o.text()}`);let s=await uC((await o.json()).htsget.urls.slice(1),r),c=await this.readBamFeatures(s,[],[],{minv:{dataPosition:0,blockPosition:0},maxv:{dataPosition:0,blockPosition:0}}),l=[];for(let e=0,r=c.length;e<r;e++){let r=c[e];if(r.ref_id===a){if(r.start>=n)break;r.end>=t&&l.push(r)}}return l}async getHeader(e={}){let t=`${this.baseUrl}/${this.trackId}?referenceName=na&class=header`,n=await fetch(t,e);if(!n.ok)throw Error(`HTTP ${n.status} fetching ${t}: ${await n.text()}`);let r=await uC((await n.json()).htsget.urls,e),i=new DataView(r.buffer);if(i.getInt32(0,!0)!==21840194)throw Error(`Not a BAM file`);let a=i.getInt32(4,!0),o=aC(new TextDecoder(`utf8`).decode(r.subarray(8,8+a))),s=[],c={},l=o.filter(e=>e.tag===`SQ`);for(let[e,t]of l.entries()){let n=``,r=0;for(let e of t.data)e.tag===`SN`?n=e.value:e.tag===`LN`&&(r=+e.value);c[n]=e,s[e]={refName:n,length:r}}return this.chrToIndex=c,this.indexToChr=s,o}}})),pC=r({BAI:()=>LS,BamFile:()=>cC,BamRecord:()=>rC,CSI:()=>KS,HtsgetFile:()=>dC}),mC=n((()=>{RS(),lC(),qS(),iC(),fC()})),hC=class extends bg{#e;chrPrefixFixer=e=>e;constructor(e,t){let n={channel:`x`,windowSize:2e4,debounce:200,debounceMode:`domain`,...e};if(super(t,n.channel),this.params=n,!this.params.url)throw Error(`No URL provided for BamSource`);this.setupDebouncing(this.params),this.initializedPromise=new Promise(e=>{Promise.all([Promise.resolve().then(()=>(mC(),pC)),Promise.resolve().then(()=>(kg(),Dg))]).then(([{BamFile:t},{RemoteFile:n}])=>{let r=e=>new n(rh(e,this.view.getBaseUrl()));this.#e=new t({bamFilehandle:r(this.params.url),baiFilehandle:r(this.params.indexUrl??this.params.url+`.bai`)}),this.#e.getHeader().then(t=>{let n=this.genome.hasChrPrefix(),r=this.#e.indexToChr?.[0]?.refName.startsWith(`chr`);n&&!r?this.chrPrefixFixer=e=>e.replace(`chr`,``):!n&&r&&(this.chrPrefixFixer=e=>`chr`+e),e()})})})}get label(){return`bamSource`}async loadInterval(e){let t=await this.discretizeAndLoad(e,async(e,t)=>this.#e.getRecordsForRange(this.chrPrefixFixer(e.chrom),e.startPos,e.endPos,{signal:t}).then(t=>t.map(t=>({chrom:e.chrom,start:t.start,end:t.end,name:t.name,cigar:t.CIGAR,mapq:t.mq,strand:t.strand===1?`+`:`-`}))));t&&this.publishData(t)}};function gC(e){return e?.type==`bam`}Wm(gC,hC);function _C(e){return`values`in e}var vC=class extends Xm{constructor(e,t){if(super(t),this.params=e,typeof e.values==`string`&&!e?.format?.type)throw Error(`Data format type (csv, dsv, ...) must be specified if a string is provided!`)}get label(){return`inlineSource`}isTrivial(){let e=this.params.values,t=Array.isArray(e)?e[0]:e;return!!(t&&Object.keys(t).length==0&&t.constructor===Object)}updateDynamicData(e){this.#e(e)}loadSynchronously(){this.#e(this.params.values)}#e(e){let t=[],n=e=>e;if(Array.isArray(e))e.length>0&&(t=e,n=DC(e[0]));else if(typeof e==`object`)t=[e];else if(typeof e==`string`)t=wo(e,SC(xC(this.params)));else throw Error(`"values" in data configuration is not an array, object, or a string!`);this.reset(),this.beginBatch({type:`file`});for(let e of t)this._propagate(n(e));this.complete()}async load(){this.loadSynchronously()}},yC=new Set([`csv`,`tsv`,`dsv`]),bC=new Set([`gz`,`bgz`,`bgzf`]);function xC(e,t=[]){if(!_C(e)&&!MC(e))return;let n={...e.format};if(n.type??=MC(e)&&wC(t),n.parse===void 0&&NC(n.type)&&(n.parse=`auto`),!n.type)throw Error(`Format for the data source was not defined and it could not be inferred: `+JSON.stringify(e));return n}function SC(e){let t={...e};return(AC(t)||jC(t))&&t.columns&&!(`header`in t)&&(t.header=t.columns),t}function CC(e){return Co(e)?.responseType??`text`}function wC(e){if(Array.isArray(e)&&(e=e[0]),e){let t=EC(e).split(`/`).pop()?.toLowerCase();if(!t)return;let n=t.split(`.`);for(;n.length>1&&bC.has(n.at(-1));)n.pop();let r=n.at(-1);if(r&&Co(r))return r}}function TC(e){let t=EC(e).split(`/`).pop()?.toLowerCase();if(!t)return!1;let n=t.split(`.`).at(-1);return!!n&&bC.has(n)}function EC(e){return e.replace(/[?#].*$/,``)}var DC=e=>typeof e==`object`?kC:OC,OC=e=>({data:e}),kC=e=>e;function AC(e){return e.type==`csv`||e.type==`tsv`}function jC(e){return e.type==`dsv`}function MC(e){return`url`in e}function NC(e){return yC.has(e)}var PC,FC=n((()=>{PC=class{constructor(e,t,n,r){this.minv=e,this.maxv=t,this.bin=n,this._fetchedSize=r}toUniqueString(){return`${this.minv}..${this.maxv} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(e){return this.minv.compareTo(e.minv)||this.maxv.compareTo(e.maxv)||this.bin-e.bin}fetchedSize(){return this._fetchedSize===void 0?this.maxv.blockPosition+65536-this.minv.blockPosition:this._fetchedSize}}})),IC,LC=n((()=>{IC=class{constructor({filehandle:e,renameRefSeqs:t=e=>e}){this.filehandle=e,this.renameRefSeq=t}async getMetadata(e={}){let{indices:t,...n}=await this.parse(e);return n}_findFirstData(e,t){return e?e.compareTo(t)>0?t:e:t}async parse(e={}){return this.parseP||=this._parse(e).catch(e=>{throw this.parseP=void 0,e}),this.parseP}async hasRefSeq(e,t={}){return!!(await this.parse(t)).indices[e]?.binIndex}_parseNameBytes(e){let t=0,n=0,r=[],i={},a=new TextDecoder(`utf8`);for(let o=0;o<e.length;o+=1)if(!e[o]){if(n<o){let s=this.renameRefSeq(a.decode(e.subarray(n,o)));r[t]=s,i[s]=t}n=o+1,t+=1}return{refNameToId:i,refIdToName:r}}}}));function RC(e,t=0){let n=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24;return((e[t+4]|e[t+5]<<8|e[t+6]<<16|e[t+7]<<24)>>>0)*BC+(n>>>0)}var zC,BC,VC=n((()=>{zC=65536,BC=zC*zC}));function HC(e,t){return t.minv.blockPosition-e.maxv.blockPosition<65e3&&t.maxv.blockPosition-e.minv.blockPosition<5e6}function UC(e,t){let n=[],r;if(e.length===0)return e;e.sort(function(e,t){let n=e.minv.blockPosition-t.minv.blockPosition;return n===0?e.minv.dataPosition-t.minv.dataPosition:n});for(let i of e)(!t||i.maxv.compareTo(t)>0)&&(r===void 0?(n.push(i),r=i):HC(r,i)?i.maxv.compareTo(r.maxv)>0&&(r.maxv=i.maxv):(n.push(i),r=i));return n}var WC=n((()=>{}));function GC(e,t=0){return new KC(e[t+7]*1099511627776+e[t+6]*4294967296+e[t+5]*16777216+e[t+4]*65536+e[t+3]*256+e[t+2],e[t+1]<<8|e[t])}var KC,qC=n((()=>{KC=class{constructor(e,t){this.blockPosition=e,this.dataPosition=t}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(e){return this.blockPosition-e.blockPosition||this.dataPosition-e.dataPosition}}}));function JC(e,t){return e*2**t}function YC(e,t){return Math.floor(e/2**t)}var XC,ZC,QC,$C,ew=n((()=>{Ky(),FC(),LC(),VC(),WC(),qC(),XC=21582659,ZC=38359875,QC={0:`generic`,1:`SAM`,2:`VCF`},$C=class extends IC{constructor(e){super(e),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(e,t={}){let n=await this.parse(t),r=n.refNameToId[e];if(r===void 0||!n.indices[r])return-1;let{stats:i}=n.indices[r];return i?i.lineCount:-1}indexCov(){throw Error(`CSI indexes do not support indexcov`)}parseAuxData(e,t){let n=new DataView(e.buffer),r=n.getInt32(t,!0),i=r&65536?`zero-based-half-open`:`1-based-closed`,a=QC[r&15];if(!a)throw Error(`invalid Tabix preset format flags ${r}`);let o={ref:n.getInt32(t+4,!0),start:n.getInt32(t+8,!0),end:n.getInt32(t+12,!0)},s=n.getInt32(t+16,!0),c=s?String.fromCharCode(s):void 0,l=n.getInt32(t+20,!0),u=n.getInt32(t+24,!0),{refIdToName:d,refNameToId:f}=this._parseNameBytes(e.subarray(t+28,t+28+u));return{refIdToName:d,refNameToId:f,skipLines:l,metaChar:c,columnNumbers:o,format:a,coordinateType:i}}async _parse(e={}){let t=await Ry(await this.filehandle.readFile(e)),n=new DataView(t.buffer),r;if(n.getUint32(0,!0)===XC)r=1;else if(n.getUint32(0,!0)===ZC)r=2;else throw Error(`Not a CSI file`);this.minShift=n.getInt32(4,!0),this.depth=n.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;let i=2**(this.minShift+this.depth*3),a=n.getInt32(12,!0),o=a&&a>=30?this.parseAuxData(t,16):{refIdToName:[],refNameToId:{},metaChar:void 0,columnNumbers:{ref:0,start:1,end:2},coordinateType:`zero-based-half-open`,format:`generic`},s=n.getInt32(16+a,!0),c,l=16+a+4,u=Array(s).fill(0).map(()=>{let e=n.getInt32(l,!0);l+=4;let r={},i;for(let a=0;a<e;a+=1){let e=n.getUint32(l,!0);if(e>this.maxBinNumber)i=this.parsePseudoBin(t,l+4),l+=48;else{let i=GC(t,l+4);c=this._findFirstData(c,i);let a=n.getInt32(l+12,!0);l+=16;let o=Array(a);for(let n=0;n<a;n+=1){let r=GC(t,l),i=GC(t,l+8);l+=16,o[n]=new PC(r,i,e)}r[e]=o}}return{binIndex:r,stats:i}});return{...o,csi:!0,refCount:s,maxBlockSize:65536,firstDataLine:c,csiVersion:r,indices:u,depth:this.depth,maxBinNumber:this.maxBinNumber,maxRefLength:i}}parsePseudoBin(e,t){return{lineCount:RC(e,t+28)}}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=await this.parse(r),a=i.refNameToId[e];if(a===void 0)return[];let o=i.indices[a];if(!o)return[];let s=this.reg2bins(t,n),c=[];for(let[e,t]of s)for(let n=e;n<=t;n++)if(o.binIndex[n])for(let e of o.binIndex[n])c.push(new PC(e.minv,e.maxv,n));return UC(c,new KC(0,0))}reg2bins(e,t){--e,e<1&&(e=1),t>2**50&&(t=2**34),--t;let n=0,r=0,i=this.minShift+this.depth*3,a=[];for(;n<=this.depth;i-=3,r+=JC(1,n*3),n+=1){let n=r+YC(e,i),o=r+YC(t,i);if(o-n+a.length>this.maxBinNumber)throw Error(`query ${e}-${t} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);a.push([n,o])}return a}}}));function tw(e,t){return e+=1,--t,[[0,0],[1+(e>>26),1+(t>>26)],[9+(e>>23),9+(t>>23)],[73+(e>>20),73+(t>>20)],[585+(e>>17),585+(t>>17)],[4681+(e>>14),4681+(t>>14)]]}var nw,rw,iw,aw=n((()=>{Ky(),FC(),LC(),VC(),WC(),qC(),nw=21578324,rw=14,iw=class extends IC{async lineCount(e,t={}){let n=await this.parse(t),r=n.refNameToId[e];return r===void 0||!n.indices[r]?-1:n.indices[r].stats?.lineCount??-1}async _parse(e={}){let t=await Ry(await this.filehandle.readFile(e)),n=new DataView(t.buffer);if(n.getUint32(0,!0)!==nw)throw Error(`Not a TBI file`);let r=n.getUint32(4,!0),i=n.getUint32(8,!0),a=i&65536?`zero-based-half-open`:`1-based-closed`,o={0:`generic`,1:`SAM`,2:`VCF`}[i&15];if(!o)throw Error(`invalid Tabix preset format flags ${i}`);let s={ref:n.getInt32(12,!0),start:n.getInt32(16,!0),end:n.getInt32(20,!0)},c=n.getInt32(24,!0),l=((1<<18)-1)/7,u=2**29,d=c?String.fromCharCode(c):void 0,f=n.getInt32(28,!0),p=n.getInt32(32,!0),{refNameToId:m,refIdToName:h}=this._parseNameBytes(t.slice(36,36+p)),g=36+p,_;return{indices:Array(r).fill(0).map(()=>{let e=n.getInt32(g,!0);g+=4;let r={},i;for(let a=0;a<e;a+=1){let e=n.getUint32(g,!0);if(g+=4,e>l+1)throw Error(`tabix index contains too many bins, please use a CSI index`);if(e===l+1){let e=n.getInt32(g,!0);g+=4,e===2&&(i=this.parsePseudoBin(t,g)),g+=16*e}else{let i=n.getInt32(g,!0);g+=4;let a=Array(i);for(let n=0;n<i;n+=1){let r=GC(t,g),i=GC(t,g+8);g+=16,_=this._findFirstData(_,r),a[n]=new PC(r,i,e)}r[e]=a}}let a=n.getInt32(g,!0);g+=4;let o=Array(a);for(let e=0;e<a;e+=1)o[e]=GC(t,g),g+=8,_=this._findFirstData(_,o[e]);return{binIndex:r,linearIndex:o,stats:i}}),metaChar:d,maxBinNumber:l,maxRefLength:u,skipLines:f,firstDataLine:_,columnNumbers:s,coordinateType:a,format:o,refIdToName:h,refNameToId:m,maxBlockSize:65536}}parsePseudoBin(e,t){return{lineCount:RC(e,t+16)}}async blocksForRange(e,t,n,r={}){t<0&&(t=0);let i=await this.parse(r),a=i.refNameToId[e];if(a===void 0)return[];let o=i.indices[a];if(!o)return[];(o.linearIndex.length>0?o.linearIndex[t>>rw>=o.linearIndex.length?o.linearIndex.length-1:t>>rw]:new KC(0,0))||console.warn(`querying outside of possible tabix range`);let s=tw(t,n),c=[];for(let[e,t]of s)for(let n=e;n<=t;n++)if(o.binIndex[n])for(let e of o.binIndex[n])c.push(new PC(e.minv,e.maxv,n));let l=o.linearIndex.length,u,d=Math.min(t>>14,l-1),f=Math.min(n>>14,l-1);for(let e=d;e<=f;++e){let t=o.linearIndex[e];t&&(!u||t.compareTo(u)<0)&&(u=t)}return UC(c,u)}}})),ow,sw=n((()=>{_b(),Ky(),Nb(),kg(),ew(),aw(),ow=class{constructor({path:e,filehandle:t,url:n,tbiPath:r,tbiUrl:i,tbiFilehandle:a,csiPath:o,csiUrl:s,csiFilehandle:c,renameRefSeqs:l,chunkCacheSize:u=5*2**20}){this.cache=new Mb({maxSize:1e3});let d=l??(e=>e);if(t)this.filehandle=t;else if(e)this.filehandle=new Og(e);else if(n)this.filehandle=new Tg(n);else throw TypeError(`must provide either filehandle or path`);if(a)this.index=new iw({filehandle:a,renameRefSeqs:d});else if(c)this.index=new $C({filehandle:c,renameRefSeqs:d});else if(r)this.index=new iw({filehandle:new Og(r),renameRefSeqs:d});else if(o)this.index=new $C({filehandle:new Og(o),renameRefSeqs:d});else if(e)this.index=new iw({filehandle:new Og(`${e}.tbi`),renameRefSeqs:d});else if(s)this.index=new $C({filehandle:new Tg(s)});else if(i)this.index=new iw({filehandle:new Tg(i)});else if(n)this.index=new iw({filehandle:new Tg(`${n}.tbi`)});else throw TypeError(`must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl`);this.renameRefSeq=d,this.hasCustomRenameRefSeq=l!==void 0,this.chunkCache=new hb({cache:new Mb({maxSize:Math.floor(u/65536)}),fill:(e,t)=>this.readChunk(e,{signal:t})})}calculateFileOffset(e,t,n,r,i){return e[n]*256+(r-t[n])+i+1}async getLines(e,t,n,r){let i,a={},o;typeof r==`function`?o=r:(a=r,o=r.lineCallback,i=r.signal);let s=await this.index.getMetadata(a),c=t??0,l=n??s.maxRefLength;if(!(c<=l))throw TypeError(`invalid start and end coordinates. start must be less than or equal to end`);if(c===l)return;let u=await this.index.blocksForRange(e,c,l,a),d=new TextDecoder(`utf8`),f=s.format===`VCF`,p={ref:s.columnNumbers.ref||0,start:s.columnNumbers.start||0,end:f?8:s.columnNumbers.end||0},m=Math.max(p.ref,p.start,p.end),h=s.metaChar?.charCodeAt(0),g=s.coordinateType===`1-based-closed`?-1:0,_=!this.hasCustomRenameRefSeq;for(let t of u){let{buffer:n,cpositions:r,dpositions:a}=await this.chunkCache.get(t.toString(),t,i),s=0,u=0,v=d.decode(n);if(n.length==v.length)for(;s<v.length;){let n=v.indexOf(`
208
+ `,s);if(n===-1)break;let i=v.slice(s,n);if(a){let e=s+t.minv.dataPosition;for(;u<a.length&&e>=a[u];)u++}let d=this.checkLine(e,c,l,i,p.ref,p.start,p.end,m,h,g,f,_);if(d===null)return;d!==void 0&&o(i,this.calculateFileOffset(r,a,u,s,t.minv.dataPosition),d.start,d.end),s=n+1}else for(;s<n.length;){let i=n.indexOf(10,s);if(i===-1)break;let v=n.slice(s,i),y=d.decode(v);if(a){let e=s+t.minv.dataPosition;for(;u<a.length&&e>=a[u];)u++}let b=this.checkLine(e,c,l,y,p.ref,p.start,p.end,m,h,g,f,_);if(b===null)return;b!==void 0&&o(y,this.calculateFileOffset(r,a,u,s,t.minv.dataPosition),b.start,b.end),s=i+1}}}async getMetadata(e={}){return this.index.getMetadata(e)}async getHeaderBuffer(e={}){let{firstDataLine:t,metaChar:n,maxBlockSize:r}=await this.getMetadata(e),i=(t?.blockPosition||0)+r,a=await Ry(await this.filehandle.read(i,0,e));if(n){let e=-1,t=n.charCodeAt(0);for(let n=0,r=a.length;n<r;n++){let r=a[n];if(n===e+1&&r!==t)break;r===10&&(e=n)}return a.subarray(0,e+1)}return a}async getHeader(e={}){let t=new TextDecoder(`utf8`),n=await this.getHeaderBuffer(e);return t.decode(n)}async getReferenceSequenceNames(e={}){return(await this.getMetadata(e)).refIdToName}checkLine(e,t,n,r,i,a,o,s,c,l,u,d){if(c!==void 0&&r.charCodeAt(0)===c)return;if(r.length<500){let s=r.split(` `),c=s[i-1];if(!(d?c===e:this.renameRefSeq(c)===e))return;let f=+s[a-1]+l;if(f>=n)return null;let p;return p=o===0||o===a?f+1:u?this._getVcfEnd(f,s[3],s[o-1]):+s[o-1],p<=t?void 0:{start:f,end:p}}let f=-1,p=[-1];for(let e=0;e<s;e++){let e=r.indexOf(` `,f+1);if(e===-1){p.push(r.length);break}p.push(e),f=e}let m=r.slice(p[i-1]+1,p[i]);if(!(d?m===e:this.renameRefSeq(m)===e))return;let h=+r.slice(p[a-1]+1,p[a])+l;if(h>=n)return null;let g;if(g=o===0||o===a?h+1:u?this._getVcfEnd(h,r.slice(p[3]+1,p[4]),r.slice(p[o-1]+1,p[o])):+r.slice(p[o-1]+1,p[o]),!(g<=t))return{start:h,end:g}}_getVcfEnd(e,t,n){let r=e+t.length;if(n.includes(`SVTYPE=TRA`))return e+1;if(n[0]!==`.`){let e=n.indexOf(`END=`);if(e!==-1&&(e===0||n[e-1]===`;`)){let t=e+4,i=n.indexOf(`;`,t);i===-1&&(i=n.length),r=Number.parseInt(n.slice(t,i),10)}}return r}async lineCount(e,t={}){return this.index.lineCount(e,t)}async readChunk(e,t={}){return zy(await this.filehandle.read(e.fetchedSize(),e.minv.blockPosition,t),e,this.cache)}}})),cw=r({CSI:()=>$C,TBI:()=>iw,TabixIndexedFile:()=>ow}),lw=n((()=>{sw(),ew(),aw()}));Ky();var uw=class extends bg{#e;constructor(e,t){let n={channel:`x`,windowSize:3e6,debounce:200,debounceMode:`domain`,addChrPrefix:!1,...e},r=fg(n.channel);if(super(t,r),this.params=_g(t.paramRuntime,n,e=>{e.has(`url`)||e.has(`indexUrl`)||e.has(`addChrPrefix`)?this.#t().then(()=>this.reloadLastDomain()):e.has(`windowSize`)&&this.reloadLastDomain()},e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!fg(this.params.url))throw Error(`No URL provided for TabixSource`);this.setupDebouncing(this.params),this.#t()}#t(){return this.initializedPromise=new Promise((e,t)=>{Promise.all([Promise.resolve().then(()=>(lw(),cw)),Promise.resolve().then(()=>(kg(),Dg))]).then(async([{TabixIndexedFile:n},{RemoteFile:r}])=>{let i=e=>new r(rh(e,this.view.getBaseUrl())),a=fg(this.params.url),o=fg(this.params.indexUrl)??a+`.tbi`,s=fg(this.params.addChrPrefix);this.#e=new n({filehandle:i(a),tbiFilehandle:i(o),renameRefSeqs:s===!0?e=>`chr`+e:s?e=>s+e:void 0});try{this.setLoadingStatus(`loading`);let t=await this.#e.getHeader();await this._handleHeader(t),this.setLoadingStatus(`complete`),e()}catch(e){this.load(),this.setLoadingStatus(`error`,`${fg(this.params.url)}: ${e.message}`),t(e)}})}),this.initializedPromise}async loadInterval(e){await this.initializedPromise;let t=await this.discretizeAndLoad(e,async(e,t)=>{let n=[];return await this.#e.getLines(e.chrom,e.startPos,e.endPos,{lineCallback:e=>{n.push(e)},signal:t}),this._parseFeatures(n)});t&&this.publishData(t)}async _handleHeader(e){}async _readFilePrefix(){let{maxBlockSize:e}=await this.#e.getMetadata(),t=await Ry(await this.#e.filehandle.read(e,0));return new TextDecoder(`utf-8`).decode(t)}_parseFeatures(e){return[]}};function dw(e){let t=e.split(/\r?\n/);for(let e=t.length-1;e>=0;e--){let n=t[e].trimEnd().replace(/\r$/,``);if(!n||n.startsWith(`##`)||!n.startsWith(`#`))continue;let r=n.slice(1).split(` `);if(r.length>1)return r}}function fw(e){let t=e.split(/\r?\n/).find(e=>{let t=e.trimStart();return t!==``&&!t.startsWith(`#`)});if(!t)return;let n=t.trimEnd().replace(/\r$/,``).split(` `);if(n.length>1)return n}function pw(e,t,n){if(e.length==0)return[];let r={type:`tsv`,columns:t,parse:n??`auto`},i=wo(e.join(`
209
+ `),SC(r)),a=t[0],o=null,s=``;for(let e of i){let t=e[a];t!=o&&(o=t,s=String(t)),e[a]=s}return i}var mw=class extends uw{#e;get label(){return`tabixSource`}async _handleHeader(e){let t=this.params;if(this.#e=fg(t.columns)??dw(e),this.#e?.length||(this.#e=fw(await this._readFilePrefix())),!this.#e?.length)throw Error(`No columns available for Tabix TSV source. Provide data.lazy.columns or a tabix header line such as #chrom\\tstart\\tend, or a plain first row such as chrom\\tstart\\tend.`)}_parseFeatures(e){let t=this.params;return pw(e,this.#e??[],fg(t.parse))}};function hw(e){return e?.type==`tabix`}Wm(hw,mw);function gw(e){let t=e.indexOf(`%`);if(t===-1)return e;let n=``,r=0,i=t;for(;i<e.length;)if(e[i]===`%`&&i+2<e.length){n+=e.slice(r,i);let t=Ow[e.slice(i+1,i+3)];t===void 0?n+=e.slice(i,i+3):n+=t,i+=3,r=i}else i++;return n+e.slice(r)}function _w(e){if(e.length===0||e===`.`)return{};let t={},n=e.length;e[n-1]===`
210
+ `&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n),o=t[a];o||(o=[],t[a]=o);let s=n+1;for(;s<i;){let t=e.indexOf(`,`,s);if((t===-1||t>i)&&(t=i),t>s){let n=e.slice(s,t);o.push(gw(n))}s=t+1}}}r=i+1}return t}function vw(e){if(e.length===0||e===`.`)return{};let t={},n=e.length;e[n-1]===`
211
+ `&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n),o=t[a];o||(o=[],t[a]=o);let s=n+1;for(;s<i;){let t=e.indexOf(`,`,s);(t===-1||t>i)&&(t=i),t>s&&o.push(e.slice(s,t)),s=t+1}}}r=i+1}return t}function yw(e){return e.length===0||e===`.`?null:gw(e)}function bw(e){return e.length===0||e===`.`?null:e}function xw(e){let t=e.split(` `),n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8];return{seq_id:yw(n),source:yw(r),type:yw(i),start:a.length===0||a===`.`?null:+a,end:o.length===0||o===`.`?null:+o,score:s.length===0||s===`.`?null:+s,strand:bw(c),phase:bw(l),attributes:u.length===0||u===`.`?null:_w(u)}}function Sw(e){let t=e.split(` `),n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8];return{seq_id:bw(n),source:bw(r),type:bw(i),start:a.length===0||a===`.`?null:+a,end:o.length===0||o===`.`?null:+o,score:s.length===0||s===`.`?null:+s,strand:bw(c),phase:bw(l),attributes:u.length===0||u===`.`?null:vw(u)}}function Cw(e){if(e===`+`)return 1;if(e===`-`)return-1;if(e===`.`)return 0}function ww(e,t){if(e.length===0||e===`.`)return;let n=e.length;e[n-1]===`
212
+ `&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n);if(a===`_lineHash`){r=i+1;continue}let o=a.toLowerCase();kw.has(o)&&(o+=`2`);let s=[],c=n+1;for(;c<i;){let t=e.indexOf(`,`,c);if((t===-1||t>i)&&(t=i),t>c){let n=e.slice(c,t);s.push(gw(n))}c=t+1}t[o]=s.length===1?s[0]:s}}r=i+1}}function Tw(e,t){if(e.length===0||e===`.`)return;let n=e.length;e[n-1]===`
213
+ `&&(n=e[n-2]===`\r`?n-2:n-1,e=e.slice(0,n));let r=0;for(;r<n;){let i=e.indexOf(`;`,r);if(i===-1&&(i=n),i>r){let n=e.indexOf(`=`,r);if(n!==-1&&n<i&&n+1<i){let a=e.slice(r,n);if(a===`_lineHash`){r=i+1;continue}let o=a.toLowerCase();kw.has(o)&&(o+=`2`);let s=[],c=n+1;for(;c<i;){let t=e.indexOf(`,`,c);(t===-1||t>i)&&(t=i),t>c&&s.push(e.slice(c,t)),c=t+1}t[o]=s.length===1?s[0]:s}}r=i+1}}function Ew(e){let t=e.split(` `),n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8],d={refName:n.length===0||n===`.`?``:gw(n),source:r.length===0||r===`.`?null:gw(r),type:i.length===0||i===`.`?null:gw(i),start:a.length===0||a===`.`?0:a-1,end:o.length===0||o===`.`?0:+o,score:s.length===0||s===`.`?void 0:+s,strand:Cw(c),phase:l.length===0||l===`.`?void 0:+l,subfeatures:[]};return ww(u,d),d}function Dw(e){let t=e.split(` `),n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8],d={refName:n.length===0||n===`.`?``:n,source:r.length===0||r===`.`?null:r,type:i.length===0||i===`.`?null:i,start:a.length===0||a===`.`?0:a-1,end:o.length===0||o===`.`?0:+o,score:s.length===0||s===`.`?void 0:+s,strand:Cw(c),phase:l.length===0||l===`.`?void 0:+l,subfeatures:[]};return Tw(u,d),d}var Ow,kw,Aw=n((()=>{Ow={};for(let e=0;e<256;e++){let t=e.toString(16).toUpperCase().padStart(2,`0`);Ow[t]=String.fromCharCode(e),Ow[t.toLowerCase()]=String.fromCharCode(e)}kw=new Set([`start`,`end`,`seq_id`,`score`,`type`,`source`,`phase`,`strand`])}));function jw(e){return Pw(Nw(e))}function Mw(e){return Fw(Nw(e))}function Nw(e){let t=e.split(/\r?\n/),n=[];for(let e=0;e<t.length;e++){let r=t[e];if(r.length===0||r[0]===`#`){if(r.startsWith(`##FASTA`))break;continue}if(r[0]===`>`)break;n.push({line:r,start:0,end:0,hasEscapes:r.includes(`%`)})}return n}function Pw(e){let t=[],n=new Map,r=new Map;for(let i=0;i<e.length;i++){let a=e[i],o=a.hasEscapes?xw(a.line):Sw(a.line);o.child_features=[],o.derived_features=[],a.lineHash!==void 0&&(o.attributes||={},o.attributes._lineHash=[String(a.lineHash)]);let s=o.attributes,c=s?.ID,l=s?.Parent;if(!c&&!l){t.push([o]);continue}let u;if(c){let e=c[0],i=n.get(e);if(i)i.push(o),u=i;else{u=[o],l||t.push(u),n.set(e,u);let i=r.get(e);if(i){for(let e=0;e<i.length;e++)o.child_features.push(i[e]);r.delete(e)}}}else u=[o];if(l)for(let e=0;e<l.length;e++){let t=l[e],i=n.get(t);if(i)for(let e=0;e<i.length;e++)i[e].child_features.push(u);else{let e=r.get(t);e||(e=[],r.set(t,e)),e.push(u)}}}return t}function Fw(e){let t=[],n=new Map,r=new Map;for(let i=0;i<e.length;i++){let a=e[i],o=a.hasEscapes?Ew(a.line):Dw(a.line);a.lineHash!==void 0&&(o._lineHash=String(a.lineHash));let s=o.id,c=o.parent;if(!s&&!c){t.push(o);continue}if(s&&!n.get(s)){c||t.push(o),n.set(s,o);let e=r.get(s);if(e){for(let t=0;t<e.length;t++)o.subfeatures.push(e[t]);r.delete(s)}}if(c){let e=Array.isArray(c)?c:[c];for(let t=0;t<e.length;t++){let i=e[t],a=n.get(i);if(a)a.subfeatures.push(o);else{let e=r.get(i);e||(e=[],r.set(i,e)),e.push(o)}}}}return t}var Iw=n((()=>{Aw()})),Lw=r({parseRecords:()=>Pw,parseRecordsJBrowse:()=>Fw,parseStringSync:()=>jw,parseStringSyncJBrowse:()=>Mw}),Rw=n((()=>{Iw()})),zw=class extends uw{#e;get label(){return`gff3Source`}async _handleHeader(e){this.#e=await Promise.resolve().then(()=>(Rw(),Lw))}_parseFeatures(e){return this.#e?.parseStringSync(e.join(`
214
+ `))}};function Bw(e){return e?.type==`gff3`}Wm(Bw,zw);function Vw(e,t,n){let r=Object.create(null),i=n.length,a=t.length,o=0;if(e===`GT`){for(let e=0;e<i;e++){let i=o;for(;o<a&&t.charCodeAt(o)!==9;)o++;r[n[e]]=t.slice(i,o),o++}return r}let s=e.indexOf(`GT`);if(s===-1)return r;if(s===0){for(let e=0;e<i;e++){let i=o;for(;o<a&&t.charCodeAt(o)!==58&&t.charCodeAt(o)!==9;)o++;for(r[n[e]]=t.slice(i,o);o<a&&t.charCodeAt(o)!==9;)o++;o++}return r}let c=0;for(let t=0;t<s;t++)e.charCodeAt(t)===58&&c++;for(let e=0;e<i;e++){let i=o,s=o;for(;s<a&&t.charCodeAt(s)!==9;)s++;let l=0,u=i;for(let a=i;a<=s;a++)if(a===s||t.charCodeAt(a)===58){if(l===c){r[n[e]]=t.slice(u,a);break}l++,u=a+1}o=s+1}return r}var Hw=n((()=>{}));function Uw(e,t,n,r){let i=t.length,a=0;if(e===`GT`){for(let e=0;e<n;e++){let e=a;for(;a<i&&t.charCodeAt(a)!==9;)a++;r(t,e,a),a++}return}let o=e.indexOf(`GT`);if(o===-1)return;if(o===0){for(let e=0;e<n;e++){let e=a;for(;a<i&&t.charCodeAt(a)!==58&&t.charCodeAt(a)!==9;)a++;for(r(t,e,a);a<i&&t.charCodeAt(a)!==9;)a++;a++}return}let s=0;for(let t=0;t<o;t++)e.charCodeAt(t)===58&&s++;for(let e=0;e<n;e++){let e=a,n=a;for(;n<i&&t.charCodeAt(n)!==9;)n++;let o=0,c=e;for(let i=e;i<=n;i++)if(i===n||t.charCodeAt(i)===58){if(o===s){r(t,c,i);break}o++,c=i+1}a=n+1}}var Ww=n((()=>{}));function Gw(e){try{return decodeURIComponent(e)}catch{return e}}var Kw,qw=n((()=>{Hw(),Ww(),Kw=class{constructor(e,t,n,r,i){let a=0,o=0;for(;a<e.length&&o<9;)e[a]===` `&&(o+=1),a+=1;let s=o===9?a-1:a,c=e.slice(0,s).split(` `),l=e.slice(s+1),[u,d,f,p,m,h,g]=c,_=g===`.`?void 0:g.split(`;`);if(i&&!c[7])throw Error(`no INFO field specified, must contain at least a '.' (turn off strict mode to allow)`);this.CHROM=u,this.POS=+d,this.ID=f===`.`?void 0:f.split(`;`),this.REF=p,this.ALT=m===`.`?void 0:m.split(`,`),this.QUAL=h===`.`?void 0:+h,this.FILTER=_?.length===1&&_[0]===`PASS`?`PASS`:_,this.INFO=c[7]===void 0||c[7]===`.`?{}:this.parseInfo(c[7],t),this.FORMAT=c[8],this.formatMeta=n,this.rest=l,this.sampleNames=r}parseInfo(e,t){let n={},r=e.includes(`%`),i=e.split(`;`),a=i.length;for(let e=0;e<a;e++){let a=i[e],o=a.indexOf(`=`),s=o===-1?a:a.slice(0,o),c=o===-1?void 0:a.slice(o+1),l=t[s]?.Type;if(l===`Flag`)n[s]=!0;else if(!c)n[s]=!0;else{let e=l===`Integer`||l===`Float`,t=c.split(`,`),i=t.length;if(r){let r=[];for(let n=0;n<i;n++){let i=t[n];if(i===`.`)r.push(void 0);else{let t=Gw(i);r.push(e?Number(t):t)}}n[s]=r}else{let r=[];for(let n=0;n<i;n++){let i=t[n];i===`.`?r.push(void 0):r.push(e?Number(i):i)}n[s]=r}}}return n}SAMPLES(){let e={},t=this.FORMAT;if(t){let n=this.rest.split(` `),r=t.split(`:`),i=[];for(let e=0;e<r.length;e++){let t=this.formatMeta[r[e]]?.Type;i.push(t===`Integer`||t===`Float`)}let a=r.length,o=this.sampleNames.length;for(let t=0;t<o;t++){let o=this.sampleNames[t],s={},c=n[t],l=c.length,u=0,d=0;for(let e=0;e<=l;e++)if(e===l||c[e]===`:`){let t=c.slice(u,e);if(t===``||t===`.`)s[r[d]]=void 0;else{let e=t.split(`,`),n=[];if(i[d])for(let t=0;t<e.length;t++){let r=e[t];n.push(r===`.`?void 0:+r)}else for(let t=0;t<e.length;t++){let r=e[t];n.push(r===`.`?void 0:r)}s[r[d]]=n}if(u=e+1,d+=1,d>=a)break}e[o]=s}}return e}GENOTYPES(){return Vw(this.FORMAT??``,this.rest,this.sampleNames)}processGenotypes(e){Uw(this.FORMAT??``,this.rest,this.sampleNames.length,e)}toJSON(){return{CHROM:this.CHROM,POS:this.POS,ID:this.ID,REF:this.REF,ALT:this.ALT,QUAL:this.QUAL,FILTER:this.FILTER,INFO:this.INFO,FORMAT:this.FORMAT}}}}));function Jw(e){let t=[],n=[],r=!1,i=!1,a=e.length;for(let o=0;o<a;o++){let a=e[o];a===`"`?(r=!r,n.push(a)):a===`[`?(i=!0,n.push(a)):a===`]`?(i=!1,n.push(a)):a===`,`&&!r&&!i?(t.push(n.join(``).trim()),n.length=0):n.push(a)}return n.length>0&&t.push(n.join(``).trim()),t}function Yw(e,t){let n=e.indexOf(t);return[e.slice(0,n),e.slice(n+1)]}function Xw(e){let t=Jw(e.slice(1,-1)),n=[];for(let e=0;e<t.length;e++){let r=t[e],[i,a]=Yw(r,`=`);if(a&&a.startsWith(`[`)&&a.endsWith(`]`)){let e=a.slice(1,-1).split(`,`);for(let t=0;t<e.length;t++)e[t]=e[t].trim();n.push([i,e])}else a&&a.startsWith(`"`)&&a.endsWith(`"`)?n.push([i,a.slice(1,-1)]):n.push([i,a])}return Object.fromEntries(n)}var Zw=n((()=>{})),Qw,$w=n((()=>{Qw={InfoFields:{AA:{Number:1,Type:`String`,Description:`Ancestral allele`},AC:{Number:`A`,Type:`Integer`,Description:`Allele count in genotypes, for each ALT allele, in the same order as listed`},AD:{Number:`R`,Type:`Integer`,Description:`Total read depth for each allele`},ADF:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele on the forward strand`},ADR:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele on the reverse strand`},AF:{Number:`A`,Type:`Float`,Description:`Allele frequency for each ALT allele in the same order as listed (estimated from primary data, not called genotypes)`},AN:{Number:1,Type:`Integer`,Description:`Total number of alleles in called genotypes`},BQ:{Number:1,Type:`Float`,Description:`RMS base quality`},CIGAR:{Number:1,Type:`Float`,Description:`Cigar string describing how to align an alternate allele to the reference allele`},DB:{Number:0,Type:`Flag`,Description:`dbSNP membership`},DP:{Number:1,Type:`Integer`,Description:`combined depth across samples`},END:{Number:1,Type:`Integer`,Description:`End position (for use with symbolic alleles)`},H2:{Number:0,Type:`Flag`,Description:`HapMap2 membership`},H3:{Number:0,Type:`Flag`,Description:`HapMap3 membership`},MQ:{Number:1,Type:null,Description:`RMS mapping quality`},MQ0:{Number:1,Type:`Integer`,Description:`Number of MAPQ == 0 reads`},NS:{Number:1,Type:`Integer`,Description:`Number of samples with data`},SB:{Number:4,Type:`Integer`,Description:`Strand bias`},SOMATIC:{Number:0,Type:`Flag`,Description:`Somatic mutation (for cancer genomics)`},VALIDATED:{Number:0,Type:`Flag`,Description:`Validated by follow-up experiment`},"1000G":{Number:0,Type:`Flag`,Description:`1000 Genomes membership`},IMPRECISE:{Number:0,Type:`Flag`,Description:`Imprecise structural variation`},NOVEL:{Number:0,Type:`Flag`,Description:`Indicates a novel structural variation`},SVTYPE:{Number:1,Type:`String`,Description:`Type of structural variant`},SVLEN:{Number:null,Type:`Integer`,Description:`Difference in length between REF and ALT alleles`},CIPOS:{Number:2,Type:`Integer`,Description:`Confidence interval around POS for imprecise variants`},CIEND:{Number:2,Type:`Integer`,Description:`Confidence interval around END for imprecise variants`},HOMLEN:{Type:`Integer`,Description:`Length of base pair identical micro-homology at event breakpoints`},HOMSEQ:{Type:`String`,Description:`Sequence of base pair identical micro-homology at event breakpoints`},BKPTID:{Type:`String`,Description:`ID of the assembled alternate allele in the assembly file`},MEINFO:{Number:4,Type:`String`,Description:`Mobile element info of the form NAME,START,END,POLARITY`},METRANS:{Number:4,Type:`String`,Description:`Mobile element transduction info of the form CHR,START,END,POLARITY`},DGVID:{Number:1,Type:`String`,Description:`ID of this element in Database of Genomic Variation`},DBVARID:{Number:1,Type:`String`,Description:`ID of this element in DBVAR`},DBRIPID:{Number:1,Type:`String`,Description:`ID of this element in DBRIP`},MATEID:{Number:null,Type:`String`,Description:`ID of mate breakends`},PARID:{Number:1,Type:`String`,Description:`ID of partner breakend`},EVENT:{Number:1,Type:`String`,Description:`ID of event associated to breakend`},CILEN:{Number:2,Type:`Integer`,Description:`Confidence interval around the inserted material between breakend`},DPADJ:{Type:`Integer`,Description:`Read Depth of adjacency`},CN:{Number:1,Type:`Integer`,Description:`Copy number of segment containing breakend`},CNADJ:{Number:null,Type:`Integer`,Description:`Copy number of adjacency`},CICN:{Number:2,Type:`Integer`,Description:`Confidence interval around copy number for the segment`},CICNADJ:{Number:null,Type:`Integer`,Description:`Confidence interval around copy number for the adjacency`}},GenotypeFields:{AD:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele`},ADF:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele on the forward strand`},ADR:{Number:`R`,Type:`Integer`,Description:`Read depth for each allele on the reverse strand`},DP:{Number:1,Type:`Integer`,Description:`Read depth`},EC:{Number:`A`,Type:`Integer`,Description:`Expected alternate allele counts`},FT:{Number:1,Type:`String`,Description:`Filter indicating if this genotype was "called"`},GL:{Number:`G`,Type:`Float`,Description:`Genotype likelihoods`},GP:{Number:`G`,Type:`Float`,Description:`Genotype posterior probabilities`},GQ:{Number:1,Type:`Integer`,Description:`Conditional genotype quality`},GT:{Number:1,Type:`String`,Description:`Genotype`},HQ:{Number:2,Type:`Integer`,Description:`Haplotype quality`},MQ:{Number:1,Type:`Integer`,Description:`RMS mapping quality`},PL:{Number:`G`,Type:`Integer`,Description:`Phred-scaled genotype likelihoods rounded to the closest integer`},PQ:{Number:1,Type:`Integer`,Description:`Phasing quality`},PS:{Number:1,Type:`Integer`,Description:`Phase set`}},AltTypes:{DEL:{Description:`Deletion relative to the reference`},INS:{Description:`Insertion of novel sequence relative to the reference`},DUP:{Description:`Region of elevated copy number relative to the reference`},INV:{Description:`Inversion of reference sequence`},CNV:{Description:`Copy number variable region (may be both deletion and duplication)`},"DUP:TANDEM":{Description:`Tandem duplication`},"DEL:ME":{Description:`Deletion of mobile element relative to the reference`},"INS:ME":{Description:`Insertion of a mobile element relative to the reference`},NON_REF:{Description:`Represents any possible alternative allele at this location`},"*":{Description:`Represents any possible alternative allele at this location`}},FilterTypes:{PASS:{Description:`Passed all filters`}}}})),eT,tT=n((()=>{qw(),Zw(),$w(),eT=class{constructor({header:e,strict:t=!0}){if(!e.length)throw Error(`empty header received`);let n=e.split(/[\r\n]+/).filter(Boolean);if(!n.length)throw Error(`no non-empty header lines specified`);this.strict=t,this.metadata={INFO:{...Qw.InfoFields},FORMAT:{...Qw.GenotypeFields},ALT:{...Qw.AltTypes},FILTER:{...Qw.FilterTypes}};let r;for(let e=0;e<n.length;e++){let t=n[e];if(t.startsWith(`#`))t.startsWith(`##`)?this.parseMetadata(t):r=t;else throw Error(`Bad line in header:\n${t}`)}if(!r)throw Error(`No format line found in header`);let i=r.trim().split(` `),a=i.slice(0,8),o=[`#CHROM`,`POS`,`ID`,`REF`,`ALT`,`QUAL`,`FILTER`,`INFO`];if(i.length<8)throw Error(`VCF header missing columns:\n${r}`);if(a.length!==o.length||!a.every((e,t)=>e===o[t]))throw Error(`VCF column headers not correct:\n${r}`);this.samples=i.slice(9)}parseMetadata(e){let t=/^##(.+?)=(.*)/.exec(e.trim());if(!t)throw Error(`Line is not a valid metadata line: ${e}`);let[n,r]=t.slice(1,3),i=n;if(r?.startsWith(`<`)){i in this.metadata||(this.metadata[i]={});let[e,t]=this.parseStructuredMetaVal(r);e?this.metadata[i][e]=t:this.metadata[i]=t}else this.metadata[i]=r}parseStructuredMetaVal(e){let t=Xw(e),n=t.ID;return delete t.ID,`Number`in t&&(Number.isNaN(Number(t.Number))||(t.Number=Number(t.Number))),[n,t]}getMetadata(...e){let t=this.metadata,n=e.length;for(let r=0;r<n;r++)if(t=t[e[r]],!t)return t;return t}parseLine(e){return new Kw(e,this.metadata.INFO,this.metadata.FORMAT,this.samples,this.strict)}}}));function nT(e){let t=e[0],n=e[e.length-1];if(t===`[`||t===`]`||n===`[`||n===`]`){let t=e.split(/[[\]]/),n=e.includes(`[`)?`right`:`left`,r,i,a,o=t.length;for(let e=0;e<o;e++){let n=t[e];n&&(n.includes(`:`)?(a=n,r=i?`right`:`left`):i=n)}if(!(a&&r&&i))throw Error(`Invalid breakend: ${e}`);return{MatePosition:a,Join:r,Replacement:i,MateDirection:n}}if(t===`.`)return{Join:`left`,SingleBreakend:!0,Replacement:e.slice(1)};if(n===`.`)return{Join:`right`,SingleBreakend:!0,Replacement:e.slice(0,-1)};if(t===`<`){let t=rT.exec(e);if(!t)throw Error(`failed to parse ${e}`);let n=t[2];return n?{Join:`left`,Replacement:n,MateDirection:`right`,MatePosition:`<${t[1]}>:1`}:void 0}if(e.includes(`<`)){let t=iT.exec(e);if(!t)throw Error(`failed to parse ${e}`);let n=t[1];return n?{Join:`right`,Replacement:n,MateDirection:`right`,MatePosition:`<${t[2]}>:1`}:void 0}}var rT,iT,aT=n((()=>{rT=/<(.*)>(.*)/,iT=/(.*)<(.*)>/})),oT=r({Variant:()=>Kw,default:()=>eT,parseBreakend:()=>nT}),sT=n((()=>{qw(),tT(),aT()})),cT=class extends uw{#e;get label(){return`vcfSource`}async _handleHeader(e){let t=(await Promise.resolve().then(()=>(sT(),oT))).default;this.#e=new t({header:e})}_parseFeatures(e){return e.map(e=>{let t=this.#e.parseLine(e);return delete t.GENOTYPES,t.SAMPLES=t.SAMPLES(),t})}};function lT(e){return e?.type==`vcf`}Wm(lT,cT);var uT=`
214
215
  @scope {
215
216
  :scope {
216
217
  --genome-spy-basic-spacing: 10px;
@@ -463,46 +464,46 @@ background: #fff0f0;
463
464
  }
464
465
  }
465
466
  }
466
- `;function Ww(e,t){var n=e.getBoundingClientRect();return[t.clientX-n.left-e.clientLeft,t.clientY-n.top-e.clientTop]}var Gw=class{#e=!1;#t=!0;#n=void 0;#r=0;#i=void 0;#a=0;#o;#s;#c=[!0];constructor(e){this.#s=e,this.#o=document.createElement(`div`),this.#o.className=`tooltip`,this.#s.appendChild(this.#o),this.clear()}set sticky(e){!e&&this.#e&&this.clear(),this.#e=e,this.#o.classList.toggle(`sticky`,this.#e)}get sticky(){return this.#e}set visible(e){e!=this.#t&&(this.#o.style.display=e?null:`none`,this.#t=e)}get visible(){return this.#t}get enabled(){return Ql(this.#c)??!0}pushEnabledState(e){this.#c.push(e),e||(this.visible=!1)}popEnabledState(){this.#c.pop()}handleMouseMove(e){if(this.#e)return;this.mouseCoords=Ww(this.#s,e);let t=performance.now();!this.visible&&!this._isPenalty()&&t-this.#a>500&&(this.#r=t+70),this.#i&&Kw(this.mouseCoords,this.#i)>20&&(this.#r=t+400),this.#i=this.mouseCoords,this.visible&&this.updatePlacement(),this.#a=t}updatePlacement(){let[e,t]=this.mouseCoords,n=e+20;n>this.#s.clientWidth-this.#o.offsetWidth&&(n=e-20-this.#o.offsetWidth),this.#o.style.left=n+`px`,this.#o.style.top=Math.min(t+20,this.#s.clientHeight-this.#o.offsetHeight)+`px`}setContent(e){if(!this.#e){if(!e||!this.enabled||this._isPenalty()){this.visible&&=(Le(``,this.#o),!1),this.#n=void 0;return}Le(e,this.#o),this.visible=!0,this.updatePlacement()}}clear(){this.#n=void 0,this.setContent(void 0)}updateWithDatum(e,t){if(e!==this.#n){this.#n=e,t||=e=>Promise.resolve(D` ${JSON.stringify(e)} `);let n=e;t(e).then(e=>{this.#n===n&&this.setContent(e)}).catch(e=>{if(e!==`debounced`)throw e})}}_isPenalty(){return this.#r&&this.#r>performance.now()}};function Kw(e,t){let n=0;for(let r=0;r<e.length;r++)n+=(e[r]-t[r])**2;return Math.sqrt(n)}function qw(e){e.classList.add(`genome-spy`);let t=document.createElement(`style`);t.innerHTML=Uw,e.appendChild(t);let n=Yw(`div`,{class:`canvas-wrapper`});return e.appendChild(n),n.classList.add(`loading`),{canvasWrapper:n,loadingIndicatorsElement:Yw(`div`,{class:`loading-indicators`}),tooltip:new Gw(e),styleElement:t}}function Jw(e,t){let n=document.createElement(`div`);n.className=`message-box`;let r=document.createElement(`div`);r.textContent=t,n.appendChild(r),e.appendChild(n)}function Yw(e,t){let n=document.createElement(e);for(let[e,r]of Object.entries(t))[`innerHTML`,`innerText`,`className`].includes(e)&&(n[e]=r),n.setAttribute(e,r);return n}var Xw={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},Zw=e=>(...t)=>({_$litDirective$:e,values:t}),Qw=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,n){this._$Ct=e,this._$AM=t,this._$Ci=n}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}},$w=`important`,eT=` !`+$w,tT=Zw(class extends Qw{constructor(e){if(super(e),e.type!==Xw.ATTRIBUTE||e.name!==`style`||e.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(e){return Object.keys(e).reduce((t,n)=>{let r=e[n];return r==null?t:t+`${n=n.includes(`-`)?n:n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,`-$&`).toLowerCase()}:${r};`},``)}update(e,[t]){let{style:n}=e.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(t)),this.render(t);for(let e of this.ft)t[e]??(this.ft.delete(e),e.includes(`-`)?n.removeProperty(e):n[e]=null);for(let e in t){let r=t[e];if(r!=null){this.ft.add(e);let t=typeof r==`string`&&r.endsWith(eT);e.includes(`-`)||t?n.setProperty(e,t?r.slice(0,-11):r,t?$w:``):n[e]=r}}return xe}}),nT=`data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3cstyle%3e.spinner_ajPY{transform-origin:center;animation:spinner_AtaB%20.75s%20infinite%20linear}@keyframes%20spinner_AtaB{100%25{transform:rotate(360deg)}}%3c/style%3e%3cpath%20d='M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z'%20opacity='.25'/%3e%3cpath%20d='M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z'%20class='spinner_ajPY'/%3e%3c/svg%3e`,rT=class{#e;#t;#n=null;constructor(e,t){this.#e=e,this.#t=t,this.#n=this.#t.subscribe(()=>this.updateLayout()),this.updateLayout()}destroy(){this.#n&&=(this.#n(),null)}updateLayout(){let e=[],t=()=>{for(let[,e]of this.#t.entries())if(e.status==`loading`||e.status==`error`)return!0;return!1},n,r=!1;for(let[t,i]of this.#t.entries()){let a=i.status==`loading`||i.status==`error`,o=t.coords;if(!o&&a&&!n&&(n=i),o){a&&(r=!0);let t={left:`${o.x}px`,top:`${o.y}px`,width:`${o.width}px`,height:`${o.height}px`};e.push(D`<div style=${tT(t)}>
467
+ `;function dT(e,t){var n=e.getBoundingClientRect();return[t.clientX-n.left-e.clientLeft,t.clientY-n.top-e.clientTop]}var fT=class{#e=!1;#t=!0;#n=void 0;#r=0;#i=void 0;#a=0;#o;#s;#c=[!0];constructor(e){this.#s=e,this.#o=document.createElement(`div`),this.#o.className=`tooltip`,this.#s.appendChild(this.#o),this.clear()}set sticky(e){!e&&this.#e&&this.clear(),this.#e=e,this.#o.classList.toggle(`sticky`,this.#e)}get sticky(){return this.#e}set visible(e){e!=this.#t&&(this.#o.style.display=e?null:`none`,this.#t=e)}get visible(){return this.#t}get enabled(){return Xl(this.#c)??!0}pushEnabledState(e){this.#c.push(e),e||(this.visible=!1)}popEnabledState(){this.#c.pop()}handleMouseMove(e){if(this.#e)return;this.mouseCoords=dT(this.#s,e);let t=performance.now();!this.visible&&!this._isPenalty()&&t-this.#a>500&&(this.#r=t+70),this.#i&&pT(this.mouseCoords,this.#i)>20&&(this.#r=t+400),this.#i=this.mouseCoords,this.visible&&this.updatePlacement(),this.#a=t}updatePlacement(){let[e,t]=this.mouseCoords,n=e+20;n>this.#s.clientWidth-this.#o.offsetWidth&&(n=e-20-this.#o.offsetWidth),this.#o.style.left=n+`px`,this.#o.style.top=Math.min(t+20,this.#s.clientHeight-this.#o.offsetHeight)+`px`}setContent(e){if(!this.#e){if(!e||!this.enabled||this._isPenalty()){this.visible&&=(Ie(``,this.#o),!1),this.#n=void 0;return}Ie(e,this.#o),this.visible=!0,this.updatePlacement()}}clear(){this.#n=void 0,this.setContent(void 0)}updateWithDatum(e,t){if(e!==this.#n){this.#n=e,t||=e=>Promise.resolve(O` ${JSON.stringify(e)} `);let n=e;t(e).then(e=>{this.#n===n&&this.setContent(e)}).catch(e=>{if(e!==`debounced`)throw e})}}_isPenalty(){return this.#r&&this.#r>performance.now()}};function pT(e,t){let n=0;for(let r=0;r<e.length;r++)n+=(e[r]-t[r])**2;return Math.sqrt(n)}function mT(e){e.classList.add(`genome-spy`);let t=document.createElement(`style`);t.innerHTML=uT,e.appendChild(t);let n=gT(`div`,{class:`canvas-wrapper`});return e.appendChild(n),n.classList.add(`loading`),{canvasWrapper:n,loadingIndicatorsElement:gT(`div`,{class:`loading-indicators`}),tooltip:new fT(e),styleElement:t}}function hT(e,t){let n=document.createElement(`div`);n.className=`message-box`;let r=document.createElement(`div`);r.textContent=t,n.appendChild(r),e.appendChild(n)}function gT(e,t){let n=document.createElement(e);for(let[e,r]of Object.entries(t))[`innerHTML`,`innerText`,`className`].includes(e)&&(n[e]=r),n.setAttribute(e,r);return n}var _T={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},vT=e=>(...t)=>({_$litDirective$:e,values:t}),yT=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,n){this._$Ct=e,this._$AM=t,this._$Ci=n}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}},bT=`important`,xT=` !`+bT,ST=vT(class extends yT{constructor(e){if(super(e),e.type!==_T.ATTRIBUTE||e.name!==`style`||e.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(e){return Object.keys(e).reduce((t,n)=>{let r=e[n];return r==null?t:t+`${n=n.includes(`-`)?n:n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,`-$&`).toLowerCase()}:${r};`},``)}update(e,[t]){let{style:n}=e.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(t)),this.render(t);for(let e of this.ft)t[e]??(this.ft.delete(e),e.includes(`-`)?n.removeProperty(e):n[e]=null);for(let e in t){let r=t[e];if(r!=null){this.ft.add(e);let t=typeof r==`string`&&r.endsWith(xT);e.includes(`-`)||t?n.setProperty(e,t?r.slice(0,-11):r,t?bT:``):n[e]=r}}return be}}),CT=`data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3cstyle%3e.spinner_ajPY{transform-origin:center;animation:spinner_AtaB%20.75s%20infinite%20linear}@keyframes%20spinner_AtaB{100%25{transform:rotate(360deg)}}%3c/style%3e%3cpath%20d='M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z'%20opacity='.25'/%3e%3cpath%20d='M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z'%20class='spinner_ajPY'/%3e%3c/svg%3e`,wT=class{#e;#t;#n=null;constructor(e,t){this.#e=e,this.#t=t,this.#n=this.#t.subscribe(()=>this.updateLayout()),this.updateLayout()}destroy(){this.#n&&=(this.#n(),null)}updateLayout(){let e=[],t=()=>{for(let[,e]of this.#t.entries())if(e.status==`loading`||e.status==`error`)return!0;return!1},n,r=!1;for(let[t,i]of this.#t.entries()){let a=i.status==`loading`||i.status==`error`,o=t.coords;if(!o&&a&&!n&&(n=i),o){a&&(r=!0);let t={left:`${o.x}px`,top:`${o.y}px`,width:`${o.width}px`,height:`${o.height}px`};e.push(O`<div style=${ST(t)}>
467
468
  <div class=${i.status}>
468
- ${i.status==`error`?D`<span
469
+ ${i.status==`error`?O`<span
469
470
  >Loading
470
- failed${i.detail?D`: ${i.detail}`:Se}</span
471
- >`:D`
472
- <img src="${nT}" alt="" />
471
+ failed${i.detail?O`: ${i.detail}`:xe}</span
472
+ >`:O`
473
+ <img src="${CT}" alt="" />
473
474
  <span>Loading...</span>
474
475
  `}
475
476
  </div>
476
- </div>`)}}n&&!r&&e.push(D`<div style=${tT({left:`0px`,top:`0px`,width:`100%`,height:`100%`})}>
477
+ </div>`)}}n&&!r&&e.push(O`<div style=${ST({left:`0px`,top:`0px`,width:`100%`,height:`100%`})}>
477
478
  <div class=${n.status}>
478
- ${n.status==`error`?D`<span
479
+ ${n.status==`error`?O`<span
479
480
  >Loading
480
- failed${n.detail?D`: ${n.detail}`:Se}</span
481
- >`:D`
482
- <img src="${nT}" alt="" />
481
+ failed${n.detail?O`: ${n.detail}`:xe}</span
482
+ >`:O`
483
+ <img src="${CT}" alt="" />
483
484
  <span>Loading...</span>
484
485
  `}
485
486
  </div>
486
- </div>`),t()?this.#e.style.display=`block`:setTimeout(()=>{t()||(this.#e.style.display=`none`)},3e3),Le(e,this.#e)}},iT=class{#e=new Map;#t=new Set;set(e,t,n){if(!e)throw Error(`LoadingStatusRegistry.set requires a view.`);this.#e.set(e,{status:t,detail:n});let r={view:e,status:t,detail:n};for(let e of this.#t)e(r)}delete(e){let t=this.#e.get(e);if(!t)return;this.#e.delete(e);let n={view:e,status:t.status,detail:t.detail};for(let e of this.#t)e(n)}get(e){return this.#e.get(e)}entries(){return this.#e.entries()}subscribe(e){return this.#t.add(e),()=>{this.#t.delete(e)}}};function aT(e){return t=>{if(e.querySelector(`.view-highlight`)?.remove(),t){if(!t.isVisible())return;let n=t.coords;if(n){let t=document.createElement(`div`);t.className=`view-highlight`,t.style.position=`absolute`,t.style.left=n.x+`px`,t.style.top=n.y+`px`,t.style.width=n.width+`px`,t.style.height=n.height+`px`,t.style.border=`1px solid green`,t.style.backgroundColor=`rgba(0, 255, 0, 0.05)`,t.style.pointerEvents=`none`,e.appendChild(t)}}}}var oT=class{#e;constructor(){this.#e=new Map}add(e,t){document.addEventListener(e,t);let n=this.#e.get(e);n||(n=[],this.#e.set(e,n)),n.push(t)}removeAll(){for(let[e,t]of this.#e)for(let n of t)document.removeEventListener(e,n);this.#e.clear()}},sT=class{#e;constructor(){this.#e=new Map}add(e,t){let n=this.#e.get(e);n||(n=new Set,this.#e.set(e,n)),n.add(t)}remove(e,t){this.#e.get(e)?.delete(t)}emit(e,t){this.#e.get(e)?.forEach(e=>e(t))}};function cT(e){let t=Math.floor(Math.random()*16777215).toString(16),n=[];for(let r of e.paramConfigs.values()){if(!hg(r))continue;let i=r.bind;if(!i||!(`input`in i))continue;let a=r.name,o=t=>{e.setValue(a,t)},s=e.getValue(a),c=i.name??a,l=i.debounce?xg(o,i.debounce,!1):o,u=`${t}-param-${a}`;if(i.input==`range`)n.push(D`<label for=${u}>${c}</label>
487
+ </div>`),t()?this.#e.style.display=`block`:setTimeout(()=>{t()||(this.#e.style.display=`none`)},3e3),Ie(e,this.#e)}},TT=class{#e=new Map;#t=new Set;set(e,t,n){if(!e)throw Error(`LoadingStatusRegistry.set requires a view.`);this.#e.set(e,{status:t,detail:n});let r={view:e,status:t,detail:n};for(let e of this.#t)e(r)}delete(e){let t=this.#e.get(e);if(!t)return;this.#e.delete(e);let n={view:e,status:t.status,detail:t.detail};for(let e of this.#t)e(n)}get(e){return this.#e.get(e)}entries(){return this.#e.entries()}subscribe(e){return this.#t.add(e),()=>{this.#t.delete(e)}}};function ET(e){return t=>{if(e.querySelector(`.view-highlight`)?.remove(),t){if(!t.isVisible())return;let n=t.coords;if(n){let t=document.createElement(`div`);t.className=`view-highlight`,t.style.position=`absolute`,t.style.left=n.x+`px`,t.style.top=n.y+`px`,t.style.width=n.width+`px`,t.style.height=n.height+`px`,t.style.border=`1px solid green`,t.style.backgroundColor=`rgba(0, 255, 0, 0.05)`,t.style.pointerEvents=`none`,e.appendChild(t)}}}}var DT=class{#e;constructor(){this.#e=new Map}add(e,t){document.addEventListener(e,t);let n=this.#e.get(e);n||(n=[],this.#e.set(e,n)),n.push(t)}removeAll(){for(let[e,t]of this.#e)for(let n of t)document.removeEventListener(e,n);this.#e.clear()}},OT=class{#e;constructor(){this.#e=new Map}add(e,t){let n=this.#e.get(e);n||(n=new Set,this.#e.set(e,n)),n.add(t)}remove(e,t){this.#e.get(e)?.delete(t)}emit(e,t){this.#e.get(e)?.forEach(e=>e(t))}};function kT(e){let t=Math.floor(Math.random()*16777215).toString(16),n=[];for(let r of e.paramConfigs.values()){if(!pg(r))continue;let i=r.bind;if(!i||!(`input`in i))continue;let a=r.name,o=t=>{e.setValue(a,t)},s=e.getValue(a),c=i.name??a,l=i.debounce?yg(o,i.debounce,!1):o,u=`${t}-param-${a}`;if(i.input==`range`)n.push(O`<label for=${u}>${c}</label>
487
488
  <div>
488
489
  <input
489
490
  id=${u}
490
491
  type="range"
491
492
  min=${i.min??0}
492
493
  max=${i.max??100}
493
- step=${i.step??Nn(i.min,i.max,100)}
494
+ step=${i.step??jn(i.min,i.max,100)}
494
495
  .value=${s}
495
496
  @input=${e=>{l(e.target.valueAsNumber),e.target.nextElementSibling.textContent=e.target.valueAsNumber}}
496
497
  /><span>${s}</span>
497
- </div>`);else if(i.input==`checkbox`)n.push(D`<label for=${u}>${c}</label>
498
+ </div>`);else if(i.input==`checkbox`)n.push(O`<label for=${u}>${c}</label>
498
499
  <input
499
500
  id=${u}
500
501
  type="checkbox"
501
502
  ?checked=${s}
502
503
  @input=${e=>l(e.target.checked)}
503
- />`);else if(i.input==`radio`)n.push(D`<span class="label">${c}</span>
504
+ />`);else if(i.input==`radio`)n.push(O`<span class="label">${c}</span>
504
505
  <div class="radio-group">
505
- ${i.options.map((e,t)=>D`<label>
506
+ ${i.options.map((e,t)=>O`<label>
506
507
  <input
507
508
  type="radio"
508
509
  name=${a}
@@ -511,18 +512,18 @@ background: #fff0f0;
511
512
  @input=${e=>l(e.target.value)}
512
513
  />${i.labels?.[t]??e}</label
513
514
  >`)}
514
- </div>`);else if(i.input==`select`)n.push(D`<label for=${u}>${c}</label>
515
+ </div>`);else if(i.input==`select`)n.push(O`<label for=${u}>${c}</label>
515
516
  <select
516
517
  id=${u}
517
518
  @input=${e=>l(e.target.value)}
518
519
  >
519
- ${i.options.map((e,t)=>D`<option
520
+ ${i.options.map((e,t)=>O`<option
520
521
  value=${e}
521
522
  ?selected=${s==e}
522
523
  >
523
524
  ${i.labels?.[t]??e}
524
525
  </option>`)}
525
- </select> `);else if(i.input==`text`||i.input==`number`||i.input==`color`)n.push(D`<label for=${u}>${c}</label>
526
+ </select> `);else if(i.input==`text`||i.input==`number`||i.input==`color`)n.push(O`<label for=${u}>${c}</label>
526
527
  <div>
527
528
  <input
528
529
  id=${u}
@@ -533,7 +534,7 @@ background: #fff0f0;
533
534
  @focus=${e=>e.target.select()}
534
535
  @input=${e=>{l(i.input==`number`?e.target.valueAsNumber:e.target.value)}}
535
536
  />
536
- </div>`);else throw Error(`Unsupported input type: `+i.input);i.description&&n.push(D`<div class="description">${i.description}</div>`)}return n}var lT=class{#e;#t;#n;constructor(e,t){this.#e=e,this.#t=t,this.#n=void 0}initialize(e){let t=[];e.visit(e=>{let n=e.paramRuntime;t.push(...cT(n))});let n=this.#t.inputBindingContainer;if(!(!n||n==`none`||!t.length)){if(this.#n=document.createElement(`div`),this.#n.className=`gs-input-bindings`,n==`default`)this.#e.appendChild(this.#n);else if(n instanceof HTMLElement)n.appendChild(this.#n);else throw Error(`Invalid inputBindingContainer`);t.length&&Le(D`<div class="gs-input-binding">${t}</div>`,this.#n)}}remove(){this.#n?.remove()}};Float32Array,Float32Array;var uT=5120,dT=5121,fT=5122,pT=5123,mT=5124,hT=5125,gT=5126,_T=32819,vT=32820,yT=33635,bT=5131,xT=33640,ST=35899,CT=35902,wT=36269,TT=34042,ET={};{let e=ET;e[uT]=Int8Array,e[dT]=Uint8Array,e[fT]=Int16Array,e[pT]=Uint16Array,e[mT]=Int32Array,e[hT]=Uint32Array,e[gT]=Float32Array,e[_T]=Uint16Array,e[vT]=Uint16Array,e[yT]=Uint16Array,e[bT]=Uint16Array,e[xT]=Uint32Array,e[ST]=Uint32Array,e[CT]=Uint32Array,e[wT]=Uint32Array,e[TT]=Uint32Array}function DT(e){if(e instanceof Int8Array)return uT;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)return dT;if(e instanceof Int16Array)return fT;if(e instanceof Uint16Array)return pT;if(e instanceof Int32Array)return mT;if(e instanceof Uint32Array)return hT;if(e instanceof Float32Array)return gT;throw Error(`unsupported typed array type`)}function OT(e){if(e===Int8Array)return uT;if(e===Uint8Array||e===Uint8ClampedArray)return dT;if(e===Int16Array)return fT;if(e===Uint16Array)return pT;if(e===Int32Array)return mT;if(e===Uint32Array)return hT;if(e===Float32Array)return gT;throw Error(`unsupported typed array type`)}function kT(e){let t=ET[e];if(!t)throw Error(`unknown gl type`);return t}var AT=typeof SharedArrayBuffer<`u`?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function jT(...e){console.error(...e)}function MT(...e){console.warn(...e)}function NT(e,t){return typeof WebGLBuffer<`u`&&t instanceof WebGLBuffer}function PT(e,t){return typeof WebGLRenderbuffer<`u`&&t instanceof WebGLRenderbuffer}function FT(e,t){return typeof WebGLTexture<`u`&&t instanceof WebGLTexture}function IT(e,t){return typeof WebGLSampler<`u`&&t instanceof WebGLSampler}var LT=35044,RT=34962,zT=34963,BT=34660,VT=5120,HT=5121,UT=5122,WT=5123,GT=5124,KT=5125,qT=5126,JT={attribPrefix:``};function YT(e,t,n,r,i){e.bindBuffer(t,n),e.bufferData(t,r,i||LT)}function XT(e,t,n,r){if(NT(e,t))return t;n||=RT;let i=e.createBuffer();return YT(e,n,i,t,r),i}function ZT(e){return e===`indices`}function QT(e){return e instanceof Int8Array||e instanceof Uint8Array}function $T(e){return e===Int8Array||e===Uint8Array}function eE(e){return e.length?e:e.data}var tE=/coord|texture/i,nE=/color|colour/i;function rE(e,t){let n;if(n=tE.test(e)?2:nE.test(e)?4:3,t%n>0)throw Error(`Can not guess numComponents for attribute '${e}'. Tried ${n} but ${t} values is not evenly divisible by ${n}. You should specify it.`);return n}function iE(e,t){return e.numComponents||e.size||rE(t,eE(e).length)}function aE(e,t){if(AT(e))return e;if(AT(e.data))return e.data;Array.isArray(e)&&(e={data:e});let n=e.type;return n||=ZT(t)?Uint16Array:Float32Array,new n(e.data)}function oE(e,t){let n={};return Object.keys(t).forEach(function(r){if(!ZT(r)){let i=t[r],a=i.attrib||i.name||i.attribName||JT.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!AT(i.value))throw Error(`array.value is not array or typedarray`);n[a]={value:i.value}}else{let t,o,s,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)t=i.buffer,c=i.numComponents||i.size,o=i.type,s=i.normalize;else if(typeof i==`number`||typeof i.data==`number`){let n=i.data||i,a=i.type||Float32Array,l=n*a.BYTES_PER_ELEMENT;o=OT(a),s=i.normalize===void 0?$T(a):i.normalize,c=i.numComponents||i.size||rE(r,n),t=e.createBuffer(),e.bindBuffer(RT,t),e.bufferData(RT,l,i.drawType||LT)}else{let n=aE(i,r);t=XT(e,n,void 0,i.drawType),o=DT(n),s=i.normalize===void 0?QT(n):i.normalize,c=iE(i,r)}n[a]={buffer:t,numComponents:c,type:o,normalize:s,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),e.bindBuffer(RT,null),n}function sE(e,t,n,r){n=aE(n),r===void 0?YT(e,RT,t.buffer,n,t.drawType):(e.bindBuffer(RT,t.buffer),e.bufferSubData(RT,r,n))}function cE(e,t){return t===VT||t===HT?1:t===UT||t===WT?2:t===GT||t===KT||t===qT?4:0}var lE=[`position`,`positions`,`a_position`];function uE(e,t){let n,r;for(r=0;r<lE.length&&(n=lE[r],!(n in t||(n=JT.attribPrefix+n,n in t)));++r);r===lE.length&&(n=Object.keys(t)[0]);let i=t[n];if(!i.buffer)return 1;e.bindBuffer(RT,i.buffer);let a=e.getBufferParameter(RT,BT);e.bindBuffer(RT,null);let o=a/cE(e,i.type),s=i.numComponents||i.size,c=o/s;if(c%1!=0)throw Error(`numComponents ${s} not correct for length ${length}`);return c}function dE(e,t,n){let r=oE(e,t),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);let a=t.indices;if(a){let t=aE(a,`indices`);i.indices=XT(e,t,zT),i.numElements=t.length,i.elementType=DT(t)}else i.numElements||=uE(e,i.attribs);return i}function fE(e){return!!e.texStorage2D}var pE=function(){let e={},t={};function n(n){let r=n.constructor.name;if(!e[r]){for(let e in n)if(typeof n[e]==`number`){let r=t[n[e]];t[n[e]]=r?`${r} | ${e}`:e}e[r]=!0}}return function(e,r){return n(e),t[r]||(typeof r==`number`?`0x${r.toString(16)}`:r)}}(),mE={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},hE=AT,gE=function(){let e;return function(){return e||=typeof document<`u`&&document.createElement?document.createElement(`canvas`).getContext(`2d`):null,e}}(),_E=6406,vE=6407,K=6408,yE=6409,bE=6410,xE=6402,SE=34041,CE=33071,wE=9728,TE=9729,EE=3553,DE=34067,OE=32879,kE=35866,AE=34069,jE=34070,ME=34071,NE=34072,PE=34073,FE=34074,IE=10241,LE=10240,RE=10242,zE=10243,BE=32882,VE=33082,HE=33083,UE=33084,WE=33085,GE=3317,KE=3314,qE=32878,JE=3316,YE=3315,XE=32877,ZE=37443,QE=37441,$E=37440,eD=33321,tD=36756,nD=33325,rD=33326,iD=33330,aD=33329,oD=33338,sD=33337,cD=33340,lD=33339,uD=33323,dD=36757,fD=33327,pD=33328,mD=33336,hD=33335,gD=33332,_D=33331,vD=33334,yD=33333,bD=32849,xD=35905,SD=36194,CD=36758,wD=35898,TD=35901,ED=34843,DD=34837,OD=36221,kD=36239,AD=36215,jD=36233,MD=36209,ND=36227,PD=32856,FD=35907,ID=36759,LD=32855,RD=32854,zD=32857,BD=34842,VD=34836,HD=36220,UD=36238,WD=36975,GD=36214,KD=36232,qD=36226,JD=36208,YD=33189,XD=33190,ZD=36012,QD=36013,$D=35056,eO=5120,q=5121,tO=5122,nO=5123,rO=5124,iO=5125,aO=5126,oO=32819,sO=32820,cO=33635,lO=5131,uO=36193,dO=33640,fO=35899,pO=35902,mO=36269,hO=34042,gO=33319,_O=33320,vO=6403,yO=36244,bO=36248,xO=36249,SO={};{let e=SO;e[_E]={numColorComponents:1},e[yE]={numColorComponents:1},e[bE]={numColorComponents:2},e[vE]={numColorComponents:3},e[K]={numColorComponents:4},e[vO]={numColorComponents:1},e[yO]={numColorComponents:1},e[gO]={numColorComponents:2},e[_O]={numColorComponents:2},e[vE]={numColorComponents:3},e[bO]={numColorComponents:3},e[K]={numColorComponents:4},e[xO]={numColorComponents:4},e[xE]={numColorComponents:1},e[SE]={numColorComponents:2}}var CO;function wO(e){if(!CO){let e={};e[_E]={textureFormat:_E,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[q,lO,uO,aO]},e[yE]={textureFormat:yE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[q,lO,uO,aO]},e[bE]={textureFormat:bE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[q,lO,uO,aO]},e[vE]={textureFormat:vE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[q,lO,uO,aO,cO]},e[K]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[q,lO,uO,aO,oO,sO]},e[xE]={textureFormat:xE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[iO,nO]},e[eD]={textureFormat:vO,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[q]},e[tD]={textureFormat:vO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[eO]},e[nD]={textureFormat:vO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[aO,lO]},e[rD]={textureFormat:vO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[aO]},e[iD]={textureFormat:yO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[q]},e[aD]={textureFormat:yO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[eO]},e[gD]={textureFormat:yO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[nO]},e[_D]={textureFormat:yO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[tO]},e[vD]={textureFormat:yO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[iO]},e[yD]={textureFormat:yO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[rO]},e[uD]={textureFormat:gO,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[q]},e[dD]={textureFormat:gO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[eO]},e[fD]={textureFormat:gO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[aO,lO]},e[pD]={textureFormat:gO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[aO]},e[mD]={textureFormat:_O,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[q]},e[hD]={textureFormat:_O,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[eO]},e[oD]={textureFormat:_O,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[nO]},e[sD]={textureFormat:_O,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[tO]},e[cD]={textureFormat:_O,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[iO]},e[lD]={textureFormat:_O,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[rO]},e[bD]={textureFormat:vE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[q]},e[xD]={textureFormat:vE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[q]},e[SD]={textureFormat:vE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[q,cO]},e[CD]={textureFormat:vE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[eO]},e[wD]={textureFormat:vE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[aO,lO,fO]},e[TD]={textureFormat:vE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[aO,lO,pO]},e[ED]={textureFormat:vE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[aO,lO]},e[DD]={textureFormat:vE,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[aO]},e[OD]={textureFormat:bO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[q]},e[kD]={textureFormat:bO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[eO]},e[AD]={textureFormat:bO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[nO]},e[jD]={textureFormat:bO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[tO]},e[MD]={textureFormat:bO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[iO]},e[ND]={textureFormat:bO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[rO]},e[PD]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[q]},e[FD]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[q]},e[ID]={textureFormat:K,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[eO]},e[LD]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[q,sO,dO]},e[RD]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[q,oO]},e[zD]={textureFormat:K,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[dO]},e[BD]={textureFormat:K,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[aO,lO]},e[VD]={textureFormat:K,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[aO]},e[HD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[q]},e[UD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[eO]},e[WD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[dO]},e[GD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[nO]},e[KD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[tO]},e[qD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[rO]},e[JD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[iO]},e[YD]={textureFormat:xE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[nO,iO]},e[XD]={textureFormat:xE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[iO]},e[ZD]={textureFormat:xE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[aO]},e[$D]={textureFormat:SE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[hO]},e[QD]={textureFormat:SE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[mO]},Object.keys(e).forEach(function(t){let n=e[t];n.bytesPerElementMap={},n.bytesPerElement.forEach(function(e,t){let r=n.type[t];n.bytesPerElementMap[r]=e})}),CO=e}return CO[e]}function TO(e,t){let n=wO(e);if(!n)throw`unknown internal format`;let r=n.bytesPerElementMap[t];if(r===void 0)throw`unknown internal format`;return r}function EO(e){let t=wO(e);if(!t)throw`unknown internal format`;return{format:t.textureFormat,type:t.type[0]}}function DO(e){return(e&e-1)==0}function OO(e,t,n,r){if(!fE(e))return DO(t)&&DO(n);let i=wO(r);if(!i)throw`unknown internal format`;return i.colorRenderable&&i.textureFilterable}function kO(e){let t=wO(e);if(!t)throw`unknown internal format`;return t.textureFilterable}function AO(e,t,n){return hE(t)?DT(t):n||q}function jO(e,t,n,r,i){if(i%1!=0)throw`can't guess dimensions`;if(!n&&!r){let e=Math.sqrt(i/(t===DE?6:1));e%1==0?(n=e,r=e):(n=i,r=1)}else if(!r){if(r=i/n,r%1)throw`can't guess dimensions`}else if(!n&&(n=i/r,n%1))throw`can't guess dimensions`;return{width:n,height:r}}function MO(e,t){t.colorspaceConversion!==void 0&&e.pixelStorei(ZE,t.colorspaceConversion),t.premultiplyAlpha!==void 0&&e.pixelStorei(QE,t.premultiplyAlpha),t.flipY!==void 0&&e.pixelStorei($E,t.flipY)}function NO(e){e.pixelStorei(GE,4),fE(e)&&(e.pixelStorei(KE,0),e.pixelStorei(qE,0),e.pixelStorei(JE,0),e.pixelStorei(YE,0),e.pixelStorei(XE,0))}function PO(e,t,n,r){r.minMag&&(n.call(e,t,IE,r.minMag),n.call(e,t,LE,r.minMag)),r.min&&n.call(e,t,IE,r.min),r.mag&&n.call(e,t,LE,r.mag),r.wrap&&(n.call(e,t,RE,r.wrap),n.call(e,t,zE,r.wrap),(t===OE||IT(e,t))&&n.call(e,t,BE,r.wrap)),r.wrapR&&n.call(e,t,BE,r.wrapR),r.wrapS&&n.call(e,t,RE,r.wrapS),r.wrapT&&n.call(e,t,zE,r.wrapT),r.minLod&&n.call(e,t,VE,r.minLod),r.maxLod&&n.call(e,t,HE,r.maxLod),r.baseLevel&&n.call(e,t,UE,r.baseLevel),r.maxLevel&&n.call(e,t,WE,r.maxLevel)}function FO(e,t,n){let r=n.target||EE;e.bindTexture(r,t),PO(e,r,e.texParameteri,n)}function IO(e){return e||=mE.textureColor,hE(e)?e:new Uint8Array([e[0]*255,e[1]*255,e[2]*255,e[3]*255])}function LO(e,t,n,r,i,a){n||=mE.textureOptions,a||=K;let o=n.target||EE;if(r||=n.width,i||=n.height,e.bindTexture(o,t),OO(e,r,i,a))e.generateMipmap(o);else{let t=kO(a)?TE:wE;e.texParameteri(o,IE,t),e.texParameteri(o,LE,t),e.texParameteri(o,RE,CE),e.texParameteri(o,zE,CE)}}function RO(e){return e.auto===!0||e.auto===void 0&&e.level===void 0}function zO(e,t){return t||={},t.cubeFaceOrder||[AE,jE,ME,NE,PE,FE]}function BO(e,t){let n=zO(e,t).map(function(e,t){return{face:e,ndx:t}});return n.sort(function(e,t){return e.face-t.face}),n}function VO(e,t,n,r){r||=mE.textureOptions;let i=r.target||EE,a=r.level||0,o=n.width,s=n.height,c=r.internalFormat||r.format||K,l=EO(c),u=r.format||l.format,d=r.type||l.type;if(MO(e,r),e.bindTexture(i,t),i===DE){let l=n.width,f=n.height,p,m;if(l/6===f)p=f,m=[0,0,1,0,2,0,3,0,4,0,5,0];else if(f/6===l)p=l,m=[0,0,0,1,0,2,0,3,0,4,0,5];else if(l/3==f/2)p=l/3,m=[0,0,1,0,2,0,0,1,1,1,2,1];else if(l/2==f/3)p=l/2,m=[0,0,1,0,0,1,1,1,0,2,1,2];else throw`can't figure out cube map from element: `+(n.src?n.src:n.nodeName);let h=gE();h?(h.canvas.width=p,h.canvas.height=p,o=p,s=p,BO(e,r).forEach(function(t){let r=m[t.ndx*2+0]*p,i=m[t.ndx*2+1]*p;h.drawImage(n,r,i,p,p,0,0,p,p),e.texImage2D(t.face,a,c,u,d,h.canvas)}),h.canvas.width=1,h.canvas.height=1):typeof createImageBitmap<`u`&&(o=p,s=p,BO(e,r).forEach(function(l){let f=m[l.ndx*2+0]*p,h=m[l.ndx*2+1]*p;e.texImage2D(l.face,a,c,p,p,0,u,d,null),createImageBitmap(n,f,h,p,p,{premultiplyAlpha:`none`,colorSpaceConversion:`none`}).then(function(n){MO(e,r),e.bindTexture(i,t),e.texImage2D(l.face,a,c,u,d,n),RO(r)&&LO(e,t,r,o,s,c)})}))}else if(i===OE||i===kE){let t=Math.min(n.width,n.height),r=Math.max(n.width,n.height),o=r/t;if(o%1!=0)throw`can not compute 3D dimensions of element`;let s=n.width===r?1:0,l=n.height===r?1:0;e.pixelStorei(GE,1),e.pixelStorei(KE,n.width),e.pixelStorei(qE,0),e.pixelStorei(XE,0),e.texImage3D(i,a,c,t,t,t,0,u,d,null);for(let r=0;r<o;++r){let o=r*t*s,c=r*t*l;e.pixelStorei(JE,o),e.pixelStorei(YE,c),e.texSubImage3D(i,a,0,0,r,t,t,1,u,d,n)}NO(e)}else e.texImage2D(i,a,c,u,d,n);RO(r)&&LO(e,t,r,o,s,c),FO(e,t,r)}function HO(){}function UO(e){if(typeof document<`u`){let t=document.createElement(`a`);return t.href=e,t.hostname===location.hostname&&t.port===location.port&&t.protocol===location.protocol}else{let t=new URL(location.href).origin;return new URL(e,location.href).origin===t}}function WO(e,t){return t===void 0&&!UO(e)?`anonymous`:t}function GO(e,t,n){n||=HO;let r;if(t=t===void 0?mE.crossOrigin:t,t=WO(e,t),typeof Image<`u`){r=new Image,t!==void 0&&(r.crossOrigin=t);let i=function(){r.removeEventListener(`error`,a),r.removeEventListener(`load`,o),r=null},a=function(){let t=`couldn't load image: `+e;jT(t),n(t,r),i()},o=function(){n(null,r),i()};return r.addEventListener(`error`,a),r.addEventListener(`load`,o),r.src=e,r}else if(typeof ImageBitmap<`u`){let i,a,o=function(){n(i,a)},s={};t&&(s.mode=`cors`),fetch(e,s).then(function(e){if(!e.ok)throw e;return e.blob()}).then(function(e){return createImageBitmap(e,{premultiplyAlpha:`none`,colorSpaceConversion:`none`})}).then(function(e){a=e,setTimeout(o)}).catch(function(e){i=e,setTimeout(o)}),r=null}return r}function KO(e){return typeof ImageBitmap<`u`&&e instanceof ImageBitmap||typeof ImageData<`u`&&e instanceof ImageData||typeof HTMLElement<`u`&&e instanceof HTMLElement}function qO(e,t,n){return KO(e)?(setTimeout(function(){n(null,e)}),e):GO(e,t,n)}function JO(e,t,n){n||=mE.textureOptions;let r=n.target||EE;if(e.bindTexture(r,t),n.color===!1)return;let i=IO(n.color);if(r===DE)for(let t=0;t<6;++t)e.texImage2D(AE+t,0,K,1,1,0,K,q,i);else r===OE||r===kE?e.texImage3D(r,0,K,1,1,1,0,K,q,i):e.texImage2D(r,0,K,1,1,0,K,q,i)}function YO(e,t,n,r){return r||=HO,n||=mE.textureOptions,JO(e,t,n),n=Object.assign({},n),qO(n.src,n.crossOrigin,function(i,a){i?r(i,t,a):(VO(e,t,a,n),r(null,t,a))})}function XO(e,t,n,r){r||=HO;let i=n.src;if(i.length!==6)throw`there must be 6 urls for a cubemap`;let a=n.level||0,o=n.internalFormat||n.format||K,s=EO(o),c=n.format||s.format,l=n.type||q,u=n.target||EE;if(u!==DE)throw`target must be TEXTURE_CUBE_MAP`;JO(e,t,n),n=Object.assign({},n);let d=6,f=[],p=zO(e,n),m;function h(i){return function(s,p){--d,s?f.push(s):p.width===p.height?(MO(e,n),e.bindTexture(u,t),d===5?zO().forEach(function(t){e.texImage2D(t,a,o,c,l,p)}):e.texImage2D(i,a,o,c,l,p),RO(n)&&e.generateMipmap(u)):f.push(`cubemap face img is not a square: `+p.src),d===0&&r(f.length?f:void 0,t,m)}}m=i.map(function(e,t){return qO(e,n.crossOrigin,h(p[t]))})}function ZO(e,t,n,r){r||=HO;let i=n.src,a=n.internalFormat||n.format||K,o=EO(a),s=n.format||o.format,c=n.type||q,l=n.target||kE;if(l!==OE&&l!==kE)throw`target must be TEXTURE_3D or TEXTURE_2D_ARRAY`;JO(e,t,n),n=Object.assign({},n);let u=i.length,d=[],f,p=n.level||0,m=n.width,h=n.height,g=i.length,_=!0;function v(i){return function(o,v){if(--u,o)d.push(o);else{if(MO(e,n),e.bindTexture(l,t),_){_=!1,m=n.width||v.width,h=n.height||v.height,e.texImage3D(l,p,a,m,h,g,0,s,c,null);for(let t=0;t<g;++t)e.texSubImage3D(l,p,0,0,t,m,h,1,s,c,v)}else{let t=v,n;(v.width!==m||v.height!==h)&&(n=gE(),t=n.canvas,n.canvas.width=m,n.canvas.height=h,n.drawImage(v,0,0,m,h)),e.texSubImage3D(l,p,0,0,i,m,h,1,s,c,t),n&&t===n.canvas&&(n.canvas.width=0,n.canvas.height=0)}RO(n)&&e.generateMipmap(l)}u===0&&r(d.length?d:void 0,t,f)}}f=i.map(function(e,t){return qO(e,n.crossOrigin,v(t))})}function QO(e,t,n,r){r||=mE.textureOptions;let i=r.target||EE;e.bindTexture(i,t);let a=r.width,o=r.height,s=r.depth,c=r.level||0,l=r.internalFormat||r.format||K,u=EO(l),d=r.format||u.format,f=r.type||AO(e,n,u.type);hE(n)?n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer)):n=new(kT(f))(n);let p=TO(l,f),m=n.byteLength/p;if(m%1)throw`length wrong size for format: `+pE(e,d);let h;if(i===OE||i===kE)if(!a&&!o&&!s){let e=Math.cbrt(m);if(e%1!=0)throw`can't guess cube size of array of numElements: `+m;a=e,o=e,s=e}else a&&(!o||!s)?(h=jO(e,i,o,s,m/a),o=h.width,s=h.height):o&&(!a||!s)?(h=jO(e,i,a,s,m/o),a=h.width,s=h.height):(h=jO(e,i,a,o,m/s),a=h.width,o=h.height);else h=jO(e,i,a,o,m),a=h.width,o=h.height;if(NO(e),e.pixelStorei(GE,r.unpackAlignment||1),MO(e,r),i===DE){let t=p/n.BYTES_PER_ELEMENT,i=m/6*t;BO(e,r).forEach(t=>{let r=i*t.ndx,s=n.subarray(r,r+i);e.texImage2D(t.face,c,l,a,o,0,d,f,s)})}else i===OE||i===kE?e.texImage3D(i,c,l,a,o,s,0,d,f,n):e.texImage2D(i,c,l,a,o,0,d,f,n);return{width:a,height:o,depth:s,type:f}}function $O(e,t,n){let r=n.target||EE;e.bindTexture(r,t);let i=n.level||0,a=n.internalFormat||n.format||K,o=EO(a),s=n.format||o.format,c=n.type||o.type;if(MO(e,n),r===DE)for(let t=0;t<6;++t)e.texImage2D(AE+t,i,a,n.width,n.height,0,s,c,null);else r===OE||r===kE?e.texImage3D(r,i,a,n.width,n.height,n.depth,0,s,c,null):e.texImage2D(r,i,a,n.width,n.height,0,s,c,null)}function ek(e,t,n){n||=HO,t||=mE.textureOptions;let r=e.createTexture(),i=t.target||EE,a=t.width||1,o=t.height||1,s=t.internalFormat||K;e.bindTexture(i,r),i===DE&&(e.texParameteri(i,RE,CE),e.texParameteri(i,zE,CE));let c=t.src;if(c)if(typeof c==`function`&&(c=c(e,t)),typeof c==`string`)YO(e,r,t,n);else if(hE(c)||Array.isArray(c)&&(typeof c[0]==`number`||Array.isArray(c[0])||hE(c[0]))){let n=QO(e,r,c,t);a=n.width,o=n.height}else Array.isArray(c)&&(typeof c[0]==`string`||KO(c[0]))?i===DE?XO(e,r,t,n):ZO(e,r,t,n):(VO(e,r,c,t),a=c.width,o=c.height);else $O(e,r,t);return RO(t)&&LO(e,r,t,a,o,s),FO(e,r,t),r}function tk(e,t,n,r,i,a){r||=n.width,i||=n.height,a||=n.depth;let o=n.target||EE;e.bindTexture(o,t);let s=n.level||0,c=n.internalFormat||n.format||K,l=EO(c),u=n.format||l.format,d,f=n.src;if(d=f&&(hE(f)||Array.isArray(f)&&typeof f[0]==`number`)?n.type||AO(e,f,l.type):n.type||l.type,o===DE)for(let t=0;t<6;++t)e.texImage2D(AE+t,s,c,r,i,0,u,d,null);else o===OE||o===kE?e.texImage3D(o,s,c,r,i,a,0,u,d,null):e.texImage2D(o,s,c,r,i,0,u,d,null)}var nk=MT,rk=33984,ik=35048,ak=34962,ok=34963,sk=35345,ck=35718,lk=35721,uk=35971,dk=35382,fk=35396,pk=35398,mk=35392,hk=35395,gk=5126,_k=35664,vk=35665,yk=35666,bk=5124,xk=35667,Sk=35668,Ck=35669,wk=35670,Tk=35671,Ek=35672,Dk=35673,Ok=35674,kk=35675,Ak=35676,jk=35678,Mk=35680,Nk=35679,Pk=35682,Fk=35685,Ik=35686,Lk=35687,Rk=35688,zk=35689,Bk=35690,Vk=36289,Hk=36292,Uk=36293,Wk=5125,Gk=36294,Kk=36295,qk=36296,Jk=36298,Yk=36299,Xk=36300,Zk=36303,Qk=36306,$k=36307,eA=36308,tA=36311,nA=3553,rA=34067,iA=32879,aA=35866,J={};function oA(e,t){return J[t].bindPoint}function sA(e,t){return function(n){e.uniform1f(t,n)}}function cA(e,t){return function(n){e.uniform1fv(t,n)}}function lA(e,t){return function(n){e.uniform2fv(t,n)}}function uA(e,t){return function(n){e.uniform3fv(t,n)}}function dA(e,t){return function(n){e.uniform4fv(t,n)}}function fA(e,t){return function(n){e.uniform1i(t,n)}}function pA(e,t){return function(n){e.uniform1iv(t,n)}}function mA(e,t){return function(n){e.uniform2iv(t,n)}}function hA(e,t){return function(n){e.uniform3iv(t,n)}}function gA(e,t){return function(n){e.uniform4iv(t,n)}}function _A(e,t){return function(n){e.uniform1ui(t,n)}}function vA(e,t){return function(n){e.uniform1uiv(t,n)}}function yA(e,t){return function(n){e.uniform2uiv(t,n)}}function bA(e,t){return function(n){e.uniform3uiv(t,n)}}function xA(e,t){return function(n){e.uniform4uiv(t,n)}}function SA(e,t){return function(n){e.uniformMatrix2fv(t,!1,n)}}function CA(e,t){return function(n){e.uniformMatrix3fv(t,!1,n)}}function wA(e,t){return function(n){e.uniformMatrix4fv(t,!1,n)}}function TA(e,t){return function(n){e.uniformMatrix2x3fv(t,!1,n)}}function EA(e,t){return function(n){e.uniformMatrix3x2fv(t,!1,n)}}function DA(e,t){return function(n){e.uniformMatrix2x4fv(t,!1,n)}}function OA(e,t){return function(n){e.uniformMatrix4x2fv(t,!1,n)}}function kA(e,t){return function(n){e.uniformMatrix3x4fv(t,!1,n)}}function AA(e,t){return function(n){e.uniformMatrix4x3fv(t,!1,n)}}function jA(e,t,n,r){let i=oA(e,t);return fE(e)?function(t){let a,o;FT(e,t)?(a=t,o=null):(a=t.texture,o=t.sampler),e.uniform1i(r,n),e.activeTexture(rk+n),e.bindTexture(i,a),e.bindSampler(n,o)}:function(t){e.uniform1i(r,n),e.activeTexture(rk+n),e.bindTexture(i,t)}}function MA(e,t,n,r,i){let a=oA(e,t),o=new Int32Array(i);for(let e=0;e<i;++e)o[e]=n+e;return fE(e)?function(t){e.uniform1iv(r,o),t.forEach(function(t,r){e.activeTexture(rk+o[r]);let i,s;FT(e,t)?(i=t,s=null):(i=t.texture,s=t.sampler),e.bindSampler(n,s),e.bindTexture(a,i)})}:function(t){e.uniform1iv(r,o),t.forEach(function(t,n){e.activeTexture(rk+o[n]),e.bindTexture(a,t)})}}J[gk]={Type:Float32Array,size:4,setter:sA,arraySetter:cA},J[_k]={Type:Float32Array,size:8,setter:lA,cols:2},J[vk]={Type:Float32Array,size:12,setter:uA,cols:3},J[yk]={Type:Float32Array,size:16,setter:dA,cols:4},J[bk]={Type:Int32Array,size:4,setter:fA,arraySetter:pA},J[xk]={Type:Int32Array,size:8,setter:mA,cols:2},J[Sk]={Type:Int32Array,size:12,setter:hA,cols:3},J[Ck]={Type:Int32Array,size:16,setter:gA,cols:4},J[Wk]={Type:Uint32Array,size:4,setter:_A,arraySetter:vA},J[Gk]={Type:Uint32Array,size:8,setter:yA,cols:2},J[Kk]={Type:Uint32Array,size:12,setter:bA,cols:3},J[qk]={Type:Uint32Array,size:16,setter:xA,cols:4},J[wk]={Type:Uint32Array,size:4,setter:fA,arraySetter:pA},J[Tk]={Type:Uint32Array,size:8,setter:mA,cols:2},J[Ek]={Type:Uint32Array,size:12,setter:hA,cols:3},J[Dk]={Type:Uint32Array,size:16,setter:gA,cols:4},J[Ok]={Type:Float32Array,size:32,setter:SA,rows:2,cols:2},J[kk]={Type:Float32Array,size:48,setter:CA,rows:3,cols:3},J[Ak]={Type:Float32Array,size:64,setter:wA,rows:4,cols:4},J[Fk]={Type:Float32Array,size:32,setter:TA,rows:2,cols:3},J[Ik]={Type:Float32Array,size:32,setter:DA,rows:2,cols:4},J[Lk]={Type:Float32Array,size:48,setter:EA,rows:3,cols:2},J[Rk]={Type:Float32Array,size:48,setter:kA,rows:3,cols:4},J[zk]={Type:Float32Array,size:64,setter:OA,rows:4,cols:2},J[Bk]={Type:Float32Array,size:64,setter:AA,rows:4,cols:3},J[jk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:nA},J[Mk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:rA},J[Nk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:iA},J[Pk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:nA},J[Vk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:aA},J[Hk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:aA},J[Uk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:rA},J[Jk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:nA},J[Yk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:iA},J[Xk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:rA},J[Zk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:aA},J[Qk]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:nA},J[$k]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:iA},J[eA]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:rA},J[tA]={Type:null,size:0,setter:jA,arraySetter:MA,bindPoint:aA};function NA(e,t){return function(n){if(n.value)switch(e.disableVertexAttribArray(t),n.value.length){case 4:e.vertexAttrib4fv(t,n.value);break;case 3:e.vertexAttrib3fv(t,n.value);break;case 2:e.vertexAttrib2fv(t,n.value);break;case 1:e.vertexAttrib1fv(t,n.value);break;default:throw Error(`the length of a float constant value must be between 1 and 4!`)}else e.bindBuffer(ak,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribPointer(t,n.numComponents||n.size,n.type||gk,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function PA(e,t){return function(n){if(n.value)if(e.disableVertexAttribArray(t),n.value.length===4)e.vertexAttrib4iv(t,n.value);else throw Error(`The length of an integer constant value must be 4!`);else e.bindBuffer(ak,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||bk,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function FA(e,t){return function(n){if(n.value)if(e.disableVertexAttribArray(t),n.value.length===4)e.vertexAttrib4uiv(t,n.value);else throw Error(`The length of an unsigned integer constant value must be 4!`);else e.bindBuffer(ak,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||Wk,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function IA(e,t,n){let r=n.size,i=n.count;return function(n){e.bindBuffer(ak,n.buffer);let a=n.size||n.numComponents||r,o=a/i,s=n.type||gk,c=J[s].size*a,l=n.normalize||!1,u=n.offset||0,d=c/i;for(let r=0;r<i;++r)e.enableVertexAttribArray(t+r),e.vertexAttribPointer(t+r,o,s,l,c,u+d*r),n.divisor!==void 0&&e.vertexAttribDivisor(t+r,n.divisor)}}var LA={};LA[gk]={size:4,setter:NA},LA[_k]={size:8,setter:NA},LA[vk]={size:12,setter:NA},LA[yk]={size:16,setter:NA},LA[bk]={size:4,setter:PA},LA[xk]={size:8,setter:PA},LA[Sk]={size:12,setter:PA},LA[Ck]={size:16,setter:PA},LA[Wk]={size:4,setter:FA},LA[Gk]={size:8,setter:FA},LA[Kk]={size:12,setter:FA},LA[qk]={size:16,setter:FA},LA[wk]={size:4,setter:PA},LA[Tk]={size:8,setter:PA},LA[Ek]={size:12,setter:PA},LA[Dk]={size:16,setter:PA},LA[Ok]={size:4,setter:IA,count:2},LA[kk]={size:9,setter:IA,count:3},LA[Ak]={size:16,setter:IA,count:4};function RA(e){let t=e.name;return t.startsWith(`gl_`)||t.startsWith(`webgl_`)}var zA=/(\.|\[|]|\w+)/g,BA=e=>e>=`0`&&e<=`9`;function VA(e,t,n,r){let i=e.split(zA).filter(e=>e!==``),a=0,o=``;for(;;){let e=i[a++];o+=e;let s=BA(e[0]),c=s?parseInt(e):e;if(s&&(o+=i[a++]),a===i.length){n[c]=t;break}else{let e=i[a++],t=e===`[`,s=n[c]||(t?[]:{});n[c]=s,n=s,r[o]=r[o]||function(e){return function(t){$A(e,t)}}(s),o+=e}}}function HA(e,t){let n=0;function r(t,r,i){let a=r.name.endsWith(`[0]`),o=r.type,s=J[o];if(!s)throw Error(`unknown type: 0x${o.toString(16)}`);let c;if(s.bindPoint){let t=n;n+=r.size,c=a?s.arraySetter(e,o,t,i,r.size):s.setter(e,o,t,i,r.size)}else c=s.arraySetter&&a?s.arraySetter(e,i):s.setter(e,i);return c.location=i,c}let i={},a={},o=e.getProgramParameter(t,ck);for(let n=0;n<o;++n){let o=e.getActiveUniform(t,n);if(RA(o))continue;let s=o.name;s.endsWith(`[0]`)&&(s=s.substr(0,s.length-3));let c=e.getUniformLocation(t,o.name);if(c){let e=r(t,o,c);i[s]=e,VA(s,e,a,i)}}return i}function UA(e,t){let n={},r=e.getProgramParameter(t,uk);for(let i=0;i<r;++i){let r=e.getTransformFeedbackVarying(t,i);n[r.name]={index:i,type:r.type,size:r.size}}return n}function WA(e,t){let n=e.getProgramParameter(t,ck),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});let n=e.getActiveUniform(t,a);r[a].name=n.name}[[`UNIFORM_TYPE`,`type`],[`UNIFORM_SIZE`,`size`],[`UNIFORM_BLOCK_INDEX`,`blockNdx`],[`UNIFORM_OFFSET`,`offset`]].forEach(function(n){let a=n[0],o=n[1];e.getActiveUniforms(t,i,e[a]).forEach(function(e,t){r[t][o]=e})});let a={},o=e.getProgramParameter(t,dk);for(let n=0;n<o;++n){let r=e.getActiveUniformBlockName(t,n),i={index:e.getUniformBlockIndex(t,r),usedByVertexShader:e.getActiveUniformBlockParameter(t,n,fk),usedByFragmentShader:e.getActiveUniformBlockParameter(t,n,pk),size:e.getActiveUniformBlockParameter(t,n,mk),uniformIndices:e.getActiveUniformBlockParameter(t,n,hk)};i.used=i.usedByVertexShader||i.usedByFragmentShader,a[r]=i}return{blockSpecs:a,uniformData:r}}var GA=/\[\d+\]\.$/,KA=(e,t)=>((e+(t-1))/t|0)*t;function qA(e,t,n,r){if(t||n){r||=1;let t=e.length/4;return function(n){let i=0,a=0;for(let o=0;o<t;++o){for(let t=0;t<r;++t)e[i++]=n[a++];i+=4-r}}}else return function(t){t.length?e.set(t):e[0]=t}}function JA(e,t,n,r){let i=n.blockSpecs,a=n.uniformData,o=i[r];if(!o)return nk(`no uniform block object named:`,r),{name:r,uniforms:{}};let s=new ArrayBuffer(o.size),c=e.createBuffer(),l=o.index;e.bindBuffer(sk,c),e.uniformBlockBinding(t,o.index,l);let u=r+`.`;GA.test(u)&&(u=u.replace(GA,`.`));let d={},f={},p={};return o.uniformIndices.forEach(function(e){let t=a[e],n=t.name;n.startsWith(u)&&(n=n.substr(u.length));let r=n.endsWith(`[0]`);r&&(n=n.substr(0,n.length-3));let i=J[t.type],o=i.Type,c=r?KA(i.size,16)*t.size:i.size*t.size,l=new o(s,t.offset,c/o.BYTES_PER_ELEMENT);d[n]=l;let m=qA(l,r,i.rows,i.cols);f[n]=m,VA(n,m,p,f)}),{name:r,array:s,asFloat:new Float32Array(s),buffer:c,uniforms:d,setters:f}}function YA(e,t,n){return JA(e,t.program,t.uniformBlockSpec,n)}function XA(e,t,n){let r=(t.uniformBlockSpec||t).blockSpecs[n.name];if(r){let t=r.index;return e.bindBufferRange(sk,t,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function ZA(e,t,n){XA(e,t,n)&&e.bufferData(sk,n.array,ik)}function QA(e,t){let n=e.setters;for(let e in t){let r=n[e];if(r){let n=t[e];r(n)}}}function $A(e,t){for(let n in t){let r=e[n];typeof r==`function`?r(t[n]):$A(e[n],t[n])}}function ej(e,...t){let n=e.uniformSetters||e,r=t.length;for(let e=0;e<r;++e){let r=t[e];if(Array.isArray(r)){let e=r.length;for(let t=0;t<e;++t)ej(n,r[t])}else for(let e in r){let t=n[e];t&&t(r[e])}}}function tj(e,t){let n={},r=e.getProgramParameter(t,lk);for(let i=0;i<r;++i){let r=e.getActiveAttrib(t,i);if(RA(r))continue;let a=e.getAttribLocation(t,r.name),o=LA[r.type],s=o.setter(e,a,o);s.location=a,n[r.name]=s}return n}function nj(e,t){for(let n in t){let r=e[n];r&&r(t[n])}}function rj(e,t,n){n.vertexArrayObject?e.bindVertexArray(n.vertexArrayObject):(nj(t.attribSetters||t,n.attribs),n.indices&&e.bindBuffer(ok,n.indices))}function ij(e,t){let n={program:t,uniformSetters:HA(e,t),attribSetters:tj(e,t)};return fE(e)&&(n.uniformBlockSpec=WA(e,t),n.transformFeedbackInfo=UA(e,t)),n}var aj=4,oj=5123;function sj(e,t,n,r,i,a){n=n===void 0?aj:n;let o=t.indices,s=t.elementType,c=r===void 0?t.numElements:r;i=i===void 0?0:i,s||o?a===void 0?e.drawElements(n,c,s===void 0?oj:t.elementType,i):e.drawElementsInstanced(n,c,s===void 0?oj:t.elementType,i,a):a===void 0?e.drawArrays(n,i,c):e.drawArraysInstanced(n,i,c,a)}var cj=36160,lj=36161,uj=3553,dj=5121,fj=6402,pj=6408,mj=33190,hj=36012,gj=35056,_j=36013,vj=32854,yj=32855,bj=36194,xj=33189,Sj=6401,Cj=36168,wj=34041,Tj=36064,Ej=36096,Dj=36128,Oj=33306,kj=33071,Aj=9729,jj=[{format:pj,type:dj,min:Aj,wrap:kj},{format:wj}],Mj={};Mj[wj]=Oj,Mj[Sj]=Dj,Mj[Cj]=Dj,Mj[fj]=Ej,Mj[xj]=Ej,Mj[mj]=Ej,Mj[hj]=Ej,Mj[gj]=Oj,Mj[_j]=Oj;function Nj(e,t){return Mj[e]||Mj[t]}var Pj={};Pj[vj]=!0,Pj[yj]=!0,Pj[bj]=!0,Pj[wj]=!0,Pj[xj]=!0,Pj[Sj]=!0,Pj[Cj]=!0;function Fj(e){return Pj[e]}var Ij=32;function Lj(e){return e>=Tj&&e<Tj+Ij}function Rj(e,t,n,r){let i=cj,a=e.createFramebuffer();e.bindFramebuffer(i,a),n||=e.drawingBufferWidth,r||=e.drawingBufferHeight,t||=jj;let o=[],s={framebuffer:a,attachments:[],width:n,height:r};return t.forEach(function(t,a){let c=t.attachment,l=t.samples,u=t.format,d=t.attachmentPoint||Nj(u,t.internalFormat);if(d||=Tj+a,Lj(d)&&o.push(d),!c)if(l!==void 0||Fj(u))c=e.createRenderbuffer(),e.bindRenderbuffer(lj,c),l>1?e.renderbufferStorageMultisample(lj,l,u,n,r):e.renderbufferStorage(lj,u,n,r);else{let i=Object.assign({},t);i.width=n,i.height=r,i.auto===void 0&&(i.auto=!1,i.min=i.min||i.minMag||Aj,i.mag=i.mag||i.minMag||Aj,i.wrapS=i.wrapS||i.wrap||kj,i.wrapT=i.wrapT||i.wrap||kj),c=ek(e,i)}if(PT(e,c))e.framebufferRenderbuffer(i,d,lj,c);else if(FT(e,c))t.layer===void 0?e.framebufferTexture2D(i,d,t.target||uj,c,t.level||0):e.framebufferTextureLayer(i,d,c,t.level||0,t.layer);else throw Error(`unknown attachment type`);s.attachments.push(c)}),e.drawBuffers&&e.drawBuffers(o),s}function zj(e,t,n,r,i){r||=e.drawingBufferWidth,i||=e.drawingBufferHeight,t.width=r,t.height=i,n||=jj,n.forEach(function(n,a){let o=t.attachments[a],s=n.format,c=n.samples;if(c!==void 0||PT(e,o))e.bindRenderbuffer(lj,o),c>1?e.renderbufferStorageMultisample(lj,c,s,r,i):e.renderbufferStorage(lj,s,r,i);else if(FT(e,o))tk(e,o,n,r,i);else throw Error(`unknown attachment type`)})}function Bj(e,t,n){let r=e.createVertexArray();return e.bindVertexArray(r),t.length||(t=[t]),t.forEach(function(t){rj(e,t,n)}),e.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}var Vj={addExtensionsToContext:!0},Hj=/^(.*?)_/;function Uj(e,t){pE(e,0);let n=e.getExtension(t);if(n){let r={},i=Hj.exec(t)[1],a=`_`+i;for(let t in n){let o=n[t],s=typeof o==`function`,c=s?i:a,l=t;t.endsWith(c)&&(l=t.substring(0,t.length-c.length)),e[l]===void 0?s?e[l]=function(e){return function(){return e.apply(n,arguments)}}(o):(e[l]=o,r[l]=o):!s&&e[l]!==o&&MT(l,e[l],o,t)}r.constructor={name:n.constructor.name},pE(r,0)}return n}var Wj=[`ANGLE_instanced_arrays`,`EXT_blend_minmax`,`EXT_color_buffer_float`,`EXT_color_buffer_half_float`,`EXT_disjoint_timer_query`,`EXT_disjoint_timer_query_webgl2`,`EXT_frag_depth`,`EXT_sRGB`,`EXT_shader_texture_lod`,`EXT_texture_filter_anisotropic`,`OES_element_index_uint`,`OES_standard_derivatives`,`OES_texture_float`,`OES_texture_float_linear`,`OES_texture_half_float`,`OES_texture_half_float_linear`,`OES_vertex_array_object`,`WEBGL_color_buffer_float`,`WEBGL_compressed_texture_atc`,`WEBGL_compressed_texture_etc1`,`WEBGL_compressed_texture_pvrtc`,`WEBGL_compressed_texture_s3tc`,`WEBGL_compressed_texture_s3tc_srgb`,`WEBGL_depth_texture`,`WEBGL_draw_buffers`];function Gj(e){for(let t=0;t<Wj.length;++t)Uj(e,Wj[t])}function Kj(e,t){let n=[`webgl2`,`webgl`,`experimental-webgl`],r=null;for(let i=0;i<n.length;++i)if(r=e.getContext(n[i],t),r){Vj.addExtensionsToContext&&Gj(r);break}return r}function qj(e,t){return Kj(e,t)}var Jj=`flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out float vHalfStrokeWidth;flat out vec4 vCornerRadii;
537
+ </div>`);else throw Error(`Unsupported input type: `+i.input);i.description&&n.push(O`<div class="description">${i.description}</div>`)}return n}var AT=class{#e;#t;#n;constructor(e,t){this.#e=e,this.#t=t,this.#n=void 0}initialize(e){let t=[];e.visit(e=>{let n=e.paramRuntime;t.push(...kT(n))});let n=this.#t.inputBindingContainer;if(!(!n||n==`none`||!t.length)){if(this.#n=document.createElement(`div`),this.#n.className=`gs-input-bindings`,n==`default`)this.#e.appendChild(this.#n);else if(n instanceof HTMLElement)n.appendChild(this.#n);else throw Error(`Invalid inputBindingContainer`);t.length&&Ie(O`<div class="gs-input-binding">${t}</div>`,this.#n)}}remove(){this.#n?.remove()}};Float32Array,Float32Array;var jT=5120,MT=5121,NT=5122,PT=5123,FT=5124,IT=5125,LT=5126,RT=32819,zT=32820,BT=33635,VT=5131,HT=33640,UT=35899,WT=35902,GT=36269,KT=34042,qT={};{let e=qT;e[jT]=Int8Array,e[MT]=Uint8Array,e[NT]=Int16Array,e[PT]=Uint16Array,e[FT]=Int32Array,e[IT]=Uint32Array,e[LT]=Float32Array,e[RT]=Uint16Array,e[zT]=Uint16Array,e[BT]=Uint16Array,e[VT]=Uint16Array,e[HT]=Uint32Array,e[UT]=Uint32Array,e[WT]=Uint32Array,e[GT]=Uint32Array,e[KT]=Uint32Array}function JT(e){if(e instanceof Int8Array)return jT;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)return MT;if(e instanceof Int16Array)return NT;if(e instanceof Uint16Array)return PT;if(e instanceof Int32Array)return FT;if(e instanceof Uint32Array)return IT;if(e instanceof Float32Array)return LT;throw Error(`unsupported typed array type`)}function YT(e){if(e===Int8Array)return jT;if(e===Uint8Array||e===Uint8ClampedArray)return MT;if(e===Int16Array)return NT;if(e===Uint16Array)return PT;if(e===Int32Array)return FT;if(e===Uint32Array)return IT;if(e===Float32Array)return LT;throw Error(`unsupported typed array type`)}function XT(e){let t=qT[e];if(!t)throw Error(`unknown gl type`);return t}var ZT=typeof SharedArrayBuffer<`u`?function(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};function QT(...e){console.error(...e)}function $T(...e){console.warn(...e)}function eE(e,t){return typeof WebGLBuffer<`u`&&t instanceof WebGLBuffer}function tE(e,t){return typeof WebGLRenderbuffer<`u`&&t instanceof WebGLRenderbuffer}function nE(e,t){return typeof WebGLTexture<`u`&&t instanceof WebGLTexture}function rE(e,t){return typeof WebGLSampler<`u`&&t instanceof WebGLSampler}var iE=35044,aE=34962,oE=34963,sE=34660,cE=5120,lE=5121,uE=5122,dE=5123,fE=5124,pE=5125,mE=5126,hE={attribPrefix:``};function gE(e,t,n,r,i){e.bindBuffer(t,n),e.bufferData(t,r,i||iE)}function _E(e,t,n,r){if(eE(e,t))return t;n||=aE;let i=e.createBuffer();return gE(e,n,i,t,r),i}function vE(e){return e===`indices`}function yE(e){return e instanceof Int8Array||e instanceof Uint8Array}function bE(e){return e===Int8Array||e===Uint8Array}function xE(e){return e.length?e:e.data}var SE=/coord|texture/i,CE=/color|colour/i;function wE(e,t){let n;if(n=SE.test(e)?2:CE.test(e)?4:3,t%n>0)throw Error(`Can not guess numComponents for attribute '${e}'. Tried ${n} but ${t} values is not evenly divisible by ${n}. You should specify it.`);return n}function TE(e,t){return e.numComponents||e.size||wE(t,xE(e).length)}function EE(e,t){if(ZT(e))return e;if(ZT(e.data))return e.data;Array.isArray(e)&&(e={data:e});let n=e.type;return n||=vE(t)?Uint16Array:Float32Array,new n(e.data)}function DE(e,t){let n={};return Object.keys(t).forEach(function(r){if(!vE(r)){let i=t[r],a=i.attrib||i.name||i.attribName||hE.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!ZT(i.value))throw Error(`array.value is not array or typedarray`);n[a]={value:i.value}}else{let t,o,s,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)t=i.buffer,c=i.numComponents||i.size,o=i.type,s=i.normalize;else if(typeof i==`number`||typeof i.data==`number`){let n=i.data||i,a=i.type||Float32Array,l=n*a.BYTES_PER_ELEMENT;o=YT(a),s=i.normalize===void 0?bE(a):i.normalize,c=i.numComponents||i.size||wE(r,n),t=e.createBuffer(),e.bindBuffer(aE,t),e.bufferData(aE,l,i.drawType||iE)}else{let n=EE(i,r);t=_E(e,n,void 0,i.drawType),o=JT(n),s=i.normalize===void 0?yE(n):i.normalize,c=TE(i,r)}n[a]={buffer:t,numComponents:c,type:o,normalize:s,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),e.bindBuffer(aE,null),n}function OE(e,t,n,r){n=EE(n),r===void 0?gE(e,aE,t.buffer,n,t.drawType):(e.bindBuffer(aE,t.buffer),e.bufferSubData(aE,r,n))}function kE(e,t){return t===cE||t===lE?1:t===uE||t===dE?2:t===fE||t===pE||t===mE?4:0}var AE=[`position`,`positions`,`a_position`];function jE(e,t){let n,r;for(r=0;r<AE.length&&(n=AE[r],!(n in t||(n=hE.attribPrefix+n,n in t)));++r);r===AE.length&&(n=Object.keys(t)[0]);let i=t[n];if(!i.buffer)return 1;e.bindBuffer(aE,i.buffer);let a=e.getBufferParameter(aE,sE);e.bindBuffer(aE,null);let o=a/kE(e,i.type),s=i.numComponents||i.size,c=o/s;if(c%1!=0)throw Error(`numComponents ${s} not correct for length ${length}`);return c}function ME(e,t,n){let r=DE(e,t),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);let a=t.indices;if(a){let t=EE(a,`indices`);i.indices=_E(e,t,oE),i.numElements=t.length,i.elementType=JT(t)}else i.numElements||=jE(e,i.attribs);return i}function NE(e){return!!e.texStorage2D}var PE=function(){let e={},t={};function n(n){let r=n.constructor.name;if(!e[r]){for(let e in n)if(typeof n[e]==`number`){let r=t[n[e]];t[n[e]]=r?`${r} | ${e}`:e}e[r]=!0}}return function(e,r){return n(e),t[r]||(typeof r==`number`?`0x${r.toString(16)}`:r)}}(),FE={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},IE=ZT,LE=function(){let e;return function(){return e||=typeof document<`u`&&document.createElement?document.createElement(`canvas`).getContext(`2d`):null,e}}(),RE=6406,zE=6407,q=6408,BE=6409,VE=6410,HE=6402,UE=34041,WE=33071,GE=9728,KE=9729,qE=3553,JE=34067,YE=32879,XE=35866,ZE=34069,QE=34070,$E=34071,eD=34072,tD=34073,nD=34074,rD=10241,iD=10240,aD=10242,oD=10243,sD=32882,cD=33082,lD=33083,uD=33084,dD=33085,fD=3317,pD=3314,mD=32878,hD=3316,gD=3315,_D=32877,vD=37443,yD=37441,bD=37440,xD=33321,SD=36756,CD=33325,wD=33326,TD=33330,ED=33329,DD=33338,OD=33337,kD=33340,AD=33339,jD=33323,MD=36757,ND=33327,PD=33328,FD=33336,ID=33335,LD=33332,RD=33331,zD=33334,BD=33333,VD=32849,HD=35905,UD=36194,WD=36758,GD=35898,KD=35901,qD=34843,JD=34837,YD=36221,XD=36239,ZD=36215,QD=36233,$D=36209,eO=36227,tO=32856,nO=35907,rO=36759,iO=32855,aO=32854,oO=32857,sO=34842,cO=34836,lO=36220,uO=36238,dO=36975,fO=36214,pO=36232,mO=36226,hO=36208,gO=33189,_O=33190,vO=36012,yO=36013,bO=35056,xO=5120,SO=5121,CO=5122,wO=5123,TO=5124,EO=5125,DO=5126,OO=32819,kO=32820,AO=33635,jO=5131,MO=36193,NO=33640,PO=35899,FO=35902,IO=36269,LO=34042,RO=33319,zO=33320,BO=6403,VO=36244,HO=36248,UO=36249,WO={};{let e=WO;e[RE]={numColorComponents:1},e[BE]={numColorComponents:1},e[VE]={numColorComponents:2},e[zE]={numColorComponents:3},e[q]={numColorComponents:4},e[BO]={numColorComponents:1},e[VO]={numColorComponents:1},e[RO]={numColorComponents:2},e[zO]={numColorComponents:2},e[zE]={numColorComponents:3},e[HO]={numColorComponents:3},e[q]={numColorComponents:4},e[UO]={numColorComponents:4},e[HE]={numColorComponents:1},e[UE]={numColorComponents:2}}var GO;function KO(e){if(!GO){let e={};e[RE]={textureFormat:RE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[SO,jO,MO,DO]},e[BE]={textureFormat:BE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[SO,jO,MO,DO]},e[VE]={textureFormat:VE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[SO,jO,MO,DO]},e[zE]={textureFormat:zE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[SO,jO,MO,DO,AO]},e[q]={textureFormat:q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[SO,jO,MO,DO,OO,kO]},e[HE]={textureFormat:HE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[EO,wO]},e[xD]={textureFormat:BO,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[SO]},e[SD]={textureFormat:BO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[xO]},e[CD]={textureFormat:BO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[DO,jO]},e[wD]={textureFormat:BO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[DO]},e[TD]={textureFormat:VO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[SO]},e[ED]={textureFormat:VO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[xO]},e[LD]={textureFormat:VO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[wO]},e[RD]={textureFormat:VO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[CO]},e[zD]={textureFormat:VO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[EO]},e[BD]={textureFormat:VO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[TO]},e[jD]={textureFormat:RO,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[SO]},e[MD]={textureFormat:RO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[xO]},e[ND]={textureFormat:RO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[DO,jO]},e[PD]={textureFormat:RO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[DO]},e[FD]={textureFormat:zO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[SO]},e[ID]={textureFormat:zO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[xO]},e[DD]={textureFormat:zO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[wO]},e[OD]={textureFormat:zO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[CO]},e[kD]={textureFormat:zO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[EO]},e[AD]={textureFormat:zO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[TO]},e[VD]={textureFormat:zE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[SO]},e[HD]={textureFormat:zE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[SO]},e[UD]={textureFormat:zE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[SO,AO]},e[WD]={textureFormat:zE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[xO]},e[GD]={textureFormat:zE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[DO,jO,PO]},e[KD]={textureFormat:zE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[DO,jO,FO]},e[qD]={textureFormat:zE,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[DO,jO]},e[JD]={textureFormat:zE,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[DO]},e[YD]={textureFormat:HO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[SO]},e[XD]={textureFormat:HO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[xO]},e[ZD]={textureFormat:HO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[wO]},e[QD]={textureFormat:HO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[CO]},e[$D]={textureFormat:HO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[EO]},e[eO]={textureFormat:HO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[TO]},e[tO]={textureFormat:q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[SO]},e[nO]={textureFormat:q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[SO]},e[rO]={textureFormat:q,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[xO]},e[iO]={textureFormat:q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[SO,kO,NO]},e[aO]={textureFormat:q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[SO,OO]},e[oO]={textureFormat:q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[NO]},e[sO]={textureFormat:q,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[DO,jO]},e[cO]={textureFormat:q,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[DO]},e[lO]={textureFormat:UO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[SO]},e[uO]={textureFormat:UO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[xO]},e[dO]={textureFormat:UO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[NO]},e[fO]={textureFormat:UO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[wO]},e[pO]={textureFormat:UO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[CO]},e[mO]={textureFormat:UO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[TO]},e[hO]={textureFormat:UO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[EO]},e[gO]={textureFormat:HE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[wO,EO]},e[_O]={textureFormat:HE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[EO]},e[vO]={textureFormat:HE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[DO]},e[bO]={textureFormat:UE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[LO]},e[yO]={textureFormat:UE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[IO]},Object.keys(e).forEach(function(t){let n=e[t];n.bytesPerElementMap={},n.bytesPerElement.forEach(function(e,t){let r=n.type[t];n.bytesPerElementMap[r]=e})}),GO=e}return GO[e]}function qO(e,t){let n=KO(e);if(!n)throw`unknown internal format`;let r=n.bytesPerElementMap[t];if(r===void 0)throw`unknown internal format`;return r}function JO(e){let t=KO(e);if(!t)throw`unknown internal format`;return{format:t.textureFormat,type:t.type[0]}}function YO(e){return(e&e-1)==0}function XO(e,t,n,r){if(!NE(e))return YO(t)&&YO(n);let i=KO(r);if(!i)throw`unknown internal format`;return i.colorRenderable&&i.textureFilterable}function ZO(e){let t=KO(e);if(!t)throw`unknown internal format`;return t.textureFilterable}function QO(e,t,n){return IE(t)?JT(t):n||SO}function $O(e,t,n,r,i){if(i%1!=0)throw`can't guess dimensions`;if(!n&&!r){let e=Math.sqrt(i/(t===JE?6:1));e%1==0?(n=e,r=e):(n=i,r=1)}else if(!r){if(r=i/n,r%1)throw`can't guess dimensions`}else if(!n&&(n=i/r,n%1))throw`can't guess dimensions`;return{width:n,height:r}}function ek(e,t){t.colorspaceConversion!==void 0&&e.pixelStorei(vD,t.colorspaceConversion),t.premultiplyAlpha!==void 0&&e.pixelStorei(yD,t.premultiplyAlpha),t.flipY!==void 0&&e.pixelStorei(bD,t.flipY)}function tk(e){e.pixelStorei(fD,4),NE(e)&&(e.pixelStorei(pD,0),e.pixelStorei(mD,0),e.pixelStorei(hD,0),e.pixelStorei(gD,0),e.pixelStorei(_D,0))}function nk(e,t,n,r){r.minMag&&(n.call(e,t,rD,r.minMag),n.call(e,t,iD,r.minMag)),r.min&&n.call(e,t,rD,r.min),r.mag&&n.call(e,t,iD,r.mag),r.wrap&&(n.call(e,t,aD,r.wrap),n.call(e,t,oD,r.wrap),(t===YE||rE(e,t))&&n.call(e,t,sD,r.wrap)),r.wrapR&&n.call(e,t,sD,r.wrapR),r.wrapS&&n.call(e,t,aD,r.wrapS),r.wrapT&&n.call(e,t,oD,r.wrapT),r.minLod&&n.call(e,t,cD,r.minLod),r.maxLod&&n.call(e,t,lD,r.maxLod),r.baseLevel&&n.call(e,t,uD,r.baseLevel),r.maxLevel&&n.call(e,t,dD,r.maxLevel)}function rk(e,t,n){let r=n.target||qE;e.bindTexture(r,t),nk(e,r,e.texParameteri,n)}function ik(e){return e||=FE.textureColor,IE(e)?e:new Uint8Array([e[0]*255,e[1]*255,e[2]*255,e[3]*255])}function ak(e,t,n,r,i,a){n||=FE.textureOptions,a||=q;let o=n.target||qE;if(r||=n.width,i||=n.height,e.bindTexture(o,t),XO(e,r,i,a))e.generateMipmap(o);else{let t=ZO(a)?KE:GE;e.texParameteri(o,rD,t),e.texParameteri(o,iD,t),e.texParameteri(o,aD,WE),e.texParameteri(o,oD,WE)}}function ok(e){return e.auto===!0||e.auto===void 0&&e.level===void 0}function sk(e,t){return t||={},t.cubeFaceOrder||[ZE,QE,$E,eD,tD,nD]}function ck(e,t){let n=sk(e,t).map(function(e,t){return{face:e,ndx:t}});return n.sort(function(e,t){return e.face-t.face}),n}function lk(e,t,n,r){r||=FE.textureOptions;let i=r.target||qE,a=r.level||0,o=n.width,s=n.height,c=r.internalFormat||r.format||q,l=JO(c),u=r.format||l.format,d=r.type||l.type;if(ek(e,r),e.bindTexture(i,t),i===JE){let l=n.width,f=n.height,p,m;if(l/6===f)p=f,m=[0,0,1,0,2,0,3,0,4,0,5,0];else if(f/6===l)p=l,m=[0,0,0,1,0,2,0,3,0,4,0,5];else if(l/3==f/2)p=l/3,m=[0,0,1,0,2,0,0,1,1,1,2,1];else if(l/2==f/3)p=l/2,m=[0,0,1,0,0,1,1,1,0,2,1,2];else throw`can't figure out cube map from element: `+(n.src?n.src:n.nodeName);let h=LE();h?(h.canvas.width=p,h.canvas.height=p,o=p,s=p,ck(e,r).forEach(function(t){let r=m[t.ndx*2+0]*p,i=m[t.ndx*2+1]*p;h.drawImage(n,r,i,p,p,0,0,p,p),e.texImage2D(t.face,a,c,u,d,h.canvas)}),h.canvas.width=1,h.canvas.height=1):typeof createImageBitmap<`u`&&(o=p,s=p,ck(e,r).forEach(function(l){let f=m[l.ndx*2+0]*p,h=m[l.ndx*2+1]*p;e.texImage2D(l.face,a,c,p,p,0,u,d,null),createImageBitmap(n,f,h,p,p,{premultiplyAlpha:`none`,colorSpaceConversion:`none`}).then(function(n){ek(e,r),e.bindTexture(i,t),e.texImage2D(l.face,a,c,u,d,n),ok(r)&&ak(e,t,r,o,s,c)})}))}else if(i===YE||i===XE){let t=Math.min(n.width,n.height),r=Math.max(n.width,n.height),o=r/t;if(o%1!=0)throw`can not compute 3D dimensions of element`;let s=n.width===r?1:0,l=n.height===r?1:0;e.pixelStorei(fD,1),e.pixelStorei(pD,n.width),e.pixelStorei(mD,0),e.pixelStorei(_D,0),e.texImage3D(i,a,c,t,t,t,0,u,d,null);for(let r=0;r<o;++r){let o=r*t*s,c=r*t*l;e.pixelStorei(hD,o),e.pixelStorei(gD,c),e.texSubImage3D(i,a,0,0,r,t,t,1,u,d,n)}tk(e)}else e.texImage2D(i,a,c,u,d,n);ok(r)&&ak(e,t,r,o,s,c),rk(e,t,r)}function uk(){}function dk(e){if(typeof document<`u`){let t=document.createElement(`a`);return t.href=e,t.hostname===location.hostname&&t.port===location.port&&t.protocol===location.protocol}else{let t=new URL(location.href).origin;return new URL(e,location.href).origin===t}}function fk(e,t){return t===void 0&&!dk(e)?`anonymous`:t}function pk(e,t,n){n||=uk;let r;if(t=t===void 0?FE.crossOrigin:t,t=fk(e,t),typeof Image<`u`){r=new Image,t!==void 0&&(r.crossOrigin=t);let i=function(){r.removeEventListener(`error`,a),r.removeEventListener(`load`,o),r=null},a=function(){let t=`couldn't load image: `+e;QT(t),n(t,r),i()},o=function(){n(null,r),i()};return r.addEventListener(`error`,a),r.addEventListener(`load`,o),r.src=e,r}else if(typeof ImageBitmap<`u`){let i,a,o=function(){n(i,a)},s={};t&&(s.mode=`cors`),fetch(e,s).then(function(e){if(!e.ok)throw e;return e.blob()}).then(function(e){return createImageBitmap(e,{premultiplyAlpha:`none`,colorSpaceConversion:`none`})}).then(function(e){a=e,setTimeout(o)}).catch(function(e){i=e,setTimeout(o)}),r=null}return r}function mk(e){return typeof ImageBitmap<`u`&&e instanceof ImageBitmap||typeof ImageData<`u`&&e instanceof ImageData||typeof HTMLElement<`u`&&e instanceof HTMLElement}function hk(e,t,n){return mk(e)?(setTimeout(function(){n(null,e)}),e):pk(e,t,n)}function gk(e,t,n){n||=FE.textureOptions;let r=n.target||qE;if(e.bindTexture(r,t),n.color===!1)return;let i=ik(n.color);if(r===JE)for(let t=0;t<6;++t)e.texImage2D(ZE+t,0,q,1,1,0,q,SO,i);else r===YE||r===XE?e.texImage3D(r,0,q,1,1,1,0,q,SO,i):e.texImage2D(r,0,q,1,1,0,q,SO,i)}function _k(e,t,n,r){return r||=uk,n||=FE.textureOptions,gk(e,t,n),n=Object.assign({},n),hk(n.src,n.crossOrigin,function(i,a){i?r(i,t,a):(lk(e,t,a,n),r(null,t,a))})}function vk(e,t,n,r){r||=uk;let i=n.src;if(i.length!==6)throw`there must be 6 urls for a cubemap`;let a=n.level||0,o=n.internalFormat||n.format||q,s=JO(o),c=n.format||s.format,l=n.type||SO,u=n.target||qE;if(u!==JE)throw`target must be TEXTURE_CUBE_MAP`;gk(e,t,n),n=Object.assign({},n);let d=6,f=[],p=sk(e,n),m;function h(i){return function(s,p){--d,s?f.push(s):p.width===p.height?(ek(e,n),e.bindTexture(u,t),d===5?sk().forEach(function(t){e.texImage2D(t,a,o,c,l,p)}):e.texImage2D(i,a,o,c,l,p),ok(n)&&e.generateMipmap(u)):f.push(`cubemap face img is not a square: `+p.src),d===0&&r(f.length?f:void 0,t,m)}}m=i.map(function(e,t){return hk(e,n.crossOrigin,h(p[t]))})}function yk(e,t,n,r){r||=uk;let i=n.src,a=n.internalFormat||n.format||q,o=JO(a),s=n.format||o.format,c=n.type||SO,l=n.target||XE;if(l!==YE&&l!==XE)throw`target must be TEXTURE_3D or TEXTURE_2D_ARRAY`;gk(e,t,n),n=Object.assign({},n);let u=i.length,d=[],f,p=n.level||0,m=n.width,h=n.height,g=i.length,_=!0;function v(i){return function(o,v){if(--u,o)d.push(o);else{if(ek(e,n),e.bindTexture(l,t),_){_=!1,m=n.width||v.width,h=n.height||v.height,e.texImage3D(l,p,a,m,h,g,0,s,c,null);for(let t=0;t<g;++t)e.texSubImage3D(l,p,0,0,t,m,h,1,s,c,v)}else{let t=v,n;(v.width!==m||v.height!==h)&&(n=LE(),t=n.canvas,n.canvas.width=m,n.canvas.height=h,n.drawImage(v,0,0,m,h)),e.texSubImage3D(l,p,0,0,i,m,h,1,s,c,t),n&&t===n.canvas&&(n.canvas.width=0,n.canvas.height=0)}ok(n)&&e.generateMipmap(l)}u===0&&r(d.length?d:void 0,t,f)}}f=i.map(function(e,t){return hk(e,n.crossOrigin,v(t))})}function bk(e,t,n,r){r||=FE.textureOptions;let i=r.target||qE;e.bindTexture(i,t);let a=r.width,o=r.height,s=r.depth,c=r.level||0,l=r.internalFormat||r.format||q,u=JO(l),d=r.format||u.format,f=r.type||QO(e,n,u.type);IE(n)?n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer)):n=new(XT(f))(n);let p=qO(l,f),m=n.byteLength/p;if(m%1)throw`length wrong size for format: `+PE(e,d);let h;if(i===YE||i===XE)if(!a&&!o&&!s){let e=Math.cbrt(m);if(e%1!=0)throw`can't guess cube size of array of numElements: `+m;a=e,o=e,s=e}else a&&(!o||!s)?(h=$O(e,i,o,s,m/a),o=h.width,s=h.height):o&&(!a||!s)?(h=$O(e,i,a,s,m/o),a=h.width,s=h.height):(h=$O(e,i,a,o,m/s),a=h.width,o=h.height);else h=$O(e,i,a,o,m),a=h.width,o=h.height;if(tk(e),e.pixelStorei(fD,r.unpackAlignment||1),ek(e,r),i===JE){let t=p/n.BYTES_PER_ELEMENT,i=m/6*t;ck(e,r).forEach(t=>{let r=i*t.ndx,s=n.subarray(r,r+i);e.texImage2D(t.face,c,l,a,o,0,d,f,s)})}else i===YE||i===XE?e.texImage3D(i,c,l,a,o,s,0,d,f,n):e.texImage2D(i,c,l,a,o,0,d,f,n);return{width:a,height:o,depth:s,type:f}}function xk(e,t,n){let r=n.target||qE;e.bindTexture(r,t);let i=n.level||0,a=n.internalFormat||n.format||q,o=JO(a),s=n.format||o.format,c=n.type||o.type;if(ek(e,n),r===JE)for(let t=0;t<6;++t)e.texImage2D(ZE+t,i,a,n.width,n.height,0,s,c,null);else r===YE||r===XE?e.texImage3D(r,i,a,n.width,n.height,n.depth,0,s,c,null):e.texImage2D(r,i,a,n.width,n.height,0,s,c,null)}function Sk(e,t,n){n||=uk,t||=FE.textureOptions;let r=e.createTexture(),i=t.target||qE,a=t.width||1,o=t.height||1,s=t.internalFormat||q;e.bindTexture(i,r),i===JE&&(e.texParameteri(i,aD,WE),e.texParameteri(i,oD,WE));let c=t.src;if(c)if(typeof c==`function`&&(c=c(e,t)),typeof c==`string`)_k(e,r,t,n);else if(IE(c)||Array.isArray(c)&&(typeof c[0]==`number`||Array.isArray(c[0])||IE(c[0]))){let n=bk(e,r,c,t);a=n.width,o=n.height}else Array.isArray(c)&&(typeof c[0]==`string`||mk(c[0]))?i===JE?vk(e,r,t,n):yk(e,r,t,n):(lk(e,r,c,t),a=c.width,o=c.height);else xk(e,r,t);return ok(t)&&ak(e,r,t,a,o,s),rk(e,r,t),r}function Ck(e,t,n,r,i,a){r||=n.width,i||=n.height,a||=n.depth;let o=n.target||qE;e.bindTexture(o,t);let s=n.level||0,c=n.internalFormat||n.format||q,l=JO(c),u=n.format||l.format,d,f=n.src;if(d=f&&(IE(f)||Array.isArray(f)&&typeof f[0]==`number`)?n.type||QO(e,f,l.type):n.type||l.type,o===JE)for(let t=0;t<6;++t)e.texImage2D(ZE+t,s,c,r,i,0,u,d,null);else o===YE||o===XE?e.texImage3D(o,s,c,r,i,a,0,u,d,null):e.texImage2D(o,s,c,r,i,0,u,d,null)}var wk=$T,Tk=33984,Ek=35048,Dk=34962,Ok=34963,kk=35345,Ak=35718,jk=35721,Mk=35971,Nk=35382,Pk=35396,Fk=35398,Ik=35392,Lk=35395,Rk=5126,zk=35664,Bk=35665,Vk=35666,Hk=5124,Uk=35667,Wk=35668,Gk=35669,Kk=35670,qk=35671,Jk=35672,Yk=35673,Xk=35674,Zk=35675,Qk=35676,$k=35678,eA=35680,tA=35679,nA=35682,rA=35685,iA=35686,aA=35687,oA=35688,sA=35689,cA=35690,lA=36289,uA=36292,dA=36293,fA=5125,pA=36294,mA=36295,hA=36296,gA=36298,_A=36299,vA=36300,yA=36303,bA=36306,xA=36307,SA=36308,CA=36311,wA=3553,TA=34067,EA=32879,DA=35866,J={};function OA(e,t){return J[t].bindPoint}function kA(e,t){return function(n){e.uniform1f(t,n)}}function AA(e,t){return function(n){e.uniform1fv(t,n)}}function jA(e,t){return function(n){e.uniform2fv(t,n)}}function MA(e,t){return function(n){e.uniform3fv(t,n)}}function NA(e,t){return function(n){e.uniform4fv(t,n)}}function PA(e,t){return function(n){e.uniform1i(t,n)}}function FA(e,t){return function(n){e.uniform1iv(t,n)}}function IA(e,t){return function(n){e.uniform2iv(t,n)}}function LA(e,t){return function(n){e.uniform3iv(t,n)}}function RA(e,t){return function(n){e.uniform4iv(t,n)}}function zA(e,t){return function(n){e.uniform1ui(t,n)}}function BA(e,t){return function(n){e.uniform1uiv(t,n)}}function VA(e,t){return function(n){e.uniform2uiv(t,n)}}function HA(e,t){return function(n){e.uniform3uiv(t,n)}}function UA(e,t){return function(n){e.uniform4uiv(t,n)}}function WA(e,t){return function(n){e.uniformMatrix2fv(t,!1,n)}}function GA(e,t){return function(n){e.uniformMatrix3fv(t,!1,n)}}function KA(e,t){return function(n){e.uniformMatrix4fv(t,!1,n)}}function qA(e,t){return function(n){e.uniformMatrix2x3fv(t,!1,n)}}function JA(e,t){return function(n){e.uniformMatrix3x2fv(t,!1,n)}}function YA(e,t){return function(n){e.uniformMatrix2x4fv(t,!1,n)}}function XA(e,t){return function(n){e.uniformMatrix4x2fv(t,!1,n)}}function ZA(e,t){return function(n){e.uniformMatrix3x4fv(t,!1,n)}}function QA(e,t){return function(n){e.uniformMatrix4x3fv(t,!1,n)}}function $A(e,t,n,r){let i=OA(e,t);return NE(e)?function(t){let a,o;nE(e,t)?(a=t,o=null):(a=t.texture,o=t.sampler),e.uniform1i(r,n),e.activeTexture(Tk+n),e.bindTexture(i,a),e.bindSampler(n,o)}:function(t){e.uniform1i(r,n),e.activeTexture(Tk+n),e.bindTexture(i,t)}}function ej(e,t,n,r,i){let a=OA(e,t),o=new Int32Array(i);for(let e=0;e<i;++e)o[e]=n+e;return NE(e)?function(t){e.uniform1iv(r,o),t.forEach(function(t,r){e.activeTexture(Tk+o[r]);let i,s;nE(e,t)?(i=t,s=null):(i=t.texture,s=t.sampler),e.bindSampler(n,s),e.bindTexture(a,i)})}:function(t){e.uniform1iv(r,o),t.forEach(function(t,n){e.activeTexture(Tk+o[n]),e.bindTexture(a,t)})}}J[Rk]={Type:Float32Array,size:4,setter:kA,arraySetter:AA},J[zk]={Type:Float32Array,size:8,setter:jA,cols:2},J[Bk]={Type:Float32Array,size:12,setter:MA,cols:3},J[Vk]={Type:Float32Array,size:16,setter:NA,cols:4},J[Hk]={Type:Int32Array,size:4,setter:PA,arraySetter:FA},J[Uk]={Type:Int32Array,size:8,setter:IA,cols:2},J[Wk]={Type:Int32Array,size:12,setter:LA,cols:3},J[Gk]={Type:Int32Array,size:16,setter:RA,cols:4},J[fA]={Type:Uint32Array,size:4,setter:zA,arraySetter:BA},J[pA]={Type:Uint32Array,size:8,setter:VA,cols:2},J[mA]={Type:Uint32Array,size:12,setter:HA,cols:3},J[hA]={Type:Uint32Array,size:16,setter:UA,cols:4},J[Kk]={Type:Uint32Array,size:4,setter:PA,arraySetter:FA},J[qk]={Type:Uint32Array,size:8,setter:IA,cols:2},J[Jk]={Type:Uint32Array,size:12,setter:LA,cols:3},J[Yk]={Type:Uint32Array,size:16,setter:RA,cols:4},J[Xk]={Type:Float32Array,size:32,setter:WA,rows:2,cols:2},J[Zk]={Type:Float32Array,size:48,setter:GA,rows:3,cols:3},J[Qk]={Type:Float32Array,size:64,setter:KA,rows:4,cols:4},J[rA]={Type:Float32Array,size:32,setter:qA,rows:2,cols:3},J[iA]={Type:Float32Array,size:32,setter:YA,rows:2,cols:4},J[aA]={Type:Float32Array,size:48,setter:JA,rows:3,cols:2},J[oA]={Type:Float32Array,size:48,setter:ZA,rows:3,cols:4},J[sA]={Type:Float32Array,size:64,setter:XA,rows:4,cols:2},J[cA]={Type:Float32Array,size:64,setter:QA,rows:4,cols:3},J[$k]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:wA},J[eA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:TA},J[tA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:EA},J[nA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:wA},J[lA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:DA},J[uA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:DA},J[dA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:TA},J[gA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:wA},J[_A]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:EA},J[vA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:TA},J[yA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:DA},J[bA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:wA},J[xA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:EA},J[SA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:TA},J[CA]={Type:null,size:0,setter:$A,arraySetter:ej,bindPoint:DA};function tj(e,t){return function(n){if(n.value)switch(e.disableVertexAttribArray(t),n.value.length){case 4:e.vertexAttrib4fv(t,n.value);break;case 3:e.vertexAttrib3fv(t,n.value);break;case 2:e.vertexAttrib2fv(t,n.value);break;case 1:e.vertexAttrib1fv(t,n.value);break;default:throw Error(`the length of a float constant value must be between 1 and 4!`)}else e.bindBuffer(Dk,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribPointer(t,n.numComponents||n.size,n.type||Rk,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function nj(e,t){return function(n){if(n.value)if(e.disableVertexAttribArray(t),n.value.length===4)e.vertexAttrib4iv(t,n.value);else throw Error(`The length of an integer constant value must be 4!`);else e.bindBuffer(Dk,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||Hk,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function rj(e,t){return function(n){if(n.value)if(e.disableVertexAttribArray(t),n.value.length===4)e.vertexAttrib4uiv(t,n.value);else throw Error(`The length of an unsigned integer constant value must be 4!`);else e.bindBuffer(Dk,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribIPointer(t,n.numComponents||n.size,n.type||fA,n.stride||0,n.offset||0),n.divisor!==void 0&&e.vertexAttribDivisor(t,n.divisor)}}function ij(e,t,n){let r=n.size,i=n.count;return function(n){e.bindBuffer(Dk,n.buffer);let a=n.size||n.numComponents||r,o=a/i,s=n.type||Rk,c=J[s].size*a,l=n.normalize||!1,u=n.offset||0,d=c/i;for(let r=0;r<i;++r)e.enableVertexAttribArray(t+r),e.vertexAttribPointer(t+r,o,s,l,c,u+d*r),n.divisor!==void 0&&e.vertexAttribDivisor(t+r,n.divisor)}}var aj={};aj[Rk]={size:4,setter:tj},aj[zk]={size:8,setter:tj},aj[Bk]={size:12,setter:tj},aj[Vk]={size:16,setter:tj},aj[Hk]={size:4,setter:nj},aj[Uk]={size:8,setter:nj},aj[Wk]={size:12,setter:nj},aj[Gk]={size:16,setter:nj},aj[fA]={size:4,setter:rj},aj[pA]={size:8,setter:rj},aj[mA]={size:12,setter:rj},aj[hA]={size:16,setter:rj},aj[Kk]={size:4,setter:nj},aj[qk]={size:8,setter:nj},aj[Jk]={size:12,setter:nj},aj[Yk]={size:16,setter:nj},aj[Xk]={size:4,setter:ij,count:2},aj[Zk]={size:9,setter:ij,count:3},aj[Qk]={size:16,setter:ij,count:4};function oj(e){let t=e.name;return t.startsWith(`gl_`)||t.startsWith(`webgl_`)}var sj=/(\.|\[|]|\w+)/g,cj=e=>e>=`0`&&e<=`9`;function lj(e,t,n,r){let i=e.split(sj).filter(e=>e!==``),a=0,o=``;for(;;){let e=i[a++];o+=e;let s=cj(e[0]),c=s?parseInt(e):e;if(s&&(o+=i[a++]),a===i.length){n[c]=t;break}else{let e=i[a++],t=e===`[`,s=n[c]||(t?[]:{});n[c]=s,n=s,r[o]=r[o]||function(e){return function(t){xj(e,t)}}(s),o+=e}}}function uj(e,t){let n=0;function r(t,r,i){let a=r.name.endsWith(`[0]`),o=r.type,s=J[o];if(!s)throw Error(`unknown type: 0x${o.toString(16)}`);let c;if(s.bindPoint){let t=n;n+=r.size,c=a?s.arraySetter(e,o,t,i,r.size):s.setter(e,o,t,i,r.size)}else c=s.arraySetter&&a?s.arraySetter(e,i):s.setter(e,i);return c.location=i,c}let i={},a={},o=e.getProgramParameter(t,Ak);for(let n=0;n<o;++n){let o=e.getActiveUniform(t,n);if(oj(o))continue;let s=o.name;s.endsWith(`[0]`)&&(s=s.substr(0,s.length-3));let c=e.getUniformLocation(t,o.name);if(c){let e=r(t,o,c);i[s]=e,lj(s,e,a,i)}}return i}function dj(e,t){let n={},r=e.getProgramParameter(t,Mk);for(let i=0;i<r;++i){let r=e.getTransformFeedbackVarying(t,i);n[r.name]={index:i,type:r.type,size:r.size}}return n}function fj(e,t){let n=e.getProgramParameter(t,Ak),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});let n=e.getActiveUniform(t,a);r[a].name=n.name}[[`UNIFORM_TYPE`,`type`],[`UNIFORM_SIZE`,`size`],[`UNIFORM_BLOCK_INDEX`,`blockNdx`],[`UNIFORM_OFFSET`,`offset`]].forEach(function(n){let a=n[0],o=n[1];e.getActiveUniforms(t,i,e[a]).forEach(function(e,t){r[t][o]=e})});let a={},o=e.getProgramParameter(t,Nk);for(let n=0;n<o;++n){let r=e.getActiveUniformBlockName(t,n),i={index:e.getUniformBlockIndex(t,r),usedByVertexShader:e.getActiveUniformBlockParameter(t,n,Pk),usedByFragmentShader:e.getActiveUniformBlockParameter(t,n,Fk),size:e.getActiveUniformBlockParameter(t,n,Ik),uniformIndices:e.getActiveUniformBlockParameter(t,n,Lk)};i.used=i.usedByVertexShader||i.usedByFragmentShader,a[r]=i}return{blockSpecs:a,uniformData:r}}var pj=/\[\d+\]\.$/,mj=(e,t)=>((e+(t-1))/t|0)*t;function hj(e,t,n,r){if(t||n){r||=1;let t=e.length/4;return function(n){let i=0,a=0;for(let o=0;o<t;++o){for(let t=0;t<r;++t)e[i++]=n[a++];i+=4-r}}}else return function(t){t.length?e.set(t):e[0]=t}}function gj(e,t,n,r){let i=n.blockSpecs,a=n.uniformData,o=i[r];if(!o)return wk(`no uniform block object named:`,r),{name:r,uniforms:{}};let s=new ArrayBuffer(o.size),c=e.createBuffer(),l=o.index;e.bindBuffer(kk,c),e.uniformBlockBinding(t,o.index,l);let u=r+`.`;pj.test(u)&&(u=u.replace(pj,`.`));let d={},f={},p={};return o.uniformIndices.forEach(function(e){let t=a[e],n=t.name;n.startsWith(u)&&(n=n.substr(u.length));let r=n.endsWith(`[0]`);r&&(n=n.substr(0,n.length-3));let i=J[t.type],o=i.Type,c=r?mj(i.size,16)*t.size:i.size*t.size,l=new o(s,t.offset,c/o.BYTES_PER_ELEMENT);d[n]=l;let m=hj(l,r,i.rows,i.cols);f[n]=m,lj(n,m,p,f)}),{name:r,array:s,asFloat:new Float32Array(s),buffer:c,uniforms:d,setters:f}}function _j(e,t,n){return gj(e,t.program,t.uniformBlockSpec,n)}function vj(e,t,n){let r=(t.uniformBlockSpec||t).blockSpecs[n.name];if(r){let t=r.index;return e.bindBufferRange(kk,t,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function yj(e,t,n){vj(e,t,n)&&e.bufferData(kk,n.array,Ek)}function bj(e,t){let n=e.setters;for(let e in t){let r=n[e];if(r){let n=t[e];r(n)}}}function xj(e,t){for(let n in t){let r=e[n];typeof r==`function`?r(t[n]):xj(e[n],t[n])}}function Sj(e,...t){let n=e.uniformSetters||e,r=t.length;for(let e=0;e<r;++e){let r=t[e];if(Array.isArray(r)){let e=r.length;for(let t=0;t<e;++t)Sj(n,r[t])}else for(let e in r){let t=n[e];t&&t(r[e])}}}function Cj(e,t){let n={},r=e.getProgramParameter(t,jk);for(let i=0;i<r;++i){let r=e.getActiveAttrib(t,i);if(oj(r))continue;let a=e.getAttribLocation(t,r.name),o=aj[r.type],s=o.setter(e,a,o);s.location=a,n[r.name]=s}return n}function wj(e,t){for(let n in t){let r=e[n];r&&r(t[n])}}function Tj(e,t,n){n.vertexArrayObject?e.bindVertexArray(n.vertexArrayObject):(wj(t.attribSetters||t,n.attribs),n.indices&&e.bindBuffer(Ok,n.indices))}function Ej(e,t){let n={program:t,uniformSetters:uj(e,t),attribSetters:Cj(e,t)};return NE(e)&&(n.uniformBlockSpec=fj(e,t),n.transformFeedbackInfo=dj(e,t)),n}var Dj=4,Oj=5123;function kj(e,t,n,r,i,a){n=n===void 0?Dj:n;let o=t.indices,s=t.elementType,c=r===void 0?t.numElements:r;i=i===void 0?0:i,s||o?a===void 0?e.drawElements(n,c,s===void 0?Oj:t.elementType,i):e.drawElementsInstanced(n,c,s===void 0?Oj:t.elementType,i,a):a===void 0?e.drawArrays(n,i,c):e.drawArraysInstanced(n,i,c,a)}var Aj=36160,jj=36161,Mj=3553,Nj=5121,Pj=6402,Fj=6408,Ij=33190,Lj=36012,Rj=35056,zj=36013,Bj=32854,Vj=32855,Hj=36194,Uj=33189,Wj=6401,Gj=36168,Kj=34041,qj=36064,Jj=36096,Yj=36128,Xj=33306,Zj=33071,Qj=9729,$j=[{format:Fj,type:Nj,min:Qj,wrap:Zj},{format:Kj}],eM={};eM[Kj]=Xj,eM[Wj]=Yj,eM[Gj]=Yj,eM[Pj]=Jj,eM[Uj]=Jj,eM[Ij]=Jj,eM[Lj]=Jj,eM[Rj]=Xj,eM[zj]=Xj;function tM(e,t){return eM[e]||eM[t]}var nM={};nM[Bj]=!0,nM[Vj]=!0,nM[Hj]=!0,nM[Kj]=!0,nM[Uj]=!0,nM[Wj]=!0,nM[Gj]=!0;function rM(e){return nM[e]}var iM=32;function aM(e){return e>=qj&&e<qj+iM}function oM(e,t,n,r){let i=Aj,a=e.createFramebuffer();e.bindFramebuffer(i,a),n||=e.drawingBufferWidth,r||=e.drawingBufferHeight,t||=$j;let o=[],s={framebuffer:a,attachments:[],width:n,height:r};return t.forEach(function(t,a){let c=t.attachment,l=t.samples,u=t.format,d=t.attachmentPoint||tM(u,t.internalFormat);if(d||=qj+a,aM(d)&&o.push(d),!c)if(l!==void 0||rM(u))c=e.createRenderbuffer(),e.bindRenderbuffer(jj,c),l>1?e.renderbufferStorageMultisample(jj,l,u,n,r):e.renderbufferStorage(jj,u,n,r);else{let i=Object.assign({},t);i.width=n,i.height=r,i.auto===void 0&&(i.auto=!1,i.min=i.min||i.minMag||Qj,i.mag=i.mag||i.minMag||Qj,i.wrapS=i.wrapS||i.wrap||Zj,i.wrapT=i.wrapT||i.wrap||Zj),c=Sk(e,i)}if(tE(e,c))e.framebufferRenderbuffer(i,d,jj,c);else if(nE(e,c))t.layer===void 0?e.framebufferTexture2D(i,d,t.target||Mj,c,t.level||0):e.framebufferTextureLayer(i,d,c,t.level||0,t.layer);else throw Error(`unknown attachment type`);s.attachments.push(c)}),e.drawBuffers&&e.drawBuffers(o),s}function sM(e,t,n,r,i){r||=e.drawingBufferWidth,i||=e.drawingBufferHeight,t.width=r,t.height=i,n||=$j,n.forEach(function(n,a){let o=t.attachments[a],s=n.format,c=n.samples;if(c!==void 0||tE(e,o))e.bindRenderbuffer(jj,o),c>1?e.renderbufferStorageMultisample(jj,c,s,r,i):e.renderbufferStorage(jj,s,r,i);else if(nE(e,o))Ck(e,o,n,r,i);else throw Error(`unknown attachment type`)})}function cM(e,t,n){let r=e.createVertexArray();return e.bindVertexArray(r),t.length||(t=[t]),t.forEach(function(t){Tj(e,t,n)}),e.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}var lM={addExtensionsToContext:!0},uM=/^(.*?)_/;function dM(e,t){PE(e,0);let n=e.getExtension(t);if(n){let r={},i=uM.exec(t)[1],a=`_`+i;for(let t in n){let o=n[t],s=typeof o==`function`,c=s?i:a,l=t;t.endsWith(c)&&(l=t.substring(0,t.length-c.length)),e[l]===void 0?s?e[l]=function(e){return function(){return e.apply(n,arguments)}}(o):(e[l]=o,r[l]=o):!s&&e[l]!==o&&$T(l,e[l],o,t)}r.constructor={name:n.constructor.name},PE(r,0)}return n}var fM=[`ANGLE_instanced_arrays`,`EXT_blend_minmax`,`EXT_color_buffer_float`,`EXT_color_buffer_half_float`,`EXT_disjoint_timer_query`,`EXT_disjoint_timer_query_webgl2`,`EXT_frag_depth`,`EXT_sRGB`,`EXT_shader_texture_lod`,`EXT_texture_filter_anisotropic`,`OES_element_index_uint`,`OES_standard_derivatives`,`OES_texture_float`,`OES_texture_float_linear`,`OES_texture_half_float`,`OES_texture_half_float_linear`,`OES_vertex_array_object`,`WEBGL_color_buffer_float`,`WEBGL_compressed_texture_atc`,`WEBGL_compressed_texture_etc1`,`WEBGL_compressed_texture_pvrtc`,`WEBGL_compressed_texture_s3tc`,`WEBGL_compressed_texture_s3tc_srgb`,`WEBGL_depth_texture`,`WEBGL_draw_buffers`];function pM(e){for(let t=0;t<fM.length;++t)dM(e,fM[t])}function mM(e,t){let n=[`webgl2`,`webgl`,`experimental-webgl`],r=null;for(let i=0;i<n.length;++i)if(r=e.getContext(n[i],t),r){lM.addExtensionsToContext&&pM(r);break}return r}function hM(e,t){return mM(e,t)}var gM=`flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out float vHalfStrokeWidth;flat out vec4 vCornerRadii;
537
538
  #if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
538
539
  out vec2 vPosInPixels;
539
540
  #endif
@@ -541,7 +542,7 @@ flat out vec2 vHalfSizeInPixels;/***Adjusts the vertex position to ensure that t
541
542
  #if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
542
543
  float aaPadding=1.0/uDevicePixelRatio;float shadowPadding=uShadowBlur+max(abs(uShadowOffsetX),abs(uShadowOffsetY));float strokeWidth=getScaled_strokeWidth();float strokeOpacity=getScaled_strokeOpacity()*opaFactor;vec2 centeredFrac=frac-0.5;vec2 expand=centeredFrac*(strokeWidth+aaPadding+shadowPadding*2.0)/uViewportSize;pos+=expand;vec2 sizeInPixels=size*uViewportSize;vPosInPixels=(centeredFrac+expand/size)*sizeInPixels;vHalfSizeInPixels=sizeInPixels/2.0;vCornerRadii=min(cornerRadii,min(vHalfSizeInPixels.x,vHalfSizeInPixels.y));vHalfStrokeWidth=strokeWidth/2.0;vStrokeColor=vec4(getScaled_stroke()*strokeOpacity,strokeOpacity);
543
544
  #endif
544
- gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,Yj=`#if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
545
+ gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,_M=`#if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
545
546
  in vec2 vPosInPixels;
546
547
  #endif
547
548
  flat in vec2 vHalfSizeInPixels;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in float vHalfStrokeWidth;flat in vec4 vCornerRadii;out lowp vec4 fragColor;
@@ -567,54 +568,54 @@ if(vHalfStrokeWidth>0.0&&uHatchPattern>0){d=max(d,-pattern());}fragColor=distanc
567
568
  #else
568
569
  fragColor=vFillColor;if(uPickingEnabled){fragColor=vPickingColor;}
569
570
  #endif
570
- }`,Xj=`layout(std140)uniform Mark{uniform float uMinWidth;uniform float uMinHeight;uniform float uMinOpacity;uniform float uCornerRadiusTopRight;uniform float uCornerRadiusBottomRight;uniform float uCornerRadiusTopLeft;uniform float uCornerRadiusBottomLeft;uniform int uHatchPattern;uniform vec3 uShadowColor;uniform float uShadowOpacity;uniform float uShadowBlur;uniform float uShadowOffsetX;uniform float uShadowOffsetY;
571
+ }`,vM=`layout(std140)uniform Mark{uniform float uMinWidth;uniform float uMinHeight;uniform float uMinOpacity;uniform float uCornerRadiusTopRight;uniform float uCornerRadiusBottomRight;uniform float uCornerRadiusTopLeft;uniform float uCornerRadiusBottomLeft;uniform int uHatchPattern;uniform vec3 uShadowColor;uniform float uShadowOpacity;uniform float uShadowBlur;uniform float uShadowOffsetX;uniform float uShadowOffsetY;
571
572
  #pragma markUniforms
572
- };`,Zj=1e4,Qj=class{#e=!1;constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}configure(){if(this.#e)throw Error(`Already configured!`);this.#t(),this.#n(),this.#e=!0}addConverter(e,t){let n=this.createUpdater(e,t.numComponents||1,t.targetArrayType??Float32Array,t.arrayReference),r=t.f;this.dataUpdaters.push((t.arrayReference,e=>n(r(e))))}createUpdater(e,t,n=Float32Array,r=void 0){if(!M(this.size))throw Error(`The number of vertices must be defined!`);let i,a,o=0,s=new n(this.size*t);if(this.arrays[e]={data:s,numComponents:t},t==1){let e=0;i=()=>{s[o++]=e},a=t=>{e=+t}}else{let e=r??[0],n=r?e=>{}:t=>{e=t};switch(t){case 1:break;case 2:i=()=>{s[o++]=e[0],s[o++]=e[1]},a=n;break;case 3:i=()=>{s[o++]=e[0],s[o++]=e[1],s[o++]=e[2]},a=n;break;case 4:i=()=>{s[o++]=e[0],s[o++]=e[1],s[o++]=e[2],s[o++]=e[3]},a=n;break;default:throw Error(`Invalid numComponents: `+t)}}return this.pushers.push(i),a}pushAll(){throw Error(`Call configure() first!`)}updateFromDatum(e){throw Error(`Call configure() first!`)}#t(){if(this.size>Zj){let e=this.pushers.map((e,t)=>`const p${t} = that.pushers[${t}];`).join(`
573
+ };`,yM=1e4,bM=class{#e=!1;constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}configure(){if(this.#e)throw Error(`Already configured!`);this.#t(),this.#n(),this.#e=!0}addConverter(e,t){let n=this.createUpdater(e,t.numComponents||1,t.targetArrayType??Float32Array,t.arrayReference),r=t.f;this.dataUpdaters.push((t.arrayReference,e=>n(r(e))))}createUpdater(e,t,n=Float32Array,r=void 0){if(!P(this.size))throw Error(`The number of vertices must be defined!`);let i,a,o=0,s=new n(this.size*t);if(this.arrays[e]={data:s,numComponents:t},t==1){let e=0;i=()=>{s[o++]=e},a=t=>{e=+t}}else{let e=r??[0],n=r?e=>{}:t=>{e=t};switch(t){case 1:break;case 2:i=()=>{s[o++]=e[0],s[o++]=e[1]},a=n;break;case 3:i=()=>{s[o++]=e[0],s[o++]=e[1],s[o++]=e[2]},a=n;break;case 4:i=()=>{s[o++]=e[0],s[o++]=e[1],s[o++]=e[2],s[o++]=e[3]},a=n;break;default:throw Error(`Invalid numComponents: `+t)}}return this.pushers.push(i),a}pushAll(){throw Error(`Call configure() first!`)}updateFromDatum(e){throw Error(`Call configure() first!`)}#t(){if(this.size>yM){let e=this.pushers.map((e,t)=>`const p${t} = that.pushers[${t}];`).join(`
573
574
  `),t=this.pushers.map((e,t)=>` p${t}();`).join(`
574
575
  `);this.pushAll=Function(`that`,`${e}
575
576
  return function unrolledPushAll() {
576
577
  ${t}
577
578
  that.vertexCount++;
578
- };`)(this)}else this.pushAll=()=>{for(let e=0;e<this.pushers.length;e++)this.pushers[e]();this.vertexCount++}}#n(){if(this.size>Zj){let e=this.dataUpdaters.map((e,t)=>`const u${t} = that.dataUpdaters[${t}];`).join(`
579
+ };`)(this)}else this.pushAll=()=>{for(let e=0;e<this.pushers.length;e++)this.pushers[e]();this.vertexCount++}}#n(){if(this.size>yM){let e=this.dataUpdaters.map((e,t)=>`const u${t} = that.dataUpdaters[${t}];`).join(`
579
580
  `),t=this.dataUpdaters.map((e,t)=>` u${t}(datum);`).join(`
580
581
  `);this.updateFromDatum=Function(`that`,`datum`,`${e}
581
582
  return function unrolledUpdateFromDatum(datum) {
582
583
  ${t}
583
- };`)(this)}else this.updateFromDatum=e=>{for(let t=0;t<this.dataUpdaters.length;t++)this.dataUpdaters[t](e)}}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}},$j=127;function eM(e){let t=[];for(let e=0;e<=$j;e++)t.push(void 0);let n=new Map;for(let r of e.chars)r.id<=$j?t[r.id]=r:n.set(r.id,r);let r=8722;n.has(r)||n.set(r,t[45]);function i(e){return(e<=$j?t[e]:n.get(e))||t[63]}function a(e){return i(e.charCodeAt(0))}let o=e.common.base,s=a(`x`),c=a(`X`),l=a(`q`),u=s.height-10,d=c.height-10,f=l.height-s.height+l.yoffset-s.yoffset;function p(e,t=1){let n=0;for(let t=0;t<e.length;t++)n+=i(e.charCodeAt(t)).xadvance;return n/o*t}return{measureWidth:p,getCharByCode:i,getChar:a,xHeight:u,capHeight:d,descent:f,common:e.common}}function tM(){let e=e=>e;return e.invert=e=>e,e.copy=tM,e.invertRange=()=>{},e.type=`null`,e}var nM=4294967295,rM=4294967295;function iM(e){let t=e>>>0;return t^=t>>>16,t=Math.imul(t,2146121005),t^=t>>>15,t=Math.imul(t,2221713035),t^=t>>>16,t>>>0}function aM(e,t={}){let n=Array.from(e,e=>sM(e,`key`)),r=n.length,i=t.maxLoadFactor??.6;if(!(i>0&&i<1))throw Error(`maxLoadFactor must be between 0 and 1.`);let a=t.capacity??cM(Math.ceil(r/i));if(!Number.isSafeInteger(a)||a<1)throw Error(`capacity must be a positive power of two.`);if(a&a-1)throw Error(`capacity must be a power of two.`);let o=new Uint32Array(a);o.fill(nM);let s=a-1;for(let e of n){if(e===4294967295)throw Error(`Hash table keys must not equal the empty sentinel (0xffffffff).`);let t=iM(e)&s,n=!1;for(let r=0;r<a;r+=1){let r=o[t];if(r===4294967295||r===e){o[t]=e,n=!0;break}t=t+1&s}if(!n)throw Error(`Hash table insertion failed. Increase capacity or lower load factor.`)}return{table:o,capacity:a,size:r}}function oM(e,t){if(!Number.isSafeInteger(e)||e<1)throw Error(`capacity must be a positive integer.`);if(e&e-1)throw Error(`capacity must be a power of two.`);if(!Number.isSafeInteger(t)||t<1)throw Error(`maxTextureSize must be a positive integer.`);if(e>t*t)throw Error(`Selection hash table exceeds maximum texture capacity.`);let n=1<<Math.floor(Math.log2(t)),r=Math.min(e,n),i=e/r;if(i>t)throw Error(`Selection hash table dimensions exceed maximum texture size.`);return{width:r,height:i}}function sM(e,t){if(!Number.isSafeInteger(e)||e<0||e>rM)throw Error(t+` must be a non-negative u32.`);return e>>>0}function cM(e){let t=Math.max(1,e);return--t,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t+1}var lM=class{constructor(e,t,n,r){this._container=e,this._canvas=t,this._sizeSource=n,this._onPhysicalSizeChange=r??(()=>{}),this._logicalCanvasSize=void 0,this._devicePixelContentBoxSize=void 0,this._devicePixelContentBoxObserver=void 0,this._observeDevicePixelContentBox()}invalidate(){this._logicalCanvasSize=void 0,this._devicePixelContentBoxSize=void 0}finalize(){this._devicePixelContentBoxObserver&&this._devicePixelContentBoxObserver.disconnect()}getPhysicalCanvasSize(e){if(this._devicePixelContentBoxSize)return this._devicePixelContentBoxSize;let t=window.devicePixelRatio??1;return e||=this.getLogicalCanvasSize(),{width:Math.round(e.width*t),height:Math.round(e.height*t)}}getDevicePixelRatio(e){e||=this.getLogicalCanvasSize();let t=this.getPhysicalCanvasSize(e),n=e.width>0?t.width/e.width:void 0,r=e.height>0?t.height/e.height:void 0;return n!==void 0&&r!==void 0?(n+r)/2:n===void 0?r===void 0?window.devicePixelRatio??1:r:n}getLogicalCanvasSize(){if(this._logicalCanvasSize)return this._logicalCanvasSize;let e=this._sizeSource(),t=window.getComputedStyle(this._container,null),n=this._container.getBoundingClientRect(),r=parseFloat(t.paddingLeft),i=parseFloat(t.paddingRight),a=parseFloat(t.paddingTop),o=parseFloat(t.paddingBottom),s=parseFloat(t.borderLeftWidth),c=parseFloat(t.borderRightWidth),l=parseFloat(t.borderTopWidth),u=parseFloat(t.borderBottomWidth);return this._logicalCanvasSize={width:e.width??n.width-r-i-s-c,height:e.height??n.height-a-o-l-u},this._logicalCanvasSize}_observeDevicePixelContentBox(){if(typeof ResizeObserver!=`function`)return;let e=new ResizeObserver(e=>{let t=e.find(e=>e.target==this._canvas);if(!t)return;let n=t.devicePixelContentBoxSize;if(!n)return;let r=Array.isArray(n)?n[0]:n;if(!r)return;let i={width:r.inlineSize,height:r.blockSize};this._devicePixelContentBoxSize&&this._devicePixelContentBoxSize.width==i.width&&this._devicePixelContentBoxSize.height==i.height||(this._devicePixelContentBoxSize=i,this._onPhysicalSizeChange())});try{e.observe(this._canvas,{box:`device-pixel-content-box`}),this._devicePixelContentBoxObserver=e}catch{e.disconnect()}}},uM=class{constructor(e,t,n={}){let r=t??(()=>({width:void 0,height:void 0}));this._canvasSizeHelper=void 0,this._appliedCanvasSize=void 0,this._shaderCache=new Map,this.rangeTextures=new WeakMap,this.selectionTextures=new WeakMap;let i=document.createElement(`canvas`);e.appendChild(i);let a=qj(i,{antialias:!0,depth:!1,premultipliedAlpha:!0,...n});if(!a)throw Error(`Unable to initialize WebGL. Your browser or machine may not support it.`);if(!fE(a))throw Error(`Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.`);Gj(a);let o=a.getExtension(`WEBGL_provoking_vertex`);o&&o.provokingVertexWEBGL(o.FIRST_VERTEX_CONVENTION_WEBGL),a.blendFunc(a.ONE,a.ONE_MINUS_SRC_ALPHA),this.canvas=i,this.gl=a,this._pickingAttachmentOptions=[{format:a.RGBA,type:a.UNSIGNED_BYTE,minMag:a.LINEAR,wrap:a.CLAMP_TO_EDGE}],this._pickingBufferInfo=Rj(a,this._pickingAttachmentOptions),a.bindFramebuffer(a.FRAMEBUFFER,null),this._canvasSizeHelper=new lM(e,i,r,()=>this.adjustGl()),this.adjustGl()}invalidateSize(){this._canvasSizeHelper.invalidate(),this.adjustGl()}compileShader(e,t){Qe(t)&&(t=t.join(`
584
+ };`)(this)}else this.updateFromDatum=e=>{for(let t=0;t<this.dataUpdaters.length;t++)this.dataUpdaters[t](e)}}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}},xM=127;function SM(e){let t=[];for(let e=0;e<=xM;e++)t.push(void 0);let n=new Map;for(let r of e.chars)r.id<=xM?t[r.id]=r:n.set(r.id,r);let r=8722;n.has(r)||n.set(r,t[45]);function i(e){return(e<=xM?t[e]:n.get(e))||t[63]}function a(e){return i(e.charCodeAt(0))}let o=e.common.base,s=a(`x`),c=a(`X`),l=a(`q`),u=s.height-10,d=c.height-10,f=l.height-s.height+l.yoffset-s.yoffset;function p(e,t=1){let n=0;for(let t=0;t<e.length;t++)n+=i(e.charCodeAt(t)).xadvance;return n/o*t}return{measureWidth:p,getCharByCode:i,getChar:a,xHeight:u,capHeight:d,descent:f,common:e.common}}function CM(){let e=e=>e;return e.invert=e=>e,e.copy=CM,e.invertRange=()=>{},e.type=`null`,e}var wM=4294967295,TM=4294967295;function EM(e){let t=e>>>0;return t^=t>>>16,t=Math.imul(t,2146121005),t^=t>>>15,t=Math.imul(t,2221713035),t^=t>>>16,t>>>0}function DM(e,t={}){let n=Array.from(e,e=>kM(e,`key`)),r=n.length,i=t.maxLoadFactor??.6;if(!(i>0&&i<1))throw Error(`maxLoadFactor must be between 0 and 1.`);let a=t.capacity??AM(Math.ceil(r/i));if(!Number.isSafeInteger(a)||a<1)throw Error(`capacity must be a positive power of two.`);if(a&a-1)throw Error(`capacity must be a power of two.`);let o=new Uint32Array(a);o.fill(wM);let s=a-1;for(let e of n){if(e===4294967295)throw Error(`Hash table keys must not equal the empty sentinel (0xffffffff).`);let t=EM(e)&s,n=!1;for(let r=0;r<a;r+=1){let r=o[t];if(r===4294967295||r===e){o[t]=e,n=!0;break}t=t+1&s}if(!n)throw Error(`Hash table insertion failed. Increase capacity or lower load factor.`)}return{table:o,capacity:a,size:r}}function OM(e,t){if(!Number.isSafeInteger(e)||e<1)throw Error(`capacity must be a positive integer.`);if(e&e-1)throw Error(`capacity must be a power of two.`);if(!Number.isSafeInteger(t)||t<1)throw Error(`maxTextureSize must be a positive integer.`);if(e>t*t)throw Error(`Selection hash table exceeds maximum texture capacity.`);let n=1<<Math.floor(Math.log2(t)),r=Math.min(e,n),i=e/r;if(i>t)throw Error(`Selection hash table dimensions exceed maximum texture size.`);return{width:r,height:i}}function kM(e,t){if(!Number.isSafeInteger(e)||e<0||e>TM)throw Error(t+` must be a non-negative u32.`);return e>>>0}function AM(e){let t=Math.max(1,e);return--t,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t+1}var jM=class{constructor(e,t,n,r){this._container=e,this._canvas=t,this._sizeSource=n,this._onPhysicalSizeChange=r??(()=>{}),this._logicalCanvasSize=void 0,this._devicePixelContentBoxSize=void 0,this._devicePixelContentBoxObserver=void 0,this._observeDevicePixelContentBox()}invalidate(){this._logicalCanvasSize=void 0,this._devicePixelContentBoxSize=void 0}finalize(){this._devicePixelContentBoxObserver&&this._devicePixelContentBoxObserver.disconnect()}getPhysicalCanvasSize(e){if(this._devicePixelContentBoxSize)return this._devicePixelContentBoxSize;let t=window.devicePixelRatio??1;return e||=this.getLogicalCanvasSize(),{width:Math.round(e.width*t),height:Math.round(e.height*t)}}getDevicePixelRatio(e){e||=this.getLogicalCanvasSize();let t=this.getPhysicalCanvasSize(e),n=e.width>0?t.width/e.width:void 0,r=e.height>0?t.height/e.height:void 0;return n!==void 0&&r!==void 0?(n+r)/2:n===void 0?r===void 0?window.devicePixelRatio??1:r:n}getLogicalCanvasSize(){if(this._logicalCanvasSize)return this._logicalCanvasSize;let e=this._sizeSource(),t=window.getComputedStyle(this._container,null),n=this._container.getBoundingClientRect(),r=parseFloat(t.paddingLeft),i=parseFloat(t.paddingRight),a=parseFloat(t.paddingTop),o=parseFloat(t.paddingBottom),s=parseFloat(t.borderLeftWidth),c=parseFloat(t.borderRightWidth),l=parseFloat(t.borderTopWidth),u=parseFloat(t.borderBottomWidth);return this._logicalCanvasSize={width:e.width??n.width-r-i-s-c,height:e.height??n.height-a-o-l-u},this._logicalCanvasSize}_observeDevicePixelContentBox(){if(typeof ResizeObserver!=`function`)return;let e=new ResizeObserver(e=>{let t=e.find(e=>e.target==this._canvas);if(!t)return;let n=t.devicePixelContentBoxSize;if(!n)return;let r=Array.isArray(n)?n[0]:n;if(!r)return;let i={width:r.inlineSize,height:r.blockSize};this._devicePixelContentBoxSize&&this._devicePixelContentBoxSize.width==i.width&&this._devicePixelContentBoxSize.height==i.height||(this._devicePixelContentBoxSize=i,this._onPhysicalSizeChange())});try{e.observe(this._canvas,{box:`device-pixel-content-box`}),this._devicePixelContentBoxObserver=e}catch{e.disconnect()}}},MM=class{constructor(e,t,n={},r){let i=t??(()=>({width:void 0,height:void 0}));this._canvasSizeHelper=void 0,this._appliedCanvasSize=void 0,this._onCanvasResize=r??(()=>{}),this._shaderCache=new Map,this.rangeTextures=new WeakMap,this.selectionTextures=new WeakMap;let a=document.createElement(`canvas`);e.appendChild(a);let o=hM(a,{antialias:!0,depth:!1,premultipliedAlpha:!0,...n});if(!o)throw Error(`Unable to initialize WebGL. Your browser or machine may not support it.`);if(!NE(o))throw Error(`Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.`);pM(o);let s=o.getExtension(`WEBGL_provoking_vertex`);s&&s.provokingVertexWEBGL(s.FIRST_VERTEX_CONVENTION_WEBGL),o.blendFunc(o.ONE,o.ONE_MINUS_SRC_ALPHA),this.canvas=a,this.gl=o,this._pickingAttachmentOptions=[{format:o.RGBA,type:o.UNSIGNED_BYTE,minMag:o.LINEAR,wrap:o.CLAMP_TO_EDGE}],this._pickingBufferInfo=oM(o,this._pickingAttachmentOptions),o.bindFramebuffer(o.FRAMEBUFFER,null),this._canvasSizeHelper=new jM(e,a,i,()=>{this.adjustGl()&&this._onCanvasResize()}),this.adjustGl()}invalidateSize(){this._canvasSizeHelper.invalidate(),this.adjustGl()}compileShader(e,t){k(t)&&(t=t.join(`
584
585
 
585
586
  `));let n=this.gl,r=t.replaceAll(/ {2,}|^\s*\/\/.*$/gm,``),i=this._shaderCache.get(r);if(!i){let a=[`#version 300 es`,`precision mediump float;`,t].join(`
586
587
 
587
- `);i=n.createShader(e),n.shaderSource(i,a),n.compileShader(i),this._shaderCache.set(r,i)}return i}adjustGl(){let e=this.getLogicalCanvasSize(),t=this.getPhysicalCanvasSize(e);this._appliedCanvasSize&&this._appliedCanvasSize.logicalWidth==e.width&&this._appliedCanvasSize.logicalHeight==e.height&&this._appliedCanvasSize.physicalWidth==t.width&&this._appliedCanvasSize.physicalHeight==t.height||(this.canvas.style.width=`${e.width}px`,this.canvas.style.height=`${e.height}px`,this.canvas.width=t.width,this.canvas.height=t.height,zj(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions),this._appliedCanvasSize={logicalWidth:e.width,logicalHeight:e.height,physicalWidth:t.width,physicalHeight:t.height})}finalize(){this._canvasSizeHelper.finalize(),this.canvas.remove()}getPhysicalCanvasSize(e){return this._canvasSizeHelper.getPhysicalCanvasSize(e)}getDevicePixelRatio(e){return this._canvasSizeHelper.getDevicePixelRatio(e)}getLogicalCanvasSize(){return this._canvasSizeHelper.getLogicalCanvasSize()}createRangeTexture(e,t=!1){let n=this.rangeTextures.get(e.getScale());if(!t&&n)return;function r(e,t){return bm(t.type)?t.domain().length:t.type==`threshold`?t.domain().length+1:t.type==`quantize`||t.type==`quantile`?e??4:e}let i=e.channel;if(Yh(i)){let t=e.getScale(),i=t.props,a=t.range(),o;if(i.scheme)if(t.type==`threshold`&&a)o=yM(a,this.gl,t.domain().length,n);else{let e=N(i.scheme)?void 0:i.scheme.count;e=r(e,t),o=gM(i.scheme,this.gl,e,n,!!i.reverse)}else o=Cm(t.type)||ym(t.type)&&a.length>1?_M(a,i.interpolate,this.gl,n):yM(a,this.gl,t.domain().length,n);this.rangeTextures.set(t,o)}else{let t=e.getScale();if(t.type===`ordinal`||xm(t.type)){let e=Xh(i)?$h(i):e=>e,r=t.range();this.rangeTextures.set(t,vM(r.map(e),this.gl,t.domain().length,n))}}}createSelectionTexture(e,t=!0){if(!sg(e))throw Error(`Not a multi-point selection, cannot create texture`);let{table:n,capacity:r}=aM(e.data.keys()),{width:i,height:a}=oM(r,this.gl.getParameter(this.gl.MAX_TEXTURE_SIZE)),o=this.selectionTextures.get(e),s=this.gl,c=pM(this.gl,{auto:!1,level:0,min:s.NEAREST,mag:s.NEAREST,format:s.RED_INTEGER,internalFormat:s.R32UI,width:i,height:a},n,t?o:!1);s.bindTexture(s.TEXTURE_2D,c),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_BASE_LEVEL,0),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAX_LEVEL,0),s.bindTexture(s.TEXTURE_2D,null),this.selectionTextures.set(e,c)}};function dM(e,t=``,n=0){let r=[...t.matchAll(/ERROR:\s*\d+:(\d+)/gi)],i=new Map(r.map((e,n)=>{let i=parseInt(e[1]),a=r[n+1],o=a?a.index:t.length,s=t.substring(e.index,o);return[i-1,s]}));return e.split(`
588
+ `);i=n.createShader(e),n.shaderSource(i,a),n.compileShader(i),this._shaderCache.set(r,i)}return i}adjustGl(){let e=this.getLogicalCanvasSize(),t=this.getPhysicalCanvasSize(e);return this._appliedCanvasSize&&this._appliedCanvasSize.logicalWidth==e.width&&this._appliedCanvasSize.logicalHeight==e.height&&this._appliedCanvasSize.physicalWidth==t.width&&this._appliedCanvasSize.physicalHeight==t.height?!1:(this.canvas.style.width=`${e.width}px`,this.canvas.style.height=`${e.height}px`,this.canvas.width=t.width,this.canvas.height=t.height,sM(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions),this._appliedCanvasSize={logicalWidth:e.width,logicalHeight:e.height,physicalWidth:t.width,physicalHeight:t.height},!0)}finalize(){this._canvasSizeHelper.finalize(),this.canvas.remove()}getPhysicalCanvasSize(e){return this._canvasSizeHelper.getPhysicalCanvasSize(e)}getDevicePixelRatio(e){return this._canvasSizeHelper.getDevicePixelRatio(e)}getLogicalCanvasSize(){return this._canvasSizeHelper.getLogicalCanvasSize()}createRangeTexture(e,t=!1){let n=this.rangeTextures.get(e.getScale());if(!t&&n)return;function r(e,t){return vm(t.type)?t.domain().length:t.type==`threshold`?t.domain().length+1:t.type==`quantize`||t.type==`quantile`?e??4:e}let i=e.channel;if(qh(i)){let t=e.getScale(),i=t.props,a=t.range(),o;if(i.scheme)if(t.type==`threshold`&&a)o=VM(a,this.gl,t.domain().length,n);else{let e=F(i.scheme)?void 0:i.scheme.count;e=r(e,t),o=RM(i.scheme,this.gl,e,n,!!i.reverse)}else o=xm(t.type)||_m(t.type)&&a.length>1?zM(a,i.interpolate,this.gl,n):VM(a,this.gl,t.domain().length,n);this.rangeTextures.set(t,o)}else{let t=e.getScale();if(t.type===`ordinal`||ym(t.type)){let e=Jh(i)?Zh(i):e=>e,r=t.range();this.rangeTextures.set(t,BM(r.map(e),this.gl,t.domain().length,n))}}}createSelectionTexture(e,t=!0){if(!ag(e))throw Error(`Not a multi-point selection, cannot create texture`);let{table:n,capacity:r}=DM(e.data.keys()),{width:i,height:a}=OM(r,this.gl.getParameter(this.gl.MAX_TEXTURE_SIZE)),o=this.selectionTextures.get(e),s=this.gl,c=FM(this.gl,{auto:!1,level:0,min:s.NEAREST,mag:s.NEAREST,format:s.RED_INTEGER,internalFormat:s.R32UI,width:i,height:a},n,t?o:!1);s.bindTexture(s.TEXTURE_2D,c),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_BASE_LEVEL,0),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAX_LEVEL,0),s.bindTexture(s.TEXTURE_2D,null),this.selectionTextures.set(e,c)}};function NM(e,t=``,n=0){let r=[...t.matchAll(/ERROR:\s*\d+:(\d+)/gi)],i=new Map(r.map((e,n)=>{let i=parseInt(e[1]),a=r[n+1],o=a?a.index:t.length,s=t.substring(e.index,o);return[i-1,s]}));return e.split(`
588
589
  `).map((e,t)=>{let r=i.get(t);return`${t+1+n}: ${e}${r?`\n\n^^^ ${r}`:``}`}).join(`
589
- `)}function fM(e,t,n){let r=e.createProgram();e.attachShader(r,t),e.attachShader(r,n),e.linkProgram(r);function i(){let i,a;if(!e.getProgramParameter(r,e.LINK_STATUS)){i=e.getProgramInfoLog(r);for(let r of[t,n])e.getShaderParameter(r,e.COMPILE_STATUS)||(i=e.getShaderInfoLog(r),a=dM(e.getShaderSource(r),i,0)+`\nError compiling: ${i}`,e.deleteShader(r));e.deleteProgram(r)}if(i)return{message:i,detail:a}}return{program:r,getProgramErrors:i}}function pM(e,t,n,r){return r?QO(e,r,n,t):r=ek(e,{...t,src:n}),r}function mM(e,t,n,r){let{height:i,framebuffer:a}=t,o=new Uint8Array(4);return e.bindFramebuffer(e.FRAMEBUFFER,a),e.readPixels(n,i-r-1,1,1,e.RGBA,e.UNSIGNED_BYTE,o),e.bindFramebuffer(e.FRAMEBUFFER,null),o}function hM(e,t,n=`image/png`){let{width:r,height:i}=t,a=new Uint8Array(r*i*4);e.bindFramebuffer(e.FRAMEBUFFER,t.framebuffer),e.readPixels(0,0,r,i,e.RGBA,e.UNSIGNED_BYTE,a),e.bindFramebuffer(e.FRAMEBUFFER,null);let o=document.createElement(`canvas`);o.width=r,o.height=i;let s=o.getContext(`2d`),c=s.createImageData(r,i);for(let e=0;e<i;e++){let t=(i-1-e)*r*4,n=e*r*4;c.data.set(a.subarray(t,t+r*4),n)}return s.putImageData(c,0,0),o.toDataURL(n)}function gM(e,t,n,r,i=!1){let a=N(e)?e:e.name,o=!N(e)&&e.extent||[0,1];if(n===void 0&&!N(e)&&(n=e.count),a){let e=Pm(a);if(mt(e)){let a=bM(e,{extent:o,count:n,reverse:i});return pM(t,{minMag:t.LINEAR,format:t.RGB,height:1,wrap:t.CLAMP_TO_EDGE},a,r)}else if(Qe(e))return yM(i?Array.from(e).reverse():e,t,n,r);else throw Error(`Unknown scheme: `+a)}}function _M(e,t=`rgb`,n,r){let i=bM(Tm(e,N(t)?t:t.type,N(t)?void 0:t.gamma));return pM(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},i,r)}function vM(e,t,n,r){let i=Math.max(e.length,n||0),a=new Float32Array(i);for(let t=0;t<i;t++)a[t]=e[t%e.length];return pM(t,{minMag:t.NEAREST,format:t.RED,internalFormat:t.R32F,height:1},a,r)}function yM(e,t,n,r){let i=xM(e,n);return pM(t,{minMag:t.NEAREST,format:t.RGB,height:1},i,r)}function bM(e,{extent:t=[0,1],reverse:n=!1,count:r=256}={}){let i=t[0],a=Ql(t)-i,o=Hn(r).map(e=>e/(r-1)).map(e=>i+e/a).map(e);return n&&o.reverse(),xM(o)}function xM(e,t){let n=Math.max(e.length,t||0),r=new Uint8Array(n*3);for(let t=0;t<n;t++){let n=e[t%e.length],i=wu(n);if(!i)throw Error(`Invalid color "${n}" in the scheme ${JSON.stringify(e)}!`);let a=i.rgb();r[t*3+0]=a.r,r[t*3+1]=a.g,r[t*3+2]=a.b}return r}function SM(e){let t=wu(e).rgb();return[t.r,t.g,t.b].map(e=>e/255)}var CM=`attr_`,wM=`uDomain_`,TM=`range_`,EM=`accessor_`,DM=`scale_`,OM=`getScaled_`,kM=`uRangeTexture_`,AM=`uParam_`,jM=`checkSelection_`,MM=3402823466e29;function NM(e){let t=e.match(/^(?:(\w+)-)?(\w+)$/);if(!t)throw Error(`Not a scale type: `+e);return{family:t[1]||`continuous`,transform:t[2]}}function PM(e,t){return`${EM}${e}_${t}`}function FM(e,t,n){let r;if(Xh(e))r=HM($h(e)(n));else if(N(n))if(Yh(e))r=GM(n);else throw Error(`String values are not supported on the "${e}" channel: ${n}`);else if(Ct(n))r=HM(n?1:0);else if(n===null)if(Yh(e))r=HM([0,0,0]);else throw Error(`null value is not supported on the "${e}" chanel.`);else r=HM(n);let i=PM(e,t);return{channel:e,accessorGlsl:`
590
+ `)}function PM(e,t,n){let r=e.createProgram();e.attachShader(r,t),e.attachShader(r,n),e.linkProgram(r);function i(){let i,a;if(!e.getProgramParameter(r,e.LINK_STATUS)){i=e.getProgramInfoLog(r);for(let r of[t,n])e.getShaderParameter(r,e.COMPILE_STATUS)||(i=e.getShaderInfoLog(r),a=NM(e.getShaderSource(r),i,0)+`\nError compiling: ${i}`,e.deleteShader(r));e.deleteProgram(r)}if(i)return{message:i,detail:a}}return{program:r,getProgramErrors:i}}function FM(e,t,n,r){return r?bk(e,r,n,t):r=Sk(e,{...t,src:n}),r}function IM(e,t,n,r){let{height:i,framebuffer:a}=t,o=new Uint8Array(4);return e.bindFramebuffer(e.FRAMEBUFFER,a),e.readPixels(n,i-r-1,1,1,e.RGBA,e.UNSIGNED_BYTE,o),e.bindFramebuffer(e.FRAMEBUFFER,null),o}function LM(e,t,n=`image/png`){let{width:r,height:i}=t,a=new Uint8Array(r*i*4);e.bindFramebuffer(e.FRAMEBUFFER,t.framebuffer),e.readPixels(0,0,r,i,e.RGBA,e.UNSIGNED_BYTE,a),e.bindFramebuffer(e.FRAMEBUFFER,null);let o=document.createElement(`canvas`);o.width=r,o.height=i;let s=o.getContext(`2d`),c=s.createImageData(r,i);for(let e=0;e<i;e++){let t=(i-1-e)*r*4,n=e*r*4;c.data.set(a.subarray(t,t+r*4),n)}return s.putImageData(c,0,0),o.toDataURL(n)}function RM(e,t,n,r,i=!1){let a=F(e)?e:e.name,o=!F(e)&&e.extent||[0,1];if(n===void 0&&!F(e)&&(n=e.count),a){let e=Mm(a);if(ft(e)){let a=HM(e,{extent:o,count:n,reverse:i});return FM(t,{minMag:t.LINEAR,format:t.RGB,height:1,wrap:t.CLAMP_TO_EDGE},a,r)}else if(k(e))return VM(i?Array.from(e).reverse():e,t,n,r);else throw Error(`Unknown scheme: `+a)}}function zM(e,t=`rgb`,n,r){let i=HM(Cm(e,F(t)?t:t.type,F(t)?void 0:t.gamma));return FM(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},i,r)}function BM(e,t,n,r){let i=Math.max(e.length,n||0),a=new Float32Array(i);for(let t=0;t<i;t++)a[t]=e[t%e.length];return FM(t,{minMag:t.NEAREST,format:t.RED,internalFormat:t.R32F,height:1},a,r)}function VM(e,t,n,r){let i=UM(e,n);return FM(t,{minMag:t.NEAREST,format:t.RGB,height:1},i,r)}function HM(e,{extent:t=[0,1],reverse:n=!1,count:r=256}={}){let i=t[0],a=Xl(t)-i,o=Bn(r).map(e=>e/(r-1)).map(e=>i+e/a).map(e);return n&&o.reverse(),UM(o)}function UM(e,t){let n=Math.max(e.length,t||0),r=new Uint8Array(n*3);for(let t=0;t<n;t++){let n=e[t%e.length],i=Su(n);if(!i)throw Error(`Invalid color "${n}" in the scheme ${JSON.stringify(e)}!`);let a=i.rgb();r[t*3+0]=a.r,r[t*3+1]=a.g,r[t*3+2]=a.b}return r}function WM(e){let t=Su(e).rgb();return[t.r,t.g,t.b].map(e=>e/255)}var GM=`attr_`,KM=`uDomain_`,qM=`range_`,JM=`accessor_`,YM=`scale_`,XM=`getScaled_`,ZM=`uRangeTexture_`,QM=`uParam_`,$M=`checkSelection_`,eN=3402823466e29;function tN(e){let t=e.match(/^(?:(\w+)-)?(\w+)$/);if(!t)throw Error(`Not a scale type: `+e);return{family:t[1]||`continuous`,transform:t[2]}}function nN(e,t){return`${JM}${e}_${t}`}function rN(e,t,n){let r;if(Jh(e))r=uN(Zh(e)(n));else if(F(n))if(qh(e))r=pN(n);else throw Error(`String values are not supported on the "${e}" channel: ${n}`);else if(xt(n))r=uN(n?1:0);else if(n===null)if(qh(e))r=uN([0,0,0]);else throw Error(`null value is not supported on the "${e}" chanel.`);else r=uN(n);let i=nN(e,t);return{channel:e,accessorGlsl:`
590
591
  ${r.type} ${i}() {
591
592
  // Constant value
592
593
  return ${r};
593
- }`,accessorFunctionName:i}}function IM(e,t){let n=`float`,r=e=>e;Yh(e)&&(n=`vec3`,r=e=>SM(e));let i=`u${rN(e)}_${t}`,a=` // Dynamic value\n uniform ${n} ${i};`,o=PM(e,t);return{channel:e,uniformName:i,uniformGlsl:a,accessorGlsl:`
594
+ }`,accessorFunctionName:i}}function iN(e,t){let n=`float`,r=e=>e;qh(e)&&(n=`vec3`,r=e=>WM(e));let i=`u${TN(e)}_${t}`,a=` // Dynamic value\n uniform ${n} ${i};`,o=nN(e,t);return{channel:e,uniformName:i,uniformGlsl:a,accessorGlsl:`
594
595
  ${n} ${o}() {
595
596
  // Dynamic value
596
597
  return ${i};
597
- }`,accessorFunctionName:o,adjuster:r}}function LM(e,t,n,r=[e]){let{attributeType:i}=JM(t,e),a=nN(r),o=`in highp ${i} ${a};`,s=PM(e,n);return{channel:e,attributeName:a,attributeGlsl:o,accessorGlsl:`
598
+ }`,accessorFunctionName:o,adjuster:r}}function aN(e,t,n,r=[e]){let{attributeType:i}=gN(t,e),a=wN(r),o=`in highp ${i} ${a};`,s=nN(e,n);return{channel:e,attributeName:a,attributeGlsl:o,accessorGlsl:`
598
599
  ${i} ${s}() {
599
600
  return ${a};
600
- }`,accessorFunctionName:s}}function RM(e,t,n){let{attributeType:r}=JM(t,e),i=nN(e),a=` uniform highp ${r} ${i};`,o=PM(e,n);return{channel:e,uniformName:i,uniformGlsl:a,accessorGlsl:`
601
+ }`,accessorFunctionName:s}}function oN(e,t,n){let{attributeType:r}=gN(t,e),i=wN(e),a=` uniform highp ${r} ${i};`,o=nN(e,n);return{channel:e,uniformName:i,uniformGlsl:a,accessorGlsl:`
601
602
  ${r} ${o}() {
602
603
  return ${i};
603
- }`,accessorFunctionName:o}}function zM(e,t,n){t??=tM();let r=Jh(e),i=wM+r,a=TM+r,{hp:o,attributeType:s}=JM(t,e),c=t.domain?t.domain().length:void 0,l,u=[];u.push(``),u.push(`/`.repeat(70)),u.push(`// Channel: ${e}`),u.push(``);let{transform:d}=NM(t.type),f=(e,...t)=>qM.apply(null,[e,`value`,...t]),p;switch(d){case`linear`:p=f(`scaleLinear`,`domain`,a);break;case`log`:p=f(`scaleLog`,`domain`,a,t.base());break;case`symlog`:p=f(`scaleSymlog`,`domain`,a,t.constant());break;case`pow`:case`sqrt`:p=f(`scalePow`,`domain`,a,t.exponent());break;case`index`:case`locus`:p=f(`scaleBandHp`,`domain`,a,t.paddingInner(),t.paddingOuter(),t.align(),n.band??.5);break;case`point`:case`band`:p=f(`scaleBand`,`domain`,a,t.paddingInner(),t.paddingOuter(),t.align(),n.band??.5);break;case`ordinal`:case`null`:case`identity`:p=f(`scaleIdentity`);break;case`threshold`:break;default:throw Error(`Unsupported scale type: ${t.type}! ${e}: ${JSON.stringify(n)}`)}let m=iN(t,e),h;if(m&&e==r){let e=t.props.range??[];if(R(e)||e.some(R)){if(m.length<1||m.length>4)throw Error(`A range with ExprRefs must have 1-4 elements, not ${m.length}! Range: ${JSON.stringify(m)}`);h=` uniform ${UM(m.length)} ${a};`}else if(m.length&&m.every(M)){let e=KM(m);u.push(`const ${e.type} ${a} = ${e};`)}}let g=WM(e),_;if(Yh(e)){let n=kM+r;if(e==r&&u.push(`uniform sampler2D ${n};`),ym(t.type))_=`getInterpolatedColor(${n}, transformed)`;else if(bm(t.type)||xm(t.type))_=`getDiscreteColor(${n}, int(transformed))`;else throw Error(`Problem with color scale!`)}else if(t.type===`ordinal`||xm(t.type)){let t=kM+r;e==r&&u.push(`uniform sampler2D ${t};`),_=`getDiscreteColor(${t}, int(transformed)).r`}let v=[],y=ym(t.type)&&c>2,b=xm(t.type)||y;if(v.push(`int slot = 0;`),b){let e=i;v.push(y?`while (slot < ${e}.length() - 2 && value >= ${e}[slot + 1]) { slot++; }`:`while (slot < ${e}.length() && value >= ${e}[slot]) { slot++; }`)}let x=ym(t.type)||xm(t.type)||[`band`,`point`].includes(t.type);if(p){let e=i;x&&(o?v.push(`vec3 domain = ${e};`):v.push(`vec2 domain = vec2(${e}[slot], ${e}[slot + 1]);`)),v.push(`float transformed = ${p};`),y&&v.push(`transformed = (float(slot) + transformed) / (float(${e}.length() - 1));`)}else v.push(`float transformed = float(slot);`);`clamp`in t&&t.clamp()&&v.push(`transformed = clampToRange(transformed, ${KM(m)});`),v.push(`return ${_??`transformed`};`),u.push(`
604
- ${g} ${DM}${e}(${s} value) {
604
+ }`,accessorFunctionName:o}}function sN(e,t,n){t??=CM();let r=Kh(e),i=KM+r,a=qM+r,{hp:o,attributeType:s}=gN(t,e),c=t.domain?t.domain().length:void 0,l,u=[];u.push(``),u.push(`/`.repeat(70)),u.push(`// Channel: ${e}`),u.push(``);let{transform:d}=tN(t.type),f=(e,...t)=>hN.apply(null,[e,`value`,...t]),p;switch(d){case`linear`:p=f(`scaleLinear`,`domain`,a);break;case`log`:p=f(`scaleLog`,`domain`,a,t.base());break;case`symlog`:p=f(`scaleSymlog`,`domain`,a,t.constant());break;case`pow`:case`sqrt`:p=f(`scalePow`,`domain`,a,t.exponent());break;case`index`:case`locus`:p=f(`scaleBandHp`,`domain`,a,t.paddingInner(),t.paddingOuter(),t.align(),n.band??.5);break;case`point`:case`band`:p=f(`scaleBand`,`domain`,a,t.paddingInner(),t.paddingOuter(),t.align(),n.band??.5);break;case`ordinal`:case`null`:case`identity`:p=f(`scaleIdentity`);break;case`threshold`:break;default:throw Error(`Unsupported scale type: ${t.type}! ${e}: ${JSON.stringify(n)}`)}let m=EN(t,e),h;if(m&&e==r){let e=t.props.range??[];if(B(e)||e.some(B)){if(m.length<1||m.length>4)throw Error(`A range with ExprRefs must have 1-4 elements, not ${m.length}! Range: ${JSON.stringify(m)}`);h=` uniform ${dN(m.length)} ${a};`}else if(m.length&&m.every(P)){let e=mN(m);u.push(`const ${e.type} ${a} = ${e};`)}}let g=fN(e),_;if(qh(e)){let n=ZM+r;if(e==r&&u.push(`uniform sampler2D ${n};`),_m(t.type))_=`getInterpolatedColor(${n}, transformed)`;else if(vm(t.type)||ym(t.type))_=`getDiscreteColor(${n}, int(transformed))`;else throw Error(`Problem with color scale!`)}else if(t.type===`ordinal`||ym(t.type)){let t=ZM+r;e==r&&u.push(`uniform sampler2D ${t};`),_=`getDiscreteColor(${t}, int(transformed)).r`}let v=[],y=_m(t.type)&&c>2,b=ym(t.type)||y;if(v.push(`int slot = 0;`),b){let e=i;v.push(y?`while (slot < ${e}.length() - 2 && value >= ${e}[slot + 1]) { slot++; }`:`while (slot < ${e}.length() && value >= ${e}[slot]) { slot++; }`)}let x=_m(t.type)||ym(t.type)||[`band`,`point`].includes(t.type);if(p){let e=i;x&&(o?v.push(`vec3 domain = ${e};`):v.push(`vec2 domain = vec2(${e}[slot], ${e}[slot + 1]);`)),v.push(`float transformed = ${p};`),y&&v.push(`transformed = (float(slot) + transformed) / (float(${e}.length() - 1));`)}else v.push(`float transformed = float(slot);`);`clamp`in t&&t.clamp()&&v.push(`transformed = clampToRange(transformed, ${mN(m)});`),v.push(`return ${_??`transformed`};`),u.push(`
605
+ ${g} ${YM}${e}(${s} value) {
605
606
  ${v.map(e=>` ${e}\n`).join(``)}
606
607
  }`);let S=u.join(`
607
- `);if(x&&e==r){let e=ym(t.type)||xm(t.type)?c:2;l=o?` highp vec3 ${i};`:` mediump float ${i}[${e}];`}return{glsl:S,domainUniformName:i,domainUniform:l,rangeUniformName:a,rangeUniform:h}}function BM(e,t){let n=WM(e),r=[],i=[];for(let n=0;n<t.length;n++){let{accessor:a,predicate:o}=t[n],s=PM(e,n),{param:c,empty:l}=o;r.push(c?`${jM}${c}(${!!l})`:null),i.push(a.scaleChannel?`return ${DM}${e}(${s}());`:`return ${s}();`)}return`${n} ${OM}${e}() {
608
- ${aN(r,i)}
608
+ `);if(x&&e==r){let e=_m(t.type)||ym(t.type)?c:2;l=o?` highp vec3 ${i};`:` mediump float ${i}[${e}];`}return{glsl:S,domainUniformName:i,domainUniform:l,rangeUniformName:a,rangeUniform:h}}function cN(e,t){let n=fN(e),r=[],i=[];for(let n=0;n<t.length;n++){let{accessor:a,predicate:o}=t[n],s=nN(e,n),{param:c,empty:l}=o;r.push(c?`${$M}${c}(${!!l})`:null),i.push(a.scaleChannel?`return ${YM}${e}(${s}());`:`return ${s}();`)}return`${n} ${XM}${e}() {
609
+ ${DN(r,i)}
609
610
  }
610
611
 
611
- #define ${e}_DEFINED`}function VM(e){if(!M(e))throw Error(`Not a number: ${e}`);if(e==1/0)return``+MM;if(e==-1/0)return``+-MM;{let t=`${e}`;return/^(-)?\d+$/.test(t)&&(t+=`.0`),t}}function HM(e){typeof e==`number`&&(e=[e]);let t=e.length;if(t<1||t>4)throw Error(`Invalid number of components: `+t);let n=UM(t),r=`${n}(${e.map(VM).join(`, `)})`;return Object.assign(r,{type:n,numComponents:t})}function UM(e){switch(e){case 1:return`float`;case 2:return`vec2`;case 3:return`vec3`;case 4:return`vec4`;default:throw Error(`Invalid number of components: `+e)}}function WM(e){return Yh(e)?`vec3`:e==`uniqueId`?`uint`:`float`}function GM(e){return HM(SM(e))}function KM(e){return HM([e[0],Ql(e)])}function qM(e,...t){let n=[];for(let e of t)M(e)?n.push(VM(e)):Qe(e)?n.push(HM(e)):n.push(e);return`${e}(${n.join(`, `)})`}function JM(e,t){let n=e&&bm(e.type),r=e&&YM(e.type),i=r&&XM(e.domain()),a=i?{attributeType:`uvec2`,arrayConstructor:Uint32Array}:r?{attributeType:`uint`,arrayConstructor:Uint32Array}:n?{attributeType:`uint`,arrayConstructor:Uint16Array}:t==`uniqueId`?{attributeType:`uint`,arrayConstructor:Uint32Array}:{attributeType:`float`,arrayConstructor:Float32Array};return Object.assign(a,{numComponents:+(a.attributeType.match(/^(?:u)?vec([234])$/)?.[1]??1),discrete:n,hp:r,largeHp:i})}function YM(e){return e==`index`||e==`locus`}function XM(e){return e[1]>2**32}var ZM=2**12;ZM-1;function QM(e,t=[]){let n=e%ZM;return t[0]=(e-n)/ZM,t[1]=n,t}function $M(e){let t=e%ZM;return[e-t,t]}function eN(e){return[...$M(e[0]),e[1]-e[0]]}function tN(e){let t=new gn([],JSON.stringify);for(let[n,r]of Object.entries(e)){let e=r.channelDef;if(Ah(e)){let i=[e.field,r.scale?(ym(r.scale.type)||xm(r.scale.type))??!1:!1];t.set(i,[...t.get(i)??[],n])}}return t}function nN(e){return CM+Zl(e).toSorted().join(`_`)}function rN(e){return e[0].toUpperCase()+e.slice(1)}var iN=(e,t)=>Cm(e.type)||ym(e.type)&&Yh(t)?[0,1]:e.range?e.range():void 0;function aN(e,t){if(e.length!=t.length)throw Error(`Unequal array lengths`);let n=e.length;if(n==0)return``;if(n==1&&e[0]==null)return t[0];let r=[];for(let i=0;i<n;i++){let a=e[i],o=i==0?`if (${a})`:a==null&&i==n-1?`else`:`else if (${a})`;r.push(` ${o} {
612
+ #define ${e}_DEFINED`}function lN(e){if(!P(e))throw Error(`Not a number: ${e}`);if(e==1/0)return``+eN;if(e==-1/0)return``+-eN;{let t=`${e}`;return/^(-)?\d+$/.test(t)&&(t+=`.0`),t}}function uN(e){typeof e==`number`&&(e=[e]);let t=e.length;if(t<1||t>4)throw Error(`Invalid number of components: `+t);let n=dN(t),r=`${n}(${e.map(lN).join(`, `)})`;return Object.assign(r,{type:n,numComponents:t})}function dN(e){switch(e){case 1:return`float`;case 2:return`vec2`;case 3:return`vec3`;case 4:return`vec4`;default:throw Error(`Invalid number of components: `+e)}}function fN(e){return qh(e)?`vec3`:e==`uniqueId`?`uint`:`float`}function pN(e){return uN(WM(e))}function mN(e){return uN([e[0],Xl(e)])}function hN(e,...t){let n=[];for(let e of t)P(e)?n.push(lN(e)):k(e)?n.push(uN(e)):n.push(e);return`${e}(${n.join(`, `)})`}function gN(e,t){let n=e&&vm(e.type),r=e&&_N(e.type),i=r&&vN(e.domain()),a=i?{attributeType:`uvec2`,arrayConstructor:Uint32Array}:r?{attributeType:`uint`,arrayConstructor:Uint32Array}:n?{attributeType:`uint`,arrayConstructor:Uint16Array}:t==`uniqueId`?{attributeType:`uint`,arrayConstructor:Uint32Array}:{attributeType:`float`,arrayConstructor:Float32Array};return Object.assign(a,{numComponents:+(a.attributeType.match(/^(?:u)?vec([234])$/)?.[1]??1),discrete:n,hp:r,largeHp:i})}function _N(e){return e==`index`||e==`locus`}function vN(e){return e[1]>2**32}var yN=2**12;yN-1;function bN(e,t=[]){let n=e%yN;return t[0]=(e-n)/yN,t[1]=n,t}function xN(e){let t=e%yN;return[e-t,t]}function SN(e){return[...xN(e[0]),e[1]-e[0]]}function CN(e){let t=new mn([],JSON.stringify);for(let[n,r]of Object.entries(e)){let e=r.channelDef;if(Oh(e)){let i=[e.field,r.scale?(_m(r.scale.type)||ym(r.scale.type))??!1:!1];t.set(i,[...t.get(i)??[],n])}}return t}function wN(e){return GM+Yl(e).toSorted().join(`_`)}function TN(e){return e[0].toUpperCase()+e.slice(1)}var EN=(e,t)=>xm(e.type)||_m(e.type)&&qh(t)?[0,1]:e.range?e.range():void 0;function DN(e,t){if(e.length!=t.length)throw Error(`Unequal array lengths`);let n=e.length;if(n==0)return``;if(n==1&&e[0]==null)return t[0];let r=[];for(let i=0;i<n;i++){let a=e[i],o=i==0?`if (${a})`:a==null&&i==n-1?`else`:`else if (${a})`;r.push(` ${o} {
612
613
  ${t[i]}
613
614
  }`)}return r.join(`
614
- `)}function oN(){let e=0,t,n=0,r=new Map,i=i=>i===t?n:(n=r.get(i),n===void 0&&(n=e++,r.set(i,n)),t=i,n);return i.addAll=e=>{for(let t of e)i(t)},i.invert=e=>{for(let t of r.entries())if(t[1]==e)return t[0]},i.domain=()=>[...r.keys()],i}function sN(e,t=0,n=1){return Math.max(t,Math.min(n,e))}var cN=2**31-1,lN=-(2**31);function uN(e,t,n,r=n,i=0,a=i){if(a<=i||t[1]<=t[0])return;let o=Array(e);o.fill(cN);let s=Array(e);s.fill(0);let c=t[0],l=(t[1]-t[0])/e,u=(t,n)=>{let r=(t-c)/l,i=Math.floor(r);return sN(n&&i==r?i-1:i,0,e-1)},d=lN,f=-1/0,p=!1,m=(e,t,n=[0,0])=>{let r=u(e,!1),i=u(t,!0),a=o[r],c=Math.max(s[i],a);return n[0]=a,n[1]=c,n};for(let e=i;e<a;){let t=e,i=n(e),c=r(e);for(e+=1;e<a&&n(e)===i&&r(e)===c;)e+=1;if(t>d)d=t;else{p=!0;break}if(i<f||c<i){p=!0;break}f=i;let l=u(i,!1),m=u(c,!0);for(let n=l;n<=m;n++)o[n]>t&&(o[n]=t),s[n]<e&&(s[n]=e)}if(p)return;for(let e=1;e<s.length;e++)s[e]<s[e-1]&&(s[e]=s[e-1]);let h=!0;for(let e=o.length-1;e>0;e--)h&&o[e]==cN?(o[e]=s[e],h=!1):o[e-1]>o[e]&&(o[e-1]=o[e]);return m}var dN=class{constructor({encoders:e,numVertices:t=void 0,attributes:n=[]}){this.encoders=e,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([e,t])=>n.includes(e)&&t&&!t.constant));let r=[...tN(e).entries()].filter(([e,t])=>e[1]&&t.length>1).map(([e,t])=>t);this.allocatedVertices=t,this.variableBuilder=new Qj(t),this.attributeNames={};for(let[e,t]of Object.entries(this.variableEncoders)){let n=Eh(t);if(!n)continue;let i=r.find(t=>t.find(t=>t==e)),a=n.asNumberAccessor(),o=t.scale,{largeHp:s,arrayConstructor:c,discrete:l,numComponents:u}=JM(o,e),d=[0,0],f;if(o&&l)if(`props`in o&&o.props.domainIndexer)f=o.props.domainIndexer;else if(`domain`in o)f=oN(),f.addAll(o.domain());else throw Error(`Missing domain indexer for discrete scale.`);let p=f?e=>f(n(e)):s?e=>QM(a(e),d):a,m=nN(i??e);for(let t of i??[e])this.attributeNames[t]=m;i&&e!=i[0]||this.variableBuilder.addConverter(m,{f:p,numComponents:u,arrayReference:s?d:void 0,targetArrayType:c})}let i=this.variableEncoders.x,a=this.variableEncoders.x2,o=this.encoders.x?.channelDef,s=i?.scale;if(o?.buildIndex&&i&&s&&ym(s.type)){let e=this.attributeNames.x;if(!e)throw Error(`Missing x attribute for x indexing.`);let t=a?.scale&&ym(a.scale.type)?this.attributeNames.x2??e:e;this.xIndexConfig={domain:[s.domain()[0],s.domain()[1]],xAttributeName:e,x2AttributeName:t}}else this.xIndexConfig=void 0;this.lastOffset=0,this.rangeMap=new gn([],JSON.stringify)}registerBatch(e){let t=this.lastOffset,n=this.variableBuilder.vertexCount,r=n-t;r&&this.rangeMap.set(e,{offset:t,count:r,xIndex:this.createXIndex(t,n)}),this.lastOffset=n}addBatches(e){for(let[t,n]of e)this.addBatch(t,n)}addBatch(e,t,n=0,r=t.length){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.pushFromDatum(n)}this.registerBatch(e)}createXIndex(e,t){let n=this.xIndexConfig;if(!n)return;let r=e=>{let{data:t,numComponents:n}=this.variableBuilder.arrays[e];return n==2?e=>{let r=e*n;return t[r]*ZM+t[r+1]}:e=>t[e*n]},i=r(n.xAttributeName),a=n.x2AttributeName==n.xAttributeName?i:r(n.x2AttributeName);return uN(50,n.domain,i,a,e,t)}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}},fN=class extends dN{constructor({encoders:e,attributes:t,numItems:n}){super({encoders:e,attributes:t,numVertices:n*6}),this.variableBuilder.configure();let r=this.variableBuilder.pushAll;this.pushAllSixTimes=n>500?Function(`pushAll`,`return function unrolledPushAllSixTimes() {
615
+ `)}function ON(){let e=0,t,n=0,r=new Map,i=i=>i===t?n:(n=r.get(i),n===void 0&&(n=e++,r.set(i,n)),t=i,n);return i.addAll=e=>{for(let t of e)i(t)},i.invert=e=>{for(let t of r.entries())if(t[1]==e)return t[0]},i.domain=()=>[...r.keys()],i}function kN(e,t=0,n=1){return Math.max(t,Math.min(n,e))}var AN=2**31-1,jN=-(2**31);function MN(e,t,n,r=n,i=0,a=i){if(a<=i||t[1]<=t[0])return;let o=Array(e);o.fill(AN);let s=Array(e);s.fill(0);let c=t[0],l=(t[1]-t[0])/e,u=(t,n)=>{let r=(t-c)/l,i=Math.floor(r);return kN(n&&i==r?i-1:i,0,e-1)},d=jN,f=-1/0,p=!1,m=(e,t,n=[0,0])=>{let r=u(e,!1),i=u(t,!0),a=o[r],c=Math.max(s[i],a);return n[0]=a,n[1]=c,n};for(let e=i;e<a;){let t=e,i=n(e),c=r(e);for(e+=1;e<a&&n(e)===i&&r(e)===c;)e+=1;if(t>d)d=t;else{p=!0;break}if(i<f||c<i){p=!0;break}f=i;let l=u(i,!1),m=u(c,!0);for(let n=l;n<=m;n++)o[n]>t&&(o[n]=t),s[n]<e&&(s[n]=e)}if(p)return;for(let e=1;e<s.length;e++)s[e]<s[e-1]&&(s[e]=s[e-1]);let h=!0;for(let e=o.length-1;e>0;e--)h&&o[e]==AN?(o[e]=s[e],h=!1):o[e-1]>o[e]&&(o[e-1]=o[e]);return m}var NN=class{constructor({encoders:e,numVertices:t=void 0,attributes:n=[]}){this.encoders=e,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([e,t])=>n.includes(e)&&t&&!t.constant));let r=[...CN(e).entries()].filter(([e,t])=>e[1]&&t.length>1).map(([e,t])=>t);this.allocatedVertices=t,this.variableBuilder=new bM(t),this.attributeNames={};for(let[e,t]of Object.entries(this.variableEncoders)){let n=wh(t);if(!n)continue;let i=r.find(t=>t.find(t=>t==e)),a=n.asNumberAccessor(),o=t.scale,{largeHp:s,arrayConstructor:c,discrete:l,numComponents:u}=gN(o,e),d=[0,0],f;if(o&&l)if(`props`in o&&o.props.domainIndexer)f=o.props.domainIndexer;else if(`domain`in o)f=ON(),f.addAll(o.domain());else throw Error(`Missing domain indexer for discrete scale.`);let p=f?e=>f(n(e)):s?e=>bN(a(e),d):a,m=wN(i??e);for(let t of i??[e])this.attributeNames[t]=m;i&&e!=i[0]||this.variableBuilder.addConverter(m,{f:p,numComponents:u,arrayReference:s?d:void 0,targetArrayType:c})}let i=this.variableEncoders.x,a=this.variableEncoders.x2,o=this.encoders.x?.channelDef,s=i?.scale;if(o?.buildIndex&&i&&s&&_m(s.type)){let e=this.attributeNames.x;if(!e)throw Error(`Missing x attribute for x indexing.`);let t=a?.scale&&_m(a.scale.type)?this.attributeNames.x2??e:e;this.xIndexConfig={domain:[s.domain()[0],s.domain()[1]],xAttributeName:e,x2AttributeName:t}}else this.xIndexConfig=void 0;this.lastOffset=0,this.rangeMap=new mn([],JSON.stringify)}registerBatch(e){let t=this.lastOffset,n=this.variableBuilder.vertexCount,r=n-t;r&&this.rangeMap.set(e,{offset:t,count:r,xIndex:this.createXIndex(t,n)}),this.lastOffset=n}addBatches(e){for(let[t,n]of e)this.addBatch(t,n)}addBatch(e,t,n=0,r=t.length){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.pushFromDatum(n)}this.registerBatch(e)}createXIndex(e,t){let n=this.xIndexConfig;if(!n)return;let r=e=>{let{data:t,numComponents:n}=this.variableBuilder.arrays[e];return n==2?e=>{let r=e*n;return t[r]*yN+t[r+1]}:e=>t[e*n]},i=r(n.xAttributeName),a=n.x2AttributeName==n.xAttributeName?i:r(n.x2AttributeName);return MN(50,n.domain,i,a,e,t)}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}},PN=class extends NN{constructor({encoders:e,attributes:t,numItems:n}){super({encoders:e,attributes:t,numVertices:n*6}),this.variableBuilder.configure();let r=this.variableBuilder.pushAll;this.pushAllSixTimes=n>500?Function(`pushAll`,`return function unrolledPushAllSixTimes() {
615
616
  pushAll(); pushAll(); pushAll(); pushAll(); pushAll(); pushAll();
616
- };`)(r):function(){r(),r(),r(),r(),r(),r()}}addBatch(e,t,n=0,r=t.length){if(!(r<=n)){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.updateFromDatum(n),this.pushAllSixTimes()}this.registerBatch(e)}}},pN=class extends dN{constructor({encoders:e,attributes:t,tessellationThreshold:n=1/0,visibleRange:r=[-1/0,1/0],numItems:i}){super({encoders:e,attributes:t,numVertices:n==1/0?i*6:void 0}),this.visibleRange=r,this.tessellationThreshold=n||1/0,this.updateSide=this.variableBuilder.createUpdater(`side`,1),this.updatePos=this.variableBuilder.createUpdater(`pos`,1),this.variableBuilder.configure()}addBatch(e,t,n=0,r=t.length){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.updateFromDatum(n),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();for(let e=0;e<=1;e++)this.updatePos(e/1),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll()}this.registerBatch(e)}},mN=class extends dN{constructor({encoders:e,attributes:t,numItems:n=void 0}){super({encoders:e,attributes:t,numVertices:n}),this.variableBuilder.configure()}addBatch(e,t,n=0,r=t.length){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.pushFromDatum(n)}this.registerBatch(e)}},hN=class extends dN{constructor({encoders:e,attributes:t,numItems:n=void 0}){super({encoders:e,attributes:t,numVertices:n}),this.variableBuilder.configure()}addBatch(e,t,n=0,r=t.length){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.pushFromDatum(n)}this.registerBatch(e)}toArrays(){let e=this.variableBuilder.arrays;for(let t of Object.values(e))t.divisor=1;return super.toArrays()}},gN=class extends dN{constructor({encoders:e,attributes:t,fontMetrics:n,properties:r,numCharacters:i=void 0}){super({encoders:e,attributes:t,numVertices:i*6}),this.metadata=n,this.metrics=n,this.properties=r;let a=e.text.channelDef;this.numberFormat=!kh(a)&&`format`in a&&a.format?cr(a.format):e=>e,this.updateVertexCoord=this.variableBuilder.createUpdater(`vertexCoord`,2),this.updateTextureCoord=this.variableBuilder.createUpdater(`textureCoord`,2),this.updateWidth=this.variableBuilder.createUpdater(`width`,1),this.variableBuilder.configure()}addBatch(e,t,n=0,r=t.length){let i=this.properties.align||`left`,a=this.properties.logoLetters??!1,o=this.metadata.common.base,s=this.metadata.common.scaleH,c=-5;switch(this.properties.baseline){case`top`:c+=this.metrics.capHeight;break;case`middle`:c+=this.metrics.capHeight/2;break;case`bottom`:c-=this.metrics.descent;break;default:}let l=this.encoders.text,u=[0,0];this.updateVertexCoord(u);let d=[0,0];this.updateTextureCoord(d);for(let e=n;e<r;e++){let n=t[e],r=this.numberFormat(l(n)),f=N(r)?r:r===null?``:``+r;if(f.length==0)continue;this.variableBuilder.updateFromDatum(n);let p=a?f.length:this.metrics.measureWidth(f);this.updateWidth(p);let m=i==`right`?-p:i==`center`?-p/2:0;if(!a){let e=this.metrics.getCharByCode(f.charCodeAt(0));m-=(e.width-e.xadvance)/o/2}let h,g,_;for(let e=0;e<f.length;e++){let t=this.metrics.getCharByCode(f.charCodeAt(e)),n=a?1:t.xadvance/o;if(t.id==32){m+=n;continue}a?(_=(t.width+10)/t.width,m=-_/2,g=(t.height+10)/t.height,h=-.5-5/t.height):(g=t.height/o,h=-(t.height+t.yoffset+c)/o,_=t.width/o);let r=t.x,i=t.y;u[0]=m,u[1]=h+g,d[0]=r/s,d[1]=i/s,this.variableBuilder.pushAll(),u[0]=m+_,u[1]=h+g,d[0]=(r+t.width)/s,d[1]=i/s,this.variableBuilder.pushAll(),u[0]=m,u[1]=h,d[0]=r/s,d[1]=(i+t.height)/s,this.variableBuilder.pushAll(),u[0]=m+_,u[1]=h+g,d[0]=(r+t.width)/s,d[1]=i/s,this.variableBuilder.pushAll(),u[0]=m,u[1]=h,d[0]=r/s,d[1]=(i+t.height)/s,this.variableBuilder.pushAll(),u[0]=m+_,u[1]=h,d[0]=(r+t.width)/s,d[1]=(i+t.height)/s,this.variableBuilder.pushAll(),m+=n}}this.registerBatch(e)}},_N=`#define PI 3.141593
617
- uniform View{mediump vec2 uViewOffset;mediump vec2 uViewScale;mediump vec2 uViewportSize;lowp float uDevicePixelRatio;lowp float uViewOpacity;bool uPickingEnabled;};/***Maps a coordinate on the unit scale to a normalized device coordinate.*(0,0)is at the bottom left corner.*/vec4 unitToNdc(vec2 coord){return vec4((coord*uViewScale+uViewOffset)*2.0-1.0,0.0,1.0);}vec4 unitToNdc(float x,float y){return unitToNdc(vec2(x,y));}vec4 pixelsToNdc(vec2 coord){return unitToNdc(coord/uViewportSize);}vec4 pixelsToNdc(float x,float y){return pixelsToNdc(vec2(x,y));}float linearstep(float edge0,float edge1,float x){return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}const highp uint HASH_EMPTY_KEY=0xffffffffu;highp uint hash32(highp uint key){highp uint v=key;v ^=v>>16u;v*=0x7feb352du;v ^=v>>15u;v*=0x846ca68bu;v ^=v>>16u;return v;}bool isEmptyHashTexture(highp usampler2D s){ivec2 texSize=textureSize(s,0);return texSize.x==1&&texSize.y==1&&texelFetch(s,ivec2(0,0),0).r==HASH_EMPTY_KEY;}bool hashContainsTexture(highp usampler2D s,highp uint value){ivec2 texSize=textureSize(s,0);highp uint width=uint(texSize.x);highp uint size=width*uint(texSize.y);highp uint mask=size-1u;highp uint index=hash32(value)&mask;for(highp uint probe=0u;probe<size;probe+=1u){ivec2 coord=ivec2(int(index % width),int(index/width));highp uint entry=texelFetch(s,coord,0).r;if(entry==value){return true;}if(entry==HASH_EMPTY_KEY){return false;}index=(index+1u)&mask;}return false;}/***Calculates a gamma for antialiasing opacity based on the color.*/float getGammaForColor(vec3 rgb){return mix(1.25,0.75,smoothstep(0.0,1.0,dot(rgb,vec3(0.299,0.587,0.114))));}/***Specialized linearstep for doing antialiasing*/float distanceToRatio(float d){return clamp(d*uDevicePixelRatio+0.5,0.0,1.0);}vec4 distanceToColor(float d,vec4 fill,vec4 stroke,vec4 background,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : background,distanceToRatio(sd));}else{return mix(background,fill,distanceToRatio(-d));}}`,vN=`uniform highp float uZero;vec3 getDiscreteColor(sampler2D s,int index){return texelFetch(s,ivec2(index % textureSize(s,0).x,0),0).rgb;}vec3 getInterpolatedColor(sampler2D s,float unitValue){return texture(s,vec2(unitValue,0.0)).rgb;}float clampToRange(float value,vec2 range){return clamp(value,min(range[0],range[1]),max(range[0],range[1]));}float scaleIdentity(float value){return value;}float scaleIdentity(uint value){return float(value);}float scaleLinear(float value,vec2 domain,vec2 range){float domainSpan=domain[1]-domain[0];float rangeSpan=range[1]-range[0];return(value-domain[0])/domainSpan*rangeSpan+range[0];}float scaleLog(float value,vec2 domain,vec2 range,float base){return scaleLinear(log(value)/log(base),log(domain)/log(base),range);}float symlog(float value,float constant){return sign(value)*log(abs(value/constant)+1.0);}float scaleSymlog(float value,vec2 domain,vec2 range,float constant){return scaleLinear(symlog(value,constant),vec2(symlog(domain[0],constant),symlog(domain[1],constant)),range);}float scalePow(float value,vec2 domain,vec2 range,float exponent){return scaleLinear(pow(abs(value),exponent)*sign(value),pow(abs(domain),vec2(exponent))*sign(domain),range);}float scaleBand(uint value,vec2 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;float n=domainExtent[1]-domainExtent[0];paddingInner=int(n)>1 ? paddingInner : 0.0;float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);return start+(float(value)-domainExtent[0])*step+bandwidth*band;}const int lowBits=12;const float lowDivisor=pow(2.0,float(lowBits));const uint lowMask=uint(lowDivisor-1.0);vec2 splitUint(uint value){uint valueLo=value&lowMask;uint valueHi=value-valueLo;return vec2(float(valueHi),float(valueLo));}/***High precision variant of scaleBand for index/locus scales*/float scaleBandHp(uint value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);vec2 splitValue=splitUint(value);float inf=1.0/uZero;float hi=max(splitValue[0]-domainStart[0],-inf);float lo=max(splitValue[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}/***High precision variant of scaleBand for index/locus scales for large*domains where 32bit uints are not sufficient to represent the domain.*/float scaleBandHp(uvec2 value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);vec2 splitValue=vec2(float(value[0])*lowDivisor,float(value[1]));float inf=1.0/uZero;float hi=max(splitValue[0]-domainStart[0],-inf);float lo=max(splitValue[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}`,yN=`/***Describes where a sample facet should be shown. Interpolating between the*current and target positions/heights allows for transitioning between facet*configurations.*/struct SampleFacetPosition{float pos;float height;float targetPos;float targetHeight;};/***Trasition fraction[0,1]between the current and target configurations.*/uniform float uTransitionOffset;
617
+ };`)(r):function(){r(),r(),r(),r(),r(),r()}}addBatch(e,t,n=0,r=t.length){if(!(r<=n)){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.updateFromDatum(n),this.pushAllSixTimes()}this.registerBatch(e)}}},FN=class extends NN{constructor({encoders:e,attributes:t,tessellationThreshold:n=1/0,visibleRange:r=[-1/0,1/0],numItems:i}){super({encoders:e,attributes:t,numVertices:n==1/0?i*6:void 0}),this.visibleRange=r,this.tessellationThreshold=n||1/0,this.updateSide=this.variableBuilder.createUpdater(`side`,1),this.updatePos=this.variableBuilder.createUpdater(`pos`,1),this.variableBuilder.configure()}addBatch(e,t,n=0,r=t.length){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.updateFromDatum(n),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();for(let e=0;e<=1;e++)this.updatePos(e/1),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll()}this.registerBatch(e)}},IN=class extends NN{constructor({encoders:e,attributes:t,numItems:n=void 0}){super({encoders:e,attributes:t,numVertices:n}),this.variableBuilder.configure()}addBatch(e,t,n=0,r=t.length){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.pushFromDatum(n)}this.registerBatch(e)}},LN=class extends NN{constructor({encoders:e,attributes:t,numItems:n=void 0}){super({encoders:e,attributes:t,numVertices:n}),this.variableBuilder.configure()}addBatch(e,t,n=0,r=t.length){for(let e=n;e<r;e++){let n=t[e];this.variableBuilder.pushFromDatum(n)}this.registerBatch(e)}toArrays(){let e=this.variableBuilder.arrays;for(let t of Object.values(e))t.divisor=1;return super.toArrays()}},RN=class extends NN{constructor({encoders:e,attributes:t,fontMetrics:n,properties:r,numCharacters:i=void 0}){super({encoders:e,attributes:t,numVertices:i*6}),this.metadata=n,this.metrics=n,this.properties=r;let a=e.text.channelDef;this.numberFormat=!Dh(a)&&`format`in a&&a.format?or(a.format):e=>e,this.updateVertexCoord=this.variableBuilder.createUpdater(`vertexCoord`,2),this.updateTextureCoord=this.variableBuilder.createUpdater(`textureCoord`,2),this.updateWidth=this.variableBuilder.createUpdater(`width`,1),this.variableBuilder.configure()}addBatch(e,t,n=0,r=t.length){let i=this.properties.align||`left`,a=this.properties.logoLetters??!1,o=this.metadata.common.base,s=this.metadata.common.scaleH,c=-5;switch(this.properties.baseline){case`top`:c+=this.metrics.capHeight;break;case`middle`:c+=this.metrics.capHeight/2;break;case`bottom`:c-=this.metrics.descent;break;default:}let l=this.encoders.text,u=[0,0];this.updateVertexCoord(u);let d=[0,0];this.updateTextureCoord(d);for(let e=n;e<r;e++){let n=t[e],r=this.numberFormat(l(n)),f=F(r)?r:r===null?``:``+r;if(f.length==0)continue;this.variableBuilder.updateFromDatum(n);let p=a?f.length:this.metrics.measureWidth(f);this.updateWidth(p);let m=i==`right`?-p:i==`center`?-p/2:0;if(!a){let e=this.metrics.getCharByCode(f.charCodeAt(0));m-=(e.width-e.xadvance)/o/2}let h,g,_;for(let e=0;e<f.length;e++){let t=this.metrics.getCharByCode(f.charCodeAt(e)),n=a?1:t.xadvance/o;if(t.id==32){m+=n;continue}a?(_=(t.width+10)/t.width,m=-_/2,g=(t.height+10)/t.height,h=-.5-5/t.height):(g=t.height/o,h=-(t.height+t.yoffset+c)/o,_=t.width/o);let r=t.x,i=t.y;u[0]=m,u[1]=h+g,d[0]=r/s,d[1]=i/s,this.variableBuilder.pushAll(),u[0]=m+_,u[1]=h+g,d[0]=(r+t.width)/s,d[1]=i/s,this.variableBuilder.pushAll(),u[0]=m,u[1]=h,d[0]=r/s,d[1]=(i+t.height)/s,this.variableBuilder.pushAll(),u[0]=m+_,u[1]=h+g,d[0]=(r+t.width)/s,d[1]=i/s,this.variableBuilder.pushAll(),u[0]=m,u[1]=h,d[0]=r/s,d[1]=(i+t.height)/s,this.variableBuilder.pushAll(),u[0]=m+_,u[1]=h,d[0]=(r+t.width)/s,d[1]=(i+t.height)/s,this.variableBuilder.pushAll(),m+=n}}this.registerBatch(e)}},zN=`#define PI 3.141593
618
+ uniform View{mediump vec2 uViewOffset;mediump vec2 uViewScale;mediump vec2 uViewportSize;lowp float uDevicePixelRatio;lowp float uViewOpacity;bool uPickingEnabled;};/***Maps a coordinate on the unit scale to a normalized device coordinate.*(0,0)is at the bottom left corner.*/vec4 unitToNdc(vec2 coord){return vec4((coord*uViewScale+uViewOffset)*2.0-1.0,0.0,1.0);}vec4 unitToNdc(float x,float y){return unitToNdc(vec2(x,y));}vec4 pixelsToNdc(vec2 coord){return unitToNdc(coord/uViewportSize);}vec4 pixelsToNdc(float x,float y){return pixelsToNdc(vec2(x,y));}float linearstep(float edge0,float edge1,float x){return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}const highp uint HASH_EMPTY_KEY=0xffffffffu;highp uint hash32(highp uint key){highp uint v=key;v ^=v>>16u;v*=0x7feb352du;v ^=v>>15u;v*=0x846ca68bu;v ^=v>>16u;return v;}bool isEmptyHashTexture(highp usampler2D s){ivec2 texSize=textureSize(s,0);return texSize.x==1&&texSize.y==1&&texelFetch(s,ivec2(0,0),0).r==HASH_EMPTY_KEY;}bool hashContainsTexture(highp usampler2D s,highp uint value){ivec2 texSize=textureSize(s,0);highp uint width=uint(texSize.x);highp uint size=width*uint(texSize.y);highp uint mask=size-1u;highp uint index=hash32(value)&mask;for(highp uint probe=0u;probe<size;probe+=1u){ivec2 coord=ivec2(int(index % width),int(index/width));highp uint entry=texelFetch(s,coord,0).r;if(entry==value){return true;}if(entry==HASH_EMPTY_KEY){return false;}index=(index+1u)&mask;}return false;}/***Calculates a gamma for antialiasing opacity based on the color.*/float getGammaForColor(vec3 rgb){return mix(1.25,0.75,smoothstep(0.0,1.0,dot(rgb,vec3(0.299,0.587,0.114))));}/***Specialized linearstep for doing antialiasing*/float distanceToRatio(float d){return clamp(d*uDevicePixelRatio+0.5,0.0,1.0);}vec4 distanceToColor(float d,vec4 fill,vec4 stroke,vec4 background,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : background,distanceToRatio(sd));}else{return mix(background,fill,distanceToRatio(-d));}}`,BN=`uniform highp float uZero;vec3 getDiscreteColor(sampler2D s,int index){return texelFetch(s,ivec2(index % textureSize(s,0).x,0),0).rgb;}vec3 getInterpolatedColor(sampler2D s,float unitValue){return texture(s,vec2(unitValue,0.0)).rgb;}float clampToRange(float value,vec2 range){return clamp(value,min(range[0],range[1]),max(range[0],range[1]));}float scaleIdentity(float value){return value;}float scaleIdentity(uint value){return float(value);}float scaleLinear(float value,vec2 domain,vec2 range){float domainSpan=domain[1]-domain[0];float rangeSpan=range[1]-range[0];return(value-domain[0])/domainSpan*rangeSpan+range[0];}float scaleLog(float value,vec2 domain,vec2 range,float base){return scaleLinear(log(value)/log(base),log(domain)/log(base),range);}float symlog(float value,float constant){return sign(value)*log(abs(value/constant)+1.0);}float scaleSymlog(float value,vec2 domain,vec2 range,float constant){return scaleLinear(symlog(value,constant),vec2(symlog(domain[0],constant),symlog(domain[1],constant)),range);}float scalePow(float value,vec2 domain,vec2 range,float exponent){return scaleLinear(pow(abs(value),exponent)*sign(value),pow(abs(domain),vec2(exponent))*sign(domain),range);}float scaleBand(uint value,vec2 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;float n=domainExtent[1]-domainExtent[0];paddingInner=int(n)>1 ? paddingInner : 0.0;float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);return start+(float(value)-domainExtent[0])*step+bandwidth*band;}const int lowBits=12;const float lowDivisor=pow(2.0,float(lowBits));const uint lowMask=uint(lowDivisor-1.0);vec2 splitUint(uint value){uint valueLo=value&lowMask;uint valueHi=value-valueLo;return vec2(float(valueHi),float(valueLo));}/***High precision variant of scaleBand for index/locus scales*/float scaleBandHp(uint value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);vec2 splitValue=splitUint(value);float inf=1.0/uZero;float hi=max(splitValue[0]-domainStart[0],-inf);float lo=max(splitValue[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}/***High precision variant of scaleBand for index/locus scales for large*domains where 32bit uints are not sufficient to represent the domain.*/float scaleBandHp(uvec2 value,vec3 domainExtent,vec2 range,float paddingInner,float paddingOuter,float align,float band){float start=range[0];float stop=range[1];float rangeSpan=stop-start;vec2 domainStart=domainExtent.xy;float n=domainExtent[2];float step=rangeSpan/max(1.0,n-paddingInner+paddingOuter*2.0);start+=(rangeSpan-step*(n-paddingInner))*align;float bandwidth=step*(1.0-paddingInner);vec2 splitValue=vec2(float(value[0])*lowDivisor,float(value[1]));float inf=1.0/uZero;float hi=max(splitValue[0]-domainStart[0],-inf);float lo=max(splitValue[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}`,VN=`/***Describes where a sample facet should be shown. Interpolating between the*current and target positions/heights allows for transitioning between facet*configurations.*/struct SampleFacetPosition{float pos;float height;float targetPos;float targetHeight;};/***Trasition fraction[0,1]between the current and target configurations.*/uniform float uTransitionOffset;
618
619
  #if !defined(SAMPLE_FACET_UNIFORM) && !defined(SAMPLE_FACET_TEXTURE)
619
620
  SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1.0);}
620
621
  #elif defined(SAMPLE_FACET_UNIFORM)
@@ -622,30 +623,30 @@ SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1
622
623
  #elif defined(SAMPLE_FACET_TEXTURE)
623
624
  uniform sampler2D uSampleFacetTexture;SampleFacetPosition getSampleFacetPos(){vec4 texel=texelFetch(uSampleFacetTexture,ivec2(int(attr_facetIndex),0),0);return SampleFacetPosition(1.0-texel.r-texel.g,texel.g,1.0-texel.r-texel.g,texel.g);}
624
625
  #endif
625
- bool isFacetedSamples(SampleFacetPosition facetPos){return facetPos!=SampleFacetPosition(0.0,1.0,0.0,1.0);}bool isFacetedSamples(){return isFacetedSamples(getSampleFacetPos());}bool isInTransit(){return uTransitionOffset>0.0;}float getTransitionFraction(float xPos){return smoothstep(0.0,0.7+uTransitionOffset,(xPos-uTransitionOffset)*2.0);}vec2 applySampleFacet(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return pos;}else if(isInTransit()){vec2 interpolated=mix(vec2(facetPos.pos,facetPos.height),vec2(facetPos.targetPos,facetPos.targetHeight),getTransitionFraction(pos.x));return vec2(pos.x,interpolated[0]+pos.y*interpolated[1]);}else{return vec2(pos.x,facetPos.pos+pos.y*facetPos.height);}}float getSampleFacetHeight(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return 1.0;}else if(isInTransit()){return mix(facetPos.height,facetPos.targetHeight,getTransitionFraction(pos.x));}else{return facetPos.height;}}`,bN=`/**Based on concepts presented at:*https:*https:*/out highp vec4 vPickingColor;/***Passes the unique id to the fragment shader as a color if picking is enabled.*Returns true if picking is enabled.*/bool setupPicking(){if(uPickingEnabled){
626
+ bool isFacetedSamples(SampleFacetPosition facetPos){return facetPos!=SampleFacetPosition(0.0,1.0,0.0,1.0);}bool isFacetedSamples(){return isFacetedSamples(getSampleFacetPos());}bool isInTransit(){return uTransitionOffset>0.0;}float getTransitionFraction(float xPos){return smoothstep(0.0,0.7+uTransitionOffset,(xPos-uTransitionOffset)*2.0);}vec2 applySampleFacet(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return pos;}else if(isInTransit()){vec2 interpolated=mix(vec2(facetPos.pos,facetPos.height),vec2(facetPos.targetPos,facetPos.targetHeight),getTransitionFraction(pos.x));return vec2(pos.x,interpolated[0]+pos.y*interpolated[1]);}else{return vec2(pos.x,facetPos.pos+pos.y*facetPos.height);}}float getSampleFacetHeight(vec2 pos){SampleFacetPosition facetPos=getSampleFacetPos();if(!isFacetedSamples(facetPos)){return 1.0;}else if(isInTransit()){return mix(facetPos.height,facetPos.targetHeight,getTransitionFraction(pos.x));}else{return facetPos.height;}}`,HN=`/**Based on concepts presented at:*https:*https:*/out highp vec4 vPickingColor;/***Passes the unique id to the fragment shader as a color if picking is enabled.*Returns true if picking is enabled.*/bool setupPicking(){if(uPickingEnabled){
626
627
  #ifdef uniqueId_DEFINED
627
628
  uint id=attr_uniqueId;vPickingColor=vec4(ivec4(id>>0,id>>8,id>>16,id>>24)&0xFF)/float(0xFF);
628
629
  #else
629
630
  vPickingColor=vec4(1.0);
630
631
  #endif
631
- return true;}return false;}`,xN=`in highp vec4 vPickingColor;`,SN=Symbol(`cacheMap`);function CN(e,t,n){let r=DN(e).get(t);return r===void 0&&(r=n(t),DN(e).set(t,r)),r}function wN(e,t){DN(e).delete(t)}function TN(e,t){let n=DN(e);for(let e of n.keys())e.startsWith(t)&&n.delete(e);DN(e).delete(t)}function EN(e){e[SN]=new Map}function DN(e){return e[SN]||EN(e),e[SN]}function ON(...e){return new Proxy({},{get(t,n,r){for(let t of e){let e=t()[n];if(e!==void 0)return e}},has(t,n,r){for(let t of e)if(n in t())return!0;return!1}})}function kN(e){return N(e)||M(e)||Ct(e)}var AN=class extends Error{constructor(e,t){super(e),this.name=`ViewError`,this.view=t}};function jN(e){return $e(e)&&!Array.isArray(e)}function MN(e){let t={};for(let[n,r]of Object.entries(e))t[n]=NN(r);return t}function NN(e){return Array.isArray(e)?e.map(NN):jN(e)?MN(e):e}function PN(e,t){for(let[n,r]of Object.entries(t)){if(r===void 0)continue;let t=e[n];jN(r)&&jN(t)?PN(t,r):e[n]=NN(r)}return e}function FN(e){let t={};for(let n of e)n&&PN(t,n);return t}function IN(e){return e?Array.isArray(e)?e:[e]:[]}function LN(e,t,n){let r=[t,...IN(n)];return FN(e.flatMap(e=>[e.mark,e[t],...r.map(t=>e.style?.[t])]))}var RN=`SAMPLE_FACET_UNIFORM`,zN=`SAMPLE_FACET_TEXTURE`,BN=`uSelectionTexture_`,VN=class{#e=[];constructor(e){this.unitView=e;let t=this;this.encoders=void 0,this.bufferInfo=void 0,this.bytesPerElement=new Map,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.viewUniformInfo=void 0,this.markUniformInfo=void 0,this.markUniformsAltered=!0,this.selectionTextureOps=[],this.rangeMap=new HN,this.defaultProperties={get clip(){return CN(t,`defaultClip`,()=>{for(let t of[`x`,`y`])if(e.getScaleResolution(t)?.isZoomable())return!0;return!1})},xOffset:0,yOffset:0,minBufferSize:0,...LN(this.unitView.getConfigScopes(),this.unitView.getMarkType(),typeof this.unitView.spec.mark==`object`?this.unitView.spec.mark.style:void 0)},this.properties=ON(typeof this.unitView.spec.mark==`object`?()=>this.unitView.spec.mark:()=>({}),()=>this.defaultProperties)}augmentDefaultProperties(e){Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors(e))}getCursorSpec(){return this.properties.cursor}getCursor(){let e=this.getCursorSpec();return R(e)?this.unitView.paramRuntime.evaluateAndGet(e.expr):e}watchCursor(e,t){let n=this.getCursorSpec();R(n)&&this.unitView.paramRuntime.watchExpression(n.expr,e,{scopeOwned:!1,registerDisposer:t})}get opaque(){return!1}get defaultHitTestMode(){return`intersects`}getAttributes(){throw Error(`Not implemented!`)}getSupportedChannels(){return[`sample`,`facetIndex`,`x`,`y`,`color`,`opacity`,`search`,`uniqueId`]}getDefaultEncoding(){let e={sample:void 0,uniqueId:void 0};return this.isPickingParticipant()&&(e.uniqueId={field:ch}),e}fixEncoding(e){return e}setupExprRefsNeedingGraphicsUpdate(e){let t=this.getSupportedChannels(),n={};for(let r of e){let e=this.properties[r];if(e&&R(e)){let i=this.unitView.paramRuntime.watchExpression(e.expr,()=>{this.updateGraphicsData(),this.unitView.context.animator.requestRender()});t.includes(r)||Object.defineProperty(n,r,{get(){return i()}})}}let r=this.properties;this.properties=ON(()=>n,()=>r)}get encoding(){return CN(this,`encoding`,()=>{let e=this.getDefaultEncoding(),t=this.unitView.getEncoding(),n=e=>{let t=this.properties[e];return kN(t)||R(t)?{value:t}:void 0},r=Object.fromEntries(this.getSupportedChannels().map(e=>[e,n(e)]).filter(e=>kh(e[1]))),i=this.fixEncoding({...e,...r,...t});for(let e of Object.keys(i))this.getSupportedChannels().includes(e)||delete i[e];return i.x&&(i.x.buildIndex??=this.properties.buildIndex??!0),i})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=Ch(this.unitView,this.encoding)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return zN;if(this.unitView.getLayoutAncestors().find(e=>`samples`in e.spec))return RN}createAndLinkShaders(e,t,n=[]){let r=this.getAttributes(),i=this.encoders,a=this.getSampleFacetMode();a&&n.push(`#define ${a}`);let o=`// view: `+this.unitView.getPathString(),s=[],c=new Set,l=tN(i),u=[],d=Object.values(i).flatMap(e=>e.branches??[]).map(e=>e.predicate).filter(e=>e.param),f=new Map;for(let e of d){let t=e.param,n=this.unitView.paramRuntime,r=n.findValue(t);if(!r)throw Error(`Cannot infer selection type as the parameter "${t}" has no value. Please ensure that the parameter is properly defined!`);let i=nN(`uniqueId`);if(og(r)){if(!f.has(t)){f.set(t,`single`);let e=AM+_g(t);u.push(` // Selection parameter`),u.push(` uniform highp uint ${e};`),this.#e.push(()=>{this.registerMarkUniformValue(e,{expr:t},e=>e.uniqueId??0)}),s.push(`bool ${jM}${t}(bool empty) {\n return ${AM}${t} == ${i} || (empty && ${AM}${t} == 0u);\n}`)}}else if(sg(r)){if(!f.has(t)){f.set(t,`multi`);let e=BN+_g(t);s.push(`// Selection texture\nuniform highp usampler2D ${e};`);let a=this.getContext().glHelper,o=a.selectionTextures;this.selectionTextureOps.push(()=>{let r=n.getValue(t),i=o.get(r);if(!i)throw Error(`Bug: no selection texture found for "${t}"!`);ej(this.programInfo,{[e]:i})});let c=BN+t;s.push(`bool ${jM}${t}(bool empty) {\n return hashContainsTexture(${c}, ${i}) || (empty && isEmptyHashTexture(${c}));\n}`),a.createSelectionTexture(r),n.watchExpression(t,()=>{let e=n.getValue(t);a.createSelectionTexture(e),this.getContext().animator.requestRender()})}}else if(ag(r)&&!f.has(t)){f.set(t,`interval`);let e=[],n=[];for(let i of Object.keys(r.intervals)){if(![`x`,`y`].includes(i))continue;let r=AM+_g(t)+`_${i}`,{attributeType:a}=JM(this.unitView.getScaleResolution(i).getScale(),i);u.push(` // Selection parameter`),u.push(` uniform highp ${a}[2] ${r};`),this.#e.push(()=>{this.registerMarkUniformValue(r,{expr:t},e=>e.intervals[i]??[1,0])});let o=e=>{for(let[t,n]of l.entries())if(t[1]&&n.includes(e))return nN(n);return nN(e)},s=o(i),c=r+`[0]`,d=r+`[1]`,f=qh(i);if(this.encoding[f]){let t=o(f),n=this.defaultHitTestMode;if(n==`endpoints`)e.push(`((${c} <= ${s} && ${s} <= ${d}) || (${c} <= ${t} && ${t} <= ${d}))`);else if(n==`encloses`)e.push(`(${c} <= ${s} && ${t} <= ${d})`);else if(n==`intersects`)e.push(`(${c} <= ${t} && ${s} <= ${d})`);else throw new AN(`Unsupported hit test mode "${n}" for interval selection!`,this.unitView)}else e.push(`(${c} <= ${s} && ${s} <= ${d})`);n.push(`${c} > ${d}`)}s.push(`bool ${jM}${t}(bool empty) {\n return ${e.join(` && `)} || (empty && (${n.join(` || `)}));\n}`)}}let p=(e,t,n,r)=>{let i=t.channelDef;if(kh(i))if(R(i.value)){let{uniformName:t,uniformGlsl:r,accessorGlsl:a,adjuster:o}=IM(e,n);s.push(a),u.push(r),this.#e.push(()=>{this.registerMarkUniformValue(t,i.value,o)})}else s.push(FM(e,n,i.value).accessorGlsl);else if(jh(i)){let{uniformName:t,uniformGlsl:a,accessorGlsl:o}=RM(e,r,n);u.push(a),s.push(o);let{largeHp:c,discrete:l}=JM(r,e),d=l&&`domain`in r?e=>r.domain().indexOf(e):c?QM:e=>+e;this.#e.push(()=>{this.registerMarkUniformValue(t,i.datum,d)})}else if(Ah(i)){let t=l.get([i.field,!0]),{attributeGlsl:a,accessorGlsl:o}=LM(e,r,n,t?.includes(e)?t:void 0);c.add(a),s.push(o)}else if(Ih(i)){let{attributeGlsl:t,accessorGlsl:i}=LM(e,r,n);c.add(t),s.push(i)}else throw new AN(`Unsupported channel definition: ${JSON.stringify(i)}`,this.unitView)};for(let[e,t]of Object.entries(i)){if(!r.includes(e))continue;let{branches:n,channelDef:i,scale:a}=t;for(let t=0;t<n.length;t++)p(e,n[t].accessor,t,a);if(a){let t=Nh(i),n=t&&t.resolutionChannel||e,r=Zh(n)?this.unitView.getScaleResolution(n):null,{glsl:o,domainUniform:c,domainUniformName:l,rangeUniform:d,rangeUniformName:f}=zM(e,a,i);s.push(o),u.push(c),u.push(d),d&&this.#e.push(()=>{let t=this.createMarkUniformSetter(f),n=()=>t(iN(a,e));r.addEventListener(`range`,n),n()}),c&&this.#e.push(()=>{let e=this.createMarkUniformSetter(l),t=()=>{let t=bm(a.type)?[0,a.domain().length]:a.domain();e(YM(a.type)?eN(t):t)};r.addEventListener(`domain`,t),t()})}s.push(BM(e,n))}let m=[...f.keys()].map(e=>`${jM}${e}(false)`);s.push(`bool isPointSelected() {
632
+ return true;}return false;}`,UN=`in highp vec4 vPickingColor;`,WN=Symbol(`cacheMap`);function GN(e,t,n){let r=YN(e).get(t);return r===void 0&&(r=n(t),YN(e).set(t,r)),r}function KN(e,t){YN(e).delete(t)}function qN(e,t){let n=YN(e);for(let e of n.keys())e.startsWith(t)&&n.delete(e);YN(e).delete(t)}function JN(e){e[WN]=new Map}function YN(e){return e[WN]||JN(e),e[WN]}function XN(...e){return new Proxy({},{get(t,n,r){for(let t of e){let e=t()[n];if(e!==void 0)return e}},has(t,n,r){for(let t of e)if(n in t())return!0;return!1}})}function ZN(e){return F(e)||P(e)||xt(e)}var QN=class extends Error{constructor(e,t){super(e),this.name=`ViewError`,this.view=t}};function $N(e){return Ze(e)&&!Array.isArray(e)}function eP(e){let t={};for(let[n,r]of Object.entries(e))t[n]=tP(r);return t}function tP(e){return Array.isArray(e)?e.map(tP):$N(e)?eP(e):e}function nP(e,t){for(let[n,r]of Object.entries(t)){if(r===void 0)continue;let t=e[n];$N(r)&&$N(t)?nP(t,r):e[n]=tP(r)}return e}function rP(e){let t={};for(let n of e)n&&nP(t,n);return t}function iP(e){return e?Array.isArray(e)?e:[e]:[]}function aP(e,t,n){let r=[t,...iP(n)],i=e.map(e=>e.mark),a=e.map(e=>e[t]);return rP([...i,...a,...e.flatMap(e=>r.map(t=>e.style?.[t]))])}var oP=`SAMPLE_FACET_UNIFORM`,sP=`SAMPLE_FACET_TEXTURE`,cP=`uSelectionTexture_`,lP=class{#e=[];constructor(e){this.unitView=e;let t=this;this.encoders=void 0,this.bufferInfo=void 0,this.bytesPerElement=new Map,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.viewUniformInfo=void 0,this.markUniformInfo=void 0,this.markUniformsAltered=!0,this.selectionTextureOps=[],this.rangeMap=new uP,this.defaultProperties={get clip(){return GN(t,`defaultClip`,()=>{for(let t of[`x`,`y`])if(e.getScaleResolution(t)?.isZoomable())return!0;return!1})},xOffset:0,yOffset:0,minBufferSize:0,...aP(this.unitView.getConfigScopes(),this.unitView.getMarkType(),typeof this.unitView.spec.mark==`object`?this.unitView.spec.mark.style:void 0)},this.properties=XN(typeof this.unitView.spec.mark==`object`?()=>this.unitView.spec.mark:()=>({}),()=>this.defaultProperties)}augmentDefaultProperties(e){Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors(e))}getCursorSpec(){return this.properties.cursor}getCursor(){let e=this.getCursorSpec();return B(e)?this.unitView.paramRuntime.evaluateAndGet(e.expr):e}watchCursor(e,t){let n=this.getCursorSpec();B(n)&&this.unitView.paramRuntime.watchExpression(n.expr,e,{scopeOwned:!1,registerDisposer:t})}get opaque(){return!1}get defaultHitTestMode(){return`intersects`}getAttributes(){throw Error(`Not implemented!`)}getSupportedChannels(){return[`sample`,`facetIndex`,`x`,`y`,`color`,`opacity`,`search`,`uniqueId`]}getDefaultEncoding(){let e={sample:void 0,uniqueId:void 0};return this.isPickingParticipant()&&(e.uniqueId={field:oh}),e}fixEncoding(e){return e}setupExprRefsNeedingGraphicsUpdate(e){let t=this.getSupportedChannels(),n={};for(let r of e){let e=this.properties[r];if(e&&B(e)){let i=this.unitView.paramRuntime.watchExpression(e.expr,()=>{this.updateGraphicsData(),this.unitView.context.animator.requestRender()});t.includes(r)||Object.defineProperty(n,r,{get(){return i()}})}}let r=this.properties;this.properties=XN(()=>n,()=>r)}get encoding(){return GN(this,`encoding`,()=>{let e=this.getDefaultEncoding(),t=this.unitView.getEncoding(),n=e=>{let t=this.properties[e];return ZN(t)||B(t)?{value:t}:void 0},r=Object.fromEntries(this.getSupportedChannels().map(e=>[e,n(e)]).filter(e=>Dh(e[1]))),i=this.fixEncoding({...e,...r,...t});for(let e of Object.keys(i))this.getSupportedChannels().includes(e)||delete i[e];return i.x&&(i.x.buildIndex??=this.properties.buildIndex??!0),i})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=xh(this.unitView,this.encoding)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return sP;if(this.unitView.getLayoutAncestors().find(e=>`samples`in e.spec))return oP}createAndLinkShaders(e,t,n=[]){let r=this.getAttributes(),i=this.encoders,a=this.getSampleFacetMode();a&&n.push(`#define ${a}`);let o=`// view: `+this.unitView.getPathString(),s=[],c=new Set,l=CN(i),u=[],d=Object.values(i).flatMap(e=>e.branches??[]).map(e=>e.predicate).filter(e=>e.param),f=new Map;for(let e of d){let t=e.param,n=this.unitView.paramRuntime,r=n.findValue(t);if(!r)throw Error(`Cannot infer selection type as the parameter "${t}" has no value. Please ensure that the parameter is properly defined!`);let i=wN(`uniqueId`);if(ig(r)){if(!f.has(t)){f.set(t,`single`);let e=QM+hg(t);u.push(` // Selection parameter`),u.push(` uniform highp uint ${e};`),this.#e.push(()=>{this.registerMarkUniformValue(e,{expr:t},e=>e.uniqueId??0)}),s.push(`bool ${$M}${t}(bool empty) {\n return ${QM}${t} == ${i} || (empty && ${QM}${t} == 0u);\n}`)}}else if(ag(r)){if(!f.has(t)){f.set(t,`multi`);let e=cP+hg(t);s.push(`// Selection texture\nuniform highp usampler2D ${e};`);let a=this.getContext().glHelper,o=a.selectionTextures;this.selectionTextureOps.push(()=>{let r=n.getValue(t),i=o.get(r);if(!i)throw Error(`Bug: no selection texture found for "${t}"!`);Sj(this.programInfo,{[e]:i})});let c=cP+t;s.push(`bool ${$M}${t}(bool empty) {\n return hashContainsTexture(${c}, ${i}) || (empty && isEmptyHashTexture(${c}));\n}`),a.createSelectionTexture(r),n.watchExpression(t,()=>{let e=n.getValue(t);a.createSelectionTexture(e),this.getContext().animator.requestRender()})}}else if(rg(r)&&!f.has(t)){f.set(t,`interval`);let e=[],n=[];for(let i of Object.keys(r.intervals)){if(![`x`,`y`].includes(i))continue;let r=QM+hg(t)+`_${i}`,{attributeType:a}=gN(this.unitView.getScaleResolution(i).getScale(),i);u.push(` // Selection parameter`),u.push(` uniform highp ${a}[2] ${r};`),this.#e.push(()=>{this.registerMarkUniformValue(r,{expr:t},e=>e.intervals[i]??[1,0])});let o=e=>{for(let[t,n]of l.entries())if(t[1]&&n.includes(e))return wN(n);return wN(e)},s=o(i),c=r+`[0]`,d=r+`[1]`,f=Gh(i);if(this.encoding[f]){let t=o(f),n=this.defaultHitTestMode;if(n==`endpoints`)e.push(`((${c} <= ${s} && ${s} <= ${d}) || (${c} <= ${t} && ${t} <= ${d}))`);else if(n==`encloses`)e.push(`(${c} <= ${s} && ${t} <= ${d})`);else if(n==`intersects`)e.push(`(${c} <= ${t} && ${s} <= ${d})`);else throw new QN(`Unsupported hit test mode "${n}" for interval selection!`,this.unitView)}else e.push(`(${c} <= ${s} && ${s} <= ${d})`);n.push(`${c} > ${d}`)}s.push(`bool ${$M}${t}(bool empty) {\n return ${e.join(` && `)} || (empty && (${n.join(` || `)}));\n}`)}}let p=(e,t,n,r)=>{let i=t.channelDef;if(Dh(i))if(B(i.value)){let{uniformName:t,uniformGlsl:r,accessorGlsl:a,adjuster:o}=iN(e,n);s.push(a),u.push(r),this.#e.push(()=>{this.registerMarkUniformValue(t,i.value,o)})}else s.push(rN(e,n,i.value).accessorGlsl);else if(kh(i)){let{uniformName:t,uniformGlsl:a,accessorGlsl:o}=oN(e,r,n);u.push(a),s.push(o);let{largeHp:c,discrete:l}=gN(r,e),d=l&&`domain`in r?e=>r.domain().indexOf(e):c?bN:e=>+e;this.#e.push(()=>{this.registerMarkUniformValue(t,i.datum,d)})}else if(Oh(i)){let t=l.get([i.field,!0]),{attributeGlsl:a,accessorGlsl:o}=aN(e,r,n,t?.includes(e)?t:void 0);c.add(a),s.push(o)}else if(Ph(i)){let{attributeGlsl:t,accessorGlsl:i}=aN(e,r,n);c.add(t),s.push(i)}else throw new QN(`Unsupported channel definition: ${JSON.stringify(i)}`,this.unitView)};for(let[e,t]of Object.entries(i)){if(!r.includes(e))continue;let{branches:n,channelDef:i,scale:a}=t;for(let t=0;t<n.length;t++)p(e,n[t].accessor,t,a);if(a){let t=jh(i),n=t&&t.resolutionChannel||e,r=Yh(n)?this.unitView.getScaleResolution(n):null,{glsl:o,domainUniform:c,domainUniformName:l,rangeUniform:d,rangeUniformName:f}=sN(e,a,i);s.push(o),u.push(c),u.push(d),d&&this.#e.push(()=>{let t=this.createMarkUniformSetter(f),n=()=>t(EN(a,e));r.addEventListener(`range`,n),n()}),c&&this.#e.push(()=>{let e=this.createMarkUniformSetter(l),t=()=>{let t=vm(a.type)?[0,a.domain().length]:a.domain();e(_N(a.type)?SN(t):t)};r.addEventListener(`domain`,t),t()})}s.push(cN(e,n))}let m=[...f.keys()].map(e=>`${$M}${e}(false)`);s.push(`bool isPointSelected() {
632
633
  `+(this.encoders.uniqueId&&m.length>0?` return ${m.join(` || `)};`:` return false;`)+`
633
634
  }`);let h=`precision highp float;
634
635
  precision highp int;`,g=e=>e.replace(`#pragma markUniforms`,u.join(`
635
- `));n=n.map(g),e=g(e),t=g(t);let _=[h,o,...n,_N,vN,[...c].join(`
636
- `),...s,yN,bN,e],v=[h,o,...n,_N,xN,t],y=this.gl;this.programStatus=fM(y,this.glHelper.compileShader(y.VERTEX_SHADER,_),this.glHelper.compileShader(y.FRAGMENT_SHADER,v))}finalizeGraphicsInitialization(){if(this.programInfo)return;if(!this.programStatus)throw Error(`No program status found! `+this.unitView.getPathString());let e=this.programStatus.getProgramErrors();if(e){e.detail&&console.warn(e.detail);let t=Error(`Cannot create shader program: `+e.message);throw t.view=this.unitView,t}this.programInfo=ij(this.gl,this.programStatus.program),delete this.programStatus,this.viewUniformInfo=YA(this.gl,this.programInfo,`View`),this.markUniformInfo=YA(this.gl,this.programInfo,`Mark`),this.gl.useProgram(this.programInfo.program),ej(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0,uZero:0});for(let e of this.#e)e();this.#e=void 0}createMarkUniformSetter(e){let t=this.markUniformInfo.setters[e];if(!t)throw Error(`Uniform "${e}" not found int the Mark block!`);return e=>{t(e),this.markUniformsAltered=!0,this.unitView.context.animator.requestRender()}}registerMarkUniformValue(e,t,n=e=>e){let r=this.createMarkUniformSetter(e),i=n=>{if(n==null)throw Error(`Trying to set null/undefined value for uniform: ${e}${R(t)?`Expr: ${t.expr}`:``}`);r(n)};if(R(t)){let e,r=()=>i(n(e(null)));e=this.unitView.paramRuntime.watchExpression(t.expr,r),r()}else i(n(t))}deleteGraphicsData(){let e=this.glHelper;if(!e){this.vertexArrayInfo=void 0,this.bufferInfo=void 0;return}let t=e.gl;if(this.vertexArrayInfo&&=(this.gl.bindVertexArray(null),t.deleteVertexArray(this.vertexArrayInfo.vertexArrayObject),void 0),this.bufferInfo){for(let e=0;e<8;e++)t.disableVertexAttribArray(e);Object.values(this.bufferInfo.attribs).forEach(e=>this.gl.deleteBuffer(e.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),this.bufferInfo=void 0}}dispose(){this.deleteGraphicsData()}updateBufferInfo(e){if(this.gl.bindVertexArray(null),this.bufferInfo&&e.vertexCount<=this.bufferInfo.allocatedVertices)for(let[t,n]of Object.entries(e.arrays))n.data&&sE(this.gl,this.bufferInfo.attribs[t],n.data,0);else{this.deleteGraphicsData(),this.bufferInfo=dE(this.gl,e.arrays,{numElements:e.vertexCount}),this.bufferInfo.allocatedVertices=e.allocatedVertices;for(let[t,n]of Object.entries(e.arrays))this.bytesPerElement.set(t,n.data.BYTES_PER_ELEMENT)}}get glHelper(){return this.getContext().glHelper}get gl(){return this.glHelper.gl}isReady(){return this.bufferInfo&&this.programInfo}isPickingParticipant(){if(this.properties.tooltip===null&&!this.unitView.paramRuntime.hasPointSelections())return!1;for(let e of this.unitView.getLayoutAncestors())if(!e.isPickingSupported())return!1;return!0}bindOrSetMarkUniformBlock(){this.markUniformsAltered?(ZA(this.gl,this.programInfo,this.markUniformInfo),this.markUniformsAltered=!1):XA(this.gl,this.programInfo,this.markUniformInfo)}prepareRender(e){let t=this.glHelper,n=this.gl,r=[];r.push(()=>{this.vertexArrayInfo||=Bj(this.gl,this.programInfo,this.bufferInfo),n.useProgram(this.programInfo.program)});for(let[e,n]of Object.entries(this.encoders)){let i=t.rangeTextures.get(n.scale);i&&r.push(()=>ej(this.programInfo,{[kM+e]:i}))}r.push(...this.selectionTextureOps),this.getSampleFacetMode()==`SAMPLE_FACET_TEXTURE`&&r.push(()=>{let e;for(let t of this.unitView.getLayoutAncestors())if(e=t.getSampleFacetTexture(),e)break;if(!e)throw Error(`No facet texture available. This is bug.`);ej(this.programInfo,{uSampleFacetTexture:e})});let i=(e.picking??!1)&&this.isPickingParticipant();return r.push(()=>QA(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:i})),this.opaque||e.picking?r.push(()=>n.disable(n.BLEND)):r.push(()=>n.enable(n.BLEND)),r}prepareSampleFacetRendering(e){let t=e.sampleFacetRenderingOptions,n=this.programInfo.uniformSetters.uSampleFacet;if(t&&n){let e=t.pixelToUnit,r=t.locSize.location*e,i=t.locSize.size*e;if(r>1||r+i<0)return!1;this.gl.uniform4f(n.location,r,i,r,i)}return!0}render(e){}createRenderCallback(e,t){if(!this.bufferInfo)return()=>void 0;let n=this,r,i=this.unitView.getScaleResolution(`x`)?.getScale(),a=i&&ym(i.type),o=[`index`,`locus`].includes(i?.type)?-1:0,s=[0,0];r=t=>{if(a&&t.xIndex){let n=i.domain(),r=t.xIndex(n[0]+o,n[1],s),a=r[0],c=r[1]-a;c>0&&e(a,c)}else e(t.offset,t.count)};let c=this.rangeMap.get(void 0).count==0?t.facetId:void 0,l=this.rangeMap.get(c);return t.sampleFacetRenderingOptions?function(){l.count&&n.prepareSampleFacetRendering(t)&&r(l)}:function(){l.count&&r(l)}}setViewport(e,t,n,r){n=n.flatten();let i=this.gl,a=this.properties,o=.5,s=(a.xOffset??0)+o,c=(a.yOffset??0)+o,l,u=n;if(a.clip!==`never`&&(a.clip||r)){let a=0,o=0,d;if(r){if(u=n.intersect(r).flatten(),!u.isDefined())return!1;d=[n.width/u.width,n.height/u.height],o=Math.max(0,n.y2-r.y2),a=Math.min(0,n.x-r.x)}else d=[1,1];let f=[u.x,e.height-u.y2,u.width,u.height].map(e=>e*t),p=f.map(e=>Math.floor(e)),m=f[0]-p[0],h=f[1]-p[1];i.viewport(...p),i.scissor(...p),i.enable(i.SCISSOR_TEST),l={uViewOffset:[(s+a+m/t)/u.width,-(c+o-h/t)/u.height],uViewScale:d}}else{if(!n.isDefined())return!1;i.viewport(0,0,Math.round(e.width*t),Math.round(e.height*t)),i.disable(i.SCISSOR_TEST),l={uViewOffset:[(n.x+s)/e.width,(e.height-n.y-c-n.height)/e.height],uViewScale:[n.width/e.width,n.height/e.height]}}return QA(this.viewUniformInfo,{...l,uViewportSize:[n.width,n.height],uDevicePixelRatio:t}),ZA(this.gl,this.programInfo,this.viewUniformInfo),!0}findDatumAt(e,t){}},HN=class extends gn{constructor(){super([],JSON.stringify)}get(e){let t=super.get(e);return t===void 0&&(t={offset:0,count:0,xIndex:void 0},super.set(e,t)),t}migrateEntries(e){for(let[t,n]of this.entries())e.has(t)||(n.offset=0,n.count=0,n.xIndex=void 0);for(let[t,n]of e.entries())Object.assign(this.get(t),n)}};function UN(e,t){let n=qh(t),r=e[t]&&{...e[t]},i=e[n]&&{...e[n]};if(!(kh(r)||kh(i))){if(r){if(!Mh(e[t]))return;if(!i)if(r.type==`quantitative`)i={datum:0,domainInert:!0};else{i={...r};let e=(1-(r.band??1))/2;r.band=0+e,i.band=1-e}else if(r.type!=`quantitative`){let e=(1-(r.band||1))/2;r.band=e,i.band=-e}}else r={value:0},i={value:1};e[t]=r,e[n]=i}}function WN(e,t){let n=qh(t),r=e[t],i=e[n];if(!r||!i||kh(r)||kh(i)||!Mh(r)||!Mh(i)||![`index`,`locus`].includes(r.type))return;let a=r.band,o=i.band,s=a??o??0;e[t]={...r,band:s},e[n]={...i,band:o??s}}function GN(e,t){let n=Nh(e);n&&(n.resolutionChannel=t)}function KN(e,t){e.stroke||(t?e.stroke={value:null}:(e.stroke=structuredClone(e.color),GN(e.stroke,`color`))),kh(e.stroke)&&e.stroke.value===null&&(e.strokeWidth={value:0}),e.strokeOpacity||(e.strokeOpacity=structuredClone(e.opacity),GN(e.strokeOpacity,`opacity`))}function qN(e,t){kh(e.fill)&&e.fill.value===null?e.fillOpacity={value:0}:e.fill||(e.fill=structuredClone(e.color),GN(e.fill,`color`),!t&&!e.fillOpacity&&(e.fillOpacity={value:0})),e.fillOpacity||(t?(e.fillOpacity=structuredClone(e.opacity),GN(e.fillOpacity,`opacity`)):e.fillOpacity={value:0})}var JN=[`none`,`diagonal`,`antiDiagonal`,`cross`,`vertical`,`horizontal`,`grid`,`dots`,`rings`,`ringsLarge`],YN=class extends VN{constructor(e){super(e)}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`x2`,`y`,`y2`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`strokeWidth`]}getSupportedChannels(){return[...super.getSupportedChannels(),`x2`,`y2`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`strokeWidth`]}get opaque(){return CN(this,`opaque`,()=>!this.#e()&&!this.#t()&&!this.properties.shadowOpacity&&kh(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return UN(e,`x`),UN(e,`y`),KN(e,this.properties.filled),qN(e,this.properties.filled),delete e.color,delete e.opacity,e}#e(){let e=this.properties;return e.cornerRadius||e.cornerRadiusBottomLeft||e.cornerRadiusBottomRight||e.cornerRadiusTopLeft||e.cornerRadiusTopRight}#t(){let e=this.encoding.strokeWidth;return!(kh(e)&&!e.value)||`condition`in e}async initializeGraphics(){await super.initializeGraphics();let e=[];this.#e()&&e.push(`ROUNDED_CORNERS`),this.#t()&&e.push(`STROKED`),this.properties.shadowOpacity&&e.push(`SHADOW`),this.createAndLinkShaders(Jj,Yj,[Xj,...e.map(e=>`#define `+e)])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties;this.registerMarkUniformValue(`uMinWidth`,e.minWidth),this.registerMarkUniformValue(`uMinHeight`,e.minHeight),this.registerMarkUniformValue(`uMinOpacity`,e.minOpacity),this.registerMarkUniformValue(`uCornerRadiusTopRight`,e.cornerRadiusTopRight??e.cornerRadius??0),this.registerMarkUniformValue(`uCornerRadiusBottomRight`,e.cornerRadiusBottomRight??e.cornerRadius??0),this.registerMarkUniformValue(`uCornerRadiusTopLeft`,e.cornerRadiusTopLeft??e.cornerRadius??0),this.registerMarkUniformValue(`uCornerRadiusBottomLeft`,e.cornerRadiusBottomLeft??e.cornerRadius??0),this.registerMarkUniformValue(`uHatchPattern`,e.hatch,e=>Math.max(0,JN.indexOf(e??`none`))),this.registerMarkUniformValue(`uShadowBlur`,e.shadowBlur??0),this.registerMarkUniformValue(`uShadowOpacity`,e.shadowOpacity??0),this.registerMarkUniformValue(`uShadowOffsetX`,e.shadowOffsetX??0),this.registerMarkUniformValue(`uShadowOffsetY`,e.shadowOffsetY??0),this.registerMarkUniformValue(`uShadowColor`,e.shadowColor??`black`,SM)}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getItemCount(),n=new fN({encoders:this.encoders,attributes:this.getAttributes(),numItems:t});n.addBatches(e.facetBatches);let r=n.toArrays();this.rangeMap.migrateEntries(r.rangeMap),this.updateBufferInfo(r)}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>rj(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){let t=this.gl;return this.createRenderCallback((e,n)=>{sj(t,this.vertexArrayInfo,t.TRIANGLE_STRIP,n,e)},e)}findDatumAt(e,t){e=Zl(e);let n=this.unitView.getCollector().facetBatches.get(e);if(!n)return;let r=this.encoders,i=r.x.scale.type;if(bm(i)){let e=Eh(r.x);return e?n.find(n=>t==e(n)):void 0}else{let e=Eh(r.x),i=Eh(r.x2);return!e||!i?void 0:n.find(n=>t>=e(n)&&t<i(n))}}},XN=`flat out float vRadius;flat out float vRadiusWithPadding;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out lowp float vShape;flat out lowp float vHalfStrokeWidth;flat out mat2 vRotationMatrix;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TRIANGLE_RIGHT=5.0;const float TRIANGLE_DOWN=6.0;const float TRIANGLE_LEFT=7.0;const float TICK_UP=8.0;const float TICK_RIGHT=9.0;const float TICK_DOWN=10.0;const float TICK_LEFT=11.0;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}vec2 getDxDy(){
636
+ `));n=n.map(g),e=g(e),t=g(t);let _=[h,o,...n,zN,BN,[...c].join(`
637
+ `),...s,VN,HN,e],v=[h,o,...n,zN,UN,t],y=this.gl;this.programStatus=PM(y,this.glHelper.compileShader(y.VERTEX_SHADER,_),this.glHelper.compileShader(y.FRAGMENT_SHADER,v))}finalizeGraphicsInitialization(){if(this.programInfo)return;if(!this.programStatus)throw Error(`No program status found! `+this.unitView.getPathString());let e=this.programStatus.getProgramErrors();if(e){e.detail&&console.warn(e.detail);let t=Error(`Cannot create shader program: `+e.message);throw t.view=this.unitView,t}this.programInfo=Ej(this.gl,this.programStatus.program),delete this.programStatus,this.viewUniformInfo=_j(this.gl,this.programInfo,`View`),this.markUniformInfo=_j(this.gl,this.programInfo,`Mark`),this.gl.useProgram(this.programInfo.program),Sj(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0,uZero:0});for(let e of this.#e)e();this.#e=void 0}createMarkUniformSetter(e){let t=this.markUniformInfo.setters[e];if(!t)throw Error(`Uniform "${e}" not found int the Mark block!`);return e=>{t(e),this.markUniformsAltered=!0,this.unitView.context.animator.requestRender()}}registerMarkUniformValue(e,t,n=e=>e){let r=this.createMarkUniformSetter(e),i=n=>{if(n==null)throw Error(`Trying to set null/undefined value for uniform: ${e}${B(t)?`Expr: ${t.expr}`:``}`);r(n)};if(B(t)){let e,r=()=>i(n(e(null)));e=this.unitView.paramRuntime.watchExpression(t.expr,r),r()}else i(n(t))}deleteGraphicsData(){let e=this.glHelper;if(!e){this.vertexArrayInfo=void 0,this.bufferInfo=void 0;return}let t=e.gl;if(this.vertexArrayInfo&&=(this.gl.bindVertexArray(null),t.deleteVertexArray(this.vertexArrayInfo.vertexArrayObject),void 0),this.bufferInfo){for(let e=0;e<8;e++)t.disableVertexAttribArray(e);Object.values(this.bufferInfo.attribs).forEach(e=>this.gl.deleteBuffer(e.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),this.bufferInfo=void 0}}dispose(){this.deleteGraphicsData()}updateBufferInfo(e){if(this.gl.bindVertexArray(null),this.bufferInfo&&e.vertexCount<=this.bufferInfo.allocatedVertices)for(let[t,n]of Object.entries(e.arrays))n.data&&OE(this.gl,this.bufferInfo.attribs[t],n.data,0);else{this.deleteGraphicsData(),this.bufferInfo=ME(this.gl,e.arrays,{numElements:e.vertexCount}),this.bufferInfo.allocatedVertices=e.allocatedVertices;for(let[t,n]of Object.entries(e.arrays))this.bytesPerElement.set(t,n.data.BYTES_PER_ELEMENT)}}get glHelper(){return this.getContext().glHelper}get gl(){return this.glHelper.gl}isReady(){return this.bufferInfo&&this.programInfo}isPickingParticipant(){if(this.properties.tooltip===null&&!this.unitView.paramRuntime.hasPointSelections())return!1;for(let e of this.unitView.getLayoutAncestors())if(!e.isPickingSupported())return!1;return!0}bindOrSetMarkUniformBlock(){this.markUniformsAltered?(yj(this.gl,this.programInfo,this.markUniformInfo),this.markUniformsAltered=!1):vj(this.gl,this.programInfo,this.markUniformInfo)}prepareRender(e){let t=this.glHelper,n=this.gl,r=[];r.push(()=>{this.vertexArrayInfo||=cM(this.gl,this.programInfo,this.bufferInfo),n.useProgram(this.programInfo.program)});for(let[e,n]of Object.entries(this.encoders)){let i=t.rangeTextures.get(n.scale);i&&r.push(()=>Sj(this.programInfo,{[ZM+e]:i}))}r.push(...this.selectionTextureOps),this.getSampleFacetMode()==`SAMPLE_FACET_TEXTURE`&&r.push(()=>{let e;for(let t of this.unitView.getLayoutAncestors())if(e=t.getSampleFacetTexture(),e)break;if(!e)throw Error(`No facet texture available. This is bug.`);Sj(this.programInfo,{uSampleFacetTexture:e})});let i=(e.picking??!1)&&this.isPickingParticipant();return r.push(()=>bj(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:i})),this.opaque||e.picking?r.push(()=>n.disable(n.BLEND)):r.push(()=>n.enable(n.BLEND)),r}prepareSampleFacetRendering(e){let t=e.sampleFacetRenderingOptions,n=this.programInfo.uniformSetters.uSampleFacet;if(t&&n){let e=t.pixelToUnit,r=t.locSize.location*e,i=t.locSize.size*e;if(r>1||r+i<0)return!1;this.gl.uniform4f(n.location,r,i,r,i)}return!0}render(e){}createRenderCallback(e,t){if(!this.bufferInfo)return()=>void 0;let n=this,r,i=this.unitView.getScaleResolution(`x`)?.getScale(),a=i&&_m(i.type),o=[`index`,`locus`].includes(i?.type)?-1:0,s=[0,0];r=t=>{if(a&&t.xIndex){let n=i.domain(),r=t.xIndex(n[0]+o,n[1],s),a=r[0],c=r[1]-a;c>0&&e(a,c)}else e(t.offset,t.count)};let c=this.rangeMap.get(void 0).count==0?t.facetId:void 0,l=this.rangeMap.get(c);return t.sampleFacetRenderingOptions?function(){l.count&&n.prepareSampleFacetRendering(t)&&r(l)}:function(){l.count&&r(l)}}setViewport(e,t,n,r){n=n.flatten();let i=this.gl,a=this.properties,o=.5,s=(a.xOffset??0)+o,c=(a.yOffset??0)+o,l,u=n;if(a.clip!==`never`&&(a.clip||r)){let a=0,o=0,d;if(r){if(u=n.intersect(r).flatten(),!u.isDefined())return!1;d=[n.width/u.width,n.height/u.height],o=Math.max(0,n.y2-r.y2),a=Math.min(0,n.x-r.x)}else d=[1,1];let f=[u.x,e.height-u.y2,u.width,u.height].map(e=>e*t),p=f.map(e=>Math.floor(e)),m=f[0]-p[0],h=f[1]-p[1];i.viewport(...p),i.scissor(...p),i.enable(i.SCISSOR_TEST),l={uViewOffset:[(s+a+m/t)/u.width,-(c+o-h/t)/u.height],uViewScale:d}}else{if(!n.isDefined())return!1;i.viewport(0,0,Math.round(e.width*t),Math.round(e.height*t)),i.disable(i.SCISSOR_TEST),l={uViewOffset:[(n.x+s)/e.width,(e.height-n.y-c-n.height)/e.height],uViewScale:[n.width/e.width,n.height/e.height]}}return bj(this.viewUniformInfo,{...l,uViewportSize:[n.width,n.height],uDevicePixelRatio:t}),yj(this.gl,this.programInfo,this.viewUniformInfo),!0}findDatumAt(e,t){}},uP=class extends mn{constructor(){super([],JSON.stringify)}get(e){let t=super.get(e);return t===void 0&&(t={offset:0,count:0,xIndex:void 0},super.set(e,t)),t}migrateEntries(e){for(let[t,n]of this.entries())e.has(t)||(n.offset=0,n.count=0,n.xIndex=void 0);for(let[t,n]of e.entries())Object.assign(this.get(t),n)}};function dP(e,t){let n=Gh(t),r=e[t]&&{...e[t]},i=e[n]&&{...e[n]};if(!(Dh(r)||Dh(i))){if(r){if(!Ah(e[t]))return;if(!i)if(r.type==`quantitative`)i={datum:0,domainInert:!0};else{i={...r};let e=(1-(r.band??1))/2;r.band=0+e,i.band=1-e}else if(r.type!=`quantitative`){let e=(1-(r.band||1))/2;r.band=e,i.band=-e}}else r={value:0},i={value:1};e[t]=r,e[n]=i}}function fP(e,t){let n=Gh(t),r=e[t],i=e[n];if(!r||!i||Dh(r)||Dh(i)||!Ah(r)||!Ah(i)||![`index`,`locus`].includes(r.type))return;let a=r.band,o=i.band,s=a??o??0;e[t]={...r,band:s},e[n]={...i,band:o??s}}function pP(e,t){let n=jh(e);n&&(n.resolutionChannel=t)}function mP(e,t){e.stroke||(t?e.stroke={value:null}:(e.stroke=structuredClone(e.color),pP(e.stroke,`color`))),Dh(e.stroke)&&e.stroke.value===null&&(e.strokeWidth={value:0}),e.strokeOpacity||(e.strokeOpacity=structuredClone(e.opacity),pP(e.strokeOpacity,`opacity`))}function hP(e,t){Dh(e.fill)&&e.fill.value===null?e.fillOpacity={value:0}:e.fill||(e.fill=structuredClone(e.color),pP(e.fill,`color`),!t&&!e.fillOpacity&&(e.fillOpacity={value:0})),e.fillOpacity||(t?(e.fillOpacity=structuredClone(e.opacity),pP(e.fillOpacity,`opacity`)):e.fillOpacity={value:0})}var gP=[`none`,`diagonal`,`antiDiagonal`,`cross`,`vertical`,`horizontal`,`grid`,`dots`,`rings`,`ringsLarge`],_P=class extends lP{constructor(e){super(e)}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`x2`,`y`,`y2`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`strokeWidth`]}getSupportedChannels(){return[...super.getSupportedChannels(),`x2`,`y2`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`strokeWidth`]}get opaque(){return GN(this,`opaque`,()=>!this.#e()&&!this.#t()&&!this.properties.shadowOpacity&&Dh(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return dP(e,`x`),dP(e,`y`),mP(e,this.properties.filled),hP(e,this.properties.filled),delete e.color,delete e.opacity,e}#e(){let e=this.properties;return e.cornerRadius||e.cornerRadiusBottomLeft||e.cornerRadiusBottomRight||e.cornerRadiusTopLeft||e.cornerRadiusTopRight}#t(){let e=this.encoding.strokeWidth;return!(Dh(e)&&!e.value)||`condition`in e}async initializeGraphics(){await super.initializeGraphics();let e=[];this.#e()&&e.push(`ROUNDED_CORNERS`),this.#t()&&e.push(`STROKED`),this.properties.shadowOpacity&&e.push(`SHADOW`),this.createAndLinkShaders(gM,_M,[vM,...e.map(e=>`#define `+e)])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties;this.registerMarkUniformValue(`uMinWidth`,e.minWidth),this.registerMarkUniformValue(`uMinHeight`,e.minHeight),this.registerMarkUniformValue(`uMinOpacity`,e.minOpacity),this.registerMarkUniformValue(`uCornerRadiusTopRight`,e.cornerRadiusTopRight??e.cornerRadius??0),this.registerMarkUniformValue(`uCornerRadiusBottomRight`,e.cornerRadiusBottomRight??e.cornerRadius??0),this.registerMarkUniformValue(`uCornerRadiusTopLeft`,e.cornerRadiusTopLeft??e.cornerRadius??0),this.registerMarkUniformValue(`uCornerRadiusBottomLeft`,e.cornerRadiusBottomLeft??e.cornerRadius??0),this.registerMarkUniformValue(`uHatchPattern`,e.hatch,e=>Math.max(0,gP.indexOf(e??`none`))),this.registerMarkUniformValue(`uShadowBlur`,e.shadowBlur??0),this.registerMarkUniformValue(`uShadowOpacity`,e.shadowOpacity??0),this.registerMarkUniformValue(`uShadowOffsetX`,e.shadowOffsetX??0),this.registerMarkUniformValue(`uShadowOffsetY`,e.shadowOffsetY??0),this.registerMarkUniformValue(`uShadowColor`,e.shadowColor??`black`,WM)}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getItemCount(),n=new PN({encoders:this.encoders,attributes:this.getAttributes(),numItems:t});n.addBatches(e.facetBatches);let r=n.toArrays();this.rangeMap.migrateEntries(r.rangeMap),this.updateBufferInfo(r)}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>Tj(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){let t=this.gl;return this.createRenderCallback((e,n)=>{kj(t,this.vertexArrayInfo,t.TRIANGLE_STRIP,n,e)},e)}findDatumAt(e,t){e=Yl(e);let n=this.unitView.getCollector().facetBatches.get(e);if(!n)return;let r=this.encoders,i=r.x.scale.type;if(vm(i)){let e=wh(r.x);return e?n.find(n=>t==e(n)):void 0}else{let e=wh(r.x),i=wh(r.x2);return!e||!i?void 0:n.find(n=>t>=e(n)&&t<i(n))}}},vP=`flat out float vRadius;flat out float vRadiusWithPadding;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out lowp float vShape;flat out lowp float vHalfStrokeWidth;flat out mat2 vRotationMatrix;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TRIANGLE_RIGHT=5.0;const float TRIANGLE_DOWN=6.0;const float TRIANGLE_LEFT=7.0;const float TICK_UP=8.0;const float TICK_RIGHT=9.0;const float TICK_DOWN=10.0;const float TICK_LEFT=11.0;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}vec2 getDxDy(){
637
638
  #if defined(dx_DEFINED) || defined(dy_DEFINED)
638
639
  return vec2(getScaled_dx(),getScaled_dy())/uViewportSize;
639
640
  #else
640
641
  return vec2(0.0,0.0);
641
642
  #endif
642
- }void main(void){float shapeAngle=0.0;float semanticThresholdFactor=isPointSelected()? 1.0: computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor;float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;if(vShape>TICK_UP&&vShape<=TICK_LEFT){shapeAngle=(vShape-TICK_UP)*90.0;vShape=TICK_UP;}else if(vShape>TRIANGLE_UP&&vShape<=TRIANGLE_LEFT){shapeAngle=(vShape-TRIANGLE_UP)*90.0;vShape=TRIANGLE_UP;}float angleInDegrees=getScaled_angle();float angle=-(shapeAngle+angleInDegrees)*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=max((diameter+padding),uPickingEnabled ? uMinPickingSize : 0.0)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}`,ZN=`const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);flat in float vRadius;flat in float vRadiusWithPadding;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in lowp float vShape;flat in lowp float vHalfStrokeWidth;flat in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TICK_UP=8.0;float circle(vec2 p,float r){return length(p)-r;}float square(vec2 p,float r){p=abs(p);return max(p.x,p.y)-r;}float tickUp(vec2 p,float r){float halfR=r*0.5;p.y+=halfR;p=abs(p);return max(p.x-r*0.15,p.y-halfR);}float equilateralTriangle(vec2 p,float r){p.y=-p.y;float k=sqrt(3.0);float kr=k*r;p.y-=kr/2.0;return max((abs(p.x)*k+p.y)/2.0,-p.y-kr);}float crossShape(vec2 p,float r){p=abs(p);vec2 b=vec2(0.4,1.0)*r;vec2 v=abs(p)-b.xy;vec2 h=abs(p)-b.yx;return min(max(v.x,v.y),max(h.x,h.y));}float diamond(vec2 p,float r){p=abs(p);return(max(abs(p.x-p.y),abs(p.x+p.y))-r)/sqrt(2.0);}void main(){float d;vec2 p=vRotationMatrix*(2.0*gl_PointCoord-1.0)*vRadiusWithPadding;float r=vRadius;if(vShape==CIRCLE){d=circle(p,r);}else if(vShape==SQUARE){d=square(p,r);}else if(vShape==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r);}else if(vShape==TICK_UP){d=tickUp(p,r);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vec4(0.0),vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}`,QN=`layout(std140)uniform Mark{/***The stroke should only grow inwards,e.g,the diameter/outline is not affected by the stroke width.*Thus,a point that has a zero size has no visible stroke. This allows strokes to be used with*geometric zoom,etc.*/uniform bool uInwardStroke;uniform float uMinPickingSize;uniform mediump float uScaleFactor;uniform mediump float uZoomLevel;uniform highp float uSemanticThreshold;uniform mediump float uGradientStrength;
643
+ }void main(void){float shapeAngle=0.0;float semanticThresholdFactor=isPointSelected()? 1.0: computeSemanticThresholdFactor();if(semanticThresholdFactor<=0.0){gl_PointSize=0.0;gl_Position=vec4(100.0,0.0,0.0,0.0);return;}float size=getScaled_size();vec2 pos=vec2(getScaled_x(),getScaled_y())+getDxDy();gl_Position=unitToNdc(applySampleFacet(pos));float strokeWidth=getScaled_strokeWidth();float diameter=sqrt(size)*uScaleFactor*semanticThresholdFactor;float opacity=uViewOpacity;if(strokeWidth<=0.0||uInwardStroke){float minDiameter=1.0/uDevicePixelRatio;if(diameter<minDiameter){opacity*=pow(diameter/minDiameter,2.5);diameter=minDiameter;}}float fillOpa=getScaled_fillOpacity()*opacity;float strokeOpa=getScaled_strokeOpacity()*opacity;vShape=getScaled_shape();bool circle=vShape==0.0;if(vShape>TICK_UP&&vShape<=TICK_LEFT){shapeAngle=(vShape-TICK_UP)*90.0;vShape=TICK_UP;}else if(vShape>TRIANGLE_UP&&vShape<=TRIANGLE_LEFT){shapeAngle=(vShape-TRIANGLE_UP)*90.0;vShape=TRIANGLE_UP;}float angleInDegrees=getScaled_angle();float angle=-(shapeAngle+angleInDegrees)*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);vRotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);float roomForRotation=circle ? 1.0 : sin(mod(angle,PI/2.0)+PI/4.0)/sin(PI/4.0);float aaPadding=1.0/uDevicePixelRatio;float rotationPadding=(diameter*roomForRotation)-diameter;float strokePadding=uInwardStroke ? 0.0 : strokeWidth*(circle ? 1.0 : sqrt(3.0));float padding=rotationPadding+strokePadding+aaPadding;gl_PointSize=max((diameter+padding),uPickingEnabled ? uMinPickingSize : 0.0)*uDevicePixelRatio;vRadius=diameter/2.0;vRadiusWithPadding=vRadius+padding/2.0;vHalfStrokeWidth=strokeWidth/2.0;vFillColor=vec4(getScaled_fill()*fillOpa,fillOpa);vStrokeColor=vec4(getScaled_stroke()*strokeOpa,strokeOpa);setupPicking();}`,yP=`const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);flat in float vRadius;flat in float vRadiusWithPadding;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in lowp float vShape;flat in lowp float vHalfStrokeWidth;flat in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TICK_UP=8.0;float circle(vec2 p,float r){return length(p)-r;}float square(vec2 p,float r){p=abs(p);return max(p.x,p.y)-r;}float tickUp(vec2 p,float r){float halfR=r*0.5;p.y+=halfR;p=abs(p);return max(p.x-r*0.15,p.y-halfR);}float equilateralTriangle(vec2 p,float r){p.y=-p.y;float k=sqrt(3.0);float kr=k*r;p.y-=kr/2.0;return max((abs(p.x)*k+p.y)/2.0,-p.y-kr);}float crossShape(vec2 p,float r){p=abs(p);vec2 b=vec2(0.4,1.0)*r;vec2 v=abs(p)-b.xy;vec2 h=abs(p)-b.yx;return min(max(v.x,v.y),max(h.x,h.y));}float diamond(vec2 p,float r){p=abs(p);return(max(abs(p.x-p.y),abs(p.x+p.y))-r)/sqrt(2.0);}void main(){float d;vec2 p=vRotationMatrix*(2.0*gl_PointCoord-1.0)*vRadiusWithPadding;float r=vRadius;if(vShape==CIRCLE){d=circle(p,r);}else if(vShape==SQUARE){d=square(p,r);}else if(vShape==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r);}else if(vShape==TICK_UP){d=tickUp(p,r);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vec4(0.0),vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}`,bP=`layout(std140)uniform Mark{/***The stroke should only grow inwards,e.g,the diameter/outline is not affected by the stroke width.*Thus,a point that has a zero size has no visible stroke. This allows strokes to be used with*geometric zoom,etc.*/uniform bool uInwardStroke;uniform float uMinPickingSize;uniform mediump float uScaleFactor;uniform mediump float uZoomLevel;uniform highp float uSemanticThreshold;uniform mediump float uGradientStrength;
643
644
  #pragma markUniforms
644
- };`,$N=class extends sh{constructor(e){super(e),this.params=e,this.k=e.size||500,this.reset()}reset(){super.reset(),this.reservoir=[],this.W=void 0,this.ingester=this._initialIngester}_initialIngester(e){this.reservoir.push(e),this.reservoir.length==this.k&&(this.W=Math.exp(Math.log(Math.random())/this.k),this.i=this.k,this.next=this.i,this.ingester=this._finalIngester,this._setNextStop())}_finalIngester(e){++this.i==this.next&&(this.reservoir[Math.floor(Math.random()*this.k)]=e,this.W*=Math.exp(Math.log(Math.random())/this.k),this._setNextStop())}_setNextStop(){this.next+=Math.floor(Math.log(Math.random())/Math.log(1-this.W))+1}handle(e){this.ingester(e)}complete(){for(let e of this.reservoir)this._propagate(e);super.complete()}};function eP(e,t,n){let r=new $N({type:`sample`,size:e});for(let e of t)r.handle(n(e));return r.complete(),r.reservoir}var tP={},nP=class extends VN{#e=()=>0;constructor(e){super(e);let t=this.properties.semanticZoomFraction;t!=null&&(R(t)?this.#e=this.unitView.paramRuntime.watchExpression(t.expr,()=>this.getContext().animator.requestRender()):this.#e=()=>t),`geometricZoomBound`in this.properties&&console.warn(`geometricZoomBound is deprecated. Use something like the following instead: "size": { "expr": "min(0.5 * pow(zoomLevel, 2), 200)" }.`)}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`y`,`size`,`semanticScore`,`shape`,`strokeWidth`,`dx`,`dy`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`angle`]}getSupportedChannels(){return[...super.getSupportedChannels(),`size`,`semanticScore`,`shape`,`strokeWidth`,`dx`,`dy`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`angle`]}getDefaultEncoding(){return{...super.getDefaultEncoding(),...tP}}fixEncoding(e){return KN(e,this.properties.filled),qN(e,this.properties.filled),delete e.color,delete e.opacity,e}initializeData(){super.initializeData();let e=this.encoders.semanticScore?Eh(this.encoders.semanticScore)?.asNumberAccessor():void 0;e&&(this.sampledSemanticScores=Float32Array.from(eP(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((e,t)=>e-t))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(XN,ZN,[QN])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties;this.registerMarkUniformValue(`uInwardStroke`,e.inwardStroke,e=>!!e),this.registerMarkUniformValue(`uGradientStrength`,e.fillGradientStrength),this.registerMarkUniformValue(`uMinPickingSize`,e.minPickingSize)}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getItemCount(),n=new mN({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(t,this.properties.minBufferSize||0)});n.addBatches(e.facetBatches);let r=n.toArrays();this.rangeMap.migrateEntries(r.rangeMap),this.updateBufferInfo(r)}#t(){let e=2**(this.properties.geometricZoomBound||0);return Math.min(1,this.unitView.getZoomLevel()/e)**(1/3)}getSemanticThreshold(){if(this.sampledSemanticScores){let e=Math.max(0,1-this.#e()*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{let t=this.sampledSemanticScores;return zn(t,e)}}else return-1}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>{QA(this.markUniformInfo,{uScaleFactor:this.#t(),uSemanticThreshold:this.getSemanticThreshold()}),this.markUniformsAltered=!0}),t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>rj(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){let t=this.gl;return this.createRenderCallback((e,n)=>{n&&sj(t,this.vertexArrayInfo,t.POINTS,n,e)},e)}},rP=`const int BUTT=0;const int SQUARE=1;const int ROUND=2;in float pos;in float side;flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;out highp vec2 vPosInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float size=getScaled_size();float opacity=getScaled_opacity()*uViewOpacity;if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()));vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()));vec2 tangent=b-a;float offset=0.0;float relativeDiff=0.0;if(uMinLength>0.0||uStrokeCap!=BUTT){float len=length(tangent*uViewportSize);float diff=max(0.0,uMinLength-len);if(uStrokeCap!=BUTT){diff+=size;}relativeDiff=diff/len;offset=relativeDiff*(pos-0.5);}vec2 p=pos<1.0? a+tangent*(pos+offset): b+tangent*offset;float aaPadding=pixelSize;vec2 normal=normalize(vec2(-tangent.y,tangent.x)/uViewportSize);p+=normal*side*(size+aaPadding)/uViewportSize;gl_Position=unitToNdc(p);vColor=vec4(getScaled_color()*opacity,opacity);vSize=size;vNormalLengthInPixels=side*(size+aaPadding);vPosInPixels=vec2(pos,(1.0-pos))*(1.0+relativeDiff)*length(tangent*uViewportSize)-vec2(uStrokeCap!=BUTT ? size/2.0 : 0.0);setupPicking();}`,iP=`const int BUTT=0;const int SQUARE=1;const int ROUND=2;uniform sampler2D uDashTexture;flat in vec4 vColor;flat in float vSize;in vec2 vPosInPixels;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distanceFromEnd=-min(vPosInPixels[0],vPosInPixels[1]);float distance;if(distanceFromEnd>0.0&&uStrokeCap==ROUND){distance=length(vec2(distanceFromEnd,vNormalLengthInPixels));}else{distance=abs(vNormalLengthInPixels);}float opacity=clamp(((vSize/2.0-distance)*dpr),-0.5,0.5)+0.5;if(uDashTextureSize>0.0){float pos=(vPosInPixels[0]+uStrokeDashOffset)*dpr;float floored=floor(pos);vec2 texelPositions=(floored+vec2(0.5,1.5))/dpr/uDashTextureSize;opacity*=mix(texture(uDashTexture,vec2(texelPositions[0],0)).r,texture(uDashTexture,vec2(texelPositions[1],0)).r,clamp((pos-floored),0.0,1.0));}fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}`,aP=`layout(std140)uniform Mark{uniform mediump float uMinLength;uniform mediump float uDashTextureSize;uniform lowp int uStrokeCap;uniform mediump float uStrokeDashOffset;
645
+ };`,xP=class extends ah{constructor(e){super(e),this.params=e,this.k=e.size||500,this.reset()}reset(){super.reset(),this.reservoir=[],this.W=void 0,this.ingester=this._initialIngester}_initialIngester(e){this.reservoir.push(e),this.reservoir.length==this.k&&(this.W=Math.exp(Math.log(Math.random())/this.k),this.i=this.k,this.next=this.i,this.ingester=this._finalIngester,this._setNextStop())}_finalIngester(e){++this.i==this.next&&(this.reservoir[Math.floor(Math.random()*this.k)]=e,this.W*=Math.exp(Math.log(Math.random())/this.k),this._setNextStop())}_setNextStop(){this.next+=Math.floor(Math.log(Math.random())/Math.log(1-this.W))+1}handle(e){this.ingester(e)}complete(){for(let e of this.reservoir)this._propagate(e);super.complete()}};function SP(e,t,n){let r=new xP({type:`sample`,size:e});for(let e of t)r.handle(n(e));return r.complete(),r.reservoir}var CP={},wP=class extends lP{#e=()=>0;constructor(e){super(e);let t=this.properties.semanticZoomFraction;t!=null&&(B(t)?this.#e=this.unitView.paramRuntime.watchExpression(t.expr,()=>this.getContext().animator.requestRender()):this.#e=()=>t),`geometricZoomBound`in this.properties&&console.warn(`geometricZoomBound is deprecated. Use something like the following instead: "size": { "expr": "min(0.5 * pow(zoomLevel, 2), 200)" }.`)}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`y`,`size`,`semanticScore`,`shape`,`strokeWidth`,`dx`,`dy`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`angle`]}getSupportedChannels(){return[...super.getSupportedChannels(),`size`,`semanticScore`,`shape`,`strokeWidth`,`dx`,`dy`,`fill`,`stroke`,`fillOpacity`,`strokeOpacity`,`angle`]}getDefaultEncoding(){return{...super.getDefaultEncoding(),...CP}}fixEncoding(e){return mP(e,this.properties.filled),hP(e,this.properties.filled),delete e.color,delete e.opacity,e}initializeData(){super.initializeData();let e=this.encoders.semanticScore?wh(this.encoders.semanticScore)?.asNumberAccessor():void 0;e&&(this.sampledSemanticScores=Float32Array.from(SP(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((e,t)=>e-t))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(vP,yP,[bP])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties;this.registerMarkUniformValue(`uInwardStroke`,e.inwardStroke,e=>!!e),this.registerMarkUniformValue(`uGradientStrength`,e.fillGradientStrength),this.registerMarkUniformValue(`uMinPickingSize`,e.minPickingSize)}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getItemCount(),n=new IN({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(t,this.properties.minBufferSize||0)});n.addBatches(e.facetBatches);let r=n.toArrays();this.rangeMap.migrateEntries(r.rangeMap),this.updateBufferInfo(r)}#t(){let e=2**(this.properties.geometricZoomBound||0);return Math.min(1,this.unitView.getZoomLevel()/e)**(1/3)}getSemanticThreshold(){if(this.sampledSemanticScores){let e=Math.max(0,1-this.#e()*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{let t=this.sampledSemanticScores;return Ln(t,e)}}else return-1}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>{bj(this.markUniformInfo,{uScaleFactor:this.#t(),uSemanticThreshold:this.getSemanticThreshold()}),this.markUniformsAltered=!0}),t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>Tj(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){let t=this.gl;return this.createRenderCallback((e,n)=>{n&&kj(t,this.vertexArrayInfo,t.POINTS,n,e)},e)}},TP=`const int BUTT=0;const int SQUARE=1;const int ROUND=2;in float pos;in float side;flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;out highp vec2 vPosInPixels;void main(void){float pixelSize=1.0/uDevicePixelRatio;float size=getScaled_size();float opacity=getScaled_opacity()*uViewOpacity;if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()));vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()));vec2 tangent=b-a;float offset=0.0;float relativeDiff=0.0;if(uMinLength>0.0||uStrokeCap!=BUTT){float len=length(tangent*uViewportSize);float diff=max(0.0,uMinLength-len);if(uStrokeCap!=BUTT){diff+=size;}relativeDiff=diff/len;offset=relativeDiff*(pos-0.5);}vec2 p=pos<1.0? a+tangent*(pos+offset): b+tangent*offset;float aaPadding=pixelSize;vec2 normal=normalize(vec2(-tangent.y,tangent.x)/uViewportSize);p+=normal*side*(size+aaPadding)/uViewportSize;gl_Position=unitToNdc(p);vColor=vec4(getScaled_color()*opacity,opacity);vSize=size;vNormalLengthInPixels=side*(size+aaPadding);vPosInPixels=vec2(pos,(1.0-pos))*(1.0+relativeDiff)*length(tangent*uViewportSize)-vec2(uStrokeCap!=BUTT ? size/2.0 : 0.0);setupPicking();}`,EP=`const int BUTT=0;const int SQUARE=1;const int ROUND=2;uniform sampler2D uDashTexture;flat in vec4 vColor;flat in float vSize;in vec2 vPosInPixels;in float vNormalLengthInPixels;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distanceFromEnd=-min(vPosInPixels[0],vPosInPixels[1]);float distance;if(distanceFromEnd>0.0&&uStrokeCap==ROUND){distance=length(vec2(distanceFromEnd,vNormalLengthInPixels));}else{distance=abs(vNormalLengthInPixels);}float opacity=clamp(((vSize/2.0-distance)*dpr),-0.5,0.5)+0.5;if(uDashTextureSize>0.0){float pos=(vPosInPixels[0]+uStrokeDashOffset)*dpr;float floored=floor(pos);vec2 texelPositions=(floored+vec2(0.5,1.5))/dpr/uDashTextureSize;opacity*=mix(texture(uDashTexture,vec2(texelPositions[0],0)).r,texture(uDashTexture,vec2(texelPositions[1],0)).r,clamp((pos-floored),0.0,1.0));}fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}`,DP=`layout(std140)uniform Mark{uniform mediump float uMinLength;uniform mediump float uDashTextureSize;uniform lowp int uStrokeCap;uniform mediump float uStrokeDashOffset;
645
646
  #pragma markUniforms
646
- };`,oP=`horizontal`,sP=`vertical`,cP=class extends VN{constructor(e){super(e),this.dashTextureSize=0}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`x2`,`y`,`y2`,`size`,`color`,`opacity`]}getSupportedChannels(){return[...super.getSupportedChannels(),`x2`,`y2`,`size`]}fixEncoding(e){if(this.getType()==`tick`)return this.fixTickEncoding(e);if(!(e.x&&e.y&&e.x2&&e.y2))if(e.x&&e.x2&&!e.y)e.y={value:.5},e.y2=e.y;else if(e.y&&e.y2&&!e.x)e.x={value:.5},e.x2=e.x;else if(e.x&&!e.y)e.y={value:0},e.y2={value:1},e.x2=e.x;else if(e.y&&!e.x)e.x={value:0},e.x2={value:1},e.y2=e.y;else if(e.x&&e.y&&e.y2)e.x2=e.x;else if(e.y&&e.x&&e.x2)e.y2=e.y;else if(e.y&&e.x)if(!e.x2&&Mh(e.y)&&e.y.type==`quantitative`)e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Mh(e.x)&&e.x.type==`quantitative`)e.y2=e.y,e.x2={datum:0};else throw Error(`A bug!`);else throw Error(`At a minimum, either the x or y channel must be defined in the rule mark's encoding: `+JSON.stringify(e));return e}fixTickEncoding(e){let t=this.properties;e.x??={value:.5},e.y??={value:.5},e.size={value:t.thickness};let n=t.orient??uP(e);if(!n)throw Error(`Cannot infer tick orientation from the encoding. Specify the tick mark's orient explicitly.`);return dP(e,n),e}async initializeGraphics(){await super.initializeGraphics();let e=this.gl,t=lP(this.properties.strokeDash);this.dashTexture=ek(e,{level:0,mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:t,height:1}),this.dashTextureSize=t.length,this.createAndLinkShaders(rP,iP,[aP])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties;this.registerMarkUniformValue(`uMinLength`,e.minLength),this.registerMarkUniformValue(`uStrokeCap`,e.strokeCap??`butt`,e=>[`butt`,`square`,`round`].indexOf(e)),QA(this.markUniformInfo,{uDashTextureSize:+this.dashTextureSize}),this.markUniformsAltered=!0}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getItemCount(),n=new pN({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(t,this.properties.minBufferSize||0)});n.addBatches(e.facetBatches);let r=n.toArrays();this.rangeMap.migrateEntries(r.rangeMap),this.updateBufferInfo(r)}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>ej(this.programInfo,{uDashTexture:this.dashTexture})),t.push(()=>rj(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){let t=this.gl;return this.createRenderCallback((e,n)=>sj(t,this.vertexArrayInfo,t.TRIANGLE_STRIP,n,e),e)}};function lP(e){if(!e)return new Uint8Array;if(e.length==0||e.length%2||e.findIndex(e=>Math.round(e)!=e||e<1||e>1e3)>=0)throw Error(`Invalid stroke dash pattern: `+JSON.stringify(e));let t=e.reduce((e,t)=>e+t),n=new Uint8Array(t),r=!0,i=0;for(let t of e){for(;t;)n[i++]=r&&255||0,t--;r=!r}return n}function uP(e){if(!e.y)return sP;if(!e.x)return oP;let t=fP(e.x),n=fP(e.y);if(!t&&n)return sP;if(t&&!n)return oP}function dP(e,t){if(t==sP)if(e.x2=e.x,fP(e.y)){let[t,n]=mP(e.y);e.y=t,e.y2=n}else e.y={value:0},e.y2={value:1};else if(e.y2=e.y,fP(e.x)){let[t,n]=mP(e.x);e.x=t,e.x2=n}else e.x={value:0},e.x2={value:1}}function fP(e){return Mh(e)&&(e.type==`ordinal`||e.type==`nominal`)}function pP(e,t){return{...e,band:t}}function mP(e){let t=(1-(e.band??1))/2;return[pP(e,t),pP(e,1-t)]}var hP=`flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;flat out float vGamma;const int SHAPE_ARC=0;const int SHAPE_DOME=1;const int SHAPE_DIAGONAL=2;const int SHAPE_LINE=3;const int ORIENT_VERTICAL=0;const int ORIENT_HORIZONTAL=1;float distanceFromLine(vec2 pointOnLine1,vec2 pointOnLine2,vec2 point){vec2 a=point-pointOnLine1;vec2 b=pointOnLine2-pointOnLine1;vec2 proj=dot(a,b)/dot(b,b)*b;return length(a-proj);}bool isInsideViewport(vec2 point,float marginFactor){vec2 margin=uViewportSize*vec2(marginFactor);return point.x>=-margin.x&&point.x<=uViewportSize.x+margin.x&&point.y>=-margin.y&&point.y<=uViewportSize.y+margin.y;}void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 p1,p2,p3,p4;vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()))*uViewportSize;vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()))*uViewportSize;if(uShape<=SHAPE_DOME){if(uShape==SHAPE_DOME){vec2 height=vec2(0.0);if(uOrient==ORIENT_VERTICAL){p1=vec2(min(a.x,b.x),b.y);p4=vec2(max(a.x,b.x),b.y);height=vec2(0.0,a.y-b.y);if(uClampApex){if(p4.x>0.0){p1.x=max(p1.x,-p4.x);}if(p1.x<uViewportSize.x){p4.x=min(p4.x,2.0*uViewportSize.x-p1.x);}}}else{p1=vec2(b.x,min(a.y,b.y));p4=vec2(b.x,max(a.y,b.y));height=vec2(a.x-b.x,0.0);if(uClampApex){if(p4.y>0.0){p1.y=max(p1.y,-p4.y);}if(p1.y<uViewportSize.y){p4.y=min(p4.y,2.0*uViewportSize.y-p1.y);}}}vec2 controlOffset=height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}if(uShape==SHAPE_ARC){p1=a;p4=b;vec2 chordVector=p4-p1;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float chordLength=length(chordVector);if(chordLength>uMaxChordLength){if(isInsideViewport(p1,2.0)){chordLength=uMaxChordLength;p4=p1+unitChordVector*uMaxChordLength;}else if(isInsideViewport(p4,2.0)){chordLength=uMaxChordLength;p1=p4-unitChordVector*uMaxChordLength;}}float height=max(chordLength/2.0*uArcHeightFactor,uMinArcHeight);vec2 controlOffset=chordNormal*height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}}else if(uShape==SHAPE_DIAGONAL){if(uOrient==ORIENT_VERTICAL){p1=a;p2=vec2(a.x,(a.y+b.y)/2.0);p3=vec2(b.x,(a.y+b.y)/2.0);p4=b;}else{p1=a;p2=vec2((a.x+b.x)/2.0,a.y);p3=vec2((a.x+b.x)/2.0,b.y);p4=b;}}else if(uShape==SHAPE_LINE){p1=a;p2=(a+b)/2.0;p3=p2;p4=b;}vec2 strip=vec2(float(gl_VertexID/2)/float(uSegmentBreaks),float(gl_VertexID % 2)-0.5);float t=smoothstep(0.0,1.0,strip.x);vec2 C1=p4-3.0*p3+3.0*p2-p1;vec2 C2=3.0*p3-6.0*p2+3.0*p1;vec2 C3=3.0*p2-3.0*p1;vec2 C4=p1;vec2 p;if(t==0.0){p=p1;}else if(t==1.0){p=p4;}else{p=C1*t*t*t+C2*t*t+C3*t+C4;}vec2 tangent=normalize(3.0*C1*t*t+2.0*C2*t+C3);vec2 normal=vec2(-tangent.y,tangent.x);float size=getScaled_size();if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}float paddedSize=uPickingEnabled? max(size,uMinPickingSize): size+pixelSize;vNormalLengthInPixels=strip.y*paddedSize;if(uShape==SHAPE_ARC&&uArcFadingDistance[0]>0.0&&uArcFadingDistance[1]>0.0&&(!uNoFadingOnPointSelection||!isPointSelected())){float d=distanceFromLine(p1,p4,p);float distanceOpacity=smoothstep(uArcFadingDistance[1],uArcFadingDistance[0],d);opacity*=distanceOpacity;if(distanceOpacity<=0.0){vNormalLengthInPixels=0.0;}}p+=normal*vNormalLengthInPixels;gl_Position=pixelsToNdc(p);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vSize=paddedSize;setupPicking();}`,gP=`flat in vec4 vColor;flat in float vSize;in float vNormalLengthInPixels;flat in float vGamma;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distance=abs(vNormalLengthInPixels);float opacity=clamp(((vSize/2.0-distance)*dpr),0.0,1.0);opacity=pow(opacity,vGamma);fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}`,_P=`layout(std140)uniform Mark{uniform float uArcHeightFactor;uniform float uMinArcHeight;uniform float uMinPickingSize;uniform int uShape;uniform int uOrient;uniform bool uClampApex;uniform float uMaxChordLength;uniform vec2 uArcFadingDistance;uniform bool uNoFadingOnPointSelection;uniform int uSegmentBreaks;
647
+ };`,OP=`horizontal`,kP=`vertical`,AP=class extends lP{constructor(e){super(e),this.dashTextureSize=0}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`x2`,`y`,`y2`,`size`,`color`,`opacity`]}getSupportedChannels(){return[...super.getSupportedChannels(),`x2`,`y2`,`size`]}fixEncoding(e){if(this.getType()==`tick`)return this.fixTickEncoding(e);if(!(e.x&&e.y&&e.x2&&e.y2))if(e.x&&e.x2&&!e.y)e.y={value:.5},e.y2=e.y;else if(e.y&&e.y2&&!e.x)e.x={value:.5},e.x2=e.x;else if(e.x&&!e.y)e.y={value:0},e.y2={value:1},e.x2=e.x;else if(e.y&&!e.x)e.x={value:0},e.x2={value:1},e.y2=e.y;else if(e.x&&e.y&&e.y2)e.x2=e.x;else if(e.y&&e.x&&e.x2)e.y2=e.y;else if(e.y&&e.x)if(!e.x2&&Ah(e.y)&&e.y.type==`quantitative`)e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Ah(e.x)&&e.x.type==`quantitative`)e.y2=e.y,e.x2={datum:0};else throw Error(`A bug!`);else throw Error(`At a minimum, either the x or y channel must be defined in the rule mark's encoding: `+JSON.stringify(e));return e}fixTickEncoding(e){let t=this.properties;e.x??={value:.5},e.y??={value:.5},e.size={value:t.thickness};let n=t.orient??MP(e);if(!n)throw Error(`Cannot infer tick orientation from the encoding. Specify the tick mark's orient explicitly.`);return NP(e,n),e}async initializeGraphics(){await super.initializeGraphics();let e=this.gl,t=jP(this.properties.strokeDash);this.dashTexture=Sk(e,{level:0,mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:t,height:1}),this.dashTextureSize=t.length,this.createAndLinkShaders(TP,EP,[DP])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties;this.registerMarkUniformValue(`uMinLength`,e.minLength),this.registerMarkUniformValue(`uStrokeCap`,e.strokeCap??`butt`,e=>[`butt`,`square`,`round`].indexOf(e)),bj(this.markUniformInfo,{uDashTextureSize:+this.dashTextureSize}),this.markUniformsAltered=!0}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getItemCount(),n=new FN({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(t,this.properties.minBufferSize||0)});n.addBatches(e.facetBatches);let r=n.toArrays();this.rangeMap.migrateEntries(r.rangeMap),this.updateBufferInfo(r)}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>Sj(this.programInfo,{uDashTexture:this.dashTexture})),t.push(()=>Tj(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){let t=this.gl;return this.createRenderCallback((e,n)=>kj(t,this.vertexArrayInfo,t.TRIANGLE_STRIP,n,e),e)}};function jP(e){if(!e)return new Uint8Array;if(e.length==0||e.length%2||e.findIndex(e=>Math.round(e)!=e||e<1||e>1e3)>=0)throw Error(`Invalid stroke dash pattern: `+JSON.stringify(e));let t=e.reduce((e,t)=>e+t),n=new Uint8Array(t),r=!0,i=0;for(let t of e){for(;t;)n[i++]=r&&255||0,t--;r=!r}return n}function MP(e){if(!e.y)return kP;if(!e.x)return OP;let t=PP(e.x),n=PP(e.y);if(!t&&n)return kP;if(t&&!n)return OP}function NP(e,t){if(t==kP)if(e.x2=e.x,PP(e.y)){let[t,n]=IP(e.y);e.y=t,e.y2=n}else e.y={value:0},e.y2={value:1};else if(e.y2=e.y,PP(e.x)){let[t,n]=IP(e.x);e.x=t,e.x2=n}else e.x={value:0},e.x2={value:1}}function PP(e){return Ah(e)&&(e.type==`ordinal`||e.type==`nominal`)}function FP(e,t){return{...e,band:t}}function IP(e){let t=(1-(e.band??1))/2;return[FP(e,t),FP(e,1-t)]}var LP=`flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;flat out float vGamma;const int SHAPE_ARC=0;const int SHAPE_DOME=1;const int SHAPE_DIAGONAL=2;const int SHAPE_LINE=3;const int ORIENT_VERTICAL=0;const int ORIENT_HORIZONTAL=1;float distanceFromLine(vec2 pointOnLine1,vec2 pointOnLine2,vec2 point){vec2 a=point-pointOnLine1;vec2 b=pointOnLine2-pointOnLine1;vec2 proj=dot(a,b)/dot(b,b)*b;return length(a-proj);}bool isInsideViewport(vec2 point,float marginFactor){vec2 margin=uViewportSize*vec2(marginFactor);return point.x>=-margin.x&&point.x<=uViewportSize.x+margin.x&&point.y>=-margin.y&&point.y<=uViewportSize.y+margin.y;}float inverseSmoothstep(float t){t=clamp(t,0.0,1.0);return 0.5-sin(asin(1.0-2.0*t)/3.0);}/***Remaps the parameter t to concentrate vertices to the part that is visible in the viewport.*This keeps the tightly bent endpoints smooth even when zooming in very close.*/float remapVisibleChordParameter(float stripT,float chordStart,float chordEnd,float viewportLength){float chordMin=min(chordStart,chordEnd);float chordMax=max(chordStart,chordEnd);float chordSpan=chordMax-chordMin;if(chordSpan<=0.0){return 0.0;}float visibleChordMin=max(chordMin,0.0);float visibleChordMax=min(chordMax,viewportLength);if(visibleChordMax<=visibleChordMin){return stripT;}float visibleTMin=inverseSmoothstep((visibleChordMin-chordMin)/chordSpan);float visibleTMax=inverseSmoothstep((visibleChordMax-chordMin)/chordSpan);float visibleTSpan=visibleTMax-visibleTMin;float offscreenTSpan=visibleTMin+(1.0-visibleTMax);if(offscreenTSpan<=0.0){return stripT;}float visibleShare=clamp(0.75+(1.0-visibleTSpan)*0.2,0.75,0.95);float offscreenShare=1.0-visibleShare;float leftShare=offscreenShare*visibleTMin/offscreenTSpan;float rightShare=offscreenShare*(1.0-visibleTMax)/offscreenTSpan;if(stripT<=leftShare){return leftShare>0.0 ? mix(0.0,visibleTMin,stripT/leftShare): visibleTMin;}float visibleStart=leftShare;float visibleEnd=visibleStart+visibleShare;if(stripT<=visibleEnd){return visibleShare>0.0? mix(visibleTMin,visibleTMax,(stripT-visibleStart)/visibleShare): visibleTMin;}return rightShare>0.0? mix(visibleTMax,1.0,(stripT-visibleEnd)/rightShare): visibleTMax;}void clampChordToViewport(inout vec2 p1,inout vec2 p4,inout float chordLength){if(chordLength>uMaxChordLength){vec2 chordVector=p4-p1;vec2 unitChordVector=normalize(chordVector);if(isInsideViewport(p1,2.0)){chordLength=uMaxChordLength;p4=p1+unitChordVector*uMaxChordLength;}else if(isInsideViewport(p4,2.0)){chordLength=uMaxChordLength;p1=p4-unitChordVector*uMaxChordLength;}}}void clampDomeApex(inout vec2 p1,inout vec2 p4,int orient){if(orient==ORIENT_VERTICAL){if(p4.x>0.0){p1.x=max(p1.x,-p4.x);}if(p1.x<uViewportSize.x){p4.x=min(p4.x,2.0*uViewportSize.x-p1.x);}}else{if(p4.y>0.0){p1.y=max(p1.y,-p4.y);}if(p1.y<uViewportSize.y){p4.y=min(p4.y,2.0*uViewportSize.y-p1.y);}}}void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 p1,p2,p3,p4;vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()))*uViewportSize;vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()))*uViewportSize;if(uShape<=SHAPE_DOME){if(uShape==SHAPE_DOME){vec2 height=vec2(0.0);if(uOrient==ORIENT_VERTICAL){p1=vec2(min(a.x,b.x),b.y);p4=vec2(max(a.x,b.x),b.y);height=vec2(0.0,a.y-b.y);float chordLength=length(p4-p1);clampChordToViewport(p1,p4,chordLength);if(uClampApex){clampDomeApex(p1,p4,ORIENT_VERTICAL);}}else{p1=vec2(b.x,min(a.y,b.y));p4=vec2(b.x,max(a.y,b.y));height=vec2(a.x-b.x,0.0);float chordLength=length(p4-p1);clampChordToViewport(p1,p4,chordLength);if(uClampApex){clampDomeApex(p1,p4,ORIENT_HORIZONTAL);}}vec2 controlOffset=height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}if(uShape==SHAPE_ARC){p1=a;p4=b;vec2 chordVector=p4-p1;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float chordLength=length(chordVector);clampChordToViewport(p1,p4,chordLength);float height=max(chordLength/2.0*uArcHeightFactor,uMinArcHeight);vec2 controlOffset=chordNormal*height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}}else if(uShape==SHAPE_DIAGONAL){if(uOrient==ORIENT_VERTICAL){p1=a;p2=vec2(a.x,(a.y+b.y)/2.0);p3=vec2(b.x,(a.y+b.y)/2.0);p4=b;}else{p1=a;p2=vec2((a.x+b.x)/2.0,a.y);p3=vec2((a.x+b.x)/2.0,b.y);p4=b;}}else if(uShape==SHAPE_LINE){p1=a;p2=(a+b)/2.0;p3=p2;p4=b;}vec2 strip=vec2(float(gl_VertexID/2)/float(uSegmentBreaks),float(gl_VertexID % 2)-0.5);float t=strip.x;if(uShape==SHAPE_DOME){if(uOrient==ORIENT_VERTICAL){t=remapVisibleChordParameter(strip.x,p1.x,p4.x,uViewportSize.x);}else{t=remapVisibleChordParameter(strip.x,p1.y,p4.y,uViewportSize.y);}}else if(uShape==SHAPE_ARC){if(a.y==b.y){t=remapVisibleChordParameter(strip.x,p1.x,p4.x,uViewportSize.x);}else if(a.x==b.x){t=remapVisibleChordParameter(strip.x,p1.y,p4.y,uViewportSize.y);}}vec2 p;vec2 tangent;vec2 q1=mix(p1,p2,t);vec2 q2=mix(p2,p3,t);vec2 q3=mix(p3,p4,t);vec2 r1=mix(q1,q2,t);vec2 r2=mix(q2,q3,t);p=mix(r1,r2,t);tangent=3.0*(r2-r1);tangent=normalize(tangent);vec2 normal=vec2(-tangent.y,tangent.x);float size=getScaled_size();if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}float paddedSize=uPickingEnabled? max(size,uMinPickingSize): size+pixelSize;vNormalLengthInPixels=strip.y*paddedSize;if(uShape==SHAPE_ARC&&uArcFadingDistance[0]>0.0&&uArcFadingDistance[1]>0.0&&(!uNoFadingOnPointSelection||!isPointSelected())){float d=distanceFromLine(p1,p4,p);float distanceOpacity=smoothstep(uArcFadingDistance[1],uArcFadingDistance[0],d);opacity*=distanceOpacity;if(distanceOpacity<=0.0){vNormalLengthInPixels=0.0;}}p+=normal*vNormalLengthInPixels;gl_Position=pixelsToNdc(p);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vSize=paddedSize;setupPicking();}`,RP=`flat in vec4 vColor;flat in float vSize;in float vNormalLengthInPixels;flat in float vGamma;out lowp vec4 fragColor;void main(void){float dpr=uDevicePixelRatio;float distance=abs(vNormalLengthInPixels);float opacity=clamp(((vSize/2.0-distance)*dpr),0.0,1.0);opacity=pow(opacity,vGamma);fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}`,zP=`layout(std140)uniform Mark{uniform float uArcHeightFactor;uniform float uMinArcHeight;uniform float uMinPickingSize;uniform int uShape;uniform int uOrient;uniform bool uClampApex;uniform float uMaxChordLength;uniform vec2 uArcFadingDistance;uniform bool uNoFadingOnPointSelection;uniform int uSegmentBreaks;
647
648
  #pragma markUniforms
648
- };`,vP=[`arc`,`dome`,`diagonal`,`line`],yP=[`vertical`,`horizontal`],bP=class extends VN{constructor(e){super(e),this._baseInstanceExt=void 0}get defaultHitTestMode(){return`endpoints`}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`x2`,`y`,`y2`,`size`,`color`,`opacity`]}getSupportedChannels(){return[...super.getSupportedChannels(),`x2`,`y2`,`size`]}fixEncoding(e){return e.x2||(Mh(e.x)?e.x2={datum:0}:e.x2=e.x),e.y2||(Mh(e.y)?e.y2={datum:0}:e.y2=e.y),e}async initializeGraphics(){await super.initializeGraphics(),this._baseInstanceExt=this.gl.getExtension(`WEBGL_draw_instanced_base_vertex_base_instance`),this.createAndLinkShaders(hP,gP,[_P])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties;this.registerMarkUniformValue(`uArcFadingDistance`,e.arcFadingDistance,e=>e||[0,0]),this.registerMarkUniformValue(`uArcHeightFactor`,e.arcHeightFactor),this.registerMarkUniformValue(`uMinArcHeight`,e.minArcHeight),this.registerMarkUniformValue(`uMinPickingSize`,e.minPickingSize),this.registerMarkUniformValue(`uShape`,e.linkShape,e=>vP.indexOf(e)),this.registerMarkUniformValue(`uOrient`,e.orient,e=>yP.indexOf(e)),this.registerMarkUniformValue(`uClampApex`,e.clampApex,e=>!!e),this.registerMarkUniformValue(`uMaxChordLength`,e.maxChordLength),this.registerMarkUniformValue(`uSegmentBreaks`,e.segments,e=>e),this.registerMarkUniformValue(`uNoFadingOnPointSelection`,e.noFadingOnPointSelection,e=>!!e)}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getItemCount(),n=new hN({encoders:this.encoders,attributes:this.getAttributes(),numItems:t});n.addBatches(e.facetBatches);let r=n.toArrays();this.rangeMap.migrateEntries(r.rangeMap),this.arrays=Object.fromEntries(Object.entries(r.arrays).map(([e,t])=>[e,{...t,data:void 0}])),this.updateBufferInfo(r)}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>this.bindOrSetMarkUniformBlock()),this._baseInstanceExt?t.push(()=>rj(this.gl,this.programInfo,this.vertexArrayInfo)):t.push(()=>this.gl.bindVertexArray(null)),t}render(e){let t=this.gl,n=()=>(this.markUniformInfo.uniforms.uSegmentBreaks[0]+1)*2;return this._baseInstanceExt?this.createRenderCallback((e,r)=>{this._baseInstanceExt.drawArraysInstancedBaseInstanceWEBGL(t.TRIANGLE_STRIP,0,n(),r,e)},e):this.createRenderCallback((e,r)=>{for(let t of Object.entries(this.bufferInfo.attribs)){let[n,r]=t;r.buffer&&r.numComponents&&r.divisor&&(r.offset=e*this.arrays[n].numComponents*this.bytesPerElement.get(n))}rj(t,this.programInfo,this.bufferInfo),t.drawArraysInstanced(t.TRIANGLE_STRIP,0,n(),r)},e)}},xP=`in mediump vec2 vertexCoord;in lowp vec2 textureCoord;in float width;out vec2 vTexCoord;out float vEdgeFadeOpacity;flat out vec4 vColor;flat out float vSlope;flat out float vGamma;struct RangeResult{float pos;float scale;};float minValue(vec4 v){return min(min(v.x,v.y),min(v.z,v.w));}float maxValue(vec4 v){return max(max(v.x,v.y),max(v.z,v.w));}/***All measures are in[0,1]*/RangeResult positionInsideRange(float a,float b,float width,float padding,int align,bool flush){float span=b-a;float paddedWidth=width+2.0*padding;if(a>1.0||b<0.0){return RangeResult(0.0,0.0);}float extra=max(0.0,span-paddedWidth);float pos;if(align==0){float centre=a+b;if(flush){float leftOver=max(0.0,paddedWidth-centre);centre+=min(leftOver,extra);float rightOver=max(0.0,paddedWidth+centre-2.0);centre-=min(rightOver,extra);}pos=centre/2.0;}else if(align<0){float edge=a;if(flush){float over=max(0.0,-edge);edge+=min(over,extra);}pos=edge+padding;}else{float edge=b;if(flush){float over=max(0.0,edge-1.0);edge-=min(over,extra);}pos=edge-padding;}float scale=clamp((span-padding)/paddedWidth,0.0,1.0);return RangeResult(pos,scale);}vec2 calculateRotatedDimensions(float width,mat2 rotationMatrix){vec2 a=abs(rotationMatrix*vec2(width/2.0,0.5));vec2 b=abs(rotationMatrix*vec2(width/2.0,-0.5));return vec2(max(a.x,b.x),max(a.y,b.y))*2.0;}ivec2 fixAlignForAngle(ivec2 align,float angleInDegrees){float a=mod(angleInDegrees+45.0,360.0);int x=align.x;int y=-align.y;if(a<90.0){return ivec2(x,y);}else if(a<180.0){return ivec2(y,-x);}else if(a<270.0){return ivec2(-x,y);}else{return ivec2(-y,x);}}void main(void){float opacity=getScaled_opacity()*uViewOpacity;vec2 size=vec2(getScaled_size());float x=getScaled_x();float y=getScaled_y();float scale=1.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);mat2 rotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);vec2 flushSize=calculateRotatedDimensions(width,rotationMatrix);
649
+ };`,BP=[`arc`,`dome`,`diagonal`,`line`],VP=[`vertical`,`horizontal`],HP=class extends lP{constructor(e){super(e),this._baseInstanceExt=void 0}get defaultHitTestMode(){return`endpoints`}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`x2`,`y`,`y2`,`size`,`color`,`opacity`]}getSupportedChannels(){return[...super.getSupportedChannels(),`x2`,`y2`,`size`]}fixEncoding(e){return e.x2||(Ah(e.x)?e.x2={datum:0}:e.x2=e.x),e.y2||(Ah(e.y)?e.y2={datum:0}:e.y2=e.y),e}async initializeGraphics(){await super.initializeGraphics(),this._baseInstanceExt=this.gl.getExtension(`WEBGL_draw_instanced_base_vertex_base_instance`),this.createAndLinkShaders(LP,RP,[zP])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties;this.registerMarkUniformValue(`uArcFadingDistance`,e.arcFadingDistance,e=>e||[0,0]),this.registerMarkUniformValue(`uArcHeightFactor`,e.arcHeightFactor),this.registerMarkUniformValue(`uMinArcHeight`,e.minArcHeight),this.registerMarkUniformValue(`uMinPickingSize`,e.minPickingSize),this.registerMarkUniformValue(`uShape`,e.linkShape,e=>BP.indexOf(e)),this.registerMarkUniformValue(`uOrient`,e.orient,e=>VP.indexOf(e)),this.registerMarkUniformValue(`uClampApex`,e.clampApex,e=>!!e),this.registerMarkUniformValue(`uMaxChordLength`,e.maxChordLength),this.registerMarkUniformValue(`uSegmentBreaks`,e.segments,e=>e),this.registerMarkUniformValue(`uNoFadingOnPointSelection`,e.noFadingOnPointSelection,e=>!!e)}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getItemCount(),n=new LN({encoders:this.encoders,attributes:this.getAttributes(),numItems:t});n.addBatches(e.facetBatches);let r=n.toArrays();this.rangeMap.migrateEntries(r.rangeMap),this.arrays=Object.fromEntries(Object.entries(r.arrays).map(([e,t])=>[e,{...t,data:void 0}])),this.updateBufferInfo(r)}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>this.bindOrSetMarkUniformBlock()),this._baseInstanceExt?t.push(()=>Tj(this.gl,this.programInfo,this.vertexArrayInfo)):t.push(()=>this.gl.bindVertexArray(null)),t}render(e){let t=this.gl,n=()=>(this.markUniformInfo.uniforms.uSegmentBreaks[0]+1)*2;return this._baseInstanceExt?this.createRenderCallback((e,r)=>{this._baseInstanceExt.drawArraysInstancedBaseInstanceWEBGL(t.TRIANGLE_STRIP,0,n(),r,e)},e):this.createRenderCallback((e,r)=>{for(let t of Object.entries(this.bufferInfo.attribs)){let[n,r]=t;r.buffer&&r.numComponents&&r.divisor&&(r.offset=e*this.arrays[n].numComponents*this.bytesPerElement.get(n))}Tj(t,this.programInfo,this.bufferInfo),t.drawArraysInstanced(t.TRIANGLE_STRIP,0,n(),r)},e)}},UP=`in mediump vec2 vertexCoord;in lowp vec2 textureCoord;in float width;out vec2 vTexCoord;out float vEdgeFadeOpacity;flat out vec4 vColor;flat out float vSlope;flat out float vGamma;struct RangeResult{float pos;float scale;};float minValue(vec4 v){return min(min(v.x,v.y),min(v.z,v.w));}float maxValue(vec4 v){return max(max(v.x,v.y),max(v.z,v.w));}/***All measures are in[0,1]*/RangeResult positionInsideRange(float a,float b,float width,float padding,int align,bool flush){float span=b-a;float paddedWidth=width+2.0*padding;if(a>1.0||b<0.0){return RangeResult(0.0,0.0);}float extra=max(0.0,span-paddedWidth);float pos;if(align==0){float centre=a+b;if(flush){float leftOver=max(0.0,paddedWidth-centre);centre+=min(leftOver,extra);float rightOver=max(0.0,paddedWidth+centre-2.0);centre-=min(rightOver,extra);}pos=centre/2.0;}else if(align<0){float edge=a;if(flush){float over=max(0.0,-edge);edge+=min(over,extra);}pos=edge+padding;}else{float edge=b;if(flush){float over=max(0.0,edge-1.0);edge-=min(over,extra);}pos=edge-padding;}float scale=clamp((span-padding)/paddedWidth,0.0,1.0);return RangeResult(pos,scale);}vec2 calculateRotatedDimensions(float width,mat2 rotationMatrix){vec2 a=abs(rotationMatrix*vec2(width/2.0,0.5));vec2 b=abs(rotationMatrix*vec2(width/2.0,-0.5));return vec2(max(a.x,b.x),max(a.y,b.y))*2.0;}ivec2 fixAlignForAngle(ivec2 align,float angleInDegrees){float a=mod(angleInDegrees+45.0,360.0);int x=align.x;int y=-align.y;if(a<90.0){return ivec2(x,y);}else if(a<180.0){return ivec2(y,-x);}else if(a<270.0){return ivec2(-x,y);}else{return ivec2(-y,x);}}void main(void){float opacity=getScaled_opacity()*uViewOpacity;vec2 size=vec2(getScaled_size());float x=getScaled_x();float y=getScaled_y();float scale=1.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);mat2 rotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);vec2 flushSize=calculateRotatedDimensions(width,rotationMatrix);
649
650
  #if defined(x2_DEFINED) || defined(y2_DEFINED)
650
651
  ivec2 align=fixAlignForAngle(uAlign,angleInDegrees);
651
652
  #else
@@ -658,21 +659,21 @@ vec2 pos=applySampleFacet(vec2(x,y));
658
659
  #ifdef y2_DEFINED
659
660
  float y2=getScaled_y2();vec2 pos2=applySampleFacet(vec2(x,y2));if(uLogoLetter){size.y=(pos2.y-pos.y)*uViewportSize.y;pos.y+=(pos2.y-pos.y)/2.0;}else{RangeResult result=positionInsideRange(min(pos.y,pos2.y),max(pos.y,pos2.y),size.y*scale*flushSize.y/uViewportSize.y,uPaddingY/uViewportSize.y,align.y,uFlushY);pos.y=result.pos;scale*=result.scale;}
660
661
  #endif
661
- if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator*uDevicePixelRatio);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}`,SP=`uniform sampler2D uTexture;in vec2 vTexCoord;in float vEdgeFadeOpacity;flat in vec4 vColor;flat in float vSlope;flat in float vGamma;out lowp vec4 fragColor;float median(float r,float g,float b){return max(min(r,g),min(max(r,g),b));}float getDist(vec2 uv){vec3 c=texture(uTexture,uv).rgb;return 1.0-median(c.r,c.g,c.b);}/***Calculates the super-sampled distance to the edge.*This is used to avoid aliasing when rendering small text,*as mip-mapping cannot be used here.*The distance is averaged over a grid of n x n samples.*/float getSuperDist(vec2 uv){vec2 dx=dFdx(uv);vec2 dy=dFdy(uv);float n=2.0;float sum=0.0;for(float x=0.5;x<n;x++){for(float y=0.5;y<n;y++){sum+=getDist(uv+x/n*dx+y/n*dy);}}return sum/(n*n);}void main(){float sigDist=getSuperDist(vTexCoord);float slope=vSlope;if(uLogoLetter){slope=0.7/length(vec2(dFdy(sigDist),dFdx(sigDist)));}float opa=clamp((sigDist-0.5)*slope+0.5,0.0,1.0);opa*=clamp(vEdgeFadeOpacity,0.0,1.0);opa=pow(opa,vGamma);fragColor=vColor*opa;if(uPickingEnabled){fragColor=vPickingColor;}}`,CP=`layout(std140)uniform Mark{uniform mediump float uSdfNumerator;uniform mediump vec2 uD;uniform mediump vec4 uViewportEdgeFadeWidth;uniform mediump vec4 uViewportEdgeFadeDistance;uniform bool uSqueeze;uniform bool uLogoLetter;uniform lowp ivec2 uAlign;uniform mediump float uPaddingX;uniform bool uFlushX;uniform mediump float uPaddingY;uniform bool uFlushY;
662
+ if(scale<1.0){if(uSqueeze){vec2 scaleFadeExtent=vec2(3.0,6.0)/size;if(scale<scaleFadeExtent[0]){gl_Position=vec4(0.0);return;}size*=scale;opacity*=linearstep(scaleFadeExtent[0],scaleFadeExtent[1],scale);}else if(scale<1.0){gl_Position=vec4(0.0);return;}}vec2 charPos=rotationMatrix*(vertexCoord*size+uD);vec2 unitPos=pos+charPos/uViewportSize;gl_Position=unitToNdc(unitPos);vSlope=max(1.0,min(size.x,size.y)/uSdfNumerator*uDevicePixelRatio);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vTexCoord=textureCoord;if(maxValue(uViewportEdgeFadeDistance)>-pow(10.0,10.0)){vEdgeFadeOpacity=minValue(((vec4(1.0,1.0,0.0,0.0)+vec4(-1.0,-1.0,1.0,1.0)*unitPos.yxyx)*uViewportSize.yxyx-uViewportEdgeFadeDistance)/uViewportEdgeFadeWidth);}else{vEdgeFadeOpacity=1.0;}setupPicking();}`,WP=`uniform sampler2D uTexture;in vec2 vTexCoord;in float vEdgeFadeOpacity;flat in vec4 vColor;flat in float vSlope;flat in float vGamma;out lowp vec4 fragColor;float median(float r,float g,float b){return max(min(r,g),min(max(r,g),b));}float getDist(vec2 uv){vec3 c=texture(uTexture,uv).rgb;return 1.0-median(c.r,c.g,c.b);}/***Calculates the super-sampled distance to the edge.*This is used to avoid aliasing when rendering small text,*as mip-mapping cannot be used here.*The distance is averaged over a grid of n x n samples.*/float getSuperDist(vec2 uv){vec2 dx=dFdx(uv);vec2 dy=dFdy(uv);float n=2.0;float sum=0.0;for(float x=0.5;x<n;x++){for(float y=0.5;y<n;y++){sum+=getDist(uv+x/n*dx+y/n*dy);}}return sum/(n*n);}void main(){float sigDist=getSuperDist(vTexCoord);float slope=vSlope;if(uLogoLetter){slope=0.7/length(vec2(dFdy(sigDist),dFdx(sigDist)));}float opa=clamp((sigDist-0.5)*slope+0.5,0.0,1.0);opa*=clamp(vEdgeFadeOpacity,0.0,1.0);opa=pow(opa,vGamma);fragColor=vColor*opa;if(uPickingEnabled){fragColor=vPickingColor;}}`,GP=`layout(std140)uniform Mark{uniform mediump float uSdfNumerator;uniform mediump vec2 uD;uniform mediump vec4 uViewportEdgeFadeWidth;uniform mediump vec4 uViewportEdgeFadeDistance;uniform bool uSqueeze;uniform bool uLogoLetter;uniform lowp ivec2 uAlign;uniform mediump float uPaddingX;uniform bool uFlushX;uniform mediump float uPaddingY;uniform bool uFlushY;
662
663
  #pragma markUniforms
663
- };`,wP={left:-1,center:0,right:1},TP={top:-1,middle:0,bottom:1,alphabetic:1,baseline:1},EP=class extends VN{constructor(e){super(e),this.font=this.properties.font?e.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):e.context.fontManager.getDefaultFont(),this.setupExprRefsNeedingGraphicsUpdate([`text`,`fitToBand`,`logoLetters`])}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`x2`,`y`,`y2`,`color`,`size`,`opacity`,`angle`]}getSupportedChannels(){return[...super.getSupportedChannels(),`x2`,`y2`,`size`,`text`,`angle`]}fixEncoding(e){for(let t of zh)this.properties.fitToBand?UN(e,t):WN(e,t);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(xP,SP,[CP])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties,t=this.font.metrics.common.base*.35*(this.properties.logoLetters?.5:1);this.registerMarkUniformValue(`uPaddingX`,e.paddingX),this.registerMarkUniformValue(`uPaddingY`,e.paddingY),this.registerMarkUniformValue(`uFlushX`,e.flushX,e=>!!e),this.registerMarkUniformValue(`uFlushY`,e.flushY,e=>!!e),this.registerMarkUniformValue(`uSqueeze`,e.squeeze,e=>!!e),QA(this.markUniformInfo,{uAlign:[wP[e.align],TP[e.baseline]],uD:[e.dx,-e.dy],uLogoLetter:!!e.logoLetters,uSdfNumerator:t,uViewportEdgeFadeWidth:[e.viewportEdgeFadeWidthTop,e.viewportEdgeFadeWidthRight,e.viewportEdgeFadeWidthBottom,e.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[e.viewportEdgeFadeDistanceTop,e.viewportEdgeFadeDistanceRight,e.viewportEdgeFadeDistanceBottom,e.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getData(),n=this.encoding,r=this.encoders.text,i=0,a=`format`in n.text?cr(n.text.format):e=>e;for(let e of t){let t=a(r(e)),n=N(t)?t:t===null?``:``+t;i+=n&&n.length||0}let o=new gN({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(i,this.properties.minBufferSize||1024)});o.addBatches(e.facetBatches);let s=o.toArrays();this.rangeMap.migrateEntries(s.rangeMap),this.updateBufferInfo(s)}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>{ej(this.programInfo,{uTexture:this.font.texture})}),t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>rj(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){let t=this.gl;return this.createRenderCallback((e,n)=>sj(t,this.vertexArrayInfo,t.TRIANGLES,n,e),e)}};function DP(e,t,{spacing:n,devicePixelRatio:r,offset:i,reverse:a}={}){n||=0,i||=0;let o=0,s=0;for(let t of e)o+=NP(t.px)+(MP(t)?0:n),s+=NP(t.grow);o-=n;let c=Math.max(0,t-o),l=r===void 0?e=>e:e=>Math.round(e*r)/r,u=[],d=[],f=e=>{let t=u.length;if(!t)return;let r=(e?n:0)*(a?-1:1);p-=r;for(let e=0;e<t;e++)d.push({location:p+(e+1)/(t+1)*r,size:0});p+=r,u.length=0},p=a?Math.max(t,o):0+i;if(e.length==1&&MP(e[0]))return[{location:p,size:0}];for(let t=0;t<e.length;t++){let r=e[t];if(MP(r))u.push(r);else{f(d.length>0);let e=NP(r.px)+(s?NP(r.grow)/s*c:0);a&&(p-=e),d.push({location:l(p),size:l(e)}),a?p-=n:p+=e+n}}return p+=a?n:-n,f(!1),d}function OP(e){let t=0,n=0;for(let r of e)t=Math.max(t,r.px??0),n=Math.max(n,r.grow??0);return{px:t,grow:n}}var kP=class e{constructor(e,t){this.width=e,this.height=t}addPadding(e){return this.#e(e.width,e.height)}subtractPadding(e){return this.#e(-e.width,-e.height)}#e(t,n){return new e({px:(this.width.px??0)+t,grow:this.width.grow},{px:(this.height.px??0)+n,grow:this.height.grow})}isGrowing(){return!!(this.width.grow||this.height.grow)}},AP=Object.freeze({px:0,grow:0}),jP=new kP(AP,AP);function MP(e){return!e.px&&!e.grow}function NP(e){return e||0}function PP(e){return e&&(M(e.px)||M(e.grow))}function FP(e){if(ML(e))throw Error(`parseSizeDef does not accept step-based sizes.`);if(PP(e))return e;if(M(e))return{px:e,grow:0};if(e===`container`||!e)return{px:0,grow:1};throw Error(`Invalid sizeDef: ${e}`)}var IP=class e{constructor(e,t,n,r){this.top=e||0,this.right=t||0,this.bottom=n||0,this.left=r||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(t){return t<=0?this:new e(this.top+t,this.right+t,this.bottom+t,this.left+t)}add(t){return new e(this.top+t.top,this.right+t.right,this.bottom+t.bottom,this.left+t.left)}subtract(t){return new e(this.top-t.top,this.right-t.right,this.bottom-t.bottom,this.left-t.left)}union(t){return new e(Math.max(this.top,t.top),Math.max(this.right,t.right),Math.max(this.bottom,t.bottom),Math.max(this.left,t.left))}getHorizontal(){return new e(0,this.right,0,this.left)}getVertical(){return new e(this.top,0,this.bottom,0)}get horizontalTotal(){return this.left+this.right}get verticalTotal(){return this.top+this.bottom}static createFromConfig(e){return typeof e==`number`?this.createUniformPadding(e):e?this.createFromRecord(e):LP}static createFromRecord(t){return new e(t.top,t.right,t.bottom,t.left)}static zero(){return LP}static createUniformPadding(t){return new e(t,t,t,t)}},LP=IP.createUniformPadding(0);Object.freeze(LP);var RP=/^([A-Za-z]+:)?\/\//;function zP(e,t){if(t&&RP.test(t))return t;let n=typeof e==`function`?e():e;if(!n)return t;if(!t)return n;if(/[#?]/.test(n))throw Error(`Cannot append to a url with query or hash. Append: ${t}, base: ${n}`);return VP(n)+t}function BP(e,t,n=HP()){let r=typeof e==`function`?e():e;if(!t)return r;try{if(r){let e=n?new URL(r,n).href:new URL(r).href;return new URL(t,e).href}else if(n)return new URL(t,n).href}catch{}return zP(r,t)}function VP(e){let t=e.replace(/[^/]*$/,``);return t===``?void 0:t.endsWith(`://`)?e+`/`:t}function HP(){if(typeof document<`u`&&document.baseURI)return document.baseURI;if(typeof window<`u`&&window.location?.href)return window.location.href}var UP=class{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,t){let n=this.length++;for(;n>0;){let e=n-1>>1,r=this.values[e];if(t>=r)break;this.ids[n]=this.ids[e],this.values[n]=r,n=e}this.ids[n]=e,this.values[n]=t}pop(){if(this.length===0)return;let e=this.ids,t=this.values,n=e[0],r=--this.length;if(r>0){let n=e[r],i=t[r],a=0,o=r>>1;for(;a<o;){let n=(a<<1)+1,o=n+1,s=n+(o<r&+(t[o]<t[n]));if(t[s]>=i)break;e[a]=e[s],t[a]=t[s],a=s}e[a]=n,t[a]=i}return n}peek(){return this.length>0?this.ids[0]:void 0}peekValue(){return this.length>0?this.values[0]:void 0}shrink(){this.ids.length=this.values.length=this.length}},WP=Symbol(`runtimeNode`),GP=1e6;function KP(e){return e?(t,n)=>{e.addDisposer(t,n)}:()=>void 0}function qP(e,t){let n={id:e.id,name:e.name,kind:e.kind,get(){return e.value},subscribe(t){return e.listeners.add(t),()=>{e.listeners.delete(t)}}};return Object.defineProperty(n,WP,{enumerable:!1,configurable:!1,writable:!1,value:e}),t?Object.assign(n,{set(e){t(e)}}):n}function JP(e){let t=e[WP];if(!t)throw Error(`ParamRef is not bound to this graph runtime. Expected runtime-created ref.`);return t}function YP(e){return typeof e.rank==`number`?e.rank:JP(e).rank}function XP(e){for(let t of e)t()}var ZP=class{#e=1;#t=1;#n=0;#r=!1;#i=!1;#a=new Set;#o=new Set;#s=new UP;#c=new UP;#l=new Set;#u;constructor(e={}){this.#u=KP(e.lifecycleRegistry)}createWritable(e,t,n,r,i={}){let a=`n`+ this.#e++,o=i.notify??!0,s={id:a,name:t,kind:n,value:r,rank:0,disposed:!1,listeners:new Set,subscribe(e){return s.listeners.add(e),()=>{s.listeners.delete(e)}}};return this.#u(e,()=>{s.disposed=!0,s.listeners.clear()}),qP(s,e=>{if(s.disposed)throw Error(`Cannot set disposed parameter "`+t+`" (`+a+`).`);e!==s.value&&(s.value=e,o&&(XP(s.listeners),this.#m()))})}computed(e,t,n,r){let i=n.reduce((e,t)=>Math.max(e,YP(t)),0),a={id:`n`+ this.#e++,name:t,kind:`derived`,rank:i+1,value:r(),disposed:!1,listeners:new Set,fn:r,subscribe(e){return a.listeners.add(e),()=>{a.listeners.delete(e)}}},o=()=>{a.disposed||this.#d(a)},s=n.map(e=>e.subscribe(o));return this.#u(e,()=>{a.disposed||(a.disposed=!0,s.forEach(e=>e()),a.listeners.clear(),this.#a.delete(a))}),qP(a)}effect(e,t,n){let r=t.reduce((e,t)=>Math.max(e,YP(t)),0),i={id:`n`+ this.#e++,rank:r+1,disposed:!1,fn:n},a=()=>{i.disposed||this.#f(i)},o=t.map(e=>e.subscribe(a)),s=()=>{i.disposed||(i.disposed=!0,o.forEach(e=>e()),this.#o.delete(i))};return this.#u(e,s),s}runInTransaction(e){this.#n+=1;try{return e()}finally{--this.#n,this.#n===0&&this.#m()}}flushNow(){if(!(this.#n>0||this.#i)){this.#r=!1,this.#i=!0;try{let e=!0;for(;e;){for(e=!1;this.#s.length>0;){e=!0;let t=this.#s.pop();if(this.#a.delete(t),t.disposed)continue;let n=t.value,r=t.fn();r!==n&&(t.value=r,XP(t.listeners))}for(;this.#c.length>0;){e=!0;let t=this.#c.pop();this.#o.delete(t),!t.disposed&&t.fn()}}}finally{this.#i=!1,this.#g()}}}whenPropagated(e={}){if(this.#h())return Promise.resolve();let{signal:t,timeoutMs:n}=e;return t?.aborted?Promise.reject(Error(`whenPropagated aborted`)):new Promise((e,r)=>{let i={resolve:e,reject:r};t&&(i.abortHandler=()=>{this.#l.delete(i),r(Error(`whenPropagated aborted`))},t.addEventListener(`abort`,i.abortHandler,{once:!0})),n!=null&&(i.timeoutId=setTimeout(()=>{this.#l.delete(i),i.abortHandler&&t?.removeEventListener(`abort`,i.abortHandler),r(Error(`whenPropagated timeout after `+n+` ms`))},n)),this.#l.add(i)})}#d(e){this.#a.has(e)||(this.#a.add(e),this.#s.push(e,this.#p(e.rank)),this.#m())}#f(e){this.#o.has(e)||(this.#o.add(e),this.#c.push(e,this.#p(e.rank)),this.#m())}#p(e){let t=this.#t%GP;return this.#t+=1,e*GP+t}#m(){this.#n>0||this.#r||this.#i||(this.#r=!0,queueMicrotask(()=>{this.flushNow()}))}#h(){return this.#n===0&&!this.#r&&!this.#i&&this.#s.length===0&&this.#c.length===0&&this.#a.size===0&&this.#o.size===0}#g(){if(this.#h()){for(let e of this.#l)e.timeoutId&&clearTimeout(e.timeoutId),e.resolve();this.#l.clear()}}},QP=class{#e=1;#t=new Map;createOwner(e,t){let n=e+`:`+t+`:`+ this.#e++;return this.#t.set(n,new Set),n}addDisposer(e,t){let n=this.#t.get(e);if(!n)throw Error(`Unknown owner: `+e);n.add(t)}disposeOwner(e){let t=this.#t.get(e);if(t){for(let e of t)e();t.clear(),this.#t.delete(e)}}},$P=class{#e=1;#t=new Map;createRootScope(e){let t=`scope:`+ this.#e++;return this.#t.set(t,{params:new Map,ownerId:e}),t}createChildScope(e,t){if(!this.#t.has(t))throw Error(`Unknown parent scope: `+t);let n=`scope:`+ this.#e++;return this.#t.set(n,{parentScope:t,params:new Map,ownerId:e}),n}getOwnerId(e){let t=this.#t.get(e);if(!t)throw Error(`Unknown scope: `+e);return t.ownerId}clearScope(e){let t=this.#t.get(e);if(!t)throw Error(`Unknown scope: `+e);t.params.clear()}register(e,t,n){_g(t);let r=this.#t.get(e);if(!r)throw Error(`Unknown scope: `+e);if(r.params.has(t))throw Error(`Parameter "`+t+`" already exists in scope `+e);return r.params.set(t,n),n}resolve(e,t){_g(t);let n=e;for(;n;){let e=this.#t.get(n);if(!e)throw Error(`Unknown scope: `+n);let r=e.params.get(t);if(r)return r;n=e.parentScope}}},eF=`RawCode`,tF=`Literal`,nF=`Property`,rF=`Identifier`,iF=`ArrayExpression`,aF=`BinaryExpression`,oF=`CallExpression`,sF=`ConditionalExpression`,cF=`LogicalExpression`,lF=`MemberExpression`,uF=`ObjectExpression`,dF=`UnaryExpression`;function fF(e){this.type=e}fF.prototype.visit=function(e){let t,n,r;if(e(this))return 1;for(t=pF(this),n=0,r=t.length;n<r;++n)if(t[n].visit(e))return 1};function pF(e){switch(e.type){case iF:return e.elements;case aF:case cF:return[e.left,e.right];case oF:return[e.callee].concat(e.arguments);case sF:return[e.test,e.consequent,e.alternate];case lF:return[e.object,e.property];case uF:return e.properties;case nF:return[e.key,e.value];case dF:return[e.argument];case rF:case tF:case eF:default:return[]}}var mF,Y,X,hF,Z,gF=1,_F=2,vF=3,yF=4,bF=5,xF=6,SF=7,CF=8,wF=9;mF={},mF[gF]=`Boolean`,mF[_F]=`<end>`,mF[vF]=`Identifier`,mF[yF]=`Keyword`,mF[bF]=`Null`,mF[xF]=`Numeric`,mF[SF]=`Punctuator`,mF[CF]=`String`,mF[wF]=`RegularExpression`;var TF=`ArrayExpression`,EF=`BinaryExpression`,DF=`CallExpression`,OF=`ConditionalExpression`,kF=`Identifier`,AF=`Literal`,jF=`LogicalExpression`,MF=`MemberExpression`,NF=`ObjectExpression`,PF=`Property`,FF=`UnaryExpression`,IF=`Unexpected token %0`,LF=`Unexpected number`,RF=`Unexpected string`,zF=`Unexpected identifier`,BF=`Unexpected reserved word`,VF=`Unexpected end of input`,HF=`Invalid regular expression`,UF=`Invalid regular expression: missing /`,WF=`Octal literals are not allowed in strict mode.`,GF=`Duplicate data property in object literal not allowed in strict mode`,KF=`ILLEGAL`,qF=`Disabled.`,JF=RegExp(`[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]`),YF=RegExp(`[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]`);function XF(e,t){if(!e)throw Error(`ASSERT: `+t)}function ZF(e){return e>=48&&e<=57}function QF(e){return`0123456789abcdefABCDEF`.includes(e)}function $F(e){return`01234567`.includes(e)}function eI(e){return e===32||e===9||e===11||e===12||e===160||e>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].includes(e)}function tI(e){return e===10||e===13||e===8232||e===8233}function nI(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e===92||e>=128&&JF.test(String.fromCharCode(e))}function rI(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===92||e>=128&&YF.test(String.fromCharCode(e))}var iI={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function aI(){for(;X<hF;){let e=Y.charCodeAt(X);if(eI(e)||tI(e))++X;else break}}function oI(e){var t,n,r,i=0;for(n=e===`u`?4:2,t=0;t<n;++t)X<hF&&QF(Y[X])?(r=Y[X++],i=i*16+`0123456789abcdef`.indexOf(r.toLowerCase())):Q({},IF,KF);return String.fromCharCode(i)}function sI(){var e=Y[X],t=0,n,r;for(e===`}`&&Q({},IF,KF);X<hF&&(e=Y[X++],QF(e));)t=t*16+`0123456789abcdef`.indexOf(e.toLowerCase());return(t>1114111||e!==`}`)&&Q({},IF,KF),t<=65535?String.fromCharCode(t):(n=(t-65536>>10)+55296,r=(t-65536&1023)+56320,String.fromCharCode(n,r))}function cI(){var e=Y.charCodeAt(X++),t=String.fromCharCode(e);for(e===92&&(Y.charCodeAt(X)!==117&&Q({},IF,KF),++X,e=oI(`u`),(!e||e===`\\`||!nI(e.charCodeAt(0)))&&Q({},IF,KF),t=e);X<hF&&(e=Y.charCodeAt(X),rI(e));)++X,t+=String.fromCharCode(e),e===92&&(t=t.substr(0,t.length-1),Y.charCodeAt(X)!==117&&Q({},IF,KF),++X,e=oI(`u`),(!e||e===`\\`||!rI(e.charCodeAt(0)))&&Q({},IF,KF),t+=e);return t}function lI(){for(var e=X++,t;X<hF;){if(t=Y.charCodeAt(X),t===92)return X=e,cI();if(rI(t))++X;else break}return Y.slice(e,X)}function uI(){var e=X,t=Y.charCodeAt(X)===92?cI():lI();return{type:t.length===1?vF:iI.hasOwnProperty(t)?yF:t===`null`?bF:t===`true`||t===`false`?gF:vF,value:t,start:e,end:X}}function dI(){var e=X,t=Y.charCodeAt(X),n,r=Y[X],i,a,o;switch(t){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++X,{type:SF,value:String.fromCharCode(t),start:e,end:X};default:if(n=Y.charCodeAt(X+1),n===61)switch(t){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return X+=2,{type:SF,value:String.fromCharCode(t)+String.fromCharCode(n),start:e,end:X};case 33:case 61:return X+=2,Y.charCodeAt(X)===61&&++X,{type:SF,value:Y.slice(e,X),start:e,end:X}}}if(o=Y.substr(X,4),o===`>>>=`)return X+=4,{type:SF,value:o,start:e,end:X};if(a=o.substr(0,3),a===`>>>`||a===`<<=`||a===`>>=`)return X+=3,{type:SF,value:a,start:e,end:X};if(i=a.substr(0,2),r===i[1]&&`+-<>&|`.includes(r)||i===`=>`)return X+=2,{type:SF,value:i,start:e,end:X};if(i===`//`&&Q({},IF,KF),`<>=!+-*%&|^/`.includes(r))return++X,{type:SF,value:r,start:e,end:X};Q({},IF,KF)}function fI(e){let t=``;for(;X<hF&&QF(Y[X]);)t+=Y[X++];return t.length===0&&Q({},IF,KF),nI(Y.charCodeAt(X))&&Q({},IF,KF),{type:xF,value:parseInt(`0x`+t,16),start:e,end:X}}function pI(e){let t=`0`+Y[X++];for(;X<hF&&$F(Y[X]);)t+=Y[X++];return(nI(Y.charCodeAt(X))||ZF(Y.charCodeAt(X)))&&Q({},IF,KF),{type:xF,value:parseInt(t,8),octal:!0,start:e,end:X}}function mI(){var e,t,n=Y[X];if(XF(ZF(n.charCodeAt(0))||n===`.`,`Numeric literal must start with a decimal digit or a decimal point`),t=X,e=``,n!==`.`){if(e=Y[X++],n=Y[X],e===`0`){if(n===`x`||n===`X`)return++X,fI(t);if($F(n))return pI(t);n&&ZF(n.charCodeAt(0))&&Q({},IF,KF)}for(;ZF(Y.charCodeAt(X));)e+=Y[X++];n=Y[X]}if(n===`.`){for(e+=Y[X++];ZF(Y.charCodeAt(X));)e+=Y[X++];n=Y[X]}if(n===`e`||n===`E`)if(e+=Y[X++],n=Y[X],(n===`+`||n===`-`)&&(e+=Y[X++]),ZF(Y.charCodeAt(X)))for(;ZF(Y.charCodeAt(X));)e+=Y[X++];else Q({},IF,KF);return nI(Y.charCodeAt(X))&&Q({},IF,KF),{type:xF,value:parseFloat(e),start:t,end:X}}function hI(){var e=``,t,n,r,i,a=!1;for(t=Y[X],XF(t===`'`||t===`"`,`String literal must starts with a quote`),n=X,++X;X<hF;)if(r=Y[X++],r===t){t=``;break}else if(r===`\\`)if(r=Y[X++],!r||!tI(r.charCodeAt(0)))switch(r){case`u`:case`x`:Y[X]===`{`?(++X,e+=sI()):e+=oI(r);break;case`n`:e+=`
664
- `;break;case`r`:e+=`\r`;break;case`t`:e+=` `;break;case`b`:e+=`\b`;break;case`f`:e+=`\f`;break;case`v`:e+=`\v`;break;default:$F(r)?(i=`01234567`.indexOf(r),i!==0&&(a=!0),X<hF&&$F(Y[X])&&(a=!0,i=i*8+`01234567`.indexOf(Y[X++]),`0123`.includes(r)&&X<hF&&$F(Y[X])&&(i=i*8+`01234567`.indexOf(Y[X++]))),e+=String.fromCharCode(i)):e+=r;break}else r===`\r`&&Y[X]===`
665
- `&&++X;else if(tI(r.charCodeAt(0)))break;else e+=r;return t!==``&&Q({},IF,KF),{type:CF,value:e,octal:a,start:n,end:X}}function gI(e,t){let n=e;t.includes(`u`)&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(e,t)=>{if(parseInt(t,16)<=1114111)return`x`;Q({},HF)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,`x`));try{new RegExp(n)}catch{Q({},HF)}try{return new RegExp(e,t)}catch{return null}}function _I(){var e=Y[X],t,n,r,i;for(XF(e===`/`,`Regular expression literal must start with a slash`),t=Y[X++],n=!1,r=!1;X<hF;)if(e=Y[X++],t+=e,e===`\\`)e=Y[X++],tI(e.charCodeAt(0))&&Q({},UF),t+=e;else if(tI(e.charCodeAt(0)))Q({},UF);else if(n)e===`]`&&(n=!1);else if(e===`/`){r=!0;break}else e===`[`&&(n=!0);return r||Q({},UF),i=t.substr(1,t.length-2),{value:i,literal:t}}function vI(){for(var e,t=``,n=``;X<hF&&(e=Y[X],rI(e.charCodeAt(0)));)++X,e===`\\`&&X<hF?Q({},IF,KF):(n+=e,t+=e);return n.search(/[^gimuy]/g)>=0&&Q({},HF,n),{value:n,literal:t}}function yI(){var e,t,n,r;return Z=null,aI(),e=X,t=_I(),n=vI(),r=gI(t.value,n.value),{literal:t.literal+n.literal,value:r,regex:{pattern:t.value,flags:n.value},start:e,end:X}}function bI(e){return e.type===vF||e.type===yF||e.type===gF||e.type===bF}function xI(){if(aI(),X>=hF)return{type:_F,start:X,end:X};let e=Y.charCodeAt(X);return nI(e)?uI():e===40||e===41||e===59?dI():e===39||e===34?hI():e===46?ZF(Y.charCodeAt(X+1))?mI():dI():ZF(e)?mI():dI()}function SI(){let e=Z;return X=e.end,Z=xI(),X=e.end,e}function CI(){let e=X;Z=xI(),X=e}function wI(e){let t=new fF(TF);return t.elements=e,t}function TI(e,t,n){let r=new fF(e===`||`||e===`&&`?jF:EF);return r.operator=e,r.left=t,r.right=n,r}function EI(e,t){let n=new fF(DF);return n.callee=e,n.arguments=t,n}function DI(e,t,n){let r=new fF(OF);return r.test=e,r.consequent=t,r.alternate=n,r}function OI(e){let t=new fF(kF);return t.name=e,t}function kI(e){let t=new fF(AF);return t.value=e.value,t.raw=Y.slice(e.start,e.end),e.regex&&(t.raw===`//`&&(t.raw=`/(?:)/`),t.regex=e.regex),t}function AI(e,t,n){let r=new fF(MF);return r.computed=e===`[`,r.object=t,r.property=n,r.computed||(n.member=!0),r}function jI(e){let t=new fF(NF);return t.properties=e,t}function MI(e,t,n){let r=new fF(PF);return r.key=t,r.value=n,r.kind=e,r}function NI(e,t){let n=new fF(FF);return n.operator=e,n.argument=t,n.prefix=!0,n}function Q(e,t){var n,r=Array.prototype.slice.call(arguments,2),i=t.replace(/%(\d)/g,(e,t)=>(XF(t<r.length,`Message reference must be in range`),r[t]));throw n=Error(i),n.index=X,n.description=i,n}function PI(e){e.type===_F&&Q(e,VF),e.type===xF&&Q(e,LF),e.type===CF&&Q(e,RF),e.type===vF&&Q(e,zF),e.type===yF&&Q(e,BF),Q(e,IF,e.value)}function FI(e){let t=SI();(t.type!==SF||t.value!==e)&&PI(t)}function $(e){return Z.type===SF&&Z.value===e}function II(e){return Z.type===yF&&Z.value===e}function LI(){let e=[];for(X=Z.start,FI(`[`);!$(`]`);)$(`,`)?(SI(),e.push(null)):(e.push($I()),$(`]`)||FI(`,`));return SI(),wI(e)}function RI(){X=Z.start;let e=SI();return e.type===CF||e.type===xF?(e.octal&&Q(e,WF),kI(e)):OI(e.value)}function zI(){var e,t,n,r;if(X=Z.start,e=Z,e.type===vF)return n=RI(),FI(`:`),r=$I(),MI(`init`,n,r);if(e.type===_F||e.type===SF)PI(e);else return t=RI(),FI(`:`),r=$I(),MI(`init`,t,r)}function BI(){var e=[],t,n,r,i={},a=String;for(X=Z.start,FI(`{`);!$(`}`);)t=zI(),n=t.key.type===kF?t.key.name:a(t.key.value),r=`$`+n,Object.prototype.hasOwnProperty.call(i,r)?Q({},GF):i[r]=!0,e.push(t),$(`}`)||FI(`,`);return FI(`}`),jI(e)}function VI(){FI(`(`);let e=eL();return FI(`)`),e}var HI={if:1};function UI(){var e,t,n;if($(`(`))return VI();if($(`[`))return LI();if($(`{`))return BI();if(e=Z.type,X=Z.start,e===vF||HI[Z.value])n=OI(SI().value);else if(e===CF||e===xF)Z.octal&&Q(Z,WF),n=kI(SI());else if(e===yF)throw Error(qF);else e===gF?(t=SI(),t.value=t.value===`true`,n=kI(t)):e===bF?(t=SI(),t.value=null,n=kI(t)):$(`/`)||$(`/=`)?(n=kI(yI()),CI()):PI(SI());return n}function WI(){let e=[];if(FI(`(`),!$(`)`))for(;X<hF&&(e.push($I()),!$(`)`));)FI(`,`);return FI(`)`),e}function GI(){X=Z.start;let e=SI();return bI(e)||PI(e),OI(e.value)}function KI(){return FI(`.`),GI()}function qI(){FI(`[`);let e=eL();return FI(`]`),e}function JI(){for(var e=UI(),t,n;;)if($(`.`))n=KI(),e=AI(`.`,e,n);else if($(`(`))t=WI(),e=EI(e,t);else if($(`[`))n=qI(),e=AI(`[`,e,n);else break;return e}function YI(){let e=JI();if(Z.type===SF&&($(`++`)||$(`--`)))throw Error(qF);return e}function XI(){var e,t;if(Z.type!==SF&&Z.type!==yF)t=YI();else if($(`++`)||$(`--`))throw Error(qF);else if($(`+`)||$(`-`)||$(`~`)||$(`!`))e=SI(),t=XI(),t=NI(e.value,t);else if(II(`delete`)||II(`void`)||II(`typeof`))throw Error(qF);else t=YI();return t}function ZI(e){let t=0;if(e.type!==SF&&e.type!==yF)return 0;switch(e.value){case`||`:t=1;break;case`&&`:t=2;break;case`|`:t=3;break;case`^`:t=4;break;case`&`:t=5;break;case`==`:case`!=`:case`===`:case`!==`:t=6;break;case`<`:case`>`:case`<=`:case`>=`:case`instanceof`:case`in`:t=7;break;case`<<`:case`>>`:case`>>>`:t=8;break;case`+`:case`-`:t=9;break;case`*`:case`/`:case`%`:t=11;break}return t}function QI(){var e=Z,t,n,r,i,a,o,s,c=XI(),l;if(r=Z,i=ZI(r),i===0)return c;for(r.prec=i,SI(),t=[e,Z],o=XI(),a=[c,r,o];(i=ZI(Z))>0;){for(;a.length>2&&i<=a[a.length-2].prec;)o=a.pop(),s=a.pop().value,c=a.pop(),t.pop(),n=TI(s,c,o),a.push(n);r=SI(),r.prec=i,a.push(r),t.push(Z),n=XI(),a.push(n)}for(l=a.length-1,n=a[l],t.pop();l>1;)t.pop(),n=TI(a[l-1].value,a[l-2],n),l-=2;return n}function $I(){var e=QI(),t,n;return $(`?`)&&(SI(),t=$I(),FI(`:`),n=$I(),e=DI(e,t,n)),e}function eL(){let e=$I();if($(`,`))throw Error(qF);return e}function tL(e){Y=e,X=0,hF=Y.length,Z=null,CI();let t=eL();if(Z.type!==_F)throw Error(`Unexpect token after expression.`);return t}var nL={NaN:`NaN`,E:`Math.E`,LN2:`Math.LN2`,LN10:`Math.LN10`,LOG2E:`Math.LOG2E`,LOG10E:`Math.LOG10E`,PI:`Math.PI`,SQRT1_2:`Math.SQRT1_2`,SQRT2:`Math.SQRT2`,MIN_VALUE:`Number.MIN_VALUE`,MAX_VALUE:`Number.MAX_VALUE`};function rL(e){function t(t,n,r,i){let a=e(n[0]);return r&&(a=r+`(`+a+`)`,r.lastIndexOf(`new `,0)===0&&(a=`(`+a+`)`)),a+`.`+t+(i<0?``:i===0?`()`:`(`+n.slice(1).map(e).join(`,`)+`)`)}function n(e,n,r){return i=>t(e,i,n,r)}let r=`new Date`,i=`String`,a=`RegExp`;return{isNaN:`Number.isNaN`,isFinite:`Number.isFinite`,abs:`Math.abs`,acos:`Math.acos`,asin:`Math.asin`,atan:`Math.atan`,atan2:`Math.atan2`,ceil:`Math.ceil`,cos:`Math.cos`,exp:`Math.exp`,floor:`Math.floor`,hypot:`Math.hypot`,log:`Math.log`,max:`Math.max`,min:`Math.min`,pow:`Math.pow`,random:`Math.random`,round:`Math.round`,sin:`Math.sin`,sqrt:`Math.sqrt`,tan:`Math.tan`,clamp:function(t){t.length<3&&qe(`Missing arguments to clamp function.`),t.length>3&&qe(`Too many arguments to clamp function.`);let n=t.map(e);return`Math.max(`+n[1]+`, Math.min(`+n[2]+`,`+n[0]+`))`},now:`Date.now`,utc:`Date.UTC`,datetime:r,date:n(`getDate`,r,0),day:n(`getDay`,r,0),year:n(`getFullYear`,r,0),month:n(`getMonth`,r,0),hours:n(`getHours`,r,0),minutes:n(`getMinutes`,r,0),seconds:n(`getSeconds`,r,0),milliseconds:n(`getMilliseconds`,r,0),time:n(`getTime`,r,0),timezoneoffset:n(`getTimezoneOffset`,r,0),utcdate:n(`getUTCDate`,r,0),utcday:n(`getUTCDay`,r,0),utcyear:n(`getUTCFullYear`,r,0),utcmonth:n(`getUTCMonth`,r,0),utchours:n(`getUTCHours`,r,0),utcminutes:n(`getUTCMinutes`,r,0),utcseconds:n(`getUTCSeconds`,r,0),utcmilliseconds:n(`getUTCMilliseconds`,r,0),length:n(`length`,null,-1),parseFloat:`parseFloat`,parseInt:`parseInt`,upper:n(`toUpperCase`,i,0),lower:n(`toLowerCase`,i,0),substring:n(`substring`,i),split:n(`split`,i),trim:n(`trim`,i,0),btoa:`btoa`,atob:`atob`,regexp:a,test:n(`test`,a),if:function(t){t.length<3&&qe(`Missing arguments to if function.`),t.length>3&&qe(`Too many arguments to if function.`);let n=t.map(e);return`(`+n[0]+`?`+n[1]+`:`+n[2]+`)`}}}function iL(e){let t=e&&e.length-1;return t&&(e[0]===`"`&&e[t]===`"`||e[0]===`'`&&e[t]===`'`)?e.slice(1,-1):e}function aL(e){e||={};let t=e.allowed?Nt(e.allowed):{},n=e.forbidden?Nt(e.forbidden):{},r=e.constants||nL,i=(e.functions||rL)(d),a=e.globalvar,o=e.fieldvar,s=mt(a)?a:e=>`${a}["${e}"]`;new Set([...Object.getOwnPropertyNames(Object.prototype).filter(e=>typeof Object.prototype[e]==`function`),`__proto__`]);let c={},l={},u=0;function d(e){if(N(e))return e;let t=f[e.type];return t??qe(`Unsupported type: `+e.type),t(e)}let f={Literal:e=>e.raw,Identifier:e=>{let i=e.name;return u>0?i:St(n,i)?qe(`Illegal identifier: `+i):St(r,i)?r[i]:St(t,i)?i:(c[i]=1,s(i))},MemberExpression:e=>{let t=!e.computed,n=d(e.object);t&&(u+=1);let r=d(e.property);return n===o&&(l[iL(r)]=1),t&&--u,n+(t?`.`+r:`[`+r+`]`)},CallExpression:e=>{e.callee.type!==`Identifier`&&qe(`Illegal callee type: `+e.callee.type);let t=e.callee.name,n=e.arguments,r=St(i,t)&&i[t];return r||qe(`Unrecognized function: `+t),mt(r)?r(n):r+`(`+n.map(d).join(`,`)+`)`},ArrayExpression:e=>`[`+e.elements.map(d).join(`,`)+`]`,BinaryExpression:e=>`(`+d(e.left)+` `+e.operator+` `+d(e.right)+`)`,UnaryExpression:e=>`(`+e.operator+d(e.argument)+`)`,ConditionalExpression:e=>`(`+d(e.test)+`?`+d(e.consequent)+`:`+d(e.alternate)+`)`,LogicalExpression:e=>`(`+d(e.left)+e.operator+d(e.right)+`)`,ObjectExpression:e=>{for(let t of e.properties){let e=t.key.name;Ze.has(e)&&qe(`Illegal property: `+e)}return`{`+e.properties.map(d).join(`,`)+`}`},Property:e=>{u+=1;let t=d(e.key);return--u,t+`:`+d(e.value)}};function p(e){let t={code:d(e),globals:Object.keys(c),fields:Object.keys(l)};return c={},l={},t}return p.functions=i,p.constants=r,p}function oL(e,t,n){return sN((n-e)/(t-e),0,1)}function sL(e){return Qe(e)||ArrayBuffer.isView(e)?e:null}function cL(e){return sL(e)||(N(e)?e:null)}var lL={clamp:sN,format(e,t){return cr(t)(e)},join(e,t){return sL(e).join(t)},indexof(e,t,n){return cL(e).indexOf(t,n)},lastindexof(e,t,n){return cL(e).lastIndexOf(t,n)},reverse(e){return sL(e).slice().reverse()},slice(e,t,n){return cL(e).slice(t,n)},mapHasKey(e,t){return e.has(t)},isArray:Qe,isBoolean:Ct,isDefined(e){return e!==void 0},isNumber:M,isObject:$e,isRegExp:Et,isString:N,isValid(e){return e!=null&&e===e},lerp:P,linearstep:oL,replace(e,t,n){return String(e).replace(t,n)},sort(e){return sL(e).slice().sort(_t)},center(e){let t=sL(e);return(t[0]+t[t.length-1])/2},span(e){return Dt(e)},smoothstep:$l};function uL(e,t){let n=rL(e);for(let e in lL)n[e]=`this.${e}`;for(let r of[`scale`,`invert`,`domain`,`range`])n[r]=n=>dL(e,t,r,n);return n}function dL(e,t,n,r){if(r.length===0)throw Error(`Scale helper "${n}" requires a literal channel name.`);if((n===`scale`||n===`invert`)&&r.length<2)throw Error(`Scale helper "${n}" requires a channel name and a value.`);let i=fL(r[0]);if(!i)throw Error(`Scale helper "${n}" requires a literal channel name.`);let a=t.resolveScaleResolution?.(i);if(!a)throw Error(`Unknown scale channel "${i}" in expression helper "${n}".`);let o=t.getScaleHelper(n,i,a),s=r.slice(1).map(t=>e(t)).join(`,`);return`${t.globalvar}["${o.codeName}"](${s})`}function fL(e){return e?.type===`Literal`&&typeof e.value==`string`?e.value:void 0}function pL(e,t){let n=n=>hL(t,e,n);if(e===`domain`)return()=>n(()=>t.getDomain());if(e===`range`)return()=>n(()=>t.getScale().range());if(e===`scale`)return e=>n(()=>t.getScale()(e));if(e===`invert`)return e=>n(()=>t.getScale().invert(e));throw Error(`Unknown scale helper: `+e)}var mL=new WeakSet;function hL(e,t,n){if(mL.has(e))throw Error(`Scale helper cycle detected while evaluating ${t}("${e.channel}").`);mL.add(e);try{return n()}finally{mL.delete(e)}}function gL(e,t,n,r){let i=new Set,a=()=>{for(let e of i)e()},o=()=>{e===`domain`?n.addEventListener(`domain`,a):(e===`range`||n.addEventListener(`domain`,a),n.addEventListener(`range`,a))},s=()=>{e===`domain`?n.removeEventListener(`domain`,a):(e===`range`||n.removeEventListener(`domain`,a),n.removeEventListener(`range`,a))};return{id:`scale:${t}:${r}`,name:`scale(${t})`,kind:`derived`,rank:0,get(){return n.getScale()},subscribe(e){let t=i.size===0;return i.add(e),t&&o(),()=>{i.delete(e)&&i.size===0&&s()}}}}function _L(e,t={},n={}){try{let r=new Map,i=new Map,a=1,o={...n,globalvar:`globalObject`,globalObject:t,getScaleHelper(e,n,o){let s=e+`:`+n,c=i.get(s);if(c)return c;let l=r.get(n);l||(l=gL(e,n,o,`__scale_dependency_`+ a++),r.set(n,l));let u=`__scale_helper_`+ a++,d={codeName:u,dependency:l};return i.set(s,d),t[u]=pL(e,o),d}},s=aL({forbidden:[],allowed:[`datum`,`undefined`],globalvar:`globalObject`,fieldvar:`datum`,functions:e=>uL(e,o)})(tL(e)),c=Function(`datum`,`globalObject`,`"use strict";
664
+ };`,KP={left:-1,center:0,right:1},qP={top:-1,middle:0,bottom:1,alphabetic:1,baseline:1},JP=class extends lP{constructor(e){super(e),this.font=this.properties.font?e.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):e.context.fontManager.getDefaultFont(),this.setupExprRefsNeedingGraphicsUpdate([`text`,`fitToBand`,`logoLetters`])}getAttributes(){return[`uniqueId`,`facetIndex`,`x`,`x2`,`y`,`y2`,`color`,`size`,`opacity`,`angle`]}getSupportedChannels(){return[...super.getSupportedChannels(),`x2`,`y2`,`size`,`text`,`angle`]}fixEncoding(e){for(let t of Lh)this.properties.fitToBand?dP(e,t):fP(e,t);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(UP,WP,[GP])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);let e=this.properties,t=this.font.metrics.common.base*.35*(this.properties.logoLetters?.5:1);this.registerMarkUniformValue(`uPaddingX`,e.paddingX),this.registerMarkUniformValue(`uPaddingY`,e.paddingY),this.registerMarkUniformValue(`uFlushX`,e.flushX,e=>!!e),this.registerMarkUniformValue(`uFlushY`,e.flushY,e=>!!e),this.registerMarkUniformValue(`uSqueeze`,e.squeeze,e=>!!e),bj(this.markUniformInfo,{uAlign:[KP[e.align],qP[e.baseline]],uD:[e.dx,-e.dy],uLogoLetter:!!e.logoLetters,uSdfNumerator:t,uViewportEdgeFadeWidth:[e.viewportEdgeFadeWidthTop,e.viewportEdgeFadeWidthRight,e.viewportEdgeFadeWidthBottom,e.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[e.viewportEdgeFadeDistanceTop,e.viewportEdgeFadeDistanceRight,e.viewportEdgeFadeDistanceBottom,e.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){let e=this.unitView.getCollector();if(!e){console.debug(`No collector`);return}let t=e.getData(),n=this.encoding,r=this.encoders.text,i=0,a=`format`in n.text?or(n.text.format):e=>e;for(let e of t){let t=a(r(e)),n=F(t)?t:t===null?``:``+t;i+=n&&n.length||0}let o=new RN({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(i,this.properties.minBufferSize||1024)});o.addBatches(e.facetBatches);let s=o.toArrays();this.rangeMap.migrateEntries(s.rangeMap),this.updateBufferInfo(s)}prepareRender(e){let t=super.prepareRender(e);return t.push(()=>{Sj(this.programInfo,{uTexture:this.font.texture})}),t.push(()=>this.bindOrSetMarkUniformBlock()),t.push(()=>Tj(this.gl,this.programInfo,this.vertexArrayInfo)),t}render(e){let t=this.gl;return this.createRenderCallback((e,n)=>kj(t,this.vertexArrayInfo,t.TRIANGLES,n,e),e)}};function YP(e,t,{spacing:n,devicePixelRatio:r,offset:i,reverse:a}={}){n||=0,i||=0;let o=0,s=0;for(let t of e)o+=tF(t.px)+(eF(t)?0:n),s+=tF(t.grow);o-=n;let c=Math.max(0,t-o),l=r===void 0?e=>e:e=>Math.round(e*r)/r,u=[],d=[],f=e=>{let t=u.length;if(!t)return;let r=(e?n:0)*(a?-1:1);p-=r;for(let e=0;e<t;e++)d.push({location:p+(e+1)/(t+1)*r,size:0});p+=r,u.length=0},p=a?Math.max(t,o):0+i;if(e.length==1&&eF(e[0]))return[{location:p,size:0}];for(let t=0;t<e.length;t++){let r=e[t];if(eF(r))u.push(r);else{f(d.length>0);let e=tF(r.px)+(s?tF(r.grow)/s*c:0);a&&(p-=e),d.push({location:l(p),size:l(e)}),a?p-=n:p+=e+n}}return p+=a?n:-n,f(!1),d}function XP(e){let t=0,n=0;for(let r of e)t=Math.max(t,r.px??0),n=Math.max(n,r.grow??0);return{px:t,grow:n}}var ZP=class e{constructor(e,t){this.width=e,this.height=t}addPadding(e){return this.#e(e.width,e.height)}subtractPadding(e){return this.#e(-e.width,-e.height)}#e(t,n){return new e({px:(this.width.px??0)+t,grow:this.width.grow},{px:(this.height.px??0)+n,grow:this.height.grow})}isGrowing(){return!!(this.width.grow||this.height.grow)}},QP=Object.freeze({px:0,grow:0}),$P=new ZP(QP,QP);function eF(e){return!e.px&&!e.grow}function tF(e){return e||0}function nF(e){return e&&(P(e.px)||P(e.grow))}function rF(e){if(eR(e))throw Error(`parseSizeDef does not accept step-based sizes.`);if(nF(e))return e;if(P(e))return{px:e,grow:0};if(e===`container`||!e)return{px:0,grow:1};throw Error(`Invalid sizeDef: ${e}`)}var iF=class e{constructor(e,t,n,r){this.top=e||0,this.right=t||0,this.bottom=n||0,this.left=r||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(t){return t<=0?this:new e(this.top+t,this.right+t,this.bottom+t,this.left+t)}add(t){return new e(this.top+t.top,this.right+t.right,this.bottom+t.bottom,this.left+t.left)}subtract(t){return new e(this.top-t.top,this.right-t.right,this.bottom-t.bottom,this.left-t.left)}union(t){return new e(Math.max(this.top,t.top),Math.max(this.right,t.right),Math.max(this.bottom,t.bottom),Math.max(this.left,t.left))}getHorizontal(){return new e(0,this.right,0,this.left)}getVertical(){return new e(this.top,0,this.bottom,0)}get horizontalTotal(){return this.left+this.right}get verticalTotal(){return this.top+this.bottom}static createFromConfig(e){return typeof e==`number`?this.createUniformPadding(e):e?this.createFromRecord(e):aF}static createFromRecord(t){return new e(t.top,t.right,t.bottom,t.left)}static zero(){return aF}static createUniformPadding(t){return new e(t,t,t,t)}},aF=iF.createUniformPadding(0);Object.freeze(aF);var oF=/^([A-Za-z]+:)?\/\//;function sF(e,t){if(t&&oF.test(t))return t;let n=typeof e==`function`?e():e;if(!n)return t;if(!t)return n;if(/[#?]/.test(n))throw Error(`Cannot append to a url with query or hash. Append: ${t}, base: ${n}`);return lF(n)+t}function cF(e,t,n=uF()){let r=typeof e==`function`?e():e;if(!t)return r;try{if(r){let e=n?new URL(r,n).href:new URL(r).href;return new URL(t,e).href}else if(n)return new URL(t,n).href}catch{}return sF(r,t)}function lF(e){let t=e.replace(/[^/]*$/,``);return t===``?void 0:t.endsWith(`://`)?e+`/`:t}function uF(){if(typeof document<`u`&&document.baseURI)return document.baseURI;if(typeof window<`u`&&window.location?.href)return window.location.href}var dF=class{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,t){let n=this.length++;for(;n>0;){let e=n-1>>1,r=this.values[e];if(t>=r)break;this.ids[n]=this.ids[e],this.values[n]=r,n=e}this.ids[n]=e,this.values[n]=t}pop(){if(this.length===0)return;let e=this.ids,t=this.values,n=e[0],r=--this.length;if(r>0){let n=e[r],i=t[r],a=0,o=r>>1;for(;a<o;){let n=(a<<1)+1,o=n+1,s=n+(o<r&+(t[o]<t[n]));if(t[s]>=i)break;e[a]=e[s],t[a]=t[s],a=s}e[a]=n,t[a]=i}return n}peek(){return this.length>0?this.ids[0]:void 0}peekValue(){return this.length>0?this.values[0]:void 0}shrink(){this.ids.length=this.values.length=this.length}},fF=Symbol(`runtimeNode`),pF=1e6;function mF(e){return e?(t,n)=>{e.addDisposer(t,n)}:()=>void 0}function hF(e,t){let n={id:e.id,name:e.name,kind:e.kind,get(){return e.value},subscribe(t){return e.listeners.add(t),()=>{e.listeners.delete(t)}}};return Object.defineProperty(n,fF,{enumerable:!1,configurable:!1,writable:!1,value:e}),t?Object.assign(n,{set(e){t(e)}}):n}function gF(e){let t=e[fF];if(!t)throw Error(`ParamRef is not bound to this graph runtime. Expected runtime-created ref.`);return t}function _F(e){return typeof e.rank==`number`?e.rank:gF(e).rank}function vF(e){for(let t of e)t()}var yF=class{#e=1;#t=1;#n=0;#r=!1;#i=!1;#a=new Set;#o=new Set;#s=new dF;#c=new dF;#l=new Set;#u;constructor(e={}){this.#u=mF(e.lifecycleRegistry)}createWritable(e,t,n,r,i={}){let a=`n`+ this.#e++,o=i.notify??!0,s={id:a,name:t,kind:n,value:r,rank:0,disposed:!1,listeners:new Set,subscribe(e){return s.listeners.add(e),()=>{s.listeners.delete(e)}}};return this.#u(e,()=>{s.disposed=!0,s.listeners.clear()}),hF(s,e=>{if(s.disposed)throw Error(`Cannot set disposed parameter "`+t+`" (`+a+`).`);e!==s.value&&(s.value=e,o&&(vF(s.listeners),this.#m()))})}computed(e,t,n,r){let i=n.reduce((e,t)=>Math.max(e,_F(t)),0),a={id:`n`+ this.#e++,name:t,kind:`derived`,rank:i+1,value:r(),disposed:!1,listeners:new Set,fn:r,subscribe(e){return a.listeners.add(e),()=>{a.listeners.delete(e)}}},o=()=>{a.disposed||this.#d(a)},s=n.map(e=>e.subscribe(o));return this.#u(e,()=>{a.disposed||(a.disposed=!0,s.forEach(e=>e()),a.listeners.clear(),this.#a.delete(a))}),hF(a)}effect(e,t,n){let r=t.reduce((e,t)=>Math.max(e,_F(t)),0),i={id:`n`+ this.#e++,rank:r+1,disposed:!1,fn:n},a=()=>{i.disposed||this.#f(i)},o=t.map(e=>e.subscribe(a)),s=()=>{i.disposed||(i.disposed=!0,o.forEach(e=>e()),this.#o.delete(i))};return this.#u(e,s),s}runInTransaction(e){this.#n+=1;try{return e()}finally{--this.#n,this.#n===0&&this.#m()}}flushNow(){if(!(this.#n>0||this.#i)){this.#r=!1,this.#i=!0;try{let e=!0;for(;e;){for(e=!1;this.#s.length>0;){e=!0;let t=this.#s.pop();if(this.#a.delete(t),t.disposed)continue;let n=t.value,r=t.fn();r!==n&&(t.value=r,vF(t.listeners))}for(;this.#c.length>0;){e=!0;let t=this.#c.pop();this.#o.delete(t),!t.disposed&&t.fn()}}}finally{this.#i=!1,this.#g()}}}whenPropagated(e={}){if(this.#h())return Promise.resolve();let{signal:t,timeoutMs:n}=e;return t?.aborted?Promise.reject(Error(`whenPropagated aborted`)):new Promise((e,r)=>{let i={resolve:e,reject:r};t&&(i.abortHandler=()=>{this.#l.delete(i),r(Error(`whenPropagated aborted`))},t.addEventListener(`abort`,i.abortHandler,{once:!0})),n!=null&&(i.timeoutId=setTimeout(()=>{this.#l.delete(i),i.abortHandler&&t?.removeEventListener(`abort`,i.abortHandler),r(Error(`whenPropagated timeout after `+n+` ms`))},n)),this.#l.add(i)})}#d(e){this.#a.has(e)||(this.#a.add(e),this.#s.push(e,this.#p(e.rank)),this.#m())}#f(e){this.#o.has(e)||(this.#o.add(e),this.#c.push(e,this.#p(e.rank)),this.#m())}#p(e){let t=this.#t%pF;return this.#t+=1,e*pF+t}#m(){this.#n>0||this.#r||this.#i||(this.#r=!0,queueMicrotask(()=>{this.flushNow()}))}#h(){return this.#n===0&&!this.#r&&!this.#i&&this.#s.length===0&&this.#c.length===0&&this.#a.size===0&&this.#o.size===0}#g(){if(this.#h()){for(let e of this.#l)e.timeoutId&&clearTimeout(e.timeoutId),e.resolve();this.#l.clear()}}},bF=class{#e=1;#t=new Map;createOwner(e,t){let n=e+`:`+t+`:`+ this.#e++;return this.#t.set(n,new Set),n}addDisposer(e,t){let n=this.#t.get(e);if(!n)throw Error(`Unknown owner: `+e);n.add(t)}disposeOwner(e){let t=this.#t.get(e);if(t){for(let e of t)e();t.clear(),this.#t.delete(e)}}},xF=class{#e=1;#t=new Map;createRootScope(e){let t=`scope:`+ this.#e++;return this.#t.set(t,{params:new Map,ownerId:e}),t}createChildScope(e,t){if(!this.#t.has(t))throw Error(`Unknown parent scope: `+t);let n=`scope:`+ this.#e++;return this.#t.set(n,{parentScope:t,params:new Map,ownerId:e}),n}getOwnerId(e){let t=this.#t.get(e);if(!t)throw Error(`Unknown scope: `+e);return t.ownerId}clearScope(e){let t=this.#t.get(e);if(!t)throw Error(`Unknown scope: `+e);t.params.clear()}register(e,t,n){hg(t);let r=this.#t.get(e);if(!r)throw Error(`Unknown scope: `+e);if(r.params.has(t))throw Error(`Parameter "`+t+`" already exists in scope `+e);return r.params.set(t,n),n}resolve(e,t){hg(t);let n=e;for(;n;){let e=this.#t.get(n);if(!e)throw Error(`Unknown scope: `+n);let r=e.params.get(t);if(r)return r;n=e.parentScope}}},SF=`RawCode`,CF=`Literal`,wF=`Property`,TF=`Identifier`,EF=`ArrayExpression`,DF=`BinaryExpression`,OF=`CallExpression`,kF=`ConditionalExpression`,AF=`LogicalExpression`,jF=`MemberExpression`,MF=`ObjectExpression`,NF=`UnaryExpression`;function PF(e){this.type=e}PF.prototype.visit=function(e){let t,n,r;if(e(this))return 1;for(t=FF(this),n=0,r=t.length;n<r;++n)if(t[n].visit(e))return 1};function FF(e){switch(e.type){case EF:return e.elements;case DF:case AF:return[e.left,e.right];case OF:return[e.callee].concat(e.arguments);case kF:return[e.test,e.consequent,e.alternate];case jF:return[e.object,e.property];case MF:return e.properties;case wF:return[e.key,e.value];case NF:return[e.argument];case TF:case CF:case SF:default:return[]}}var IF,Y,X,LF,Z,RF=1,zF=2,BF=3,VF=4,HF=5,UF=6,WF=7,GF=8,KF=9;IF={},IF[RF]=`Boolean`,IF[zF]=`<end>`,IF[BF]=`Identifier`,IF[VF]=`Keyword`,IF[HF]=`Null`,IF[UF]=`Numeric`,IF[WF]=`Punctuator`,IF[GF]=`String`,IF[KF]=`RegularExpression`;var qF=`ArrayExpression`,JF=`BinaryExpression`,YF=`CallExpression`,XF=`ConditionalExpression`,ZF=`Identifier`,QF=`Literal`,$F=`LogicalExpression`,eI=`MemberExpression`,tI=`ObjectExpression`,nI=`Property`,rI=`UnaryExpression`,iI=`Unexpected token %0`,aI=`Unexpected number`,oI=`Unexpected string`,sI=`Unexpected identifier`,cI=`Unexpected reserved word`,lI=`Unexpected end of input`,uI=`Invalid regular expression`,dI=`Invalid regular expression: missing /`,fI=`Octal literals are not allowed in strict mode.`,pI=`Duplicate data property in object literal not allowed in strict mode`,mI=`ILLEGAL`,hI=`Disabled.`,gI=RegExp(`[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]`),_I=RegExp(`[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]`);function vI(e,t){if(!e)throw Error(`ASSERT: `+t)}function yI(e){return e>=48&&e<=57}function bI(e){return`0123456789abcdefABCDEF`.includes(e)}function xI(e){return`01234567`.includes(e)}function SI(e){return e===32||e===9||e===11||e===12||e===160||e>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].includes(e)}function CI(e){return e===10||e===13||e===8232||e===8233}function wI(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e===92||e>=128&&gI.test(String.fromCharCode(e))}function TI(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===92||e>=128&&_I.test(String.fromCharCode(e))}var EI={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function DI(){for(;X<LF;){let e=Y.charCodeAt(X);if(SI(e)||CI(e))++X;else break}}function OI(e){var t,n,r,i=0;for(n=e===`u`?4:2,t=0;t<n;++t)X<LF&&bI(Y[X])?(r=Y[X++],i=i*16+`0123456789abcdef`.indexOf(r.toLowerCase())):Q({},iI,mI);return String.fromCharCode(i)}function kI(){var e=Y[X],t=0,n,r;for(e===`}`&&Q({},iI,mI);X<LF&&(e=Y[X++],bI(e));)t=t*16+`0123456789abcdef`.indexOf(e.toLowerCase());return(t>1114111||e!==`}`)&&Q({},iI,mI),t<=65535?String.fromCharCode(t):(n=(t-65536>>10)+55296,r=(t-65536&1023)+56320,String.fromCharCode(n,r))}function AI(){var e=Y.charCodeAt(X++),t=String.fromCharCode(e);for(e===92&&(Y.charCodeAt(X)!==117&&Q({},iI,mI),++X,e=OI(`u`),(!e||e===`\\`||!wI(e.charCodeAt(0)))&&Q({},iI,mI),t=e);X<LF&&(e=Y.charCodeAt(X),TI(e));)++X,t+=String.fromCharCode(e),e===92&&(t=t.substr(0,t.length-1),Y.charCodeAt(X)!==117&&Q({},iI,mI),++X,e=OI(`u`),(!e||e===`\\`||!TI(e.charCodeAt(0)))&&Q({},iI,mI),t+=e);return t}function jI(){for(var e=X++,t;X<LF;){if(t=Y.charCodeAt(X),t===92)return X=e,AI();if(TI(t))++X;else break}return Y.slice(e,X)}function MI(){var e=X,t=Y.charCodeAt(X)===92?AI():jI();return{type:t.length===1?BF:EI.hasOwnProperty(t)?VF:t===`null`?HF:t===`true`||t===`false`?RF:BF,value:t,start:e,end:X}}function NI(){var e=X,t=Y.charCodeAt(X),n,r=Y[X],i,a,o;switch(t){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++X,{type:WF,value:String.fromCharCode(t),start:e,end:X};default:if(n=Y.charCodeAt(X+1),n===61)switch(t){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return X+=2,{type:WF,value:String.fromCharCode(t)+String.fromCharCode(n),start:e,end:X};case 33:case 61:return X+=2,Y.charCodeAt(X)===61&&++X,{type:WF,value:Y.slice(e,X),start:e,end:X}}}if(o=Y.substr(X,4),o===`>>>=`)return X+=4,{type:WF,value:o,start:e,end:X};if(a=o.substr(0,3),a===`>>>`||a===`<<=`||a===`>>=`)return X+=3,{type:WF,value:a,start:e,end:X};if(i=a.substr(0,2),r===i[1]&&`+-<>&|`.includes(r)||i===`=>`)return X+=2,{type:WF,value:i,start:e,end:X};if(i===`//`&&Q({},iI,mI),`<>=!+-*%&|^/`.includes(r))return++X,{type:WF,value:r,start:e,end:X};Q({},iI,mI)}function PI(e){let t=``;for(;X<LF&&bI(Y[X]);)t+=Y[X++];return t.length===0&&Q({},iI,mI),wI(Y.charCodeAt(X))&&Q({},iI,mI),{type:UF,value:parseInt(`0x`+t,16),start:e,end:X}}function FI(e){let t=`0`+Y[X++];for(;X<LF&&xI(Y[X]);)t+=Y[X++];return(wI(Y.charCodeAt(X))||yI(Y.charCodeAt(X)))&&Q({},iI,mI),{type:UF,value:parseInt(t,8),octal:!0,start:e,end:X}}function II(){var e,t,n=Y[X];if(vI(yI(n.charCodeAt(0))||n===`.`,`Numeric literal must start with a decimal digit or a decimal point`),t=X,e=``,n!==`.`){if(e=Y[X++],n=Y[X],e===`0`){if(n===`x`||n===`X`)return++X,PI(t);if(xI(n))return FI(t);n&&yI(n.charCodeAt(0))&&Q({},iI,mI)}for(;yI(Y.charCodeAt(X));)e+=Y[X++];n=Y[X]}if(n===`.`){for(e+=Y[X++];yI(Y.charCodeAt(X));)e+=Y[X++];n=Y[X]}if(n===`e`||n===`E`)if(e+=Y[X++],n=Y[X],(n===`+`||n===`-`)&&(e+=Y[X++]),yI(Y.charCodeAt(X)))for(;yI(Y.charCodeAt(X));)e+=Y[X++];else Q({},iI,mI);return wI(Y.charCodeAt(X))&&Q({},iI,mI),{type:UF,value:parseFloat(e),start:t,end:X}}function LI(){var e=``,t,n,r,i,a=!1;for(t=Y[X],vI(t===`'`||t===`"`,`String literal must starts with a quote`),n=X,++X;X<LF;)if(r=Y[X++],r===t){t=``;break}else if(r===`\\`)if(r=Y[X++],!r||!CI(r.charCodeAt(0)))switch(r){case`u`:case`x`:Y[X]===`{`?(++X,e+=kI()):e+=OI(r);break;case`n`:e+=`
665
+ `;break;case`r`:e+=`\r`;break;case`t`:e+=` `;break;case`b`:e+=`\b`;break;case`f`:e+=`\f`;break;case`v`:e+=`\v`;break;default:xI(r)?(i=`01234567`.indexOf(r),i!==0&&(a=!0),X<LF&&xI(Y[X])&&(a=!0,i=i*8+`01234567`.indexOf(Y[X++]),`0123`.includes(r)&&X<LF&&xI(Y[X])&&(i=i*8+`01234567`.indexOf(Y[X++]))),e+=String.fromCharCode(i)):e+=r;break}else r===`\r`&&Y[X]===`
666
+ `&&++X;else if(CI(r.charCodeAt(0)))break;else e+=r;return t!==``&&Q({},iI,mI),{type:GF,value:e,octal:a,start:n,end:X}}function RI(e,t){let n=e;t.includes(`u`)&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(e,t)=>{if(parseInt(t,16)<=1114111)return`x`;Q({},uI)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,`x`));try{new RegExp(n)}catch{Q({},uI)}try{return new RegExp(e,t)}catch{return null}}function zI(){var e=Y[X],t,n,r,i;for(vI(e===`/`,`Regular expression literal must start with a slash`),t=Y[X++],n=!1,r=!1;X<LF;)if(e=Y[X++],t+=e,e===`\\`)e=Y[X++],CI(e.charCodeAt(0))&&Q({},dI),t+=e;else if(CI(e.charCodeAt(0)))Q({},dI);else if(n)e===`]`&&(n=!1);else if(e===`/`){r=!0;break}else e===`[`&&(n=!0);return r||Q({},dI),i=t.substr(1,t.length-2),{value:i,literal:t}}function BI(){for(var e,t=``,n=``;X<LF&&(e=Y[X],TI(e.charCodeAt(0)));)++X,e===`\\`&&X<LF?Q({},iI,mI):(n+=e,t+=e);return n.search(/[^gimuy]/g)>=0&&Q({},uI,n),{value:n,literal:t}}function VI(){var e,t,n,r;return Z=null,DI(),e=X,t=zI(),n=BI(),r=RI(t.value,n.value),{literal:t.literal+n.literal,value:r,regex:{pattern:t.value,flags:n.value},start:e,end:X}}function HI(e){return e.type===BF||e.type===VF||e.type===RF||e.type===HF}function UI(){if(DI(),X>=LF)return{type:zF,start:X,end:X};let e=Y.charCodeAt(X);return wI(e)?MI():e===40||e===41||e===59?NI():e===39||e===34?LI():e===46?yI(Y.charCodeAt(X+1))?II():NI():yI(e)?II():NI()}function WI(){let e=Z;return X=e.end,Z=UI(),X=e.end,e}function GI(){let e=X;Z=UI(),X=e}function KI(e){let t=new PF(qF);return t.elements=e,t}function qI(e,t,n){let r=new PF(e===`||`||e===`&&`?$F:JF);return r.operator=e,r.left=t,r.right=n,r}function JI(e,t){let n=new PF(YF);return n.callee=e,n.arguments=t,n}function YI(e,t,n){let r=new PF(XF);return r.test=e,r.consequent=t,r.alternate=n,r}function XI(e){let t=new PF(ZF);return t.name=e,t}function ZI(e){let t=new PF(QF);return t.value=e.value,t.raw=Y.slice(e.start,e.end),e.regex&&(t.raw===`//`&&(t.raw=`/(?:)/`),t.regex=e.regex),t}function QI(e,t,n){let r=new PF(eI);return r.computed=e===`[`,r.object=t,r.property=n,r.computed||(n.member=!0),r}function $I(e){let t=new PF(tI);return t.properties=e,t}function eL(e,t,n){let r=new PF(nI);return r.key=t,r.value=n,r.kind=e,r}function tL(e,t){let n=new PF(rI);return n.operator=e,n.argument=t,n.prefix=!0,n}function Q(e,t){var n,r=Array.prototype.slice.call(arguments,2),i=t.replace(/%(\d)/g,(e,t)=>(vI(t<r.length,`Message reference must be in range`),r[t]));throw n=Error(i),n.index=X,n.description=i,n}function nL(e){e.type===zF&&Q(e,lI),e.type===UF&&Q(e,aI),e.type===GF&&Q(e,oI),e.type===BF&&Q(e,sI),e.type===VF&&Q(e,cI),Q(e,iI,e.value)}function rL(e){let t=WI();(t.type!==WF||t.value!==e)&&nL(t)}function $(e){return Z.type===WF&&Z.value===e}function iL(e){return Z.type===VF&&Z.value===e}function aL(){let e=[];for(X=Z.start,rL(`[`);!$(`]`);)$(`,`)?(WI(),e.push(null)):(e.push(xL()),$(`]`)||rL(`,`));return WI(),KI(e)}function oL(){X=Z.start;let e=WI();return e.type===GF||e.type===UF?(e.octal&&Q(e,fI),ZI(e)):XI(e.value)}function sL(){var e,t,n,r;if(X=Z.start,e=Z,e.type===BF)return n=oL(),rL(`:`),r=xL(),eL(`init`,n,r);if(e.type===zF||e.type===WF)nL(e);else return t=oL(),rL(`:`),r=xL(),eL(`init`,t,r)}function cL(){var e=[],t,n,r,i={},a=String;for(X=Z.start,rL(`{`);!$(`}`);)t=sL(),n=t.key.type===ZF?t.key.name:a(t.key.value),r=`$`+n,Object.prototype.hasOwnProperty.call(i,r)?Q({},pI):i[r]=!0,e.push(t),$(`}`)||rL(`,`);return rL(`}`),$I(e)}function lL(){rL(`(`);let e=SL();return rL(`)`),e}var uL={if:1};function dL(){var e,t,n;if($(`(`))return lL();if($(`[`))return aL();if($(`{`))return cL();if(e=Z.type,X=Z.start,e===BF||uL[Z.value])n=XI(WI().value);else if(e===GF||e===UF)Z.octal&&Q(Z,fI),n=ZI(WI());else if(e===VF)throw Error(hI);else e===RF?(t=WI(),t.value=t.value===`true`,n=ZI(t)):e===HF?(t=WI(),t.value=null,n=ZI(t)):$(`/`)||$(`/=`)?(n=ZI(VI()),GI()):nL(WI());return n}function fL(){let e=[];if(rL(`(`),!$(`)`))for(;X<LF&&(e.push(xL()),!$(`)`));)rL(`,`);return rL(`)`),e}function pL(){X=Z.start;let e=WI();return HI(e)||nL(e),XI(e.value)}function mL(){return rL(`.`),pL()}function hL(){rL(`[`);let e=SL();return rL(`]`),e}function gL(){for(var e=dL(),t,n;;)if($(`.`))n=mL(),e=QI(`.`,e,n);else if($(`(`))t=fL(),e=JI(e,t);else if($(`[`))n=hL(),e=QI(`[`,e,n);else break;return e}function _L(){let e=gL();if(Z.type===WF&&($(`++`)||$(`--`)))throw Error(hI);return e}function vL(){var e,t;if(Z.type!==WF&&Z.type!==VF)t=_L();else if($(`++`)||$(`--`))throw Error(hI);else if($(`+`)||$(`-`)||$(`~`)||$(`!`))e=WI(),t=vL(),t=tL(e.value,t);else if(iL(`delete`)||iL(`void`)||iL(`typeof`))throw Error(hI);else t=_L();return t}function yL(e){let t=0;if(e.type!==WF&&e.type!==VF)return 0;switch(e.value){case`||`:t=1;break;case`&&`:t=2;break;case`|`:t=3;break;case`^`:t=4;break;case`&`:t=5;break;case`==`:case`!=`:case`===`:case`!==`:t=6;break;case`<`:case`>`:case`<=`:case`>=`:case`instanceof`:case`in`:t=7;break;case`<<`:case`>>`:case`>>>`:t=8;break;case`+`:case`-`:t=9;break;case`*`:case`/`:case`%`:t=11;break}return t}function bL(){var e=Z,t,n,r,i,a,o,s,c=vL(),l;if(r=Z,i=yL(r),i===0)return c;for(r.prec=i,WI(),t=[e,Z],o=vL(),a=[c,r,o];(i=yL(Z))>0;){for(;a.length>2&&i<=a[a.length-2].prec;)o=a.pop(),s=a.pop().value,c=a.pop(),t.pop(),n=qI(s,c,o),a.push(n);r=WI(),r.prec=i,a.push(r),t.push(Z),n=vL(),a.push(n)}for(l=a.length-1,n=a[l],t.pop();l>1;)t.pop(),n=qI(a[l-1].value,a[l-2],n),l-=2;return n}function xL(){var e=bL(),t,n;return $(`?`)&&(WI(),t=xL(),rL(`:`),n=xL(),e=YI(e,t,n)),e}function SL(){let e=xL();if($(`,`))throw Error(hI);return e}function CL(e){Y=e,X=0,LF=Y.length,Z=null,GI();let t=SL();if(Z.type!==zF)throw Error(`Unexpect token after expression.`);return t}var wL={NaN:`NaN`,E:`Math.E`,LN2:`Math.LN2`,LN10:`Math.LN10`,LOG2E:`Math.LOG2E`,LOG10E:`Math.LOG10E`,PI:`Math.PI`,SQRT1_2:`Math.SQRT1_2`,SQRT2:`Math.SQRT2`,MIN_VALUE:`Number.MIN_VALUE`,MAX_VALUE:`Number.MAX_VALUE`};function TL(e){function t(t,n,r,i){let a=e(n[0]);return r&&(a=r+`(`+a+`)`,r.lastIndexOf(`new `,0)===0&&(a=`(`+a+`)`)),a+`.`+t+(i<0?``:i===0?`()`:`(`+n.slice(1).map(e).join(`,`)+`)`)}function n(e,n,r){return i=>t(e,i,n,r)}let r=`new Date`,i=`String`,a=`RegExp`;return{isNaN:`Number.isNaN`,isFinite:`Number.isFinite`,abs:`Math.abs`,acos:`Math.acos`,asin:`Math.asin`,atan:`Math.atan`,atan2:`Math.atan2`,ceil:`Math.ceil`,cos:`Math.cos`,exp:`Math.exp`,floor:`Math.floor`,hypot:`Math.hypot`,log:`Math.log`,max:`Math.max`,min:`Math.min`,pow:`Math.pow`,random:`Math.random`,round:`Math.round`,sin:`Math.sin`,sqrt:`Math.sqrt`,tan:`Math.tan`,clamp:function(t){t.length<3&&Ke(`Missing arguments to clamp function.`),t.length>3&&Ke(`Too many arguments to clamp function.`);let n=t.map(e);return`Math.max(`+n[1]+`, Math.min(`+n[2]+`,`+n[0]+`))`},now:`Date.now`,utc:`Date.UTC`,datetime:r,date:n(`getDate`,r,0),day:n(`getDay`,r,0),year:n(`getFullYear`,r,0),month:n(`getMonth`,r,0),hours:n(`getHours`,r,0),minutes:n(`getMinutes`,r,0),seconds:n(`getSeconds`,r,0),milliseconds:n(`getMilliseconds`,r,0),time:n(`getTime`,r,0),timezoneoffset:n(`getTimezoneOffset`,r,0),utcdate:n(`getUTCDate`,r,0),utcday:n(`getUTCDay`,r,0),utcyear:n(`getUTCFullYear`,r,0),utcmonth:n(`getUTCMonth`,r,0),utchours:n(`getUTCHours`,r,0),utcminutes:n(`getUTCMinutes`,r,0),utcseconds:n(`getUTCSeconds`,r,0),utcmilliseconds:n(`getUTCMilliseconds`,r,0),length:n(`length`,null,-1),parseFloat:`parseFloat`,parseInt:`parseInt`,upper:n(`toUpperCase`,i,0),lower:n(`toLowerCase`,i,0),substring:n(`substring`,i),split:n(`split`,i),trim:n(`trim`,i,0),btoa:`btoa`,atob:`atob`,regexp:a,test:n(`test`,a),if:function(t){t.length<3&&Ke(`Missing arguments to if function.`),t.length>3&&Ke(`Too many arguments to if function.`);let n=t.map(e);return`(`+n[0]+`?`+n[1]+`:`+n[2]+`)`}}}function EL(e){let t=e&&e.length-1;return t&&(e[0]===`"`&&e[t]===`"`||e[0]===`'`&&e[t]===`'`)?e.slice(1,-1):e}function DL(e){e||={};let t=e.allowed?jt(e.allowed):{},n=e.forbidden?jt(e.forbidden):{},r=e.constants||wL,i=(e.functions||TL)(d),a=e.globalvar,o=e.fieldvar,s=ft(a)?a:e=>`${a}["${e}"]`;new Set([...Object.getOwnPropertyNames(Object.prototype).filter(e=>typeof Object.prototype[e]==`function`),`__proto__`]);let c={},l={},u=0;function d(e){if(F(e))return e;let t=f[e.type];return t??Ke(`Unsupported type: `+e.type),t(e)}let f={Literal:e=>e.raw,Identifier:e=>{let i=e.name;return u>0?i:bt(n,i)?Ke(`Illegal identifier: `+i):bt(r,i)?r[i]:bt(t,i)?i:(c[i]=1,s(i))},MemberExpression:e=>{let t=!e.computed,n=d(e.object);t&&(u+=1);let r=d(e.property);return n===o&&(l[EL(r)]=1),t&&--u,n+(t?`.`+r:`[`+r+`]`)},CallExpression:e=>{e.callee.type!==`Identifier`&&Ke(`Illegal callee type: `+e.callee.type);let t=e.callee.name,n=e.arguments,r=bt(i,t)&&i[t];return r||Ke(`Unrecognized function: `+t),ft(r)?r(n):r+`(`+n.map(d).join(`,`)+`)`},ArrayExpression:e=>`[`+e.elements.map(d).join(`,`)+`]`,BinaryExpression:e=>`(`+d(e.left)+` `+e.operator+` `+d(e.right)+`)`,UnaryExpression:e=>`(`+e.operator+d(e.argument)+`)`,ConditionalExpression:e=>`(`+d(e.test)+`?`+d(e.consequent)+`:`+d(e.alternate)+`)`,LogicalExpression:e=>`(`+d(e.left)+e.operator+d(e.right)+`)`,ObjectExpression:e=>{for(let t of e.properties){let e=t.key.name;Xe.has(e)&&Ke(`Illegal property: `+e)}return`{`+e.properties.map(d).join(`,`)+`}`},Property:e=>{u+=1;let t=d(e.key);return--u,t+`:`+d(e.value)}};function p(e){let t={code:d(e),globals:Object.keys(c),fields:Object.keys(l)};return c={},l={},t}return p.functions=i,p.constants=r,p}function OL(e,t,n){return kN((n-e)/(t-e),0,1)}function kL(e){return k(e)||ArrayBuffer.isView(e)?e:null}function AL(e){return kL(e)||(F(e)?e:null)}var jL={clamp:kN,format(e,t){return or(t)(e)},join(e,t){return kL(e).join(t)},indexof(e,t,n){return AL(e).indexOf(t,n)},lastindexof(e,t,n){return AL(e).lastIndexOf(t,n)},reverse(e){return kL(e).slice().reverse()},slice(e,t,n){return AL(e).slice(t,n)},mapHasKey(e,t){return e.has(t)},isArray:k,isBoolean:xt,isDefined(e){return e!==void 0},isNumber:P,isObject:Ze,isRegExp:wt,isString:F,isValid(e){return e!=null&&e===e},lerp:I,linearstep:OL,replace(e,t,n){return String(e).replace(t,n)},sort(e){return kL(e).slice().sort(ht)},center(e){let t=kL(e);return(t[0]+t[t.length-1])/2},span(e){return Tt(e)},smoothstep:Zl};function ML(e,t){let n=TL(e);for(let e in jL)n[e]=`this.${e}`;for(let r of[`scale`,`invert`,`domain`,`range`])n[r]=n=>NL(e,t,r,n);return n}function NL(e,t,n,r){if(r.length===0)throw Error(`Scale helper "${n}" requires a literal channel name.`);if((n===`scale`||n===`invert`)&&r.length<2)throw Error(`Scale helper "${n}" requires a channel name and a value.`);let i=PL(r[0]);if(!i)throw Error(`Scale helper "${n}" requires a literal channel name.`);let a=t.resolveScaleResolution?.(i);if(!a)throw Error(`Unknown scale channel "${i}" in expression helper "${n}".`);let o=t.getScaleHelper(n,i,a),s=r.slice(1).map(t=>e(t)).join(`,`);return`${t.globalvar}["${o.codeName}"](${s})`}function PL(e){return e?.type===`Literal`&&typeof e.value==`string`?e.value:void 0}function FL(e,t){let n=n=>LL(t,e,n);if(e===`domain`)return()=>n(()=>t.getDomain());if(e===`range`)return()=>n(()=>t.getScale().range());if(e===`scale`)return e=>n(()=>t.getScale()(e));if(e===`invert`)return e=>n(()=>t.getScale().invert(e));throw Error(`Unknown scale helper: `+e)}var IL=new WeakSet;function LL(e,t,n){if(IL.has(e))throw Error(`Scale helper cycle detected while evaluating ${t}("${e.channel}").`);IL.add(e);try{return n()}finally{IL.delete(e)}}function RL(e,t,n,r){let i=new Set,a=()=>{for(let e of i)e()},o=()=>{e===`domain`?n.addEventListener(`domain`,a):(e===`range`||n.addEventListener(`domain`,a),n.addEventListener(`range`,a))},s=()=>{e===`domain`?n.removeEventListener(`domain`,a):(e===`range`||n.removeEventListener(`domain`,a),n.removeEventListener(`range`,a))};return{id:`scale:${t}:${r}`,name:`scale(${t})`,kind:`derived`,rank:0,get(){return n.getScale()},subscribe(e){let t=i.size===0;return i.add(e),t&&o(),()=>{i.delete(e)&&i.size===0&&s()}}}}function zL(e,t={},n={}){try{let r=new Map,i=new Map,a=1,o={...n,globalvar:`globalObject`,globalObject:t,getScaleHelper(e,n,o){let s=e+`:`+n,c=i.get(s);if(c)return c;let l=r.get(n);l||(l=RL(e,n,o,`__scale_dependency_`+ a++),r.set(n,l));let u=`__scale_helper_`+ a++,d={codeName:u,dependency:l};return i.set(s,d),t[u]=FL(e,o),d}},s=DL({forbidden:[],allowed:[`datum`,`undefined`],globalvar:`globalObject`,fieldvar:`datum`,functions:e=>ML(e,o)})(CL(e)),c=Function(`datum`,`globalObject`,`"use strict";
666
667
  try {
667
668
  return (${s.code});
668
669
  } catch (e) {
669
670
  throw new Error("Error evaluating expression: " + ${JSON.stringify(e)} + ", " + e.message, e);
670
- }`).bind(lL),l=e=>c(e,t);return l.fields=s.fields,l.globals=s.globals,l.code=s.code,l.scaleDependencies=Array.from(r.values()),l}catch(t){throw Error(`Invalid expression: ${e}, ${t.message}`,{cause:t})}}var vL=aL({forbidden:[],allowed:[`event`],globalvar:`globalObject`});function yL(e){try{let t=vL(tL(e));return Function(`event`,`globalObject`,`"use strict";
671
+ }`).bind(jL),l=e=>c(e,t);return l.fields=s.fields,l.globals=s.globals,l.code=s.code,l.scaleDependencies=Array.from(r.values()),l}catch(t){throw Error(`Invalid expression: ${e}, ${t.message}`,{cause:t})}}var BL=DL({forbidden:[],allowed:[`event`],globalvar:`globalObject`});function VL(e){try{let t=BL(CL(e));return Function(`event`,`globalObject`,`"use strict";
671
672
  try {
672
673
  return !!(${t.code});
673
674
  } catch (e) {
674
675
  throw new Error("Error evaluating expression: " + ${JSON.stringify(e)} + ", " + e.message, e);
675
- }`)}catch(t){throw Error(`Invalid expression: ${e}, ${t.message}`,{cause:t})}}function bL(e,t={},n={}){return _L(e,t,n)}function xL(e,t,n={}){let r={},i=bL(e,r,n),a=new Map;for(let n of i.globals){if(a.has(n))continue;let i=t(n);if(!i)throw Error(`Unknown variable "`+n+`" in expression: `+e);a.set(n,i),Object.defineProperty(r,n,{enumerable:!0,get(){return i.get()}})}let o=new Set;return i.subscribe=e=>{let t=[];for(let n of a.values())t.push(n.subscribe(e));for(let n of i.scaleDependencies??[])t.push(n.subscribe(e));let n=!0,r=()=>{n&&(n=!1,o.delete(r),t.forEach(e=>e()))};return o.add(r),r},i.invalidate=()=>{for(let e of o)e();o.clear()},i.identifier=()=>i.code+`|`+Array.from(a.values()).map(e=>e.id).concat((i.scaleDependencies??[]).map(e=>e.id)).join(`,`),{expression:i,dependencies:Array.from(a.values()).concat(i.scaleDependencies??[])}}var SL=class{#e=new QP;#t=new ZP({lifecycleRegistry:this.#e});#n=new $P;createScope(e){let t=this.#e.createOwner(`scope`,e??`root`);return e?this.#n.createChildScope(t,e):this.#n.createRootScope(t)}disposeScope(e){let t=this.#n.getOwnerId(e);this.#e.disposeOwner(t),this.#n.clearScope(e)}addScopeDisposer(e,t){let n=this.#n.getOwnerId(e);this.#e.addDisposer(n,t)}registerBase(e,t,n,r){let i=this.#n.getOwnerId(e),a=this.#t.createWritable(i,t,`base`,n,r);return this.#n.register(e,t,a)}registerSelection(e,t,n,r){let i=this.#n.getOwnerId(e),a=this.#t.createWritable(i,t,`selection`,n,r);return this.#n.register(e,t,a)}registerDerived(e,t,n,r){let{expression:i,dependencies:a}=xL(n,t=>this.resolve(e,t),r),o=this.#n.getOwnerId(e),s=this.#t.computed(o,t,a,()=>i(null));return this.#n.register(e,t,s)}createExpression(e,t,n){let{expression:r}=xL(t,t=>this.resolve(e,t),n);return r}resolve(e,t){return this.#n.resolve(e,t)}runInTransaction(e){return this.#t.runInTransaction(e)}flushNow(){this.#t.flushNow()}whenPropagated(e){return this.#t.whenPropagated(e)}},CL=class{#e;#t;#n=new Map;#r=new Map;#i=new Map;#a;#o;#s=!1;constructor(e,t){this.#a=e??(()=>void 0),this.#o=t??(()=>void 0);let n=this.#a();n?(this.#e=n.#e,this.#t=this.#e.createScope(n.#t)):(this.#e=new SL,this.#t=this.#e.createScope())}registerParam(e){let t=e.name;if(_g(t),this.#i.has(t))throw Error(`Parameter "`+t+`" already registered in this scope.`);if(`value`in e&&`expr`in e)throw Error(`The parameter "${t}" must not have both value and expr properties!`);let n,r;if(e.push==`outer`){let e=this.findRuntimeForParam(t);if(!e)throw Error(`Parameter "${t}" not found in outer scope!`);let r=e.paramConfigs.get(t);if(!r)throw Error(`Outer parameter "${t}" exists as a value but has no registered config.`);if(`expr`in r||`select`in r)throw Error(`The outer parameter "${t}" must not have expr or select properties!`);n=n=>{e.setValue(t,n)},this.#n.set(t,n)}else if(`value`in e)r=vg(e,this),n=this.#c(t,r);else if(`expr`in e){let r=this.#e.registerDerived(this.#t,t,e.expr,{resolveScaleResolution:this.#o});this.#r.set(t,r),n=()=>{throw Error(`Cannot set derived parameter "`+t+`".`)}}else r=vg(e,this),n=this.#c(t,r);if(`select`in e){if(r??=vg(e,this),!this.#n.has(t)){let e=this.#e.registerSelection(this.#t,t,r);this.#r.set(t,e),this.#n.set(t,t=>{e.set(t),this.#e.flushNow()}),n=this.#n.get(t)}n(r)}return this.#i.set(t,e),n}allocateSetter(e,t,n=!1){if(_g(e),this.#n.has(e))throw Error(`Setter already allocated for parameter: `+e);let r=this.#e.registerBase(this.#t,e,t,{notify:!n});this.#r.set(e,r);let i=e=>{r.set(e),this.#e.flushNow()};return this.#n.set(e,i),i}setValue(e,t){_g(e);let n=this.#n.get(e);if(!n)throw Error(`Writable parameter not found in this scope: `+e);n(t)}getValue(e){return this.#r.get(e)?.get()}subscribe(e,t){_g(e);let n=this.findRuntimeForParam(e);if(!n)throw Error(`Parameter not found: `+e);let r=n.#r.get(e);if(!r)throw Error(`Parameter found without local reference: `+e);return r.subscribe(t)}findValue(e){return this.findRuntimeForParam(e)?.getValue(e)}get paramConfigs(){return this.#i}hasLocalParam(e){return _g(e),this.#r.has(e)}hasConfiguredParamInScopeChain(e){return _g(e),this.#i.has(e)?!0:this.#a()?.hasConfiguredParamInScopeChain(e)??!1}findRuntimeForParam(e){return this.#r.has(e)?this:this.#a()?.findRuntimeForParam(e)}createExpression(e){return this.#e.createExpression(this.#t,e,{resolveScaleResolution:this.#o})}watchExpression(e,t,n={}){let r=this.createExpression(e),i=r.subscribe(t);return(n.scopeOwned??!0)&&this.#e.addScopeDisposer(this.#t,i),n.registerDisposer?.(i),r}#c(e,t){let n=this.#e.registerBase(this.#t,e,t);this.#r.set(e,n);let r=e=>{n.set(e),this.#e.flushNow()};return this.#n.set(e,r),r}evaluateAndGet(e){return this.createExpression(e)()}runInTransaction(e){return this.#e.runInTransaction(e)}flushNow(){this.#e.flushNow()}whenPropagated(e){return this.#e.whenPropagated(e)}dispose(){this.#s||(this.#s=!0,this.#e.disposeScope(this.#t),this.#n.clear(),this.#r.clear(),this.#i.clear())}hasPointSelections(){for(let e of this.#i.values())if(gg(e)){let t=e.select;if(N(t)){if(t==`point`)return!0}else if(t.type==`point`)return!0}return!1}},wL=`VISIT_SKIP`,TL=`VISIT_STOP`,EL=e=>e,DL=class{spec;#e;#t;#n={};#r={};#i={};#a;#o;#s=!1;opacityFunction=EL;#c=[];#l=`none`;facetCoords=new gn([],JSON.stringify);constructor(e,t,n,r,i,a={}){if(!e)throw Error(`View spec must be defined!`);if(this.context=t,this.layoutParent=n,this.dataParent=r,this.#t=i,this.spec=e,r&&e.theme!==void 0)throw Error(`"theme" is only supported at the root specification. Use "config" and "style" for subtree customization.`);let o=r?r.getConfigScopes():[t.getBaseConfig()],s=e.config;if(this.#e=[...o,s].filter(e=>!!e),this.resolutions={scale:{},axis:{}},EN(this),this.options={blockEncodingInheritance:!1,layoutSizeParams:`own`,...a},this.flowHandle=void 0,this.needsAxes={x:!1,y:!1},this.paramRuntime=new CL(()=>this.dataParent?.paramRuntime,e=>this.getScaleResolution(e)),e.params)for(let t of e.params)this.paramRuntime.registerParam(t);this.options.layoutSizeParams!==`inherit`&&(this.#a=this.#u(`width`),this.#o=this.#u(`height`))}#u(e){if(!(this.paramRuntime.hasLocalParam(e)||this.paramRuntime.hasConfiguredParamInScopeChain(e)))return this.paramRuntime.allocateSetter(e,0)}get name(){return this.spec.name??this.#t}get explicitName(){return this.spec.name}get defaultName(){return this.#t}getConfig(){return FN(this.#e)}getCursorSpec(){return this.spec.cursor}getCursor(){let e=this.getCursorSpec();return R(e)?this.paramRuntime.evaluateAndGet(e.expr):e}watchCursor(e,t){let n=this.getCursorSpec();R(n)&&this.paramRuntime.watchExpression(n.expr,e,{scopeOwned:!1,registerDisposer:t})}getConfigScopes(){return this.#e.slice()}get coords(){return this.facetCoords.values().next().value}getPadding(){return this._cache(`size/padding`,()=>IP.createFromConfig(this.spec.padding))}getOverhang(){return IP.zero()}isScrollable(){return this.spec.viewportWidth!=null||this.spec.viewportHeight!=null}getSize(){return this._cache(`size/size`,()=>this.isConfiguredVisible()?new kP(this.#d(`width`),this.#d(`height`)):jP)}getViewportSize(){if(!this.isScrollable())return this.getSize();if(!this.isConfiguredVisible())return jP;let e=this.getSize();return new kP(this.#d(`viewportWidth`)??e.width,this.#d(`viewportHeight`)??e.height)}#d(e){let t=this.spec[e],n=ML(t),r=e==`viewportWidth`||e==`viewportHeight`;if(n){if(r)throw new AN(`Cannot use step-based size with "${e}"!`,this);let n=t.step,i=this.getScaleResolution(e==`width`?`x`:`y`)?.getScale();if(i){let e;if(bm(i.type))e=i.domain().length;else if([`locus`,`index`].includes(i.type)){let t=i.domain();e=Ql(t)-t[0]}else throw new AN(`Cannot use step-based size with "${i.type}" scale!`,this);let t=i;return e=Rp(e,t.paddingInner(),t.paddingOuter()),{px:e*n,grow:0}}else throw new AN(`Cannot use step-based size with "${e}"!`,this)}else return(t&&FP(t))??(r?void 0:{px:0,grow:1})}registerStepSizeInvalidation(){this.#f(`width`,`x`),this.#f(`height`,`y`)}#f(e,t){let n=this.spec[e];if(!ML(n))return;let r=this.getScaleResolution(t);if(!r)throw new AN(`Cannot use 'step' size without a scale!`,this);let i=()=>this.invalidateSizeCache();r.addEventListener(`domain`,i),this.registerDisposer(()=>r.removeEventListener(`domain`,i))}isConfiguredVisible(){return this.context.isViewConfiguredVisible(this)}isVisibleInSpec(){return this.spec.visible??!0}isVisible(){return this.getLayoutAncestors().every(e=>e.isConfiguredVisible())}isDomainInert(){if(this.spec.domainInert)return!0;let e=this.dataParent;return e?e.isDomainInert():!1}getDataInitializationState(){return this.#l}_setDataInitializationState(e){this.#l=e}isDataInitialized(){return this.#l===`ready`}getEffectiveOpacity(){return this.opacityFunction(this.layoutParent?.getEffectiveOpacity()??1)}getPathString(){return this.getLayoutAncestors().map(e=>e.name).reverse().join(`/`)}#p(e){let t=[],n=this;do t.push(n),n=n[e];while(n);return t}getLayoutAncestors(){return this.#p(`layoutParent`)}getDataAncestors(){return this.#p(`dataParent`)}handleBroadcast(e){for(let t of this.#n[e.type]||[])t(e)}_addBroadcastHandler(e,t){let n=this.#n[e];return n||(n=[],this.#n[e]=n),n.push(t),()=>{let n=this.#n[e];if(!n)return;let r=n.indexOf(t);r>=0&&n.splice(r,1)}}handleInteraction(e,t){let n=t?this.#r:this.#i;for(let t of n[e.type]||[])t(e)}addInteractionListener(e,t,n){let r=n?this.#r:this.#i,i=r[e];i||(i=[],r[e]=i),i.push(t)}removeInteractionListener(e,t,n){let r=(n?this.#r:this.#i)?.[e];if(r){let e=r.indexOf(t);e>=0&&r.splice(e,1)}}visit(e){try{let t=e(this);if(e.postOrder&&e.postOrder(this),t!==`VISIT_STOP`)return t}catch(e){throw e.view=this,e}}getDescendants(){let e=[];return this.visit(t=>{e.push(t)}),e}dispose(){for(let e of this.#c)e();this.#c.length=0;let e=this.flowHandle;e?.collector&&(this.context.dataFlow.pruneCollectorBranch(e.collector),this.context.dataFlow.removeCollector(e.collector)),e?.dataSource&&e.dataSource.view===this&&!e.dataSource.identifier&&this.context.dataFlow.removeDataSource(e.dataSource),this.paramRuntime.dispose(),this.context.dataFlow.loadingStatusRegistry.delete(this),this.flowHandle=void 0}registerDisposer(e){this.#c.push(e)}disposeSubtree(){let e=()=>void 0;e.postOrder=e=>{e.dispose()},this.visit(e)}configureViewOpacity(){(!this.opacityFunction||this.opacityFunction===EL)&&(this.opacityFunction=kL(this))}onBeforeRender(){this.#s||=!0}hasRendered(){return this.#s}render(e,t,n={}){n.firstFacet&&this.facetCoords.clear(),this.facetCoords.set(n.facetId,n.clipRect?t.intersect(n.clipRect):t),this.#a?.(t.width),this.#o?.(t.height)}getEncoding(){let e=this.dataParent&&!this.options.blockEncodingInheritance?this.dataParent.getEncoding():{},t=this.spec.encoding||{},n={...e,...t};for(let[e,t]of Object.entries(n))t===null&&delete n[e];return n}getFacetAccessor(e){if(this.layoutParent)return this.layoutParent.getFacetAccessor(this)}getFacetFields(e){let t=this.getEncoding().sample;return Ah(t)?[t.field]:this.layoutParent?.getFacetFields(this)}getSampleFacetTexture(){}getScaleResolution(e){let t=Jh(e);return this.getDataAncestors().map(e=>e.resolutions.scale[t]).find(e=>e)}getAxisResolution(e){let t=Jh(e);return this.getDataAncestors().map(e=>e.resolutions.axis[t]).find(e=>e)}getConfiguredResolution(e,t){return this.spec.resolve?.[t]?.[e]}getConfiguredOrDefaultResolution(e,t){return this.getConfiguredResolution(e,t)??this.getConfiguredResolution(`default`,t)??this.getDefaultResolution(e,t)}getDefaultResolution(e,t){return`independent`}getBaseUrl(){return zP(()=>this.dataParent?.getBaseUrl(),oh(this.spec.baseUrl))}isPickingSupported(){return!0}getTitleText(){let e=this.spec.title;if(e)return N(e)?e:R(e.text)?this.paramRuntime.evaluateAndGet(e.text.expr):e.text}_cache(e,t){return CN(this,e,t)}_invalidateCacheByPrefix(e,t=`self`){switch(t){case`self`:TN(this,e);break;case`ancestors`:for(let t of this.getLayoutAncestors())TN(t,e);break;case`progeny`:this.visit(t=>TN(t,e));break;default:}}invalidateSizeCache(){TN(this,`size`),this._invalidateCacheByPrefix(`size`,`ancestors`)}propagateInteraction(e){}};function OL(e){return`unitsPerPixel`in e}function kL(e){let t=`opacity`in e.spec?e.spec.opacity:void 0;if(t!==void 0){if(M(t))return e=>e*t;if(OL(t)){let n=t=>{let n=e.getScaleResolution(t),r=n?.getScale();if([`linear`,`index`,`locus`].includes(r?.type))return{scale:r,scaleResolution:n}},r=jL(t.values,`opacity.values`,e);if(!Qe(t.unitsPerPixel))throw new AN(`"opacity.unitsPerPixel" must be an array.`,e);let i=()=>1,a=[],o=()=>{let t=AL(jL(a.map(e=>e()),`opacity.unitsPerPixel`,e),r,e),n=Yf().domain(t.unitsPerPixel).range(t.values).clamp(!0);i=e=>n(e)};a=t.unitsPerPixel.map(t=>{if(R(t)){let n=e.paramRuntime.watchExpression(t.expr,()=>{o(),e.context.animator.requestRender()});return()=>n(null)}else return()=>t}),o();let s=e=>{let t=e.scaleResolution.getAxisLength()||1e3;return Dt(e.scale.domain())/t},c;if(t.channel===`auto`){let t=n(`x`),r=n(`y`);if(t&&r)c=()=>(s(t)+s(r))/2;else if(t)c=()=>s(t);else if(r)c=()=>s(r);else throw new AN(`Cannot find a resolved quantitative x or y scale for dynamic opacity!`,e)}else{let r=t.channel?n(t.channel):n(`x`)??n(`y`);if(!r)throw new AN(`Cannot find a resolved quantitative scale for dynamic opacity!`,e);c=()=>s(r)}return e=>i(c())*e}else if(R(t)){let n=e.paramRuntime.watchExpression(t.expr,()=>e.context.animator.requestRender());return e=>n(null)*e}}return e=>e}function AL(e,t,n){if(!e.length)throw new AN(`"opacity.unitsPerPixel" must contain at least one stop.`,n);if(e.length!==t.length)throw new AN(`"opacity.unitsPerPixel" and "opacity.values" must have the same length.`,n);e.forEach((e,t)=>{if(e<=0)throw new AN(`Invalid opacity.unitsPerPixel value at index `+t+`. Stop values must be positive.`,n)});let r=e.map((e,n)=>({stop:e,value:t[n]}));r.sort((e,t)=>t.stop-e.stop);let i=r.map(e=>e.stop),a=r.map(e=>e.value);for(let t=1;t<e.length;t++)if(i[t-1]<=i[t])throw new AN(`"opacity.unitsPerPixel" must be strictly decreasing.`,n);return{unitsPerPixel:i,values:a}}function jL(e,t,n){if(!Qe(e))throw new AN(`"`+t+`" must evaluate to an array.`,n);return e.map((e,r)=>{if(!M(e)||!Number.isFinite(e))throw new AN(`Invalid `+t+` value at index `+r+`. Expected a finite number.`,n);return e})}var ML=e=>!!e?.step;function NL(e){return PL(e?.search,`search`)}function PL(e,t){if(!e)return;let n=Array.isArray(e)?e:[e];if(n.length===0)throw Error(`The `+t+` channel array must not be empty.`);let r=[];for(let e of n){if(!e||typeof e!=`object`||!(`field`in e))throw Error(`The `+t+` channel must be a field definition or an array of field definitions.`);let n=e.field;if(typeof n!=`string`)throw Error(`The `+t+` channel field definition must include a string field name.`);r.push(n)}return r}var FL=1;function IL(){let e=[0,1],t=[0,1],n=1,r=1,i=0,a=0,o=.5,s=0,c=i=>(i+o-e[0])/n*r+t[0];return c.invert=i=>(i-t[0])/r*n+e[0]-o,c.domain=function(t){if(arguments.length){e=hn(t),n=e[1]-e[0];let r=e[0]===0&&e[0]===0;if(n<FL&&!r){n=FL;let t=(e[0]+e[1])/2;e[0]=t-n/2,e[1]=t+n/2}return c}else return e.slice()},c.range=function(e){return arguments.length?(t=[...e],r=t[1]-t[0],c):t},c.numberingOffset=function(e){return arguments.length?(s=e,c):s},c.padding=function(e){return arguments.length?(a=e,i=Math.min(1,e),c):i},c.paddingInner=function(e){return arguments.length?(i=Math.min(1,e),c):i},c.paddingOuter=function(e){return arguments.length?(a=e,c):a},c.align=function(e){return arguments.length?(o=Math.max(0,Math.min(1,e)),c):o},c.step=()=>r/n,c.bandwidth=()=>c.step(),c.ticks=t=>{let r=c.align(),i=c.numberingOffset();return jn(e[0]-r+i,e[1]-r+i,Math.min(t,Math.ceil(n))).filter(Number.isInteger).map(e=>e-s)},c.tickFormat=(t,r)=>{if(r)throw Error(`Index scale's tickFormat does not support a specifier!`);let i=Nn(e[0],e[1],Math.min(t,Math.ceil(n)))<1e5?cr(`,`):cr(`.3s`);return e=>i(e+s)},c.copy=()=>IL().domain(e).range(t).paddingInner(i).paddingOuter(a).numberingOffset(s),c}var LL=cr(`,d`);function RL(e){return e.chrom+`:`+LL(Math.floor(e.pos+1))}function zL(e,t){return e.chrom+`:`+LL(Math.floor(e.pos+1))+`-`+(e.chrom==t.chrom?``:t.chrom+`:`)+LL(Math.ceil(t.pos))}var BL={dm6:`chr3R 32079331
676
+ }`)}catch(t){throw Error(`Invalid expression: ${e}, ${t.message}`,{cause:t})}}function HL(e,t={},n={}){return zL(e,t,n)}function UL(e,t,n={}){let r={},i=HL(e,r,n),a=new Map;for(let n of i.globals){if(a.has(n))continue;let i=t(n);if(!i)throw Error(`Unknown variable "`+n+`" in expression: `+e);a.set(n,i),Object.defineProperty(r,n,{enumerable:!0,get(){return i.get()}})}let o=new Set;return i.subscribe=e=>{let t=[];for(let n of a.values())t.push(n.subscribe(e));for(let n of i.scaleDependencies??[])t.push(n.subscribe(e));let n=!0,r=()=>{n&&(n=!1,o.delete(r),t.forEach(e=>e()))};return o.add(r),r},i.invalidate=()=>{for(let e of o)e();o.clear()},i.identifier=()=>i.code+`|`+Array.from(a.values()).map(e=>e.id).concat((i.scaleDependencies??[]).map(e=>e.id)).join(`,`),{expression:i,dependencies:Array.from(a.values()).concat(i.scaleDependencies??[])}}var WL=class{#e=new bF;#t=new yF({lifecycleRegistry:this.#e});#n=new xF;createScope(e){let t=this.#e.createOwner(`scope`,e??`root`);return e?this.#n.createChildScope(t,e):this.#n.createRootScope(t)}disposeScope(e){let t=this.#n.getOwnerId(e);this.#e.disposeOwner(t),this.#n.clearScope(e)}addScopeDisposer(e,t){let n=this.#n.getOwnerId(e);this.#e.addDisposer(n,t)}registerBase(e,t,n,r){let i=this.#n.getOwnerId(e),a=this.#t.createWritable(i,t,`base`,n,r);return this.#n.register(e,t,a)}registerSelection(e,t,n,r){let i=this.#n.getOwnerId(e),a=this.#t.createWritable(i,t,`selection`,n,r);return this.#n.register(e,t,a)}registerDerived(e,t,n,r){let{expression:i,dependencies:a}=UL(n,t=>this.resolve(e,t),r),o=this.#n.getOwnerId(e),s=this.#t.computed(o,t,a,()=>i(null));return this.#n.register(e,t,s)}createExpression(e,t,n){let{expression:r}=UL(t,t=>this.resolve(e,t),n);return r}resolve(e,t){return this.#n.resolve(e,t)}runInTransaction(e){return this.#t.runInTransaction(e)}flushNow(){this.#t.flushNow()}whenPropagated(e){return this.#t.whenPropagated(e)}},GL=class{#e;#t;#n=new Map;#r=new Map;#i=new Map;#a;#o;#s=!1;constructor(e,t){this.#a=e??(()=>void 0),this.#o=t??(()=>void 0);let n=this.#a();n?(this.#e=n.#e,this.#t=this.#e.createScope(n.#t)):(this.#e=new WL,this.#t=this.#e.createScope())}registerParam(e){let t=e.name;if(hg(t),this.#i.has(t))throw Error(`Parameter "`+t+`" already registered in this scope.`);if(`value`in e&&`expr`in e)throw Error(`The parameter "${t}" must not have both value and expr properties!`);let n,r;if(e.push==`outer`){let e=this.findRuntimeForParam(t);if(!e)throw Error(`Parameter "${t}" not found in outer scope!`);let r=e.paramConfigs.get(t);if(!r)throw Error(`Outer parameter "${t}" exists as a value but has no registered config.`);if(`expr`in r||`select`in r)throw Error(`The outer parameter "${t}" must not have expr or select properties!`);n=n=>{e.setValue(t,n)},this.#n.set(t,n)}else if(`value`in e)r=gg(e,this),n=this.#c(t,r);else if(`expr`in e){let r=this.#e.registerDerived(this.#t,t,e.expr,{resolveScaleResolution:this.#o});this.#r.set(t,r),n=()=>{throw Error(`Cannot set derived parameter "`+t+`".`)}}else r=gg(e,this),n=this.#c(t,r);if(`select`in e){if(r??=gg(e,this),!this.#n.has(t)){let e=this.#e.registerSelection(this.#t,t,r);this.#r.set(t,e),this.#n.set(t,t=>{e.set(t),this.#e.flushNow()}),n=this.#n.get(t)}n(r)}return this.#i.set(t,e),n}allocateSetter(e,t,n=!1){if(hg(e),this.#n.has(e))throw Error(`Setter already allocated for parameter: `+e);let r=this.#e.registerBase(this.#t,e,t,{notify:!n});this.#r.set(e,r);let i=e=>{r.set(e),this.#e.flushNow()};return this.#n.set(e,i),i}setValue(e,t){hg(e);let n=this.#n.get(e);if(!n)throw Error(`Writable parameter not found in this scope: `+e);n(t)}getValue(e){return this.#r.get(e)?.get()}subscribe(e,t){hg(e);let n=this.findRuntimeForParam(e);if(!n)throw Error(`Parameter not found: `+e);let r=n.#r.get(e);if(!r)throw Error(`Parameter found without local reference: `+e);return r.subscribe(t)}findValue(e){return this.findRuntimeForParam(e)?.getValue(e)}get paramConfigs(){return this.#i}hasLocalParam(e){return hg(e),this.#r.has(e)}hasConfiguredParamInScopeChain(e){return hg(e),this.#i.has(e)?!0:this.#a()?.hasConfiguredParamInScopeChain(e)??!1}findRuntimeForParam(e){return this.#r.has(e)?this:this.#a()?.findRuntimeForParam(e)}createExpression(e){return this.#e.createExpression(this.#t,e,{resolveScaleResolution:this.#o})}watchExpression(e,t,n={}){let r=this.createExpression(e),i=r.subscribe(t);return(n.scopeOwned??!0)&&this.#e.addScopeDisposer(this.#t,i),n.registerDisposer?.(i),r}#c(e,t){let n=this.#e.registerBase(this.#t,e,t);this.#r.set(e,n);let r=e=>{n.set(e),this.#e.flushNow()};return this.#n.set(e,r),r}evaluateAndGet(e){return this.createExpression(e)()}runInTransaction(e){return this.#e.runInTransaction(e)}flushNow(){this.#e.flushNow()}whenPropagated(e){return this.#e.whenPropagated(e)}dispose(){this.#s||(this.#s=!0,this.#e.disposeScope(this.#t),this.#n.clear(),this.#r.clear(),this.#i.clear())}hasPointSelections(){for(let e of this.#i.values())if(mg(e)){let t=e.select;if(F(t)){if(t==`point`)return!0}else if(t.type==`point`)return!0}return!1}},KL=`VISIT_SKIP`,qL=`VISIT_STOP`,JL=e=>e,YL=class{spec;#e;#t;#n={};#r={};#i={};#a;#o;#s=!1;opacityFunction=JL;#c=[];#l=`none`;facetCoords=new mn([],JSON.stringify);constructor(e,t,n,r,i,a={}){if(!e)throw Error(`View spec must be defined!`);if(this.context=t,this.layoutParent=n,this.dataParent=r,this.#t=i,this.spec=e,r&&e.theme!==void 0)throw Error(`"theme" is only supported at the root specification. Use "config" and "style" for subtree customization.`);let o=r?r.getConfigScopes():[t.getBaseConfig()],s=e.config;if(this.#e=[...o,s].filter(e=>!!e),this.resolutions={scale:{},axis:{}},JN(this),this.options={blockEncodingInheritance:!1,layoutSizeParams:`own`,...a},this.flowHandle=void 0,this.needsAxes={x:!1,y:!1},this.paramRuntime=new GL(()=>this.dataParent?.paramRuntime,e=>this.getScaleResolution(e)),e.params)for(let t of e.params)this.paramRuntime.registerParam(t);this.options.layoutSizeParams!==`inherit`&&(this.#a=this.#u(`width`),this.#o=this.#u(`height`))}#u(e){if(!(this.paramRuntime.hasLocalParam(e)||this.paramRuntime.hasConfiguredParamInScopeChain(e)))return this.paramRuntime.allocateSetter(e,0)}get name(){return this.spec.name??this.#t}get explicitName(){return this.spec.name}get defaultName(){return this.#t}getConfig(){return rP(this.#e)}getCursorSpec(){return this.spec.cursor}getCursor(){let e=this.getCursorSpec();return B(e)?this.paramRuntime.evaluateAndGet(e.expr):e}watchCursor(e,t){let n=this.getCursorSpec();B(n)&&this.paramRuntime.watchExpression(n.expr,e,{scopeOwned:!1,registerDisposer:t})}getConfigScopes(){return this.#e.slice()}get coords(){return this.facetCoords.values().next().value}getPadding(){return this._cache(`size/padding`,()=>iF.createFromConfig(this.spec.padding))}getOverhang(){return iF.zero()}isScrollable(){return this.spec.viewportWidth!=null||this.spec.viewportHeight!=null}getSize(){return this._cache(`size/size`,()=>this.isConfiguredVisible()?new ZP(this.#d(`width`),this.#d(`height`)):$P)}getViewportSize(){if(!this.isScrollable())return this.getSize();if(!this.isConfiguredVisible())return $P;let e=this.getSize();return new ZP(this.#d(`viewportWidth`)??e.width,this.#d(`viewportHeight`)??e.height)}#d(e){let t=this.spec[e],n=eR(t),r=e==`viewportWidth`||e==`viewportHeight`;if(n){if(r)throw new QN(`Cannot use step-based size with "${e}"!`,this);let n=t.step,i=this.getScaleResolution(e==`width`?`x`:`y`)?.getScale();if(i){let e;if(vm(i.type))e=i.domain().length;else if([`locus`,`index`].includes(i.type)){let t=i.domain();e=Xl(t)-t[0]}else throw new QN(`Cannot use step-based size with "${i.type}" scale!`,this);let t=i;return e=Ip(e,t.paddingInner(),t.paddingOuter()),{px:e*n,grow:0}}else throw new QN(`Cannot use step-based size with "${e}"!`,this)}else return(t&&rF(t))??(r?void 0:{px:0,grow:1})}registerStepSizeInvalidation(){this.#f(`width`,`x`),this.#f(`height`,`y`)}#f(e,t){let n=this.spec[e];if(!eR(n))return;let r=this.getScaleResolution(t);if(!r)throw new QN(`Cannot use 'step' size without a scale!`,this);let i=()=>this.invalidateSizeCache();r.addEventListener(`domain`,i),this.registerDisposer(()=>r.removeEventListener(`domain`,i))}isConfiguredVisible(){return this.context.isViewConfiguredVisible(this)}isVisibleInSpec(){return this.spec.visible??!0}isVisible(){return this.getLayoutAncestors().every(e=>e.isConfiguredVisible())}isDomainInert(){if(this.spec.domainInert)return!0;let e=this.dataParent;return e?e.isDomainInert():!1}getDataInitializationState(){return this.#l}_setDataInitializationState(e){this.#l=e}isDataInitialized(){return this.#l===`ready`}getEffectiveOpacity(){return this.opacityFunction(this.layoutParent?.getEffectiveOpacity()??1)}getPathString(){return this.getLayoutAncestors().map(e=>e.name).reverse().join(`/`)}#p(e){let t=[],n=this;do t.push(n),n=n[e];while(n);return t}getLayoutAncestors(){return this.#p(`layoutParent`)}getDataAncestors(){return this.#p(`dataParent`)}handleBroadcast(e){for(let t of this.#n[e.type]||[])t(e)}_addBroadcastHandler(e,t){let n=this.#n[e];return n||(n=[],this.#n[e]=n),n.push(t),()=>{let n=this.#n[e];if(!n)return;let r=n.indexOf(t);r>=0&&n.splice(r,1)}}handleInteraction(e,t){let n=t?this.#r:this.#i;for(let t of n[e.type]||[])t(e)}addInteractionListener(e,t,n){let r=n?this.#r:this.#i,i=r[e];i||(i=[],r[e]=i),i.push(t)}removeInteractionListener(e,t,n){let r=(n?this.#r:this.#i)?.[e];if(r){let e=r.indexOf(t);e>=0&&r.splice(e,1)}}visit(e){try{let t=e(this);if(e.postOrder&&e.postOrder(this),t!==`VISIT_STOP`)return t}catch(e){throw e.view=this,e}}getDescendants(){let e=[];return this.visit(t=>{e.push(t)}),e}dispose(){for(let e of this.#c)e();this.#c.length=0;let e=this.flowHandle;e?.collector&&(this.context.dataFlow.pruneCollectorBranch(e.collector),this.context.dataFlow.removeCollector(e.collector)),e?.dataSource&&e.dataSource.view===this&&!e.dataSource.identifier&&this.context.dataFlow.removeDataSource(e.dataSource),this.paramRuntime.dispose(),this.context.dataFlow.loadingStatusRegistry.delete(this),this.flowHandle=void 0}registerDisposer(e){this.#c.push(e)}disposeSubtree(){let e=()=>void 0;e.postOrder=e=>{e.dispose()},this.visit(e)}configureViewOpacity(){(!this.opacityFunction||this.opacityFunction===JL)&&(this.opacityFunction=ZL(this))}onBeforeRender(){this.#s||=!0}hasRendered(){return this.#s}render(e,t,n={}){n.firstFacet&&this.facetCoords.clear(),this.facetCoords.set(n.facetId,n.clipRect?t.intersect(n.clipRect):t),this.#a?.(t.width),this.#o?.(t.height)}getEncoding(){let e=this.dataParent&&!this.options.blockEncodingInheritance?this.dataParent.getEncoding():{},t=this.spec.encoding||{},n={...e,...t};for(let[e,t]of Object.entries(n))t===null&&delete n[e];return n}getFacetAccessor(e){if(this.layoutParent)return this.layoutParent.getFacetAccessor(this)}getFacetFields(e){let t=this.getEncoding().sample;return Oh(t)?[t.field]:this.layoutParent?.getFacetFields(this)}getSampleFacetTexture(){}getScaleResolution(e){let t=Kh(e);return this.getDataAncestors().map(e=>e.resolutions.scale[t]).find(e=>e)}getAxisResolution(e){let t=Kh(e);return this.getDataAncestors().map(e=>e.resolutions.axis[t]).find(e=>e)}getConfiguredResolution(e,t){return this.spec.resolve?.[t]?.[e]}getConfiguredOrDefaultResolution(e,t){return this.getConfiguredResolution(e,t)??this.getConfiguredResolution(`default`,t)??this.getDefaultResolution(e,t)}getDefaultResolution(e,t){return`independent`}getBaseUrl(){return sF(()=>this.dataParent?.getBaseUrl(),ih(this.spec.baseUrl))}isPickingSupported(){return!0}getTitleText(){let e=this.spec.title;if(e)return F(e)?e:B(e.text)?this.paramRuntime.evaluateAndGet(e.text.expr):e.text}_cache(e,t){return GN(this,e,t)}_invalidateCacheByPrefix(e,t=`self`){switch(t){case`self`:qN(this,e);break;case`ancestors`:for(let t of this.getLayoutAncestors())qN(t,e);break;case`progeny`:this.visit(t=>qN(t,e));break;default:}}invalidateSizeCache(){qN(this,`size`),this._invalidateCacheByPrefix(`size`,`ancestors`)}propagateInteraction(e){}};function XL(e){return`unitsPerPixel`in e}function ZL(e){let t=`opacity`in e.spec?e.spec.opacity:void 0;if(t!==void 0){if(P(t))return e=>e*t;if(XL(t)){let n=t=>{let n=e.getScaleResolution(t),r=n?.getScale();if([`linear`,`index`,`locus`].includes(r?.type))return{scale:r,scaleResolution:n}},r=$L(t.values,`opacity.values`,e);if(!k(t.unitsPerPixel))throw new QN(`"opacity.unitsPerPixel" must be an array.`,e);let i=()=>1,a=[],o=()=>{let t=QL($L(a.map(e=>e()),`opacity.unitsPerPixel`,e),r,e),n=qf().domain(t.unitsPerPixel).range(t.values).clamp(!0);i=e=>n(e)};a=t.unitsPerPixel.map(t=>{if(B(t)){let n=e.paramRuntime.watchExpression(t.expr,()=>{o(),e.context.animator.requestRender()});return()=>n(null)}else return()=>t}),o();let s=e=>{let t=e.scaleResolution.getAxisLength()||1e3;return Tt(e.scale.domain())/t},c;if(t.channel===`auto`){let t=n(`x`),r=n(`y`);if(t&&r)c=()=>(s(t)+s(r))/2;else if(t)c=()=>s(t);else if(r)c=()=>s(r);else throw new QN(`Cannot find a resolved quantitative x or y scale for dynamic opacity!`,e)}else{let r=t.channel?n(t.channel):n(`x`)??n(`y`);if(!r)throw new QN(`Cannot find a resolved quantitative scale for dynamic opacity!`,e);c=()=>s(r)}return e=>i(c())*e}else if(B(t)){let n=e.paramRuntime.watchExpression(t.expr,()=>e.context.animator.requestRender());return e=>n(null)*e}}return e=>e}function QL(e,t,n){if(!e.length)throw new QN(`"opacity.unitsPerPixel" must contain at least one stop.`,n);if(e.length!==t.length)throw new QN(`"opacity.unitsPerPixel" and "opacity.values" must have the same length.`,n);e.forEach((e,t)=>{if(e<=0)throw new QN(`Invalid opacity.unitsPerPixel value at index `+t+`. Stop values must be positive.`,n)});let r=e.map((e,n)=>({stop:e,value:t[n]}));r.sort((e,t)=>t.stop-e.stop);let i=r.map(e=>e.stop),a=r.map(e=>e.value);for(let t=1;t<e.length;t++)if(i[t-1]<=i[t])throw new QN(`"opacity.unitsPerPixel" must be strictly decreasing.`,n);return{unitsPerPixel:i,values:a}}function $L(e,t,n){if(!k(e))throw new QN(`"`+t+`" must evaluate to an array.`,n);return e.map((e,r)=>{if(!P(e)||!Number.isFinite(e))throw new QN(`Invalid `+t+` value at index `+r+`. Expected a finite number.`,n);return e})}var eR=e=>!!e?.step;function tR(e){return nR(e?.search,`search`)}function nR(e,t){if(!e)return;let n=Array.isArray(e)?e:[e];if(n.length===0)throw Error(`The `+t+` channel array must not be empty.`);let r=[];for(let e of n){if(!e||typeof e!=`object`||!(`field`in e))throw Error(`The `+t+` channel must be a field definition or an array of field definitions.`);let n=e.field;if(typeof n!=`string`)throw Error(`The `+t+` channel field definition must include a string field name.`);r.push(n)}return r}var rR=1;function iR(){let e=[0,1],t=[0,1],n=1,r=1,i=0,a=0,o=.5,s=0,c=i=>(i+o-e[0])/n*r+t[0];return c.invert=i=>(i-t[0])/r*n+e[0]-o,c.domain=function(t){if(arguments.length){e=pn(t),n=e[1]-e[0];let r=e[0]===0&&e[0]===0;if(n<rR&&!r){n=rR;let t=(e[0]+e[1])/2;e[0]=t-n/2,e[1]=t+n/2}return c}else return e.slice()},c.range=function(e){return arguments.length?(t=[...e],r=t[1]-t[0],c):t},c.numberingOffset=function(e){return arguments.length?(s=e,c):s},c.padding=function(e){return arguments.length?(a=e,i=Math.min(1,e),c):i},c.paddingInner=function(e){return arguments.length?(i=Math.min(1,e),c):i},c.paddingOuter=function(e){return arguments.length?(a=e,c):a},c.align=function(e){return arguments.length?(o=Math.max(0,Math.min(1,e)),c):o},c.step=()=>r/n,c.bandwidth=()=>c.step(),c.ticks=t=>{let r=c.align(),i=c.numberingOffset();return kn(e[0]-r+i,e[1]-r+i,Math.min(t,Math.ceil(n))).filter(Number.isInteger).map(e=>e-s)},c.tickFormat=(t,r)=>{if(r)throw Error(`Index scale's tickFormat does not support a specifier!`);let i=jn(e[0],e[1],Math.min(t,Math.ceil(n)))<1e5?or(`,`):or(`.3s`);return e=>i(e+s)},c.copy=()=>iR().domain(e).range(t).paddingInner(i).paddingOuter(a).numberingOffset(s),c}var aR=or(`,d`);function oR(e){return e.chrom+`:`+aR(Math.floor(e.pos+1))}function sR(e,t){return e.chrom+`:`+aR(Math.floor(e.pos+1))+`-`+(e.chrom==t.chrom?``:t.chrom+`:`)+aR(Math.ceil(t.pos))}var cR={dm6:`chr3R 32079331
676
677
  chr3L 28110227
677
678
  chr2R 25286936
678
679
  chrX 23542271
@@ -793,40 +794,40 @@ chr18 90702639
793
794
  chr19 61431566
794
795
  chrX 171031299
795
796
  chrY 91744698
796
- chrM 16299`};function VL(e){if(!(e in BL))throw Error(`Unknown assembly: ${e}`);return BL[e].split(`
797
- `).map(e=>{let t=e.split(` `);return{name:t[0],size:parseInt(t[1])}})}var HL=class{constructor(e){if(this.config={name:`custom`,...e},`baseUrl`in e)throw Error("The `baseUrl` property in genome config has been removed in GenomeSpy v0.52.0. Use `url` instead. See https://genomespy.app/docs/genomic-data/genomic-coordinates/.");if(!qL(e))throw Error(`Not a genome configuration: `+JSON.stringify(e));if(this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,YL(this.config))this.setChromSizes(this.config.contigs);else if(!JL(this.config)){let e=VL(this.config.name);if(e)this.setChromSizes(e);else throw Error(`Unknown genome: ${this.config.name}. Please provide contigs or a URL. See https://genomespy.app/docs/genomic-data/genomic-coordinates/.`)}}get name(){return this.config.name}async load(e){if(JL(this.config))try{let t=zP(e,this.config.url),n=await fetch(t);if(!n.ok)throw Error(`${n.status} ${n.statusText}`);this.setChromSizes(UL(await n.text()))}catch(e){throw Error(`Could not load chrom sizes: ${this.config.url}. Reason: ${e.message}`,{cause:e})}}hasChrPrefix(){return this.chromosomes.some(e=>e.name.startsWith(`chr`))}setChromSizes(e){this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map;let t=0;this.startByIndex=[0];for(let n=0;n<e.length;n++){this.startByIndex.push(t);let r=e[n].size,i={...e[n],continuousStart:t,continuousEnd:t+r,continuousInterval:[t,t+r],index:n,number:n+1,odd:!(n&1)};this.chromosomes.push(i);let a=i.name.replace(/^chr/i,``);for(let e of[`chr`+a,`CHR`+a,`Chr`+a,i.number,``+i.number,a,i.name])this.cumulativeChromPositions.set(e,t),this.chromosomesByName.set(e,i);t+=i.size}this.totalSize=t}getExtent(){return[0,this.totalSize]}toContinuous(e,t){let n=this.cumulativeChromPositions.get(e);if(n===void 0)throw Error(`Unknown chromosome/contig: `+e);return n+ +t}toChromosome(e){if(e>this.totalSize)return;e=Math.floor(e);let t=fn(this.startByIndex,e)-1;if(t>0&&t<=this.chromosomes.length)return this.chromosomes[t-1]}toChromosomal(e){let t=this.toChromosome(e);if(t)return{chrom:t.name,pos:Math.floor(e)-t.continuousStart}}getChromosome(e){return this.chromosomesByName.get(e)}formatInterval(e){return zL(...this.toChromosomalInterval(e))}formatLocus(e){let t=this.toChromosomal(e);if(t)return RL(t)}toChromosomalInterval(e){let t=this.toChromosomal(e[0]+.5),n=this.toChromosomal(e[1]-.5);return n.pos+=1,[t,n]}toContinuousInterval(e){let[t,n]=e;return n||=t,[this.toContinuous(t.chrom,t.pos??0),this.toContinuous(n.chrom,n.pos??this.chromosomesByName.get(n.chrom)?.size)]}toDiscreteChromosomeIntervals(e){let t=e[0],n=e[1],r=[];if(t.chrom===n.chrom)r.push({chrom:t.chrom,startPos:t.pos,endPos:n.pos});else{let e=this.chromosomes.findIndex(e=>e.name===t.chrom),i=this.chromosomes.findIndex(e=>e.name===n.chrom);r.push({chrom:t.chrom,startPos:t.pos,endPos:this.chromosomes[e].size});for(let t=e+1;t<i;t++)r.push({chrom:this.chromosomes[t].name,startPos:0,endPos:this.chromosomes[t].size});r.push({chrom:n.chrom,startPos:0,endPos:n.pos})}return r}continuousToDiscreteChromosomeIntervals(e){return this.toDiscreteChromosomeIntervals([this.toChromosomal(e[0]),this.toChromosomal(e[1])])}parseInterval(e){let t=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(t){let e=t[1];if(t.slice(2).every(e=>e===void 0)){let t=this.getChromosome(e);return t?[t.continuousStart,t.continuousEnd]:void 0}let n=t[3]||e,r=parseInt(t[2].replace(/,/g,``)),i=t[4]===void 0?r:parseInt(t[4].replace(/,/g,``));return[this.toContinuous(e,r-1),this.toContinuous(n,i)]}}};function UL(e){return qt(e).map(([e,t])=>({name:e,size:parseInt(t)}))}function WL(e){return $e(e)&&`chrom`in e}function GL(e){return e.every(WL)}function KL(e){return GL(e)&&(e[1]??e[0]).pos!==void 0}function qL(e){return $e(e)&&(`name`in e||JL(e)||YL(e))}function JL(e){return qL(e)&&`url`in e}function YL(e){return qL(e)&&`contigs`in e}var XL=1e6,ZL=.65;function QL(){let e=IL().numberingOffset(1),t;e.genome=function(n){return arguments.length?(t=n,e):t},e.ticks=n=>{if(!t)return[];let r=e.domain(),i=r[1]-r[0],a=e.numberingOffset(),o=t.toChromosome(Math.max(r[0],0)),s=t.toChromosome(Math.min(r[1],t.totalSize-1)),c=Math.max(1,Math.min(n??10,Math.floor(i))),l=Nn(r[0],r[1],c);l<XL&&(l=Nn(r[0],r[1],c*ZL)),l=Math.max(1,l);let u=[];for(let e=o.index;e<=s.index;e++){let n=t.chromosomes[e],i=Math.max(n.continuousStart+l,r[0]-(r[0]-n.continuousStart)%l),o=Math.min(n.continuousEnd-l/4,r[1]+1);for(let e=i;e<=o;e+=l){let t=e-a;t>=r[0]&&t<r[1]&&u.push(t)}}return u},e.tickFormat=(n,r)=>{if(!t)return;if(r)throw Error(`Locus scale's tickFormat does not support a specifier!`);let i=e.domain(),a=i[1]-i[0],o=e.numberingOffset(),s=Nn(i[0],i[1],Math.max(1,Math.min(n??10,Math.floor(a))))<XL?cr(`,`):cr(`.3s`),c=e=>e-t.toChromosome(e).continuousStart;return e=>s(c(e)+o)};let n=e.copy;return e.copy=()=>{let e=n(),r=t;return e.genome=function(t){return arguments.length?(r=t,e):r},e.genome(t)},e}function $L(e){return e.type==`locus`}function eR(e,t){let n=aR(e);return n?n.toChromosomal(t):t}function tR(e,t){let n=aR(e);return n&&WL(t)?n.toContinuous(t.chrom,t.pos):t}function nR(e,t){let n=aR(e);return n&&GL(t)?n.toContinuousInterval(t):t}function rR(e,t){let n=aR(e);return n?n.toChromosomalInterval(t):t}function iR(e){let t=aR(e);if(!t)throw Error(`No genome has been defined!`);return t.getExtent()}function aR(e){if(e&&`toChromosomal`in e)return e;if(e&&`genome`in e)return e.genome()}var oR=`locus`,sR=`index`,cR=5;function lR(e){let t=e.type;return!e.bins&&(t===`linear`||t===`pow`||t===`sqrt`)}function uR(e){return ym(e)&&![`sequential`,sR,oR].includes(e)}function dR(e){return e||{warn:(e,...t)=>console.warn(e,...t)}}var fR=Nt(`set.modified.clear.type.scheme.schemeExtent.schemeCount.domain.domainMin.domainMid.domainMax.domainRaw.domainImplicit.domainTransition.nice.zero.bins.range.rangeStep.round.reverse.interpolate.interpolateGamma.zoom.fp64.name`.split(`.`));function pR(e,t,n){n=dR(n);for(let r in e)if(!fR[r]){if(r===`padding`&&uR(t.type))continue;mt(t[r])?t[r](e[r]):n.warn(`Unsupported scale property: `+r)}let r=vR(t,e,n);r.domain&&t.domain(r.domain),r.applyOrdinalUnknown&&t.unknown(r.ordinalUnknown),CR(t,e,SR(t,e,r.count))}function mR(e,t){let n=!e.domain&&ym(e.type)?{...e,domain:[0,0]}:e,r=hR(n),i=I(r);if(!i)throw Error(`Unknown scale type: `+r);let a=i();return pR(n,a,t),a}function hR(e){var t=e.type,n=``,r;return t===`sequential`?Wp+`-`+Bp:(gR(e)&&(r=e.rawDomain?e.rawDomain.length:e.domain?e.domain.length+ +(e.domainMid!=null):0,n=r===2?Wp+`-`:r===3?Gp+`-`:``),(n+t||`linear`).toLowerCase())}function gR(e){let t=e.type;return ym(t)&&t!==`time`&&t!==`utc`&&(e.scheme||e.range&&e.range.length&&e.range.every(N))}function _R(e){if(!e.copy)return e;let t=e.copy();return t.type==null&&e.type!=null&&(t.type=e.type),t}function vR(e,t,n){if(!e.domain)return{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1};n=dR(n);let r=_R(e);var i=yR(r,t.domainRaw,n);if(i>-1)return{domain:r.domain(),count:i,ordinalUnknown:r.type===`ordinal`&&t.domainImplicit?nu:void 0,applyOrdinalUnknown:!1};var a=t.domain,o=r.type,s=t.zero||t.zero===void 0&&lR(r),c,l;return a?(uR(o)&&t.padding&&a[0]!==et(a)&&(a=bR(o,a,t.range,t.padding,t.exponent,t.constant)),(s||t.domainMin!=null||t.domainMax!=null||t.domainMid!=null)&&(c=(a=a.slice()).length-1||1,s&&(a[0]>0&&(a[0]=0),a[c]<0&&(a[c]=0)),t.domainMin!=null&&(a[0]=t.domainMin),t.domainMax!=null&&(a[c]=t.domainMax),t.domainMid!=null&&(l=t.domainMid,(l<a[0]||l>a[c])&&n.warn(`Scale domainMid exceeds domain min or max.`,l),a.splice(c,0,l))),r.domain(xR(o,a,n)),t.nice&&r.nice&&r.nice(t.nice!==!0&&Fm(r,t.nice)||null),{domain:r.domain(),count:a.length,ordinalUnknown:o===`ordinal`&&t.domainImplicit?nu:void 0,applyOrdinalUnknown:o===Yp}):{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1}}function yR(e,t,n){return t?(e.domain(xR(e.type,t,n)),t.length):-1}function bR(e,t,n,r,i,a){n??=[0,1];var o=Math.abs(et(n)-n[0]),s=o/(o-2*r),c=e===`log`?ut(t,null,s):e===`sqrt`?dt(t,null,s,.5):e===`pow`?dt(t,null,s,i||1):e===`symlog`?ft(t,null,s,a||1):lt(t,null,s);return t=t.slice(),t[0]=c[0],t[t.length-1]=c[1],t}function xR(e,t,n){return Sm(e)&&Math.abs(t.reduce(function(e,t){return e+(t<0?-1:t>0?1:0)},0))!==t.length&&n.warn(`Log scale domain includes zero: `+Ot(t)),t}function SR(e,t,n){let r=t.bins;if(r&&!Qe(r)){let t=(r.start==null||r.stop==null)&&e.domain(),n=r.start==null?t[0]:r.start,i=r.stop==null?et(t):r.stop,a=r.step;a||qe(`Scale bins parameter missing step property.`),r=Hn(n,i+a,a)}return r?e.bins=r:e.bins&&delete e.bins,e.type===`bin-ordinal`&&(r?!t.domain&&!t.domainRaw&&(e.domain(r),n=r.length):e.bins=e.domain()),n}function CR(e,t,n){var r=e.type,i=t.round||!1,a=t.range;if(t.rangeStep!=null)a=wR(r,t,n);else if(t.scheme&&(a=TR(r,t,n),mt(a))){if(e.interpolator)return e.interpolator(a);qe(`Scale type ${r} does not support interpolating color schemes.`)}if(a&&Cm(r))return e.interpolator(Tm(DR(a,t.reverse),t.interpolate,t.interpolateGamma));a&&t.interpolate&&e.interpolate?e.interpolate(Dm(t.interpolate,t.interpolateGamma)):mt(e.round)?e.round(i):mt(e.rangeRound)&&e.interpolate(i?Yd:Kd),a&&e.range(DR(a,t.reverse))}function wR(e,t,n){e!==`band`&&e!==`point`&&qe(`Only band and point scales support rangeStep.`);var r=(t.paddingOuter==null?t.padding:t.paddingOuter)||0,i=e===`point`?1:(t.paddingInner==null?t.padding:t.paddingInner)||0;return[0,t.rangeStep*Rp(n,i,r)]}function TR(e,t,n){var r=t.schemeExtent,i,a;return Qe(t.scheme)?a=Tm(t.scheme,t.interpolate,t.interpolateGamma):(i=t.scheme.toLowerCase(),a=Pm(i),a||qe(`Unrecognized scheme name: ${t.scheme}`)),n=e===`threshold`?n+1:e===`bin-ordinal`?n-1:e===`quantile`||e===`quantize`?+t.schemeCount||cR:n,Cm(e)?ER(a,r,t.reverse):mt(a)?Em(ER(a,r),n):e===`ordinal`?a:a.slice(0,n)}function ER(e,t,n){return mt(e)&&(t||n)?wm(e,DR(t||[0,1],n)):e}function DR(e,t){return t?e.slice().reverse():e}var OR=class{#e;#t=new Set;#n;#r;#i;#a;#o=0;constructor({getParamRuntime:e,onRangeChange:t,onDomainChange:n,getGenomeStore:r}){this.#n=e,this.#r=t,this.#i=n,this.#a=r}get scale(){return this.#e}getLocusGenome(e){let t=this.#a?.();if(!t)throw Error(`No genome has been defined!`);return e?t.getGenome(e):t.getGenome()}createScale(e){let t=mR({...this.#c(e),range:void 0});return t.props=e,`unknown`in t&&t.unknown(null),this.#e=t,this.#s(e),this.#l(),this.#u(),this.#e}#s(e){let t=this.#e;!t||!$L(t)||t.genome(this.getLocusGenome(e.assembly))}reconfigureScale(e){let t=this.#e;!t||t.type==`null`||(pR({...this.#c(e),range:void 0},t),t.props=e,this.#l())}withDomainNotificationsSuppressed(e){this.#o+=1;try{e()}finally{--this.#o}}#c(e){let{assembly:t,domainIndexer:n,__rangeExprScope:r,...i}=e;return i}#l(){let e=this.#e;if(!e)return;let t=e.props;this.#t.forEach(e=>e.invalidate()),this.#t.clear();let n=t.__rangeExprScope?.paramRuntime??this.#n(),r=AR({range:t.range,reverse:t.reverse,createExpression:e=>n.createExpression(e),registerExpr:e=>this.#t.add(e)});if(!r)return;if(`values`in r){e.range(r.values);return}let i=()=>e.range(r.evaluate());r.setup(i),i()}#u(){let e=this.#e;if(!e)return;let t=e.range,n=e.domain,r=()=>this.#r?.();kR(e,{onRangeChange:r,onDomainChange:()=>{this.#o>0||this.#i?.()},range:t,domain:n}),r()}dispose(){this.#t.forEach(e=>e.invalidate()),this.#t.clear()}};function kR(e,{onRangeChange:t,onDomainChange:n,range:r,domain:i}){typeof r==`function`&&(e.range=(function(e){if(arguments.length)r(e),t?.();else return r()})),typeof i==`function`&&(e.domain=(function(e){if(arguments.length)i(e),n?.();else return i()}))}function AR({range:e,reverse:t,createExpression:n,registerExpr:r}){if(!e||!Qe(e))return null;let i=(e,t)=>t?e.slice().reverse():e;if(e.some(R)){let a;return{dynamic:!0,evaluate:()=>i(a.map(e=>e()),t),setup:t=>{a=e.map(e=>{if(R(e)){let i=n(e.expr);return i.subscribe(t),r(i),()=>i(null)}return()=>e})}}}return{dynamic:!1,values:i(e,t)}}function jR(e,t,n){if(n||=[],e.some(e=>e===null)){if(e.every(e=>e===null))return null;throw console.warn(e),Error(`Cannot merge objects with nulls!`)}let r={},i=(e,t)=>e===t||MR(e)&&MR(t)||MR(e)&&t===!0||e===!0&&$e(t)||Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((e,n)=>e===t[n]),a=e=>{for(let a in e){let o=e[a];if(!n.includes(a)&&o!==void 0)if(r[a]!==void 0&&!i(r[a],o))console.warn(`Conflicting property ${a} of ${t}: (${JSON.stringify(r[a])} and ${JSON.stringify(e[a])}). Using ${JSON.stringify(r[a])}.`);else{let e=r[a];if(MR(e))MR(o)&&(r[a]=jR([e,o],a));else if(MR(o)){if(!(e===!0||e===void 0))throw Error(`Bug in merge! Target is: `+e);r[a]=jR([{},o],a)}else r[a]=o}}};for(let t of e)a(t);return r}function MR(e){return $e(e)&&!Array.isArray(e)}var NR={nominal:`nominalColorScheme`,ordinal:`ordinalColorScheme`,quantitative:`quantitativeColorScheme`},PR=new Set([`rect`]),FR=new Set([`shape`,`size`,`angle`,`heatmap`,`ramp`,`diverging`]);function IR(e){return typeof e==`string`||typeof e==`object`&&!!e}function LR(e){return FR.has(e)}function RR(e,t){if(LR(t))return HR(e)[t]}function zR(e){if([`nominal`,`ordinal`,`quantitative`,`index`,`locus`].includes(e))return e}function BR(e){if(!e)return{};let t={...e};for(let e of[`nominal`,`ordinal`,`quantitative`,`index`,`locus`,`nominalColorScheme`,`ordinalColorScheme`,`quantitativeColorScheme`,`indexColorScheme`,`locusColorScheme`])delete t[e];return t}function VR(e,t){let n=zR(t);return FN(e.flatMap(e=>{let t=e.scale;return[t,t&&n?t[n]:void 0]}))}function HR(e){return FN(e.map(e=>e.range))}function UR(e,{channel:t,dataType:n,isExplicitDomain:r,markTypes:i,hasDomainMid:a}){let o=VR(e,n),s=HR(e),c={...BR(o)};if(r?c.zero=!1:c.zero===void 0&&o.zero!==void 0&&(c.zero=o.zero),Uh(t)&&c.nice===void 0&&(c.nice=o.nice===void 0?!r:o.nice),Yh(t)&&c.scheme===void 0)if(n==`quantitative`){let e=a||o.domainMid!==void 0?s.diverging:i?.length&&i.every(e=>PR.has(e))?s.heatmap:s.ramp,t=IR(e)?e:o.quantitativeColorScheme;IR(t)&&(c.scheme=t)}else{let e=o[NR[n]??NR.quantitative];IR(e)&&(c.scheme=e)}else Xh(t)&&c.range===void 0?c.range=t==`shape`?s.shape??[]:[]:t==`size`&&c.range===void 0?c.range=s.size:t==`angle`&&c.range===void 0&&(c.range=s.angle);return c}var WR=`quantitative`,GR=`ordinal`,KR=`nominal`;function qR(e,t){if(t==`index`||t==`locus`){if(Hh(e))return t;throw Error(e+` does not support `+t+` data type. Only positional channels do.`)}let n={x:[`band`,`band`,`linear`],y:[`band`,`band`,`linear`],size:[void 0,`point`,`linear`],opacity:[void 0,`point`,`linear`],fillOpacity:[void 0,`point`,`linear`],strokeOpacity:[void 0,`point`,`linear`],color:[`ordinal`,`ordinal`,`linear`],fill:[`ordinal`,`ordinal`,`linear`],stroke:[`ordinal`,`ordinal`,`linear`],strokeWidth:[void 0,void 0,`linear`],shape:[`ordinal`,`ordinal`,void 0],dx:[void 0,void 0,`null`],dy:[void 0,void 0,`null`],angle:[void 0,void 0,`linear`],sample:[`null`,void 0,void 0]},r=[`sample`].includes(e)?`null`:n[e]?n[e][[KR,GR,WR].indexOf(t)]:t==`quantitative`?`linear`:`ordinal`;if(r===void 0)throw Error(`Channel "`+e+`" is not compatible with "`+t+`" data type. Use of a proper scale may be needed.`);return r}function JR(e,t){Uh(t)&&e.type!==`ordinal`&&(e.range=[0,1]),t==`opacity`&&ym(e.type)&&e.clamp===void 0&&(e.clamp=!0)}function YR({channel:e,dataType:t,orderedMembers:n,isExplicitDomain:r,configScopes:i}){let a=n,o=a.map(e=>typeof e.view.getMarkType==`function`?e.view.getMarkType():void 0).filter(e=>!!e),s=jR(a.map(e=>e.channelDef.scale).filter(e=>e!==void 0),`scale`,[`domain`]);if(s===null||s.type==`null`)return{type:`null`};let c={...UR(i,{channel:e,dataType:t,isExplicitDomain:r,markTypes:o,hasDomainMid:s.domainMid!==void 0}),...s};if(c.type||=qR(e,t),typeof c.range==`string`){if(!LR(c.range))throw Error(`Unknown named scale range "`+c.range+`". Supported names: shape, size, angle, heatmap, ramp, diverging.`);let t=RR(i,c.range);if(t===void 0)throw Error(`Named scale range "`+c.range+`" is not configured in config.range.`);Yh(e)&&(typeof t==`string`||typeof t==`object`&&t&&!Array.isArray(t))?(c.scheme=t,delete c.range):c.range=t}if(e==`y`&&bm(c.type)&&c.reverse==null&&(c.reverse=!0),c.range&&c.scheme&&delete c.scheme,c.domainTransition===void 0&&(c.domainTransition=!a.some(e=>R(e.channelDef.scale?.domain))),Array.isArray(c.range)&&c.range.some(R)&&a.length>0){let e=a.find(e=>e.channelDef.scale?.range!==void 0)?.view;e&&(c.__rangeExprScope=e)}if(!(`zoom`in c)){let e=VR(i,t);e.zoom===void 0?[`index`,`locus`].includes(c.type)&&(c.zoom=!0):c.zoom=e.zoom}return JR(c,e),c}function XR(e){return e===`index`||e===`locus`}function ZR(e,t){return XR(e)?ez(t):t}function QR(e,t){return XR(e)?tz(t):t}function $R(e,t){return t&&XR(e)?ez(t):t}function ez(e){return[e[0],e[1]+nz(e)]}function tz(e){return[e[0],e[1]-nz(e)]}function nz(e){return e[1]>=e[0]?1:-1}function rz(e,t){let n=e.findRuntimeForParam(t);if(!n)throw Error(`Selection domain parameter "${t}" was not found.`);return n}function iz(e,t){if(!e)throw Error(`Selection domain parameter "${t}" was not found.`);if(!ag(e))throw Error(`Selection domain parameter "${t}" must be an interval selection.`);return e}function az(e,t,n){let r=e.paramRuntime.findRuntimeForParam?rz(e.paramRuntime,t):e.paramRuntime;return{runtime:r,selection:iz(r.getValue?r.getValue(t):e.paramRuntime.findValue(t),t)}}function oz(e,t,n,r){let i=[];return e.visit(e=>{let a=e.paramRuntime?.paramConfigs?.get(n);if(!a||!gg(a))return;let o=cg(a.select);!ug(o)||!o.encodings?.includes(r)||e.paramRuntime.findRuntimeForParam(n)===t&&i.push({view:e,param:a})}),i}function sz(e,t,n,r){let i=new Set,a=[e.getLayoutAncestors?.(),e.getDataAncestors?.(),[e]];for(let e of a)for(let a of e??[]){if(!a||i.has(a))continue;i.add(a);let e=a.paramRuntime?.paramConfigs?.get(n);if(!e||!gg(e))continue;let o=cg(e.select);if(!(!ug(o)||!o.encodings?.includes(r))&&a.paramRuntime.findRuntimeForParam?.(n)===t)return!0}return!1}function cz(e,t,n={}){if(!e||e.length!==2)return;let r=Number(e[0]),i=Number(e[1]);if(!Number.isFinite(r)||!Number.isFinite(i))return;let a=Math.min(r,i),o=Math.max(r,i);if(a=Math.max(t[0],a),o=Math.min(t[1],o),!(a>o)&&!(n.roundToIntegers&&(a=Math.ceil(a),o=Math.ceil(o),a=Math.max(t[0],a),o=Math.min(t[1],o),a>o)))return[a,o]}var lz=class e extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(t){if(t instanceof e&&t.type!=this.type)throw Error(`Cannot combine different types of domains: ${this.type} and ${t.type}`);for(let e of t)this.extend(e);return this}extendAllWithAccessor(e,t){for(let n of e)this.extend(t(n));return this}},uz=class extends lz{constructor(){super(),this.type=`quantitative`}extend(e){return e==null||Number.isNaN(e)?this:(e=+e,this.length?e<this[0]?this[0]=e:e>this[1]&&(this[1]=e):(this.push(e),this.push(e)),this)}},dz=class extends lz{constructor(){super(),this.type=`ordinal`,this.uniqueValues=new Set}extend(e){return e==null||Number.isNaN(e)||this.uniqueValues.has(e)||(this.uniqueValues.add(e),this.push(e)),this}},fz=class extends dz{constructor(){super(),this.type=`nominal`}},pz=class extends lz{constructor(e){super();let t=0;for(let n=1;n<e.length;n++)t+=Math.sign(e[n]-e[n-1]);if(Math.abs(t)!=e.length-1)throw Error(`Piecewise domain must be strictly increasing or decreasing: `+JSON.stringify(e));e.forEach(e=>this.push(e))}extend(e){if(this.includes(e))return this;throw Error(`Piecewise domains are immutable and cannot be unioned!`)}},mz={quantitative:uz,index:uz,locus:uz,nominal:fz,ordinal:dz};function hz(e,t){if(e==`quantitative`&&gz(t)){let n=new pz(t);return n.type=e,n}else if(mz[e]){let n=new mz[e];return n.type=e,t&&n.extendAll(t),n}throw Error(`Unknown type: `+e)}function gz(e){return e&&e.length>0&&e.length!=2&&e.every(e=>typeof e==`number`)}var _z=class{#e;#t;#n;#r;#i;#a;#o;#s=void 0;#c=!0;#l=new Map;#u=new WeakMap;constructor({getActiveMembers:e,getAllMembers:t,getDataMembers:n,getType:r,getLocusExtent:i,fromComplexInterval:a}){this.#e=e,this.#t=t??e,this.#n=n??e,this.#r=r,this.#i=i,this.#a=a}get initialDomainSnapshot(){return this.#o}hasConfiguredDomain(e={}){return!!this.getConfiguredDomain(e)}hasSelectionConfiguredDomain(){return this.getSelectionConfiguredDomainBindingInfo(),!!this.#s}getSelectionConfiguredDomainBindingInfo(){return this.#s||!this.#c||this.getConfiguredDomain(),this.#s}getSelectionConfiguredDomainInfo(){let e=this.getSelectionConfiguredDomainBindingInfo();if(e)return{param:e.param,encoding:e.encoding}}invalidateConfiguredDomain(){this.#c=!0,this.#s=void 0,this.#l.clear()}getDefaultDomain(e=!1,t){let n=this.#r();return kz(n,this.#i,e&&n!==`locus`?this.getDataDomain():void 0,t)}getConfiguredOrDefaultDomain(e=!1,t,n={}){return this.getConfiguredDomain(n)??this.getDefaultDomain(e,t)}getConfiguredDomain(e={}){let t=e.includeSelectionInitial??!0;if(!this.#c&&this.#l.has(t))return this.#l.get(t);let n=vz(this.#e(),this.#a,t);return Tz(this.#t(),n.selectionRef),this.#s=n.selectionRef,this.#l.set(t,n.domain),this.#c=!1,n.domain}getDataDomain(){return Oz(this.#n(),this.#r,e=>this.#d(e))}captureInitialDomain(e,t,n){if(!this.#o&&ym(e.type)){let t=n??e.domain();Dt(t)>0&&(this.#o=t)}return t?!1:(this.#o=n??e.domain(),!0)}#d(e){let t=this.#u.get(e);if(t)return t;let n=e.view.mark.encoders;if(!n)return[];let r=n[e.channel];if(!r)return[];let i=Th(r);if(i.length===0)return[];let a=i.filter(mh).filter(e=>!e.channelDef.domainInert);return this.#u.set(e,a),a}};function vz(e,t,n){let r=Array.from(e).filter(e=>e.contributesToDomain).filter(e=>e.channelDef.scale?.domain),i={domains:[],selectionRef:void 0,selectionRuntime:void 0,selectionDescription:void 0,hasLiteralDomain:!1};for(let e of r){let r=yz(e,t,n);if(r.kind===`selection`){bz(i,r);continue}xz(i,r)}return Sz(i)}function yz(e,t,n){let r=e.channelDef.scale.domain;return Dz(r)?{kind:`selection`,...Cz(e,r,t,n)}:R(r)?{kind:`literal`,domain:wz(e.channelDef.type,e.view.paramRuntime.createExpression(r.expr)(),t)}:{kind:`literal`,domain:wz(e.channelDef.type,r,t)}}function bz(e,t){if(e.hasLiteralDomain)throw Error(`Cannot mix selection-driven and literal configured domains on a shared scale.`);if(e.selectionRef&&(e.selectionRef.runtime!==t.runtime||e.selectionRef.param!==t.param||e.selectionRef.encoding!==t.encoding))throw Error(`Conflicting selection domain references on a shared scale: `+e.selectionDescription+` vs `+t.description+`.`);e.selectionRuntime=t.runtime,e.selectionDescription=t.description,e.selectionRef={param:t.param,encoding:t.encoding,hasInitial:(e.selectionRef?.hasInitial??!1)||t.hasInitial,runtime:t.runtime},t.domain&&e.domains.push(t.domain)}function xz(e,t){if(e.selectionRuntime)throw Error(`Cannot mix literal configured domains with selection-driven domains on a shared scale.`);e.hasLiteralDomain=!0,e.domains.push(t.domain)}function Sz(e){return e.domains.length>0?{domain:e.domains.reduce((e,t)=>e.extendAll(t)),selectionRef:e.selectionRef}:e.selectionRuntime?{domain:void 0,selectionRef:e.selectionRef}:{domain:void 0,selectionRef:void 0}}function Cz(e,t,n,r){let i=t.param,a=Ez(e.channel,t,i),o=az(e.view,i,a),s=t.initial!==void 0,c=o.selection.intervals[a],l=i+`.`+a;return!c||c.length!==2?{domain:r&&t.initial?wz(e.channelDef.type,t.initial,n):void 0,description:l,param:i,encoding:a,hasInitial:s,runtime:o.runtime}:{domain:hz(e.channelDef.type,n(c)),description:l,param:i,encoding:a,hasInitial:s,runtime:o.runtime}}function wz(e,t,n){let r=n(t);return hz(e,e===`locus`&&GL(t)&&!KL(t)?r:ZR(e,r))}function Tz(e,t){if(!t||e.size<2||!Array.from(e).some(e=>sz(e.view,t.runtime,t.param,t.encoding)))return;let n=Array.from(new Set(Array.from(e).filter(e=>e.contributesToDomain).map(e=>e.view.getPathString?.()??e.view.name??`(unknown)`)));throw Error(`Selection domain reference "${t.param}.${t.encoding}" cannot use a shared ${t.encoding} scale when the same interval selection is defined in that shared view group (${n.join(`, `)}). This creates a feedback loop between brushing and the scale domain. Make the linked ${t.encoding} scale independent, for example with "resolve": { "scale": { "${t.encoding}": "independent" } } on the common ancestor.`)}function Ez(e,t,n){if(t.encoding)return t.encoding;let r=Jh(e);if(r===`x`||r===`y`)return r;throw Error(`Selection domain reference "${n}" on channel "${e}" requires an explicit "encoding" ("x" or "y").`)}function Dz(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&typeof e.param==`string`}function Oz(e,t,n){let r=t(),i=new Map;for(let t of e){if(!t.contributesToDomain)continue;let e=n(t);if(e.length===0)continue;let a=t.view.getCollector();for(let t of e){let e=vh(t,r),n=a??null,o=i.get(n);if(o||(o=new Map,i.set(n,o)),o.has(e))continue;let s;if(a)s=a.getDomain(e,r,t);else if(t.constant)s=hz(r),s.extend(t({}));else continue;o.set(e,s)}}if(i.size===0)return;let a=hz(r);for(let e of i.values())for(let t of e.values())a.extendAll(t);return a}function kz(e,t,n,r){return e==`locus`?t(r):e==`index`?$R(e,n)??[]:n??[]}function Az(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}function jz(e,t,n){return e*(t/e)**+n}var Mz=e=>new Promise(t=>setTimeout(t,e));function Nz(){return{canceled:!1}}function Pz(e){let t=e.requestAnimationFrame||window.requestAnimationFrame,n=e.signal,r=e.cancelToken,i=()=>new Promise((i,a)=>{if(r?.canceled)return i();if(n?.aborted)return a(`aborted`);let o=performance.now(),s=o+(e.duration||1e3),c=typeof e.from==`number`?e.from:0,l=typeof e.to==`number`?e.to:1,u=e.easingFunction||(e=>e),d=e=>(e-o)/(s-o),f=e=>e*(l-c)+c,p=e=>Math.max(0,Math.min(1,e)),m=o=>{if(r?.canceled){i();return}n?.aborted?a(`aborted`):(e.onUpdate(f(u(p(d(o))))),o<s?t(m):(e.onUpdate(f(u(1))),i()))};t(m)});return e.delay?r?.canceled?Promise.resolve():n?.aborted?Promise.reject(`aborted`):Mz(e.delay).then(i):i()}function Fz(e,t,n,r,i={}){let a=i.onUnsupported??`throw`;switch(e.type){case`linear`:case`index`:case`locus`:return lt(t,n,r);case`log`:return ut(t,n,r);case`pow`:case`sqrt`:return dt(t,n,r,e.exponent());case`symlog`:return ft(t,n,r,e.constant());default:if(a===`identity`)return t;throw Error(`Zooming is not implemented for: `+e.type)}}var Iz=class{#e;#t;#n;#r;#i;#a;#o=null;constructor({getScale:e,getAnimator:t,getInitialDomainSnapshot:n,getResetDomain:r,fromComplexInterval:i,getGenomeExtent:a}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=a}getZoomExtent(){let e=this.#e(),t=e.props.zoom;return Lz(e,t,this.#i,this.#a,this.#n)}isZoomable(){return this.isZoomingSupported()&&!!this.#e().props.zoom}isZoomingSupported(){let e=this.#e().type;return ym(e)&&!bm(e)}getDomainChangeAction(e,t){return Xl(t,e)?`none`:this.isZoomable()?`restore`:this.isZoomingSupported()?`animate`:`notify`}isZoomed(){return this.isZoomingSupported()&&!Xl(this.#r(),this.#e().domain())}zoom(e,t,n){if(!this.isZoomingSupported())return!1;let r=this.#e(),i=r.domain(),a=Rz(r,i,e,t,n),o=this.getZoomExtent();return a=pt(a,o[0],o[1]),[0,1].some(e=>a[e]!=i[e])?(r.domain(a),!0):!1}async zoomTo(e,t=!1){if(Ct(t)&&(t=t?700:0),!this.isZoomingSupported())throw Error(`Not a zoomable scale!`);let n=this.#e(),r=zz(n.type,e,this.#i),i=this.#t(),a=n.domain();if(t>0&&a.length==2){let e=a[1]-a[0],o=r[1]-r[0],s=a[0]+e/2,c=r[0]+o/2,l=a[0]==r[0],u=a[1]==r[1];this.#s();let d=Nz();this.#o=d,await i.transition({duration:t,easingFunction:Az,cancelToken:d,onUpdate:t=>{let r=jz(e,o,t),i=e==o?t:(e-r)/(e-o),d=i*c+(1-i)*s,f=[l?a[0]:d-r/2,u?a[1]:d+r/2];n.domain(f)}}),this.#o===d&&(this.#o=null),n.domain(r)}else this.#s(),n.domain(r),i?.requestRender()}#s(){this.#o&&=(this.#o.canceled=!0,null)}resetZoom(){if(!this.isZoomingSupported())throw Error(`Not a zoomable scale!`);let e=this.#e(),t=e.domain(),n=this.#r();return[0,1].some(e=>n[e]!=t[e])?(e.domain(n),!0):!1}getZoomLevel(){return this.isZoomable()?Dt(this.getZoomExtent())/Dt(this.#e().domain()):1}};function Lz(e,t,n,r,i){return Bz(t)&&Qe(t.extent)?zz(e.props.type,t.extent,n):t&&e.props.type==`locus`?r():i()}function Rz(e,t,n,r,i){let a=[...t],o=e.invert(r);switch(e.props.reverse&&(i=-i),`align`in e&&(o+=e.align()),e.type){case`linear`:case`index`:case`locus`:a=ot(a,i||0);break;case`log`:a=st(a,i||0);break;case`pow`:case`sqrt`:a=A(a,i||0,e.exponent());break;case`symlog`:if(i!==0)throw Error(`Panning is not implemented for: `+e.type);break;default:throw Error(`Zooming is not implemented for: `+e.type)}return Fz(e,a,o,n)}function zz(e,t,n){let r=e===`locus`?n(t):t;return e===`locus`&&GL(t)&&!KL(t)?r:ZR(e,r)}function Bz(e){return $e(e)}function Vz(e){let t=e.view.getPathString(),n=e.channel??``;return t+`|`+n}function Hz(e){return Array.from(e).sort((e,t)=>Vz(e).localeCompare(Vz(t)))}I(`index`,IL,[`continuous`]),I(`locus`,QL,[`continuous`]),I(`null`,tM,[]);var Uz=class{#e=new Set;#t=new Set;#n;#r={domain:new Set,range:new Set};#i;#a;#o;#s;#c=!1;#l=[];#u=0;#d=[];#f=!1;#p=void 0;#m;#h=0;#g=0;#_=!1;constructor(e,t){this.channel=e,this.type=null,this.name=void 0,this.#m=t,this.#a=new _z({getActiveMembers:()=>this.#b(),getAllMembers:()=>this.#e,getDataMembers:()=>this.#b(this.#t),getType:()=>this.type,getLocusExtent:e=>this.#S(e),fromComplexInterval:this.fromComplexInterval.bind(this)}),this.#i=new OR({getParamRuntime:()=>this.#y.paramRuntime,onRangeChange:()=>this.#w(`range`),onDomainChange:()=>this.#w(`domain`),getGenomeStore:()=>this.#x.genomeStore}),this.#o=new Iz({getScale:()=>this.getScale(),getAnimator:()=>this.#x.animator,getInitialDomainSnapshot:()=>this.#a.initialDomainSnapshot,getResetDomain:()=>this.#k(),fromComplexInterval:this.fromComplexInterval.bind(this),getGenomeExtent:()=>this.#S()})}get#v(){let e=this.#e.values().next().value;if(!e)throw Error(`ScaleResolution has no members!`);return e.view}get#y(){return this.#m??this.#v}#b(e=this.#e){let t=new Set;for(let n of e){let e=n.view;e.isConfiguredVisible()&&(!e.isDataInitialized()&&!n.channelDef?.scale?.domain||t.add(n))}return t}get#x(){return this.#y.context}get zoomExtent(){return(this.#i.scale&&ym(this.#i.scale.type)&&this.#o.getZoomExtent())??[-1/0,1/0]}#S(e){return iR(this.#C(e))}#C(e){if(this.type===`locus`)return this.#i.scale??this.#i.getLocusGenome(e)}addEventListener(e,t){this.#r[e].add(t)}removeEventListener(e,t){this.#r[e].delete(t)}#w(e){e===`domain`&&this.#u===0&&this.syncLinkedSelectionFromDomain();for(let t of this.#r[e].values())t({type:e,scaleResolution:this})}#T(e){this.#u+=1;try{e()}finally{--this.#u}}syncLinkedSelectionFromDomain(){let e=this.#a.getSelectionConfiguredDomainBindingInfo();if(!e||!this.isZoomable())return;let t=iz(e.runtime.getValue(e.param),e.param),n=this.#E(this.getScale().domain());if(!n)return;let r=this.#E(this.#a.getDefaultDomain(!0)),i=r&&Xl(n,r)?null:n;Wz(t.intervals[e.encoding]??null,i)||e.runtime.setValue(e.param,{...t,type:`interval`,intervals:{...t.intervals,[e.encoding]:i}})}#E(e){return cz(e,this.zoomExtent)}#D(){return this.#a.getSelectionConfiguredDomainBindingInfo()}#O(){return!this.#f}#k(e=!1,t){return this.#a.getConfiguredOrDefaultDomain(e,t,{includeSelectionInitial:this.#O()})}#A(){for(let e of this.#e)if(e.contributesToDomain&&e.channelDef.scale?.domain!==void 0)return!0;return!1}#j(e){let t=iz(e.runtime.getValue(e.param),e.param).intervals[e.encoding];return t&&t.length===2?t:null}#M(e,t){t?this.#f=!1:e&&(this.#f=!0)}#N(e){let t=Gz(e),{channel:n,channelDef:r}=t,i=r.type==null&&this.type;if(n!=`sample`&&!r.type&&!Kh(n)&&!i)throw Error(`The "type" property must be defined in channel definition: "${n}": ${JSON.stringify(r)}. Must be one of: "quantitative", "ordinal", "nominal", "locus", "index"`);let a=n==`sample`?`nominal`:r.type,o=r?.scale?.name,s=r.scale?.type??(a===`index`||a===`locus`?a:void 0);if(s&&[`index`,`locus`].includes(s)&&!Hh(this.channel))throw Error(`Index and locus scales are only supported on positional channels (x/y). Channel "${this.channel}" resolves to scale type "${s}".`);if(o){if(this.name!==void 0&&o!=this.name)throw Error(`Shared scales have conflicting names: "${o}" vs. "${this.name}"!`);this.name=o}if(!i){if(!this.type)this.type=a;else if(a!==this.type&&!Kh(n))throw Error(`Can not use shared scale for different data types: ${this.type} vs. ${a}. Use "resolve: independent" for channel ${this.channel}`)}return this.#e.add(t),t.contributesToDomain&&this.#t.add(t),t}#P(){this.#_=!1,this.#U(),this.#G(),this.#R(),this.#z()}#F(){this.#g>0?this.#_=!0:this.#P()}static registerInBatch(e,t){let n=Array.from(e);for(let e of n)e.#g++;try{return t()}finally{for(let e of n)e.#g--,e.#g===0&&e.#_&&e.#P()}}registerMember(e){let t=this.#N(e);return this.#F(),()=>{let e=this.#e.delete(t);return e&&(this.#t.delete(t),this.#F()),e&&this.#e.size===0}}dispose(){this.#I(),this.#L(),this.#r.domain.clear(),this.#r.range.clear(),this.#i.dispose()}#I(){for(let e of this.#l)e();this.#l=[],this.#p=void 0}#L(){for(let e of this.#d)e();this.#d=[]}#R(){if(this.#I(),this.#e.size===0)return;let e=this.#D();e&&(this.#p=this.#j(e),this.#l.push(e.runtime.subscribe(e.param,()=>{let t=this.#p,n=this.#j(e);this.#M(t,n),this.#p=n,this.#G(),this.reconfigureDomain()})))}#z(){if(this.#L(),this.#e.size===0)return;let e=()=>{this.#G(),this.reconfigureDomain()};for(let t of this.#e){if(!t.contributesToDomain)continue;let n=t.channelDef.scale?.domain;if(!R(n))continue;let r=t.view.paramRuntime.createExpression(n.expr).subscribe(e);this.#d.push(r)}}#B(){for(let e of this.#e)if(e.view.hasRendered())return!0;return!1}registerCollectorSubscriptions(e,t){let n=new Set;for(let e of t)e.channelDef.domainInert||n.add(vh(e,this.type));if(n.size===0)return()=>void 0;let r=()=>{this.reconfigureDomain()},i=[];for(let t of n)i.push(e.subscribeDomainChanges(t,r));return()=>{for(let e of i)e()}}isDomainDefinedExplicitly(){return this.#A()}isDomainInitialized(){let e=this.#i.scale;if(!e)return!1;let t=e.domain();return ym(e.type)?t.length>2||t.length==2&&(t[0]!==0||t[1]!==0):t.length>0}#V(){return CN(this,`mergedScaleProps`,()=>{let e=YR({channel:this.channel,dataType:this.type,orderedMembers:this.#W(),isExplicitDomain:this.isDomainDefinedExplicitly(),configScopes:this.#y.getConfigScopes()});return this.#K(e),e})}#H(){wN(this,`mergedScaleProps`)}#U(){this.#n=void 0}#W(){return this.#n||=Hz(this.#e),this.#n}#G(){this.#a.invalidateConfiguredDomain(),this.#H()}#K(e){let t=this.#D();if(!t||e===null||e.type===`null`)return;let n=ym(e.type)&&!bm(e.type)&&!!e.zoom;if(t.hasInitial&&!n)throw Error(`Selection domain reference "${t.param}.${t.encoding}" cannot use "initial" with a non-zoomable ${this.channel} scale. Enable zoom on the linked scale or remove "initial".`)}getAssemblyRequirement(){let e=this.#V();return e===null||e.type===`null`||e.type!==`locus`?{assembly:void 0,needsDefaultAssembly:!1}:{assembly:e.assembly,needsDefaultAssembly:e.assembly===void 0}}getResolvedScaleType(){let e=this.#V();if(!(e===null||e.type===`null`))return e.type}#q(e=!1){let t=this.#V();if(t===null||t.type==`null`)return{type:`null`};let n={...t};this.#h+=1;let r;try{r=this.#k(e,n.type===`locus`?n.assembly:void 0)}finally{--this.#h}if(bm(n.type)){let t=this.isDomainDefinedExplicitly(),i=this.#J(t);if(r!=null){if(t&&i.domain().length>0&&!Xl(i.domain(),r))return this.#s=void 0,this.#q(e);i.addAll(r);let a=new Set(r),o=i.domain().filter(e=>a.has(e));n.domain=o.length>0?o:new fz}else{let e=i.domain();n.domain=e.length>0?e:new fz}n.domainIndexer=i}else r&&r.length>0&&(n.domain=r);return!n.domain&&n.domainMid!==void 0&&(n.domain=[n.domainMin??0,n.domainMax??1]),n}#J(e){return(!this.#s||this.#c!==e)&&(this.#s=oN(),this.#c=e),this.#s}reconfigure(){this.#T(()=>{this.#G();let e=this.#Y(!0);e&&(this.#X(e,(e,t)=>this.#i.reconfigureScale(t)),this.#Z(e))})}reconfigureDomain(){this.#T(()=>{let e=this.#Y(!0,!0);if(!e)return;let{domainConfig:t,targetDomain:n}=e,r=n!=null&&Xl(n,e.scale.domain());n!=null&&!r&&this.#X(e,e=>{e.domain(n),t.applyOrdinalUnknown&&e.unknown(t.ordinalUnknown)}),this.#Z(e),this.syncLinkedSelectionFromDomain()})}#Y(e,t=!1){let n=this.#i.scale;if(!n||n.type==`null`)return;let r={scale:n,props:this.#q(e),previousDomain:n.domain(),domainWasInitialized:this.isDomainInitialized(),hasSelectionConfiguredDomain:this.#a.hasSelectionConfiguredDomain()};if(t){let e=vR(n,r.props);return{...r,domainConfig:e,targetDomain:e.domain}}return r}#X(e,t){this.#i.withDomainNotificationsSuppressed(()=>{t(e.scale,e.props)})}#Z(e){let{scale:t,previousDomain:n,domainWasInitialized:r,hasSelectionConfiguredDomain:i}=e,a=i?this.#a.getDefaultDomain(!0):void 0;if(this.#a.captureInitialDomain(t,r,a)){this.#w(`domain`);return}if(t.props.domainTransition===!1){this.#w(`domain`);return}let o=t.domain(),s=this.#o.getDomainChangeAction(n,o);s===`restore`?i?this.#w(`domain`):this.#i.withDomainNotificationsSuppressed(()=>{t.domain(n)}):s===`animate`?i?this.#w(`domain`):this.#B()?(this.#i.withDomainNotificationsSuppressed(()=>{t.domain(n)}),this.zoomTo(o,500)):this.#w(`domain`):s===`notify`&&this.#w(`domain`)}get scale(){if(this.#i.scale)return this.#i.scale;throw Error(`ScaleResolution.scale accessed before initialization. Call initializeScale().`)}getScale(){if(this.#h>0)throw Error(`Scale resolution for channel "${this.channel}" cannot read its own scale while its domain is being resolved.`);return this.#i.scale??this.initializeScale()}initializeScale(){if(this.#i.scale)return this.#i.scale;let e=this.#q();return this.#i.createScale(e)}getDomain(){if(this.#h>0)throw Error(`Scale resolution for channel "${this.channel}" cannot read its own domain while its domain is being resolved.`);return this.getScale().domain()}getDataDomain(){return this.#a.getDataDomain()}getComplexDomain(){return rR(this.#C(),QR(this.type,this.getDomain()))}getLinkedSelectionDomainInfo(){let e=this.#D();if(!e)return;let t=this.#y.getLayoutAncestors().at(-1),n=t?oz(t,e.runtime,e.param,e.encoding).some(e=>e.param.persist!==!1):!1;return{param:e.param,encoding:e.encoding,persist:n}}isZoomed(){return this.#o.isZoomed()}isZoomable(){let e=this.#V();return e===null||e.type===`null`?!1:ym(e.type)&&!bm(e.type)&&!!e.zoom}zoom(e,t,n){return this.#o.zoom(e,t,n)}async zoomTo(e,t=!1){return this.#o.zoomTo(e,t)}resetZoom(){return this.#o.resetZoom()}getZoomLevel(){return this.#o.getZoomLevel()}getAxisLength(){if(this.channel!==`x`&&this.channel!==`y`)throw Error(`Axis length is only defined for x and y channels!`);let e=Array.from(this.#e).map(e=>e.view.coords?.[this.channel===`x`?`width`:`height`]).filter(e=>e>0);return e.length?e.reduce((e,t)=>Math.min(e,t),1e4):0}invertToComplex(e){let t=this.getScale();if(`invert`in t){let n=t.invert(e);return this.toComplex(n)}else throw Error(`The scale does not support inverting!`)}toComplex(e){return eR(this.#C(),e)}fromComplex(e){return tR(this.#C(),e)}fromComplexInterval(e){return this.type==`locus`?nR(this.#C(),e):e}};function Wz(e,t){return e===t?!0:!e||!t?!1:e.length===t.length&&Xl(e,t)}function Gz(e){let t=e.channelDef.scale,n=t?.assembly;if(!t||!n||typeof n!=`object`||!(`url`in n))return e;let r=BP(e.view.getBaseUrl(),n.url);return r===n.url?e:{...e,channelDef:{...e.channelDef,scale:{...t,assembly:{...n,url:r}}}}}function Kz(...e){for(let t of e)if(t!==void 0)return t}var qz=class{#e=new Set;constructor(e){this.channel=e}get scaleResolution(){return this.#e.values().next().value?.view.getScaleResolution(this.channel)}#t(e){let{view:t}=e,n=t.getScaleResolution(this.channel);if(!n)throw Error(`Cannot find a scale resolution!`);if(this.scaleResolution&&n!==this.scaleResolution)throw Error(`Shared axes must have a shared scale! Channel: ${this.channel}, existing views: [${Array.from(this.#e).map(e=>e.view.getPathString()).join(`, `)}], new view: ${t.getPathString()}.`);this.#e.add(e),wN(this,`axisProps`)}registerMember(e){return this.#t(e),()=>this.removeMember(e)&&this.#e.size===0}removeMember(e){let t=this.#e.delete(e);return t&&wN(this,`axisProps`),t}getAxisProps(){return CN(this,`axisProps`,()=>{let e=Hz(this.#e).map(e=>{let t=e.view.mark.encoding[e.channel];return`axis`in t&&t.axis});return e.length>0&&e.some(e=>e===null)?null:jR(e.filter(e=>e!==void 0),`axis`,[`title`])})}getTitle(){let e=Hz(this.#e).map(e=>{let t=Ph(e.view,e.channel);if(!kh(t))return{member:e,axisTitle:`axis`in t?t.axis?.title:void 0,explicitTitle:Kz(`axis`in t?t.axis?.title:void 0,t.title),implicitTitle:Kz(Ah(t)?t.field:void 0,Ih(t)?t.expr:void 0)}}),t=e.map(e=>e.axisTitle).find(e=>e!==void 0);if(t!==void 0)return t;let n=e.filter(t=>{if(Kh(t.member.channel)&&!t.explicitTitle){let n=Jh(t.member.channel);return e.find(e=>e.member.view==t.member.view&&e.member.channel==n)?.explicitTitle===void 0}return!0}),r=new Set(n.map(e=>Kz(e.explicitTitle,e.implicitTitle)).filter(N));return r.size?[...r].join(`, `):null}},Jz=e=>{if(Mh(e))return e;if(Rh(e)){let t=e.condition;if(!Array.isArray(t)&&Mh(t))return t}},Yz=(e,t,n)=>{let r=e;for(;(r.getConfiguredOrDefaultResolution(n,t)==`forced`||r.dataParent&&[`shared`,`excluded`,`forced`].includes(r.dataParent.getConfiguredOrDefaultResolution(n,t)))&&r.getConfiguredOrDefaultResolution(n,t)!=`excluded`;)r=r.dataParent;return r},Xz=(e,t,n)=>{if(!t.resolutions.scale[n]){let r=new Uz(n,t);t.resolutions.scale[n]=r;let i=t=>{e.context.glHelper?.createRangeTexture(t.scaleResolution,!0)};r.addEventListener(`range`,i),r.addEventListener(`domain`,i),e.registerDisposer(()=>{r.removeEventListener(`range`,i),r.removeEventListener(`domain`,i)})}return t.resolutions.scale[n]},Zz=(e,t,n,r)=>{let i=Jz(r);if(!i)return;let a=Jh(i.resolutionChannel??n);if(Zh(a)&&!(t==`axis`&&!Uh(a)))return{view:Yz(e,t,a),channel:n,channelDef:i,targetChannel:a}},Qz=(e,t)=>{for(let[n,r]of Object.entries(e.mark.encoding))!r||Array.isArray(r)||t(n,r)},$z=e=>{let t=[];return Qz(e,(n,r)=>{let i=Zz(e,`axis`,n,r);i&&Uh(i.channel)&&t.push(i)}),t},eB=e=>{let t=new Map;return Qz(e,(n,r)=>{let i=Zz(e,`scale`,n,r);if(!i)return;let a=Xz(e,i.view,i.targetChannel),o=t.get(a);o?o.push(i):t.set(a,[i])}),t},tB=(e,t)=>{for(let{view:n,channel:r,channelDef:i,targetChannel:a}of t){if(!Uh(r)||!Hh(a))continue;n.resolutions.axis[a]||(n.resolutions.axis[a]=new qz(a));let t=n.resolutions.axis[a],o=t.registerMember({view:e,channel:r,channelDef:i});e.registerDisposer(()=>{o()&&n.resolutions.axis[a]===t&&delete n.resolutions.axis[a]})}},nB=(e,t)=>{Uz.registerInBatch(t.keys(),()=>{for(let[n,r]of t)for(let{view:t,channel:i,channelDef:a,targetChannel:o}of r){let r=o,s=!e.isDomainInert(),c=n.registerMember({view:e,channel:i,channelDef:a,contributesToDomain:s});e.registerDisposer(()=>{c()&&t.resolutions.scale[r]===n&&(n.dispose(),delete t.resolutions.scale[r])})}})},rB=(e,t)=>{if(!t){rB(e,`scale`),rB(e,`axis`);return}t==`axis`?tB(e,$z(e)):nB(e,eB(e))},iB={point:nP,rect:YN,rule:cP,tick:cP,link:bP,text:EP},aB=class extends DL{#e;#t=!1;#n=null;constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.spec=e;let o=iB[this.getMarkType()];if(o)this.mark=new o(this);else throw Error(`No such mark: ${this.getMarkType()}`);this.#e=this.paramRuntime.allocateSetter(`zoomLevel`,1),this.resolve();for(let e of[`x`,`y`]){let t=this.getScaleResolution(e);if(t){let e=()=>{this.#e(Math.sqrt(this.getZoomLevel()))};t.addEventListener(`domain`,e),this.registerDisposer(()=>t.removeEventListener(`domain`,e))}}this.registerDisposer(this._addBroadcastHandler(`subtreeDataReady`,()=>{for(let e of zh)this.getScaleResolution(e)?.syncLinkedSelectionFromDomain()})),this.needsAxes={x:!0,y:!0},this.#r()}#r(){for(let[e,t]of this.paramRuntime.paramConfigs){if(!(`select`in t))continue;let n=cg(t.select),r=n.on,i=n.clear;if(lg(n)){let t=0,a=t=>{this.paramRuntime.setValue(e,t)},o=()=>{let e=this.context.getCurrentHover();return e?.mark?.unitView===this?e.datum:null},s=r.filter?yL(r.filter):()=>!0;if(this.addInteractionListener([`mouseover`,`pointerover`].includes(r.type)?`mousemove`:r.type,r=>{if(!s(r.proxiedMouseEvent))return;let i=o(),c=i?i[ch]:0,l;n.toggle?r.mouseEvent.shiftKey?i&&(l=rg(this.paramRuntime.getValue(e),{toggle:[i]})):l=tg(i?[i]:null):c!=t&&(t=c,l=eg(i)),l!==void 0&&a(l)}),i){let e=i.filter?yL(i.filter):()=>!0;this.addInteractionListener(i.type,r=>{e(r.proxiedMouseEvent)&&(t=0,a(n.toggle?tg():eg(null)))})}}}}render(e,t,n={}){super.render(e,t,n),this.isConfiguredVisible()&&(e.pushView(this,t),e.renderMark(this.mark,n),e.popView(this))}getMarkType(){return typeof this.spec.mark==`object`?this.spec.mark.type:this.spec.mark}getEncoding(){let e=super.getEncoding(),t=this.mark.getSupportedChannels();for(let n of Object.keys(e))n!==`key`&&(t.includes(n)||delete e[n]);return e}resolve(e){if(!e){this.resolve(`scale`),this.resolve(`axis`);return}rB(this,e)}dispose(){super.dispose(),this.mark.dispose()}getDataAccessor(e){let t=this.mark.encoders;if(t)return t[e]?Eh(t[e]):void 0}getSearchAccessors(){return this.#n||=(NL(this.getEncoding())??[]).map(e=>L(e)),this.#n}getFacetAccessor(e){return this.getDataAccessor(`sample`)||super.getFacetAccessor(this)}getCollector(){return this.flowHandle?.collector}registerDomainSubscriptions(){if(this.#t||this.isDomainInert())return;let e=this.getCollector();if(!e)return;let t=this.mark.encoders;if(!t)throw Error(`Encoders are not initialized!`);this.#t=!0;let n=Ym(e),r=new Map;for(let e of Object.values(t)){if(!e)continue;let t=Th(e);if(t.length!==0)for(let e of t){if(!mh(e))continue;let t=this.getScaleResolution(e.scaleChannel);if(!t)throw Error(`Missing scale resolution for channel: `+e.scaleChannel);if(e.channelDef.domainInert||oB(e,t,n))continue;let i=r.get(t);i||(i=new Set,r.set(t,i)),i.add(e)}}for(let[t,n]of r){if(n.size===0)continue;let r=t.registerCollectorSubscriptions(e,n);this.registerDisposer(r)}}getZoomLevel(){return zh.map(e=>this.getScaleResolution(e)?.getZoomLevel()??1).reduce((e,t)=>e*t,1)}propagateInteraction(e){this.handleInteraction(e,!0),e.target=this,!e.stopped&&this.handleInteraction(e,!1)}getDefaultResolution(e,t){return e==`x`?`shared`:`independent`}};function oB(e,t,n){return!t.isDomainDefinedExplicitly()&&n.has(Jh(e.scaleChannel))}var sB=class extends Error{constructor(e,t){super(t),this.kind=e}};async function cB(e,t={}){let n;try{n=await fetch(e,{signal:t.signal})}catch(e){throw new sB(`network`,String(e))}if(!n.ok)throw new sB(`http`,String(n.status)+` `+n.statusText);try{return await n.json()}catch(e){throw new sB(`json`,String(e))}}function lB(e){let t=new Set;e.visit(e=>{for(let n of Object.values(e.resolutions.scale)){let e=n.name;if(e&&t.has(e))throw Error(`The same scale name "${e}" occurs in multiple scale resolutions!`);t.add(e)}})}function uB(e){for(let t of zh){let n=e.getScaleResolution(t);n&&!n.name&&n.isZoomable()&&(n.name=`${t}_at_root`)}}function dB(e,t=()=>!0){return Promise.allSettled(e).then(e=>{if(t())for(let t of e)`value`in t?t.value.finalizeGraphicsInitialization():`reason`in t&&console.error(t.reason)})}async function fB(e,t,n){let r=e.import;if(!(`url`in r))throw Error(`Not an url import: `+JSON.stringify(r));let i=zP(t,r.url),a;try{a=await cB(i)}catch(e){throw Error(`Could not load imported view spec: ${i}. Reason: ${e.message}`,{cause:e})}if(n.isViewSpec(a))return a.baseUrl=zP(VP(r.url),a.baseUrl),a;throw Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(e)}`)}function pB(e){let t=e.getSize(),n=e.getPadding(),r=(e,t)=>e.grow>0?void 0:e.px+t;return{width:r(t.width,n.horizontalTotal),height:r(t.height,n.verticalTotal)}}function*mB(e,t=[]){for(let[n,r]of e.entries())if(r instanceof Map)for(let e of mB(r,[...t,n]))yield e;else yield[[...t,n],r]}var hB=2147483647,gB=vB([hB]);function _B(e){for(let t=1;t<e.length;t++)if(e[t]<e[t-1])return!1;return!0}function vB(e){let t=0;for(let n=0,r=e.length;n<r;n++)e[n]>t&&(t=e[n]);return Math.floor(Math.log2(t)/4)+1}function yB(e){let t=vB(e),n=Array.from({length:e.length},(e,t)=>t);if(_B(e))return n;let r=Array(e.length),i=Array(16);for(let a=0;a<t;a++){i.fill(0);let t=a*4,o=16**a,s=r=>{let i=e[n[r]];return a>=gB?i>hB?Math.floor(i/o)%16:0:i>>t&15};for(let t=0;t<e.length;t++)i[s(t)]++;for(let e=1;e<16;e++)i[e]+=i[e-1];for(let t=e.length-1;t>=0;t--)r[--i[s(t)]]=n[t];[n,r]=[r,n]}return n}var bB=`|`,xB=`\\`,SB=class{#e=null;#t=null;#n=!1;invalidate(){this.#e=null,this.#t=null,this.#n=!1}findDatum(e,t,n){if(!e||e.length===0)return;let r=e.join(`, `);if(e.length!==t.length)throw Error(`Key tuple length ${t.length} does not match fields [${r}]`);(!this.#e||!this.#i(e))&&this.#r(e,n);let i=this.#t,a;if(this.#n){let e=``;for(let n=0;n<t.length;n++){n>0&&(e+=bB);let r=i[n],a=CB(t[n],r);e+=TB(a)}a=e}else{let e=i[0];a=CB(t[0],e)}return this.#e.get(a)}#r(e,t){let n=e.map(e=>L(e)),r=new Map,i=e.join(`, `),a=e.length!==1;if(a)for(let a of t)for(let t=0,o=a.length;t<o;t++){let o=a[t],s=``;for(let t=0;t<n.length;t++){t>0&&(s+=bB);let r=e[t],i=CB(n[t](o),r);s+=TB(i)}if(r.get(s)!==void 0){let e=n.map(e=>e(o));throw Error(`Duplicate key detected for fields [${i}]: ${JSON.stringify(e)}`)}r.set(s,o)}else{let a=n[0],o=e[0];for(let e of t)for(let t=0,n=e.length;t<n;t++){let n=e[t],s=CB(a(n),o);if(r.get(s)!==void 0)throw Error(`Duplicate key detected for fields [${i}]: ${JSON.stringify(s)}`);r.set(s,n)}}this.#e=r,this.#t=[...e],this.#n=a}#i(e){if(!this.#t||this.#t.length!==e.length)return!1;for(let t=0;t<e.length;t++)if(this.#t[t]!==e[t])return!1;return!0}};function CB(e,t){if(e===void 0)throw Error(`Key field "${t}" is undefined. Ensure all key fields are present in the data.`);if(e===null)throw Error(`Key field "${t}" is null. Ensure all key fields are present in the data.`);if(typeof e!=`string`&&typeof e!=`number`&&typeof e!=`boolean`)throw Error(`Key field "${t}" must be a scalar value (string, number, or boolean).`);return e}function wB(e){if(!(e.indexOf(xB)!==-1||e.indexOf(bB)!==-1))return e;let t=``;for(let n=0;n<e.length;n++){let r=e[n];(r===xB||r===bB)&&(t+=xB),t+=r}return t}function TB(e){return typeof e==`string`?wB(e):String(e)}var EB=class extends Jm{#e=[];#t=L(ch);#n=[];#r=new SB;#i;#a;#o=new DB;get behavior(){return 4}get label(){return`collect`}constructor(e){super(),this.params=e??{type:`collect`},this.observers=new Set,this.facetBatches=new gn([],JSON.stringify),this.#a=kB(this.params?.sort),this.#s()}#s(){this.#e=[],this.#n=[],this.#r.invalidate(),this.facetBatches.clear(),this.facetBatches.set(void 0,this.#e)}reset(){super.reset(),this.#s()}handle(e){this.#e.push(e)}beginBatch(e){this.#r.invalidate(),Zm(e)&&(this.#e=[],this.facetBatches.set(Zl(e.facetId),this.#e))}complete(){if(this.#e=[],this.params.groupby?.length){if(this.facetBatches.size>1)throw Error(`TODO: Support faceted data!`);let e=this.facetBatches.get(void 0),t=this.params.groupby.map(e=>L(e)),n=t.length>1?Sn(e,...t):OB(e,t[0]);this.facetBatches.clear();for(let[e,t]of mB(n))this.facetBatches.set(e,t)}if(this.#a)for(let e of this.facetBatches.values())e.sort(this.#a);this.#d(),this.#c(),super.complete(),this.#u();for(let e of this.observers)e(this)}observe(e){return this.observers.add(e),()=>{this.observers.delete(e)}}#c(){if(this.children.length)for(let[e,t]of this.facetBatches.entries()){if(e){let t={type:`facet`,facetId:e};for(let e of this.children)e.beginBatch(t)}for(let e=0,n=t.length;e<n;e++)this._propagate(t[e])}}repropagate(){for(let e of this.children)e.reset();this.#c();for(let e of this.children)e.complete();this.#u()}getDomain(e,t,n){return this.#o.getDomain(e,()=>{let e=hz(t);if(n.constant)e.extend(n({}));else if(this.completed)for(let t of this.facetBatches.values())for(let r=0,i=t.length;r<i;r++)e.extend(n(t[r]));return e})}subscribeDomainChanges(e,t){return this.#o.subscribe(e,t)}getData(){switch(this.#l(),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{let e=this.facetBatches;return{[Symbol.iterator]:function*(){for(let t of e.values())yield*t}}}}}visitData(e){this.#l();for(let t of this.facetBatches.values())for(let n=0;n<t.length;n++)e(t[n])}getItemCount(){let e=0;for(let t of this.facetBatches.values())e+=t.length;return e}#l(){if(!this.completed)throw Error(`Data propagation is not completed! No data are available.`)}#u(){this.#o.hasCachedDomains()&&this.#o.clear(),this.#o.notify()}#d(){this.#i=[];let e=this.facetBatches.values().next().value?.[0];if(e==null||!(`_uniqueId`in e))return;let t=0,n=[],r=this.#t;for(let[e,i]of this.facetBatches){this.#i.push({start:t,stop:t+i.length,facetId:e}),t+=i.length;for(let e=0,t=i.length;e<t;e++)n.push(r(i[e]))}this.#n=yB(n)}findDatumByUniqueId(e){if(!this.#n.length)return;let t=sn(e=>e.start).right,n=this.#t,r=sn(e=>n(i(e))).left,i=e=>{let n=t(this.#i,e),r=this.#i[n-1];if(!(!r||e>=r.stop))return this.facetBatches.get(r.facetId)[e-r.start]},a=r(this.#n,e);if(a>=0){let t=i(this.#n[a]);if(t&&n(t)===e)return t}}findDatumByKey(e,t){return this.#l(),this.#r.findDatum(e,t,this.facetBatches.values())}},DB=class{#e=new Map;#t=new Map;hasCachedDomains(){return this.#e.size>0}clear(){this.#e.clear()}getDomain(e,t){let n=this.#e.get(e);if(n)return n;{let n=t();return this.#e.set(e,n),n}}subscribe(e,t){let n=this.#t.get(e);return n||(n=new Set,this.#t.set(e,n)),n.add(t),()=>{let n=this.#t.get(e);n&&(n.delete(t),n.size===0&&this.#t.delete(e))}}notify(){if(this.#t.size===0)return;let e=new Set;for(let t of this.#t.values())for(let n of t)e.add(n);for(let t of e)t()}};function OB(e,t){let n=new Map;for(let r=0,i=e.length;r<i;r++){let i=e[r],a=t(i),o=n.get(a);o||(o=[],n.set(a,o)),o.push(i)}return n}function kB(e){if(e?.field){let t=Zl(e.field);if(t.length==1&&!t[0].includes(`.`)){let n=Zl(e.order)[0]??`ascending`,r=JSON.stringify(t[0]);return Function(`a`,`b`,`return a[${r}] ${n===`ascending`?`-`:`+`} b[${r}];`)}return gt(e.field,e.order)}}var AB=class extends sh{get behavior(){return 1}constructor(e){super(e),this.params=e,this.startAccessor=L(e.start),this.endAccessor=L(e.end),this.chromAccessor=e.chrom?L(e.chrom):e=>void 0,this.weightAccessor=e.weight?L(e.weight):e=>1,this.as={coverage:e.as??`coverage`,start:e.asStart??e.start,end:e.asEnd??e.end,chrom:e.asChrom??e.chrom},this.createSegment=Function(`start`,`end`,`coverage`,`chrom`,`return {`+Object.entries(this.as).filter(([e,t])=>t).map(([e,t])=>`${JSON.stringify(t)}: ${e}`).join(`, `)+`};`),this.ends=new UP}reset(){super.reset(),this.initialize()}initialize(){let e=this.as.coverage,t=this.as.end,n=this.as.chrom,r=this.startAccessor,i=this.endAccessor,a=this.chromAccessor,o=this.weightAccessor,s,c,l,u=0,d=NaN,f=this.ends;f.clear();let p=e=>{this._propagate(e),s=null},m=(n,r,i)=>{if(n==r)return;let a=!1;s&&(s[e]===i?(s[t]=r,a=!0):s[e]!=0&&p(s)),a||(s=this.createSegment(n,r,i,l))},h=()=>{let e;for(;(e=f.peekValue())!==void 0;)m(d,e,u),d=e,u-=f.pop();d=NaN,s&&p(s)};this.handle=e=>{let t=r(e),s;for(;(s=f.peekValue())!==void 0&&s<t;)m(d,s,u),d=s,u-=f.pop();if(n){let t=a(e);t!==c&&(h(),l=t,c=l)}isNaN(d)||m(d,t,u),d=t;let p=o(e);u+=p,f.push(p,i(e))},this.complete=()=>{h(),super.complete()},this.beginBatch=e=>{h(),c=null,super.beginBatch(e)}}};function jB(e,t,n=e=>+e,r=0,i=e.length){let a=new UP,o=i-r,s;for(s=0;s<t&&s<o;s++)a.push(s,n(e[r+s]));for(;s<o;s++){let t=n(e[r+s]);t>=a.peekValue()&&(a.push(s,t),a.pop())}let c=[],l;for(;(l=a.pop())!==void 0;)c.push(e[r+l]);return c.reverse()}var MB=class{constructor(e,t=-1/0,n=1/0){this.maxSize=e,this.lowerLimit=t,this.upperLimit=n;let r=this.maxSize*2+1;this.lowerLimits=new Float64Array(r),this.upperLimits=new Float64Array(r),this.lowerChildren=new Int32Array(r),this.upperChildren=new Int32Array(r),this.reset()}reset(){this.lowerLimits.fill(0),this.upperLimits.fill(0),this.lowerChildren.fill(0),this.upperChildren.fill(0),this.n=1,this.lowerLimits[0]=this.lowerLimit,this.upperLimits[0]=this.upperLimit}_findSlot(e,t,n=0){if(e>=this.lowerLimits[n]&&t<=this.upperLimits[n]){let r=this.lowerChildren[n];if(r){let i=this._findSlot(e,t,r);return i>=0?i:this._findSlot(e,t,this.upperChildren[n])}else return n}else return-1}reserve(e,t){if(t-e<=0)throw Error(`Cannot reserve an empty or negative-size slot!`);if(this.n+1>this.lowerLimits.length)return!1;let n=this._findSlot(e,t);if(n<0)return!1;let r=this.n++,i=this.n++;return this.lowerLimits[r]=this.lowerLimits[n],this.upperLimits[r]=e,this.lowerLimits[i]=t,this.upperLimits[i]=this.upperLimits[n],this.lowerChildren[n]=r,this.upperChildren[n]=i,!0}},NB=class extends sh{get behavior(){return 4}get domainSensitiveScaleChannels(){return[this.channel]}constructor(e,t){if(super(e),this.params=e,this._data=[],this.channel=e.channel??`x`,![`x`,`y`].includes(this.channel))throw Error(`Invalid channel: `+this.channel);this.startPosAccessor=L(this.params.pos),this.endPosAccessor=L(this.params.pos2??this.params.pos),this.startPosBisector=sn(this.startPosAccessor),this.endPosBisector=sn(this.endPosAccessor),this.scoreAccessor=L(this.params.score),this.widthAccessor=L(this.params.width),this.laneAccessor=this.params.lane?L(this.params.lane):e=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=t.getScaleResolution(this.channel);let n=()=>this._filterAndPropagate();this.schedule=()=>t.context.animator.requestTransition(n);let r=()=>this.schedule();this.resolution.addEventListener(`domain`,r),this.registerDisposer(()=>this.resolution.removeEventListener(`domain`,r));let i=t._addBroadcastHandler(`layoutComputed`,()=>this.schedule());this.registerDisposer(i)}complete(){let e=this.startPosAccessor;this._data.sort((t,n)=>e(t)-e(n));for(let e of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(e,new MB(200));this.schedule(),super.complete()}_filterAndPropagate(){super.reset();let e=this.resolution.getScale(),t=this.resolution.getAxisLength();if(!t)return;for(let e of this.reservationMaps.values())e.reset();let n=e.domain(),r=jB(this._data,70,this.scoreAccessor,this.endPosBisector.left(this._data,n[0]),this.startPosBisector.right(this._data,n[1]));for(let n of r){let r=e(this.startPosAccessor(n))*t,i=e(this.endPosAccessor(n))*t,a=i-r,o=this.widthAccessor(n)+this.padding*2,s=(r+i)/2,c=Math.max(0,(a-o)/2);if(c>0){let e=Math.max(0,o/2-s);s+=Math.min(e,c);let n=Math.max(0,o/2+s-t);s-=Math.min(n,c)}if(this.reservationMaps.get(this.laneAccessor(n)).reserve(s-o/2,s+o/2))if(this.params.asMidpoint){let r=Object.assign({},n);r[this.params.asMidpoint]=e.invert(s/t),this._propagate(r)}else this._propagate(n)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}},PB=class extends sh{constructor(e,t){super(e,t),this.params=e,this.predicate=void 0}initialize(){let e;if(FB(this.params))e=this.params.expr;else if(IB(this.params)){let t=this.paramRuntime.findValue(this.params.param);if(!t)throw Error(`Cannot initialize filter transform. Selection parameter "${this.params.param}" not found!`);e=ig(this.params,t)}else throw Error(`Invalid filter params: `+JSON.stringify(this.params));this.predicate=this.paramRuntime.watchExpression(e,()=>this.repropagate(),{scopeOwned:!1,registerDisposer:e=>this.registerDisposer(e)})}handle(e){this.predicate(e)&&this._propagate(e)}};function FB(e){return`expr`in e}function IB(e){return`param`in e}var LB=class extends sh{get behavior(){return 1}constructor(e){super(e),this.params=e;let t=e.index;if(e.fields){let n=Zl(e.fields).map(e=>L(e)),r=Zl(e.as||e.fields);if(n.length!==r.length)throw Error(`Lengths of "fields" (${n.length}), and "as" (${r.length}) do not match!`);this.handle=e=>{let i=n.map((t,n)=>t(e)??[]),a=i[0].length;for(let o=0;o<a;o++){let a=Object.assign({},e);for(let e=0;e<n.length;e++)a[r[e]]=o<i[e].length?i[e][o]:null;t&&(a[t]=o),this._propagate(a)}}}else this.handle=e=>{for(let n=0;n<e.length;n++){let r=Object.assign({},e[n]);t&&(r[t]=n),this._propagate(r)}}}},RB=48;function*zB(e,t=`,`){let n=t.charCodeAt(0),r=0;for(let t=0;t<e.length;t++){let i=e.charCodeAt(t);i==n?(yield r,r=0):r=r*10+i-RB}yield r}var BB=class extends sh{get behavior(){return 1}constructor(e){super(e);let t=L(e.exons??`exons`),n=L(e.start??`start`),[r,i]=e.as||[`exonStart`,`exonEnd`];this.handle=e=>{let a=n(e),o=a,s=!0,c=t(e);for(let t of zB(c)){if(s)o=a+t;else{a=o+t;let n=Object.assign({},e);n[r]=o,n[i]=a,this._propagate(n)}s=!s}}}},VB=class extends sh{get behavior(){return 1}constructor(e){super(e);let t=Zl(e.field).map(e=>L(e)),n=Zl(e.separator),r=Zl(e.as||e.field);if(t.length!==n.length||t.length!==r.length)throw Error(`Lengths of "separator" (${n.length}), "fields" (${t.length}), and "as" (${r.length}) do not match!`);this.handle=e=>{if(t.some(t=>!t(e)))return;let i=t.map((t,r)=>t(e).split(n[r]));HB(i,e);let a=i[0].length;for(let n=0;n<a;n++){let a=Object.assign({},e);for(let e=0;e<t.length;e++)a[r[e]]=i[e][n];this._propagate(a)}}}};function HB(e,t){let n=e.map(e=>e.length);if(!n.every(e=>e==n[0]))throw Error(`Mismatching number of elements in the fields to be split: `+JSON.stringify(t))}var UB=class extends sh{get behavior(){return 2}constructor(e,t){super(e,t),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=this.paramRuntime.watchExpression(this.params.expr,()=>this.repropagate(),{scopeOwned:!1,registerDisposer:e=>this.registerDisposer(e)})}handle(e){e[this.as]=this.fn(e),this._propagate(e)}},WB=class extends sh{get behavior(){return 2}constructor(e,t){e={channel:`x`,...e},super(e),this.params=e;let n=e.channel;if(![`x`,`y`].includes(n))throw Error(`Invalid channel: `+n);let r=t.getScaleResolution(n).getScale(),i=`genome`in r?r.genome():void 0;if(!i)throw Error(`LinearizeGenomicCoordinate transform requires a locus scale!`);let a=L(e.chrom),o=Zl(e.pos).map(e=>L(e)),s=Zl(e.as);if(o.length!=s.length)throw Error(`The number of "pos" and "as" elements must be equal!`);let c=Zl(e.offset),l;if(c.length==0)l=Array(o.length).fill(0);else if(c.length==1)l=Array(o.length).fill(c[0]);else if(c.length==o.length)l=c;else throw Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);let u=Function(`datum`,`chromOffset`,`posAccessors`,s.map((e,t)=>`datum[${JSON.stringify(e)}] = chromOffset + +posAccessors[${t}](datum) - ${l[t]};`).join(`
798
- `)),d,f=0,p=e=>{if(e!==d){if(f=i.cumulativeChromPositions.get(e),f===void 0)return;d=e}return f};this.handle=e=>{let t=a(e),n=p(t);if(n===void 0)throw Error(`Unknown chromosome/contig "${t}" in datum: ${JSON.stringify(e)}`);u(e,n,o),this._propagate(e)}}},GB=class extends sh{get behavior(){return 2}constructor(e,t){super(e,t),this.params=e;let n=L(e.field),r=e.as,i=0;if(R(e.fontSize)){let n=t.paramRuntime.watchExpression(e.fontSize.expr,()=>{i=n(),this.repropagate()},{scopeOwned:!1,registerDisposer:e=>this.registerDisposer(e)});i=n()}else i=e.fontSize;this.handle=e=>{let t=n(e);t===void 0?e[r]=0:e[r]=this.font.metrics.measureWidth(t,i),this._propagate(e)}}initialize(){let e=this.paramRuntimeProvider.context.fontManager;this.font=this.params.font?e.getFont(this.params.font,this.params.fontStyle,this.params.fontWeight):e.getDefaultFont()}},KB=65536,qB=class extends sh{get behavior(){return 2}constructor(e){super(e),this.params=e}reset(){super.reset(),this.initialize()}initialize(){let e=this.params,t=e.as||`lane`,n=M(e.spacing)?e.spacing:1,r=L(e.start),i=L(e.end);if(!e.preference!=!e.preferredOrder)throw Error(`Must specify both "preference" and "preferredOrder"`);if(e.preference){let a=new Float64Array(KB),o=L(e.preference),s=e.preferredOrder,c=1/0;this.handle=e=>{let l=r(e);l<c&&a.fill(-1/0),c=l;let u=s.indexOf(o(e)),d;if(u>=0&&a[u]<l)d=u;else{let t=r(e);for(d=0;d<a.length&&!(a[d]<t);d++);if(d>=a.length)throw Error(`Out of lanes!`)}a[d]=i(e)+n,e[t]=d,this._propagate(e)}}else{let e=new UP,a=new UP,o=-1/0,s=0;this.handle=c=>{let l=r(c);for(;e.length&&(e.peekValue()<=l||l<o);){let t=e.pop();a.push(t,t)}o=l;let u=a.pop();u===void 0&&(u=s++),c[t]=u,this._propagate(c),e.push(u,i(c)+n)}}}},JB=class extends sh{get behavior(){return 1}constructor(e){if(super(e),this.params=e,e.as&&e.as.length!=e.fields.length)throw Error(`"fields" and "as" have unequal lengths!`);let t=e.fields.map(e=>L(e)),n=e.as?e.as:t.map(He);this.handle=e=>{let r={};for(let i=0;i<t.length;i++)r[n[i]]=t[i](e);this._propagate(r)}}},YB=class extends sh{get behavior(){return 2}constructor(e){super(e),this.params=e;let t=new RegExp(e.regex),n=typeof e.as==`string`?[e.as]:e.as,r=L(e.field);this.handle=i=>{let a=r(i);if(N(a)){let r=a.match(t);if(r){if(r.length-1!=n.length)throw Error(`The number of RegEx groups and the length of "as" do not match!`);for(let e=0;e<n.length;e++)i[n[e]]=r[e+1]}else if(e.skipInvalidInput)for(let e=0;e<n.length;e++)i[n[e]]=void 0;else throw Error(`"${a}" does not match the given regex: ${t.toString()}`)}else if(!e.skipInvalidInput)throw Error(`Trying to match a non-string field. Encountered type: ${typeof a}, field content: "${a}".`);this._propagate(i)}}},XB=class extends sh{get behavior(){return 1}constructor(e){super(e),this.params=e;let t=Zl(e.columnRegex).map(e=>new RegExp(e));for(let e of t)if(RegExp(`|`+e.source).exec(``).length-1!=1)throw Error(`Regex ${e.toString()} must have exactly one capturing group!`);let n=Zl(e.asValue);if(t.length!=n.length)throw Error(`Lengths of "columnRegex" and "as" are not equal!`);let r=e.skipRegex?new RegExp(e.skipRegex):void 0,i=e.asKey||`sample`,a,o,s,c=e=>{let c=Object.keys(e);for(let e of t)if(!c.some(t=>e.test(t)))throw Error(`No columns matching the regex ${e.toString()} found in the data!`);let l=new Map;for(let[e,n]of t.entries())for(let t of c){let r=n.exec(t)?.[1];if(r!==void 0){let n=l.get(r);n||(n=[],l.set(r,n)),n[e]=t}}a=[...l.entries()],o=c.filter(e=>!t.some(t=>t.test(e))&&!(r&&r.test(e)));let u=[...o.map(e=>JSON.stringify(e)+`: datum[`+JSON.stringify(e)+`]`),JSON.stringify(i)+`: sampleId`,...n.map((e,t)=>JSON.stringify(e)+`: datum[attrs[${t}]]`)];s=Function(`datum`,`sampleId`,`attrs`,`return {
797
+ chrM 16299`};function lR(e){if(!(e in cR))throw Error(`Unknown assembly: ${e}`);return cR[e].split(`
798
+ `).map(e=>{let t=e.split(` `);return{name:t[0],size:parseInt(t[1])}})}var uR=class{constructor(e){if(this.config={name:`custom`,...e},`baseUrl`in e)throw Error("The `baseUrl` property in genome config has been removed in GenomeSpy v0.52.0. Use `url` instead. See https://genomespy.app/docs/genomic-data/genomic-coordinates/.");if(!hR(e))throw Error(`Not a genome configuration: `+JSON.stringify(e));if(this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,_R(this.config))this.setChromSizes(this.config.contigs);else if(!gR(this.config)){let e=lR(this.config.name);if(e)this.setChromSizes(e);else throw Error(`Unknown genome: ${this.config.name}. Please provide contigs or a URL. See https://genomespy.app/docs/genomic-data/genomic-coordinates/.`)}}get name(){return this.config.name}async load(e){if(gR(this.config))try{let t=sF(e,this.config.url),n=await fetch(t);if(!n.ok)throw Error(`${n.status} ${n.statusText}`);this.setChromSizes(dR(await n.text()))}catch(e){throw Error(`Could not load chrom sizes: ${this.config.url}. Reason: ${e.message}`,{cause:e})}}hasChrPrefix(){return this.chromosomes.some(e=>e.name.startsWith(`chr`))}setChromSizes(e){this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map;let t=0;this.startByIndex=[0];for(let n=0;n<e.length;n++){this.startByIndex.push(t);let r=e[n].size,i={...e[n],continuousStart:t,continuousEnd:t+r,continuousInterval:[t,t+r],index:n,number:n+1,odd:!(n&1)};this.chromosomes.push(i);let a=i.name.replace(/^chr/i,``);for(let e of[`chr`+a,`CHR`+a,`Chr`+a,i.number,``+i.number,a,i.name])this.cumulativeChromPositions.set(e,t),this.chromosomesByName.set(e,i);t+=i.size}this.totalSize=t}getExtent(){return[0,this.totalSize]}toContinuous(e,t){let n=this.cumulativeChromPositions.get(e);if(n===void 0)throw Error(`Unknown chromosome/contig: `+e);return n+ +t}toChromosome(e){if(e>this.totalSize)return;e=Math.floor(e);let t=un(this.startByIndex,e)-1;if(t>0&&t<=this.chromosomes.length)return this.chromosomes[t-1]}toChromosomal(e){let t=this.toChromosome(e);if(t)return{chrom:t.name,pos:Math.floor(e)-t.continuousStart}}getChromosome(e){return this.chromosomesByName.get(e)}formatInterval(e){return sR(...this.toChromosomalInterval(e))}formatLocus(e){let t=this.toChromosomal(e);if(t)return oR(t)}toChromosomalInterval(e){let t=this.toChromosomal(e[0]+.5),n=this.toChromosomal(e[1]-.5);return n.pos+=1,[t,n]}toContinuousInterval(e){let[t,n]=e;return n||=t,[this.toContinuous(t.chrom,t.pos??0),this.toContinuous(n.chrom,n.pos??this.chromosomesByName.get(n.chrom)?.size)]}toDiscreteChromosomeIntervals(e){let t=e[0],n=e[1],r=[];if(t.chrom===n.chrom)r.push({chrom:t.chrom,startPos:t.pos,endPos:n.pos});else{let e=this.chromosomes.findIndex(e=>e.name===t.chrom),i=this.chromosomes.findIndex(e=>e.name===n.chrom);r.push({chrom:t.chrom,startPos:t.pos,endPos:this.chromosomes[e].size});for(let t=e+1;t<i;t++)r.push({chrom:this.chromosomes[t].name,startPos:0,endPos:this.chromosomes[t].size});r.push({chrom:n.chrom,startPos:0,endPos:n.pos})}return r}continuousToDiscreteChromosomeIntervals(e){return this.toDiscreteChromosomeIntervals([this.toChromosomal(e[0]),this.toChromosomal(e[1])])}parseInterval(e){let t=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(t){let e=t[1];if(t.slice(2).every(e=>e===void 0)){let t=this.getChromosome(e);return t?[t.continuousStart,t.continuousEnd]:void 0}let n=t[3]||e,r=parseInt(t[2].replace(/,/g,``)),i=t[4]===void 0?r:parseInt(t[4].replace(/,/g,``));return[this.toContinuous(e,r-1),this.toContinuous(n,i)]}}};function dR(e){return Gt(e).map(([e,t])=>({name:e,size:parseInt(t)}))}function fR(e){return Ze(e)&&`chrom`in e}function pR(e){return e.every(fR)}function mR(e){return pR(e)&&(e[1]??e[0]).pos!==void 0}function hR(e){return Ze(e)&&(`name`in e||gR(e)||_R(e))}function gR(e){return hR(e)&&`url`in e}function _R(e){return hR(e)&&`contigs`in e}var vR=1e6,yR=.65;function bR(){let e=iR().numberingOffset(1),t;e.genome=function(n){return arguments.length?(t=n,e):t},e.ticks=n=>{if(!t)return[];let r=e.domain(),i=r[1]-r[0],a=e.numberingOffset(),o=t.toChromosome(Math.max(r[0],0)),s=t.toChromosome(Math.min(r[1],t.totalSize-1)),c=Math.max(1,Math.min(n??10,Math.floor(i))),l=jn(r[0],r[1],c);l<vR&&(l=jn(r[0],r[1],c*yR)),l=Math.max(1,l);let u=[];for(let e=o.index;e<=s.index;e++){let n=t.chromosomes[e],i=Math.max(n.continuousStart+l,r[0]-(r[0]-n.continuousStart)%l),o=Math.min(n.continuousEnd-l/4,r[1]+1);for(let e=i;e<=o;e+=l){let t=e-a;t>=r[0]&&t<r[1]&&u.push(t)}}return u},e.tickFormat=(n,r)=>{if(!t)return;if(r)throw Error(`Locus scale's tickFormat does not support a specifier!`);let i=e.domain(),a=i[1]-i[0],o=e.numberingOffset(),s=jn(i[0],i[1],Math.max(1,Math.min(n??10,Math.floor(a))))<vR?or(`,`):or(`.3s`),c=e=>e-t.toChromosome(e).continuousStart;return e=>s(c(e)+o)};let n=e.copy;return e.copy=()=>{let e=n(),r=t;return e.genome=function(t){return arguments.length?(r=t,e):r},e.genome(t)},e}function xR(e){return e.type==`locus`}function SR(e,t){let n=DR(e);return n?n.toChromosomal(t):t}function CR(e,t){let n=DR(e);return n&&fR(t)?n.toContinuous(t.chrom,t.pos):t}function wR(e,t){let n=DR(e);return n&&pR(t)?n.toContinuousInterval(t):t}function TR(e,t){let n=DR(e);return n?n.toChromosomalInterval(t):t}function ER(e){let t=DR(e);if(!t)throw Error(`No genome has been defined!`);return t.getExtent()}function DR(e){if(e&&`toChromosomal`in e)return e;if(e&&`genome`in e)return e.genome()}var OR=`locus`,kR=`index`,AR=5;function jR(e){let t=e.type;return!e.bins&&(t===`linear`||t===`pow`||t===`sqrt`)}function MR(e){return _m(e)&&![`sequential`,kR,OR].includes(e)}function NR(e){return e||{warn:(e,...t)=>console.warn(e,...t)}}var PR=jt(`set.modified.clear.type.scheme.schemeExtent.schemeCount.domain.domainMin.domainMid.domainMax.domainRaw.domainImplicit.domainTransition.nice.zero.bins.range.rangeStep.round.reverse.interpolate.interpolateGamma.zoom.fp64.name`.split(`.`));function FR(e,t,n){n=NR(n);for(let r in e)if(!PR[r]){if(r===`padding`&&MR(t.type))continue;ft(t[r])?t[r](e[r]):n.warn(`Unsupported scale property: `+r)}let r=BR(t,e,n);r.domain&&t.domain(r.domain),r.applyOrdinalUnknown&&t.unknown(r.ordinalUnknown),GR(t,e,WR(t,e,r.count))}function IR(e,t){let n=!e.domain&&_m(e.type)?{...e,domain:[0,0]}:e,r=LR(n),i=R(r);if(!i)throw Error(`Unknown scale type: `+r);let a=i();return FR(n,a,t),a}function LR(e){var t=e.type,n=``,r;return t===`sequential`?Hp+`-`+Rp:(RR(e)&&(r=e.rawDomain?e.rawDomain.length:e.domain?e.domain.length+ +(e.domainMid!=null):0,n=r===2?Hp+`-`:r===3?Up+`-`:``),(n+t||`linear`).toLowerCase())}function RR(e){let t=e.type;return _m(t)&&t!==`time`&&t!==`utc`&&(e.scheme||e.range&&e.range.length&&e.range.every(F))}function zR(e){if(!e.copy)return e;let t=e.copy();return t.type==null&&e.type!=null&&(t.type=e.type),t}function BR(e,t,n){if(!e.domain)return{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1};n=NR(n);let r=zR(e);var i=VR(r,t.domainRaw,n);if(i>-1)return{domain:r.domain(),count:i,ordinalUnknown:r.type===`ordinal`&&t.domainImplicit?eu:void 0,applyOrdinalUnknown:!1};var a=t.domain,o=r.type,s=t.zero||t.zero===void 0&&jR(r),c,l;return a?(MR(o)&&t.padding&&a[0]!==Qe(a)&&(a=HR(o,a,t.range,t.padding,t.exponent,t.constant)),(s||t.domainMin!=null||t.domainMax!=null||t.domainMid!=null)&&(c=(a=a.slice()).length-1||1,s&&(a[0]>0&&(a[0]=0),a[c]<0&&(a[c]=0)),t.domainMin!=null&&(a[0]=t.domainMin),t.domainMax!=null&&(a[c]=t.domainMax),t.domainMid!=null&&(l=t.domainMid,(l<a[0]||l>a[c])&&n.warn(`Scale domainMid exceeds domain min or max.`,l),a.splice(c,0,l))),r.domain(UR(o,a,n)),t.nice&&r.nice&&r.nice(t.nice!==!0&&Nm(r,t.nice)||null),{domain:r.domain(),count:a.length,ordinalUnknown:o===`ordinal`&&t.domainImplicit?eu:void 0,applyOrdinalUnknown:o===qp}):{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1}}function VR(e,t,n){return t?(e.domain(UR(e.type,t,n)),t.length):-1}function HR(e,t,n,r,i,a){n??=[0,1];var o=Math.abs(Qe(n)-n[0]),s=o/(o-2*r),c=e===`log`?ct(t,null,s):e===`sqrt`?lt(t,null,s,.5):e===`pow`?lt(t,null,s,i||1):e===`symlog`?ut(t,null,s,a||1):st(t,null,s);return t=t.slice(),t[0]=c[0],t[t.length-1]=c[1],t}function UR(e,t,n){return bm(e)&&Math.abs(t.reduce(function(e,t){return e+(t<0?-1:t>0?1:0)},0))!==t.length&&n.warn(`Log scale domain includes zero: `+Et(t)),t}function WR(e,t,n){let r=t.bins;if(r&&!k(r)){let t=(r.start==null||r.stop==null)&&e.domain(),n=r.start==null?t[0]:r.start,i=r.stop==null?Qe(t):r.stop,a=r.step;a||Ke(`Scale bins parameter missing step property.`),r=Bn(n,i+a,a)}return r?e.bins=r:e.bins&&delete e.bins,e.type===`bin-ordinal`&&(r?!t.domain&&!t.domainRaw&&(e.domain(r),n=r.length):e.bins=e.domain()),n}function GR(e,t,n){var r=e.type,i=t.round||!1,a=t.range;if(t.rangeStep!=null)a=KR(r,t,n);else if(t.scheme&&(a=qR(r,t,n),ft(a))){if(e.interpolator)return e.interpolator(a);Ke(`Scale type ${r} does not support interpolating color schemes.`)}if(a&&xm(r))return e.interpolator(Cm(YR(a,t.reverse),t.interpolate,t.interpolateGamma));a&&t.interpolate&&e.interpolate?e.interpolate(Tm(t.interpolate,t.interpolateGamma)):ft(e.round)?e.round(i):ft(e.rangeRound)&&e.interpolate(i?qd:Wd),a&&e.range(YR(a,t.reverse))}function KR(e,t,n){e!==`band`&&e!==`point`&&Ke(`Only band and point scales support rangeStep.`);var r=(t.paddingOuter==null?t.padding:t.paddingOuter)||0,i=e===`point`?1:(t.paddingInner==null?t.padding:t.paddingInner)||0;return[0,t.rangeStep*Ip(n,i,r)]}function qR(e,t,n){var r=t.schemeExtent,i=t.schemeCount,a,o;return k(t.scheme)?o=Cm(t.scheme,t.interpolate,t.interpolateGamma):(F(t.scheme)?a=t.scheme.toLowerCase():(a=t.scheme.name.toLowerCase(),r=t.scheme.extent??r,i=t.scheme.count??i),o=Mm(a),o||Ke(`Unrecognized scheme name: ${t.scheme}`)),n=e===`threshold`?n+1:e===`bin-ordinal`?n-1:e===`quantile`||e===`quantize`?+i||AR:n,xm(e)?JR(o,r,t.reverse):ft(o)?wm(JR(o,r),n):e===`ordinal`?o:o.slice(0,n)}function JR(e,t,n){return ft(e)&&(t||n)?Sm(e,YR(t||[0,1],n)):e}function YR(e,t){return t?e.slice().reverse():e}var XR=class{#e;#t=new Set;#n;#r;#i;#a;#o=0;constructor({getParamRuntime:e,onRangeChange:t,onDomainChange:n,getGenomeStore:r}){this.#n=e,this.#r=t,this.#i=n,this.#a=r}get scale(){return this.#e}getLocusGenome(e){let t=this.#a?.();if(!t)throw Error(`No genome has been defined!`);return e?t.getGenome(e):t.getGenome()}createScale(e){let t=IR({...this.#c(e),range:void 0});return t.props=e,`unknown`in t&&t.unknown(null),this.#e=t,this.#s(e),this.#l(),this.#u(),this.#e}#s(e){let t=this.#e;!t||!xR(t)||t.genome(this.getLocusGenome(e.assembly))}reconfigureScale(e){let t=this.#e;!t||t.type==`null`||(FR({...this.#c(e),range:void 0},t),t.props=e,this.#l())}withDomainNotificationsSuppressed(e){this.#o+=1;try{e()}finally{--this.#o}}#c(e){let{assembly:t,domainIndexer:n,__rangeExprScope:r,...i}=e;return i}#l(){let e=this.#e;if(!e)return;let t=e.props;this.#t.forEach(e=>e.invalidate()),this.#t.clear();let n=t.__rangeExprScope?.paramRuntime??this.#n(),r=QR({range:t.range,reverse:t.reverse,createExpression:e=>n.createExpression(e),registerExpr:e=>this.#t.add(e)});if(!r)return;if(`values`in r){e.range(r.values);return}let i=()=>e.range(r.evaluate());r.setup(i),i()}#u(){let e=this.#e;if(!e)return;let t=e.range,n=e.domain,r=()=>this.#r?.();ZR(e,{onRangeChange:r,onDomainChange:()=>{this.#o>0||this.#i?.()},range:t,domain:n}),r()}dispose(){this.#t.forEach(e=>e.invalidate()),this.#t.clear()}};function ZR(e,{onRangeChange:t,onDomainChange:n,range:r,domain:i}){typeof r==`function`&&(e.range=(function(e){if(arguments.length)r(e),t?.();else return r()})),typeof i==`function`&&(e.domain=(function(e){if(arguments.length)i(e),n?.();else return i()}))}function QR({range:e,reverse:t,createExpression:n,registerExpr:r}){if(!e||!k(e))return null;let i=(e,t)=>t?e.slice().reverse():e;if(e.some(B)){let a;return{dynamic:!0,evaluate:()=>i(a.map(e=>e()),t),setup:t=>{a=e.map(e=>{if(B(e)){let i=n(e.expr);return i.subscribe(t),r(i),()=>i(null)}return()=>e})}}}return{dynamic:!1,values:i(e,t)}}function $R(e,t,n){if(n||=[],e.some(e=>e===null)){if(e.every(e=>e===null))return null;throw console.warn(e),Error(`Cannot merge objects with nulls!`)}let r={},i=(e,t)=>e===t||ez(e)&&ez(t)||ez(e)&&t===!0||e===!0&&Ze(t)||Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((e,n)=>e===t[n]),a=e=>{for(let a in e){let o=e[a];if(!n.includes(a)&&o!==void 0)if(r[a]!==void 0&&!i(r[a],o))console.warn(`Conflicting property ${a} of ${t}: (${JSON.stringify(r[a])} and ${JSON.stringify(e[a])}). Using ${JSON.stringify(r[a])}.`);else{let e=r[a];if(ez(e))ez(o)&&(r[a]=$R([e,o],a));else if(ez(o)){if(!(e===!0||e===void 0))throw Error(`Bug in merge! Target is: `+e);r[a]=$R([{},o],a)}else r[a]=o}}};for(let t of e)a(t);return r}function ez(e){return Ze(e)&&!Array.isArray(e)}var tz={nominal:`nominalColorScheme`,ordinal:`ordinalColorScheme`,quantitative:`quantitativeColorScheme`},nz=new Set([`rect`]),rz=new Set([`shape`,`size`,`angle`,`heatmap`,`ramp`,`diverging`]);function iz(e){return typeof e==`string`||typeof e==`object`&&!!e}function az(e){return rz.has(e)}function oz(e,t){if(az(t))return uz(e)[t]}function sz(e){if([`nominal`,`ordinal`,`quantitative`,`index`,`locus`].includes(e))return e}function cz(e){if(!e)return{};let t={...e};for(let e of[`nominal`,`ordinal`,`quantitative`,`index`,`locus`,`nominalColorScheme`,`ordinalColorScheme`,`quantitativeColorScheme`,`indexColorScheme`,`locusColorScheme`])delete t[e];return t}function lz(e,t){let n=sz(t);return rP(e.flatMap(e=>{let t=e.scale;return[t,t&&n?t[n]:void 0]}))}function uz(e){return rP(e.map(e=>e.range))}function dz(e,{channel:t,dataType:n,isExplicitDomain:r,markTypes:i,hasDomainMid:a}){let o=lz(e,n),s=uz(e),c={...cz(o)};if(r?c.zero=!1:c.zero===void 0&&o.zero!==void 0&&(c.zero=o.zero),Vh(t)&&c.nice===void 0&&(c.nice=o.nice===void 0?!r:o.nice),qh(t)&&c.scheme===void 0)if(n==`quantitative`){let e=a||o.domainMid!==void 0?s.diverging:i?.length&&i.every(e=>nz.has(e))?s.heatmap:s.ramp,t=iz(e)?e:o.quantitativeColorScheme;iz(t)&&(c.scheme=t)}else{let e=o[tz[n]??tz.quantitative];iz(e)&&(c.scheme=e)}else Jh(t)&&c.range===void 0?c.range=t==`shape`?s.shape??[]:[]:t==`size`&&c.range===void 0?c.range=s.size:t==`angle`&&c.range===void 0&&(c.range=s.angle);return c}var fz=`quantitative`,pz=`ordinal`,mz=`nominal`;function hz(e,t){if(t==`index`||t==`locus`){if(Bh(e))return t;throw Error(e+` does not support `+t+` data type. Only positional channels do.`)}let n={x:[`band`,`band`,`linear`],y:[`band`,`band`,`linear`],size:[void 0,`point`,`linear`],opacity:[void 0,`point`,`linear`],fillOpacity:[void 0,`point`,`linear`],strokeOpacity:[void 0,`point`,`linear`],color:[`ordinal`,`ordinal`,`linear`],fill:[`ordinal`,`ordinal`,`linear`],stroke:[`ordinal`,`ordinal`,`linear`],strokeWidth:[void 0,void 0,`linear`],shape:[`ordinal`,`ordinal`,void 0],dx:[void 0,void 0,`null`],dy:[void 0,void 0,`null`],angle:[void 0,void 0,`linear`],sample:[`null`,void 0,void 0]},r=[`sample`].includes(e)?`null`:n[e]?n[e][[mz,pz,fz].indexOf(t)]:t==`quantitative`?`linear`:`ordinal`;if(r===void 0)throw Error(`Channel "`+e+`" is not compatible with "`+t+`" data type. Use of a proper scale may be needed.`);return r}function gz(e,t){Vh(t)&&e.type!==`ordinal`&&(e.range=[0,1]),t==`opacity`&&_m(e.type)&&e.clamp===void 0&&(e.clamp=!0)}function _z({channel:e,dataType:t,orderedMembers:n,isExplicitDomain:r,configScopes:i}){let a=n,o=a.map(e=>typeof e.view.getMarkType==`function`?e.view.getMarkType():void 0).filter(e=>!!e),s=$R(a.map(e=>e.channelDef.scale).filter(e=>e!==void 0),`scale`,[`domain`]);if(s===null||s.type==`null`)return{type:`null`};let c={...dz(i,{channel:e,dataType:t,isExplicitDomain:r,markTypes:o,hasDomainMid:s.domainMid!==void 0}),...s};if(c.type||=hz(e,t),typeof c.range==`string`){if(!az(c.range))throw Error(`Unknown named scale range "`+c.range+`". Supported names: shape, size, angle, heatmap, ramp, diverging.`);let t=oz(i,c.range);if(t===void 0)throw Error(`Named scale range "`+c.range+`" is not configured in config.range.`);qh(e)&&(typeof t==`string`||typeof t==`object`&&t&&!Array.isArray(t))?(c.scheme=t,delete c.range):c.range=t}if(e==`y`&&vm(c.type)&&c.reverse==null&&(c.reverse=!0),c.range&&c.scheme&&delete c.scheme,c.domainTransition===void 0&&(c.domainTransition=!a.some(e=>B(e.channelDef.scale?.domain))),Array.isArray(c.range)&&c.range.some(B)&&a.length>0){let e=a.find(e=>e.channelDef.scale?.range!==void 0)?.view;e&&(c.__rangeExprScope=e)}if(!(`zoom`in c)){let e=lz(i,t);e.zoom===void 0?[`index`,`locus`].includes(c.type)&&(c.zoom=!0):c.zoom=e.zoom}return gz(c,e),c}function vz(e){return e===`index`||e===`locus`}function yz(e,t){return vz(e)?Sz(t):t}function bz(e,t){return vz(e)?Cz(t):t}function xz(e,t){return t&&vz(e)?Sz(t):t}function Sz(e){return[e[0],e[1]+wz(e)]}function Cz(e){return[e[0],e[1]-wz(e)]}function wz(e){return e[1]>=e[0]?1:-1}function Tz(e,t){let n=e.findRuntimeForParam(t);if(!n)throw Error(`Selection domain parameter "${t}" was not found.`);return n}function Ez(e,t){if(e){if(!rg(e))throw Error(`Selection domain parameter "${t}" must be an interval selection.`);return e}}function Dz(e,t,n){let r=e.paramRuntime.findRuntimeForParam?Tz(e.paramRuntime,t):e.paramRuntime;return{runtime:r,selection:Ez(r.getValue?r.getValue(t):e.paramRuntime.findValue(t),t)}}function Oz(e,t,n,r){let i=[];return e.visit(e=>{let a=e.paramRuntime?.paramConfigs?.get(n);if(!a||!mg(a))return;let o=og(a.select);!cg(o)||!o.encodings?.includes(r)||e.paramRuntime.findRuntimeForParam(n)===t&&i.push({view:e,param:a})}),i}function kz(e,t,n,r){let i=new Set,a=[e.getLayoutAncestors?.(),e.getDataAncestors?.(),[e]];for(let e of a)for(let a of e??[]){if(!a||i.has(a))continue;i.add(a);let e=a.paramRuntime?.paramConfigs?.get(n);if(!e||!mg(e))continue;let o=og(e.select);if(!(!cg(o)||!o.encodings?.includes(r))&&a.paramRuntime.findRuntimeForParam?.(n)===t)return!0}return!1}function Az(e,t,n={}){if(!e||e.length!==2)return;let r=Number(e[0]),i=Number(e[1]);if(!Number.isFinite(r)||!Number.isFinite(i))return;let a=Math.min(r,i),o=Math.max(r,i);if(a=Math.max(t[0],a),o=Math.min(t[1],o),!(a>o)&&!(n.roundToIntegers&&(a=Math.ceil(a),o=Math.ceil(o),a=Math.max(t[0],a),o=Math.min(t[1],o),a>o)))return[a,o]}var jz=class e extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(t){if(t instanceof e&&t.type!=this.type)throw Error(`Cannot combine different types of domains: ${this.type} and ${t.type}`);for(let e of t)this.extend(e);return this}extendAllWithAccessor(e,t){for(let n of e)this.extend(t(n));return this}},Mz=class extends jz{constructor(){super(),this.type=`quantitative`}extend(e){return e==null||Number.isNaN(e)?this:(e=+e,this.length?e<this[0]?this[0]=e:e>this[1]&&(this[1]=e):(this.push(e),this.push(e)),this)}},Nz=class extends jz{constructor(){super(),this.type=`ordinal`,this.uniqueValues=new Set}extend(e){return e==null||Number.isNaN(e)||this.uniqueValues.has(e)||(this.uniqueValues.add(e),this.push(e)),this}},Pz=class extends Nz{constructor(){super(),this.type=`nominal`}},Fz=class extends jz{constructor(e){super();let t=0;for(let n=1;n<e.length;n++)t+=Math.sign(e[n]-e[n-1]);if(Math.abs(t)!=e.length-1)throw Error(`Piecewise domain must be strictly increasing or decreasing: `+JSON.stringify(e));e.forEach(e=>this.push(e))}extend(e){if(this.includes(e))return this;throw Error(`Piecewise domains are immutable and cannot be unioned!`)}},Iz={quantitative:Mz,index:Mz,locus:Mz,nominal:Pz,ordinal:Nz};function Lz(e,t){if(e==`quantitative`&&Rz(t)){let n=new Fz(t);return n.type=e,n}else if(Iz[e]){let n=new Iz[e];return n.type=e,t&&n.extendAll(t),n}throw Error(`Unknown type: `+e)}function Rz(e){return e&&e.length>0&&e.length!=2&&e.every(e=>typeof e==`number`)}var zz=class{#e;#t;#n;#r;#i;#a;#o;#s=void 0;#c=!0;#l=new Map;#u=new WeakMap;constructor({getActiveMembers:e,getAllMembers:t,getDataMembers:n,getType:r,getLocusExtent:i,fromComplexInterval:a}){this.#e=e,this.#t=t??e,this.#n=n??e,this.#r=r,this.#i=i,this.#a=a}get initialDomainSnapshot(){return this.#o}hasConfiguredDomain(e={}){return!!this.getConfiguredDomain(e)}hasSelectionConfiguredDomain(){return this.getSelectionConfiguredDomainBindingInfo(),!!this.#s}getSelectionConfiguredDomainBindingInfo(){return this.#s||!this.#c||this.getConfiguredDomain(),this.#s}getSelectionConfiguredDomainInfo(){let e=this.getSelectionConfiguredDomainBindingInfo();if(e)return{param:e.param,encoding:e.encoding}}invalidateConfiguredDomain(){this.#c=!0,this.#s=void 0,this.#l.clear()}getDefaultDomain(e=!1,t){let n=this.#r();return Zz(n,this.#i,e&&n!==`locus`?this.getDataDomain():void 0,t)}getConfiguredOrDefaultDomain(e=!1,t,n={}){return this.getConfiguredDomain(n)??this.getDefaultDomain(e,t)}getConfiguredDomain(e={}){let t=e.includeSelectionInitial??!0;if(!this.#c&&this.#l.has(t))return this.#l.get(t);let n=Bz(this.#e(),this.#a,t);return qz(this.#t(),n.selectionRef),this.#s=n.selectionRef,this.#l.set(t,n.domain),this.#c=!1,n.domain}getDataDomain(){return Xz(this.#n(),this.#r,e=>this.#d(e))}captureInitialDomain(e,t,n){if(!this.#o&&_m(e.type)){let t=n??e.domain();Tt(t)>0&&(this.#o=t)}return t?!1:(this.#o=n??e.domain(),!0)}#d(e){let t=this.#u.get(e);if(t)return t;let n=e.view.mark.encoders;if(!n)return[];let r=n[e.channel];if(!r)return[];let i=Ch(r);if(i.length===0)return[];let a=i.filter(fh).filter(e=>!e.channelDef.domainInert);return this.#u.set(e,a),a}};function Bz(e,t,n){let r=Array.from(e).filter(e=>e.contributesToDomain).filter(e=>e.channelDef.scale?.domain),i={domains:[],selectionRef:void 0,selectionRuntime:void 0,selectionDescription:void 0,hasLiteralDomain:!1};for(let e of r){let r=Vz(e,t,n);if(r.kind===`selection`){Hz(i,r);continue}Uz(i,r)}return Wz(i)}function Vz(e,t,n){let r=e.channelDef.scale.domain;return Yz(r)?{kind:`selection`,...Gz(e,r,t,n)}:B(r)?{kind:`literal`,domain:Kz(e.channelDef.type,e.view.paramRuntime.createExpression(r.expr)(),t)}:{kind:`literal`,domain:Kz(e.channelDef.type,r,t)}}function Hz(e,t){if(e.hasLiteralDomain)throw Error(`Cannot mix selection-driven and literal configured domains on a shared scale.`);if(e.selectionRef&&(e.selectionRef.runtime!==t.runtime||e.selectionRef.param!==t.param||e.selectionRef.encoding!==t.encoding))throw Error(`Conflicting selection domain references on a shared scale: `+e.selectionDescription+` vs `+t.description+`.`);e.selectionRuntime=t.runtime,e.selectionDescription=t.description,e.selectionRef={param:t.param,encoding:t.encoding,hasInitial:(e.selectionRef?.hasInitial??!1)||t.hasInitial,runtime:t.runtime},t.domain&&e.domains.push(t.domain)}function Uz(e,t){if(e.selectionRuntime)throw Error(`Cannot mix literal configured domains with selection-driven domains on a shared scale.`);e.hasLiteralDomain=!0,e.domains.push(t.domain)}function Wz(e){return e.domains.length>0?{domain:e.domains.reduce((e,t)=>e.extendAll(t)),selectionRef:e.selectionRef}:e.selectionRuntime?{domain:void 0,selectionRef:e.selectionRef}:{domain:void 0,selectionRef:void 0}}function Gz(e,t,n,r){let i=t.param,a=Jz(e.channel,t,i),o=Dz(e.view,i,a),s=t.initial!==void 0,c=o.selection?.intervals[a],l=i+`.`+a;return!c||c.length!==2?{domain:r&&t.initial?Kz(e.channelDef.type,t.initial,n):void 0,description:l,param:i,encoding:a,hasInitial:s,runtime:o.runtime}:{domain:Lz(e.channelDef.type,n(c)),description:l,param:i,encoding:a,hasInitial:s,runtime:o.runtime}}function Kz(e,t,n){let r=n(t);return Lz(e,e===`locus`&&pR(t)&&!mR(t)?r:yz(e,r))}function qz(e,t){if(!t||e.size<2||!Array.from(e).some(e=>kz(e.view,t.runtime,t.param,t.encoding)))return;let n=Array.from(new Set(Array.from(e).filter(e=>e.contributesToDomain).map(e=>e.view.getPathString?.()??e.view.name??`(unknown)`)));throw Error(`Selection domain reference "${t.param}.${t.encoding}" cannot use a shared ${t.encoding} scale when the same interval selection is defined in that shared view group (${n.join(`, `)}). This creates a feedback loop between brushing and the scale domain. Make the linked ${t.encoding} scale independent, for example with "resolve": { "scale": { "${t.encoding}": "independent" } } on the common ancestor.`)}function Jz(e,t,n){if(t.encoding)return t.encoding;let r=Kh(e);if(r===`x`||r===`y`)return r;throw Error(`Selection domain reference "${n}" on channel "${e}" requires an explicit "encoding" ("x" or "y").`)}function Yz(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&typeof e.param==`string`}function Xz(e,t,n){let r=t(),i=new Map;for(let t of e){if(!t.contributesToDomain)continue;let e=n(t);if(e.length===0)continue;let a=t.view.getCollector();for(let t of e){let e=gh(t,r),n=a??null,o=i.get(n);if(o||(o=new Map,i.set(n,o)),o.has(e))continue;let s;if(a)s=a.getDomain(e,r,t);else if(t.constant)s=Lz(r),s.extend(t({}));else continue;o.set(e,s)}}if(i.size===0)return;let a=Lz(r);for(let e of i.values())for(let t of e.values())a.extendAll(t);return a}function Zz(e,t,n,r){return e==`locus`?t(r):e==`index`?xz(e,n)??[]:n??[]}function Qz(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}function $z(e,t,n){return e*(t/e)**+n}var eB=e=>new Promise(t=>setTimeout(t,e));function tB(){return{canceled:!1}}function nB(e){let t=e.requestAnimationFrame||window.requestAnimationFrame,n=e.signal,r=e.cancelToken,i=()=>new Promise((i,a)=>{if(r?.canceled)return i();if(n?.aborted)return a(`aborted`);let o=performance.now(),s=o+(e.duration||1e3),c=typeof e.from==`number`?e.from:0,l=typeof e.to==`number`?e.to:1,u=e.easingFunction||(e=>e),d=e=>(e-o)/(s-o),f=e=>e*(l-c)+c,p=e=>Math.max(0,Math.min(1,e)),m=o=>{if(r?.canceled){i();return}n?.aborted?a(`aborted`):(e.onUpdate(f(u(p(d(o))))),o<s?t(m):(e.onUpdate(f(u(1))),i()))};t(m)});return e.delay?r?.canceled?Promise.resolve():n?.aborted?Promise.reject(`aborted`):eB(e.delay).then(i):i()}function rB(e,t,n,r,i={}){let a=i.onUnsupported??`throw`;switch(e.type){case`linear`:case`index`:case`locus`:return st(t,n,r);case`log`:return ct(t,n,r);case`pow`:case`sqrt`:return lt(t,n,r,e.exponent());case`symlog`:return ut(t,n,r,e.constant());default:if(a===`identity`)return t;throw Error(`Zooming is not implemented for: `+e.type)}}var iB=class{#e;#t;#n;#r;#i;#a;#o=null;constructor({getScale:e,getAnimator:t,getInitialDomainSnapshot:n,getResetDomain:r,fromComplexInterval:i,getGenomeExtent:a}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=a}getZoomExtent(){let e=this.#e(),t=e.props.zoom;return aB(e,t,this.#i,this.#a,this.#n)}isZoomable(){return this.isZoomingSupported()&&!!this.#e().props.zoom}isZoomingSupported(){let e=this.#e().type;return _m(e)&&!vm(e)}getDomainChangeAction(e,t){return Jl(t,e)?`none`:this.isZoomable()?`restore`:this.isZoomingSupported()?`animate`:`notify`}isZoomed(){return this.isZoomingSupported()&&!Jl(this.#r(),this.#e().domain())}zoom(e,t,n){if(!this.isZoomingSupported())return!1;let r=this.#e(),i=r.domain(),a=oB(r,i,e,t,n),o=this.getZoomExtent();return a=dt(a,o[0],o[1]),[0,1].some(e=>a[e]!=i[e])?(r.domain(a),!0):!1}async zoomTo(e,t=!1){if(xt(t)&&(t=t?700:0),!this.isZoomingSupported())throw Error(`Not a zoomable scale!`);let n=this.#e(),r=sB(n.type,e,this.#i),i=this.#t(),a=n.domain();if(t>0&&a.length==2){let e=a[1]-a[0],o=r[1]-r[0],s=a[0]+e/2,c=r[0]+o/2,l=a[0]==r[0],u=a[1]==r[1];this.#s();let d=tB();this.#o=d,await i.transition({duration:t,easingFunction:Qz,cancelToken:d,onUpdate:t=>{let r=$z(e,o,t),i=e==o?t:(e-r)/(e-o),d=i*c+(1-i)*s,f=[l?a[0]:d-r/2,u?a[1]:d+r/2];n.domain(f)}}),this.#o===d&&(this.#o=null),n.domain(r)}else this.#s(),n.domain(r),i?.requestRender()}#s(){this.#o&&=(this.#o.canceled=!0,null)}resetZoom(){if(!this.isZoomingSupported())throw Error(`Not a zoomable scale!`);let e=this.#e(),t=e.domain(),n=this.#r();return[0,1].some(e=>n[e]!=t[e])?(e.domain(n),!0):!1}getZoomLevel(){return this.isZoomable()?Tt(this.getZoomExtent())/Tt(this.#e().domain()):1}};function aB(e,t,n,r,i){return cB(t)&&k(t.extent)?sB(e.props.type,t.extent,n):t&&e.props.type==`locus`?r():i()}function oB(e,t,n,r,i){let a=[...t],o=e.invert(r);switch(e.props.reverse&&(i=-i),`align`in e&&(o+=e.align()),e.type){case`linear`:case`index`:case`locus`:a=it(a,i||0);break;case`log`:a=at(a,i||0);break;case`pow`:case`sqrt`:a=M(a,i||0,e.exponent());break;case`symlog`:if(i!==0)throw Error(`Panning is not implemented for: `+e.type);break;default:throw Error(`Zooming is not implemented for: `+e.type)}return rB(e,a,o,n)}function sB(e,t,n){let r=e===`locus`?n(t):t;return e===`locus`&&pR(t)&&!mR(t)?r:yz(e,r)}function cB(e){return Ze(e)}function lB(e){let t=e.view.getPathString(),n=e.channel??``;return t+`|`+n}function uB(e){return Array.from(e).sort((e,t)=>lB(e).localeCompare(lB(t)))}R(`index`,iR,[`continuous`]),R(`locus`,bR,[`continuous`]),R(`null`,CM,[]);var dB=class{#e=new Set;#t=new Set;#n;#r={domain:new Set,range:new Set};#i;#a;#o;#s;#c=!1;#l=[];#u=0;#d=[];#f=!1;#p=void 0;#m;#h=0;#g=0;#_=!1;constructor(e,t){this.channel=e,this.type=null,this.name=void 0,this.#m=t,this.#a=new zz({getActiveMembers:()=>this.#b(),getAllMembers:()=>this.#e,getDataMembers:()=>this.#b(this.#t),getType:()=>this.type,getLocusExtent:e=>this.#S(e),fromComplexInterval:this.fromComplexInterval.bind(this)}),this.#i=new XR({getParamRuntime:()=>this.#y.paramRuntime,onRangeChange:()=>this.#w(`range`),onDomainChange:()=>this.#w(`domain`),getGenomeStore:()=>this.#x.genomeStore}),this.#o=new iB({getScale:()=>this.getScale(),getAnimator:()=>this.#x.animator,getInitialDomainSnapshot:()=>this.#a.initialDomainSnapshot,getResetDomain:()=>this.#k(),fromComplexInterval:this.fromComplexInterval.bind(this),getGenomeExtent:()=>this.#S()})}get#v(){let e=this.#e.values().next().value;if(!e)throw Error(`ScaleResolution has no members!`);return e.view}get#y(){return this.#m??this.#v}#b(e=this.#e){let t=new Set;for(let n of e){let e=n.view;e.isConfiguredVisible()&&(!e.isDataInitialized()&&!n.channelDef?.scale?.domain||t.add(n))}return t}get#x(){return this.#y.context}get zoomExtent(){return(this.#i.scale&&_m(this.#i.scale.type)&&this.#o.getZoomExtent())??[-1/0,1/0]}#S(e){return ER(this.#C(e))}#C(e){if(this.type===`locus`)return this.#i.scale??this.#i.getLocusGenome(e)}addEventListener(e,t){this.#r[e].add(t)}removeEventListener(e,t){this.#r[e].delete(t)}#w(e){e===`domain`&&this.#u===0&&this.syncLinkedSelectionFromDomain();for(let t of this.#r[e].values())t({type:e,scaleResolution:this})}#T(e){this.#u+=1;try{e()}finally{--this.#u}}syncLinkedSelectionFromDomain(){let e=this.#a.getSelectionConfiguredDomainBindingInfo();if(!e||!this.isZoomable())return;let t=Ez(e.runtime.getValue(e.param),e.param);if(!t)return;let n=this.#E(this.getScale().domain());if(!n)return;let r=this.#E(this.#a.getDefaultDomain(!0)),i=r&&Jl(n,r)?null:n;fB(t.intervals[e.encoding]??null,i)||e.runtime.setValue(e.param,{...t,type:`interval`,intervals:{...t.intervals,[e.encoding]:i}})}#E(e){return Az(e,this.zoomExtent)}#D(){return this.#a.getSelectionConfiguredDomainBindingInfo()}#O(){return!this.#f}#k(e=!1,t){return this.#a.getConfiguredOrDefaultDomain(e,t,{includeSelectionInitial:this.#O()})}#A(){for(let e of this.#e)if(e.contributesToDomain&&e.channelDef.scale?.domain!==void 0)return!0;return!1}#j(e){let t=Ez(e.runtime.getValue(e.param),e.param);if(!t)return null;let n=t.intervals[e.encoding];return n&&n.length===2?n:null}#M(e,t){t?this.#f=!1:e&&(this.#f=!0)}#N(e){let t=pB(e),{channel:n,channelDef:r}=t,i=r.type==null&&this.type;if(n!=`sample`&&!r.type&&!Wh(n)&&!i)throw Error(`The "type" property must be defined in channel definition: "${n}": ${JSON.stringify(r)}. Must be one of: "quantitative", "ordinal", "nominal", "locus", "index"`);let a=n==`sample`?`nominal`:r.type,o=r?.scale?.name,s=r.scale?.type??(a===`index`||a===`locus`?a:void 0);if(s&&[`index`,`locus`].includes(s)&&!Bh(this.channel))throw Error(`Index and locus scales are only supported on positional channels (x/y). Channel "${this.channel}" resolves to scale type "${s}".`);if(o){if(this.name!==void 0&&o!=this.name)throw Error(`Shared scales have conflicting names: "${o}" vs. "${this.name}"!`);this.name=o}if(!i){if(!this.type)this.type=a;else if(a!==this.type&&!Wh(n))throw Error(`Can not use shared scale for different data types: ${this.type} vs. ${a}. Use "resolve: independent" for channel ${this.channel}`)}return this.#e.add(t),t.contributesToDomain&&this.#t.add(t),t}#P(){this.#_=!1,this.#U(),this.#G(),this.#R(),this.#z()}#F(){this.#g>0?this.#_=!0:this.#P()}static registerInBatch(e,t){let n=Array.from(e);for(let e of n)e.#g++;try{return t()}finally{for(let e of n)e.#g--,e.#g===0&&e.#_&&e.#P()}}registerMember(e){let t=this.#N(e);return this.#F(),()=>{let e=this.#e.delete(t);return e&&(this.#t.delete(t),this.#F()),e&&this.#e.size===0}}dispose(){this.#I(),this.#L(),this.#r.domain.clear(),this.#r.range.clear(),this.#i.dispose()}#I(){for(let e of this.#l)e();this.#l=[],this.#p=void 0}#L(){for(let e of this.#d)e();this.#d=[]}#R(){if(this.#I(),this.#e.size===0)return;let e=this.#D();e&&(this.#p=this.#j(e),this.#l.push(e.runtime.subscribe(e.param,()=>{let t=this.#p,n=this.#j(e);this.#M(t,n),this.#p=n,this.#G(),this.reconfigureDomain()})))}#z(){if(this.#L(),this.#e.size===0)return;let e=()=>{this.#G(),this.reconfigureDomain()};for(let t of this.#e){if(!t.contributesToDomain)continue;let n=t.channelDef.scale?.domain;if(!B(n))continue;let r=t.view.paramRuntime.createExpression(n.expr).subscribe(e);this.#d.push(r)}}#B(){for(let e of this.#e)if(e.view.hasRendered())return!0;return!1}registerCollectorSubscriptions(e,t){let n=new Set;for(let e of t)e.channelDef.domainInert||n.add(gh(e,this.type));if(n.size===0)return()=>void 0;let r=()=>{this.reconfigureDomain()},i=[];for(let t of n)i.push(e.subscribeDomainChanges(t,r));return()=>{for(let e of i)e()}}isDomainDefinedExplicitly(){return this.#A()}isDomainInitialized(){let e=this.#i.scale;if(!e)return!1;let t=e.domain();return _m(e.type)?t.length>2||t.length==2&&(t[0]!==0||t[1]!==0):t.length>0}#V(){return GN(this,`mergedScaleProps`,()=>{let e=_z({channel:this.channel,dataType:this.type,orderedMembers:this.#W(),isExplicitDomain:this.isDomainDefinedExplicitly(),configScopes:this.#y.getConfigScopes()});return this.#K(e),e})}#H(){KN(this,`mergedScaleProps`)}#U(){this.#n=void 0}#W(){return this.#n||=uB(this.#e),this.#n}#G(){this.#a.invalidateConfiguredDomain(),this.#H()}#K(e){let t=this.#D();if(!t||e===null||e.type===`null`)return;let n=_m(e.type)&&!vm(e.type)&&!!e.zoom;if(t.hasInitial&&!n)throw Error(`Selection domain reference "${t.param}.${t.encoding}" cannot use "initial" with a non-zoomable ${this.channel} scale. Enable zoom on the linked scale or remove "initial".`)}getAssemblyRequirement(){let e=this.#V();return e===null||e.type===`null`||e.type!==`locus`?{assembly:void 0,needsDefaultAssembly:!1}:{assembly:e.assembly,needsDefaultAssembly:e.assembly===void 0}}getResolvedScaleType(){let e=this.#V();if(!(e===null||e.type===`null`))return e.type}#q(e=!1){let t=this.#V();if(t===null||t.type==`null`)return{type:`null`};let n={...t};this.#h+=1;let r;try{r=this.#k(e,n.type===`locus`?n.assembly:void 0)}finally{--this.#h}if(vm(n.type)){let t=this.isDomainDefinedExplicitly(),i=this.#J(t);if(r!=null){if(t&&i.domain().length>0&&!Jl(i.domain(),r))return this.#s=void 0,this.#q(e);i.addAll(r);let a=new Set(r),o=i.domain().filter(e=>a.has(e));n.domain=o.length>0?o:new Pz}else{let e=i.domain();n.domain=e.length>0?e:new Pz}n.domainIndexer=i}else r&&r.length>0&&(n.domain=r);return!n.domain&&n.domainMid!==void 0&&(n.domain=[n.domainMin??0,n.domainMax??1]),n}#J(e){return(!this.#s||this.#c!==e)&&(this.#s=ON(),this.#c=e),this.#s}reconfigure(){this.#T(()=>{this.#G();let e=this.#Y(!0);e&&(this.#X(e,(e,t)=>this.#i.reconfigureScale(t)),this.#Z(e))})}reconfigureDomain(){this.#T(()=>{let e=this.#Y(!0,!0);if(!e)return;let{domainConfig:t,targetDomain:n}=e,r=n!=null&&Jl(n,e.scale.domain());n!=null&&!r&&this.#X(e,e=>{e.domain(n),t.applyOrdinalUnknown&&e.unknown(t.ordinalUnknown)}),this.#Z(e),this.syncLinkedSelectionFromDomain()})}#Y(e,t=!1){let n=this.#i.scale;if(!n||n.type==`null`)return;let r={scale:n,props:this.#q(e),previousDomain:n.domain(),domainWasInitialized:this.isDomainInitialized(),hasSelectionConfiguredDomain:this.#a.hasSelectionConfiguredDomain()};if(t){let e=BR(n,r.props);return{...r,domainConfig:e,targetDomain:e.domain}}return r}#X(e,t){this.#i.withDomainNotificationsSuppressed(()=>{t(e.scale,e.props)})}#Z(e){let{scale:t,previousDomain:n,domainWasInitialized:r,hasSelectionConfiguredDomain:i}=e,a=i?this.#a.getDefaultDomain(!0):void 0;if(this.#a.captureInitialDomain(t,r,a)){this.#w(`domain`);return}if(t.props.domainTransition===!1){this.#w(`domain`);return}let o=t.domain(),s=this.#o.getDomainChangeAction(n,o);s===`restore`?i?this.#w(`domain`):this.#i.withDomainNotificationsSuppressed(()=>{t.domain(n)}):s===`animate`?i?this.#w(`domain`):this.#B()?(this.#i.withDomainNotificationsSuppressed(()=>{t.domain(n)}),this.zoomTo(o,500)):this.#w(`domain`):s===`notify`&&this.#w(`domain`)}get scale(){if(this.#i.scale)return this.#i.scale;throw Error(`ScaleResolution.scale accessed before initialization. Call initializeScale().`)}getScale(){if(this.#h>0)throw Error(`Scale resolution for channel "${this.channel}" cannot read its own scale while its domain is being resolved.`);return this.#i.scale??this.initializeScale()}initializeScale(){if(this.#i.scale)return this.#i.scale;let e=this.#q();return this.#i.createScale(e)}getDomain(){if(this.#h>0)throw Error(`Scale resolution for channel "${this.channel}" cannot read its own domain while its domain is being resolved.`);return this.getScale().domain()}getDataDomain(){return this.#a.getDataDomain()}getComplexDomain(){return TR(this.#C(),bz(this.type,this.getDomain()))}getLinkedSelectionDomainInfo(){let e=this.#D();if(!e)return;let t=this.#y.getLayoutAncestors().at(-1),n=t?Oz(t,e.runtime,e.param,e.encoding).some(e=>e.param.persist!==!1):!1;return{param:e.param,encoding:e.encoding,persist:n}}isZoomed(){return this.#o.isZoomed()}isZoomable(){let e=this.#V();return e===null||e.type===`null`?!1:_m(e.type)&&!vm(e.type)&&!!e.zoom}zoom(e,t,n){return this.#o.zoom(e,t,n)}async zoomTo(e,t=!1){return this.#o.zoomTo(e,t)}resetZoom(){return this.#o.resetZoom()}getZoomLevel(){return this.#o.getZoomLevel()}getAxisLength(){if(this.channel!==`x`&&this.channel!==`y`)throw Error(`Axis length is only defined for x and y channels!`);let e=Array.from(this.#e).map(e=>e.view.coords?.[this.channel===`x`?`width`:`height`]).filter(e=>e>0);return e.length?e.reduce((e,t)=>Math.min(e,t),1e4):0}invertToComplex(e){let t=this.getScale();if(`invert`in t){let n=t.invert(e);return this.toComplex(n)}else throw Error(`The scale does not support inverting!`)}toComplex(e){return SR(this.#C(),e)}fromComplex(e){return CR(this.#C(),e)}fromComplexInterval(e){return this.type==`locus`?wR(this.#C(),e):e}};function fB(e,t){return e===t?!0:!e||!t?!1:e.length===t.length&&Jl(e,t)}function pB(e){let t=e.channelDef.scale,n=t?.assembly;if(!t||!n||typeof n!=`object`||!(`url`in n))return e;let r=cF(e.view.getBaseUrl(),n.url);return r===n.url?e:{...e,channelDef:{...e.channelDef,scale:{...t,assembly:{...n,url:r}}}}}function mB(...e){for(let t of e)if(t!==void 0)return t}var hB=class{#e=new Set;constructor(e){this.channel=e}get scaleResolution(){return this.#e.values().next().value?.view.getScaleResolution(this.channel)}#t(e){let{view:t}=e,n=t.getScaleResolution(this.channel);if(!n)throw Error(`Cannot find a scale resolution!`);if(this.scaleResolution&&n!==this.scaleResolution)throw Error(`Shared axes must have a shared scale! Channel: ${this.channel}, existing views: [${Array.from(this.#e).map(e=>e.view.getPathString()).join(`, `)}], new view: ${t.getPathString()}.`);this.#e.add(e),KN(this,`axisProps`)}registerMember(e){return this.#t(e),()=>this.removeMember(e)&&this.#e.size===0}removeMember(e){let t=this.#e.delete(e);return t&&KN(this,`axisProps`),t}getAxisProps(){return GN(this,`axisProps`,()=>{let e=uB(this.#e).map(e=>{let t=e.view.mark.encoding[e.channel];return`axis`in t&&t.axis});return e.length>0&&e.some(e=>e===null)?null:$R(e.filter(e=>e!==void 0),`axis`,[`title`])})}getTitle(){let e=uB(this.#e).map(e=>{let t=Mh(e.view,e.channel);if(!Dh(t))return{member:e,axisTitle:`axis`in t?t.axis?.title:void 0,explicitTitle:mB(`axis`in t?t.axis?.title:void 0,t.title),implicitTitle:mB(Oh(t)?t.field:void 0,Ph(t)?t.expr:void 0)}}),t=e.map(e=>e.axisTitle).find(e=>e!==void 0);if(t!==void 0)return t;let n=e.filter(t=>{if(Wh(t.member.channel)&&!t.explicitTitle){let n=Kh(t.member.channel);return e.find(e=>e.member.view==t.member.view&&e.member.channel==n)?.explicitTitle===void 0}return!0}),r=new Set(n.map(e=>mB(e.explicitTitle,e.implicitTitle)).filter(F));return r.size?[...r].join(`, `):null}},gB=e=>{if(Ah(e))return e;if(Ih(e)){let t=e.condition;if(!Array.isArray(t)&&Ah(t))return t}},_B=(e,t,n)=>{let r=e;for(;(r.getConfiguredOrDefaultResolution(n,t)==`forced`||r.dataParent&&[`shared`,`excluded`,`forced`].includes(r.dataParent.getConfiguredOrDefaultResolution(n,t)))&&r.getConfiguredOrDefaultResolution(n,t)!=`excluded`;)r=r.dataParent;return r},vB=(e,t,n)=>{if(!t.resolutions.scale[n]){let r=new dB(n,t);t.resolutions.scale[n]=r;let i=t=>{e.context.glHelper?.createRangeTexture(t.scaleResolution,!0)};r.addEventListener(`range`,i),r.addEventListener(`domain`,i),e.registerDisposer(()=>{r.removeEventListener(`range`,i),r.removeEventListener(`domain`,i)})}return t.resolutions.scale[n]},yB=(e,t,n,r)=>{let i=gB(r);if(!i)return;let a=Kh(i.resolutionChannel??n);if(Yh(a)&&!(t==`axis`&&!Vh(a)))return{view:_B(e,t,a),channel:n,channelDef:i,targetChannel:a}},bB=(e,t)=>{for(let[n,r]of Object.entries(e.mark.encoding))!r||Array.isArray(r)||t(n,r)},xB=e=>{let t=[];return bB(e,(n,r)=>{let i=yB(e,`axis`,n,r);i&&Vh(i.channel)&&t.push(i)}),t},SB=e=>{let t=new Map;return bB(e,(n,r)=>{let i=yB(e,`scale`,n,r);if(!i)return;let a=vB(e,i.view,i.targetChannel),o=t.get(a);o?o.push(i):t.set(a,[i])}),t},CB=(e,t)=>{for(let{view:n,channel:r,channelDef:i,targetChannel:a}of t){if(!Vh(r)||!Bh(a))continue;n.resolutions.axis[a]||(n.resolutions.axis[a]=new hB(a));let t=n.resolutions.axis[a],o=t.registerMember({view:e,channel:r,channelDef:i});e.registerDisposer(()=>{o()&&n.resolutions.axis[a]===t&&delete n.resolutions.axis[a]})}},wB=(e,t)=>{dB.registerInBatch(t.keys(),()=>{for(let[n,r]of t)for(let{view:t,channel:i,channelDef:a,targetChannel:o}of r){let r=o,s=!e.isDomainInert(),c=n.registerMember({view:e,channel:i,channelDef:a,contributesToDomain:s});e.registerDisposer(()=>{c()&&t.resolutions.scale[r]===n&&(n.dispose(),delete t.resolutions.scale[r])})}})},TB=(e,t)=>{if(!t){TB(e,`scale`),TB(e,`axis`);return}t==`axis`?CB(e,xB(e)):wB(e,SB(e))},EB={point:wP,rect:_P,rule:AP,tick:AP,link:HP,text:JP},DB=class extends YL{#e;#t=!1;#n=null;constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.spec=e;let o=EB[this.getMarkType()];if(o)this.mark=new o(this);else throw Error(`No such mark: ${this.getMarkType()}`);this.#e=this.paramRuntime.allocateSetter(`zoomLevel`,1),this.resolve();for(let e of[`x`,`y`]){let t=this.getScaleResolution(e);if(t){let e=()=>{this.#e(Math.sqrt(this.getZoomLevel()))};t.addEventListener(`domain`,e),this.registerDisposer(()=>t.removeEventListener(`domain`,e))}}this.registerDisposer(this._addBroadcastHandler(`subtreeDataReady`,()=>{for(let e of Lh)this.getScaleResolution(e)?.syncLinkedSelectionFromDomain()})),this.needsAxes={x:!0,y:!0},this.#r()}#r(){for(let[e,t]of this.paramRuntime.paramConfigs){if(!(`select`in t))continue;let n=og(t.select),r=n.on,i=n.clear;if(sg(n)){let t=0,a=t=>{this.paramRuntime.setValue(e,t)},o=()=>{let e=this.context.getCurrentHover();return e?.mark?.unitView===this?e.datum:null},s=r.filter?VL(r.filter):()=>!0;if(this.addInteractionListener([`mouseover`,`pointerover`].includes(r.type)?`mousemove`:r.type,r=>{if(!s(r.proxiedMouseEvent))return;let i=o(),c=i?i[oh]:0,l;n.toggle?r.mouseEvent.shiftKey?i&&(l=tg(this.paramRuntime.getValue(e),{toggle:[i]})):l=$h(i?[i]:null):c!=t&&(t=c,l=Qh(i)),l!==void 0&&a(l)}),i){let e=i.filter?VL(i.filter):()=>!0;this.addInteractionListener(i.type,r=>{e(r.proxiedMouseEvent)&&(t=0,a(n.toggle?$h():Qh(null)))})}}}}render(e,t,n={}){super.render(e,t,n),this.isConfiguredVisible()&&(e.pushView(this,t),e.renderMark(this.mark,n),e.popView(this))}getMarkType(){return typeof this.spec.mark==`object`?this.spec.mark.type:this.spec.mark}getEncoding(){let e=super.getEncoding(),t=this.mark.getSupportedChannels();for(let n of Object.keys(e))n!==`key`&&(t.includes(n)||delete e[n]);return e}resolve(e){if(!e){this.resolve(`scale`),this.resolve(`axis`);return}TB(this,e)}dispose(){super.dispose(),this.mark.dispose()}getDataAccessor(e){let t=this.mark.encoders;if(t)return t[e]?wh(t[e]):void 0}getSearchAccessors(){return this.#n||=(tR(this.getEncoding())??[]).map(e=>z(e)),this.#n}getFacetAccessor(e){return this.getDataAccessor(`sample`)||super.getFacetAccessor(this)}getCollector(){return this.flowHandle?.collector}registerDomainSubscriptions(){if(this.#t||this.isDomainInert())return;let e=this.getCollector();if(!e)return;let t=this.mark.encoders;if(!t)throw Error(`Encoders are not initialized!`);this.#t=!0;let n=qm(e),r=new Map;for(let e of Object.values(t)){if(!e)continue;let t=Ch(e);if(t.length!==0)for(let e of t){if(!fh(e))continue;let t=this.getScaleResolution(e.scaleChannel);if(!t)throw Error(`Missing scale resolution for channel: `+e.scaleChannel);if(e.channelDef.domainInert||OB(e,t,n))continue;let i=r.get(t);i||(i=new Set,r.set(t,i)),i.add(e)}}for(let[t,n]of r){if(n.size===0)continue;let r=t.registerCollectorSubscriptions(e,n);this.registerDisposer(r)}}getZoomLevel(){return Lh.map(e=>this.getScaleResolution(e)?.getZoomLevel()??1).reduce((e,t)=>e*t,1)}propagateInteraction(e){this.handleInteraction(e,!0),e.target=this,!e.stopped&&this.handleInteraction(e,!1)}getDefaultResolution(e,t){return e==`x`?`shared`:`independent`}};function OB(e,t,n){return!t.isDomainDefinedExplicitly()&&n.has(Kh(e.scaleChannel))}var kB=class extends Error{constructor(e,t){super(t),this.kind=e}};async function AB(e,t={}){let n;try{n=await fetch(e,{signal:t.signal})}catch(e){throw new kB(`network`,String(e))}if(!n.ok)throw new kB(`http`,String(n.status)+` `+n.statusText);try{return await n.json()}catch(e){throw new kB(`json`,String(e))}}function jB(e){let t=new Set;e.visit(e=>{for(let n of Object.values(e.resolutions.scale)){let e=n.name;if(e&&t.has(e))throw Error(`The same scale name "${e}" occurs in multiple scale resolutions!`);t.add(e)}})}function MB(e){for(let t of Lh){let n=e.getScaleResolution(t);n&&!n.name&&n.isZoomable()&&(n.name=`${t}_at_root`)}}function NB(e,t=()=>!0){return Promise.allSettled(e).then(e=>{if(t())for(let t of e)`value`in t?t.value.finalizeGraphicsInitialization():`reason`in t&&console.error(t.reason)})}async function PB(e,t,n){let r=e.import;if(!(`url`in r))throw Error(`Not an url import: `+JSON.stringify(r));let i=sF(t,r.url),a;try{a=await AB(i)}catch(e){throw Error(`Could not load imported view spec: ${i}. Reason: ${e.message}`,{cause:e})}if(n.isViewSpec(a))return a.baseUrl=sF(lF(r.url),a.baseUrl),a;throw Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(e)}`)}function FB(e){let t=e.getSize(),n=e.getPadding(),r=(e,t)=>e.grow>0?void 0:e.px+t;return{width:r(t.width,n.horizontalTotal),height:r(t.height,n.verticalTotal)}}function*IB(e,t=[]){for(let[n,r]of e.entries())if(r instanceof Map)for(let e of IB(r,[...t,n]))yield e;else yield[[...t,n],r]}var LB=2147483647,RB=BB([LB]);function zB(e){for(let t=1;t<e.length;t++)if(e[t]<e[t-1])return!1;return!0}function BB(e){let t=0;for(let n=0,r=e.length;n<r;n++)e[n]>t&&(t=e[n]);return Math.floor(Math.log2(t)/4)+1}function VB(e){let t=BB(e),n=Array.from({length:e.length},(e,t)=>t);if(zB(e))return n;let r=Array(e.length),i=Array(16);for(let a=0;a<t;a++){i.fill(0);let t=a*4,o=16**a,s=r=>{let i=e[n[r]];return a>=RB?i>LB?Math.floor(i/o)%16:0:i>>t&15};for(let t=0;t<e.length;t++)i[s(t)]++;for(let e=1;e<16;e++)i[e]+=i[e-1];for(let t=e.length-1;t>=0;t--)r[--i[s(t)]]=n[t];[n,r]=[r,n]}return n}var HB=`|`,UB=`\\`,WB=class{#e=null;#t=null;#n=!1;invalidate(){this.#e=null,this.#t=null,this.#n=!1}findDatum(e,t,n){if(!e||e.length===0)return;let r=e.join(`, `);if(e.length!==t.length)throw Error(`Key tuple length ${t.length} does not match fields [${r}]`);(!this.#e||!this.#i(e))&&this.#r(e,n);let i=this.#t,a;if(this.#n){let e=``;for(let n=0;n<t.length;n++){n>0&&(e+=HB);let r=i[n],a=GB(t[n],r);e+=qB(a)}a=e}else{let e=i[0];a=GB(t[0],e)}return this.#e.get(a)}#r(e,t){let n=e.map(e=>z(e)),r=new Map,i=e.join(`, `),a=e.length!==1;if(a)for(let a of t)for(let t=0,o=a.length;t<o;t++){let o=a[t],s=``;for(let t=0;t<n.length;t++){t>0&&(s+=HB);let r=e[t],i=GB(n[t](o),r);s+=qB(i)}if(r.get(s)!==void 0){let e=n.map(e=>e(o));throw Error(`Duplicate key detected for fields [${i}]: ${JSON.stringify(e)}`)}r.set(s,o)}else{let a=n[0],o=e[0];for(let e of t)for(let t=0,n=e.length;t<n;t++){let n=e[t],s=GB(a(n),o);if(r.get(s)!==void 0)throw Error(`Duplicate key detected for fields [${i}]: ${JSON.stringify(s)}`);r.set(s,n)}}this.#e=r,this.#t=[...e],this.#n=a}#i(e){if(!this.#t||this.#t.length!==e.length)return!1;for(let t=0;t<e.length;t++)if(this.#t[t]!==e[t])return!1;return!0}};function GB(e,t){if(e===void 0)throw Error(`Key field "${t}" is undefined. Ensure all key fields are present in the data.`);if(e===null)throw Error(`Key field "${t}" is null. Ensure all key fields are present in the data.`);if(typeof e!=`string`&&typeof e!=`number`&&typeof e!=`boolean`)throw Error(`Key field "${t}" must be a scalar value (string, number, or boolean).`);return e}function KB(e){if(!(e.indexOf(UB)!==-1||e.indexOf(HB)!==-1))return e;let t=``;for(let n=0;n<e.length;n++){let r=e[n];(r===UB||r===HB)&&(t+=UB),t+=r}return t}function qB(e){return typeof e==`string`?KB(e):String(e)}var JB=class extends Km{#e=[];#t=z(oh);#n=[];#r=new WB;#i;#a;#o=new YB;get behavior(){return 4}get label(){return`collect`}constructor(e){super(),this.params=e??{type:`collect`},this.observers=new Set,this.facetBatches=new mn([],JSON.stringify),this.#a=ZB(this.params?.sort),this.#s()}#s(){this.#e=[],this.#n=[],this.#r.invalidate(),this.facetBatches.clear(),this.facetBatches.set(void 0,this.#e)}reset(){super.reset(),this.#s()}handle(e){this.#e.push(e)}beginBatch(e){this.#r.invalidate(),Ym(e)&&(this.#e=[],this.facetBatches.set(Yl(e.facetId),this.#e))}complete(){if(this.#e=[],this.params.groupby?.length){if(this.facetBatches.size>1)throw Error(`TODO: Support faceted data!`);let e=this.facetBatches.get(void 0),t=this.params.groupby.map(e=>z(e)),n=t.length>1?bn(e,...t):XB(e,t[0]);this.facetBatches.clear();for(let[e,t]of IB(n))this.facetBatches.set(e,t)}if(this.#a)for(let e of this.facetBatches.values())e.sort(this.#a);this.#d(),this.#c(),super.complete(),this.#u();for(let e of this.observers)e(this)}observe(e){return this.observers.add(e),()=>{this.observers.delete(e)}}#c(){if(this.children.length)for(let[e,t]of this.facetBatches.entries()){if(e){let t={type:`facet`,facetId:e};for(let e of this.children)e.beginBatch(t)}for(let e=0,n=t.length;e<n;e++)this._propagate(t[e])}}repropagate(){for(let e of this.children)e.reset();this.#c();for(let e of this.children)e.complete();this.#u()}getDomain(e,t,n){return this.#o.getDomain(e,()=>{let e=Lz(t);if(n.constant)e.extend(n({}));else if(this.completed)for(let t of this.facetBatches.values())for(let r=0,i=t.length;r<i;r++)e.extend(n(t[r]));return e})}subscribeDomainChanges(e,t){return this.#o.subscribe(e,t)}getData(){switch(this.#l(),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{let e=this.facetBatches;return{[Symbol.iterator]:function*(){for(let t of e.values())yield*t}}}}}visitData(e){this.#l();for(let t of this.facetBatches.values())for(let n=0;n<t.length;n++)e(t[n])}getItemCount(){let e=0;for(let t of this.facetBatches.values())e+=t.length;return e}#l(){if(!this.completed)throw Error(`Data propagation is not completed! No data are available.`)}#u(){this.#o.hasCachedDomains()&&this.#o.clear(),this.#o.notify()}#d(){this.#i=[];let e=this.facetBatches.values().next().value?.[0];if(e==null||!(`_uniqueId`in e))return;let t=0,n=[],r=this.#t;for(let[e,i]of this.facetBatches){this.#i.push({start:t,stop:t+i.length,facetId:e}),t+=i.length;for(let e=0,t=i.length;e<t;e++)n.push(r(i[e]))}this.#n=VB(n)}findDatumByUniqueId(e){if(!this.#n.length)return;let t=an(e=>e.start).right,n=this.#t,r=an(e=>n(i(e))).left,i=e=>{let n=t(this.#i,e),r=this.#i[n-1];if(!(!r||e>=r.stop))return this.facetBatches.get(r.facetId)[e-r.start]},a=r(this.#n,e);if(a>=0){let t=i(this.#n[a]);if(t&&n(t)===e)return t}}findDatumByKey(e,t){return this.#l(),this.#r.findDatum(e,t,this.facetBatches.values())}},YB=class{#e=new Map;#t=new Map;hasCachedDomains(){return this.#e.size>0}clear(){this.#e.clear()}getDomain(e,t){let n=this.#e.get(e);if(n)return n;{let n=t();return this.#e.set(e,n),n}}subscribe(e,t){let n=this.#t.get(e);return n||(n=new Set,this.#t.set(e,n)),n.add(t),()=>{let n=this.#t.get(e);n&&(n.delete(t),n.size===0&&this.#t.delete(e))}}notify(){if(this.#t.size===0)return;let e=new Set;for(let t of this.#t.values())for(let n of t)e.add(n);for(let t of e)t()}};function XB(e,t){let n=new Map;for(let r=0,i=e.length;r<i;r++){let i=e[r],a=t(i),o=n.get(a);o||(o=[],n.set(a,o)),o.push(i)}return n}function ZB(e){if(e?.field){let t=Yl(e.field);if(t.length==1&&!t[0].includes(`.`)){let n=Yl(e.order)[0]??`ascending`,r=JSON.stringify(t[0]);return Function(`a`,`b`,`return a[${r}] ${n===`ascending`?`-`:`+`} b[${r}];`)}return mt(e.field,e.order)}}var QB=class extends ah{get behavior(){return 1}constructor(e){super(e),this.params=e,this.startAccessor=z(e.start),this.endAccessor=z(e.end),this.chromAccessor=e.chrom?z(e.chrom):e=>void 0,this.weightAccessor=e.weight?z(e.weight):e=>1,this.as={coverage:e.as??`coverage`,start:e.asStart??e.start,end:e.asEnd??e.end,chrom:e.asChrom??e.chrom},this.createSegment=Function(`start`,`end`,`coverage`,`chrom`,`return {`+Object.entries(this.as).filter(([e,t])=>t).map(([e,t])=>`${JSON.stringify(t)}: ${e}`).join(`, `)+`};`),this.ends=new dF}reset(){super.reset(),this.initialize()}initialize(){let e=this.as.coverage,t=this.as.end,n=this.as.chrom,r=this.startAccessor,i=this.endAccessor,a=this.chromAccessor,o=this.weightAccessor,s,c,l,u=0,d=NaN,f=this.ends;f.clear();let p=e=>{this._propagate(e),s=null},m=(n,r,i)=>{if(n==r)return;let a=!1;s&&(s[e]===i?(s[t]=r,a=!0):s[e]!=0&&p(s)),a||(s=this.createSegment(n,r,i,l))},h=()=>{let e;for(;(e=f.peekValue())!==void 0;)m(d,e,u),d=e,u-=f.pop();d=NaN,s&&p(s)};this.handle=e=>{let t=r(e),s;for(;(s=f.peekValue())!==void 0&&s<t;)m(d,s,u),d=s,u-=f.pop();if(n){let t=a(e);t!==c&&(h(),l=t,c=l)}isNaN(d)||m(d,t,u),d=t;let p=o(e);u+=p,f.push(p,i(e))},this.complete=()=>{h(),super.complete()},this.beginBatch=e=>{h(),c=null,super.beginBatch(e)}}};function $B(e,t,n=e=>+e,r=0,i=e.length){let a=new dF,o=i-r,s;for(s=0;s<t&&s<o;s++)a.push(s,n(e[r+s]));for(;s<o;s++){let t=n(e[r+s]);t>=a.peekValue()&&(a.push(s,t),a.pop())}let c=[],l;for(;(l=a.pop())!==void 0;)c.push(e[r+l]);return c.reverse()}var eV=class{constructor(e,t=-1/0,n=1/0){this.maxSize=e,this.lowerLimit=t,this.upperLimit=n;let r=this.maxSize*2+1;this.lowerLimits=new Float64Array(r),this.upperLimits=new Float64Array(r),this.lowerChildren=new Int32Array(r),this.upperChildren=new Int32Array(r),this.reset()}reset(){this.lowerLimits.fill(0),this.upperLimits.fill(0),this.lowerChildren.fill(0),this.upperChildren.fill(0),this.n=1,this.lowerLimits[0]=this.lowerLimit,this.upperLimits[0]=this.upperLimit}_findSlot(e,t,n=0){if(e>=this.lowerLimits[n]&&t<=this.upperLimits[n]){let r=this.lowerChildren[n];if(r){let i=this._findSlot(e,t,r);return i>=0?i:this._findSlot(e,t,this.upperChildren[n])}else return n}else return-1}reserve(e,t){if(t-e<=0)throw Error(`Cannot reserve an empty or negative-size slot!`);if(this.n+1>this.lowerLimits.length)return!1;let n=this._findSlot(e,t);if(n<0)return!1;let r=this.n++,i=this.n++;return this.lowerLimits[r]=this.lowerLimits[n],this.upperLimits[r]=e,this.lowerLimits[i]=t,this.upperLimits[i]=this.upperLimits[n],this.lowerChildren[n]=r,this.upperChildren[n]=i,!0}},tV=class extends ah{get behavior(){return 4}get domainSensitiveScaleChannels(){return[this.channel]}constructor(e,t){if(super(e),this.params=e,this._data=[],this.channel=e.channel??`x`,![`x`,`y`].includes(this.channel))throw Error(`Invalid channel: `+this.channel);this.startPosAccessor=z(this.params.pos),this.endPosAccessor=z(this.params.pos2??this.params.pos),this.startPosBisector=an(this.startPosAccessor),this.endPosBisector=an(this.endPosAccessor),this.scoreAccessor=z(this.params.score),this.widthAccessor=z(this.params.width),this.laneAccessor=this.params.lane?z(this.params.lane):e=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=t.getScaleResolution(this.channel);let n=()=>this._filterAndPropagate();this.schedule=()=>t.context.animator.requestTransition(n);let r=()=>this.schedule();this.resolution.addEventListener(`domain`,r),this.registerDisposer(()=>this.resolution.removeEventListener(`domain`,r));let i=t._addBroadcastHandler(`layoutComputed`,()=>this.schedule());this.registerDisposer(i)}complete(){let e=this.startPosAccessor;this._data.sort((t,n)=>e(t)-e(n));for(let e of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(e,new eV(200));this.schedule(),super.complete()}_filterAndPropagate(){super.reset();let e=this.resolution.getScale(),t=this.resolution.getAxisLength();if(!t)return;for(let e of this.reservationMaps.values())e.reset();let n=e.domain(),r=$B(this._data,70,this.scoreAccessor,this.endPosBisector.left(this._data,n[0]),this.startPosBisector.right(this._data,n[1]));for(let n of r){let r=e(this.startPosAccessor(n))*t,i=e(this.endPosAccessor(n))*t,a=i-r,o=this.widthAccessor(n)+this.padding*2,s=(r+i)/2,c=Math.max(0,(a-o)/2);if(c>0){let e=Math.max(0,o/2-s);s+=Math.min(e,c);let n=Math.max(0,o/2+s-t);s-=Math.min(n,c)}if(this.reservationMaps.get(this.laneAccessor(n)).reserve(s-o/2,s+o/2))if(this.params.asMidpoint){let r=Object.assign({},n);r[this.params.asMidpoint]=e.invert(s/t),this._propagate(r)}else this._propagate(n)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}},nV=class extends ah{constructor(e,t){super(e,t),this.params=e,this.predicate=void 0}initialize(){let e;if(rV(this.params))e=this.params.expr;else if(iV(this.params)){let t=this.paramRuntime.findValue(this.params.param);if(!t)throw Error(`Cannot initialize filter transform. Selection parameter "${this.params.param}" not found!`);e=ng(this.params,t)}else throw Error(`Invalid filter params: `+JSON.stringify(this.params));this.predicate=this.paramRuntime.watchExpression(e,()=>this.repropagate(),{scopeOwned:!1,registerDisposer:e=>this.registerDisposer(e)})}handle(e){this.predicate(e)&&this._propagate(e)}};function rV(e){return`expr`in e}function iV(e){return`param`in e}var aV=class extends ah{get behavior(){return 1}constructor(e){super(e),this.params=e;let t=e.index;if(e.fields){let n=Yl(e.fields).map(e=>z(e)),r=Yl(e.as||e.fields);if(n.length!==r.length)throw Error(`Lengths of "fields" (${n.length}), and "as" (${r.length}) do not match!`);this.handle=e=>{let i=n.map((t,n)=>t(e)??[]),a=i[0].length;for(let o=0;o<a;o++){let a=Object.assign({},e);for(let e=0;e<n.length;e++)a[r[e]]=o<i[e].length?i[e][o]:null;t&&(a[t]=o),this._propagate(a)}}}else this.handle=e=>{for(let n=0;n<e.length;n++){let r=Object.assign({},e[n]);t&&(r[t]=n),this._propagate(r)}}}},oV=48;function*sV(e,t=`,`){let n=t.charCodeAt(0),r=0;for(let t=0;t<e.length;t++){let i=e.charCodeAt(t);i==n?(yield r,r=0):r=r*10+i-oV}yield r}var cV=class extends ah{get behavior(){return 1}constructor(e){super(e);let t=z(e.exons??`exons`),n=z(e.start??`start`),[r,i]=e.as||[`exonStart`,`exonEnd`];this.handle=e=>{let a=n(e),o=a,s=!0,c=t(e);for(let t of sV(c)){if(s)o=a+t;else{a=o+t;let n=Object.assign({},e);n[r]=o,n[i]=a,this._propagate(n)}s=!s}}}},lV=class extends ah{get behavior(){return 1}constructor(e){super(e);let t=Yl(e.field).map(e=>z(e)),n=Yl(e.separator),r=Yl(e.as||e.field);if(t.length!==n.length||t.length!==r.length)throw Error(`Lengths of "separator" (${n.length}), "fields" (${t.length}), and "as" (${r.length}) do not match!`);this.handle=e=>{if(t.some(t=>!t(e)))return;let i=t.map((t,r)=>t(e).split(n[r]));uV(i,e);let a=i[0].length;for(let n=0;n<a;n++){let a=Object.assign({},e);for(let e=0;e<t.length;e++)a[r[e]]=i[e][n];this._propagate(a)}}}};function uV(e,t){let n=e.map(e=>e.length);if(!n.every(e=>e==n[0]))throw Error(`Mismatching number of elements in the fields to be split: `+JSON.stringify(t))}var dV=class extends ah{get behavior(){return 2}constructor(e,t){super(e,t),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=this.paramRuntime.watchExpression(this.params.expr,()=>this.repropagate(),{scopeOwned:!1,registerDisposer:e=>this.registerDisposer(e)})}handle(e){e[this.as]=this.fn(e),this._propagate(e)}},fV=class extends ah{get behavior(){return 2}constructor(e,t){e={channel:`x`,...e},super(e),this.params=e;let n=e.channel;if(![`x`,`y`].includes(n))throw Error(`Invalid channel: `+n);let r=t.getScaleResolution(n).getScale(),i=`genome`in r?r.genome():void 0;if(!i)throw Error(`LinearizeGenomicCoordinate transform requires a locus scale!`);let a=z(e.chrom),o=Yl(e.pos).map(e=>z(e)),s=Yl(e.as);if(o.length!=s.length)throw Error(`The number of "pos" and "as" elements must be equal!`);let c=Yl(e.offset),l;if(c.length==0)l=Array(o.length).fill(0);else if(c.length==1)l=Array(o.length).fill(c[0]);else if(c.length==o.length)l=c;else throw Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);let u=Function(`datum`,`chromOffset`,`posAccessors`,s.map((e,t)=>`datum[${JSON.stringify(e)}] = chromOffset + +posAccessors[${t}](datum) - ${l[t]};`).join(`
799
+ `)),d,f=0,p=e=>{if(e!==d){if(f=i.cumulativeChromPositions.get(e),f===void 0)return;d=e}return f};this.handle=e=>{let t=a(e),n=p(t);if(n===void 0)throw Error(`Unknown chromosome/contig "${t}" in datum: ${JSON.stringify(e)}`);u(e,n,o),this._propagate(e)}}},pV=class extends ah{get behavior(){return 2}constructor(e,t){super(e,t),this.params=e;let n=z(e.field),r=e.as,i=0;if(B(e.fontSize)){let n=t.paramRuntime.watchExpression(e.fontSize.expr,()=>{i=n(),this.repropagate()},{scopeOwned:!1,registerDisposer:e=>this.registerDisposer(e)});i=n()}else i=e.fontSize;this.handle=e=>{let t=n(e);t===void 0?e[r]=0:e[r]=this.font.metrics.measureWidth(t,i),this._propagate(e)}}initialize(){let e=this.paramRuntimeProvider.context.fontManager;this.font=this.params.font?e.getFont(this.params.font,this.params.fontStyle,this.params.fontWeight):e.getDefaultFont()}},mV=65536,hV=class extends ah{get behavior(){return 2}constructor(e){super(e),this.params=e}reset(){super.reset(),this.initialize()}initialize(){let e=this.params,t=e.as||`lane`,n=P(e.spacing)?e.spacing:1,r=z(e.start),i=z(e.end);if(!e.preference!=!e.preferredOrder)throw Error(`Must specify both "preference" and "preferredOrder"`);if(e.preference){let a=new Float64Array(mV),o=z(e.preference),s=e.preferredOrder,c=1/0;this.handle=e=>{let l=r(e);l<c&&a.fill(-1/0),c=l;let u=s.indexOf(o(e)),d;if(u>=0&&a[u]<l)d=u;else{let t=r(e);for(d=0;d<a.length&&!(a[d]<t);d++);if(d>=a.length)throw Error(`Out of lanes!`)}a[d]=i(e)+n,e[t]=d,this._propagate(e)}}else{let e=new dF,a=new dF,o=-1/0,s=0;this.handle=c=>{let l=r(c);for(;e.length&&(e.peekValue()<=l||l<o);){let t=e.pop();a.push(t,t)}o=l;let u=a.pop();u===void 0&&(u=s++),c[t]=u,this._propagate(c),e.push(u,i(c)+n)}}}},gV=class extends ah{get behavior(){return 1}constructor(e){if(super(e),this.params=e,e.as&&e.as.length!=e.fields.length)throw Error(`"fields" and "as" have unequal lengths!`);let t=e.fields.map(e=>z(e)),n=e.as?e.as:t.map(Ve);this.handle=e=>{let r={};for(let i=0;i<t.length;i++)r[n[i]]=t[i](e);this._propagate(r)}}},_V=class extends ah{get behavior(){return 2}constructor(e){super(e),this.params=e;let t=new RegExp(e.regex),n=typeof e.as==`string`?[e.as]:e.as,r=z(e.field);this.handle=i=>{let a=r(i);if(F(a)){let r=a.match(t);if(r){if(r.length-1!=n.length)throw Error(`The number of RegEx groups and the length of "as" do not match!`);for(let e=0;e<n.length;e++)i[n[e]]=r[e+1]}else if(e.skipInvalidInput)for(let e=0;e<n.length;e++)i[n[e]]=void 0;else throw Error(`"${a}" does not match the given regex: ${t.toString()}`)}else if(!e.skipInvalidInput)throw Error(`Trying to match a non-string field. Encountered type: ${typeof a}, field content: "${a}".`);this._propagate(i)}}},vV=class extends ah{get behavior(){return 1}constructor(e){super(e),this.params=e;let t=Yl(e.columnRegex).map(e=>new RegExp(e));for(let e of t)if(RegExp(`|`+e.source).exec(``).length-1!=1)throw Error(`Regex ${e.toString()} must have exactly one capturing group!`);let n=Yl(e.asValue);if(t.length!=n.length)throw Error(`Lengths of "columnRegex" and "as" are not equal!`);let r=e.skipRegex?new RegExp(e.skipRegex):void 0,i=e.asKey||`sample`,a,o,s,c=e=>{let c=Object.keys(e);for(let e of t)if(!c.some(t=>e.test(t)))throw Error(`No columns matching the regex ${e.toString()} found in the data!`);let l=new Map;for(let[e,n]of t.entries())for(let t of c){let r=n.exec(t)?.[1];if(r!==void 0){let n=l.get(r);n||(n=[],l.set(r,n)),n[e]=t}}a=[...l.entries()],o=c.filter(e=>!t.some(t=>t.test(e))&&!(r&&r.test(e)));let u=[...o.map(e=>JSON.stringify(e)+`: datum[`+JSON.stringify(e)+`]`),JSON.stringify(i)+`: sampleId`,...n.map((e,t)=>JSON.stringify(e)+`: datum[attrs[${t}]]`)];s=Function(`datum`,`sampleId`,`attrs`,`return {
799
800
  `+u.join(`,
800
801
  `)+`
801
- };`)},l=e=>{a||c(e);for(let t=0;t<a.length;t++){let[n,r]=a[t],i=s(e,n,r);this._propagate(i)}},u=e=>{c(e),l(e),this.handle=l};this.handle=u,this.beginBatch=e=>{Xm(e)&&(this.handle=u),super.beginBatch(e)}}},ZB=class extends sh{get behavior(){return 2}constructor(e){super(e),this.params=e,this.buffer=[]}reset(){super.reset(),this.buffer=[]}handle(e){this.buffer.push(e)}complete(){let e=this.params,t=e.as||[`y0`,`y1`],n=e.sort?gt(e.sort.field,e.sort.order):void 0,r=e.field?L(e.field):()=>1,i=e.groupby.map(e=>L(e)),a=Cn(this.buffer,e=>i.map(t=>t(e)).join()).map(e=>e[1]),o=e=>!0;if(e.baseField){let t=L(e.baseField);o=e=>t(e)!==null}let s,c;switch(e.offset){case`normalize`:s=(e,t)=>e/t,c=(e,t)=>Un(e,t);break;case`center`:s=(e,t)=>e-t/2,c=(e,t)=>Un(e,t);break;case`information`:{let t=Math.log2(e.cardinality??4);s=(e,t)=>e/t,c=(e,n)=>{let r=Un(e,e=>+!o(e)),i=Un(e,n),a=i-r,s=0;for(let t=0;t<e.length;t++){let r=e[t];if(o(r)){let e=n(r)/a;s-=e*Math.log2(e)}}return a/(t-(s+0))*(a/i)}}break;default:s=(e,t)=>e,c=(e,t)=>1}for(let e of a){n&&e.sort(n);let i=c(e,r),a=0;for(let n of e){let e=a+r(n);o(n)&&(n[t[0]]=s(a,i),n[t[1]]=s(e,i),this._propagate(n),a=e)}}super.complete()}},QB=class extends sh{get behavior(){return 1}constructor(e){super(e),this.params=e;let t=L(e.field??`sequence`),[n,r]=e.as??[`pos`,`sequence`];this.handle=e=>{let i=Object.assign({},e,{[r]:``,[n]:0}),a=t(e);for(let e=0;e<a.length;e++){let t=Object.assign({},i);t[n]=e,t[r]=a.charAt(e),this._propagate(t)}}}},$B={count:e=>e.length,valid:pn,sum:Un,min:Fn,max:Pn,mean:Bn,q1:(e,t)=>Rn(e,.25,t),median:Vn,q3:(e,t)=>Rn(e,.75,t),variance:mn},eV={aggregate:class extends sh{get behavior(){return 1}constructor(e){if(super(e),this.params=e,this.buffer=[],this.ops=[],this.as=[],e.fields){if(e.fields.length!=e.ops.length)throw Error(`Fields and ops must have the same length!`);if(e.as&&e.as.length!=e.ops.length)throw Error(`If "as" is defined, "fields" and "as" must have the same length!`);e.fields.forEach((t,n)=>{let r=L(t),i=$B[e.ops[n]];this.ops.push(e=>i(e,r)),this.as.push(e.as?e.as[n]:`${e.ops[n]}_${e.fields[n]}`)})}else this.ops.push(e=>$B.count(e)),this.as.push(`count`)}reset(){super.reset(),this.buffer=[]}#e(){let e=this.params?.groupby;if(e?.length>0){let t=e.map(e=>L(e)),n=Sn(this.buffer,...t);for(let[t,r]of mB(n)){let n={};for(let r=0;r<e.length;r++)n[e[r]]=t[r];this.ops.forEach((e,t)=>{n[this.as[t]]=e(r)}),this._propagate(n)}}else{let e={};this.ops.forEach((t,n)=>{e[this.as[n]]=t(this.buffer)}),this._propagate(e)}}handle(e){this.buffer.push(e)}beginBatch(e){this.buffer.length>0&&(this.#e(),this.buffer=[]),super.beginBatch(e)}complete(){this.buffer.length>0&&this.#e(),super.complete()}},collect:EB,coverage:AB,filterScoredLabels:NB,filter:PB,flatten:LB,flattenCompressedExons:BB,flattenDelimited:VB,flattenSequence:QB,formula:UB,identifier:dh,linearizeGenomicCoordinate:WB,measureText:GB,pileup:qB,project:JB,regexExtract:YB,regexFold:XB,sample:$N,stack:ZB};function tV(e,t){let n=eV[e.type];if(n)return new n(e,t);throw Error(`Unknown transform: `+e.type)}var nV=new Set([`csv`,`tsv`,`dsv`]),rV=new Set([`gz`,`bgz`,`bgzf`]);function iV(e,t=[]){if(!_V(e)&&!hV(e))return;let n={...e.format};if(n.type??=hV(e)&&sV(t),n.parse===void 0&&gV(n.type)&&(n.parse=`auto`),!n.type)throw Error(`Format for the data source was not defined and it could not be inferred: `+JSON.stringify(e));return n}function aV(e){let t={...e};return(pV(t)||mV(t))&&t.columns&&!(`header`in t)&&(t.header=t.columns),t}function oV(e){return To(e)?.responseType??`text`}function sV(e){if(Array.isArray(e)&&(e=e[0]),e){let t=lV(e).split(`/`).pop()?.toLowerCase();if(!t)return;let n=t.split(`.`);for(;n.length>1&&rV.has(n.at(-1));)n.pop();let r=n.at(-1);if(r&&To(r))return r}}function cV(e){let t=lV(e).split(`/`).pop()?.toLowerCase();if(!t)return!1;let n=t.split(`.`).at(-1);return!!n&&rV.has(n)}function lV(e){return e.replace(/[?#].*$/,``)}var uV=e=>typeof e==`object`?fV:dV,dV=e=>({data:e}),fV=e=>e;function pV(e){return e.type==`csv`||e.type==`tsv`}function mV(e){return e.type==`dsv`}function hV(e){return`url`in e}function gV(e){return nV.has(e)}function _V(e){return`values`in e}var vV=class extends Qm{constructor(e,t){if(super(t),this.params=e,typeof e.values==`string`&&!e?.format?.type)throw Error(`Data format type (csv, dsv, ...) must be specified if a string is provided!`)}get label(){return`inlineSource`}isTrivial(){let e=this.params.values,t=Array.isArray(e)?e[0]:e;return!!(t&&Object.keys(t).length==0&&t.constructor===Object)}updateDynamicData(e){this.#e(e)}loadSynchronously(){this.#e(this.params.values)}#e(e){let t=[],n=e=>e;if(Array.isArray(e))e.length>0&&(t=e,n=uV(e[0]));else if(typeof e==`object`)t=[e];else if(typeof e==`string`)t=Eo(e,aV(iV(this.params)));else throw Error(`"values" in data configuration is not an array, object, or a string!`);this.reset(),this.beginBatch({type:`file`});for(let e of t)this._propagate(n(e));this.complete()}async load(){this.loadSynchronously()}},yV=new Set([`application/gzip`,`application/x-gzip`]),bV=new TextDecoder,xV=class extends Qm{constructor(e,t){super(t),this.params=yg(t.paramRuntime,e,()=>this.load(),e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),this.baseUrl=t?.getBaseUrl()}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}get label(){return`urlSource`}async#e(e){let t=zP(this.baseUrl,e.urlsFromFile),n={type:e.type??`tsv`},r=await fetch(t);if(!r.ok)throw Error(`Cannot load "${t}": ${r.status} ${r.statusText}`);return Eo(await OV(r,t,oV(n.type)),aV(n)).map(e=>typeof e==`string`?e:e.url).map(e=>zP(t,e))}async load(){let e=mg(this.params.url),t=typeof e==`object`&&`urlsFromFile`in e?await this.#e(e):(Array.isArray(e)?e:[e]).map(e=>zP(this.baseUrl,e)),n=iV(this.params,t),r=oV(n.type);if(t.length===0||!t[0]){this.reset(),this.complete();return}let i=async e=>{try{let t=await fetch(e);if(!t.ok)throw Error(`${t.status} ${t.statusText}`);return await OV(t,e,r)}catch(t){throw Error(`Could not load data: ${e}. Reason: ${t.message}`,{cause:t})}},a=async(e,t)=>{try{let r=Eo(e,aV(n)),i=r instanceof Promise?await r:r;this.beginBatch({type:`file`,url:t});for(let e of i)this._propagate(e)}catch(e){throw console.warn(e),Error(`Cannot parse: ${t}: ${e.message}`,{cause:e})}};this.setLoadingStatus(`loading`),this.reset();try{await Promise.all(t.map(e=>i(e).then(a))),this.setLoadingStatus(`complete`)}catch(e){this.setLoadingStatus(`error`,e.message)}this.complete()}};function SV(e){return`url`in e}function CV(e){return e.length>=10&&e[0]==31&&e[1]==139&&e[2]==8&&(e[3]&224)==0}function wV(e){return e?yV.has(e.split(`;`)[0].trim().toLowerCase()):!1}function TV(e){return e?e.toLowerCase().split(`,`).some(e=>e.trim()==`gzip`):!1}function EV(e){return new Uint8Array(e).buffer}async function DV(e){if(typeof DecompressionStream!=`function`)throw Error(`Gzip-compressed URL data requires DecompressionStream support.`);let t=new Response(EV(e)).body;if(!t)throw Error(`Cannot create a readable stream for gzip decompression.`);let n=t.pipeThrough(new DecompressionStream(`gzip`));return new Uint8Array(await new Response(n).arrayBuffer())}async function OV(e,t,n){if(!(cV(t)||wV(e.headers.get(`content-type`))||TV(e.headers.get(`content-encoding`))))return kV(e,n);let r=new Uint8Array(await e.arrayBuffer());return AV(CV(r)?await DV(r):r,n)}function kV(e,t){return typeof e[t]==`function`?e[t]():e.text()}function AV(e,t){return t==`arrayBuffer`?EV(e):bV.decode(e)}function jV(e){return`sequence`in e}var MV=class extends Qm{constructor(e,t){if(super(t),this.sequence=yg(t.paramRuntime,e.sequence,()=>this.loadSynchronously(),e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!(`start`in this.sequence))throw Error(`'start' is missing from sequence parameters!`);if(!(`stop`in this.sequence))throw Error(`'stop' is missing from sequence parameters!`)}get label(){return`sequenceSource`}loadSynchronously(){let e=mg(this.sequence.as)??`data`,t=mg(this.sequence.start)??0,n=mg(this.sequence.step)??1,r=mg(this.sequence.stop);this.reset(),this.beginBatch({type:`file`});for(let i=t;i<r;i+=n)this._propagate({[e]:i});this.complete()}async load(){this.loadSynchronously()}};function NV(e,t){if(_V(e))return new vV(e,t);if(SV(e))return new xV(e,t);if(jV(e))return new MV(e,t);if(PV(e))return qm(e.lazy,t);throw Error(`Cannot figure out the data source type: `+JSON.stringify(e))}function PV(e){return`lazy`in e}function FV(e){let t=IV(e).filter(e=>typeof e==`string`),n=Function(`source`,`return { `+t.map(e=>JSON.stringify(e)).map(e=>`${e}: source[${e}]`).join(`,
802
- `)+` };`);return n.properties=t,n}function IV(e){let t=[];do t=t.concat(Object.keys(e)),e=Object.getPrototypeOf(e);while(e&&e!==Object.prototype);return Array.from(new Set(t))}var LV=class extends sh{get behavior(){return 1}#e;#t=e=>e;constructor(){super({type:`clone`});let e=e=>{let t=IV(e);(!this.#e||!Xl(t,this.#e))&&(this.#e=t,this.#t=FV(e));let n=this.#t;this.handle=e=>this._propagate(n(e)),this.handle(e)};this.handle=e,this.beginBatch=t=>{Xm(t)&&(this.handle=e),super.beginBatch(t)}}};function RV(e){return`name`in e}var zV=class extends Qm{#e;constructor(e,t,n){super(t),this.provider=n,this.params=e}get identifier(){return this.params.name}get label(){return`namedSource`}updateDynamicData(e){this.#e=e,this.loadSynchronously()}loadSynchronously(){let e=this.#e??this.provider(this.params.name)??[],t=e=>e;if(Array.isArray(e))e.length>0&&(t=uV(e[0]));else throw Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:`file`});for(let n of e)this._propagate(t(n));this.complete()}async load(){this.loadSynchronously()}},BV=class{#e;#t;loadingStatusRegistry;constructor(){this.#e=new Set,this.#t=new Set,this.loadingStatusRegistry=new iT}get dataSources(){return[...this.#e]}get collectors(){return[...this.#t]}replaceDataSources(e){this.#e=new Set(e)}addDataSource(e){this.#e.add(e)}removeDataSource(e){e.disposeSubtree(),this.#e.delete(e)}addCollector(e){this.#t.add(e)}removeCollector(e){e.parent&&e.parent.removeChild(e),e.disposeSubtree(),e.observers.clear(),this.#t.delete(e)}pruneCollectorBranch(e){let t=e.parent;for(t&&t.removeChild(e),e.disposeSubtree();t&&t.children.length===0;){let e=t;t=e.parent,t?(t.removeChild(e),e.dispose()):e instanceof Qm?this.removeDataSource(e):e.dispose()}}findNamedDataSource(e){let t;for(let n of this.#e.values())if(n instanceof zV&&e==n.identifier){if(t&&t!==n)throw Error(`Found multiple instances of named data: ${e}. Data flow optimization is broken (it's a bug).`);t=n}if(t)return{dataSource:t}}};function VV(e,t){let n=new Map,r=[];for(let t of e)n.set(t,{ref:t,children:[]});for(let e of n.values()){let i=n.get(t(e.ref));i?i.children.push(e):r.push(e)}return r}function HV(e,t,n){let r=t.preOrder?.(e);if(r)return r;for(let r of n(e)){let e=HV(r,t,n);if(e===`stop`)return e}return t.postOrder?.(e)}function UV(e,t){return HV(e,t,e=>e.children)}function WV(e,t,n,r){let i=[],a=[],o,s=t??new BV,c=[],l=r??(()=>!0);function u(e,t=()=>void 0){if(!o)throw t()||Error(`Cannot append data flow node, no parent exist!`);return o.addChild(e),o=e,i.push(e),e}function d(e,t){return u(e,()=>Error(`Cannot append a transform because no (inherited) data are available! ${t?JSON.stringify(t):``}`))}function f(e,t){for(let n of e){let e;try{e=tV(n,t)}catch(e){throw console.warn(e),Error(`Cannot initialize "${n.type}" transform: ${e}`,{cause:e})}e.behavior&2&&d(new LV),d(e)}}function p(){return i.findLastIndex(e=>e instanceof dh)>i.findLastIndex(e=>e instanceof Qm)}let m=e=>{if(!l(e)){let t=e.flowHandle?.node;if(t){t!==o&&(o=t,i.push(t));return}if(e.spec.data||e.spec.transform||e instanceof aB)throw Error(`Cannot reuse missing flow nodes for `+e.getPathString());return}if(e.spec.data){let t=e.flowHandle?.dataSource;t&&t.view===e&&!t.identifier&&s.removeDataSource(t);let n=RV(e.spec.data)?new zV(e.spec.data,e,e.context.getNamedDataFromProvider):NV(e.spec.data,e);o=n,i.push(n),s.addDataSource(n),e.flowHandle??={},e.flowHandle.dataSource=n}if(e.spec.transform&&f(e.spec.transform,e),e instanceof aB){if(!o)throw Error(`A unit view (${e.getPathString()}) has no (inherited) data source`);let t=KV(e);if(t){c.push(t.rewrite);for(let e of t.transforms)d(e)}e.mark.isPickingParticipant()&&!p()&&(d(new LV),d(new dh({type:`identifier`})));let n=new EB({type:`collect`,groupby:e.getFacetFields(),sort:qV(e,t?.rewrittenEncoding)});u(n);let r=e.flowHandle?.collector;r&&s.removeCollector(r),s.addCollector(n),e.flowHandle??={},e.flowHandle.collector=n}o&&(e.flowHandle??={},e.flowHandle.node=o)},h=VV(GV(e,n),e=>e.dataParent);for(let e of h)UV(e,{preOrder:e=>{a.push({view:e.ref,nodeStackDepth:i.length}),m(e.ref)},postOrder:()=>{let{nodeStackDepth:e}=a.pop();i.length=e,o=i.at(-1)}});return c.forEach(e=>e()),s}function GV(e,t){if(!t)return e.getDescendants();let n=[];return e.visit(e=>{if(!t(e))return wL;n.push(e)}),n}function KV(e){let t=[],n={},r=e.mark.encoding,i=e.getEncoding(),a=[];for(let[e,t]of Object.entries(r)){let n=e;Jh(n)!==n&&!(n in i)||Uh(n)&&!Array.isArray(t)&&Fh(t)&&a.push({channel:n,chromPosDef:t})}let o=Sn(a,e=>Jh(e.channel),e=>e.chromPosDef.chrom);for(let[a,s]of o.entries())for(let[o,c]of s.entries()){let s=[],l=[],u=[];for(let{channel:t,chromPosDef:a}of c){let o=e=>e.replace(/[^A-Za-z0-9_]/g,``),c=[`_linearized_`,o(a.chrom),`_`,o(a.pos)].join(``),d={...e.spec.encoding?.[t]??i[t]??r[t]??{},field:c};delete d.chrom,delete d.pos,!d.type&&a.type&&(d.type=a.type),n[t]=d,s.push(a.pos),u.push(a.offset??0),l.push(c)}t.push(new LV),t.push(new WB({type:`linearizeGenomicCoordinate`,channel:a,chrom:o,pos:s,offset:u,as:l},e))}return t.length?{transforms:t,rewrittenEncoding:n,rewrite:()=>{e.spec.encoding={...e.spec.encoding,...n},wN(e.mark,`encoding`)}}:void 0}function qV(e,t){let n={...e.getEncoding(),...t}.x;if(Mh(n)&&e.getScaleResolution(`x`)?.isZoomable()){if(Ah(n))return`buildIndex`in n&&n.buildIndex?{field:n.field}:null;if(!jh(n)&&Ih(n))throw Error(`A zoomable x channel must be mapped to a field.`)}}function JV(e,t=void 0){if(e.parent!==t)return!1;for(let t of e.children)if(!JV(t,e))return!1;return!0}function YV(e,t=!1){if(e.behavior&4&&(t=!0),e instanceof LV)if(t)t=!1;else{let n=e.children[0];e.excise(),n&&YV(n,t);return}e.behavior&1&&(t=!1);for(let n=0,r=e.children.length;n<r;n++)YV(e.children[n],t||r>1)}function XV(e){let t=e.dataSources,n=new Map;for(let e of t)e.identifier&&!n.has(e.identifier)&&n.set(e.identifier,e);let r=new Set,i=new Map;for(let e of t)if(e.identifier){let t=n.get(e.identifier);t&&(t!==e&&t.adoptChildrenOf(e),r.add(t),i.set(e,t))}else r.add(e),i.set(e,e);return e.replaceDataSources(r),i}function ZV(e){if(YV(e),!JV(e))throw Error(`Encountered a bug! There's a problem in the data flow structure.`)}function QV(e){let t=XV(e);for(let t of e.dataSources)ZV(t);return t}var $V=new WeakMap,eH=new WeakMap;function tH(e,t){let n=$V.get(e);if(n){if(!t?.queueReload)return n;let r=eH.get(e);if(r)return r;let i=n.catch(()=>{}).then(()=>tH(e)).finally(()=>{eH.delete(e)});return eH.set(e,i),i}let r=Promise.resolve().then(()=>e.load()).finally(()=>{$V.delete(e)});return $V.set(e,r),r}function nH(e,t){for(let n of e.getDescendants()){let e=n.flowHandle;if(!e)continue;let r=e.dataSource;r&&(e.dataSource=t.get(r)??r)}}function rH(e,t,n,r){let i=r??(()=>!0),a=sH(e,n).filter(i);if(a.length===0)return{dataFlow:t,unitViews:[],dataSources:new Set,graphicsPromises:[]};let o=new Set(a);for(let e of a)e._setDataInitializationState(`pending`);let s;try{s=WV(e,t,n,e=>o.has(e)),nH(e,QV(s))}catch(e){for(let e of a)e._setDataInitializationState(`none`);throw e}let c=iH(a);for(let e of c)e.visit(e=>e.initializeOnce());let l=a.filter(e=>e instanceof aB),u=[],d=!!e.context.glHelper;for(let e of l){let t=e.mark;t.initializeEncoders(),e.registerDomainSubscriptions(),d&&u.push(t.initializeGraphics().then(()=>t)),e.registerDisposer(e.flowHandle.collector.observe(n=>{if(t.initializeData(),d)try{t.updateGraphicsData()}catch(t){throw t.view=e,t}e.context.animator.requestRender()}))}for(let e of a)e._setDataInitializationState(`ready`);return{dataFlow:s,unitViews:l,dataSources:c,graphicsPromises:u}}function iH(e,t){let n=Array.isArray(e)?e:sH(e,t),r=new Set;for(let e of n){if(t&&!t(e))continue;let n=e;for(;n&&!n.flowHandle?.dataSource;)n=n.dataParent;n?.flowHandle?.dataSource&&r.add(n.flowHandle.dataSource)}return r}function aH(e,t){let n=new Set;return e.visit(e=>{if(t&&!t(e))return wL;if(e.flowHandle?.dataSource)return n.add(e.flowHandle.dataSource),wL}),n}function oH(e,t,n,r){return t||=aH(e,n),Promise.all(Array.from(t).map(e=>tH(e,r))).then(t=>(cH(e),t))}function sH(e,t){let n=[];return t?(e.visit(e=>{if(!t(e))return wL;n.push(e)}),n):e.getDescendants()}function cH(e){let t={type:`subtreeDataReady`,payload:{subtreeRoot:e}};e.visit(e=>e.handleBroadcast(t))}async function lH(e,t,n,r){let i=e=>e.isConfiguredVisible(),{dataFlow:a,graphicsPromises:o}=rH(e,t,i);return r(a),await n.waitUntilReady(),await oH(e,new Set(a.dataSources),i),await dB(o),a}async function uH(e,t,n){let r=e=>e.isConfiguredVisible(),i=dH(e,r).filter(e=>e.getDataInitializationState()===`none`);if(i.length===0)return t;let a=new Set(i),o=e=>a.has(e),s=new Set,c=[];for(let e of i){if(e.spec.data){c.push(e);continue}let t=pH(e);t?s.add(t):c.push(e)}let{dataFlow:l,graphicsPromises:u}=rH(e,t,r,o);await n.waitUntilReady();for(let e of s)e.repropagate();if(c.length){let e=fH(c);await Promise.all(Array.from(e.entries()).map(([e,t])=>oH(e,t,void 0,{queueReload:!0})))}return await dB(u),l}function dH(e,t){let n=[];return e.visit(e=>{if(!t(e))return wL;n.push(e)}),n}function fH(e){let t=new Map;for(let n of e){let e=n;for(;e&&!e.flowHandle?.dataSource;)e=e.dataParent;if(!e?.flowHandle?.dataSource){if(n.spec.data)throw Error(`No data source found for view `+n.getPathString());continue}let r=t.get(e);r||(r=new Set,t.set(e,r)),r.add(e.flowHandle.dataSource)}return t}function pH(e){let t=e.dataParent;for(;t;){let e=t.flowHandle?.collector;if(e)return e.completed?e:void 0;t=t.dataParent}}var mH=class{constructor(e){this._renderCallback=e,this._renderRequested=!1,this._warn=!1,this.transitions=[]}requestTransition(e){this.cancelTransition(e),this.transitions.push(e),this.requestRender()}cancelTransition(e){let t=this.transitions.indexOf(e);t>=0&&this.transitions.splice(t,1)}requestRender(){this._renderRequested?this._warn&&console.warn(`Render already requested!`):(this._renderRequested=!0,window.requestAnimationFrame(e=>{this._renderRequested=!1;let t=this.transitions;this.transitions=[];let n;for(;n=t.shift();)n(e);this._renderCallback(e)}))}transition(e){return Pz({requestAnimationFrame:e=>this.requestTransition(e),...e})}};function hH(e,t,n,r,i){let a=0,o=!0,s=structuredClone(i),c=s;function l(e,t,n,r){return t+(e-t)*2**(-n/r)}function u(i){if(o)return;let d=i-a;a=i;for(let e of Object.keys(c))s[e]=l(s[e],c[e],d,n);t(s);let f=-1/0;for(let e of Object.keys(c))f=Math.max(f,Math.abs(c[e]-s[e]));f<r?(s=c,t(s),o=!0,f!=0&&e.requestRender()):e.requestTransition(e=>u(e))}function d(e){c=e,o&&(o=!1,a=+document.timeline.currentTime,u(a))}return d.stop=()=>{o=!0},d}var gH=class{constructor(e){this.genomes=new Map,this.#e=new Map,this.#t=new Map,this.#n=new Map,this.#r=0,this.#i=void 0,this.baseUrl=e}#e;#t;#n;#r;#i;async initialize(e){let{name:t,...n}=e;this.configureGenomes(new Map([[t,n]]),t),await this.ensureAssembly(t)}configureGenomes(e,t){this.genomes.clear(),this.#t.clear(),this.#n.clear(),this.#r=0,this.#e=new Map(e),this.#i=t}getDefaultAssemblyName(){if(this.#i)return this.#i;if(this.#e.size===1)return this.#e.keys().next().value;if(this.#e.size===0&&this.genomes.size===1)return this.genomes.keys().next().value}async ensureAssemblies(e){let t=[],n=new Set;for(let r of e){if(!r)continue;let e=_H(r);n.has(e)||(n.add(e),t.push(this.ensureAssembly(r)))}await Promise.all(t)}async ensureAssembly(e){if(typeof e==`object`)return this.#d(e);let t=this.genomes.get(e);if(t)return t;let n=this.#e.get(e);if(n)return this.#u(e,n);let r=this.#s(e);if(r)return r;throw this.#o(e)}getGenome(e){if(e&&typeof e==`object`)return this.#f(e);if(typeof e==`string`){let t=this.genomes.get(e);if(t)return t;if(this.#e.has(e))throw Error(`Genome ${e} has not been loaded yet. Call ensureAssembly("${e}") before accessing it.`);let n=this.#s(e);if(n)return n;throw this.#o(e)}let t=this.getDefaultAssemblyName();if(t)return this.getGenome(t);if(this.#e.size>1)throw Error(`Cannot pick a default genome! More than one have been configured!`);if(this.genomes.size===0&&this.#e.size)throw Error("Default genome is not loaded. Define root `assembly` or call ensureAssembly() first.");if(this.genomes.size>1)throw Error(`Cannot pick a default genome! More than one have been configured!`);if(this.genomes.size===0)throw Error(`No genomes have been configured!`);return this.genomes.values().next().value}#a(e){try{return new HL({name:e})}catch{return}}#o(e){return Error(`No genome with the name ${e} has been configured!`)}#s(e){let t=this.#a(e);if(t)return this.genomes.set(e,t),t}async#c(e,t){let n=this.#t.get(e);if(!n)throw Error(`No pending genome load for ${e}.`);await n;let r=this.genomes.get(e);if(!r)throw Error(t);return r}async#l(e,t){let n=t.load(this.baseUrl);this.#t.set(e,n);try{await n}catch(t){throw this.genomes.delete(e),t}finally{this.#t.delete(e)}return t}async#u(e,t){let n=this.genomes.get(e);if(n)return this.#t.has(e)?this.#c(e,`Loading genome ${e} failed before it became available.`):n;if(this.#t.has(e))return this.#c(e,`Loading genome ${e} failed before it became available.`);let r=new HL({name:e,...t});return this.genomes.set(e,r),`url`in t?this.#l(e,r):r}async#d(e){this.#p(e);let t=this.#m(e),n=this.genomes.get(t);if(n)return this.#t.has(t)?this.#c(t,`Loading inline assembly ${t} failed before it became available.`):n;if(this.#t.has(t))return this.#c(t,`Loading inline assembly ${t} failed before it became available.`);if(`contigs`in e){let n=new HL({name:t,contigs:e.contigs});return this.genomes.set(t,n),n}let r=new HL({name:t,url:e.url});return this.genomes.set(t,r),this.#l(t,r)}#f(e){this.#p(e);let t=this.#m(e),n=this.genomes.get(t);if(n){if(this.#t.has(t))throw Error(`Inline URL assembly ${t} has not been loaded yet. Call ensureAssembly() before accessing it.`);return n}if(`url`in e)throw Error(`Inline URL assemblies must be loaded first. Call ensureAssembly() before accessing it.`);let r=new HL({name:t,contigs:e.contigs});return this.genomes.set(t,r),r}#p(e){if(`contigs`in e==`url`in e)throw Error("Inline `scale.assembly` objects must define exactly one of `contigs` or `url`.")}#m(e){let t=JSON.stringify(e),n=this.#n.get(t);if(n)return n;let r=`inline_assembly_${this.#r}`;for(this.#r+=1;this.genomes.has(r)||this.#e.has(r)||this.#t.has(r);)r=`inline_assembly_${this.#r}`,this.#r+=1;return this.#n.set(t,r),r}};function _H(e){return typeof e==`string`?`name:${e}`:`inline:${JSON.stringify(e)}`}var vH={pages:[`Lato-Regular.png`],chars:[{id:87,width:53,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:43.491,chnl:15,x:0,y:0,page:0},{id:124,width:17,height:50,xoffset:0,yoffset:-32.193000000000005,xadvance:10.521,chnl:15,x:0,y:42,page:0},{id:40,width:20,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:94,page:0},{id:41,width:19,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:145,page:0},{id:36,width:32,height:49,xoffset:0,yoffset:-34.419000000000004,xadvance:24.360000000000003,chnl:15,x:0,y:196,page:0},{id:125,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642,chnl:15,x:0,y:247,page:0},{id:91,width:22,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:297,page:0},{id:93,width:19,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:347,page:0},{id:123,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642,chnl:15,x:0,y:397,page:0},{id:106,width:19,height:48,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:0,y:447,page:0},{id:81,width:43,height:47,xoffset:0,yoffset:-30.429,xadvance:33.621,chnl:15,x:21,y:447,page:0},{id:77,width:45,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:38.997,chnl:15,x:66,y:447,page:0},{id:64,width:43,height:44,xoffset:0,yoffset:-28.539,xadvance:35.133,chnl:15,x:23,y:397,page:0},{id:92,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:68,y:397,page:0},{id:47,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:98,y:397,page:0},{id:109,width:42,height:32,xoffset:0,yoffset:-21.609,xadvance:34.545,chnl:15,x:113,y:447,page:0},{id:119,width:42,height:31,xoffset:0,yoffset:-21.315,xadvance:32.991,chnl:15,x:157,y:447,page:0},{id:42,width:25,height:42,xoffset:0,yoffset:-31.626,xadvance:17.85,chnl:15,x:128,y:397,page:0},{id:37,width:42,height:41,xoffset:0,yoffset:-30.387,xadvance:33.663000000000004,chnl:15,x:155,y:397,page:0},{id:79,width:42,height:41,xoffset:0,yoffset:-30.429,xadvance:33.621,chnl:15,x:199,y:397,page:0},{id:102,width:24,height:41,xoffset:0,yoffset:-30.534,xadvance:14.721,chnl:15,x:243,y:397,page:0},{id:100,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:269,y:397,page:0},{id:98,width:32,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:302,y:397,page:0},{id:56,width:32,height:41,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:336,y:397,page:0},{id:38,width:40,height:41,xoffset:0,yoffset:-30.429,xadvance:29.904000000000003,chnl:15,x:370,y:397,page:0},{id:108,width:17,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:9.912,chnl:15,x:412,y:397,page:0},{id:107,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:21.336,chnl:15,x:431,y:397,page:0},{id:48,width:33,height:41,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:464,y:397,page:0},{id:71,width:38,height:41,xoffset:0,yoffset:-30.429,xadvance:30.681,chnl:15,x:21,y:347,page:0},{id:83,width:31,height:41,xoffset:0,yoffset:-30.429,xadvance:22.785,chnl:15,x:61,y:347,page:0},{id:63,width:27,height:41,xoffset:0,yoffset:-30.429,xadvance:18.795,chnl:15,x:94,y:347,page:0},{id:105,width:18,height:41,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:123,y:347,page:0},{id:51,width:32,height:41,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:143,y:347,page:0},{id:104,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.436,chnl:15,x:177,y:347,page:0},{id:67,width:37,height:41,xoffset:0,yoffset:-30.429,xadvance:28.056,chnl:15,x:210,y:347,page:0},{id:88,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.258000000000003,chnl:15,x:249,y:347,page:0},{id:68,width:40,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:31.941000000000003,chnl:15,x:288,y:347,page:0},{id:70,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:23.751,chnl:15,x:330,y:347,page:0},{id:34,width:23,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:15.561000000000002,chnl:15,x:364,y:347,page:0},{id:72,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:389,y:347,page:0},{id:73,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.760000000000002,chnl:15,x:429,y:347,page:0},{id:74,width:24,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:17.745,chnl:15,x:449,y:347,page:0},{id:75,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.825000000000003,chnl:15,x:24,y:297,page:0},{id:76,width:31,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:21.567,chnl:15,x:475,y:347,page:0},{id:66,width:35,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.153,chnl:15,x:64,y:297,page:0},{id:78,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:101,y:297,page:0},{id:33,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.298,chnl:15,x:141,y:297,page:0},{id:80,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.221,chnl:15,x:161,y:297,page:0},{id:65,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:197,y:297,page:0},{id:82,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.313,chnl:15,x:237,y:297,page:0},{id:35,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:275,y:297,page:0},{id:84,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.801,chnl:15,x:310,y:297,page:0},{id:85,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:30.891,chnl:15,x:346,y:297,page:0},{id:86,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:385,y:297,page:0},{id:39,width:16,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:8.568000000000001,chnl:15,x:425,y:297,page:0},{id:69,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.255000000000003,chnl:15,x:443,y:297,page:0},{id:89,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.208,chnl:15,x:23,y:247,page:0},{id:90,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.284,chnl:15,x:477,y:297,page:0},{id:49,width:31,height:40,xoffset:0,yoffset:-30.156,xadvance:24.360000000000003,chnl:15,x:61,y:247,page:0},{id:50,width:32,height:40,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:94,y:247,page:0},{id:57,width:32,height:40,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:128,y:247,page:0},{id:94,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:162,y:247,page:0},{id:96,width:21,height:40,xoffset:0,yoffset:-30.429,xadvance:16.8,chnl:15,x:196,y:247,page:0},{id:55,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:219,y:247,page:0},{id:54,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:254,y:247,page:0},{id:53,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:289,y:247,page:0},{id:52,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:323,y:247,page:0},{id:103,width:31,height:39,xoffset:0,yoffset:-21.630000000000003,xadvance:21.84,chnl:15,x:358,y:247,page:0},{id:112,width:32,height:39,xoffset:0,yoffset:-21.651,xadvance:23.541,chnl:15,x:391,y:247,page:0},{id:113,width:31,height:39,xoffset:0,yoffset:-21.651,xadvance:23.520000000000003,chnl:15,x:425,y:247,page:0},{id:116,width:25,height:39,xoffset:0,yoffset:-28.182,xadvance:15.057,chnl:15,x:458,y:247,page:0},{id:121,width:31,height:38,xoffset:0,yoffset:-21.273,xadvance:21.651,chnl:15,x:34,y:196,page:0},{id:59,width:18,height:36,xoffset:0,yoffset:-20.706,xadvance:10.983,chnl:15,x:485,y:247,page:0},{id:43,width:32,height:34,xoffset:0,yoffset:-24.486,xadvance:24.360000000000003,chnl:15,x:67,y:196,page:0},{id:60,width:30,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:101,y:196,page:0},{id:62,width:31,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:133,y:196,page:0},{id:117,width:30,height:32,xoffset:0,yoffset:-21.273,xadvance:23.415000000000003,chnl:15,x:166,y:196,page:0},{id:99,width:29,height:32,xoffset:0,yoffset:-21.609,xadvance:20.055,chnl:15,x:198,y:196,page:0},{id:110,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:23.436,chnl:15,x:229,y:196,page:0},{id:111,width:32,height:32,xoffset:0,yoffset:-21.609,xadvance:23.814,chnl:15,x:262,y:196,page:0},{id:126,width:32,height:26,xoffset:0,yoffset:-16.128,xadvance:24.360000000000003,chnl:15,x:201,y:447,page:0},{id:101,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:22.176,chnl:15,x:296,y:196,page:0},{id:114,width:25,height:32,xoffset:0,yoffset:-21.651,xadvance:15.288,chnl:15,x:329,y:196,page:0},{id:115,width:27,height:32,xoffset:0,yoffset:-21.609,xadvance:18.186,chnl:15,x:356,y:196,page:0},{id:97,width:28,height:32,xoffset:0,yoffset:-21.651,xadvance:20.874,chnl:15,x:385,y:196,page:0},{id:118,width:31,height:31,xoffset:0,yoffset:-21.273,xadvance:21.672,chnl:15,x:415,y:196,page:0},{id:61,width:31,height:29,xoffset:0,yoffset:-19.089,xadvance:24.360000000000003,chnl:15,x:448,y:196,page:0},{id:120,width:30,height:31,xoffset:0,yoffset:-21.273,xadvance:20.916,chnl:15,x:21,y:145,page:0},{id:58,width:18,height:31,xoffset:0,yoffset:-20.706,xadvance:10.5,chnl:15,x:53,y:145,page:0},{id:122,width:28,height:31,xoffset:0,yoffset:-21.273,xadvance:18.984,chnl:15,x:73,y:145,page:0},{id:95,width:28,height:16,xoffset:0,yoffset:0,xadvance:19.278,chnl:15,x:235,y:447,page:0},{id:45,width:23,height:24,xoffset:0,yoffset:-14.175,xadvance:15.603000000000002,chnl:15,x:481,y:196,page:0},{id:44,width:17,height:21,xoffset:0,yoffset:-4.956,xadvance:9.534,chnl:15,x:103,y:145,page:0},{id:46,width:18,height:15,xoffset:0,yoffset:-4.956,xadvance:9.912,chnl:15,x:0,y:497,page:0},{id:32,width:0,height:0,xoffset:0,yoffset:0,xadvance:10.752,chnl:15,x:20,y:497,page:0}],info:{face:`Lato Regular`,size:42,bold:0,italic:0,charset:` !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~`.split(``),unicode:1,stretchH:100,smooth:1,aa:1,padding:[0,0,0,0],spacing:[2,2]},common:{lineHeight:50.400000000000006,base:41.454,scaleW:512,scaleH:512,pages:1,packed:0,alphaChnl:0,redChnl:0,greenChnl:0,blueChnl:0},kernings:[]},yH=`data:image/png;base64,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`,bH={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900},xH=class{constructor(e){this._webGLHelper=e,this.fontRepository=`https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/`,this._fonts=new gn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:eM(vH),texture:e?this._createTextureNow(yH):void 0}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,t=`normal`,n=`regular`){if(N(n)&&(n=bH[n.toLowerCase()],!n))throw Error(`Unknown font weight: `+n);let r={family:e,style:t,weight:n},i=this._fonts.get(r);return i||(i={metrics:void 0,texture:void 0},this._fonts.set(r,i),this._promises.push(this._loadFontEntry(i,r))),i}async _loadFontEntry(e,t){try{let n=wH(await this._loadMetadata(t.family),t),r=this.fontRepository+SH(t.family)+`/`+n.replace(/\.\w+/,``),i=this._createTexture(r+`.png`),a=this._loadFont(r+`.json`);e.texture=await i,e.metrics=await a}catch{console.warn(`Cannot load font: "${t.family}". Using the embedded default font.`),e.metrics=this._defaultFontEntry.metrics,e.texture=this._defaultFontEntry.texture}}_loadFont(e){let t=this._fontPromises.get(e);return t||(t=fetch(e).then(e=>{if(!e.ok)throw Error(`Could not load font: `+e.status);return e}).then(e=>e.json()).then(e=>eM(e)),this._fontPromises.set(e,t)),t}_loadMetadata(e){let t=SH(e),n=this._metadataPromises.get(t);if(!n){let e=this.fontRepository+t+`/METADATA.pb`;n=fetch(e).then(t=>{if(!t.ok)throw Error(`Could not load font metadata. Response status: `+t.status+`, url: `+e);return t}).then(e=>e.text()).then(e=>CH(e)).catch(e=>{console.warn(e.message)}),this._metadataPromises.set(t,n)}return n}getDefaultFont(){return this._defaultFontEntry}_createTexture(e){let t=this._webGLHelper.gl;return new Promise((n,r)=>{ek(t,{src:e,min:t.LINEAR},(e,t,i)=>{e?r(e):n(t)})})}_createTextureNow(e){let t=this._webGLHelper.gl,n,r=new Promise((r,i)=>{n=ek(t,{src:e,min:t.LINEAR},(e,t,n)=>{e?i(e):r(t)})});return this._promises.push(r),n}};function SH(e){return e.toLowerCase().replaceAll(/[^\w]/g,``)}function CH(e){let t=e.split(`
803
- `),n=[],r;for(let e of t)if(e.startsWith(`fonts {`)&&(r={name:void 0,style:void 0,weight:void 0,filename:void 0,post_script_name:void 0,full_name:void 0,copyright:void 0}),e.startsWith(`}`)&&(n.push(r),r=void 0),r){let t=e.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(t){let e=t[1];r[e]=t[2]}if(t=e.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),t){let e=t[1];r[e]=+t[2]}}return n}function wH(e,t){let n,r=1/0;for(let i of e)if(t.family.localeCompare(i.name,void 0,{sensitivity:`accent`})==0&&t.style==i.style){let e=Math.abs(t.weight-i.weight);e<r&&(r=e,n=i)}return n?.filename}var TH=new Map,EH={Organism:`Homo sapiens`};async function DH(e,t,n={}){let r=e.symbol,i={...EH,GENE:r};for(let[e,t]of Object.entries(n))typeof t==`string`&&(i[e]=t);let a=TH.get(r)??await AH(i);return a?(TH.set(r,a),D`
802
+ };`)},l=e=>{a||c(e);for(let t=0;t<a.length;t++){let[n,r]=a[t],i=s(e,n,r);this._propagate(i)}},u=e=>{c(e),l(e),this.handle=l};this.handle=u,this.beginBatch=e=>{Jm(e)&&(this.handle=u),super.beginBatch(e)}}},yV=class extends ah{get behavior(){return 2}constructor(e){super(e),this.params=e,this.buffer=[]}reset(){super.reset(),this.buffer=[]}handle(e){this.buffer.push(e)}complete(){let e=this.params,t=e.as||[`y0`,`y1`],n=e.sort?mt(e.sort.field,e.sort.order):void 0,r=e.field?z(e.field):()=>1,i=e.groupby.map(e=>z(e)),a=xn(this.buffer,e=>i.map(t=>t(e)).join()).map(e=>e[1]),o=e=>!0;if(e.baseField){let t=z(e.baseField);o=e=>t(e)!==null}let s,c;switch(e.offset){case`normalize`:s=(e,t)=>e/t,c=(e,t)=>Vn(e,t);break;case`center`:s=(e,t)=>e-t/2,c=(e,t)=>Vn(e,t);break;case`information`:{let t=Math.log2(e.cardinality??4);s=(e,t)=>e/t,c=(e,n)=>{let r=Vn(e,e=>+!o(e)),i=Vn(e,n),a=i-r,s=0;for(let t=0;t<e.length;t++){let r=e[t];if(o(r)){let e=n(r)/a;s-=e*Math.log2(e)}}return a/(t-(s+0))*(a/i)}}break;default:s=(e,t)=>e,c=(e,t)=>1}for(let e of a){n&&e.sort(n);let i=c(e,r),a=0;for(let n of e){let e=a+r(n);o(n)&&(n[t[0]]=s(a,i),n[t[1]]=s(e,i),this._propagate(n),a=e)}}super.complete()}},bV=class extends ah{get behavior(){return 1}constructor(e){super(e),this.params=e;let t=z(e.field??`sequence`),[n,r]=e.as??[`pos`,`sequence`];this.handle=e=>{let i=Object.assign({},e,{[r]:``,[n]:0}),a=t(e);for(let e=0;e<a.length;e++){let t=Object.assign({},i);t[n]=e,t[r]=a.charAt(e),this._propagate(t)}}}},xV={count:e=>e.length,valid:dn,sum:Vn,min:Nn,max:Mn,mean:Rn,q1:(e,t)=>In(e,.25,t),median:zn,q3:(e,t)=>In(e,.75,t),variance:fn},SV={aggregate:class extends ah{get behavior(){return 1}constructor(e){if(super(e),this.params=e,this.buffer=[],this.ops=[],this.as=[],e.fields){if(e.fields.length!=e.ops.length)throw Error(`Fields and ops must have the same length!`);if(e.as&&e.as.length!=e.ops.length)throw Error(`If "as" is defined, "fields" and "as" must have the same length!`);e.fields.forEach((t,n)=>{let r=z(t),i=xV[e.ops[n]];this.ops.push(e=>i(e,r)),this.as.push(e.as?e.as[n]:`${e.ops[n]}_${e.fields[n]}`)})}else this.ops.push(e=>xV.count(e)),this.as.push(`count`)}reset(){super.reset(),this.buffer=[]}#e(){let e=this.params?.groupby;if(e?.length>0){let t=e.map(e=>z(e)),n=bn(this.buffer,...t);for(let[t,r]of IB(n)){let n={};for(let r=0;r<e.length;r++)n[e[r]]=t[r];this.ops.forEach((e,t)=>{n[this.as[t]]=e(r)}),this._propagate(n)}}else{let e={};this.ops.forEach((t,n)=>{e[this.as[n]]=t(this.buffer)}),this._propagate(e)}}handle(e){this.buffer.push(e)}beginBatch(e){this.buffer.length>0&&(this.#e(),this.buffer=[]),super.beginBatch(e)}complete(){this.buffer.length>0&&this.#e(),super.complete()}},collect:JB,coverage:QB,filterScoredLabels:tV,filter:nV,flatten:aV,flattenCompressedExons:cV,flattenDelimited:lV,flattenSequence:bV,formula:dV,identifier:lh,linearizeGenomicCoordinate:fV,measureText:pV,pileup:hV,project:gV,regexExtract:_V,regexFold:vV,sample:xP,stack:yV};function CV(e,t){let n=SV[e.type];if(n)return new n(e,t);throw Error(`Unknown transform: `+e.type)}var wV=new Set([`application/gzip`,`application/x-gzip`]),TV=new TextDecoder,EV=class extends Xm{constructor(e,t){super(t),this.params=_g(t.paramRuntime,e,()=>this.load(),e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),this.baseUrl=t?.getBaseUrl()}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}get label(){return`urlSource`}async#e(e){let t=sF(this.baseUrl,e.urlsFromFile),n={type:e.type??`tsv`},r=await fetch(t);if(!r.ok)throw Error(`Cannot load "${t}": ${r.status} ${r.statusText}`);return wo(await NV(r,t,CC(n.type)),SC(n)).map(e=>typeof e==`string`?e:e.url).map(e=>sF(t,e))}async load(){let e=fg(this.params.url),t=typeof e==`object`&&`urlsFromFile`in e?await this.#e(e):(Array.isArray(e)?e:[e]).map(e=>sF(this.baseUrl,e)),n=xC(this.params,t),r=CC(n.type);if(t.length===0||!t[0]){this.reset(),this.complete();return}let i=async e=>{try{let t=await fetch(e);if(!t.ok)throw Error(`${t.status} ${t.statusText}`);return await NV(t,e,r)}catch(t){throw Error(`Could not load data: ${e}. Reason: ${t.message}`,{cause:t})}},a=async(e,t)=>{try{let r=wo(e,SC(n)),i=r instanceof Promise?await r:r;this.beginBatch({type:`file`,url:t});for(let e of i)this._propagate(e)}catch(e){throw console.warn(e),Error(`Cannot parse: ${t}: ${e.message}`,{cause:e})}};this.setLoadingStatus(`loading`),this.reset();try{await Promise.all(t.map(e=>i(e).then(a))),this.setLoadingStatus(`complete`)}catch(e){this.setLoadingStatus(`error`,e.message)}this.complete()}};function DV(e){return`url`in e}function OV(e){return e.length>=10&&e[0]==31&&e[1]==139&&e[2]==8&&(e[3]&224)==0}function kV(e){return e?wV.has(e.split(`;`)[0].trim().toLowerCase()):!1}function AV(e){return e?e.toLowerCase().split(`,`).some(e=>e.trim()==`gzip`):!1}function jV(e){return new Uint8Array(e).buffer}async function MV(e){if(typeof DecompressionStream!=`function`)throw Error(`Gzip-compressed URL data requires DecompressionStream support.`);let t=new Response(jV(e)).body;if(!t)throw Error(`Cannot create a readable stream for gzip decompression.`);let n=t.pipeThrough(new DecompressionStream(`gzip`));return new Uint8Array(await new Response(n).arrayBuffer())}async function NV(e,t,n){if(!(TC(t)||kV(e.headers.get(`content-type`))||AV(e.headers.get(`content-encoding`))))return PV(e,n);let r=new Uint8Array(await e.arrayBuffer());return FV(OV(r)?await MV(r):r,n)}function PV(e,t){return typeof e[t]==`function`?e[t]():e.text()}function FV(e,t){return t==`arrayBuffer`?jV(e):TV.decode(e)}function IV(e){return`sequence`in e}var LV=class extends Xm{constructor(e,t){if(super(t),this.sequence=_g(t.paramRuntime,e.sequence,()=>this.loadSynchronously(),e=>this.registerDisposer(e),{batchMode:`whenPropagated`}),!(`start`in this.sequence))throw Error(`'start' is missing from sequence parameters!`);if(!(`stop`in this.sequence))throw Error(`'stop' is missing from sequence parameters!`)}get label(){return`sequenceSource`}loadSynchronously(){let e=fg(this.sequence.as)??`data`,t=fg(this.sequence.start)??0,n=fg(this.sequence.step)??1,r=fg(this.sequence.stop);this.reset(),this.beginBatch({type:`file`});for(let i=t;i<r;i+=n)this._propagate({[e]:i});this.complete()}async load(){this.loadSynchronously()}};function RV(e,t){if(_C(e))return new vC(e,t);if(DV(e))return new EV(e,t);if(IV(e))return new LV(e,t);if(zV(e))return Gm(e.lazy,t);throw Error(`Cannot figure out the data source type: `+JSON.stringify(e))}function zV(e){return`lazy`in e}function BV(e){let t=VV(e).filter(e=>typeof e==`string`),n=Function(`source`,`return { `+t.map(e=>JSON.stringify(e)).map(e=>`${e}: source[${e}]`).join(`,
803
+ `)+` };`);return n.properties=t,n}function VV(e){let t=[];do t=t.concat(Object.keys(e)),e=Object.getPrototypeOf(e);while(e&&e!==Object.prototype);return Array.from(new Set(t))}var HV=class extends ah{get behavior(){return 1}#e;#t=e=>e;constructor(){super({type:`clone`});let e=e=>{let t=VV(e);(!this.#e||!Jl(t,this.#e))&&(this.#e=t,this.#t=BV(e));let n=this.#t;this.handle=e=>this._propagate(n(e)),this.handle(e)};this.handle=e,this.beginBatch=t=>{Jm(t)&&(this.handle=e),super.beginBatch(t)}}};function UV(e){return`name`in e}var WV=class extends Xm{#e;constructor(e,t,n){super(t),this.provider=n,this.params=e}get identifier(){return this.params.name}get label(){return`namedSource`}updateDynamicData(e){this.#e=e,this.loadSynchronously()}loadSynchronously(){let e=this.#e??this.provider(this.params.name)??[],t=e=>e;if(Array.isArray(e))e.length>0&&(t=DC(e[0]));else throw Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:`file`});for(let n of e)this._propagate(t(n));this.complete()}async load(){this.loadSynchronously()}},GV=class{#e;#t;loadingStatusRegistry;constructor(){this.#e=new Set,this.#t=new Set,this.loadingStatusRegistry=new TT}get dataSources(){return[...this.#e]}get collectors(){return[...this.#t]}replaceDataSources(e){this.#e=new Set(e)}addDataSource(e){this.#e.add(e)}removeDataSource(e){e.disposeSubtree(),this.#e.delete(e)}addCollector(e){this.#t.add(e)}removeCollector(e){e.parent&&e.parent.removeChild(e),e.disposeSubtree(),e.observers.clear(),this.#t.delete(e)}pruneCollectorBranch(e){let t=e.parent;for(t&&t.removeChild(e),e.disposeSubtree();t&&t.children.length===0;){let e=t;t=e.parent,t?(t.removeChild(e),e.dispose()):e instanceof Xm?this.removeDataSource(e):e.dispose()}}findNamedDataSource(e){let t;for(let n of this.#e.values())if(n instanceof WV&&e==n.identifier){if(t&&t!==n)throw Error(`Found multiple instances of named data: ${e}. Data flow optimization is broken (it's a bug).`);t=n}if(t)return{dataSource:t}}};function KV(e,t){let n=new Map,r=[];for(let t of e)n.set(t,{ref:t,children:[]});for(let e of n.values()){let i=n.get(t(e.ref));i?i.children.push(e):r.push(e)}return r}function qV(e,t,n){let r=t.preOrder?.(e);if(r)return r;for(let r of n(e)){let e=qV(r,t,n);if(e===`stop`)return e}return t.postOrder?.(e)}function JV(e,t){return qV(e,t,e=>e.children)}function YV(e,t,n,r){let i=[],a=[],o,s=t??new GV,c=[],l=r??(()=>!0);function u(e,t=()=>void 0){if(!o)throw t()||Error(`Cannot append data flow node, no parent exist!`);return o.addChild(e),o=e,i.push(e),e}function d(e,t){return u(e,()=>Error(`Cannot append a transform because no (inherited) data are available! ${t?JSON.stringify(t):``}`))}function f(e,t){for(let n of e){let e;try{e=CV(n,t)}catch(e){throw console.warn(e),Error(`Cannot initialize "${n.type}" transform: ${e}`,{cause:e})}e.behavior&2&&d(new HV),d(e)}}function p(){return i.findLastIndex(e=>e instanceof lh)>i.findLastIndex(e=>e instanceof Xm)}let m=e=>{if(!l(e)){let t=e.flowHandle?.node;if(t){t!==o&&(o=t,i.push(t));return}if(e.spec.data||e.spec.transform||e instanceof DB)throw Error(`Cannot reuse missing flow nodes for `+e.getPathString());return}if(e.spec.data){let t=e.flowHandle?.dataSource;t&&t.view===e&&!t.identifier&&s.removeDataSource(t);let n=UV(e.spec.data)?new WV(e.spec.data,e,e.context.getNamedDataFromProvider):RV(e.spec.data,e);o=n,i.push(n),s.addDataSource(n),e.flowHandle??={},e.flowHandle.dataSource=n}if(e.spec.transform&&f(e.spec.transform,e),e instanceof DB){if(!o)throw Error(`A unit view (${e.getPathString()}) has no (inherited) data source`);let t=ZV(e);if(t){c.push(t.rewrite);for(let e of t.transforms)d(e)}e.mark.isPickingParticipant()&&!p()&&(d(new HV),d(new lh({type:`identifier`})));let n=new JB({type:`collect`,groupby:e.getFacetFields(),sort:QV(e,t?.rewrittenEncoding)});u(n);let r=e.flowHandle?.collector;r&&s.removeCollector(r),s.addCollector(n),e.flowHandle??={},e.flowHandle.collector=n}o&&(e.flowHandle??={},e.flowHandle.node=o)},h=KV(XV(e,n),e=>e.dataParent);for(let e of h)JV(e,{preOrder:e=>{a.push({view:e.ref,nodeStackDepth:i.length}),m(e.ref)},postOrder:()=>{let{nodeStackDepth:e}=a.pop();i.length=e,o=i.at(-1)}});return c.forEach(e=>e()),s}function XV(e,t){if(!t)return e.getDescendants();let n=[];return e.visit(e=>{if(!t(e))return KL;n.push(e)}),n}function ZV(e){let t=[],n={},r=e.mark.encoding,i=e.getEncoding(),a=[];for(let[e,t]of Object.entries(r)){let n=e;Kh(n)!==n&&!(n in i)||Vh(n)&&!Array.isArray(t)&&Nh(t)&&a.push({channel:n,chromPosDef:t})}let o=bn(a,e=>Kh(e.channel),e=>e.chromPosDef.chrom);for(let[a,s]of o.entries())for(let[o,c]of s.entries()){let s=[],l=[],u=[];for(let{channel:t,chromPosDef:a}of c){let o=e=>e.replace(/[^A-Za-z0-9_]/g,``),c=[`_linearized_`,o(a.chrom),`_`,o(a.pos)].join(``),d={...e.spec.encoding?.[t]??i[t]??r[t]??{},field:c};delete d.chrom,delete d.pos,!d.type&&a.type&&(d.type=a.type),n[t]=d,s.push(a.pos),u.push(a.offset??0),l.push(c)}t.push(new HV),t.push(new fV({type:`linearizeGenomicCoordinate`,channel:a,chrom:o,pos:s,offset:u,as:l},e))}return t.length?{transforms:t,rewrittenEncoding:n,rewrite:()=>{e.spec.encoding={...e.spec.encoding,...n},KN(e.mark,`encoding`)}}:void 0}function QV(e,t){let n={...e.getEncoding(),...t}.x;if(Ah(n)&&e.getScaleResolution(`x`)?.isZoomable()){if(Oh(n))return`buildIndex`in n&&n.buildIndex?{field:n.field}:null;if(!kh(n)&&Ph(n))throw Error(`A zoomable x channel must be mapped to a field.`)}}function $V(e,t=void 0){if(e.parent!==t)return!1;for(let t of e.children)if(!$V(t,e))return!1;return!0}function eH(e,t=!1){if(e.behavior&4&&(t=!0),e instanceof HV)if(t)t=!1;else{let n=e.children[0];e.excise(),n&&eH(n,t);return}e.behavior&1&&(t=!1);for(let n=0,r=e.children.length;n<r;n++)eH(e.children[n],t||r>1)}function tH(e){let t=e.dataSources,n=new Map;for(let e of t)e.identifier&&!n.has(e.identifier)&&n.set(e.identifier,e);let r=new Set,i=new Map;for(let e of t)if(e.identifier){let t=n.get(e.identifier);t&&(t!==e&&t.adoptChildrenOf(e),r.add(t),i.set(e,t))}else r.add(e),i.set(e,e);return e.replaceDataSources(r),i}function nH(e){if(eH(e),!$V(e))throw Error(`Encountered a bug! There's a problem in the data flow structure.`)}function rH(e){let t=tH(e);for(let t of e.dataSources)nH(t);return t}var iH=new WeakMap,aH=new WeakMap;function oH(e,t){let n=iH.get(e);if(n){if(!t?.queueReload)return n;let r=aH.get(e);if(r)return r;let i=n.catch(()=>{}).then(()=>oH(e)).finally(()=>{aH.delete(e)});return aH.set(e,i),i}let r=Promise.resolve().then(()=>e.load()).finally(()=>{iH.delete(e)});return iH.set(e,r),r}function sH(e,t){for(let n of e.getDescendants()){let e=n.flowHandle;if(!e)continue;let r=e.dataSource;r&&(e.dataSource=t.get(r)??r)}}function cH(e,t,n,r){let i=r??(()=>!0),a=fH(e,n).filter(i);if(a.length===0)return{dataFlow:t,unitViews:[],dataSources:new Set,graphicsPromises:[]};let o=new Set(a);for(let e of a)e._setDataInitializationState(`pending`);let s;try{s=YV(e,t,n,e=>o.has(e)),sH(e,rH(s))}catch(e){for(let e of a)e._setDataInitializationState(`none`);throw e}let c=lH(a);for(let e of c)e.visit(e=>e.initializeOnce());let l=a.filter(e=>e instanceof DB),u=[],d=!!e.context.glHelper;for(let e of l){let t=e.mark;t.initializeEncoders(),e.registerDomainSubscriptions(),d&&u.push(t.initializeGraphics().then(()=>t)),e.registerDisposer(e.flowHandle.collector.observe(n=>{if(t.initializeData(),d)try{t.updateGraphicsData()}catch(t){throw t.view=e,t}e.context.animator.requestRender()}))}for(let e of a)e._setDataInitializationState(`ready`);return{dataFlow:s,unitViews:l,dataSources:c,graphicsPromises:u}}function lH(e,t){let n=Array.isArray(e)?e:fH(e,t),r=new Set;for(let e of n){if(t&&!t(e))continue;let n=e;for(;n&&!n.flowHandle?.dataSource;)n=n.dataParent;n?.flowHandle?.dataSource&&r.add(n.flowHandle.dataSource)}return r}function uH(e,t){let n=new Set;return e.visit(e=>{if(t&&!t(e))return KL;if(e.flowHandle?.dataSource)return n.add(e.flowHandle.dataSource),KL}),n}function dH(e,t,n,r){return t||=uH(e,n),Promise.all(Array.from(t).map(e=>oH(e,r))).then(t=>(pH(e),t))}function fH(e,t){let n=[];return t?(e.visit(e=>{if(!t(e))return KL;n.push(e)}),n):e.getDescendants()}function pH(e){let t={type:`subtreeDataReady`,payload:{subtreeRoot:e}};e.visit(e=>e.handleBroadcast(t))}async function mH(e,t,n,r){let i=e=>e.isConfiguredVisible(),{dataFlow:a,graphicsPromises:o}=cH(e,t,i);return r(a),await n.waitUntilReady(),await dH(e,new Set(a.dataSources),i),await NB(o),a}async function hH(e,t,n){let r=e=>e.isConfiguredVisible(),i=gH(e,r).filter(e=>e.getDataInitializationState()===`none`);if(i.length===0)return t;let a=new Set(i),o=e=>a.has(e),s=new Set,c=[];for(let e of i){if(e.spec.data){c.push(e);continue}let t=vH(e);t?s.add(t):c.push(e)}let{dataFlow:l,graphicsPromises:u}=cH(e,t,r,o);await n.waitUntilReady();for(let e of s)e.repropagate();if(c.length){let e=_H(c);await Promise.all(Array.from(e.entries()).map(([e,t])=>dH(e,t,void 0,{queueReload:!0})))}return await NB(u),l}function gH(e,t){let n=[];return e.visit(e=>{if(!t(e))return KL;n.push(e)}),n}function _H(e){let t=new Map;for(let n of e){let e=n;for(;e&&!e.flowHandle?.dataSource;)e=e.dataParent;if(!e?.flowHandle?.dataSource){if(n.spec.data)throw Error(`No data source found for view `+n.getPathString());continue}let r=t.get(e);r||(r=new Set,t.set(e,r)),r.add(e.flowHandle.dataSource)}return t}function vH(e){let t=e.dataParent;for(;t;){let e=t.flowHandle?.collector;if(e)return e.completed?e:void 0;t=t.dataParent}}var yH=class{constructor(e){this._renderCallback=e,this._renderRequested=!1,this._warn=!1,this.transitions=[]}requestTransition(e){this.cancelTransition(e),this.transitions.push(e),this.requestRender()}cancelTransition(e){let t=this.transitions.indexOf(e);t>=0&&this.transitions.splice(t,1)}requestRender(){this._renderRequested?this._warn&&console.warn(`Render already requested!`):(this._renderRequested=!0,window.requestAnimationFrame(e=>{this._renderRequested=!1;let t=this.transitions;this.transitions=[];let n;for(;n=t.shift();)n(e);this._renderCallback(e)}))}transition(e){return nB({requestAnimationFrame:e=>this.requestTransition(e),...e})}};function bH(e,t,n,r,i){let a=0,o=!0,s=structuredClone(i),c=s;function l(e,t,n,r){return t+(e-t)*2**(-n/r)}function u(i){if(o)return;let d=i-a;a=i;for(let e of Object.keys(c))s[e]=l(s[e],c[e],d,n);t(s);let f=-1/0;for(let e of Object.keys(c))f=Math.max(f,Math.abs(c[e]-s[e]));f<r?(s=c,t(s),o=!0,f!=0&&e.requestRender()):e.requestTransition(e=>u(e))}function d(e){c=e,o&&(o=!1,a=+document.timeline.currentTime,u(a))}return d.stop=()=>{o=!0},d}var xH=class{constructor(e){this.genomes=new Map,this.#e=new Map,this.#t=new Map,this.#n=new Map,this.#r=0,this.#i=void 0,this.baseUrl=e}#e;#t;#n;#r;#i;async initialize(e){let{name:t,...n}=e;this.configureGenomes(new Map([[t,n]]),t),await this.ensureAssembly(t)}configureGenomes(e,t){this.genomes.clear(),this.#t.clear(),this.#n.clear(),this.#r=0,this.#e=new Map(e),this.#i=t}getDefaultAssemblyName(){if(this.#i)return this.#i;if(this.#e.size===1)return this.#e.keys().next().value;if(this.#e.size===0&&this.genomes.size===1)return this.genomes.keys().next().value}async ensureAssemblies(e){let t=[],n=new Set;for(let r of e){if(!r)continue;let e=SH(r);n.has(e)||(n.add(e),t.push(this.ensureAssembly(r)))}await Promise.all(t)}async ensureAssembly(e){if(typeof e==`object`)return this.#d(e);let t=this.genomes.get(e);if(t)return t;let n=this.#e.get(e);if(n)return this.#u(e,n);let r=this.#s(e);if(r)return r;throw this.#o(e)}getGenome(e){if(e&&typeof e==`object`)return this.#f(e);if(typeof e==`string`){let t=this.genomes.get(e);if(t)return t;if(this.#e.has(e))throw Error(`Genome ${e} has not been loaded yet. Call ensureAssembly("${e}") before accessing it.`);let n=this.#s(e);if(n)return n;throw this.#o(e)}let t=this.getDefaultAssemblyName();if(t)return this.getGenome(t);if(this.#e.size>1)throw Error(`Cannot pick a default genome! More than one have been configured!`);if(this.genomes.size===0&&this.#e.size)throw Error("Default genome is not loaded. Define root `assembly` or call ensureAssembly() first.");if(this.genomes.size>1)throw Error(`Cannot pick a default genome! More than one have been configured!`);if(this.genomes.size===0)throw Error(`No genomes have been configured!`);return this.genomes.values().next().value}#a(e){try{return new uR({name:e})}catch{return}}#o(e){return Error(`No genome with the name ${e} has been configured!`)}#s(e){let t=this.#a(e);if(t)return this.genomes.set(e,t),t}async#c(e,t){let n=this.#t.get(e);if(!n)throw Error(`No pending genome load for ${e}.`);await n;let r=this.genomes.get(e);if(!r)throw Error(t);return r}async#l(e,t){let n=t.load(this.baseUrl);this.#t.set(e,n);try{await n}catch(t){throw this.genomes.delete(e),t}finally{this.#t.delete(e)}return t}async#u(e,t){let n=this.genomes.get(e);if(n)return this.#t.has(e)?this.#c(e,`Loading genome ${e} failed before it became available.`):n;if(this.#t.has(e))return this.#c(e,`Loading genome ${e} failed before it became available.`);let r=new uR({name:e,...t});return this.genomes.set(e,r),`url`in t?this.#l(e,r):r}async#d(e){this.#p(e);let t=this.#m(e),n=this.genomes.get(t);if(n)return this.#t.has(t)?this.#c(t,`Loading inline assembly ${t} failed before it became available.`):n;if(this.#t.has(t))return this.#c(t,`Loading inline assembly ${t} failed before it became available.`);if(`contigs`in e){let n=new uR({name:t,contigs:e.contigs});return this.genomes.set(t,n),n}let r=new uR({name:t,url:e.url});return this.genomes.set(t,r),this.#l(t,r)}#f(e){this.#p(e);let t=this.#m(e),n=this.genomes.get(t);if(n){if(this.#t.has(t))throw Error(`Inline URL assembly ${t} has not been loaded yet. Call ensureAssembly() before accessing it.`);return n}if(`url`in e)throw Error(`Inline URL assemblies must be loaded first. Call ensureAssembly() before accessing it.`);let r=new uR({name:t,contigs:e.contigs});return this.genomes.set(t,r),r}#p(e){if(`contigs`in e==`url`in e)throw Error("Inline `scale.assembly` objects must define exactly one of `contigs` or `url`.")}#m(e){let t=JSON.stringify(e),n=this.#n.get(t);if(n)return n;let r=`inline_assembly_${this.#r}`;for(this.#r+=1;this.genomes.has(r)||this.#e.has(r)||this.#t.has(r);)r=`inline_assembly_${this.#r}`,this.#r+=1;return this.#n.set(t,r),r}};function SH(e){return typeof e==`string`?`name:${e}`:`inline:${JSON.stringify(e)}`}var CH={pages:[`Lato-Regular.png`],chars:[{id:87,width:53,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:43.491,chnl:15,x:0,y:0,page:0},{id:124,width:17,height:50,xoffset:0,yoffset:-32.193000000000005,xadvance:10.521,chnl:15,x:0,y:42,page:0},{id:40,width:20,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:94,page:0},{id:41,width:19,height:49,xoffset:0,yoffset:-32.571000000000005,xadvance:11.214,chnl:15,x:0,y:145,page:0},{id:36,width:32,height:49,xoffset:0,yoffset:-34.419000000000004,xadvance:24.360000000000003,chnl:15,x:0,y:196,page:0},{id:125,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642,chnl:15,x:0,y:247,page:0},{id:91,width:22,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:297,page:0},{id:93,width:19,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.852,chnl:15,x:0,y:347,page:0},{id:123,width:21,height:48,xoffset:0,yoffset:-32.193000000000005,xadvance:12.642,chnl:15,x:0,y:397,page:0},{id:106,width:19,height:48,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:0,y:447,page:0},{id:81,width:43,height:47,xoffset:0,yoffset:-30.429,xadvance:33.621,chnl:15,x:21,y:447,page:0},{id:77,width:45,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:38.997,chnl:15,x:66,y:447,page:0},{id:64,width:43,height:44,xoffset:0,yoffset:-28.539,xadvance:35.133,chnl:15,x:23,y:397,page:0},{id:92,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:68,y:397,page:0},{id:47,width:28,height:43,xoffset:0,yoffset:-30.933000000000003,xadvance:18.984,chnl:15,x:98,y:397,page:0},{id:109,width:42,height:32,xoffset:0,yoffset:-21.609,xadvance:34.545,chnl:15,x:113,y:447,page:0},{id:119,width:42,height:31,xoffset:0,yoffset:-21.315,xadvance:32.991,chnl:15,x:157,y:447,page:0},{id:42,width:25,height:42,xoffset:0,yoffset:-31.626,xadvance:17.85,chnl:15,x:128,y:397,page:0},{id:37,width:42,height:41,xoffset:0,yoffset:-30.387,xadvance:33.663000000000004,chnl:15,x:155,y:397,page:0},{id:79,width:42,height:41,xoffset:0,yoffset:-30.429,xadvance:33.621,chnl:15,x:199,y:397,page:0},{id:102,width:24,height:41,xoffset:0,yoffset:-30.534,xadvance:14.721,chnl:15,x:243,y:397,page:0},{id:100,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:269,y:397,page:0},{id:98,width:32,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.520000000000003,chnl:15,x:302,y:397,page:0},{id:56,width:32,height:41,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:336,y:397,page:0},{id:38,width:40,height:41,xoffset:0,yoffset:-30.429,xadvance:29.904000000000003,chnl:15,x:370,y:397,page:0},{id:108,width:17,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:9.912,chnl:15,x:412,y:397,page:0},{id:107,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:21.336,chnl:15,x:431,y:397,page:0},{id:48,width:33,height:41,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:464,y:397,page:0},{id:71,width:38,height:41,xoffset:0,yoffset:-30.429,xadvance:30.681,chnl:15,x:21,y:347,page:0},{id:83,width:31,height:41,xoffset:0,yoffset:-30.429,xadvance:22.785,chnl:15,x:61,y:347,page:0},{id:63,width:27,height:41,xoffset:0,yoffset:-30.429,xadvance:18.795,chnl:15,x:94,y:347,page:0},{id:105,width:18,height:41,xoffset:0,yoffset:-30.639000000000003,xadvance:10.08,chnl:15,x:123,y:347,page:0},{id:51,width:32,height:41,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:143,y:347,page:0},{id:104,width:31,height:41,xoffset:0,yoffset:-30.933000000000003,xadvance:23.436,chnl:15,x:177,y:347,page:0},{id:67,width:37,height:41,xoffset:0,yoffset:-30.429,xadvance:28.056,chnl:15,x:210,y:347,page:0},{id:88,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.258000000000003,chnl:15,x:249,y:347,page:0},{id:68,width:40,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:31.941000000000003,chnl:15,x:288,y:347,page:0},{id:70,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:23.751,chnl:15,x:330,y:347,page:0},{id:34,width:23,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:15.561000000000002,chnl:15,x:364,y:347,page:0},{id:72,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:389,y:347,page:0},{id:73,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.760000000000002,chnl:15,x:429,y:347,page:0},{id:74,width:24,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:17.745,chnl:15,x:449,y:347,page:0},{id:75,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.825000000000003,chnl:15,x:24,y:297,page:0},{id:76,width:31,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:21.567,chnl:15,x:475,y:347,page:0},{id:66,width:35,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:27.153,chnl:15,x:64,y:297,page:0},{id:78,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:32.067,chnl:15,x:101,y:297,page:0},{id:33,width:18,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:11.298,chnl:15,x:141,y:297,page:0},{id:80,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.221,chnl:15,x:161,y:297,page:0},{id:65,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:197,y:297,page:0},{id:82,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.313,chnl:15,x:237,y:297,page:0},{id:35,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:275,y:297,page:0},{id:84,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.801,chnl:15,x:310,y:297,page:0},{id:85,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:30.891,chnl:15,x:346,y:297,page:0},{id:86,width:38,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:28.434,chnl:15,x:385,y:297,page:0},{id:39,width:16,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:8.568000000000001,chnl:15,x:425,y:297,page:0},{id:69,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.255000000000003,chnl:15,x:443,y:297,page:0},{id:89,width:36,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:26.208,chnl:15,x:23,y:247,page:0},{id:90,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.284,chnl:15,x:477,y:297,page:0},{id:49,width:31,height:40,xoffset:0,yoffset:-30.156,xadvance:24.360000000000003,chnl:15,x:61,y:247,page:0},{id:50,width:32,height:40,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:94,y:247,page:0},{id:57,width:32,height:40,xoffset:0,yoffset:-30.429,xadvance:24.360000000000003,chnl:15,x:128,y:247,page:0},{id:94,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:162,y:247,page:0},{id:96,width:21,height:40,xoffset:0,yoffset:-30.429,xadvance:16.8,chnl:15,x:196,y:247,page:0},{id:55,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:219,y:247,page:0},{id:54,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:254,y:247,page:0},{id:53,width:32,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:289,y:247,page:0},{id:52,width:33,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:24.360000000000003,chnl:15,x:323,y:247,page:0},{id:103,width:31,height:39,xoffset:0,yoffset:-21.630000000000003,xadvance:21.84,chnl:15,x:358,y:247,page:0},{id:112,width:32,height:39,xoffset:0,yoffset:-21.651,xadvance:23.541,chnl:15,x:391,y:247,page:0},{id:113,width:31,height:39,xoffset:0,yoffset:-21.651,xadvance:23.520000000000003,chnl:15,x:425,y:247,page:0},{id:116,width:25,height:39,xoffset:0,yoffset:-28.182,xadvance:15.057,chnl:15,x:458,y:247,page:0},{id:121,width:31,height:38,xoffset:0,yoffset:-21.273,xadvance:21.651,chnl:15,x:34,y:196,page:0},{id:59,width:18,height:36,xoffset:0,yoffset:-20.706,xadvance:10.983,chnl:15,x:485,y:247,page:0},{id:43,width:32,height:34,xoffset:0,yoffset:-24.486,xadvance:24.360000000000003,chnl:15,x:67,y:196,page:0},{id:60,width:30,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:101,y:196,page:0},{id:62,width:31,height:33,xoffset:0,yoffset:-23.331000000000003,xadvance:24.360000000000003,chnl:15,x:133,y:196,page:0},{id:117,width:30,height:32,xoffset:0,yoffset:-21.273,xadvance:23.415000000000003,chnl:15,x:166,y:196,page:0},{id:99,width:29,height:32,xoffset:0,yoffset:-21.609,xadvance:20.055,chnl:15,x:198,y:196,page:0},{id:110,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:23.436,chnl:15,x:229,y:196,page:0},{id:111,width:32,height:32,xoffset:0,yoffset:-21.609,xadvance:23.814,chnl:15,x:262,y:196,page:0},{id:126,width:32,height:26,xoffset:0,yoffset:-16.128,xadvance:24.360000000000003,chnl:15,x:201,y:447,page:0},{id:101,width:31,height:32,xoffset:0,yoffset:-21.609,xadvance:22.176,chnl:15,x:296,y:196,page:0},{id:114,width:25,height:32,xoffset:0,yoffset:-21.651,xadvance:15.288,chnl:15,x:329,y:196,page:0},{id:115,width:27,height:32,xoffset:0,yoffset:-21.609,xadvance:18.186,chnl:15,x:356,y:196,page:0},{id:97,width:28,height:32,xoffset:0,yoffset:-21.651,xadvance:20.874,chnl:15,x:385,y:196,page:0},{id:118,width:31,height:31,xoffset:0,yoffset:-21.273,xadvance:21.672,chnl:15,x:415,y:196,page:0},{id:61,width:31,height:29,xoffset:0,yoffset:-19.089,xadvance:24.360000000000003,chnl:15,x:448,y:196,page:0},{id:120,width:30,height:31,xoffset:0,yoffset:-21.273,xadvance:20.916,chnl:15,x:21,y:145,page:0},{id:58,width:18,height:31,xoffset:0,yoffset:-20.706,xadvance:10.5,chnl:15,x:53,y:145,page:0},{id:122,width:28,height:31,xoffset:0,yoffset:-21.273,xadvance:18.984,chnl:15,x:73,y:145,page:0},{id:95,width:28,height:16,xoffset:0,yoffset:0,xadvance:19.278,chnl:15,x:235,y:447,page:0},{id:45,width:23,height:24,xoffset:0,yoffset:-14.175,xadvance:15.603000000000002,chnl:15,x:481,y:196,page:0},{id:44,width:17,height:21,xoffset:0,yoffset:-4.956,xadvance:9.534,chnl:15,x:103,y:145,page:0},{id:46,width:18,height:15,xoffset:0,yoffset:-4.956,xadvance:9.912,chnl:15,x:0,y:497,page:0},{id:32,width:0,height:0,xoffset:0,yoffset:0,xadvance:10.752,chnl:15,x:20,y:497,page:0}],info:{face:`Lato Regular`,size:42,bold:0,italic:0,charset:` !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~`.split(``),unicode:1,stretchH:100,smooth:1,aa:1,padding:[0,0,0,0],spacing:[2,2]},common:{lineHeight:50.400000000000006,base:41.454,scaleW:512,scaleH:512,pages:1,packed:0,alphaChnl:0,redChnl:0,greenChnl:0,blueChnl:0},kernings:[]},wH=`data:image/png;base64,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`,TH={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900},EH=class{constructor(e){this._webGLHelper=e,this.fontRepository=`https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/`,this._fonts=new mn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:SM(CH),texture:e?this._createTextureNow(wH):void 0}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,t=`normal`,n=`regular`){if(F(n)&&(n=TH[n.toLowerCase()],!n))throw Error(`Unknown font weight: `+n);let r={family:e,style:t,weight:n},i=this._fonts.get(r);return i||(i={metrics:void 0,texture:void 0},this._fonts.set(r,i),this._promises.push(this._loadFontEntry(i,r))),i}async _loadFontEntry(e,t){try{let n=kH(await this._loadMetadata(t.family),t),r=this.fontRepository+DH(t.family)+`/`+n.replace(/\.\w+/,``),i=this._createTexture(r+`.png`),a=this._loadFont(r+`.json`);e.texture=await i,e.metrics=await a}catch{console.warn(`Cannot load font: "${t.family}". Using the embedded default font.`),e.metrics=this._defaultFontEntry.metrics,e.texture=this._defaultFontEntry.texture}}_loadFont(e){let t=this._fontPromises.get(e);return t||(t=fetch(e).then(e=>{if(!e.ok)throw Error(`Could not load font: `+e.status);return e}).then(e=>e.json()).then(e=>SM(e)),this._fontPromises.set(e,t)),t}_loadMetadata(e){let t=DH(e),n=this._metadataPromises.get(t);if(!n){let e=this.fontRepository+t+`/METADATA.pb`;n=fetch(e).then(t=>{if(!t.ok)throw Error(`Could not load font metadata. Response status: `+t.status+`, url: `+e);return t}).then(e=>e.text()).then(e=>OH(e)).catch(e=>{console.warn(e.message)}),this._metadataPromises.set(t,n)}return n}getDefaultFont(){return this._defaultFontEntry}_createTexture(e){let t=this._webGLHelper.gl;return new Promise((n,r)=>{Sk(t,{src:e,min:t.LINEAR},(e,t,i)=>{e?r(e):n(t)})})}_createTextureNow(e){let t=this._webGLHelper.gl,n,r=new Promise((r,i)=>{n=Sk(t,{src:e,min:t.LINEAR},(e,t,n)=>{e?i(e):r(t)})});return this._promises.push(r),n}};function DH(e){return e.toLowerCase().replaceAll(/[^\w]/g,``)}function OH(e){let t=e.split(`
804
+ `),n=[],r;for(let e of t)if(e.startsWith(`fonts {`)&&(r={name:void 0,style:void 0,weight:void 0,filename:void 0,post_script_name:void 0,full_name:void 0,copyright:void 0}),e.startsWith(`}`)&&(n.push(r),r=void 0),r){let t=e.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(t){let e=t[1];r[e]=t[2]}if(t=e.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),t){let e=t[1];r[e]=+t[2]}}return n}function kH(e,t){let n,r=1/0;for(let i of e)if(t.family.localeCompare(i.name,void 0,{sensitivity:`accent`})==0&&t.style==i.style){let e=Math.abs(t.weight-i.weight);e<r&&(r=e,n=i)}return n?.filename}var AH=new Map,jH={Organism:`Homo sapiens`};async function MH(e,t,n={}){let r=e.symbol,i={...jH,GENE:r};for(let[e,t]of Object.entries(n))typeof t==`string`&&(i[e]=t);let a=AH.get(r)??await FH(i);return a?(AH.set(r,a),O`
804
805
  <div class="title">
805
806
  <strong>${a.name}</strong>
806
807
  ${a.description}
807
808
  </div>
808
809
  <p class="summary">${a.summary}</p>
809
810
  <p class="source">Source: NCBI RefSeq Gene</p>
810
- `):null}async function OH(e){let t={mode:`cors`},n=new URL(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi`);n.search=new URLSearchParams({db:`gene`,term:jH(e),sort:`relevance`,retmax:`1`,retmode:`json`}).toString();let r=(await fetch(n.toString(),t).then(e=>e.json())).esearchresult.idlist[0];if(r){let e=new URL(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi`);return e.search=new URLSearchParams({db:`gene`,id:r,retmode:`json`}).toString(),(await fetch(e.toString(),t).then(e=>e.json())).result[r]}else return null}var kH=xg(OH,500);function AH(e){return kH(e)}function jH(e){return Object.entries(e).filter(([e,t])=>t&&t.length>0).map(([e,t])=>`("${t}"[${e}])`).join(` AND `)}var MH=cr(`.4~r`),NH=cr(`.4~e`);function PH(e){return e==null?D` <span class="na">NA</span> `:N(e)?e.substring(0,30):Number.isInteger(e)?``+e:M(e)?Math.abs(e)>10**8||Math.abs(e)<10**-8?NH(e):MH(e):Ct(e)?e?`True`:`False`:Qe(e)?D`${e.map((t,n)=>[PH(t),n<e.length-1?`, `:Se])}`:`?`+typeof e+` `+e}function FH(e){let t=[];return IH(Object.entries(e),t),t}function IH(e,t,n){for(let[r,i]of e)r.startsWith(`_`)||(typeof i==`object`&&i&&!Array.isArray(i)?IH(Object.entries(i),t,(n||``)+r+`.`):t.push({key:(n||``)+r,value:i}))}var LH={x:`x2`,y:`y2`},RH=new Set([`auto`,`locus`,`interval`,`endpoints`,`disabled`]),zH=new WeakMap;function BH(e,t,n){let r=VH(t),i=UH(`x`,e,t,r,tU(n,`x`)),a=UH(`y`,e,t,r,tU(n,`y`)),o=i.rows.length>0&&a.rows.length>0,s=[...o?HH(`x`,i.rows):i.rows,...o?HH(`y`,a.rows):a.rows],c=new Set;for(let n of[i,a])for(let i of n.usedLinearizedFields){let n=r.get(i);!n||n.ambiguous||nU(e,i,n,t)&&(c.add(n.chrom),c.add(n.pos))}return{hiddenRowKeys:[...c],genomicRows:s,flattenDatumRows:()=>FH(e),formatGenomicLocus:(e,n)=>QH(t,e,n),formatGenomicInterval:(e,n)=>$H(t,e,n)}}function VH(e){let t=zH.get(e);if(t)return t;let n=XH(e);return zH.set(e,n),n}function HH(e,t){let n=e.toUpperCase()+` `;return t.map(e=>({key:n+e.key,value:e.value}))}function UH(e,t,n,r,i){let a=new Set;if(i===`disabled`)return{rows:[],usedLinearizedFields:a};let o=YH(n,e,t);if(!o)return{rows:[],usedLinearizedFields:a};o.field&&a.add(o.field);let s=YH(n,LH[e],t);s?.field&&a.add(s.field);let c=i===`auto`?WH(o,s,r):i;if(c===`endpoints`&&s){let[t,i]=KH(o,s,r);return{rows:[{key:`Endpoint 1`,value:QH(n,e,t.value)??String(t.value)},{key:`Endpoint 2`,value:QH(n,e,i.value)??String(i.value)}],usedLinearizedFields:a}}return c===`interval`&&s?{rows:[{key:`Interval`,value:$H(n,e,[o.value,s.value])??o.value+` - `+s.value}],usedLinearizedFields:a}:{rows:[{key:`Coordinate`,value:QH(n,e,o.value)??String(o.value)}],usedLinearizedFields:a}}function WH(e,t,n){if(!t)return`locus`;let r=GH(e.field,n),i=GH(t.field,n);return r&&i&&r!==i?`endpoints`:`interval`}function GH(e,t){let n=e?t.get(e):void 0;return n&&!n.ambiguous?n.groupId:void 0}function KH(e,t,n){let r=qH(e.field,n),i=qH(t.field,n);return r===2&&i!==2||i===1&&r!==1||r===2&&i===1?[t,e]:[e,t]}function qH(e,t){let n=e?t.get(e):void 0,r=[n?.pos,n?.chrom,e],i;for(let e of r){let t=JH(e);if(t!==void 0){if(i===void 0)i=t;else if(i!==t)return}}return i}function JH(e){if(!e)return;let t=e.toLowerCase(),n=t.match(/(?:^|[^0-9])(1|2)$/);if(n)return n[1]===`1`?1:2;let r=t.match(/(?:^|[_-])(first|second)(?:[_-]|$)/);if(r)return r[1]===`first`?1:2}function YH(e,t,n){let r=e.encoders?.[t];if(r?.scale?.type!==`locus`)return;let i=Eh(r);if(!i)return;let a=+i(n);if(Number.isFinite(a))return{value:a,field:i.fields?.length===1?i.fields[0]:void 0}}function XH(e){let t=new Map,n=0,r=e.unitView?.getCollector?.()?.parent;for(;r;){let e=r.params;if(e?.type===`linearizeGenomicCoordinate`){let r=Zl(e.as),i=Zl(e.pos),a=ZH(e.offset,i.length),o=`g`+ n++,s=e.channel===`y`?`y`:`x`;for(let n=0;n<r.length;n++){if(n>=i.length)continue;let c=t.get(r[n]);c?c.ambiguous=!0:t.set(r[n],{groupId:o,chrom:e.chrom,pos:i[n],offset:a[n],channel:s,ambiguous:!1})}}r=r.parent}return t}function ZH(e,t){let n=Zl(e);return n.length===0?Array(t).fill(0):n.length===1?Array(t).fill(n[0]):n.length===t?n:Array(t).fill(0)}function QH(e,t,n){return eU(e,t)?.formatLocus(n)}function $H(e,t,n){return eU(e,t)?.formatInterval(n)}function eU(e,t){let n=e.encoders?.[t]?.scale;return n?.type===`locus`&&`genome`in n?n.genome():void 0}function tU(e,t){let n=e?.genomicCoordinates?.[t],r=typeof n==`string`?n:n?.mode??`auto`;if(!RH.has(r))throw Error(`Unknown genomic coordinate display mode: "`+r+`"`);return r}function nU(e,t,n,r){let i=eU(r,n.channel);if(!i)return!1;let a=e[n.chrom],o=e[n.pos],s=e[t];if(a===void 0||o===void 0||s===void 0)return!1;let c=+o,l=+s;if(!Number.isFinite(c)||!Number.isFinite(l))return!1;let u;try{u=i.toContinuous(a,c-n.offset)}catch{return!1}return Math.abs(u-l)<1e-6}async function rU(e,t,n,r){let i=e=>Je(e).join(`.`),a=e=>e!=null&&!(typeof e==`number`&&Number.isNaN(e)),o=(e,n,r)=>{for(let[o,s]of Object.entries(t.encoders)){let t=s?Eh(s)?.fields:void 0;if(t&&t.some(t=>t===e||i(t)===e))switch(o){case`color`:case`fill`:case`stroke`:{let e=s(r);return e==null?a(n)?D`
811
+ `):null}async function NH(e){let t={mode:`cors`},n=new URL(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi`);n.search=new URLSearchParams({db:`gene`,term:IH(e),sort:`relevance`,retmax:`1`,retmode:`json`}).toString();let r=(await fetch(n.toString(),t).then(e=>e.json())).esearchresult.idlist[0];if(r){let e=new URL(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi`);return e.search=new URLSearchParams({db:`gene`,id:r,retmode:`json`}).toString(),(await fetch(e.toString(),t).then(e=>e.json())).result[r]}else return null}var PH=yg(NH,500);function FH(e){return PH(e)}function IH(e){return Object.entries(e).filter(([e,t])=>t&&t.length>0).map(([e,t])=>`("${t}"[${e}])`).join(` AND `)}var LH=or(`.4~r`),RH=or(`.4~e`);function zH(e){return e==null?O` <span class="na">NA</span> `:F(e)?e.substring(0,30):Number.isInteger(e)?``+e:P(e)?Math.abs(e)>10**8||Math.abs(e)<10**-8?RH(e):LH(e):xt(e)?e?`True`:`False`:k(e)?O`${e.map((t,n)=>[zH(t),n<e.length-1?`, `:xe])}`:`?`+typeof e+` `+e}function BH(e){let t=[];return VH(Object.entries(e),t),t}function VH(e,t,n){for(let[r,i]of e)r.startsWith(`_`)||(typeof i==`object`&&i&&!Array.isArray(i)?VH(Object.entries(i),t,(n||``)+r+`.`):t.push({key:(n||``)+r,value:i}))}var HH={x:`x2`,y:`y2`},UH=new Set([`auto`,`locus`,`interval`,`endpoints`,`disabled`]),WH=new WeakMap;function GH(e,t,n){let r=KH(t),i=JH(`x`,e,t,r,oU(n,`x`)),a=JH(`y`,e,t,r,oU(n,`y`)),o=i.rows.length>0&&a.rows.length>0,s=[...o?qH(`x`,i.rows):i.rows,...o?qH(`y`,a.rows):a.rows],c=new Set;for(let n of[i,a])for(let i of n.usedLinearizedFields){let n=r.get(i);!n||n.ambiguous||sU(e,i,n,t)&&(c.add(n.chrom),c.add(n.pos))}return{hiddenRowKeys:[...c],genomicRows:s,flattenDatumRows:()=>BH(e),formatGenomicLocus:(e,n)=>rU(t,e,n),formatGenomicInterval:(e,n)=>iU(t,e,n)}}function KH(e){let t=WH.get(e);if(t)return t;let n=tU(e);return WH.set(e,n),n}function qH(e,t){let n=e.toUpperCase()+` `;return t.map(e=>({key:n+e.key,value:e.value}))}function JH(e,t,n,r,i){let a=new Set;if(i===`disabled`)return{rows:[],usedLinearizedFields:a};let o=eU(n,e,t);if(!o)return{rows:[],usedLinearizedFields:a};o.field&&a.add(o.field);let s=eU(n,HH[e],t);s?.field&&a.add(s.field);let c=i===`auto`?YH(o,s,r):i;if(c===`endpoints`&&s){let[t,i]=ZH(o,s,r);return{rows:[{key:`Endpoint 1`,value:rU(n,e,t.value)??String(t.value)},{key:`Endpoint 2`,value:rU(n,e,i.value)??String(i.value)}],usedLinearizedFields:a}}return c===`interval`&&s?{rows:[{key:`Interval`,value:iU(n,e,[o.value,s.value])??o.value+` - `+s.value}],usedLinearizedFields:a}:{rows:[{key:`Coordinate`,value:rU(n,e,o.value)??String(o.value)}],usedLinearizedFields:a}}function YH(e,t,n){if(!t)return`locus`;let r=XH(e.field,n),i=XH(t.field,n);return r&&i&&r!==i?`endpoints`:`interval`}function XH(e,t){let n=e?t.get(e):void 0;return n&&!n.ambiguous?n.groupId:void 0}function ZH(e,t,n){let r=QH(e.field,n),i=QH(t.field,n);return r===2&&i!==2||i===1&&r!==1||r===2&&i===1?[t,e]:[e,t]}function QH(e,t){let n=e?t.get(e):void 0,r=[n?.pos,n?.chrom,e],i;for(let e of r){let t=$H(e);if(t!==void 0){if(i===void 0)i=t;else if(i!==t)return}}return i}function $H(e){if(!e)return;let t=e.toLowerCase(),n=t.match(/(?:^|[^0-9])(1|2)$/);if(n)return n[1]===`1`?1:2;let r=t.match(/(?:^|[_-])(first|second)(?:[_-]|$)/);if(r)return r[1]===`first`?1:2}function eU(e,t,n){let r=e.encoders?.[t];if(r?.scale?.type!==`locus`)return;let i=wh(r);if(!i)return;let a=+i(n);if(Number.isFinite(a))return{value:a,field:i.fields?.length===1?i.fields[0]:void 0}}function tU(e){let t=new Map,n=0,r=e.unitView?.getCollector?.()?.parent;for(;r;){let e=r.params;if(e?.type===`linearizeGenomicCoordinate`){let r=Yl(e.as),i=Yl(e.pos),a=nU(e.offset,i.length),o=`g`+ n++,s=e.channel===`y`?`y`:`x`;for(let n=0;n<r.length;n++){if(n>=i.length)continue;let c=t.get(r[n]);c?c.ambiguous=!0:t.set(r[n],{groupId:o,chrom:e.chrom,pos:i[n],offset:a[n],channel:s,ambiguous:!1})}}r=r.parent}return t}function nU(e,t){let n=Yl(e);return n.length===0?Array(t).fill(0):n.length===1?Array(t).fill(n[0]):n.length===t?n:Array(t).fill(0)}function rU(e,t,n){return aU(e,t)?.formatLocus(n)}function iU(e,t,n){return aU(e,t)?.formatInterval(n)}function aU(e,t){let n=e.encoders?.[t]?.scale;return n?.type===`locus`&&`genome`in n?n.genome():void 0}function oU(e,t){let n=e?.genomicCoordinates?.[t],r=typeof n==`string`?n:n?.mode??`auto`;if(!UH.has(r))throw Error(`Unknown genomic coordinate display mode: "`+r+`"`);return r}function sU(e,t,n,r){let i=aU(r,n.channel);if(!i)return!1;let a=e[n.chrom],o=e[n.pos],s=e[t];if(a===void 0||o===void 0||s===void 0)return!1;let c=+o,l=+s;if(!Number.isFinite(c)||!Number.isFinite(l))return!1;let u;try{u=i.toContinuous(a,c-n.offset)}catch{return!1}return Math.abs(u-l)<1e-6}async function cU(e,t,n,r){let i=e=>qe(e).join(`.`),a=e=>e!=null&&!(typeof e==`number`&&Number.isNaN(e)),o=(e,n,r)=>{for(let[o,s]of Object.entries(t.encoders)){let t=s?wh(s)?.fields:void 0;if(t&&t.some(t=>t===e||i(t)===e))switch(o){case`color`:case`fill`:case`stroke`:{let e=s(r);return e==null?a(n)?O`
811
812
  <span
812
813
  class="color-legend color-legend-unmapped"
813
814
  ></span>
814
- `:``:D`
815
+ `:``:O`
815
816
  <span
816
817
  class="color-legend"
817
818
  style=${`background-color: `+String(e)}
818
819
  ></span>
819
- `}default:}}return``},s=r??BH(e,t,n),c=s.flattenDatumRows?s.flattenDatumRows():FH(e),l=s.genomicRows??[],u=new Set(s.hiddenRowKeys??[]),d=c.filter(t=>!u.has(t.key)||o(t.key,t.value,e)),f=[...l,...d];if(!f.length)return;let p=D`
820
+ `}default:}}return``},s=r??GH(e,t,n),c=s.flattenDatumRows?s.flattenDatumRows():BH(e),l=s.genomicRows??[],u=new Set(s.hiddenRowKeys??[]),d=c.filter(t=>!u.has(t.key)||o(t.key,t.value,e)),f=[...l,...d];if(!f.length)return;let p=O`
820
821
  <table class="attributes">
821
- ${f.map(t=>{let n=PH(t.value),r=o(t.key,t.value,e);return D`
822
+ ${f.map(t=>{let n=zH(t.value),r=o(t.key,t.value,e);return O`
822
823
  <tr>
823
824
  <th>${t.key}</th>
824
825
  <td>${n} ${r}</td>
825
826
  </tr>
826
827
  `})}
827
828
  </table>
828
- `,m=t.unitView.getTitleText();return D`${m?D`
829
+ `,m=t.unitView.getTitleText();return O`${m?O`
829
830
  <div class="title">
830
831
  <strong>${m}</strong>
831
832
  </div>
832
- `:``}${p}`}var iU=class e extends DL{#e=new Map;constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.spec=e}async initializeChildren(){}getNextAutoName(e){let t=this.#e.get(e)??0;return this.#e.set(e,t+1),e+t}*[Symbol.iterator](){}visit(e){let t;try{t=e(this)}catch(e){throw e.view=this,e}if(t===`VISIT_STOP`)return t;if(t!==`VISIT_SKIP`){e.beforeChildren&&e.beforeChildren(this);for(let t of this){let n=t.visit(e);if(n===`VISIT_STOP`)return n}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(t){let n=this;for(let r=0;r<t.length;r++){if(!(n instanceof e))return;let i=n.#t(t[r]);if(!i)return;if(r===t.length-1)return i;n=i}}#t(e){for(let t of this)if(t.name===e)return t}findDescendantByName(e){let t;return this.visit(n=>{if(n.name==e)return t=n,TL}),t}getDefaultResolution(e,t){return`shared`}};function aU(e){lB(e),uB(e)}function oU(e){e.getDescendants().forEach(e=>e.configureViewOpacity())}var sU=new WeakMap,cU=new WeakMap;function lU(e,t){if(t!==null&&typeof t!=`string`)throw Error(`Import scope name must be a string or null.`);sU.set(e,{name:t})}function uU(e,t={}){let n=t.skipSubtree??!1?`excludeSubtree`:`exclude`;cU.set(e,n)}function dU(e){let t=e.getDataAncestors(),n=[];for(let e=t.length-1;e>=0;--e){let r=sU.get(t[e]);r&&typeof r.name==`string`&&n.push(r.name)}return n}function fU(e,t){e.visit(e=>{let n=cU.get(e);if(n===`excludeSubtree`)return wL;if(n!==`exclude`)return t(e)})}function pU(e){let t=[];for(let n of hU(e)){let r=gU(n);vU(e,r,t),yU(e,r,t)}return t}function mU(e){return e.persist===!1?!1:gg(e)?!0:hg(e)?!!e.bind:!1}function hU(e){let t=new Set([e]);return e.visit(e=>{let n=sU.get(e);n&&typeof n.name==`string`&&t.add(e)}),Array.from(t)}function gU(e){return dU(e)}function _U(e){return e.length?`import scope [`+e.join(` / `)+`]`:`import scope (root)`}function vU(e,t,n){let r=new Map;SU(e,t,e=>{for(let[t,n]of e.paramRuntime.paramConfigs){if(!mU(n))continue;let i=r.get(t);i?i.push(e):r.set(t,[e])}});for(let[e,i]of r){if(i.length<=1)continue;let r=i.map(e=>e.getPathString()).join(`, `);n.push({message:`Bookmarkable parameter "`+e+`" is not unique within `+_U(t)+`. Found in: `+r+`.`,scope:t})}}function yU(e,t,n){let r=bU(e,t);if(!r.length)return;let i=r.filter(e=>xU(e));if(i.length<=1)return;let a=new Map;for(let e of i){let t=sU.get(e),n=t?t.name:void 0;typeof n!=`string`||!n.length||a.set(n,(a.get(n)??0)+1)}for(let[e,r]of a)r>1&&n.push({message:`Import instance name "`+e+`" is used multiple times for addressable instances in `+_U(t)+`.`,scope:t})}function bU(e,t){let n=[];return SU(e,t,e=>{if(dU(e).length!==t.length+1)return;let r=sU.get(e);!r||typeof r.name!=`string`||n.push(e)},{includeNamedImportRoots:!0}),n}function xU(e){let t=!1;return e.visit(e=>{let n=cU.get(e);if(n===`excludeSubtree`)return wL;if(n!==`exclude`){for(let n of e.paramRuntime.paramConfigs.values())if(mU(n))return t=!0,TL}}),t}function SU(e,t,n,r={}){let i=r.includeNamedImportRoots??!1;e.visit(e=>{let r=sU.get(e),a=cU.get(e);if(a===`excludeSubtree`)return wL;if(a!==`exclude`&&CU(e,t,r,i))return n(e)})}function CU(e,t,n,r){let i=dU(e);return wU(i,t)?!0:!r||!n||typeof n.name!=`string`||i.length!==t.length+1?!1:TU(t,i)}function wU(e,t){return e.length===t.length?TU(e,t):!1}function TU(e,t){if(e.length>t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function EU(e){let t=[],n=!1,r=OU(e);for(let e of r){let r=e.getAssemblyRequirement();r.assembly&&t.push(r.assembly),r.needsDefaultAssembly&&(n=!0)}return{assemblies:t,needsDefaultAssembly:n}}async function DU(e,t){let{assemblies:n,needsDefaultAssembly:r}=EU(e);if(r){let e=t.getDefaultAssemblyName();if(!e)throw Error("No default assembly has been configured. Set root `assembly`, define exactly one entry in root `genomes`, or set `scale.assembly` on each locus scale.");n.push(e)}await t.ensureAssemblies(n)}function OU(e){let t=new Set,n=[`x`,`y`],r=e=>{for(let r of n){let n=e.getScaleResolution(r);n&&t.add(n)}};return r(e),fU(e,r),t}var kU=class{constructor(e,t){this.container=e,this.options=t}async addChildSpec(e,t){let{specs:n,insertAt:r}=this.options.getChildSpecs(),i=t??n.length,a=this.options.defaultName?.(i,e)??this.container.getNextAutoName(`child`),o=await this.container.context.createOrImportView(e,this.container,this.container,a,void 0,this.options.createViewOptions);await DU(o,this.container.context.genomeStore),r(i,e);let s=this.options.insertView(o,i);this.options.prepareView&&await this.options.prepareView(o,i,s),oU(o);let{dataSources:c,graphicsPromises:l}=rH(o,this.container.context.dataFlow,e=>e.isConfiguredVisible());return await oH(o,c),await dB(l),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow()),o}async removeChildAt(e){let{removeAt:t}=this.options.getChildSpecs();this.options.removeView(e),t(e),this.options.afterRemove&&await this.options.afterRemove(e),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow())}},AU=.5;function jU(e){return`multiscale`in e&&Qe(e.multiscale)}function MU(e){if(!e.multiscale.length)throw Error(`"multiscale" must contain at least one child view.`);let t=NU(e.stops,e.multiscale.length),n=e.multiscale.map((n,r)=>e.multiscale.length===1?n:{opacity:FU(r,e.multiscale.length,t),layer:[n]}),r={...e};return delete r.multiscale,delete r.stops,{...r,layer:n}}function NU(e,t){let n=`unitsPerPixel`,r,i=`auto`,a=AU;if(Qe(e))r=PU(e,t,`stops`);else if($e(e))n=e.metric??`unitsPerPixel`,r=PU(e.values,t,`stops.values`),i=e.channel??`auto`,a=e.fade??AU;else throw Error(`"stops" must be an array or an object with "values".`);if(n!==`unitsPerPixel`)throw Error(`Only "unitsPerPixel" is supported for "stops.metric" in multiscale.`);if(![`x`,`y`,`auto`].includes(i))throw Error(`"stops.channel" must be one of "x", "y", or "auto".`);if(!Number.isFinite(a)||a<0||a>.5)throw Error(`"stops.fade" must be a finite number in range [0, 0.5].`);if(r.forEach((e,t)=>{if(!R(e)&&(!Number.isFinite(e)||e<=0))throw Error(`Invalid stop value at index `+t+`. Stop values must be positive finite numbers.`)}),!r.some(R)){let e=r;for(let t=1;t<e.length;t++)if(e[t-1]<=e[t])throw Error(`"stops.values" must be strictly decreasing for "unitsPerPixel".`);for(let t=0;t<e.length-1;t++)if(e[t]*(1-a)<=e[t+1]*(1+a))throw Error(`Adjacent transitions overlap. Reduce fade or increase stop spacing.`)}return{metric:n,values:r,channel:i,fade:a}}function PU(e,t,n){if(!Qe(e))throw Error(`"`+n+`" must be an array of numbers or ExprRefs.`);let r=t-1;if(e.length!==r)throw Error(`Invalid stop count for multiscale. Expected `+r+`, got `+e.length+`.`);for(let t of e)if(!R(t)&&!Number.isFinite(t))throw Error(`"`+n+`" must contain only numbers or ExprRefs.`);return e}function FU(e,t,n){let r,i,a=n.values.map(e=>({hi:IU(e,1+n.fade),lo:IU(e,1-n.fade)}));if(e===0)r=[a[0].hi,a[0].lo];else if(e===t-1){let e=a.at(-1);r=[e.hi,e.lo]}else{let t=a[e-1],n=a[e];r=[t.hi,t.lo,n.hi,n.lo]}return i=e===0?[1,0]:e===t-1?[0,1]:[0,1,1,0],{channel:n.channel,unitsPerPixel:r,values:i}}function IU(e,t){return R(e)?{expr:`(`+e.expr+`) * `+t}:e*t}function LU(e){return`mark`in e&&(N(e.mark)||$e(e.mark))}function RU(e){return`layer`in e&&$e(e.layer)}function zU(e){return`import`in e}function BU(e){return`vconcat`in e&&Qe(e.vconcat)}function VU(e){return`hconcat`in e&&Qe(e.hconcat)}function HU(e){return`concat`in e&&Qe(e.concat)}var UU=class extends iU{#e=[];constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.spec=e,this.needsAxes={x:!0,y:!0}}async initializeChildren(){this.#e=await Promise.all(this.spec.layer.map(e=>this.context.createOrImportView(e,this,this,this.getNextAutoName(`layer`),e=>{if(!RU(e)&&!LU(e)&&!jU(e))throw new AN(`LayerView accepts only unit, layer, or multiscale specs as children!`,this)},{layoutSizeParams:`inherit`})))}async addChildSpec(e,t){return this.#t().addChildSpec(e,t)}async removeChildAt(e){await this.#t().removeChildAt(e)}#t(){return new kU(this,{getChildSpecs:()=>({specs:this.spec.layer,insertAt:(e,t)=>{this.spec.layer.splice(e,0,t)},removeAt:e=>{this.spec.layer.splice(e,1)}}),insertView:(e,t)=>(e.layoutParent??=this,this.#e.splice(t,0,e),e),removeView:e=>{let t=this.#e[e];if(!t)throw Error(`Child index out of range!`);t.disposeSubtree(),this.#e.splice(e,1)},defaultName:()=>this.getNextAutoName(`layer`),createViewOptions:{layoutSizeParams:`inherit`}})}get children(){return this.#e.slice()}*[Symbol.iterator](){for(let e of this.#e)yield e}render(e,t,n={}){if(super.render(e,t,n),this.isConfiguredVisible()){e.pushView(this,t);for(let r of this.#e)r.render(e,t,n);e.popView(this)}}propagateInteraction(e){this.handleInteraction(e,!0);for(let t=this.#e.length-1;t>=0;t--)if(this.#e[t].propagateInteraction(e),e.stopped)return;this.handleInteraction(e,!1)}},WU=class{constructor(e,t){this.n=e,this.maxCols=t??1/0}get nRows(){return this.maxCols==1/0?1:Math.ceil(this.n/this.maxCols)}get nCols(){return Math.min(this.n,this.maxCols)}get rowIndices(){let e=[],t=this.nCols,n=this.nRows;for(let r=0;r<n;r++){let n=[];e.push(n);for(let e=0;e<t;e++){let i=r*t+e;i<this.n&&n.push(i)}}return e}get colIndices(){let e=[],t=this.nCols,n=this.nRows;for(let r=0;r<t;r++){let i=[];e.push(i);for(let e=0;e<n;e++){let n=e*t+r;n<this.n&&i.push(n)}}return e}getCellIndex(e,t){let n;if(this.maxCols==1/0)n=t==0?e:void 0;else if(e>=this.maxCols)return;else n=t*this.nCols+e;return n<this.n?n:void 0}getCellCoords(e){if(!(e<0||e>=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}};function GU(e){return()=>e}var KU=class e{static create(t,n,r,i){return new e(GU(t),GU(n),GU(r),GU(i))}static ZERO=e.create(0,0,0,0);_offset(e,t){let n=this[`_`+e];if(t===0)return n;switch(typeof t){case`number`:return()=>n()+t;case`function`:return()=>n()+t();default:throw Error(`Not a number of function`)}}_passThrough(e){return this._offset(e,0)}constructor(e,t,n,r){this._x=e,this._y=t,this._width=n,this._height=r}get x(){return this._x()}get y(){return this._y()}get width(){return this._width()}get height(){return this._height()}get x2(){return this._x()+this._width()}get y2(){return this._y()+this._height()}equals(e){return e?this===e||this.x===e.x&&this.y===e.y&&this.width===e.width&&this.height===e.height:!1}modify(t){if(!Object.keys(t).length)return this;let n=e=>{let n=t[e];return typeof n==`number`?GU(n):typeof n==`function`?n:this._passThrough(e)};return new e(n(`x`),n(`y`),n(`width`),n(`height`))}translate(t,n){return t===0&&n===0?this:new e(this._offset(`x`,t),this._offset(`y`,n),this._passThrough(`width`),this._passThrough(`height`))}translateBy(e){return this.translate(e.x,e.y)}expand(t,n=1){return t.left==0&&t.top==0&&t.right==0&&t.bottom==0?this:new e(t.left?this._offset(`x`,-t.left*n):this._passThrough(`x`),t.top?this._offset(`y`,-t.top*n):this._passThrough(`y`),t.width?this._offset(`width`,t.width*n):this._passThrough(`width`),t.height?this._offset(`height`,t.height*n):this._passThrough(`height`))}shrink(e){return this.expand(e,-1)}intersect(t){return this===t||t==null?this:new e(()=>Math.max(this.x,t.x),()=>Math.max(this.y,t.y),()=>Math.min(this.x2,t.x2)-Math.max(this.x,t.x),()=>Math.min(this.y2,t.y2)-Math.max(this.y,t.y))}union(t){return this===t||t==null?this:new e(()=>Math.min(this.x,t.x),()=>Math.min(this.y,t.y),()=>Math.max(this.x2,t.x2)-Math.min(this.x,t.x),()=>Math.max(this.y2,t.y2)-Math.min(this.y,t.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new e(GU(this.x),GU(this.y),GU(this.width),GU(this.height))}containsPoint(e,t){return e>=this.x&&e<this.x2&&t>=this.y&&t<this.y2}normalizePoint(e,t,n=!1){let r={x:(e-this.x)/this.width,y:(t-this.y)/this.height};return n&&(r.y=1-r.y),r}denormalizePoint(e,t,n=!1){return n&&(t=1-t),{x:this.x+e*this.width,y:this.y+t*this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}toRoundedString(){return`Rectangle: x: ${Math.round(this.x)}, y: ${Math.round(this.y)}, width: ${Math.round(this.width)}, height: ${Math.round(this.height)}`}},qU={x:`axisX`,y:`axisY`},JU={top:`axisTop`,bottom:`axisBottom`,left:`axisLeft`,right:`axisRight`},YU={nominal:`axisNominal`,ordinal:`axisOrdinal`,quantitative:`axisQuantitative`,index:`axisIndex`,locus:`axisLocus`};function XU(e,{channel:t,orient:n,type:r,style:i}){let a=IN(i);return FN(e.flatMap(e=>{let i=qU[t],o=n?JU[n]:void 0,s=r?YU[r]:void 0,c=[e.axis,i?e[i]:void 0,o?e[o]:void 0,s?e[s]:void 0];return[...c.flatMap(e=>IN(e?.style)).map(t=>e.style?.[t]),...c,...a.map(t=>e.style?.[t])]}))}var ZU=`chromosome_ticks_and_labels`,QU=`labels_main`,$U=`ticks_and_labels`,eW=`axisExtent`,tW=`_labelWidth`,nW=10,rW=2;function iW(e){return e==`x`?`y`:`x`}var aW={x:[`bottom`,`top`],y:[`left`,`right`]},oW=Object.fromEntries(Object.entries(aW).map(([e,t])=>t.map(t=>[t,e])).flat(1));function sW(e){return oW[e]}var cW=class extends UU{#e;#t;#n;#r=!1;#i=!1;constructor(e,t,n,r,i,a){let o=sW(e.orient),s=XU(i.getConfigScopes(),{channel:o,orient:e.orient,type:t,style:e.style}),c={...s,...e},l={...s,...mW(t,c),...e};super(t==`locus`?gW(l,t):hW(l,t),n,r,i,`axis_${e.orient}`,{blockEncodingInheritance:!0,...a}),this.axisProps=l,this.#e=lW(l),this.#t=this.paramRuntime.allocateSetter(eW,this.#e),uU(this,{skipSubtree:!0})}async initializeChildren(){await super.initializeChildren();let e=this.getDescendants().find(e=>e instanceof aB&&e.name===QU);e instanceof aB&&(this.#n=e),!(!this.axisProps.labels||!this.#n)&&this.registerDisposer(this._addBroadcastHandler(`subtreeDataReady`,()=>this.#o()))}getSize(){let e={px:this.getPerpendicularSize()},t={grow:1};return oW[this.axisProps.orient]==`x`?new kP(t,e):new kP(e,t)}getPerpendicularSize(){return this.#e}isPickingSupported(){return!1}#a(){this.#i||(this.#i=!0,queueMicrotask(()=>{this.#i=!1,this.#s()}))}#o(){if(this.#r)return;let e=this.#n?.getCollector();e&&(this.#r=!0,this.registerDisposer(e.observe(()=>this.#a())),e.completed&&this.#a())}#s(){let e=sW(this.axisProps.orient),t=this.dataParent.getScaleResolution(e);if(t&&!t.isDomainDefinedExplicitly()&&!t.isDomainInitialized())return;let n=pW(this.axisProps,this.context,this.#n);if(n===void 0)return;let r=lW(this.axisProps,n);r>=this.#e+rW&&(this.#e=r,this.#t(r),this.invalidateSizeCache(),this.context.requestLayoutReflow())}};function lW(e,t){let n=uW(e);return e.labels&&(n+=t??dW(e)),fW(e,n)}function uW(e){let t=e.ticks&&e.tickSize||0;return e.labels&&(t+=e.labelPadding),e.title&&(t+=e.titlePadding+e.titleFontSize),t}function dW(e){return sW(e.orient)==`x`?e.labelFontSize:nW}function fW(e,t){return Math.min(e.maxExtent||1/0,Math.max(e.minExtent||0,t))}function pW(e,t,n){let r=n?.getCollector();if(!r?.completed)return;let i=0;r.visitData(e=>{i=Math.max(i,Number(e[tW])||0)});let a=(e.labelFont?t.fontManager.getFont(e.labelFont,e.labelFontStyle,e.labelFontWeight):t.fontManager.getDefaultFont()).metrics;if(!a)return;let o=(a.capHeight+a.descent)/a.common.base*e.labelFontSize,s=e.labelAngle*Math.PI/180,c=Math.abs(Math.sin(s)),l=Math.abs(Math.cos(s)),u=sW(e.orient)==`x`?i*c+o*l:i*l+o*c;return Math.ceil(u)}function mW(e,t){let n=t.orient,r=e==`nominal`||e==`ordinal`,i=`center`,a=`middle`,o=t.labelAngle??((n==`top`||n==`bottom`)&&r?-90:0);switch(n){case`left`:i=`right`;break;case`right`:i=`left`;break;case`top`:case`bottom`:Math.abs(o)>30?(i=o>0==(n==`bottom`)?`left`:`right`,a=`middle`):a=n==`top`?`alphabetic`:`top`;break;default:}return{labelAlign:i,labelAngle:o,labelBaseline:a}}function hW(e,t){let n=e,r=sW(n.orient),i=iW(r),a=n.orient==`bottom`||n.orient==`right`?1:-1,o=n.orient==`bottom`||n.orient==`left`?1:0,s=()=>({field:`value`,type:t}),c=()=>({name:`domain`,data:{values:[{}]},mark:{type:`rule`,clip:!1,strokeDash:n.domainDash,strokeCap:n.domainCap,color:n.domainColor,[i]:o,size:n.domainWidth}}),l=()=>({name:QU,transform:[{type:`measureText`,field:`label`,as:tW,fontSize:n.labelFontSize,font:n.labelFont,fontStyle:n.labelFontStyle,fontWeight:n.labelFontWeight}],mark:{type:`text`,clip:!1,align:n.labelAlign,angle:n.labelAngle,baseline:n.labelBaseline,font:n.labelFont,fontStyle:n.labelFontStyle,fontWeight:n.labelFontWeight,[i+`Offset`]:(n.tickSize+n.labelPadding)*a,[i]:o,size:n.labelFontSize,color:n.labelColor,minBufferSize:1500},encoding:{[r]:s(),text:{field:`label`}}}),u=()=>({name:`ticks`,mark:{type:`rule`,clip:!1,strokeDash:n.tickDash,strokeCap:n.tickCap,color:n.tickColor,size:n.tickWidth,minBufferSize:300},encoding:{[i]:{value:o},[i+`2`]:{value:{expr:`${o} - ${n.tickSize} / ${eW} * ${o?1:-1}`}}}}),d=()=>({name:`title`,data:{values:[{}]},mark:{type:`text`,clip:!1,align:`center`,baseline:n.orient==`bottom`?`bottom`:`top`,angle:[0,90,0,-90][[`top`,`right`,`bottom`,`left`].indexOf(n.orient)],text:n.title,color:n.titleColor,[r]:.5,[i]:1-o}}),f=()=>{let e={name:$U,encoding:{[r]:s()},layer:[]};return n.ticks&&e.layer.push(u()),n.labels&&e.layer.push(l()),e},p={resolve:{scale:{[r]:`forced`}},domainInert:!0,data:{lazy:{type:`axisTicks`,channel:r,axis:e}},layer:[]};return n.domain&&p.layer.push(c()),(n.ticks||n.labels)&&p.layer.push(f()),n.title&&p.layer.push(d()),p}function gW(e,t){let n=e,r=sW(n.orient),i=iW(r),a=n.orient==`bottom`||n.orient==`left`?1:0,o=()=>({name:`chromosome_ticks`,mark:{type:`rule`,strokeDash:e.chromTickDash,strokeDashOffset:e.chromTickDashOffset,[i]:a,[i+`2`]:{expr:`${a} - ${n.chromTickSize} / ${eW} * ${a?1:-1}`},color:e.chromTickColor,size:n.chromTickWidth}}),s=()=>{let i;switch(n.orient){case`top`:i={y:0,angle:0,paddingX:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case`bottom`:i={y:1,angle:0,paddingX:4,dy:n.chromLabelPadding+n.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case`left`:i={x:1,angle:-90,paddingY:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case`right`:i={x:0,angle:90,align:`right`,paddingY:4,dy:-n.chromLabelPadding};break;default:i={}}return{name:`chromosome_labels`,mark:{type:`text`,size:n.chromLabelFontSize,font:n.chromLabelFont,fontWeight:n.chromLabelFontWeight,fontStyle:n.chromLabelFontStyle,color:n.chromLabelColor,align:e.chromLabelAlign,baseline:`alphabetic`,clip:!1,...i},encoding:{[r+`2`]:{field:`continuousEnd`,type:t},text:{field:`name`}}}},c;switch(n.orient){case`bottom`:case`top`:c={};break;case`left`:c={labelAngle:-90,labelAlign:`center`,labelPadding:6};break;case`right`:c={labelAngle:90,labelAlign:`center`,labelPadding:6};break;default:c={}}let l=hW({...e,...c},t);if(e.chromTicks||e.chromLabels){let i={name:ZU,data:{lazy:{type:`axisGenome`,channel:sW(n.orient)}},encoding:{[r]:{field:`continuousStart`,type:t,band:0}},layer:[]};if(e.chromTicks&&i.layer.push(o()),e.chromLabels){i.layer.push(s());let e;l.layer.filter(e=>e.name==$U).forEach(t=>t.layer.filter(e=>e.name==QU).forEach(t=>{e=t.mark})),e&&(n.orient==`top`||n.orient==`bottom`?(e.viewportEdgeFadeWidthLeft=30,e.viewportEdgeFadeDistanceLeft=40):(e.viewportEdgeFadeWidthBottom=30,e.viewportEdgeFadeDistanceBottom=40))}l.layer.push(i)}return l}function _W(e,t,n){e.handleInteraction(t,!0),!t.stopped&&(n(),!t.stopped&&e.handleInteraction(t,!1))}function vW(e,t,n,r){return t()?(n(),e.stopped||r?.(),!0):!1}var yW=class{#e;#t=0;#n=0;constructor(e){this.#e=Array(e)}push(e){this.#e[this.#t]=e,this.#t=(this.#t+1)%this.size,this.#n=Math.min(this.#n+1,this.size)}get(){let e=this.#e;return this.#n<this.size?e.slice(0,this.#n):e.slice(this.#t,this.size).concat(e.slice(0,this.#t))}get size(){return this.#e.length}get length(){return this.#n}};function bW(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`touchgesture`&&(t.phase===`move`||t.phase===`end`)&&(t.pointerCount===1||t.pointerCount===2)&&Number.isFinite(t.xDelta)&&Number.isFinite(t.yDelta)&&Number.isFinite(t.zDelta)}function xW(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`wheel`&&Number.isFinite(t.deltaX)&&Number.isFinite(t.deltaY)&&Number.isFinite(t.deltaMode)&&typeof t.preventDefault==`function`}function SW(e,t,n){return new Proxy(e,{get(e,r){if(r===`deltaX`)return t;if(r===`deltaY`)return n;let i=Reflect.get(e,r,e);return typeof i==`function`?i.bind(e):i}})}function CW(e){let t=e=>e===null||typeof e!=`object`&&typeof e!=`function`;return new Proxy(e,{get(e,n,r){let i=Reflect.get(e,n,e);if(!t(i))throw Error(`Access to non-primitive property "${String(n)}" is not allowed.`);return i},getPrototypeOf(){return null},ownKeys(e){return Reflect.ownKeys(e).filter(n=>t(e[n])).map(e=>typeof e==`symbol`?e:String(e))},getOwnPropertyDescriptor(e,n){let r=Reflect.getOwnPropertyDescriptor(e,n);if(r&&!(`get`in r||`set`in r)&&t(r.value))return{value:r.value,writable:!!r.writable,enumerable:!!r.enumerable,configurable:!!r.configurable}},has(e,n){return n in e?t(e[n]):!1}})}var wW=class e{static fromMouseEvent(t){return new e(t.clientX,t.clientY)}constructor(e,t){this.x=e,this.y=t}subtract(t){return new e(this.x-t.x,this.y-t.y)}add(t){return new e(this.x-t.x,this.y-t.y)}multiply(t){return new e(this.x*t,this.y*t)}get length(){return Math.sqrt(this.x**2+this.y**2)}equals(e){return e?e===this||e.x===this.x&&e.y===this.y:!1}},TW=0,EW=new WeakMap,DW=IW(),OW=6;function kW(){TW=performance.now()}function AW(){return performance.now()-TW<50}function jW(e){return function(...t){return kW(),e(...t)}}function MW(e,t,n,r,i){n=jW(n);let a=LW(i);if(e.type==`wheel`){let i=e.wheelEvent,o=i.deltaMode?120:1;if(!i.deltaX&&!i.deltaY)return;a.smoother?.stop();let{x:s,y:c}=e.point;if(r){let n=NW(e.point,t,r);if(n)n.x!==void 0&&(s=n.x),n.y!==void 0&&(c=n.y);else{let e=r.mark.encoders;e.x&&!e.x2&&!e.x.constant&&(s=PW(e.x,r.datum)*t.width+t.x),e.y&&!e.y2&&!e.y.constant&&(c=(1-PW(e.y,r.datum))*t.height+t.y)}}(Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:s,y:c,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300})===!0:n({x:s,y:c,xDelta:-i.deltaX*o,yDelta:0,zDelta:0})===!0)&&i.preventDefault()}else if(e.type==`mousedown`&&e.mouseEvent.button===0){a.smoother&&a.smoother.stop();let t=new yW(30),r=e.mouseEvent;r.preventDefault(),e.target?.context.suspendHoverTracking();let o=wW.fromMouseEvent(r),s=e=>{let r=wW.fromMouseEvent(e);t.push({point:r,timestamp:performance.now()});let i=r.subtract(o);n({x:o.x,y:o.y,xDelta:i.x,yDelta:i.y,zDelta:0}),o=r},c=r=>{document.removeEventListener(`mousemove`,s),document.removeEventListener(`mouseup`,c),e.target?.context.resumeHoverTracking(r),zW(a,t,o,n,i,{minSampleCount:5})};document.addEventListener(`mouseup`,c,!1),document.addEventListener(`mousemove`,s,!1)}else if(e.type==`touchgesture`){if(!bW(e.uiEvent))return;let t=e.uiEvent,{xDelta:r,yDelta:o,zDelta:s}=t;if(t.phase===`end`){t.pointerCount===1&&zW(a,a.touchPanEventBuffer,a.touchPanLastPoint,n,i,{minSampleCount:2,minVelocityPxPerMs:.03}),RW(a);return}a.touchPanPointerCount!==t.pointerCount&&(RW(a),a.touchPanPointerCount=t.pointerCount);let c=new wW(e.point.x+r,e.point.y+o);if(a.touchPanLastPoint=c,t.pointerCount===1&&(r!==0||o!==0)&&a.touchPanEventBuffer.push({point:c,timestamp:performance.now()}),r===0&&o===0&&s===0)return;a.smoother?.stop(),n({x:e.point.x,y:e.point.y,xDelta:r,yDelta:o,zDelta:s})}}function NW(e,t,n){if(n.mark.getType()!==`link`)return;let r=n.mark.encoders;if(!(r.x&&r.y&&r.x2&&r.y2))return;let i=!r.x.constant&&!r.x2.constant,a=!r.y.constant&&!r.y2.constant;if(!i&&!a)return;let o=PW(r.x,n.datum)*t.width+t.x,s=(1-PW(r.y,n.datum))*t.height+t.y,c=PW(r.x2,n.datum)*t.width+t.x,l=(1-PW(r.y2,n.datum))*t.height+t.y,u=0,d=0;i&&(u+=(e.x-o)**2,d+=(e.x-c)**2),a&&(u+=(e.y-s)**2,d+=(e.y-l)**2);let f=r.size?+r.size(n.datum):0,p=Number.isFinite(f)?Math.max(f,OW):OW,m=p*p;if(!(Math.min(u,d)>m))return u<=d?{x:i?o:void 0,y:a?s:void 0}:{x:i?c:void 0,y:a?l:void 0}}function PW(e,t){let n=+e(t),r=e.scale;if(!r)return n;let i=FW(e.channelDef);if(r.type===`band`||r.type===`point`)return Number.isFinite(i)?n+r.bandwidth()*i:n;if(r.type===`index`||r.type===`locus`){if(!Number.isFinite(i))return n;let e=r;return n+e.step()*(i-e.align())}else return n}function FW(e){return e&&`band`in e?e.band??.5:.5}function IW(){return{smoother:void 0,touchPanEventBuffer:new yW(30),touchPanLastPoint:void 0,touchPanPointerCount:0}}function LW(e){if(!e)return DW;let t=EW.get(e);return t||(t=IW(),EW.set(e,t)),t}function RW(e){e.touchPanEventBuffer=new yW(30),e.touchPanLastPoint=void 0,e.touchPanPointerCount=0}function zW(e,t,n,r,i,a={}){if(!i||!n)return;let o=a.minSampleCount??5,s=a.minVelocityPxPerMs??0,c=performance.now(),l=t.get().filter(e=>c-e.timestamp<160);if(l.length<o||l.length>=5&&BW(l))return;let u=l.at(-1),d=l[0],f=u.point.subtract(d.point).multiply(1/(u.timestamp-d.timestamp));if(!Number.isFinite(f.x)||!Number.isFinite(f.y)||f.length<s)return;let p=n.x,m=n.y;e.smoother=hH(i,e=>{r({x:e.x,y:e.y,xDelta:p-e.x,yDelta:m-e.y,zDelta:0}),p=e.x,m=e.y},150,.5,{x:p,y:m}),e.smoother({x:n.x-f.x*250,y:n.y-f.y*250})}function BW(e){let t=e[Math.floor(e.length/2)],n=t.point.subtract(e[0].point).multiply(t.timestamp-e[0].timestamp),r=e.at(-1).point.subtract(t.point).multiply(e.at(-1).timestamp-t.timestamp),i=n.length;return r.length/i<.4}var VW=class extends UU{constructor(e,t,n,r,i,a){super(GW(e,t),n,r,i,`axisGrid_${e.orient}`,{blockEncodingInheritance:!0,...a}),this.axisProps=e,uU(this,{skipSubtree:!0})}getOrient(){return this.axisProps.orient}isPickingSupported(){return!1}};function HW(e,t){let n=e,r=sW(n.orient);return{name:`grid_lines`,data:{lazy:{type:`axisTicks`,channel:r,axis:e}},mark:{type:`rule`,strokeDash:n.gridDash,strokeCap:n.gridCap,color:n.gridColor,size:n.gridWidth,opacity:n.gridOpacity,minBufferSize:300},encoding:{[r]:{field:`value`,type:t}}}}function UW(e,t){let n=e,r=sW(n.orient);return{name:`chromosome_lines`,data:{lazy:{type:`axisGenome`,channel:r}},mark:{type:`rule`,strokeDash:n.chromGridDash,strokeCap:n.chromGridCap,color:n.chromGridColor,size:n.chromGridWidth,opacity:n.chromGridOpacity},encoding:{[r]:{field:`continuousStart`,type:t,band:0}}}}function WW(e,t){let n=e,r=sW(n.orient);return{name:`chromosome_fill`,data:{lazy:{type:`axisGenome`,channel:r}},mark:{type:`rect`},encoding:{[r]:{field:`continuousStart`,type:t,band:0},[r+`2`]:{field:`continuousEnd`,band:0},fill:{field:`odd`,type:`nominal`,scale:{domain:[!1,!0],range:[n.chromGridFillEven??`white`,n.chromGridFillOdd??`white`]}},opacity:{field:`odd`,type:`nominal`,scale:{type:`ordinal`,domain:[!1,!0],range:[n.chromGridFillEven?1:0,n.chromGridFillOdd?1:0]}}}}}function GW(e,t){let n={...e},r=[];return n.chromGrid&&(n.chromGridFillOdd||n.chromGridFillEven)&&r.push(WW(n,t)),n.chromGrid&&n.chromGridOpacity>0&&r.push(UW(n,t)),n.grid&&n.gridOpacity>0&&r.push(HW(n,t)),{name:`grid_layers`,resolve:{scale:{[sW(e.orient)]:`forced`,fill:`independent`,opacity:`independent`}},domainInert:!0,layer:r}}function KW(e){return FN(e.map(e=>e.title))}function qW(e,t){let n=IN(t);return n.length==0?{}:FN(e.flatMap(e=>n.map(t=>e.style?.[t])))}var JW={start:0,middle:.5,end:1},YW={start:`left`,middle:`center`,end:`right`},XW=`group-title`;function ZW(e){let t={},n={x:0,y:0},r=JW[e.anchor??`middle`];switch(e.orient){case`top`:n={x:r,y:1},t={baseline:`alphabetic`,angle:0};break;case`right`:n={x:1,y:1-r},t={baseline:`alphabetic`,angle:90};break;case`bottom`:n={x:r,y:0},t={baseline:`top`,angle:0};break;case`left`:n={x:0,y:r},t={baseline:`alphabetic`,angle:-90};break;default:}return{orientConfig:t,xy:n}}function QW(e,t=[]){if(!e)return;let n=N(e)?{text:e}:e;if(!n.text||n.orient==`none`)return;let r=KW(t),i=qW(t,n.style??XW),{orientConfig:a}=ZW({...r,...i,...n});return{...r,...a,...i,...n}}function $W(e,t=[]){let n=QW(e,t);if(!n)return;let{xy:r}=ZW(n),i={xOffset:0,yOffset:0};switch(n.orient){case`top`:i.yOffset=-n.offset;break;case`right`:i.xOffset=n.offset;break;case`bottom`:i.yOffset=n.offset;break;case`left`:i.xOffset=-n.offset;break;default:}return{data:{values:[{}]},mark:{type:`text`,tooltip:null,clip:!1,...r,...i,text:n.text,align:n.align??YW[n.anchor],angle:n.angle,baseline:n.baseline,dx:n.dx,dy:n.dy,color:n.color,font:n.font,size:n.fontSize,fontStyle:n.fontStyle,fontWeight:n.fontWeight}}}var eG=class extends aB{#e;#t=KU.ZERO;#n=KU.ZERO;#r=KU.ZERO;viewportOffset=0;#i;constructor(e,t,n={}){super({params:[{name:`scrollbarOpacity`,value:1}],opacity:{expr:`scrollbarOpacity`},data:{values:[{}]},mark:{type:`rect`,fill:`#b0b0b0`,fillOpacity:.6,stroke:`white`,strokeWidth:1,strokeOpacity:1,cornerRadius:5,clip:!1}},e.layoutParent.context,e.layoutParent,e.view,`scrollbar-`+t,{blockEncodingInheritance:!0}),uU(this,{skipSubtree:!0}),this.config={scrollbarSize:8,scrollbarPadding:2,scrollbarMinLength:20},this.#e=t,this.#i=n.onViewportOffsetChange;let r=this.config.scrollbarPadding,i=this.config.scrollbarSize;this.#t=this.#e==`vertical`?new KU(()=>this.#n.x+this.#n.width-i-r,()=>this.#n.y+r+this.scrollOffset,()=>i,()=>this.#s()):new KU(()=>this.#n.x+r+this.scrollOffset,()=>this.#n.y+this.#n.height-i-r,()=>this.#s(),()=>i),this.#f(this.viewportOffset),this.addInteractionListener(`mousedown`,e=>{if(e.stopPropagation(),this.#c()<=0)return;let n=e=>t==`vertical`?e.clientY:e.clientX;e.mouseEvent.preventDefault(),this.context.suspendHoverTracking();let r=this.scrollOffset,i=n(e.mouseEvent),a=e=>{let t=this.#c();if(t<=0)return;let a=sN(n(e)-i+r,0,t);this.interpolateViewportOffset({x:this.#u(a)})},o=e=>{document.removeEventListener(`mousemove`,a),document.removeEventListener(`mouseup`,o),this.context.resumeHoverTracking(e)};document.addEventListener(`mouseup`,o,!1),document.addEventListener(`mousemove`,a,!1)})}get scrollOffset(){return this.#l(this.viewportOffset)}setViewportOffset(e,{notify:t=!0,syncSmoother:n=!1}={}){this.viewportOffset=sN(e,0,this.#d()),n&&this.#f(this.viewportOffset),t&&this.#i&&this.#i(this.viewportOffset)}#a(){let e=this.#e==`horizontal`?`width`:`height`,t=this.#n[e],n=this.#r[e];return n>0?Math.min(1,t/n):1}#o(){let e=this.#e==`horizontal`?`width`:`height`;return Math.max(0,this.#n[e]-2*this.config.scrollbarPadding)}#s(){let e=this.#o(),t=this.#a()*e,n=this.config.scrollbarMinLength;return Math.min(e,Math.max(n,t))}#c(){return Math.max(0,this.#o()-this.#s())}#l(e){let t=this.#d(),n=this.#c();return t<=0||n<=0?0:e/t*n}#u(e){let t=this.#d(),n=this.#c();return t<=0||n<=0?0:e/n*t}#d(){let e=this.#e==`horizontal`?`width`:`height`;return Math.max(0,this.#r[e]-this.#n[e])}render(e,t,n){super.render(e,this.#t,n)}updateScrollbar(e,t){this.#n=e.flatten(),this.#r=t,this.setViewportOffset(this.viewportOffset,{notify:!1,syncSmoother:!0})}#f(e){this.interpolateViewportOffset=hH(this.context.animator,e=>{this.setViewportOffset(e.x,{notify:!0,syncSmoother:!1})},35,.4,{x:e})}},tG=`intervalDragActive`,nG=class extends UU{constructor(e,t,n={}){let r=t(),i=Object.keys(r.intervals),{zindex:a=1,...o}=n;if(zh.every(e=>!i.includes(e)))throw Error(`SelectionRect requires at least one of the channels 'x' or 'y' to be present in the selection.`);let s={name:`selectionRect`,domainInert:!0,params:[{name:tG,value:!1}],resolve:{scale:{x:`forced`,y:`forced`}},data:{values:rG(t())},encoding:{},layer:[]};i.includes(`x`)&&(s.encoding.x={field:`_x`,type:null,title:null},s.encoding.x2={field:`_x2`}),i.includes(`y`)&&(s.encoding.y={field:`_y`,type:null,title:null},s.encoding.y2={field:`_y2`}),s.layer.push({name:`selectionRectRect`,mark:{type:`rect`,clip:!0,fill:`#808080`,fillOpacity:.05,stroke:`black`,strokeWidth:1,strokeOpacity:.2,cursor:o.cursor??{expr:`intervalDragActive ? 'grabbing' : 'move'`},...o}});let c=t=>{let n=e.view.getScaleResolution(t);return`format(datum._${t}2 - datum._${t}, '.3s')`+(n.type===`locus`?` + 'b'`:``)},l=n.measure==`inside`?9:n.measure==`outside`?-9:0;i.includes(`x`)&&l!=0&&s.layer.push({name:`selectionRectTextX`,mark:{type:`text`,align:`center`,paddingX:5,dy:l,tooltip:null},encoding:{text:{expr:c(`x`)},y:i.includes(`y`)?{field:`_y2`,type:null,title:null}:{value:1},y2:null}}),i.includes(`y`)&&l!=0&&s.layer.push({name:`selectionRectTextY`,mark:{type:`text`,align:`center`,paddingY:5,dy:l,tooltip:null,angle:-90},encoding:{text:{expr:c(`y`)},x2:null}}),super(s,e.layoutParent.context,e.layoutParent,e.view,`selectionRect`,{blockEncodingInheritance:!0}),this._zindex=a,uU(this,{skipSubtree:!0}),this.registerDisposer(t.subscribe(()=>{let e=t(),n=this.flowHandle?.dataSource;if(!n)throw Error(`Cannot find selection rect data source handle!`);n.updateDynamicData(rG(e))}))}getZindex(){return this._zindex}};function rG(e){let t=e.intervals.x,n=e.intervals.y;return!t&&!n?[]:[{_x:t?.[0],_x2:t?.[1],_y:n?.[0],_y2:n?.[1]}]}function iG(e,t){let n=[`cell`,...IN(t?.style)];return FN(e.flatMap(e=>[e.view,...n.map(t=>e.style?.[t])]).concat([t]))}var aG=class{constructor(e,t,n){if(this.layoutParent=t,this.view=e,this.serial=n,this.background=void 0,this.backgroundStroke=void 0,this.axes={},this.gridLines={},this.scrollbars={},this.selectionRect=void 0,this.title=void 0,this.backgroundZindex=0,this.backgroundStrokeZindex=void 0,this.titleZindex=1,this.coords=KU.ZERO,e.needsAxes.x||e.needsAxes.y){let r=e.spec,i=iG(e.getConfigScopes(),`view`in r?r.view:void 0);this.backgroundZindex=i?.zindex??0,this.backgroundStrokeZindex=i?.strokeZindex;let a=cG(i);a&&(this.background=new aB(a,t.context,t,e,`background`+n,{blockEncodingInheritance:!0}),uU(this.background,{skipSubtree:!0}));let o=lG(i);o&&(this.backgroundStroke=new aB(o,t.context,t,e,`backgroundStroke`+n,{blockEncodingInheritance:!0}),uU(this.backgroundStroke,{skipSubtree:!0}));let s=QW(e.spec.title,e.getConfigScopes());this.titleZindex=s?.zindex??1;let c=$W(s);c&&(this.title=new aB(c,t.context,t,e,`title`+n,{blockEncodingInheritance:!0}),uU(this.title,{skipSubtree:!0}))}e.spec.viewportWidth!=null&&(this.scrollbars.horizontal=new eG(this,`horizontal`)),e.spec.viewportHeight!=null&&(this.scrollbars.vertical=new eG(this,`vertical`)),this.#e()}#e(){let e=this.view;for(let[t,n]of e.paramRuntime.paramConfigs){if(!(`select`in n))continue;let r=cg(n.select);if(!ug(r))continue;let i=r.encodings,a=Object.fromEntries(i.map(e=>{let n=this.view.getScaleResolution(e),r=n?.getResolvedScaleType();if(!n||!r||!ym(r))throw Error(`No continuous scale found for interval selection param "${t}" on channel "${e}"! Scale type is "${r??`none`}".`);return[e,n]})),o=i.some(e=>a[e].isZoomable()),s=r.on??(o?{type:`mousedown`,filter:`event.shiftKey`}:{type:`mousedown`});if(s.type!==`mousedown`)throw Error(`Interval selection param "${t}" currently supports only "mousedown" in "on".`);let c=s.filter?yL(s.filter):()=>!0,l=oG(r.zoom,o,t),u=l?.filter?yL(l.filter):()=>!0;if(this.selectionRect)throw Error(`Only one interval selection per container is currently allowed!`);let d=!1,f=!1,p=!1,m=null,h=(e,t)=>Object.fromEntries(i.map(n=>[n,[Math.min(e[n],t[n]),Math.max(e[n],t[n])]])),g=e.paramRuntime.createExpression(t),_=n=>{e.paramRuntime.setValue(t,n)};n.value&&_({type:`interval`,intervals:n.value});let v=()=>{_(ng(i))};this.selectionRect=new nG(this,g,r.mark);let y=e=>{this.selectionRect.paramRuntime.setValue(tG,e)};this.selectionRect.initializeChildren();let b=t=>{let n={x:0,y:0},r=e.coords.normalizePoint(t.x,t.y,!0);for(let e of i){let t=a[e].getScale();n[e]=t.invert(e==`x`?r.x:r.y)+([`index`,`locus`].includes(t.type)?.5:0)}return n},x=t=>{let{intervals:n}=t,r=(t,n,r)=>{let i=(e,t)=>t==null?null:a[e].getScale()(t),o=i(`x`,t)??r,s=i(`y`,n)??r;return e.coords.denormalizePoint(o,s,!0)},i=r(n.x?.[0],n.y?.[0],0),o=r(n.x?.[1],n.y?.[1],1);return KU.create(i.x,i.y,o.x-i.x,o.y-i.y)};e.addInteractionListener(`mousedown`,t=>{if(t.mouseEvent.button!=0)return;if(m=d?x(g()):null,m)y(!0),f=!0;else{let n=t.point;if(dg(g())&&(f=!0),c(t.proxiedMouseEvent))v(),p=!0;else if(dg(g())){let t=r=>{e.removeInteractionListener(`mouseup`,t);let i=r.point;n.subtract(i).length<2&&v()};e.addInteractionListener(`mouseup`,t);return}else return}t.stopPropagation(),e.context.suspendHoverTracking();let n=t.point,r=wW.fromMouseEvent(t.mouseEvent).subtract(n),o=e=>{let t=wW.fromMouseEvent(e).subtract(r),o;if(m){let e=t.subtract(n),r=m.translate(e.x,e.y);o=h(b(new wW(r.x,r.y)),b(new wW(r.x2,r.y2)))}else o=h(b(n),b(t));for(let e of i){let t=a[e],{zoomExtent:n}=t,r=o[e];if(m){let e=r[1]-r[0],t=n[0],i=n[1];r[0]<t&&(r[0]=t,r[1]=t+e),r[1]>i&&(r[1]=i,r[0]=i-e)}let i=sG(t,r);i?(r[0]=i[0],r[1]=i[1]):(r[0]=n[0],r[1]=n[0])}_({type:`interval`,intervals:o})},s=t=>{document.removeEventListener(`mousemove`,o),document.removeEventListener(`mouseup`,s),y(!1),p=!1,m&&=null,e.context.resumeHoverTracking(t)};document.addEventListener(`mousemove`,o),document.addEventListener(`mouseup`,s)}),e.addInteractionListener(`click`,e=>{e.mouseEvent.button==0&&(f&&=(e.stopPropagation(),!1))},!0);let S=e=>fg(g(),b(e));e.addInteractionListener(`dblclick`,e=>{S(e.point)&&(v(),e.stopPropagation())},!0),e.addInteractionListener(`wheel`,e=>{let t=e.wheelEvent;if(!l||!u(CW(t))||Math.abs(t.deltaX)>=Math.abs(t.deltaY)||!S(e.point))return;let n=g();if(!dg(n))return;let r=t.deltaMode?120:1,o=2**(t.deltaY*r/300),s=b(e.point),c={...n.intervals},d=!1;for(let e of i){let t=c[e];if(!t||t.length!==2)continue;let n=a[e],r=sG(n,Fz(n.getScale(),[...t],s[e],o,{onUnsupported:`identity`}));r&&(r[0]!==t[0]||r[1]!==t[1])&&(c[e]=r,d=!0)}d&&(_({...n,type:`interval`,intervals:c}),t.preventDefault(),e.stopPropagation())}),e.addInteractionListener(`mousemove`,e=>{S(e.point)?p||(d=!0):d=!1})}}*getChildren(){this.background&&(yield this.background),this.backgroundStroke&&(yield this.backgroundStroke),this.title&&(yield this.title),yield*Object.values(this.axes),yield*Object.values(this.gridLines),yield this.view,yield*Object.values(this.scrollbars),this.selectionRect&&(yield this.selectionRect)}async createAxes(){this.disposeAxisViews();let{view:e,axes:t,gridLines:n}=this,r=(e,n)=>{let r=e.getAxisProps();if(r===null)return;let i=r?{...r}:{};if(!i.orient){for(let e of aW[n])if(!t[e]){i.orient=e;break}if(!i.orient)throw Error(`No slots available for an axis! Perhaps a LayerView has more than two children?`)}if(i.title??=e.getTitle(),!aW[n].includes(i.orient))throw Error(`Invalid axis orientation "${i.orient}" on channel "${n}"!`);return i},i=async(e,n,i)=>{let a=r(e,n);if(a){if(t[a.orient])throw Error(`An axis with the orient "${a.orient}" already exists!`);let n=new cW(a,e.scaleResolution.type,this.layoutParent.context,this.layoutParent,i);t[a.orient]=n,await n.initializeChildren()}},a=async(e,t,i)=>{let a=r(e,t);if(!a)return;let o={...XU(i.getConfigScopes(),{channel:t,orient:a.orient,type:e.scaleResolution.type,style:a.style}),...a};if(o.grid||o.chromGrid){let t=new VW(o,e.scaleResolution.type,this.layoutParent.context,this.layoutParent,i);n[a.orient]=t,await t.initializeChildren()}};for(let t of[`x`,`y`])if(e.needsAxes[t]){let n=e.resolutions.axis[t];if(!n)continue;await i(n,t,e)}for(let t of[`x`,`y`])if(e.needsAxes[t]&&e.getConfiguredOrDefaultResolution(t,`axis`)!=`excluded`){let n=e.getAxisResolution(t);if(!n)continue;await a(n,t,e)}if(e instanceof UU){for(let t of e)for(let[e,n]of Object.entries(t.resolutions.axis)){let r=n.getAxisProps();r&&r.orient&&await i(n,e,t)}for(let t of e)for(let[e,n]of Object.entries(t.resolutions.axis)){let r=n.getAxisProps();r&&!r.orient&&await i(n,e,t)}}[...Object.values(t),...Object.values(n)].forEach(e=>e.visit(e=>{e instanceof aB&&e.resolve(`scale`)}))}disposeAxisViews(){for(let e of Object.values(this.axes))e.disposeSubtree();for(let e of Object.values(this.gridLines))e.disposeSubtree();this.axes={},this.gridLines={}}getOverhang(){let e=e=>{let t=this.axes[e];return t?Math.max(t.getPerpendicularSize()+(t.axisProps.offset??0),0):0};return new IP(e(`top`),e(`right`),e(`bottom`),e(`left`)).add(this.view.getOverhang())}getOverhangAndPadding(){return this.getOverhang().add(this.view.getPadding())}};function oG(e,t,n){let r=e===void 0?!t:e;if(r===!1)return;if(r===!0)return{type:`wheel`};let i=pg(r);if(i.type!==`wheel`)throw Error(`Interval selection param "${n}" currently supports only "wheel" in "zoom".`);return i}function sG(e,t){let n=e.getScale();return cz(t,e.zoomExtent,{roundToIntegers:n.type===`index`||n.type===`locus`})}function cG(e){if(e?.fill||e?.fillOpacity||e?.shadowOpacity)return{data:{values:[{}]},mark:{color:e.fill,opacity:e.fillOpacity??(e.fill?1:0),type:`rect`,clip:!1,tooltip:null,minHeight:1,minOpacity:0,shadowBlur:e.shadowBlur,shadowColor:e.shadowColor,shadowOffsetX:e.shadowOffsetX,shadowOffsetY:e.shadowOffsetY,shadowOpacity:e.shadowOpacity}}}function lG(e){if(!(!e||!e.stroke||e.strokeWidth===0||e.strokeOpacity===0))return{resolve:{scale:{x:`excluded`,y:`excluded`},axis:{x:`excluded`,y:`excluded`}},data:{values:[{x:0,y:0,x2:1,y2:0},{x:1,y:0,x2:1,y2:1},{x:1,y:1,x2:0,y2:1},{x:0,y:1,x2:0,y2:0}]},mark:{size:e.strokeWidth??1,color:e.stroke??`lightgray`,strokeCap:`square`,opacity:e.strokeOpacity??1,type:`rule`,clip:!1,tooltip:null},encoding:{x:{field:`x`,type:`quantitative`,scale:null},y:{field:`y`,type:`quantitative`,scale:null},x2:{field:`x2`},y2:{field:`y2`}}}}var uG={pan:{baseSpeed:1,maxExtraSpeed:3,pressHalfLifeMs:30,releaseHalfLifeMs:100,holdGrowthHalfLifeMs:800,stopVelocity:.01},zoom:{baseSpeed:3,maxExtraSpeed:15,pressHalfLifeMs:10,releaseHalfLifeMs:100,holdGrowthHalfLifeMs:600,stopVelocity:.01}},dG=class{#e;#t;#n;#r;#i;constructor(e=uG){this.#r=e.pan,this.#i=e.zoom,this.#e={KeyW:!1,KeyA:!1,KeyS:!1,KeyD:!1},this.#t={velocity:0,holdMs:0,direction:0},this.#n={velocity:0,holdMs:0,direction:0}}isNavigationKey(e){return e===`KeyW`||e===`KeyA`||e===`KeyS`||e===`KeyD`}handleKeyDown(e){return this.#a(e,!0)}handleKeyUp(e){return this.#a(e,!1)}reset(){this.#e.KeyW=!1,this.#e.KeyA=!1,this.#e.KeyS=!1,this.#e.KeyD=!1,this.#t.velocity=0,this.#t.holdMs=0,this.#t.direction=0,this.#n.velocity=0,this.#n.holdMs=0,this.#n.direction=0}step(e){if(e<=0)return{panDelta:0,zoomDelta:0,active:this.isActive()};{let t=fG(this.#e.KeyD,this.#e.KeyA),n=fG(this.#e.KeyW,this.#e.KeyS),r=pG(this.#t,t,e,this.#r),i=pG(this.#n,n,e,this.#i),a=e/1e3;return{panDelta:r*a,zoomDelta:i*a,active:this.isActive()}}}isActive(){return this.#e.KeyW||this.#e.KeyA||this.#e.KeyS||this.#e.KeyD?!0:this.#t.velocity!==0||this.#n.velocity!==0}#a(e,t){if(this.isNavigationKey(e)){let n=e;return this.#e[n]===t?!1:(this.#e[n]=t,!0)}else return!1}};function fG(e,t){return e===t?0:t?1:-1}function pG(e,t,n,r){if(t!==0){e.direction!==t&&(e.holdMs=0),e.holdMs+=n;let i=r.maxExtraSpeed*(1-2**(-e.holdMs/r.holdGrowthHalfLifeMs)),a=t*(r.baseSpeed+i);e.velocity=mG(e.velocity,a,n,r.pressHalfLifeMs)}else e.holdMs=0,e.velocity=mG(e.velocity,0,n,r.releaseHalfLifeMs),Math.abs(e.velocity)<r.stopVelocity&&(e.velocity=0);return e.direction=t,e.velocity}function mG(e,t,n,r){return t+(e-t)*2**(-n/r)}function hG(e){let t={x:new Set,y:new Set};return e.visit(e=>{for(let[n,r]of Object.entries(t)){let t=e.getScaleResolution(n);t&&t.isZoomable()&&r.add(t)}}),t}function gG(e){let t=hG(e).x;if(t.size===1){let n=t.values().next().value,r=e.getScaleResolution(`x`);return!r||r!==n?void 0:n}}var _G=class{#e;#t;#n=.5;#r=new dG;#i=!1;#a=0;#o=e=>{if(!this.#i)return;let t=gG(this.#t);if(!t){this.#r.reset(),this.#i=!1,this.#a=0;return}let n=Math.max(0,e-this.#a);this.#a=e;let r=this.#r.step(n);(r.panDelta!==0||r.zoomDelta!==0)&&t.zoom(2**r.zoomDelta,this.#n,r.panDelta)&&(kW(),this.#e.animator.requestRender()),r.active?this.#e.animator.requestTransition(this.#o):(this.#i=!1,this.#a=0)};constructor({context:e,viewRoot:t}){this.#e=e,this.#t=t,this.#s()}handlePointerEvent(e,t){if(e){let n=e.view;if(typeof n.getKeyboardZoomAnchorX==`function`){let e=n.getKeyboardZoomAnchorX(t.point);Number.isFinite(e)&&(this.#n=Math.max(0,Math.min(1,e)))}else this.#n=e.coords.normalizePoint(t.point.x,t.point.y).x}else return}#s(){let e=this.#e.addKeyboardListener;typeof e==`function`&&(e(`keydown`,e=>{vG(e)||this.#r.isNavigationKey(e.code)&&gG(this.#t)&&this.#r.handleKeyDown(e.code)&&(e.preventDefault(),this.#c())}),e(`keyup`,e=>{this.#r.isNavigationKey(e.code)&&this.#r.handleKeyUp(e.code)&&gG(this.#t)&&(e.preventDefault(),this.#c())}))}#c(){this.#i||(this.#i=!0,this.#a=performance.now(),this.#e.animator.requestTransition(this.#o))}};function vG(e){return!!(e.altKey||e.ctrlKey||e.metaKey||yG(e.target))}function yG(e){if(!e||typeof e!=`object`)return!1;let t=e;if(t.isContentEditable)return!0;if(typeof t.nodeName==`string`){let e=t.nodeName.toLowerCase();return e===`input`||e===`textarea`||e===`select`}return!1}var bG=Object.freeze({size:1,color:`#ccc`,opacity:1,strokeDash:[4,4],strokeCap:`butt`}),xG=class{#e;#t;#n;#r;#i=[];#a=[];#o={x:[0,0],y:[0,0]};constructor({direction:e,props:t,context:n,layoutParent:r,dataParent:i,getName:a}){this.#e=e,this.#t=t.includePlotMargin??!0,this.#r=t.zindex??0;let o={...t};delete o.includePlotMargin,delete o.zindex,this.#n=this.#l(o,n,r,i,a)}get view(){return this.#n}getZindex(){return this.#r}update(e,t,n,r,i,a){this.#s(e,t,r,i),this.#c(n,a)}render(e,t,n){this.#n.render(e,t,n)}#s(e,t,n,r){if(this.#a.length=0,t<2)return;let i=this.#e===`vertical`?`column`:`row`,a=r?3:2;for(let r=1;r<t;r++){let t=e[n(i,r)-a],o=t?t.location:0,s=t?t.size:0;this.#a.push(o+s/2)}}#c(e,t){let n=this.#t?0:t.left,r=this.#t?e.width:e.width-t.right,i=this.#t?0:t.bottom,a=this.#t?e.height:e.height-t.top;this.#i.length=this.#a.length;for(let t=0;t<this.#a.length;t++){let o=this.#a[t],s=this.#i[t]??{};if(this.#e===`vertical`)s.x=o,s.x2=o,s.y=i,s.y2=a;else{let t=e.height-o;s.x=n,s.x2=r,s.y=t,s.y2=t}this.#i[t]=s}let o=this.#n.flowHandle?.dataSource;if(!o)return;o.updateDynamicData(this.#i),this.#o.x[1]=e.width,this.#o.y[1]=e.height;let s=this.#n.getScaleResolution(`x`)?.getScale();s&&s.domain(this.#o.x);let c=this.#n.getScaleResolution(`y`)?.getScale();c&&c.domain(this.#o.y)}#l(e,t,n,r,i){let a=new aB(CG(e),t,n,r,this.#e===`horizontal`?i(`separatorHorizontal`):i(`separatorVertical`),{blockEncodingInheritance:!0});return uU(a,{skipSubtree:!0}),a}};function SG(e){if(!e)return null;let t=e===!0?{...bG}:{...bG,...e};return t.strokeDash===bG.strokeDash&&(t.strokeDash=bG.strokeDash.slice()),t}function CG(e){return{domainInert:!0,data:{values:[]},resolve:{scale:{x:`excluded`,y:`excluded`},axis:{x:`excluded`,y:`excluded`}},mark:{...e,type:`rule`,clip:e.clip??!1,tooltip:null},encoding:{x:{field:`x`,type:`quantitative`,scale:{nice:!1,zero:!1}},y:{field:`y`,type:`quantitative`,scale:{nice:!1,zero:!1}},x2:{field:`x2`},y2:{field:`y2`}}}}var wG=Object.freeze({background:0,separator:10,grid:20,backgroundStroke:30,axis:40,selectionRect:80,scrollbar:90,title:100}),TG=10,EG=class extends iU{#e=1/0;#t=10;#n=[];#r={};#i=0;#a={};#o=null;constructor(e,t,n,r,i,a,o){super(e,t,n,r,i,o),this.spec=e,this.#t=e.spacing??10,this.#e=a,this.#n=[],this.wrappingFacet=!1;let s=SG(e.separator);if(s)for(let t of AG(e))this.#a[t]=new xG({direction:t,props:s,context:this.context,layoutParent:this,dataParent:this,getName:e=>this.getNextAutoName(e)});this.layoutParent||(this.#o=new _G({context:this.context,viewRoot:this}))}appendChild(e){this.appendChildView(e)}appendChildView(e){return this.insertChildViewAt(e,this.#n.length)}insertChildViewAt(e,t){e.layoutParent??=this;let n=new aG(e,this,this.#i);return this.#i++,this.#n.splice(t,0,n),this.invalidateSizeCache(),n}removeChildView(e){let t=this.#n.findIndex(t=>t.view===e);if(t<0)throw Error(`Not my child view!`);this.removeChildAt(t)}removeChildAt(e){let t=this.#n[e];if(!t)throw Error(`Child index out of range!`);this.#l(t),this.#n.splice(e,1),this.invalidateSizeCache()}get#s(){return this.#n.filter(e=>e.view.isConfiguredVisible())}get#c(){return new WU(this.#s.length,this.#e??1/0)}setChildren(e){for(let e of this.#n)this.#l(e);this.#n=[];for(let t of e)this.appendChild(t);this.invalidateSizeCache()}#l(e){e.disposeAxisViews();for(let t of e.getChildren())t.disposeSubtree()}get children(){return this.#n.map(e=>e.view)}get childCount(){return this.#n.length}async createAxes(){await this.syncSharedAxes(),await Promise.all(this.#n.map(e=>e.createAxes()))}async syncSharedAxes(){for(let e of Object.values(this.#r))e.disposeSubtree();this.#r={};let e=[];for(let t of zh){let n=this.resolutions.axis[t];if(!n)continue;let r=n.getAxisProps();if(!r)continue;let i=new cW({title:n.getTitle(),orient:aW[t][0],...r},n.scaleResolution.type,this.context,this,this);e.push(i.initializeChildren()),this.#r[t]=i}await Promise.all(e)}*[Symbol.iterator](){for(let e of this.#n)yield*e.getChildren();for(let e of Object.values(this.#a))yield e.view;for(let e of Object.values(this.#r))yield e}#u(e){let t=e==`column`?`width`:`height`,n=(t,n)=>t.map(t=>{let r=this.#s[t].getOverhangAndPadding();return e==`column`?n?r.right:r.left:n?r.bottom:r.top}).reduce((e,t)=>Math.max(e,t),0);return this._cache(`size/directionSizes/${e}`,()=>this.#c[e==`column`?`colIndices`:`rowIndices`].map(e=>({axisBefore:n(e,0),axisAfter:n(e,1),view:OP(e.map(e=>this.#s[e].view.getViewportSize()[t]))})))}#d(e){let t=this.#u(e),n=[];n.push(AP);for(let[e,r]of t.entries())e>0&&n.push({px:this.#t,grow:0}),(e==0||this.wrappingFacet)&&n.push(AP),n.push({px:r.axisBefore,grow:0}),n.push(r.view),n.push({px:r.axisAfter,grow:0}),(e==t.length-1||this.wrappingFacet)&&n.push(AP);return n}#f(e){let t=0,n=0,r=e==`row`?this.spec.height:this.spec.width;if(r||r===0)return FP(r);let i=this.#u(e);for(let[e,r]of i.entries())e>0&&(n+=this.#t),(e==0||this.wrappingFacet)&&(n+=0),n+=r.axisBefore,n+=r.view.px??0,t+=r.view.grow??0,n+=r.axisAfter,(e==i.length-1||this.wrappingFacet)&&(n+=0);return{px:n,grow:t}}#p(e,t){return e==`row`&&this.wrappingFacet?1+6*t+2:2+4*t+1}getOverhang(){return this.#m().union(this.#h())}#m(){let e=this.#u(`column`),t=this.#u(`row`);return!e.length||!t.length?IP.zero():new IP(t.at(0).axisBefore,e.at(-1).axisAfter,t.at(-1).axisAfter,e.at(0).axisBefore)}#h(){let e=e=>{let t=oW[e],n=this.#r[t];return n?.axisProps.orient===e?Math.max(n.getPerpendicularSize()+(n.axisProps.offset??0),0):0};return new IP(e(`top`),e(`right`),e(`bottom`),e(`left`))}getSize(){return this._cache(`size`,()=>new kP(this.#f(`column`),this.#f(`row`)).addPadding(this.#h()))}render(e,t,n={}){if(super.render(e,t,n),!this.isConfiguredVisible())return;this.layoutParent||(t=t.shrink(this.getPadding())),t=t.shrink(this.#h()),e.pushView(this,t);let r=e.getDevicePixelRatio(),i={devicePixelRatio:r},a=DP(this.#d(`column`),t.width,i),o=DP(this.#d(`row`),t.height,i),s=new WU(this.#s.length,this.#e??1/0),c=e=>Math.round(e*r)/r,l=[];for(let[e,r]of this.#s.entries()){let{view:i,axes:u,gridLines:d,background:f,backgroundStroke:p,title:m,selectionRect:h}=r,[g,_]=s.getCellCoords(e),v=a[this.#p(`column`,g)],y=o[this.#p(`row`,_)],b=i.getViewportSize(),x=i.getSize(),S=i.getOverhang(),C=v.location-S.left,w=y.location-S.top,T=(e,t)=>(e[t].grow?(t==`width`?v:y).size:e[t].px)+S[t],E=T(b,`width`),ee=T(b,`height`),te=T(x,`width`),ne=T(x,`height`),re=r.scrollbars.horizontal,ie=r.scrollbars.vertical,ae=re?()=>c(re.viewportOffset):()=>0,oe=ie?()=>c(ie.viewportOffset):()=>0,se=new KU(()=>t.x+C,()=>t.y+w,()=>E,()=>ee),ce=i.isScrollable(),le=ce?new KU(()=>t.x+C-ae(),()=>t.y+w-oe(),()=>te,()=>ne):se;r.coords=se;let ue=n.clipRect?se.intersect(n.clipRect):se;l.push({col:g,row:_,view:i,axes:u,gridLines:d,background:f,backgroundStroke:p,title:m,selectionRect:h,viewportCoords:se,viewCoords:le,clippedChildCoords:ue,viewWidth:te,viewHeight:ne,scrollable:ce,gridChild:r})}let u=this.#m(),d=[],f=[],p=[],m=0,h=(e,t,n)=>{(e>0?f:d).push({zindex:e,order:t,sequence:m++,render:n})},g=e=>{e.sort((e,t)=>e.zindex-t.zindex||e.order-t.order||e.sequence-t.sequence);for(let t of e)t.render()};for(let t of l)t.background&&h(t.gridChild.backgroundZindex,wG.background,()=>t.background?.render(e,t.clippedChildCoords,{...n,clipRect:void 0}));let _=this.#a.vertical;_&&(_.update(a,s.nCols,t,(e,t)=>this.#p(e,t),this.wrappingFacet,u),h(_.getZindex(),wG.separator,()=>_.render(e,t,n)));let v=this.#a.horizontal;v&&(v.update(o,s.nRows,t,(e,t)=>this.#p(e,t),this.wrappingFacet,u),h(v.getZindex(),wG.separator,()=>v.render(e,t,n)));for(let r of l){let{view:i,axes:a,gridLines:o,backgroundStroke:c,title:l,selectionRect:u,viewportCoords:d,viewCoords:f,clippedChildCoords:m,viewWidth:g,viewHeight:_,scrollable:v,gridChild:y,col:b,row:x}=r,S=DG(i)||v;for(let t of Object.values(o))h(t.axisProps.zindex??0,wG.grid,()=>t.render(e,d,n));p.push(()=>i.render(e,f,S?{...n,clipRect:m}:n)),c&&h(MG(y.backgroundStrokeZindex,S),wG.backgroundStroke,()=>c?.render(e,m,{...n,clipRect:void 0}));for(let[t,r]of Object.entries(a)){let i=t==`left`||t==`right`?`vertical`:`horizontal`,a=y.scrollbars[i],o=NG(a?d.modify(i==`vertical`?{y:()=>f.y,height:_}:{x:()=>f.x,width:g}):d,t,r),s=n.clipRect;a&&(s=o.intersect(s).intersect(a?d.modify(i==`vertical`?{x:-1e5,width:2e5}:{y:-1e5,height:2e5}):void 0)),h(jG(r.axisProps.zindex,S),wG.axis,()=>r.render(e,o,{...n,clipRect:s}))}for(let t of Object.values(this.#r)){let r=t.axisProps.orient;(r==`left`&&b==0||r==`right`&&b==s.nCols-1||r==`top`&&x==0||r==`bottom`&&x==s.nRows-1)&&h(jG(t.axisProps.zindex,S),wG.axis,()=>t.render(e,NG(d.shrink(y.view.getOverhang()),r,t),n))}u&&h(u.getZindex(),wG.selectionRect,()=>u?.render(e,f,n));for(let r of Object.values(y.scrollbars))h(1,wG.scrollbar,()=>{r.updateScrollbar(d,f),r.render(e,t,n)});l&&h(y.titleZindex,wG.title,()=>l?.render(e,d,n))}g(d);for(let e of p)e();g(f),e.popView(this)}propagateInteraction(e){_W(this,e,()=>{let t=this.#s.find(t=>t.coords.containsPoint(e.point.x,e.point.y)),n=t?.view;if(e.type===`wheelclaimprobe`){if(!n)return;kG(n)?OG(n)&&e.claimWheel():n.propagateInteraction(e);return}this.#o?.handlePointerEvent(t,e);for(let n of Object.values(t?.scrollbars??{}))if(vW(e,()=>n.coords.containsPoint(e.point.x,e.point.y),()=>n.propagateInteraction(e)),e.stopped)return;n&&vW(e,()=>!0,()=>n.propagateInteraction(e),kG(n)?()=>MW(e,t.coords,e=>this.#g(t.coords,t.view,e),this.context.getCurrentHover(),this.context.animator):void 0)})}#g(e,t,n){let r=!1,i=!1,a=e.normalizePoint(n.x,n.y),o=e.normalizePoint(n.x+n.xDelta,n.y+n.yDelta),s={x:o.x-a.x,y:o.y-a.y};for(let[e,o]of Object.entries(hG(t)))if(!(o.size<=0)){r=!0;for(let t of o)i=t.zoom(2**n.zDelta,e==`y`?1-a[e]:a[e],e==`x`?s.x:-s.y)||i}return i&&this.context.animator.requestRender(),r}getDefaultResolution(e,t){return`independent`}};function DG(e){let t=!0;return e.visit(e=>{e instanceof aB&&(t&&=e.mark.properties.clip===!0)}),t}function OG(e){let t=hG(e);return t.x.size>0||t.y.size>0}function kG(e){return e instanceof aB||e instanceof UU}function AG(e){return`vconcat`in e?[`horizontal`]:`hconcat`in e?[`vertical`]:[`horizontal`,`vertical`]}function jG(e,t){return e??(t?TG:0)}function MG(e,t){return e??(t?TG:0)}function NG(e,t,n){let r=n.axisProps,i=n.getPerpendicularSize();if(t==`bottom`)return e.translate(0,e.height+r.offset).modify({height:i});if(t==`top`)return e.translate(0,-i-r.offset).modify({height:i});if(t==`left`)return e.translate(-i-r.offset,0).modify({width:i});if(t==`right`)return e.translate(e.width+r.offset,0).modify({width:i})}var PG=class extends EG{constructor(e,t,n,r,i,a){super(e,t,n,r,i,HU(e)?e.columns:BU(e)?1:1/0,a),this.spec=e}async initializeChildren(){let e=this.spec,t=HU(e)?e.concat:BU(e)?e.vconcat:e.hconcat;this.setChildren(await Promise.all(t.map(e=>this.context.createOrImportView(e,this,this,this.getNextAutoName(`grid`))))),await this.createAxes()}async addChildSpec(e,t){return this.#t().addChildSpec(e,t)}async removeChildAt(e){await this.#t().removeChildAt(e)}getDefaultResolution(e,t){return t==`axis`?`independent`:BU(this.spec)&&e===`x`||VU(this.spec)&&e===`y`?`shared`:`independent`}#e(){let e=this.spec,t;return t=HU(e)?e.concat:BU(e)?e.vconcat:e.hconcat,{specs:t,insertAt:(e,n)=>{t.splice(e,0,n)},removeAt:e=>{t.splice(e,1)}}}#t(){return new kU(this,{getChildSpecs:this.#e.bind(this),insertView:(e,t)=>this.insertChildViewAt(e,t),removeView:e=>super.removeChildAt(e),prepareView:async(e,t,n)=>{await n.createAxes(),await this.syncSharedAxes()},afterRemove:async()=>{await this.syncSharedAxes()},defaultName:()=>this.getNextAutoName(`grid`)})}};function FG({defaultConfig:e,builtInTheme:t,theme:n}){return FN([e,t,n])}function IG(e,t){if(!(!e&&!t))return FN([e,t])}var LG=`viewRoot`,RG=class{#e=new Map;constructor(e={}){this.options={allowImport:!0,wrapRoot:!0,...e};let t=e=>(t,n,r,i,a,o)=>new e(t,n,r,i,a,o);this.addViewType(RU,t(UU)),this.addViewType(jU,((e,t,n,r,i,a)=>new UU(MU(e),t,n,r,i,a))),this.addViewType(LU,t(aB)),this.addViewType(BU,t(PG)),this.addViewType(VU,t(PG)),this.addViewType(HU,t(PG))}addViewType(e,t){this.#e.set(e,t)}createView(e,t,n,r,i,a){for(let[o,s]of this.#e)if(o(e))return s(e,t,n,r,i,a);throw VG(e)?Error(`SampleView is not supported by the @genome-spy/core package. Use @genome-spy/app instead!`):Error(`Invalid spec, cannot figure out the view type from the properties: `+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){let t=[...this.#e.keys()].filter(t=>t(e));if(t.length>1)throw Error(`Ambiguous spec. Cannot create a view!`);return t.length==1}async createOrImportView(e,t,n,r,i,a,o){let s,c=zU(e)?e.name??null:void 0;if(zU(e)){let i;if(`url`in e.import)if(this.options.allowImport)i=await fB(e,r.getBaseUrl(),t);else throw new AN(`Importing views is not allowed!`,n);else if(`template`in e.import)i=zG(e.import.template,r);else throw Error(`Invalid import: `+JSON.stringify(e));a?.(i),BG(i,e),s=i}else s=e;let l=e=>e?.params?.some(e=>gg(e)&&cg(e.select).type==`interval`),u=!1;if(!r&&this.options.wrapRoot&&(LU(s)||RU(s)||jU(s)||l(s))&&i===`viewRoot`){let e={...s};delete e.theme,s={name:`implicitRoot`,vconcat:[e]},u=!0}let d=this.createView(s,t,n,r,i,o);return c!==void 0&&lU(d,c),u&&uU(d),d instanceof iU&&await d.initializeChildren(),d.registerStepSizeInvalidation(),d}};function zG(e,t){let n=t.spec?.templates?.[e];if(n)return structuredClone(n);if(t.dataParent)return zG(e,t.dataParent);throw Error(`Cannot find template "${e}" in current view or its ancestors!`)}function BG(e,t){t.name!=null&&(e.name=t.name),t.visible!=null&&(e.visible=t.visible),e.config=IG(t.config,e.config);let n=Qe(t.params)?t.params:$e(t.params)?Object.entries(t.params).map(([e,t])=>({name:e,value:t})):[];if(n.length){e.params??=[];for(let t of n){let n=e.params.findIndex(e=>e.name==t.name);n>=0&&(e.params[n]=t)}for(let t of n)e.params.some(e=>e.name==t.name)||e.params.push(t)}}function VG(e){return`samples`in e&&$e(e.samples)&&`spec`in e&&$e(e.spec)}var HG=class{constructor(e,t){this.animator=e,this.disabled=!!t,this.maxDistance=500,this.callback=null,this.targetValue=0,this.lastValue=0,this.smoother=hH(e,e=>{let t=e.x-this.lastValue;this.lastValue=e.x,this.callback?.(t)},40,.1,{x:0})}cancel(){this.lastValue!==this.targetValue&&(this.targetValue=P([this.lastValue,this.targetValue],.3),this.smoother({x:this.targetValue}))}setMomentum(e,t){if(this.disabled){t(e);return}this.callback=t;let n=sN(this.targetValue+e-this.lastValue,-this.maxDistance,this.maxDistance);this.targetValue=this.lastValue+n,this.smoother({x:this.targetValue})}};function UG(e){let t={},n=[`string`,`number`,`boolean`],r=[`wheelDelta`,`wheelDeltaX`,`wheelDeltaY`];for(let i in e){let a=i;!r.includes(i)&&n.includes(typeof e[a])&&(t[a]=e[a])}return t}var WG=class{#e;#t;constructor(e,t,n){this.point=e,this.#n=t,this.stopped=!1,this.wheelClaimed=!1,this.#r=n,this.target=void 0,this.currentTarget=void 0,this.relatedTarget=void 0}#n;#r;#i;get uiEvent(){return this.#n}set uiEvent(e){this.#n=e,this.#e=void 0,this.#t=void 0,this.#i=void 0}stopPropagation(){this.stopped=!0}claimWheel(){if(this.type!==`wheel`&&this.type!==`wheelclaimprobe`)throw Error(`Can claim wheel only for wheel events!`);this.wheelClaimed=!0}setWheelDeltas(e,t){if(!xW(this.uiEvent))throw Error(`Not a WheelEvent!`);this.#i={deltaX:e,deltaY:t},this.#t=void 0}get type(){return this.#r??this.uiEvent.type}set type(e){this.#r=e}get proxiedMouseEvent(){return this.#e||=CW(this.mouseEvent),this.#e}get mouseEvent(){if(this.uiEvent instanceof MouseEvent)return this.uiEvent;throw Error(`Not a MouseEvent!`)}get wheelEvent(){if(!xW(this.uiEvent))throw Error(`Not a WheelEvent!`);return this.#i?(this.#t||=SW(this.uiEvent,this.#i.deltaX,this.#i.deltaY),this.#t):this.uiEvent}},GG=class{#e;#t;#n;#r=[];constructor({viewRoot:e}){this.#e=e}dispatch(e,t){this.#t=e;let n=new WG(e,t);return this.#e.propagateInteraction(n),this.#n=n.target,n.type===`mousemove`&&this.#i(n),n}handlePointerLeave(e){if(!this.#t||this.#r.length===0){this.#r=[],this.#n=void 0;return}let t=new WG(this.#t,e,`mouseleave`);this.#a(t,this.#r,void 0),this.#r=[],this.#n=void 0}getCurrentTarget(){return this.#n}#i(e){let t=this.#s(e.target),n=this.#r,r=0;for(;r<n.length&&r<t.length&&n[r]===t[r];)r++;r<n.length&&this.#a(e,n.slice(r),t.at(-1)),r<t.length&&this.#o(e,t.slice(r),n.at(-1)),this.#r=t}#a(e,t,n){for(let r=t.length-1;r>=0;r--){let i=new WG(e.point,e.uiEvent,`mouseleave`),a=t[r];if(i.target=a,i.currentTarget=a,i.relatedTarget=n,this.#c(a,i),i.stopped)return}}#o(e,t,n){for(let r of t){let t=new WG(e.point,e.uiEvent,`mouseenter`);if(t.target=r,t.currentTarget=r,t.relatedTarget=n,this.#c(r,t),t.stopped)return}}#s(e){return e?e.getLayoutAncestors().reverse():[]}#c(e,t){e.handleInteraction(t,!0),!t.stopped&&e.handleInteraction(t,!1)}},KG=class{#e;#t;#n;constructor({canvas:e}){this.#e=e}update({target:e,hover:t}){this.#r(qG(e,t))}clear(){this.#r(void 0)}#r(e){if(JG(this.#t,e)){this.#i();return}this.#n?.(),this.#n=void 0,this.#t=e,e?.watch(e=>{this.#n=e},()=>this.#i()),this.#i()}#i(){let e=this.#t?.evaluate();this.#e.style.cursor=typeof e==`string`?e:``}};function qG(e,t){let n=t?.mark,r=n?.getCursorSpec?.();if(r!==void 0)return{owner:n,raw:r,evaluate:()=>n.getCursor(),watch:(e,t)=>n.watchCursor?.(t,e)};for(let t of e?.getLayoutAncestors()??[]){let e=t.getCursorSpec?.();if(e!==void 0)return{owner:t,raw:e,evaluate:()=>t.getCursor(),watch:(e,n)=>t.watchCursor?.(n,e)}}}function JG(e,t){return!e||!t?e===t:e.owner===t.owner&&e.raw===t.raw}var YG=class{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m=!1;#h=!1;#g=!1;#_=0;#v=!1;constructor({viewRoot:e,glHelper:t,tooltip:n,animator:r,emitEvent:i,tooltipHandlers:a,renderPickingFramebuffer:o,getDevicePixelRatio:s}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=a,this.#o=o,this.#s=s,this.#c=new GG({viewRoot:e}),this.#l=new KG({canvas:t.canvas}),this.#u=void 0,this.#d=new HG(this.#r),this.#f=void 0,this.#p=void 0}getCurrentHover(){return this.#u}suspendHoverTracking(){this.#_++,!this.#h&&(this.#n.clear(),this.#m=!1)}resumeHoverTracking(e){if(!(this.#_<=0)&&(this.#_--,!(this.#_>0)&&(this.#n.clear(),this.#m=!1,!this.#C()))){if(e){let t=this.#y(e);if(this.#p=t,this.#b(t)){this.#x(t),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u});return}this.#c.handlePointerLeave(e)}else if(this.#p&&this.#b(this.#p)){this.#x(this.#p),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u});return}this.#u=null,this.#l.clear()}}registerInteractionEvents(){let e=this.#t.canvas,t=performance.now(),n=!1,r,i=(e,t)=>{let n=this.#c.dispatch(e,t);return!this.#m&&!this.#h&&this.#n.clear(),t instanceof MouseEvent&&t.type!==`mouseout`&&this.#l.update({target:n.target,hover:this.#u}),n},a=e=>{let r=performance.now(),a=r-t<200;if(e instanceof MouseEvent){if(e.type!==`contextmenu`&&this.#C())return;let o=this.#y(e);this.#p=o,e.type==`mousemove`&&!a&&this.#_===0&&(this.#g=!1,this.#n.handleMouseMove(e),this.#m=!1,e.buttons==0&&!AW()&&(this.#o(),this.#w(o.x,o.y)));let s=e=>{i(o,e)};if(e.type!=`wheel`&&this.#d.cancel(),(e.type==`mousedown`||e.type==`mouseup`)&&!AW())this.#o();else if(e.type==`wheel`){t=r,this.#m=!1;let n=e;if(Math.abs(n.deltaX)>Math.abs(n.deltaY))this.#u=null,this.#d.cancel();else if(i(o,{type:`wheelclaimprobe`}).wheelClaimed){let e=UG(n);this.#d.setMomentum(n.deltaY*(n.deltaMode?80:1),t=>{s(new WheelEvent(`wheel`,{...e,deltaMode:0,deltaX:0,deltaY:t}))}),n.preventDefault();return}else this.#d.cancel()}if(e.type==`click`){if(n)return;let t=this.#u?{type:e.type,viewPath:this.#u.mark.unitView.getLayoutAncestors().map(e=>e.name).reverse(),datum:this.#u.datum}:{type:e.type,viewPath:null,datum:null};this.#i(`click`,t)}if(e.type!=`click`||this.#f?.subtract(wW.fromMouseEvent(e)).length<3){let t=i(o,e);return e.type==`dblclick`&&this.#_===0&&this.#b(o)&&this.#S(),t}}};e.addEventListener(`mousedown`,e=>{this.#f=wW.fromMouseEvent(e),this.#h=!1;let t=e.shiftKey||e.ctrlKey||e.metaKey;this.#n.sticky?(this.#n.sticky=!1,this.#g=!0,this.#n.clear(),n=!0):n=!1;let r=()=>{document.addEventListener(`mouseup`,()=>this.#n.popEnabledState(),{once:!0,capture:!0}),this.#n.pushEnabledState(!1)};if(e.button==2)r();else if(e.button==0&&this.#n.visible){this.#h=!0;let e;t||(e=setTimeout(()=>{n=!0,this.#h=!1,this.#n.sticky=!0},400));let r=t=>{clearTimeout(e),this.#h&&(this.#h=!1,t&&this.#_>0&&(this.#n.clear(),this.#m=!1))};document.addEventListener(`mouseup`,()=>r(!1),{once:!0}),document.addEventListener(`mousemove`,()=>r(!0),{once:!0})}}),[`mousedown`,`mouseup`,`wheel`,`click`,`mousemove`,`contextmenu`,`dblclick`].forEach(t=>e.addEventListener(t,a));let o=(t,n)=>{let r=e.getBoundingClientRect();return new wW(t-r.left-e.clientLeft,n-r.top-e.clientTop)},s=e=>{if(e.length<=0)return;let t=e[0];if(e.length===1)return{pointerCount:1,centerX:t.clientX,centerY:t.clientY,distance:0};let n=e[1];return{pointerCount:2,centerX:(t.clientX+n.clientX)/2,centerY:(t.clientY+n.clientY)/2,distance:XG(t,n)}},c=(e,t,n,r,a,s,c)=>{i(o(e,t),{type:`touchgesture`,phase:n,pointerCount:r,xDelta:a,yDelta:s,zDelta:c})},l=e=>{e.preventDefault(),this.#d.cancel(),this.#m=!1;let t=s(e.touches);if(!t){r=void 0;return}if(!r||r.pointerCount!==t.pointerCount){r=t;return}let n=t.centerX-r.centerX,i=t.centerY-r.centerY,a=t.pointerCount===2?ZG(r.distance,t.distance):0;(n!==0||i!==0||a!==0)&&Number.isFinite(n)&&Number.isFinite(i)&&Number.isFinite(a)&&c(r.centerX,r.centerY,`move`,t.pointerCount,n,i,a),r=t},u=e=>{e.preventDefault(),this.#m=!1,r&&e.touches.length===0&&c(r.centerX,r.centerY,`end`,r.pointerCount,0,0,0),r=s(e.touches)};e.addEventListener(`touchstart`,l,{passive:!1}),e.addEventListener(`touchmove`,l,{passive:!1}),e.addEventListener(`touchend`,u,{passive:!1}),e.addEventListener(`touchcancel`,u,{passive:!1}),e.addEventListener(`dragstart`,e=>e.stopPropagation()),e.addEventListener(`mouseout`,e=>{if(!this.#C()){if(this.#_>0){this.#n.clear(),this.#m=!1;return}this.#c.handlePointerLeave(e),this.#l.clear(),this.#n.clear(),this.#u=null}})}#y(e){let t=this.#t.canvas,n=t.getBoundingClientRect();return new wW(e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop)}#b(e){let t=this.#t.canvas;return e.x>=0&&e.y>=0&&e.x<=t.clientWidth&&e.y<=t.clientHeight}#x(e){AW()||(this.#o(),this.#w(e.x,e.y))}#S(){this.#v||(this.#v=!0,this.#r.requestRender(),window.requestAnimationFrame(()=>{if(this.#v=!1,this.#_>0||this.#C())return;let e=this.#p;if(!e||!this.#b(e)){this.#u=null,this.#l.clear();return}this.#n.clear(),this.#m=!1,this.#x(e),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u})}))}#C(){return typeof document<`u`&&!!document.body&&document.body.classList.contains(`gs-freeze-interaction`)}#w(e,t){let n=this.#s(),r=mM(this.#t.gl,this.#t._pickingBufferInfo,e*n,t*n),i=r[0]|r[1]<<8|r[2]<<16|r[3]<<24;if(i==0){this.#u=null;return}if(i!==this.#u?.uniqueId&&(this.#u=null),this.#u||this.#e.visit(n=>{if(n instanceof aB){if(n.mark.isPickingParticipant()&&[...n.facetCoords.values()].some(n=>n.containsPoint(e,t))){let e=n.getCollector().findDatumByUniqueId(i);e&&(this.#u={mark:n.mark,datum:e,uniqueId:i})}if(this.#u)return TL}}),this.#u){let e=this.#u.mark;this.updateTooltip(this.#u.datum,async t=>{if(!e.isPickingParticipant())return;let n=e.properties.tooltip;if(n!==null&&n!==!1){let r=n?.handler??`default`,i=this.#a[r];if(!i)throw Error(`No such tooltip handler: `+r);let a=BH(t,e,n?.params);return i(t,e,n?.params,a)}})}}updateTooltip(e,t){if(!this.#g)if(!this.#m||!e)this.#n.updateWithDatum(e,t),this.#m=!0;else throw Error(`Tooltip has already been updated! Duplicate event handler?`)}};function XG(e,t){let n=t.clientX-e.clientX,r=t.clientY-e.clientY;return Math.hypot(n,r)}function ZG(e,t){return e<=0||t<=0?0:Math.log2(e/t)}var QG=class{constructor(e){this.globalOptions=e}pushView(e,t){}popView(e){}renderMark(e,t){}getDevicePixelRatio(){return 1}},$G=class extends QG{#e=[0,0,0,0];#t;#n=[];#r;#i;#a=new Set;#o=void 0;#s=1;#c={width:0,height:0};constructor(e,t){if(super(e),this.#i=t.webGLHelper,this.#r=t.framebufferInfo,this.#s=t.devicePixelRatio,this.#c=t.canvasSize,t.clearColor){let e=wu(t.clearColor).rgb();this.#e=[e.r/255,e.g/255,e.b/255,e.opacity]}}getDevicePixelRatio(){return this.#s}pushView(e,t){this.#a.add(e),this.#o=t}renderMark(e,t){if(this.globalOptions.picking&&!e.isPickingParticipant())return;let n=e.render(t);n&&this.#n.push({mark:e,callback:n,coords:this.#o,clipRect:t.clipRect})}render(){if(this.#t||this.#l(),this.#t.length==0)return;let e=this.#i.gl,t=this.#r;t?(e.bindFramebuffer(e.FRAMEBUFFER,t.framebuffer),e.viewport(0,0,t.width,t.height)):e.viewport(0,0,e.drawingBufferWidth,e.drawingBufferHeight),e.disable(e.SCISSOR_TEST),e.clearColor(...this.#e),e.clear(e.COLOR_BUFFER_BIT);for(let e of this.#a)e.onBeforeRender();for(let e of this.#t)e();this.#r&&e.bindFramebuffer(e.FRAMEBUFFER,null)}#l(){this.#t=[];let e=!0,t=!0,n=t=>()=>{e&&t()},r=n=>()=>{e&&t&&n()},i=Sn(this.#n.reverse(),e=>e.mark);for(let[a,o]of[...i.entries()].reverse()){if(!a.isReady())continue;this.#t.push(()=>{e=a.unitView.getEffectiveOpacity()>0}),this.#t.push(...a.prepareRender(this.globalOptions).map(e=>n(e)));let i;for(let e of o){let o=e.coords;o.equals(i)||this.#t.push(n(()=>{t=a.setViewport(this.#c,this.#s,o,e.clipRect)})),this.#t.push(r(e.callback)),i=e.coords}}}},eK=class extends QG{constructor(...e){super({}),this.contexts=e}pushView(e,t){for(let n of this.contexts)n.pushView(e,t)}popView(e){for(let t of this.contexts)t.popView(e)}renderMark(e,t){for(let n of this.contexts)n.renderMark(e,t)}},tK=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor({viewRoot:e,glHelper:t,getBackground:n,broadcast:r,onLayoutComputed:i}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=void 0,this.#o=void 0,this.#s=!1}computeLayout(){let e=this.#e;if(!e)return;this.#r(`layout`);let t=this.#t.getLogicalCanvasSize();if(isNaN(t.width)||isNaN(t.height)){console.log(`NaN in canvas size: ${t.width}x${t.height}. Skipping computeLayout().`);return}let n={webGLHelper:this.#t,canvasSize:t,devicePixelRatio:this.#t.getDevicePixelRatio(t)};this.#a=new $G({picking:!1},{...n,clearColor:this.#n()}),this.#o=new $G({picking:!0},{...n,framebufferInfo:this.#t._pickingBufferInfo}),e.render(new eK(this.#a,this.#o),KU.create(0,0,t.width,t.height)),this.#i(),this.#r(`layoutComputed`)}renderAll(){this.#a?.render(),this.#s=!0}renderPickingFramebuffer(){this.#s&&=(this.#o.render(),!1)}};function nK(e){let t=e=>{throw Error(`ViewContext.`+e+` is not configured.`)},n={dataFlow:e.dataFlow??t(`dataFlow`),glHelper:e.allowMissingGlHelper?e.glHelper:e.glHelper??t(`glHelper`),animator:e.animator??t(`animator`),genomeStore:e.genomeStore,fontManager:e.fontManager??t(`fontManager`),createOrImportView:async function(t,r,i,a,o,s){let c=e.createOrImportViewWithContext;return c?c(n,t,r,i,a,o,s):Promise.reject(Error(`ViewContext.createOrImportView is not configured.`))}},r=[`requestLayoutReflow`,`updateTooltip`,`getNamedDataFromProvider`,`getCurrentHover`,`suspendHoverTracking`,`resumeHoverTracking`,`addKeyboardListener`,`addBroadcastListener`,`removeBroadcastListener`,`highlightView`,`isViewConfiguredVisible`,`isViewSpec`,`getBaseConfig`],i=e,a=n;for(let e of r)a[e]=i[e]??(()=>t(e));return n}var rK={view:{},mark:{xOffset:0,yOffset:0,minBufferSize:0},point:{x:.5,y:.5,color:`#4c78a8`,filled:!0,opacity:1,size:100,semanticScore:0,shape:`circle`,strokeWidth:2,fillGradientStrength:0,dx:0,dy:0,angle:0,sampleFacetPadding:.1,semanticZoomFraction:.02,minPickingSize:2},rect:{x2:void 0,y2:void 0,filled:!0,color:`#4c78a8`,opacity:1,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1},rule:{x2:void 0,y2:void 0,size:1,color:`black`,opacity:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:`butt`},tick:{color:`black`,opacity:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:`butt`,orient:void 0,thickness:1},text:{x:.5,y:.5,x2:void 0,y2:void 0,text:``,size:11,color:`black`,opacity:1,font:void 0,fontStyle:void 0,fontWeight:void 0,align:`center`,baseline:`middle`,dx:0,dy:0,angle:0,fitToBand:!1,squeeze:!0,paddingX:0,paddingY:0,flushX:!0,flushY:!0,logoLetters:!1,viewportEdgeFadeWidthTop:0,viewportEdgeFadeWidthRight:0,viewportEdgeFadeWidthBottom:0,viewportEdgeFadeWidthLeft:0,viewportEdgeFadeDistanceTop:-1/0,viewportEdgeFadeDistanceRight:-1/0,viewportEdgeFadeDistanceBottom:-1/0,viewportEdgeFadeDistanceLeft:-1/0},link:{x:0,x2:void 0,y:0,y2:void 0,size:1,color:`black`,opacity:1,segments:101,arcHeightFactor:1,minArcHeight:1.5,minPickingSize:3,clampApex:!1,maxChordLength:5e4,arcFadingDistance:!1,noFadingOnPointSelection:!0,linkShape:`arc`,orient:`vertical`},axis:{values:null,minExtent:20,maxExtent:1/0,offset:0,domain:!0,domainWidth:1,domainColor:`gray`,domainDash:null,domainDashOffset:0,domainCap:`square`,ticks:!0,tickSize:5,tickWidth:1,tickColor:`gray`,tickDash:null,tickDashOffset:0,tickCap:`square`,tickCount:null,tickMinStep:null,labels:!0,labelAlign:`center`,labelBaseline:`middle`,labelPadding:4,labelFontSize:10,labelLimit:180,labelColor:`black`,format:null,titleColor:`black`,titleFont:`sans-serif`,titleFontSize:10,titlePadding:3,grid:!1,gridCap:`butt`,gridColor:`lightgray`,gridDash:null,gridOpacity:1,gridWidth:1},axisLocus:{chromTicks:!0,chromTickSize:18,chromTickWidth:1,chromTickColor:`#989898`,chromTickDash:[4,2],chromTickDashOffset:1,chromLabels:!0,chromLabelFontSize:13,chromLabelFontWeight:`normal`,chromLabelFontStyle:`normal`,chromLabelColor:`black`,chromLabelAlign:`left`,chromLabelPadding:7,chromGrid:!1,chromGridCap:`butt`,chromGridColor:`gray`,chromGridDash:[1,5],chromGridOpacity:1,chromGridWidth:1},scale:{nominalColorScheme:`tableau10`,ordinalColorScheme:`blues`,quantitativeColorScheme:`viridis`},range:{shape:[`circle`,`square`,`triangle-up`,`cross`,`diamond`],size:[0,400],angle:[0,360]},title:{anchor:`middle`,frame:`group`,offset:10,orient:`top`,align:void 0,angle:0,baseline:`alphabetic`,dx:0,dy:0,color:void 0,font:void 0,fontSize:12,fontStyle:`normal`,fontWeight:`normal`},style:{"track-title":{orient:`left`,anchor:`middle`,align:`right`,baseline:`middle`,angle:0,fontSize:12},overlay:{orient:`top`,anchor:`start`,align:`left`,baseline:`top`,offset:-10,dx:10,fontSize:12},"overlay-title":{orient:`top`,anchor:`start`,align:`left`,baseline:`top`,offset:-10,dx:10,fontSize:12}}};function iK(e){aU(e),oU(e)}function aK({glHelper:e,viewRoot:t,logicalWidth:n,logicalHeight:r,devicePixelRatio:i,clearColor:a=`white`}){n??=e.getLogicalCanvasSize().width,r??=e.getLogicalCanvasSize().height,i??=window.devicePixelRatio??1;let o=e.gl,s=Math.floor(n*i),c=Math.floor(r*i),l=Rj(o,[{format:o.RGBA,type:o.UNSIGNED_BYTE,minMag:o.LINEAR,wrap:o.CLAMP_TO_EDGE}],s,c),u=new $G({picking:!1},{webGLHelper:e,canvasSize:{width:n,height:r},devicePixelRatio:i,clearColor:a,framebufferInfo:l});return t.render(u,KU.create(0,0,n,r)),u.render(),hM(o,l,`image/png`)}function oK(e){if(e.genome&&e.genomes)throw Error("Do not mix deprecated `genome` with `genomes`. Use only `genomes` and `assembly`.");if(e.genome&&e.assembly)throw Error("Do not mix deprecated `genome` with root `assembly`. Use `genomes` and `assembly`.");if(e.genome){let{name:t,...n}=e.genome;return{genomesByName:!(Object.keys(n).length>0)&&cK(t)?new Map:new Map([[t,n]]),defaultAssembly:t,deprecationWarning:sK()}}let t=new Map;for(let[n,r]of Object.entries(e.genomes??{}))t.set(n,r??{});let n=e.assembly;if(!n&&t.size===1&&(n=t.keys().next().value),n&&!t.has(n)&&!cK(n))throw Error(`Root assembly "${n}" is neither defined in \`genomes\` nor a built-in assembly.`);return{genomesByName:t,defaultAssembly:n,deprecationWarning:void 0}}function sK(){return'Root `genome` is deprecated and will be removed in a future version. Use root `genomes` and `assembly` instead. Built-in migration example: {"genome":{"name":"hg38"}} -> {"assembly":"hg38"}.'}function cK(e){try{return VL(e),!0}catch{return!1}}function lK(e,t,n){let r=dK(e,n);if(!r.size)return!0;for(let e of r)if(!fK(e,t))return!1;return!0}function uK(e,t,n,r,i){let a=i??(e=>e.isConfiguredVisible());return new Promise((i,o)=>{let s=new Set,c=new Set,l=()=>{f(),d()},u=()=>{for(let e of s)e();s.clear(),e.removeBroadcastListener(`subtreeDataReady`,l),r&&r.removeEventListener(`abort`,p)},d=()=>{lK(t,n,a)&&(u(),i())},f=()=>{t.visit(e=>{if(!(e instanceof aB)||!a(e))return;let t=e.flowHandle?.collector;t&&(c.has(t)||(c.add(t),s.add(t.observe(d))))})},p=()=>{u(),o(Error(`Lazy subtree readiness was aborted.`))};if(f(),d(),e.addBroadcastListener(`subtreeDataReady`,l),r){if(r.aborted){p();return}r.addEventListener(`abort`,p,{once:!0})}})}function dK(e,t){let n=t??(e=>e.isConfiguredVisible()),r=new Set;return e.visit(e=>{if(!(e instanceof aB)||!n(e))return;let t=e;for(;t&&!(t.flowHandle&&t.flowHandle.dataSource);)t=t.dataParent;if(!t||!t.flowHandle)return;let i=t.flowHandle.dataSource;i instanceof $m&&r.add(i)}),r}function fK(e,t){let n=t??{[e.channel]:Array.from(e.scaleResolution.getDomain())};return e.isDataReadyForDomain(n)}var pK={mark:{color:`#4c78a8`},point:{filled:!1,size:30},rule:{color:`black`},text:{color:`black`},view:{stroke:`#ddd`,strokeWidth:1},axis:{grid:!1,domain:!0,tickColor:`gray`,domainColor:`gray`,gridColor:`#ddd`,labelColor:`#333`,titleColor:`#333`,titleFontSize:11,titleFontWeight:`normal`},axisQuantitative:{grid:!0},scale:{nominalColorScheme:`tableau10`,ordinalColorScheme:`blues`,quantitativeColorScheme:`blues`},range:{heatmap:`viridis`,ramp:`blues`,diverging:`blueorange`}},mK={genomespy:{},vegalite:pK,quartz:FN([pK,{background:`#f9f9f9`,view:{fill:`#f9f9f9`},mark:{color:`#ab5787`},point:{size:30},axis:{domainColor:`#979797`,domainWidth:.5,gridWidth:.2,labelColor:`#979797`,tickColor:`#979797`,tickWidth:.2,titleColor:`#979797`},axisX:{grid:!0,tickSize:10},axisY:{domain:!1,grid:!0,tickSize:0}}]),dark:FN([pK,{background:`#333`,view:{fill:`#333`,stroke:`#888`},title:{color:`#fff`},axis:{domainColor:`#fff`,gridColor:`#888`,tickColor:`#fff`,labelColor:`#fff`,titleColor:`#fff`},text:{color:`#fff`},rule:{color:`#fff`}}]),fivethirtyeight:FN([pK,{background:`#f0f0f0`,view:{fill:`#f0f0f0`},mark:{color:`#30a2da`},point:{filled:!0,shape:`circle`},axis:{domainColor:`#cbcbcb`,grid:!0,gridColor:`#cbcbcb`,gridWidth:1,labelColor:`#999`,labelFontSize:10,titleColor:`#333`,tickColor:`#cbcbcb`,tickSize:10,titleFontSize:14,titlePadding:10,labelPadding:4},axisNominal:{grid:!1},axisOrdinal:{grid:!1},title:{anchor:`start`,fontSize:24,fontWeight:600,offset:20}}]),urbaninstitute:FN([pK,{background:`#FFFFFF`,view:{fill:`#FFFFFF`,stroke:`#000000`,strokeOpacity:0},mark:{color:`#1696d2`},point:{filled:!0},text:{font:`Lato`,color:`#1696d2`,size:11,align:`center`,fontWeight:400},title:{anchor:`start`,fontSize:18,font:`Lato`},axisX:{domain:!0,domainColor:`#000000`,domainWidth:1,grid:!1,labelFontSize:12,labelFont:`Lato`,labelAngle:0,tickColor:`#000000`,tickSize:5,titleFontSize:12,titlePadding:10,titleFont:`Lato`},axisY:{domain:!1,domainWidth:1,grid:!0,gridColor:`#DEDDDD`,gridWidth:1,labelFontSize:12,labelFont:`Lato`,labelPadding:8,ticks:!1,titleFontSize:12,titlePadding:10,titleFont:`Lato`}}])},hK=Object.keys(mK);function gK(e){let t={...mK[e]};return delete t.background,t}function _K(e){if(!e)return[];let t=Array.isArray(e)?e:[e],n=t.filter(e=>!(e in mK));if(n.length>0)throw Error(`Unknown theme "`+n[0]+`". Available themes: `+hK.join(`, `));return t}var vK=`genomespy`;function yK(e){return mK[e].background}function bK(e){let t=_K(e);if(t.length!=0)return FN(t.map(e=>gK(e)))}var xK=class{#e=[];#t;#n;#r;#i;#a;#o;#s=new oT;#c=new sT;#l=new sT;constructor(e,t,n={}){this.container=e,this.options=n,n.inputBindingContainer??=`default`,this.spec=t,this.viewFactory=new RG,this.namedDataProviders=[],this.animator=new mH(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=e=>e.isVisibleInSpec(),this.tooltipHandlers={default:rU,refseqgene:DH,...n.tooltipHandlers??{}},this.viewRoot=void 0,this.#i=new lT(e,n),this.dpr=window.devicePixelRatio}get#u(){return this.container.querySelector(`.canvas-wrapper`)}#d(){this.#i.initialize(this.viewRoot)}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedDataFromProvider(e){for(let t of this.namedDataProviders){let n=t(e);if(n)return n}}updateNamedData(e,t){let n=this.viewRoot.context.dataFlow.findNamedDataSource(e);if(!n)throw Error(`No such named data source: `+e);n.dataSource.updateDynamicData(t),this.animator.requestRender()}addEventListener(e,t){this.#c.add(e,t)}removeEventListener(e,t){this.#c.remove(e,t)}broadcast(e,t){let n={type:e,payload:t};this.viewRoot.visit(e=>e.handleBroadcast(n)),this.#l.emit(e,n)}#f(){this.dpr=this.#o.getDevicePixelRatio();let e=this.viewRoot.paramRuntime.allocateSetter(`devicePixelRatio`,this.dpr),t=()=>{this.#o.invalidateSize(),this.dpr=this.#o.getDevicePixelRatio(),e(this.dpr),this.computeLayout(),this.renderAll()};if(this.viewRoot.getSize().isGrowing()){let e=new ResizeObserver(t);e.observe(this.container),this.#e.push(()=>e.disconnect())}let n=null,r=()=>{n!=null&&(n(),t());let e=matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);e.addEventListener(`change`,r),n=()=>{e.removeEventListener(`change`,r)}};r(),n&&this.#e.push(n)}#p(){let{canvasWrapper:e,loadingIndicatorsElement:t,tooltip:n}=qw(this.container);this.#o=new uM(e,()=>this.viewRoot?pB(this.viewRoot):{width:void 0,height:void 0},{powerPreference:this.options.powerPreference??`default`}),e.appendChild(t),this.tooltip=n,this.#r=new iT,this.#n=new rT(t,this.#r)}destroy(){let e=this.#u;for(this.container.classList.remove(`genome-spy`),e.classList.remove(`loading`),this.#s.removeAll(),this.#e.forEach(e=>e()),this.#o.finalize(),this.#i.remove(),this.#n.destroy();this.container.firstChild;)this.container.firstChild.remove()}async#m(){await this.#h();let e=this.#g();await this.#v(e),await lH(this.viewRoot,e.dataFlow,e.fontManager,e=>this.broadcast(`dataFlowBuilt`,e)),this.#b(e)}async#h(){this.genomeStore=new gH(this.spec.baseUrl);let{genomesByName:e,defaultAssembly:t,deprecationWarning:n}=oK(this.spec);this.genomeStore.configureGenomes(e,t),n&&console.warn(n)}#g(){let e=new BV;e.loadingStatusRegistry=this.#r;let t=FG({defaultConfig:rK,builtInTheme:bK(vK),theme:FN([this.options.theme,bK(this.spec.theme)])});return nK({dataFlow:e,glHelper:this.#o,animator:this.animator,genomeStore:this.genomeStore,fontManager:new xH(this.#o),updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this.#a.getCurrentHover(),suspendHoverTracking:()=>this.#a?.suspendHoverTracking(),resumeHoverTracking:e=>this.#a?.resumeHoverTracking(e),addKeyboardListener:(e,t)=>{this.#s.add(e,n=>{this.#_(e,n)&&t(n)})},addBroadcastListener:(e,t)=>this.#l.add(e,t),removeBroadcastListener:(e,t)=>this.#l.remove(e,t),isViewConfiguredVisible:this.viewVisibilityPredicate,isViewSpec:e=>this.viewFactory.isViewSpec(e),getBaseConfig:()=>t,createOrImportViewWithContext:(e,t,n,r,i,a,o)=>this.viewFactory.createOrImportView(t,e,n,r,i,a,o),highlightView:aT(this.container)})}#_(e,t){if(e===`keyup`)return!0;let n=document.activeElement;return n&&n!==document.body?this.container.contains(n):this.container.matches(`:hover`)}async#v(e){let t=this.spec;t.datasets&&this.registerNamedDataProvider(e=>t.datasets[e]),this.viewRoot=await e.createOrImportView(t,null,null,LG),await DU(this.viewRoot,this.genomeStore),this.#r.set(this.viewRoot,`loading`),this.#u.style.flexGrow=this.viewRoot.getSize().height.grow>0?`1`:`0`,this.#d(),iK(this.viewRoot),this.#y(),this.#o.invalidateSize();let n=this.spec.theme?Array.isArray(this.spec.theme)?this.spec.theme:[this.spec.theme]:[];this.#t=new tK({viewRoot:this.viewRoot,glHelper:this.#o,getBackground:()=>{if(this.spec.background!==void 0)return this.spec.background;let e;for(let t of n){let n=yK(t);n!==void 0&&(e=n)}return e},broadcast:this.broadcast.bind(this),onLayoutComputed:()=>this.#n.updateLayout()}),e.requestLayoutReflow=this.computeLayout.bind(this),this.#f()}#y(){let e=pU(this.viewRoot);if(e.length)for(let t of e)console.warn(`Selector constraints warning:`,t.message)}#b(e){e.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(e=>TN(e,`size`)),this.#o.invalidateSize(),this.#a=new YG({viewRoot:this.viewRoot,glHelper:this.#o,tooltip:this.tooltip,animator:this.animator,emitEvent:this.#c.emit.bind(this.#c),tooltipHandlers:this.tooltipHandlers,renderPickingFramebuffer:this.renderPickingFramebuffer.bind(this),getDevicePixelRatio:()=>this.dpr})}async launch(){let e=!1;try{return this.#p(),await this.#m(),this.#a.registerInteractionEvents(),this.computeLayout(),this.animator.requestRender(),e=!0,!0}catch(e){let t=`${e.view?`At "${e.view.getPathString()}": `:``}${e.toString()}`;return console.error(e.stack),this.options.onError?.(e,this.container)||Jw(this.container,t),this.viewRoot&&this.#r.set(this.viewRoot,`error`,t),!1}finally{this.#u.classList.remove(`loading`),e&&this.viewRoot&&this.#r.set(this.viewRoot,`complete`)}}async initializeVisibleViewData(){this.viewRoot&&(await uH(this.viewRoot,this.viewRoot.context.dataFlow,this.viewRoot.context.fontManager),this.viewRoot._invalidateCacheByPrefix(`size`,`progeny`),this.#o.invalidateSize(),this.computeLayout(),this.animator.requestRender())}async awaitVisibleLazyData(e){this.viewRoot&&await uK(this.viewRoot.context,this.viewRoot,void 0,e,e=>e.isConfiguredVisible()&&SK(e))}updateTooltip(e,t){this.#a.updateTooltip(e,t)}exportCanvas(e,t,n,r=`white`){let i=aK({glHelper:this.#o,viewRoot:this.viewRoot,logicalWidth:e,logicalHeight:t,devicePixelRatio:n,clearColor:r});return this.computeLayout(),this.renderAll(),i}getLogicalCanvasSize(){return this.#o.getLogicalCanvasSize()}getRenderedBounds(){let e={width:void 0,height:void 0};return this.viewRoot.visit(t=>{for(let n of t.facetCoords.values())e.width=Math.max(e.width??0,n.x2),e.height=Math.max(e.height??0,n.y2)}),e}computeLayout(){this.#t.computeLayout(),this.#o.invalidateSize()}renderAll(){this.#t.renderAll()}renderPickingFramebuffer(){this.#t.renderPickingFramebuffer()}getSearchableViews(){let e=[];return this.viewRoot.visit(t=>{t instanceof aB&&t.getSearchAccessors().length>0&&e.push(t)}),e}getNamedScaleResolutions(){let e=new Map;return this.viewRoot.visit(t=>{for(let n of Object.values(t.resolutions.scale))n.name&&e.set(n.name,n)}),e}};function SK(e){let t=e;for(;t;){let e=t.flowHandle?.dataSource;if(e)return e instanceof Sg;t=t.dataParent}return!1}var CK=`data:image/svg+xml,%3csvg%20viewBox='0%200%2032%2032'%20xmlns='http://www.w3.org/2000/svg'%20fill-rule='evenodd'%20clip-rule='evenodd'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='1.5'%3e%3cpath%20d='M4.7%2021.2s.4%202.3%201.3%203.6C7%2026%209.8%2028%209.8%2028s3.4-2.6%206.4-8.5c0%200%201%20.1%201.9-.4.9-.6.8-.4%201-1.2%200%200%202.9.5%206.6%200%202.1-.3%204.3-1%206.2-2.5%200%200-1.1-1.7-2.5-5.1-.5-1.3-2-1.8-4.6-4.6l-8.2%208.6-11.9%206.9z'%20fill-opacity='.1'/%3e%3cpath%20d='M12.7%2014.8s-4-1.8-12%202.7c0%200%201%203.7%202.5%205.3%201.4%201.5%202.3%203.6%204.6%204.6%200%200%204.7-3%206.9-9.2l3-2s4.7%202.8%2012.6-1.6c0%200-.6-3.3-3-6-2.6-3-3.8-4.7-3.8-4.7s-4.1%202.3-7.5%209.3l-3.3%201.6z'%20fill='%237fbbdd'/%3e%3cpath%20d='M12.4%2015.5c-.7-.5-2.4-.8-4.4-.4-2%20.4-4%201.3-4.8%201.8-.5.3-1.2%201-1.2%201.4%200%20.7.3%201.8.8%202.4.3.3.7.5%201.4.6.8%200%202.5-1.4%203.5-2%201-.6%201.6-.8%202.7-1.2l-2.9%202.4c-1.3%201.2-2.2%201.5-2.4%202.3%200%20.5%200%201.4.5%201.8.4.5.6.8%201.6.8.6%200%201%200%202.6-1.5.9-.9%202.3-3%202.7-3.7.6-1.1%201-2.2.7-3-.2-1-.4-1.4-.8-1.7zM17.4%2014.2c-.3-.5-.9-1.2-.2-2.5l1.9-3c.5-.8%202-2.3%202.6-2.6.6-.4%201.5-.6%202-.2.6.4%201%201%201.3%201.5.4.6.7%201.3.2%202-.7%201-1.6.9-2.8%201.7-1.2.8-1.9%201.2-2.5%201.9l3.8-1.8c1.3-.6%202.7-1.1%203.4-.7.8.5.8.7%201%201.4.3%201-.2%201.9-.8%202.4-.5.6-1.5.9-2.6%201.2-1.4.4-4.5%201-5.8.5-1.3-.5-1.3-1.4-1.5-1.8z'%20fill='%23fff'/%3e%3cpath%20d='M12.7%2014.8s-4-1.8-12%202.7c0%200%201%203.7%202.5%205.3%201.4%201.5%202.3%203.6%204.6%204.6%200%200%204.7-3%206.9-9.2l3-2s4.7%202.8%2012.6-1.6c0%200-.6-3.3-3-6-2.6-3-3.8-4.7-3.8-4.7s-4.1%202.3-7.5%209.3l-3.3%201.6z'%20fill='none'%20stroke='%23000'%20stroke-width='.5'/%3e%3cpath%20d='M12.4%2014.9s2.1-2%203-2c1.1%200%202.3%202.7%202.3%203.5%200%20.8-2.1%202.4-3.1%202.3%200%200%200-1.2-.7-2.6-.8-1.3-1.5-1.2-1.5-1.2z'%20fill='%237fbbdd'/%3e%3cpath%20d='M13.8%2015.3c.9.8.6%202%201.4%201.8%201-.2%201.4-.8%201.3-1.5%200-.7%200-.8-.4-1.6-.3-.7-1-1.1-2-.5-.7.5-1.4%201.3-1.4%201.3s.2-.3%201.1.5z'%20fill='%23fff'/%3e%3cpath%20d='M12.4%2014.9s2.1-2%203-2c1.1%200%202.3%202.7%202.3%203.5%200%20.8-2.1%202.4-3.1%202.3%200%200%200-1.2-.7-2.6-.8-1.3-1.5-1.2-1.5-1.2z'%20fill='none'%20stroke='%23000'%20stroke-width='.5'/%3e%3c/svg%3e`,wK=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5'%20viewBox='0%200%2064%2064'%3e%3cpath%20d='M208.6%20548.2s11.2%2046.2%2031.2%2071c20%2024.9%2079.3%2061.6%2079.3%2061.6S385.6%20623%20438%20498.3c0%200%2018.1%201%2036-11.9%2017.7-12.7%2016.3-7.9%2021-24.8%200%200%2057%206.3%20131-9.7%2041.7-9.1%2084.3-26.3%20121.5-58.8%200%200-25.4-32.9-58-101.7-12.4-26.1-41.9-34.3-98.7-88L438.1%20391.2%20208.6%20548.2Z'%20style='fill-opacity:.11'%20transform='matrix(.10221%20.00684%20-.00671%20.10035%20-8%20-13.2)'/%3e%3cg%20transform='rotate(-35.4%2034.2%2080.8)%20scale(.10057)'%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'%20style='fill:%237fbbdd'/%3e%3cclipPath%20id='a'%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'/%3e%3c/clipPath%3e%3cg%20clip-path='url(%23a)'%3e%3cpath%20d='M386.9%20397.2c-15.6-13.6-51.8-22.4-96.3-16.7-44.5%205.8-93.8%2021.8-111.8%2031.6-10.6%205.7-27.3%2017.3-28.1%2027.2-1.2%2014.2%202.9%2037.8%2015%2052%206%207.2%2014.2%2012.1%2028.1%2014.1%2017.9%202.6%2059-24.8%2081.6-36.2%2024-12%2038.6-14.6%2063-22.2%200%200-47%2031.6-68.2%2047.4-30.6%2022.9-51.6%2028-57.3%2045.5-3.1%209.4-.7%2027.9%207.5%2037.6%209%2011%2012.8%2017.6%2034.2%2020.1%2012.7%201.5%2022%201.2%2059.8-28.6%2021.7-17.2%2055.9-59.2%2067-74.4%2016.2-22%2023.8-43.1%2021.3-59.6-3.7-23.6-8.4-31.3-15.8-37.8Z'%20style='fill:%23fff'%20transform='scale(.88664)%20rotate(31.2%20485%20792.2)'/%3e%3cpath%20d='M484.7%20379c-5.4-11.1-17.6-28.5-.8-53.8a739%20739%200%200%201%2044.2-60.6c13.2-16.3%2046.7-46.2%2059.6-52%2013-6%2033.3-8.7%2044.2.2%2011%209.1%2016.5%2020.6%2023%2032.7%207.4%2013.8%2012.4%2029.3%201.6%2042.8-15.4%2019.2-34.3%2017-61.6%2031.5-27.7%2014.8-42.3%2023.1-55.7%2035.9%200%200%2052.2-21.6%2082-31.2%2029.8-9.7%2059.8-20%2074.8-8.5s14.6%2015.5%2018.4%2031.2c4.7%2019.4-7.2%2038-20.1%2048.6-13%2010.7-34.3%2016-57.4%2021-30.5%206.8-96.6%2015.1-124%202.6-27.5-12.6-24.4-32.8-28.2-40.5Z'%20style='fill:%23fff'%20transform='scale(.87906)%20rotate(31.2%20487.2%20893.5)'/%3e%3c/g%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'%20style='fill:none;stroke:%23000;stroke-width:16.57px'/%3e%3c/g%3e%3cg%20transform='rotate(-4.2%20-78%20211)%20scale(.10057)'%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'%20style='fill:%237fbbdd'/%3e%3cclipPath%20id='b'%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'/%3e%3c/clipPath%3e%3cg%20clip-path='url(%23b)'%3e%3cpath%20d='M413.3%20402.7c17.5%2018.9%2010%2045.7%2028.4%2043.4%2021.7-2.7%2030.9-15.7%2031.6-32.7.7-17-1-19.5-7.1-38-6.1-18.7-18.2-23.2-43.4-18.2-20.8%204.1-17.8%203-24%2010-6.4%207-14.5%2026-14.5%2026s8.4-12.7%2029%209.5Z'%20style='fill:%23fff'%20transform='matrix(.90907%200%200%20.85852%2037%2052.2)'/%3e%3c/g%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'%20style='fill:none;stroke:%23000;stroke-width:16.57px'/%3e%3c/g%3e%3c/svg%3e`,TK=[[`/docs/examples/`,`/docs/examples/`],[`/examples/core/`,`/examples/`],[`/examples/docs/`,`/examples/`],[`/examples/app/`,`/examples/`]],EK=/^(?:[a-z]+:)?\/\//i,DK=`https://example.invalid`;function OK(e){return EK.test(e)?`external`:e.startsWith(`/`)?`root`:`relative`}function kK(e){let t=new URL(e,DK),n=TK.find(([e])=>t.pathname.startsWith(e));if(n)return jK(n[1],t,OK(e))}function AK(e){let t=kK(e);if(t)return t;let n=new URL(e,DK);return jK(new URL(`./`,n).pathname,n,OK(e))}function jK(e,t,n){return n===`external`?t.origin+e:n===`root`?e:e.slice(1)}function MK(e){return async function(t,n,r={}){let i;if(N(t)){if(i=document.querySelector(t),!i)throw Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)i=t;else throw Error(`Invalid element: ${t}`);let a;try{let t=$e(n)?n:await PK(n);if(t.baseUrl??=``,t.width??=`container`,t.padding??=10,i==document.body){let e=document.createElement(`div`);e.style.position=`fixed`,e.style.inset=`0`,e.style.overflow=`hidden`,i.appendChild(e),i=e}a=new e(i,t,r),NK(a,r),await a.launch()}catch(e){i.innerText=e.toString(),console.error(e)}return{finalize(){for(a.destroy();i.firstChild;)i.firstChild.remove()},addEventListener(e,t){a.addEventListener(e,t)},removeEventListener(e,t){a.removeEventListener(e,t)},getScaleResolutionByName(e){return a.getNamedScaleResolutions().get(e)},awaitVisibleLazyData:a.awaitVisibleLazyData.bind(a),getRenderedBounds:a.getRenderedBounds.bind(a),updateNamedData:a.updateNamedData.bind(a),getLogicalCanvasSize:a.getLogicalCanvasSize.bind(a),exportCanvas:a.exportCanvas.bind(a)}}}function NK(e,t){t.namedDataProvider&&e.registerNamedDataProvider(t.namedDataProvider)}async function PK(e){let t;try{t=await cB(e)}catch(t){throw Error(`Could not load or parse configuration: ${e}, reason: ${t.message}`,{cause:t})}return t.baseUrl||=AK(e),t}var FK=MK(xK);e.GenomeSpy=xK,e.embed=FK,e.favIcon=wK,e.html=D,e.icon=CK,e.loadSpec=PK});
833
+ `:``}${p}`}var lU=class e extends YL{#e=new Map;constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.spec=e}async initializeChildren(){}getNextAutoName(e){let t=this.#e.get(e)??0;return this.#e.set(e,t+1),e+t}*[Symbol.iterator](){}visit(e){let t;try{t=e(this)}catch(e){throw e.view=this,e}if(t===`VISIT_STOP`)return t;if(t!==`VISIT_SKIP`){e.beforeChildren&&e.beforeChildren(this);for(let t of this){let n=t.visit(e);if(n===`VISIT_STOP`)return n}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(t){let n=this;for(let r=0;r<t.length;r++){if(!(n instanceof e))return;let i=n.#t(t[r]);if(!i)return;if(r===t.length-1)return i;n=i}}#t(e){for(let t of this)if(t.name===e)return t}findDescendantByName(e){let t;return this.visit(n=>{if(n.name==e)return t=n,qL}),t}getDefaultResolution(e,t){return`shared`}};function uU(e){jB(e),MB(e)}function dU(e){e.getDescendants().forEach(e=>e.configureViewOpacity())}var fU=new WeakMap,pU=new WeakMap,mU=new WeakMap;function hU(e,t){if(t!==null&&typeof t!=`string`)throw Error(`Import scope name must be a string or null.`);fU.set(e,{name:t})}function gU(e,t={}){let n=t.skipSubtree??!1?`excludeSubtree`:`exclude`;pU.set(e,n)}function _U(e,t={}){let n=t.skipSubtree??!1?`excludeSubtree`:`exclude`;mU.set(e,n)}function vU(e){let t=e.getDataAncestors(),n=[];for(let e=t.length-1;e>=0;--e){let r=fU.get(t[e]);r&&typeof r.name==`string`&&n.push(r.name)}return n}function yU(e,t){e.visit(e=>{let n=pU.get(e);if(n===`excludeSubtree`)return KL;if(n!==`exclude`)return t(e)})}function bU(e){let t=[];for(let n of SU(e)){let r=CU(n);TU(e,r,t),EU(e,r,t)}return t}function xU(e){return e.persist===!1?!1:mg(e)?!0:pg(e)?!!e.bind:!1}function SU(e){let t=new Set([e]);return e.visit(e=>{let n=fU.get(e);n&&typeof n.name==`string`&&t.add(e)}),Array.from(t)}function CU(e){return vU(e)}function wU(e){return e.length?`import scope [`+e.join(` / `)+`]`:`import scope (root)`}function TU(e,t,n){let r=new Map;kU(e,t,e=>{for(let[t,n]of e.paramRuntime.paramConfigs){if(!xU(n))continue;let i=r.get(t);i?i.push(e):r.set(t,[e])}});for(let[e,i]of r){if(i.length<=1)continue;let r=i.map(e=>e.getPathString()).join(`, `);n.push({message:`Bookmarkable parameter "`+e+`" is not unique within `+wU(t)+`. Found in: `+r+`.`,scope:t})}}function EU(e,t,n){let r=DU(e,t);if(!r.length)return;let i=r.filter(e=>OU(e));if(i.length<=1)return;let a=new Map;for(let e of i){let t=fU.get(e),n=t?t.name:void 0;typeof n!=`string`||!n.length||a.set(n,(a.get(n)??0)+1)}for(let[e,r]of a)r>1&&n.push({message:`Import instance name "`+e+`" is used multiple times for addressable instances in `+wU(t)+`.`,scope:t})}function DU(e,t){let n=[];return kU(e,t,e=>{if(vU(e).length!==t.length+1)return;let r=fU.get(e);!r||typeof r.name!=`string`||n.push(e)},{includeNamedImportRoots:!0}),n}function OU(e){let t=!1;return e.visit(e=>{let n=pU.get(e);if(n===`excludeSubtree`)return KL;if(n!==`exclude`){for(let n of e.paramRuntime.paramConfigs.values())if(xU(n))return t=!0,qL}}),t}function kU(e,t,n,r={}){let i=r.includeNamedImportRoots??!1;e.visit(e=>{let r=fU.get(e),a=pU.get(e);if(a===`excludeSubtree`)return KL;if(a!==`exclude`&&AU(e,t,r,i))return n(e)})}function AU(e,t,n,r){let i=vU(e);return jU(i,t)?!0:!r||!n||typeof n.name!=`string`||i.length!==t.length+1?!1:MU(t,i)}function jU(e,t){return e.length===t.length?MU(e,t):!1}function MU(e,t){if(e.length>t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function NU(e){let t=[],n=!1,r=FU(e);for(let e of r){let r=e.getAssemblyRequirement();r.assembly&&t.push(r.assembly),r.needsDefaultAssembly&&(n=!0)}return{assemblies:t,needsDefaultAssembly:n}}async function PU(e,t){let{assemblies:n,needsDefaultAssembly:r}=NU(e);if(r){let e=t.getDefaultAssemblyName();if(!e)throw Error("No default assembly has been configured. Set root `assembly`, define exactly one entry in root `genomes`, or set `scale.assembly` on each locus scale.");n.push(e)}await t.ensureAssemblies(n)}function FU(e){let t=new Set,n=[`x`,`y`],r=e=>{for(let r of n){let n=e.getScaleResolution(r);n&&t.add(n)}};return r(e),yU(e,r),t}var IU=class{constructor(e,t){this.container=e,this.options=t}async addChildSpec(e,t){let{specs:n,insertAt:r}=this.options.getChildSpecs(),i=t??n.length,a=this.options.defaultName?.(i,e)??this.container.getNextAutoName(`child`),o=await this.container.context.createOrImportView(e,this.container,this.container,a,void 0,this.options.createViewOptions);await PU(o,this.container.context.genomeStore),r(i,e);let s=this.options.insertView(o,i);this.options.prepareView&&await this.options.prepareView(o,i,s),dU(o);let{dataSources:c,graphicsPromises:l}=cH(o,this.container.context.dataFlow,e=>e.isConfiguredVisible());return await dH(o,c),await NB(l),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow()),o}async removeChildAt(e){let{removeAt:t}=this.options.getChildSpecs();this.options.removeView(e),t(e),this.options.afterRemove&&await this.options.afterRemove(e),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow())}},LU=.5;function RU(e){return`multiscale`in e&&k(e.multiscale)}function zU(e){if(!e.multiscale.length)throw Error(`"multiscale" must contain at least one child view.`);let t=BU(e.stops,e.multiscale.length),n=e.multiscale.map((n,r)=>e.multiscale.length===1?n:{opacity:HU(r,e.multiscale.length,t),layer:[n]}),r={...e};return delete r.multiscale,delete r.stops,{...r,layer:n}}function BU(e,t){let n=`unitsPerPixel`,r,i=`auto`,a=LU;if(k(e))r=VU(e,t,`stops`);else if(Ze(e))n=e.metric??`unitsPerPixel`,r=VU(e.values,t,`stops.values`),i=e.channel??`auto`,a=e.fade??LU;else throw Error(`"stops" must be an array or an object with "values".`);if(n!==`unitsPerPixel`)throw Error(`Only "unitsPerPixel" is supported for "stops.metric" in multiscale.`);if(![`x`,`y`,`auto`].includes(i))throw Error(`"stops.channel" must be one of "x", "y", or "auto".`);if(!Number.isFinite(a)||a<0||a>.5)throw Error(`"stops.fade" must be a finite number in range [0, 0.5].`);if(r.forEach((e,t)=>{if(!B(e)&&(!Number.isFinite(e)||e<=0))throw Error(`Invalid stop value at index `+t+`. Stop values must be positive finite numbers.`)}),!r.some(B)){let e=r;for(let t=1;t<e.length;t++)if(e[t-1]<=e[t])throw Error(`"stops.values" must be strictly decreasing for "unitsPerPixel".`);for(let t=0;t<e.length-1;t++)if(e[t]*(1-a)<=e[t+1]*(1+a))throw Error(`Adjacent transitions overlap. Reduce fade or increase stop spacing.`)}return{metric:n,values:r,channel:i,fade:a}}function VU(e,t,n){if(!k(e))throw Error(`"`+n+`" must be an array of numbers or ExprRefs.`);let r=t-1;if(e.length!==r)throw Error(`Invalid stop count for multiscale. Expected `+r+`, got `+e.length+`.`);for(let t of e)if(!B(t)&&!Number.isFinite(t))throw Error(`"`+n+`" must contain only numbers or ExprRefs.`);return e}function HU(e,t,n){let r,i,a=n.values.map(e=>({hi:UU(e,1+n.fade),lo:UU(e,1-n.fade)}));if(e===0)r=[a[0].hi,a[0].lo];else if(e===t-1){let e=a.at(-1);r=[e.hi,e.lo]}else{let t=a[e-1],n=a[e];r=[t.hi,t.lo,n.hi,n.lo]}return i=e===0?[1,0]:e===t-1?[0,1]:[0,1,1,0],{channel:n.channel,unitsPerPixel:r,values:i}}function UU(e,t){return B(e)?{expr:`(`+e.expr+`) * `+t}:e*t}function WU(e){return`mark`in e&&(F(e.mark)||Ze(e.mark))}function GU(e){return`layer`in e&&Ze(e.layer)}function KU(e){return`import`in e}function qU(e){return`vconcat`in e&&k(e.vconcat)}function JU(e){return`hconcat`in e&&k(e.hconcat)}function YU(e){return`concat`in e&&k(e.concat)}var XU=class extends lU{#e=[];constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.spec=e,this.needsAxes={x:!0,y:!0}}async initializeChildren(){this.#e=await Promise.all(this.spec.layer.map(e=>this.context.createOrImportView(e,this,this,this.getNextAutoName(`layer`),e=>{if(!GU(e)&&!WU(e)&&!RU(e))throw new QN(`LayerView accepts only unit, layer, or multiscale specs as children!`,this)},{layoutSizeParams:`inherit`})))}async addChildSpec(e,t){return this.#t().addChildSpec(e,t)}async removeChildAt(e){await this.#t().removeChildAt(e)}#t(){return new IU(this,{getChildSpecs:()=>({specs:this.spec.layer,insertAt:(e,t)=>{this.spec.layer.splice(e,0,t)},removeAt:e=>{this.spec.layer.splice(e,1)}}),insertView:(e,t)=>(e.layoutParent??=this,this.#e.splice(t,0,e),e),removeView:e=>{let t=this.#e[e];if(!t)throw Error(`Child index out of range!`);t.disposeSubtree(),this.#e.splice(e,1)},defaultName:()=>this.getNextAutoName(`layer`),createViewOptions:{layoutSizeParams:`inherit`}})}get children(){return this.#e.slice()}*[Symbol.iterator](){for(let e of this.#e)yield e}render(e,t,n={}){if(super.render(e,t,n),this.isConfiguredVisible()){e.pushView(this,t);for(let r of this.#e)r.render(e,t,n);e.popView(this)}}propagateInteraction(e){this.handleInteraction(e,!0);for(let t=this.#e.length-1;t>=0;t--)if(this.#e[t].propagateInteraction(e),e.stopped)return;this.handleInteraction(e,!1)}},ZU=class{constructor(e,t){this.n=e,this.maxCols=t??1/0}get nRows(){return this.maxCols==1/0?1:Math.ceil(this.n/this.maxCols)}get nCols(){return Math.min(this.n,this.maxCols)}get rowIndices(){let e=[],t=this.nCols,n=this.nRows;for(let r=0;r<n;r++){let n=[];e.push(n);for(let e=0;e<t;e++){let i=r*t+e;i<this.n&&n.push(i)}}return e}get colIndices(){let e=[],t=this.nCols,n=this.nRows;for(let r=0;r<t;r++){let i=[];e.push(i);for(let e=0;e<n;e++){let n=e*t+r;n<this.n&&i.push(n)}}return e}getCellIndex(e,t){let n;if(this.maxCols==1/0)n=t==0?e:void 0;else if(e>=this.maxCols)return;else n=t*this.nCols+e;return n<this.n?n:void 0}getCellCoords(e){if(!(e<0||e>=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}};function QU(e){return()=>e}var $U=class e{static create(t,n,r,i){return new e(QU(t),QU(n),QU(r),QU(i))}static ZERO=e.create(0,0,0,0);_offset(e,t){let n=this[`_`+e];if(t===0)return n;switch(typeof t){case`number`:return()=>n()+t;case`function`:return()=>n()+t();default:throw Error(`Not a number of function`)}}_passThrough(e){return this._offset(e,0)}constructor(e,t,n,r){this._x=e,this._y=t,this._width=n,this._height=r}get x(){return this._x()}get y(){return this._y()}get width(){return this._width()}get height(){return this._height()}get x2(){return this._x()+this._width()}get y2(){return this._y()+this._height()}equals(e){return e?this===e||this.x===e.x&&this.y===e.y&&this.width===e.width&&this.height===e.height:!1}modify(t){if(!Object.keys(t).length)return this;let n=e=>{let n=t[e];return typeof n==`number`?QU(n):typeof n==`function`?n:this._passThrough(e)};return new e(n(`x`),n(`y`),n(`width`),n(`height`))}translate(t,n){return t===0&&n===0?this:new e(this._offset(`x`,t),this._offset(`y`,n),this._passThrough(`width`),this._passThrough(`height`))}translateBy(e){return this.translate(e.x,e.y)}expand(t,n=1){return t.left==0&&t.top==0&&t.right==0&&t.bottom==0?this:new e(t.left?this._offset(`x`,-t.left*n):this._passThrough(`x`),t.top?this._offset(`y`,-t.top*n):this._passThrough(`y`),t.width?this._offset(`width`,t.width*n):this._passThrough(`width`),t.height?this._offset(`height`,t.height*n):this._passThrough(`height`))}shrink(e){return this.expand(e,-1)}intersect(t){return this===t||t==null?this:new e(()=>Math.max(this.x,t.x),()=>Math.max(this.y,t.y),()=>Math.min(this.x2,t.x2)-Math.max(this.x,t.x),()=>Math.min(this.y2,t.y2)-Math.max(this.y,t.y))}union(t){return this===t||t==null?this:new e(()=>Math.min(this.x,t.x),()=>Math.min(this.y,t.y),()=>Math.max(this.x2,t.x2)-Math.min(this.x,t.x),()=>Math.max(this.y2,t.y2)-Math.min(this.y,t.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new e(QU(this.x),QU(this.y),QU(this.width),QU(this.height))}containsPoint(e,t){return e>=this.x&&e<this.x2&&t>=this.y&&t<this.y2}normalizePoint(e,t,n=!1){let r={x:(e-this.x)/this.width,y:(t-this.y)/this.height};return n&&(r.y=1-r.y),r}denormalizePoint(e,t,n=!1){return n&&(t=1-t),{x:this.x+e*this.width,y:this.y+t*this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}toRoundedString(){return`Rectangle: x: ${Math.round(this.x)}, y: ${Math.round(this.y)}, width: ${Math.round(this.width)}, height: ${Math.round(this.height)}`}},eW={x:`axisX`,y:`axisY`},tW={top:`axisTop`,bottom:`axisBottom`,left:`axisLeft`,right:`axisRight`},nW={nominal:`axisNominal`,ordinal:`axisOrdinal`,quantitative:`axisQuantitative`,index:`axisIndex`,locus:`axisLocus`};function rW(e,{channel:t,orient:n,type:r,style:i}){let a=iP(i);return rP(e.flatMap(e=>{let i=eW[t],o=n?tW[n]:void 0,s=r?nW[r]:void 0,c=[e.axis,i?e[i]:void 0,o?e[o]:void 0,s?e[s]:void 0];return[...c.flatMap(e=>iP(e?.style)).map(t=>e.style?.[t]),...c,...a.map(t=>e.style?.[t])]}))}var iW=`chromosome_ticks_and_labels`,aW=`labels_main`,oW=`ticks_and_labels`,sW=`axisExtent`,cW=`_labelWidth`,lW=10,uW=2;function dW(e){return e==`x`?`y`:`x`}var fW={x:[`bottom`,`top`],y:[`left`,`right`]},pW=Object.fromEntries(Object.entries(fW).map(([e,t])=>t.map(t=>[t,e])).flat(1));function mW(e){return pW[e]}var hW=class extends XU{#e;#t;#n;#r=!1;#i=!1;constructor(e,t,n,r,i,a){let o=mW(e.orient),s=rW(i.getConfigScopes(),{channel:o,orient:e.orient,type:t,style:e.style}),c={...s,...e},l={...s,...xW(t,c),...e};super(t==`locus`?CW(l,t):SW(l,t),n,r,i,`axis_${e.orient}`,{blockEncodingInheritance:!0,...a}),this.axisProps=l,this.#e=gW(l),this.#t=this.paramRuntime.allocateSetter(sW,this.#e),gU(this,{skipSubtree:!0}),_U(this,{skipSubtree:!0})}async initializeChildren(){await super.initializeChildren();let e=this.getDescendants().find(e=>e instanceof DB&&e.name===aW);e instanceof DB&&(this.#n=e),!(!this.axisProps.labels||!this.#n)&&this.registerDisposer(this._addBroadcastHandler(`subtreeDataReady`,()=>this.#o()))}getSize(){let e={px:this.getPerpendicularSize()},t={grow:1};return pW[this.axisProps.orient]==`x`?new ZP(t,e):new ZP(e,t)}getPerpendicularSize(){return this.#e}isPickingSupported(){return!1}#a(){this.#i||(this.#i=!0,queueMicrotask(()=>{this.#i=!1,this.#s()}))}#o(){if(this.#r)return;let e=this.#n?.getCollector();e&&(this.#r=!0,this.registerDisposer(e.observe(()=>this.#a())),e.completed&&this.#a())}#s(){let e=mW(this.axisProps.orient),t=this.dataParent.getScaleResolution(e);if(t&&!t.isDomainDefinedExplicitly()&&!t.isDomainInitialized())return;let n=bW(this.axisProps,this.context,this.#n);if(n===void 0)return;let r=gW(this.axisProps,n);r>=this.#e+uW&&(this.#e=r,this.#t(r),this.invalidateSizeCache(),this.context.requestLayoutReflow())}};function gW(e,t){let n=_W(e);return e.labels&&(n+=t??vW(e)),yW(e,n)}function _W(e){let t=e.ticks&&e.tickSize||0;return e.labels&&(t+=e.labelPadding),e.title&&(t+=e.titlePadding+e.titleFontSize),t}function vW(e){return mW(e.orient)==`x`?e.labelFontSize:lW}function yW(e,t){return Math.min(e.maxExtent||1/0,Math.max(e.minExtent||0,t))}function bW(e,t,n){let r=n?.getCollector();if(!r?.completed)return;let i=0;r.visitData(e=>{i=Math.max(i,Number(e[cW])||0)});let a=(e.labelFont?t.fontManager.getFont(e.labelFont,e.labelFontStyle,e.labelFontWeight):t.fontManager.getDefaultFont()).metrics;if(!a)return;let o=(a.capHeight+a.descent)/a.common.base*e.labelFontSize,s=e.labelAngle*Math.PI/180,c=Math.abs(Math.sin(s)),l=Math.abs(Math.cos(s)),u=mW(e.orient)==`x`?i*c+o*l:i*l+o*c;return Math.ceil(u)}function xW(e,t){let n=t.orient,r=e==`nominal`||e==`ordinal`,i=`center`,a=`middle`,o=t.labelAngle??((n==`top`||n==`bottom`)&&r?-90:0);switch(n){case`left`:i=`right`;break;case`right`:i=`left`;break;case`top`:case`bottom`:Math.abs(o)>30?(i=o>0==(n==`bottom`)?`left`:`right`,a=`middle`):a=n==`top`?`alphabetic`:`top`;break;default:}return{labelAlign:i,labelAngle:o,labelBaseline:a}}function SW(e,t){let n=e,r=mW(n.orient),i=dW(r),a=n.orient==`bottom`||n.orient==`right`?1:-1,o=n.orient==`bottom`||n.orient==`left`?1:0,s=()=>({field:`value`,type:t}),c=()=>({name:`domain`,data:{values:[{}]},mark:{type:`rule`,clip:!1,strokeDash:n.domainDash,strokeCap:n.domainCap,color:n.domainColor,[i]:o,size:n.domainWidth}}),l=()=>({name:aW,transform:[{type:`measureText`,field:`label`,as:cW,fontSize:n.labelFontSize,font:n.labelFont,fontStyle:n.labelFontStyle,fontWeight:n.labelFontWeight}],mark:{type:`text`,clip:!1,align:n.labelAlign,angle:n.labelAngle,baseline:n.labelBaseline,font:n.labelFont,fontStyle:n.labelFontStyle,fontWeight:n.labelFontWeight,[i+`Offset`]:(n.tickSize+n.labelPadding)*a,[i]:o,size:n.labelFontSize,color:n.labelColor,minBufferSize:1500},encoding:{[r]:s(),text:{field:`label`}}}),u=()=>({name:`ticks`,mark:{type:`rule`,clip:!1,strokeDash:n.tickDash,strokeCap:n.tickCap,color:n.tickColor,size:n.tickWidth,minBufferSize:300},encoding:{[i]:{value:o},[i+`2`]:{value:{expr:`${o} - ${n.tickSize} / ${sW} * ${o?1:-1}`}}}}),d=()=>({name:`title`,data:{values:[{}]},mark:{type:`text`,clip:!1,align:`center`,baseline:n.orient==`bottom`?`bottom`:`top`,angle:[0,90,0,-90][[`top`,`right`,`bottom`,`left`].indexOf(n.orient)],text:n.title,color:n.titleColor,[r]:.5,[i]:1-o}}),f=()=>{let e={name:oW,encoding:{[r]:s()},layer:[]};return n.ticks&&e.layer.push(u()),n.labels&&e.layer.push(l()),e},p={resolve:{scale:{[r]:`forced`}},domainInert:!0,data:{lazy:{type:`axisTicks`,channel:r,axis:e}},layer:[]};return n.domain&&p.layer.push(c()),(n.ticks||n.labels)&&p.layer.push(f()),n.title&&p.layer.push(d()),p}function CW(e,t){let n=e,r=mW(n.orient),i=dW(r),a=n.orient==`bottom`||n.orient==`left`?1:0,o=()=>({name:`chromosome_ticks`,mark:{type:`rule`,strokeDash:e.chromTickDash,strokeDashOffset:e.chromTickDashOffset,[i]:a,[i+`2`]:{expr:`${a} - ${n.chromTickSize} / ${sW} * ${a?1:-1}`},color:e.chromTickColor,size:n.chromTickWidth}}),s=()=>{let i;switch(n.orient){case`top`:i={y:0,angle:0,paddingX:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case`bottom`:i={y:1,angle:0,paddingX:4,dy:n.chromLabelPadding+n.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case`left`:i={x:1,angle:-90,paddingY:4,dy:-n.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case`right`:i={x:0,angle:90,align:`right`,paddingY:4,dy:-n.chromLabelPadding};break;default:i={}}return{name:`chromosome_labels`,mark:{type:`text`,size:n.chromLabelFontSize,font:n.chromLabelFont,fontWeight:n.chromLabelFontWeight,fontStyle:n.chromLabelFontStyle,color:n.chromLabelColor,align:e.chromLabelAlign,baseline:`alphabetic`,clip:!1,...i},encoding:{[r+`2`]:{field:`continuousEnd`,type:t},text:{field:`name`}}}},c;switch(n.orient){case`bottom`:case`top`:c={};break;case`left`:c={labelAngle:-90,labelAlign:`center`,labelPadding:6};break;case`right`:c={labelAngle:90,labelAlign:`center`,labelPadding:6};break;default:c={}}let l=SW({...e,...c},t);if(e.chromTicks||e.chromLabels){let i={name:iW,data:{lazy:{type:`axisGenome`,channel:mW(n.orient)}},encoding:{[r]:{field:`continuousStart`,type:t,band:0}},layer:[]};if(e.chromTicks&&i.layer.push(o()),e.chromLabels){i.layer.push(s());let e;l.layer.filter(e=>e.name==oW).forEach(t=>t.layer.filter(e=>e.name==aW).forEach(t=>{e=t.mark})),e&&(n.orient==`top`||n.orient==`bottom`?(e.viewportEdgeFadeWidthLeft=30,e.viewportEdgeFadeDistanceLeft=40):(e.viewportEdgeFadeWidthBottom=30,e.viewportEdgeFadeDistanceBottom=40))}l.layer.push(i)}return l}function wW(e,t,n){e.handleInteraction(t,!0),!t.stopped&&(n(),!t.stopped&&e.handleInteraction(t,!1))}function TW(e,t,n,r){return t()?(n(),e.stopped||r?.(),!0):!1}var EW=class{#e;#t=0;#n=0;constructor(e){this.#e=Array(e)}push(e){this.#e[this.#t]=e,this.#t=(this.#t+1)%this.size,this.#n=Math.min(this.#n+1,this.size)}get(){let e=this.#e;return this.#n<this.size?e.slice(0,this.#n):e.slice(this.#t,this.size).concat(e.slice(0,this.#t))}get size(){return this.#e.length}get length(){return this.#n}};function DW(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`touchgesture`&&(t.phase===`move`||t.phase===`end`)&&(t.pointerCount===1||t.pointerCount===2)&&Number.isFinite(t.xDelta)&&Number.isFinite(t.yDelta)&&Number.isFinite(t.zDelta)}function OW(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`wheel`&&Number.isFinite(t.deltaX)&&Number.isFinite(t.deltaY)&&Number.isFinite(t.deltaMode)&&typeof t.preventDefault==`function`}function kW(e,t,n){return new Proxy(e,{get(e,r){if(r===`deltaX`)return t;if(r===`deltaY`)return n;let i=Reflect.get(e,r,e);return typeof i==`function`?i.bind(e):i}})}function AW(e){let t=e=>e===null||typeof e!=`object`&&typeof e!=`function`;return new Proxy(e,{get(e,n,r){let i=Reflect.get(e,n,e);if(!t(i))throw Error(`Access to non-primitive property "${String(n)}" is not allowed.`);return i},getPrototypeOf(){return null},ownKeys(e){return Reflect.ownKeys(e).filter(n=>t(e[n])).map(e=>typeof e==`symbol`?e:String(e))},getOwnPropertyDescriptor(e,n){let r=Reflect.getOwnPropertyDescriptor(e,n);if(r&&!(`get`in r||`set`in r)&&t(r.value))return{value:r.value,writable:!!r.writable,enumerable:!!r.enumerable,configurable:!!r.configurable}},has(e,n){return n in e?t(e[n]):!1}})}var jW=class e{static fromMouseEvent(t){return new e(t.clientX,t.clientY)}constructor(e,t){this.x=e,this.y=t}subtract(t){return new e(this.x-t.x,this.y-t.y)}add(t){return new e(this.x-t.x,this.y-t.y)}multiply(t){return new e(this.x*t,this.y*t)}get length(){return Math.sqrt(this.x**2+this.y**2)}equals(e){return e?e===this||e.x===this.x&&e.y===this.y:!1}},MW=0,NW=new WeakMap,PW=UW(),FW=6;function IW(){MW=performance.now()}function LW(){return performance.now()-MW<50}function RW(e){return function(...t){return IW(),e(...t)}}function zW(e,t,n,r,i){n=RW(n);let a=WW(i);if(e.type==`wheel`){let i=e.wheelEvent,o=i.deltaMode?120:1;if(!i.deltaX&&!i.deltaY)return;a.smoother?.stop();let{x:s,y:c}=e.point;if(r){let n=BW(e.point,t,r);if(n)n.x!==void 0&&(s=n.x),n.y!==void 0&&(c=n.y);else{let e=r.mark.encoders;e.x&&!e.x2&&!e.x.constant&&(s=VW(e.x,r.datum)*t.width+t.x),e.y&&!e.y2&&!e.y.constant&&(c=(1-VW(e.y,r.datum))*t.height+t.y)}}(Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:s,y:c,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300})===!0:n({x:s,y:c,xDelta:-i.deltaX*o,yDelta:0,zDelta:0})===!0)&&i.preventDefault()}else if(e.type==`mousedown`&&e.mouseEvent.button===0){a.smoother&&a.smoother.stop();let t=new EW(30),r=e.mouseEvent;r.preventDefault(),e.target?.context.suspendHoverTracking();let o=jW.fromMouseEvent(r),s=e=>{let r=jW.fromMouseEvent(e);t.push({point:r,timestamp:performance.now()});let i=r.subtract(o);n({x:o.x,y:o.y,xDelta:i.x,yDelta:i.y,zDelta:0}),o=r},c=r=>{document.removeEventListener(`mousemove`,s),document.removeEventListener(`mouseup`,c),e.target?.context.resumeHoverTracking(r),KW(a,t,o,n,i,{minSampleCount:5})};document.addEventListener(`mouseup`,c,!1),document.addEventListener(`mousemove`,s,!1)}else if(e.type==`touchgesture`){if(!DW(e.uiEvent))return;let t=e.uiEvent,{xDelta:r,yDelta:o,zDelta:s}=t;if(t.phase===`end`){t.pointerCount===1&&KW(a,a.touchPanEventBuffer,a.touchPanLastPoint,n,i,{minSampleCount:2,minVelocityPxPerMs:.03}),GW(a);return}a.touchPanPointerCount!==t.pointerCount&&(GW(a),a.touchPanPointerCount=t.pointerCount);let c=new jW(e.point.x+r,e.point.y+o);if(a.touchPanLastPoint=c,t.pointerCount===1&&(r!==0||o!==0)&&a.touchPanEventBuffer.push({point:c,timestamp:performance.now()}),r===0&&o===0&&s===0)return;a.smoother?.stop(),n({x:e.point.x,y:e.point.y,xDelta:r,yDelta:o,zDelta:s})}}function BW(e,t,n){if(n.mark.getType()!==`link`)return;let r=n.mark.encoders;if(!(r.x&&r.y&&r.x2&&r.y2))return;let i=!r.x.constant&&!r.x2.constant,a=!r.y.constant&&!r.y2.constant;if(!i&&!a)return;let o=VW(r.x,n.datum)*t.width+t.x,s=(1-VW(r.y,n.datum))*t.height+t.y,c=VW(r.x2,n.datum)*t.width+t.x,l=(1-VW(r.y2,n.datum))*t.height+t.y,u=0,d=0;i&&(u+=(e.x-o)**2,d+=(e.x-c)**2),a&&(u+=(e.y-s)**2,d+=(e.y-l)**2);let f=r.size?+r.size(n.datum):0,p=Number.isFinite(f)?Math.max(f,FW):FW,m=p*p;if(!(Math.min(u,d)>m))return u<=d?{x:i?o:void 0,y:a?s:void 0}:{x:i?c:void 0,y:a?l:void 0}}function VW(e,t){let n=+e(t),r=e.scale;if(!r)return n;let i=HW(e.channelDef);if(r.type===`band`||r.type===`point`)return Number.isFinite(i)?n+r.bandwidth()*i:n;if(r.type===`index`||r.type===`locus`){if(!Number.isFinite(i))return n;let e=r;return n+e.step()*(i-e.align())}else return n}function HW(e){return e&&`band`in e?e.band??.5:.5}function UW(){return{smoother:void 0,touchPanEventBuffer:new EW(30),touchPanLastPoint:void 0,touchPanPointerCount:0}}function WW(e){if(!e)return PW;let t=NW.get(e);return t||(t=UW(),NW.set(e,t)),t}function GW(e){e.touchPanEventBuffer=new EW(30),e.touchPanLastPoint=void 0,e.touchPanPointerCount=0}function KW(e,t,n,r,i,a={}){if(!i||!n)return;let o=a.minSampleCount??5,s=a.minVelocityPxPerMs??0,c=performance.now(),l=t.get().filter(e=>c-e.timestamp<160);if(l.length<o||l.length>=5&&qW(l))return;let u=l.at(-1),d=l[0],f=u.point.subtract(d.point).multiply(1/(u.timestamp-d.timestamp));if(!Number.isFinite(f.x)||!Number.isFinite(f.y)||f.length<s)return;let p=n.x,m=n.y;e.smoother=bH(i,e=>{r({x:e.x,y:e.y,xDelta:p-e.x,yDelta:m-e.y,zDelta:0}),p=e.x,m=e.y},150,.5,{x:p,y:m}),e.smoother({x:n.x-f.x*250,y:n.y-f.y*250})}function qW(e){let t=e[Math.floor(e.length/2)],n=t.point.subtract(e[0].point).multiply(t.timestamp-e[0].timestamp),r=e.at(-1).point.subtract(t.point).multiply(e.at(-1).timestamp-t.timestamp),i=n.length;return r.length/i<.4}var JW=class extends XU{constructor(e,t,n,r,i,a){super(QW(e,t),n,r,i,`axisGrid_${e.orient}`,{blockEncodingInheritance:!0,...a}),this.axisProps=e,gU(this,{skipSubtree:!0}),_U(this,{skipSubtree:!0})}getOrient(){return this.axisProps.orient}isPickingSupported(){return!1}};function YW(e,t){let n=e,r=mW(n.orient);return{name:`grid_lines`,data:{lazy:{type:`axisTicks`,channel:r,axis:e}},mark:{type:`rule`,strokeDash:n.gridDash,strokeCap:n.gridCap,color:n.gridColor,size:n.gridWidth,opacity:n.gridOpacity,minBufferSize:300},encoding:{[r]:{field:`value`,type:t}}}}function XW(e,t){let n=e,r=mW(n.orient);return{name:`chromosome_lines`,data:{lazy:{type:`axisGenome`,channel:r}},mark:{type:`rule`,strokeDash:n.chromGridDash,strokeCap:n.chromGridCap,color:n.chromGridColor,size:n.chromGridWidth,opacity:n.chromGridOpacity},encoding:{[r]:{field:`continuousStart`,type:t,band:0}}}}function ZW(e,t){let n=e,r=mW(n.orient);return{name:`chromosome_fill`,data:{lazy:{type:`axisGenome`,channel:r}},mark:{type:`rect`},encoding:{[r]:{field:`continuousStart`,type:t,band:0},[r+`2`]:{field:`continuousEnd`,band:0},fill:{field:`odd`,type:`nominal`,scale:{domain:[!1,!0],range:[n.chromGridFillEven??`white`,n.chromGridFillOdd??`white`]}},opacity:{field:`odd`,type:`nominal`,scale:{type:`ordinal`,domain:[!1,!0],range:[n.chromGridFillEven?1:0,n.chromGridFillOdd?1:0]}}}}}function QW(e,t){let n={...e},r=[];return n.chromGrid&&(n.chromGridFillOdd||n.chromGridFillEven)&&r.push(ZW(n,t)),n.chromGrid&&n.chromGridOpacity>0&&r.push(XW(n,t)),n.grid&&n.gridOpacity>0&&r.push(YW(n,t)),{name:`grid_layers`,resolve:{scale:{[mW(e.orient)]:`forced`,fill:`independent`,opacity:`independent`}},domainInert:!0,layer:r}}function $W(e){return rP(e.map(e=>e.title))}function eG(e,t){let n=iP(t);return n.length==0?{}:rP(e.flatMap(e=>n.map(t=>e.style?.[t])))}var tG={start:0,middle:.5,end:1},nG={start:`left`,middle:`center`,end:`right`},rG=`group-title`;function iG(e){let t={},n={x:0,y:0},r=tG[e.anchor??`middle`];switch(e.orient){case`top`:n={x:r,y:1},t={baseline:`alphabetic`,angle:0};break;case`right`:n={x:1,y:1-r},t={baseline:`alphabetic`,angle:90};break;case`bottom`:n={x:r,y:0},t={baseline:`top`,angle:0};break;case`left`:n={x:0,y:r},t={baseline:`alphabetic`,angle:-90};break;default:}return{orientConfig:t,xy:n}}function aG(e,t=[]){if(!e)return;let n=F(e)?{text:e}:e;if(!n.text||n.orient==`none`)return;let r=$W(t),i=eG(t,n.style??rG),{orientConfig:a}=iG({...r,...i,...n});return{...r,...a,...i,...n}}function oG(e,t=[]){let n=aG(e,t);if(!n)return;let{xy:r}=iG(n),i={xOffset:0,yOffset:0};switch(n.orient){case`top`:i.yOffset=-n.offset;break;case`right`:i.xOffset=n.offset;break;case`bottom`:i.yOffset=n.offset;break;case`left`:i.xOffset=-n.offset;break;default:}return{data:{values:[{}]},mark:{type:`text`,tooltip:null,clip:!1,...r,...i,text:n.text,align:n.align??nG[n.anchor],angle:n.angle,baseline:n.baseline,dx:n.dx,dy:n.dy,color:n.color,font:n.font,size:n.fontSize,fontStyle:n.fontStyle,fontWeight:n.fontWeight}}}var sG=class extends DB{#e;#t=$U.ZERO;#n=$U.ZERO;#r=$U.ZERO;viewportOffset=0;#i;constructor(e,t,n={}){super({params:[{name:`scrollbarOpacity`,value:1}],opacity:{expr:`scrollbarOpacity`},data:{values:[{}]},mark:{type:`rect`,fill:`#b0b0b0`,fillOpacity:.6,stroke:`white`,strokeWidth:1,strokeOpacity:1,cornerRadius:5,clip:!1}},e.layoutParent.context,e.layoutParent,e.view,`scrollbar-`+t,{blockEncodingInheritance:!0}),gU(this,{skipSubtree:!0}),_U(this,{skipSubtree:!0}),this.config={scrollbarSize:8,scrollbarPadding:2,scrollbarMinLength:20},this.#e=t,this.#i=n.onViewportOffsetChange;let r=this.config.scrollbarPadding,i=this.config.scrollbarSize;this.#t=this.#e==`vertical`?new $U(()=>this.#n.x+this.#n.width-i-r,()=>this.#n.y+r+this.scrollOffset,()=>i,()=>this.#s()):new $U(()=>this.#n.x+r+this.scrollOffset,()=>this.#n.y+this.#n.height-i-r,()=>this.#s(),()=>i),this.#f(this.viewportOffset),this.addInteractionListener(`mousedown`,e=>{if(e.stopPropagation(),this.#c()<=0)return;let n=e=>t==`vertical`?e.clientY:e.clientX;e.mouseEvent.preventDefault(),this.context.suspendHoverTracking();let r=this.scrollOffset,i=n(e.mouseEvent),a=e=>{let t=this.#c();if(t<=0)return;let a=kN(n(e)-i+r,0,t);this.interpolateViewportOffset({x:this.#u(a)})},o=e=>{document.removeEventListener(`mousemove`,a),document.removeEventListener(`mouseup`,o),this.context.resumeHoverTracking(e)};document.addEventListener(`mouseup`,o,!1),document.addEventListener(`mousemove`,a,!1)})}get scrollOffset(){return this.#l(this.viewportOffset)}setViewportOffset(e,{notify:t=!0,syncSmoother:n=!1}={}){this.viewportOffset=kN(e,0,this.#d()),n&&this.#f(this.viewportOffset),t&&this.#i&&this.#i(this.viewportOffset)}#a(){let e=this.#e==`horizontal`?`width`:`height`,t=this.#n[e],n=this.#r[e];return n>0?Math.min(1,t/n):1}#o(){let e=this.#e==`horizontal`?`width`:`height`;return Math.max(0,this.#n[e]-2*this.config.scrollbarPadding)}#s(){let e=this.#o(),t=this.#a()*e,n=this.config.scrollbarMinLength;return Math.min(e,Math.max(n,t))}#c(){return Math.max(0,this.#o()-this.#s())}#l(e){let t=this.#d(),n=this.#c();return t<=0||n<=0?0:e/t*n}#u(e){let t=this.#d(),n=this.#c();return t<=0||n<=0?0:e/n*t}#d(){let e=this.#e==`horizontal`?`width`:`height`;return Math.max(0,this.#r[e]-this.#n[e])}render(e,t,n){super.render(e,this.#t,n)}updateScrollbar(e,t){this.#n=e.flatten(),this.#r=t,this.setViewportOffset(this.viewportOffset,{notify:!1,syncSmoother:!0})}#f(e){this.interpolateViewportOffset=bH(this.context.animator,e=>{this.setViewportOffset(e.x,{notify:!0,syncSmoother:!1})},35,.4,{x:e})}},cG=`intervalDragActive`,lG=class extends XU{constructor(e,t,n={}){let r=t(),i=Object.keys(r.intervals),{zindex:a=1,...o}=n;if(Lh.every(e=>!i.includes(e)))throw Error(`SelectionRect requires at least one of the channels 'x' or 'y' to be present in the selection.`);let s={name:`selectionRect`,domainInert:!0,params:[{name:cG,value:!1}],resolve:{scale:{x:`forced`,y:`forced`}},data:{values:uG(t())},encoding:{},layer:[]};i.includes(`x`)&&(s.encoding.x={field:`_x`,type:null,title:null},s.encoding.x2={field:`_x2`}),i.includes(`y`)&&(s.encoding.y={field:`_y`,type:null,title:null},s.encoding.y2={field:`_y2`}),s.layer.push({name:`selectionRectRect`,mark:{type:`rect`,clip:!0,fill:`#808080`,fillOpacity:.05,stroke:`black`,strokeWidth:1,strokeOpacity:.2,cursor:o.cursor??{expr:`intervalDragActive ? 'grabbing' : 'move'`},...o}});let c=t=>{let n=e.view.getScaleResolution(t);return`format(datum._${t}2 - datum._${t}, '.3s')`+(n.type===`locus`?` + 'b'`:``)},l=n.measure==`inside`?9:n.measure==`outside`?-9:0;i.includes(`x`)&&l!=0&&s.layer.push({name:`selectionRectTextX`,mark:{type:`text`,align:`center`,paddingX:5,dy:l,tooltip:null},encoding:{text:{expr:c(`x`)},y:i.includes(`y`)?{field:`_y2`,type:null,title:null}:{value:1},y2:null}}),i.includes(`y`)&&l!=0&&s.layer.push({name:`selectionRectTextY`,mark:{type:`text`,align:`center`,paddingY:5,dy:l,tooltip:null,angle:-90},encoding:{text:{expr:c(`y`)},x2:null}}),super(s,e.layoutParent.context,e.layoutParent,e.view,`selectionRect`,{blockEncodingInheritance:!0}),this._zindex=a,gU(this,{skipSubtree:!0}),_U(this,{skipSubtree:!0}),this.registerDisposer(t.subscribe(()=>{let e=t(),n=this.flowHandle?.dataSource;if(!n)throw Error(`Cannot find selection rect data source handle!`);n.updateDynamicData(uG(e))}))}getZindex(){return this._zindex}};function uG(e){let t=e.intervals.x,n=e.intervals.y;return!t&&!n?[]:[{_x:t?.[0],_x2:t?.[1],_y:n?.[0],_y2:n?.[1]}]}function dG(e,t){let n=[`cell`,...iP(t?.style)];return rP(e.flatMap(e=>[e.view,...n.map(t=>e.style?.[t])]).concat([t]))}var fG=class{constructor(e,t,n){if(this.layoutParent=t,this.view=e,this.serial=n,this.background=void 0,this.backgroundStroke=void 0,this.axes={},this.gridLines={},this.scrollbars={},this.selectionRect=void 0,this.title=void 0,this.backgroundZindex=0,this.backgroundStrokeZindex=void 0,this.titleZindex=1,this.coords=$U.ZERO,e.needsAxes.x||e.needsAxes.y){let r=e.spec,i=dG(e.getConfigScopes(),`view`in r?r.view:void 0);this.backgroundZindex=i?.zindex??0,this.backgroundStrokeZindex=i?.strokeZindex;let a=hG(i);a&&(this.background=new DB(a,t.context,t,e,`background`+n,{blockEncodingInheritance:!0}),gU(this.background,{skipSubtree:!0}),_U(this.background,{skipSubtree:!0}));let o=gG(i);o&&(this.backgroundStroke=new DB(o,t.context,t,e,`backgroundStroke`+n,{blockEncodingInheritance:!0}),gU(this.backgroundStroke,{skipSubtree:!0}),_U(this.backgroundStroke,{skipSubtree:!0}));let s=aG(e.spec.title,e.getConfigScopes());this.titleZindex=s?.zindex??1;let c=oG(s);c&&(this.title=new DB(c,t.context,t,e,`title`+n,{blockEncodingInheritance:!0}),gU(this.title,{skipSubtree:!0}),_U(this.title,{skipSubtree:!0}))}e.spec.viewportWidth!=null&&(this.scrollbars.horizontal=new sG(this,`horizontal`)),e.spec.viewportHeight!=null&&(this.scrollbars.vertical=new sG(this,`vertical`)),this.#e()}#e(){let e=this.view;for(let[t,n]of e.paramRuntime.paramConfigs){if(!(`select`in n))continue;let r=og(n.select);if(!cg(r))continue;let i=r.encodings,a=Object.fromEntries(i.map(e=>{let n=this.view.getScaleResolution(e),r=n?.getResolvedScaleType();if(!n||!r||!_m(r))throw Error(`No continuous scale found for interval selection param "${t}" on channel "${e}"! Scale type is "${r??`none`}".`);return[e,n]})),o=i.some(e=>a[e].isZoomable()),s=r.on??(o?{type:`mousedown`,filter:`event.shiftKey`}:{type:`mousedown`});if(s.type!==`mousedown`)throw Error(`Interval selection param "${t}" currently supports only "mousedown" in "on".`);let c=s.filter?VL(s.filter):()=>!0,l=pG(r.zoom,o,t),u=l?.filter?VL(l.filter):()=>!0;if(this.selectionRect)throw Error(`Only one interval selection per container is currently allowed!`);let d=!1,f=!1,p=!1,m=null,h=(e,t)=>Object.fromEntries(i.map(n=>[n,[Math.min(e[n],t[n]),Math.max(e[n],t[n])]])),g=e.paramRuntime.createExpression(t),_=n=>{e.paramRuntime.setValue(t,n)};n.value&&_({type:`interval`,intervals:n.value});let v=()=>{_(eg(i))};this.selectionRect=new lG(this,g,r.mark);let y=e=>{this.selectionRect.paramRuntime.setValue(cG,e)};this.selectionRect.initializeChildren();let b=t=>{let n={x:0,y:0},r=e.coords.normalizePoint(t.x,t.y,!0);for(let e of i){let t=a[e].getScale();n[e]=t.invert(e==`x`?r.x:r.y)+([`index`,`locus`].includes(t.type)?.5:0)}return n},x=t=>{let{intervals:n}=t,r=(t,n,r)=>{let i=(e,t)=>t==null?null:a[e].getScale()(t),o=i(`x`,t)??r,s=i(`y`,n)??r;return e.coords.denormalizePoint(o,s,!0)},i=r(n.x?.[0],n.y?.[0],0),o=r(n.x?.[1],n.y?.[1],1);return $U.create(i.x,i.y,o.x-i.x,o.y-i.y)};e.addInteractionListener(`mousedown`,t=>{if(t.mouseEvent.button!=0)return;if(m=d?x(g()):null,m)y(!0),f=!0;else{let n=t.point;if(lg(g())&&(f=!0),c(t.proxiedMouseEvent))v(),p=!0;else if(lg(g())){let t=r=>{e.removeInteractionListener(`mouseup`,t);let i=r.point;n.subtract(i).length<2&&v()};e.addInteractionListener(`mouseup`,t);return}else return}t.stopPropagation(),e.context.suspendHoverTracking();let n=t.point,r=jW.fromMouseEvent(t.mouseEvent).subtract(n),o=e=>{let t=jW.fromMouseEvent(e).subtract(r),o;if(m){let e=t.subtract(n),r=m.translate(e.x,e.y);o=h(b(new jW(r.x,r.y)),b(new jW(r.x2,r.y2)))}else o=h(b(n),b(t));for(let e of i){let t=a[e],{zoomExtent:n}=t,r=o[e];if(m){let e=r[1]-r[0],t=n[0],i=n[1];r[0]<t&&(r[0]=t,r[1]=t+e),r[1]>i&&(r[1]=i,r[0]=i-e)}let i=mG(t,r);i?(r[0]=i[0],r[1]=i[1]):(r[0]=n[0],r[1]=n[0])}_({type:`interval`,intervals:o})},s=t=>{document.removeEventListener(`mousemove`,o),document.removeEventListener(`mouseup`,s),y(!1),p=!1,m&&=null,e.context.resumeHoverTracking(t)};document.addEventListener(`mousemove`,o),document.addEventListener(`mouseup`,s)}),e.addInteractionListener(`click`,e=>{e.mouseEvent.button==0&&(f&&=(e.stopPropagation(),!1))},!0);let S=e=>ug(g(),b(e));e.addInteractionListener(`dblclick`,e=>{S(e.point)&&(v(),e.stopPropagation())},!0),e.addInteractionListener(`wheel`,e=>{let t=e.wheelEvent;if(!l||!u(AW(t))||Math.abs(t.deltaX)>=Math.abs(t.deltaY)||!S(e.point))return;let n=g();if(!lg(n))return;let r=t.deltaMode?120:1,o=2**(t.deltaY*r/300),s=b(e.point),c={...n.intervals},d=!1;for(let e of i){let t=c[e];if(!t||t.length!==2)continue;let n=a[e],r=mG(n,rB(n.getScale(),[...t],s[e],o,{onUnsupported:`identity`}));r&&(r[0]!==t[0]||r[1]!==t[1])&&(c[e]=r,d=!0)}d&&(_({...n,type:`interval`,intervals:c}),t.preventDefault(),e.stopPropagation())}),e.addInteractionListener(`mousemove`,e=>{S(e.point)?p||(d=!0):d=!1})}}*getChildren(){this.background&&(yield this.background),this.backgroundStroke&&(yield this.backgroundStroke),this.title&&(yield this.title),yield*Object.values(this.axes),yield*Object.values(this.gridLines),yield this.view,yield*Object.values(this.scrollbars),this.selectionRect&&(yield this.selectionRect)}async createAxes(){this.disposeAxisViews();let{view:e,axes:t,gridLines:n}=this,r=(e,n)=>{let r=e.getAxisProps();if(r===null)return;let i=r?{...r}:{};if(!i.orient){for(let e of fW[n])if(!t[e]){i.orient=e;break}if(!i.orient)throw Error(`No slots available for an axis! Perhaps a LayerView has more than two children?`)}if(i.title??=e.getTitle(),!fW[n].includes(i.orient))throw Error(`Invalid axis orientation "${i.orient}" on channel "${n}"!`);return i},i=async(e,n,i)=>{let a=r(e,n);if(a){if(t[a.orient])throw Error(`An axis with the orient "${a.orient}" already exists!`);let n=new hW(a,e.scaleResolution.type,this.layoutParent.context,this.layoutParent,i);t[a.orient]=n,await n.initializeChildren()}},a=async(e,t,i)=>{let a=r(e,t);if(!a)return;let o={...rW(i.getConfigScopes(),{channel:t,orient:a.orient,type:e.scaleResolution.type,style:a.style}),...a};if(o.grid||o.chromGrid){let t=new JW(o,e.scaleResolution.type,this.layoutParent.context,this.layoutParent,i);n[a.orient]=t,await t.initializeChildren()}};for(let t of[`x`,`y`])if(e.needsAxes[t]){let n=e.resolutions.axis[t];if(!n)continue;await i(n,t,e)}for(let t of[`x`,`y`])if(e.needsAxes[t]&&e.getConfiguredOrDefaultResolution(t,`axis`)!=`excluded`){let n=e.getAxisResolution(t);if(!n)continue;await a(n,t,e)}if(e instanceof XU){for(let t of e)for(let[e,n]of Object.entries(t.resolutions.axis)){let r=n.getAxisProps();r&&r.orient&&await i(n,e,t)}for(let t of e)for(let[e,n]of Object.entries(t.resolutions.axis)){let r=n.getAxisProps();r&&!r.orient&&await i(n,e,t)}}[...Object.values(t),...Object.values(n)].forEach(e=>e.visit(e=>{e instanceof DB&&e.resolve(`scale`)}))}disposeAxisViews(){for(let e of Object.values(this.axes))e.disposeSubtree();for(let e of Object.values(this.gridLines))e.disposeSubtree();this.axes={},this.gridLines={}}getOverhang(){let e=e=>{let t=this.axes[e];return t?Math.max(t.getPerpendicularSize()+(t.axisProps.offset??0),0):0};return new iF(e(`top`),e(`right`),e(`bottom`),e(`left`)).add(this.view.getOverhang())}getOverhangAndPadding(){return this.getOverhang().add(this.view.getPadding())}};function pG(e,t,n){let r=e===void 0?!t:e;if(r===!1)return;if(r===!0)return{type:`wheel`};let i=dg(r);if(i.type!==`wheel`)throw Error(`Interval selection param "${n}" currently supports only "wheel" in "zoom".`);return i}function mG(e,t){let n=e.getScale();return Az(t,e.zoomExtent,{roundToIntegers:n.type===`index`||n.type===`locus`})}function hG(e){if(e?.fill||e?.fillOpacity||e?.shadowOpacity)return{data:{values:[{}]},mark:{color:e.fill,opacity:e.fillOpacity??(e.fill?1:0),type:`rect`,clip:!1,tooltip:null,minHeight:1,minOpacity:0,shadowBlur:e.shadowBlur,shadowColor:e.shadowColor,shadowOffsetX:e.shadowOffsetX,shadowOffsetY:e.shadowOffsetY,shadowOpacity:e.shadowOpacity}}}function gG(e){if(!(!e||!e.stroke||e.strokeWidth===0||e.strokeOpacity===0))return{resolve:{scale:{x:`excluded`,y:`excluded`},axis:{x:`excluded`,y:`excluded`}},data:{values:[{x:0,y:0,x2:1,y2:0},{x:1,y:0,x2:1,y2:1},{x:1,y:1,x2:0,y2:1},{x:0,y:1,x2:0,y2:0}]},mark:{size:e.strokeWidth??1,color:e.stroke??`lightgray`,strokeCap:`square`,opacity:e.strokeOpacity??1,type:`rule`,clip:!1,tooltip:null},encoding:{x:{field:`x`,type:`quantitative`,scale:null},y:{field:`y`,type:`quantitative`,scale:null},x2:{field:`x2`},y2:{field:`y2`}}}}var _G={pan:{baseSpeed:1,maxExtraSpeed:3,pressHalfLifeMs:30,releaseHalfLifeMs:100,holdGrowthHalfLifeMs:800,stopVelocity:.01},zoom:{baseSpeed:3,maxExtraSpeed:15,pressHalfLifeMs:10,releaseHalfLifeMs:100,holdGrowthHalfLifeMs:600,stopVelocity:.01}},vG=class{#e;#t;#n;#r;#i;constructor(e=_G){this.#r=e.pan,this.#i=e.zoom,this.#e={KeyW:!1,KeyA:!1,KeyS:!1,KeyD:!1},this.#t={velocity:0,holdMs:0,direction:0},this.#n={velocity:0,holdMs:0,direction:0}}isNavigationKey(e){return e===`KeyW`||e===`KeyA`||e===`KeyS`||e===`KeyD`}handleKeyDown(e){return this.#a(e,!0)}handleKeyUp(e){return this.#a(e,!1)}reset(){this.#e.KeyW=!1,this.#e.KeyA=!1,this.#e.KeyS=!1,this.#e.KeyD=!1,this.#t.velocity=0,this.#t.holdMs=0,this.#t.direction=0,this.#n.velocity=0,this.#n.holdMs=0,this.#n.direction=0}step(e){if(e<=0)return{panDelta:0,zoomDelta:0,active:this.isActive()};{let t=yG(this.#e.KeyD,this.#e.KeyA),n=yG(this.#e.KeyW,this.#e.KeyS),r=bG(this.#t,t,e,this.#r),i=bG(this.#n,n,e,this.#i),a=e/1e3;return{panDelta:r*a,zoomDelta:i*a,active:this.isActive()}}}isActive(){return this.#e.KeyW||this.#e.KeyA||this.#e.KeyS||this.#e.KeyD?!0:this.#t.velocity!==0||this.#n.velocity!==0}#a(e,t){if(this.isNavigationKey(e)){let n=e;return this.#e[n]===t?!1:(this.#e[n]=t,!0)}else return!1}};function yG(e,t){return e===t?0:t?1:-1}function bG(e,t,n,r){if(t!==0){e.direction!==t&&(e.holdMs=0),e.holdMs+=n;let i=r.maxExtraSpeed*(1-2**(-e.holdMs/r.holdGrowthHalfLifeMs)),a=t*(r.baseSpeed+i);e.velocity=xG(e.velocity,a,n,r.pressHalfLifeMs)}else e.holdMs=0,e.velocity=xG(e.velocity,0,n,r.releaseHalfLifeMs),Math.abs(e.velocity)<r.stopVelocity&&(e.velocity=0);return e.direction=t,e.velocity}function xG(e,t,n,r){return t+(e-t)*2**(-n/r)}function SG(e){let t={x:new Set,y:new Set};return e.visit(e=>{for(let[n,r]of Object.entries(t)){let t=e.getScaleResolution(n);t&&t.isZoomable()&&r.add(t)}}),t}function CG(e){let t=SG(e).x;if(t.size===1){let n=t.values().next().value,r=e.getScaleResolution(`x`);return!r||r!==n?void 0:n}}var wG=class{#e;#t;#n=.5;#r=new vG;#i=!1;#a=0;#o=e=>{if(!this.#i)return;let t=CG(this.#t);if(!t){this.#r.reset(),this.#i=!1,this.#a=0;return}let n=Math.max(0,e-this.#a);this.#a=e;let r=this.#r.step(n);(r.panDelta!==0||r.zoomDelta!==0)&&t.zoom(2**r.zoomDelta,this.#n,r.panDelta)&&(IW(),this.#e.animator.requestRender()),r.active?this.#e.animator.requestTransition(this.#o):(this.#i=!1,this.#a=0)};constructor({context:e,viewRoot:t}){this.#e=e,this.#t=t,this.#s()}handlePointerEvent(e,t){if(e){let n=e.view;if(typeof n.getKeyboardZoomAnchorX==`function`){let e=n.getKeyboardZoomAnchorX(t.point);Number.isFinite(e)&&(this.#n=Math.max(0,Math.min(1,e)))}else this.#n=e.coords.normalizePoint(t.point.x,t.point.y).x}else return}#s(){let e=this.#e.addKeyboardListener;typeof e==`function`&&(e(`keydown`,e=>{TG(e)||this.#r.isNavigationKey(e.code)&&CG(this.#t)&&this.#r.handleKeyDown(e.code)&&(e.preventDefault(),this.#c())}),e(`keyup`,e=>{this.#r.isNavigationKey(e.code)&&this.#r.handleKeyUp(e.code)&&CG(this.#t)&&(e.preventDefault(),this.#c())}))}#c(){this.#i||(this.#i=!0,this.#a=performance.now(),this.#e.animator.requestTransition(this.#o))}};function TG(e){return!!(e.altKey||e.ctrlKey||e.metaKey||EG(e.target))}function EG(e){if(!e||typeof e!=`object`)return!1;let t=e;if(t.isContentEditable)return!0;if(typeof t.nodeName==`string`){let e=t.nodeName.toLowerCase();return e===`input`||e===`textarea`||e===`select`}return!1}var DG=Object.freeze({size:1,color:`#ccc`,opacity:1,strokeDash:[4,4],strokeCap:`butt`}),OG=class{#e;#t;#n;#r;#i=[];#a=[];#o={x:[0,0],y:[0,0]};constructor({direction:e,props:t,context:n,layoutParent:r,dataParent:i,getName:a}){this.#e=e,this.#t=t.includePlotMargin??!0,this.#r=t.zindex??0;let o={...t};delete o.includePlotMargin,delete o.zindex,this.#n=this.#l(o,n,r,i,a)}get view(){return this.#n}getZindex(){return this.#r}update(e,t,n,r,i,a){this.#s(e,t,r,i),this.#c(n,a)}render(e,t,n){this.#n.render(e,t,n)}#s(e,t,n,r){if(this.#a.length=0,t<2)return;let i=this.#e===`vertical`?`column`:`row`,a=r?3:2;for(let r=1;r<t;r++){let t=e[n(i,r)-a],o=t?t.location:0,s=t?t.size:0;this.#a.push(o+s/2)}}#c(e,t){let n=this.#t?0:t.left,r=this.#t?e.width:e.width-t.right,i=this.#t?0:t.bottom,a=this.#t?e.height:e.height-t.top;this.#i.length=this.#a.length;for(let t=0;t<this.#a.length;t++){let o=this.#a[t],s=this.#i[t]??{};if(this.#e===`vertical`)s.x=o,s.x2=o,s.y=i,s.y2=a;else{let t=e.height-o;s.x=n,s.x2=r,s.y=t,s.y2=t}this.#i[t]=s}let o=this.#n.flowHandle?.dataSource;if(!o)return;o.updateDynamicData(this.#i),this.#o.x[1]=e.width,this.#o.y[1]=e.height;let s=this.#n.getScaleResolution(`x`)?.getScale();s&&s.domain(this.#o.x);let c=this.#n.getScaleResolution(`y`)?.getScale();c&&c.domain(this.#o.y)}#l(e,t,n,r,i){let a=new DB(AG(e),t,n,r,this.#e===`horizontal`?i(`separatorHorizontal`):i(`separatorVertical`),{blockEncodingInheritance:!0});return gU(a,{skipSubtree:!0}),_U(a,{skipSubtree:!0}),a}};function kG(e){if(!e)return null;let t=e===!0?{...DG}:{...DG,...e};return t.strokeDash===DG.strokeDash&&(t.strokeDash=DG.strokeDash.slice()),t}function AG(e){return{domainInert:!0,data:{values:[]},resolve:{scale:{x:`excluded`,y:`excluded`},axis:{x:`excluded`,y:`excluded`}},mark:{...e,type:`rule`,clip:e.clip??!1,tooltip:null},encoding:{x:{field:`x`,type:`quantitative`,scale:{nice:!1,zero:!1}},y:{field:`y`,type:`quantitative`,scale:{nice:!1,zero:!1}},x2:{field:`x2`},y2:{field:`y2`}}}}var jG=Object.freeze({background:0,separator:10,grid:20,backgroundStroke:30,axis:40,selectionRect:80,scrollbar:90,title:100}),MG=10,NG=class extends lU{#e=1/0;#t=10;#n=[];#r={};#i=0;#a={};#o=null;constructor(e,t,n,r,i,a,o){super(e,t,n,r,i,o),this.spec=e,this.#t=e.spacing??10,this.#e=a,this.#n=[],this.wrappingFacet=!1;let s=kG(e.separator);if(s)for(let t of zG(e))this.#a[t]=new OG({direction:t,props:s,context:this.context,layoutParent:this,dataParent:this,getName:e=>this.getNextAutoName(e)});this.layoutParent||(this.#o=new wG({context:this.context,viewRoot:this}))}appendChild(e){this.appendChildView(e)}appendChildView(e){return this.insertChildViewAt(e,this.#n.length)}insertChildViewAt(e,t){e.layoutParent??=this;let n=new fG(e,this,this.#i);return this.#i++,this.#n.splice(t,0,n),this.invalidateSizeCache(),n}removeChildView(e){let t=this.#n.findIndex(t=>t.view===e);if(t<0)throw Error(`Not my child view!`);this.removeChildAt(t)}removeChildAt(e){let t=this.#n[e];if(!t)throw Error(`Child index out of range!`);this.#l(t),this.#n.splice(e,1),this.invalidateSizeCache()}get#s(){return this.#n.filter(e=>e.view.isConfiguredVisible())}get#c(){return new ZU(this.#s.length,this.#e??1/0)}setChildren(e){for(let e of this.#n)this.#l(e);this.#n=[];for(let t of e)this.appendChild(t);this.invalidateSizeCache()}#l(e){e.disposeAxisViews();for(let t of e.getChildren())t.disposeSubtree()}get children(){return this.#n.map(e=>e.view)}get childCount(){return this.#n.length}async createAxes(){await this.syncSharedAxes(),await Promise.all(this.#n.map(e=>e.createAxes()))}async syncSharedAxes(){for(let e of Object.values(this.#r))e.disposeSubtree();this.#r={};let e=[];for(let t of Lh){let n=this.resolutions.axis[t];if(!n)continue;let r=n.getAxisProps();if(!r)continue;let i=new hW({title:n.getTitle(),orient:fW[t][0],...r},n.scaleResolution.type,this.context,this,this);e.push(i.initializeChildren()),this.#r[t]=i}await Promise.all(e)}*[Symbol.iterator](){for(let e of this.#n)yield*e.getChildren();for(let e of Object.values(this.#a))yield e.view;for(let e of Object.values(this.#r))yield e}#u(e){let t=e==`column`?`width`:`height`,n=(t,n)=>t.map(t=>{let r=this.#s[t].getOverhangAndPadding();return e==`column`?n?r.right:r.left:n?r.bottom:r.top}).reduce((e,t)=>Math.max(e,t),0);return this._cache(`size/directionSizes/${e}`,()=>this.#c[e==`column`?`colIndices`:`rowIndices`].map(e=>({axisBefore:n(e,0),axisAfter:n(e,1),view:XP(e.map(e=>this.#s[e].view.getViewportSize()[t]))})))}#d(e){let t=this.#u(e),n=[];n.push(QP);for(let[e,r]of t.entries())e>0&&n.push({px:this.#t,grow:0}),(e==0||this.wrappingFacet)&&n.push(QP),n.push({px:r.axisBefore,grow:0}),n.push(r.view),n.push({px:r.axisAfter,grow:0}),(e==t.length-1||this.wrappingFacet)&&n.push(QP);return n}#f(e){let t=0,n=0,r=e==`row`?this.spec.height:this.spec.width;if(r||r===0)return rF(r);let i=this.#u(e);for(let[e,r]of i.entries())e>0&&(n+=this.#t),(e==0||this.wrappingFacet)&&(n+=0),n+=r.axisBefore,n+=r.view.px??0,t+=r.view.grow??0,n+=r.axisAfter,(e==i.length-1||this.wrappingFacet)&&(n+=0);return{px:n,grow:t}}#p(e,t){return e==`row`&&this.wrappingFacet?1+6*t+2:2+4*t+1}getOverhang(){return this.#m().union(this.#h())}#m(){let e=this.#u(`column`),t=this.#u(`row`);return!e.length||!t.length?iF.zero():new iF(t.at(0).axisBefore,e.at(-1).axisAfter,t.at(-1).axisAfter,e.at(0).axisBefore)}#h(){let e=e=>{let t=pW[e],n=this.#r[t];return n?.axisProps.orient===e?Math.max(n.getPerpendicularSize()+(n.axisProps.offset??0),0):0};return new iF(e(`top`),e(`right`),e(`bottom`),e(`left`))}getSize(){return this._cache(`size`,()=>new ZP(this.#f(`column`),this.#f(`row`)).addPadding(this.#h()))}render(e,t,n={}){if(super.render(e,t,n),!this.isConfiguredVisible())return;this.layoutParent||(t=t.shrink(this.getPadding())),t=t.shrink(this.#h()),e.pushView(this,t);let r=e.getDevicePixelRatio(),i={devicePixelRatio:r},a=YP(this.#d(`column`),t.width,i),o=YP(this.#d(`row`),t.height,i),s=new ZU(this.#s.length,this.#e??1/0),c=e=>Math.round(e*r)/r,l=[];for(let[e,r]of this.#s.entries()){let{view:i,axes:u,gridLines:d,background:f,backgroundStroke:p,title:m,selectionRect:h}=r,[g,_]=s.getCellCoords(e),v=a[this.#p(`column`,g)],y=o[this.#p(`row`,_)],b=i.getViewportSize(),x=i.getSize(),S=i.getOverhang(),C=v.location-S.left,w=y.location-S.top,T=(e,t)=>(e[t].grow?(t==`width`?v:y).size:e[t].px)+S[t],E=T(b,`width`),D=T(b,`height`),ee=T(x,`width`),te=T(x,`height`),ne=r.scrollbars.horizontal,re=r.scrollbars.vertical,ie=ne?()=>c(ne.viewportOffset):()=>0,ae=re?()=>c(re.viewportOffset):()=>0,oe=new $U(()=>t.x+C,()=>t.y+w,()=>E,()=>D),se=i.isScrollable(),ce=se?new $U(()=>t.x+C-ie(),()=>t.y+w-ae(),()=>ee,()=>te):oe;r.coords=oe;let le=n.clipRect?oe.intersect(n.clipRect):oe;l.push({col:g,row:_,view:i,axes:u,gridLines:d,background:f,backgroundStroke:p,title:m,selectionRect:h,viewportCoords:oe,viewCoords:ce,clippedChildCoords:le,viewWidth:ee,viewHeight:te,scrollable:se,gridChild:r})}let u=this.#m(),d=[],f=[],p=[],m=0,h=(e,t,n)=>{(e>0?f:d).push({zindex:e,order:t,sequence:m++,render:n})},g=e=>{e.sort((e,t)=>e.zindex-t.zindex||e.order-t.order||e.sequence-t.sequence);for(let t of e)t.render()};for(let t of l)t.background&&h(t.gridChild.backgroundZindex,jG.background,()=>t.background?.render(e,t.clippedChildCoords,{...n,clipRect:void 0}));let _=this.#a.vertical;_&&(_.update(a,s.nCols,t,(e,t)=>this.#p(e,t),this.wrappingFacet,u),h(_.getZindex(),jG.separator,()=>_.render(e,t,n)));let v=this.#a.horizontal;v&&(v.update(o,s.nRows,t,(e,t)=>this.#p(e,t),this.wrappingFacet,u),h(v.getZindex(),jG.separator,()=>v.render(e,t,n)));for(let r of l){let{view:i,axes:a,gridLines:o,backgroundStroke:c,title:l,selectionRect:u,viewportCoords:d,viewCoords:f,clippedChildCoords:m,viewWidth:g,viewHeight:_,scrollable:v,gridChild:y,col:b,row:x}=r,S=IG(i)||v;for(let t of Object.values(o))h(t.axisProps.zindex??0,jG.grid,()=>t.render(e,d,n));p.push(()=>i.render(e,f,S?{...n,clipRect:m}:n)),c&&h(VG(y.backgroundStrokeZindex,S),jG.backgroundStroke,()=>c?.render(e,m,{...n,clipRect:void 0}));for(let[t,r]of Object.entries(a)){let i=t==`left`||t==`right`?`vertical`:`horizontal`,a=y.scrollbars[i],o=HG(a?d.modify(i==`vertical`?{y:()=>f.y,height:_}:{x:()=>f.x,width:g}):d,t,r),s=n.clipRect;a&&(s=o.intersect(s).intersect(a?d.modify(i==`vertical`?{x:-1e5,width:2e5}:{y:-1e5,height:2e5}):void 0)),h(BG(r.axisProps.zindex,S),jG.axis,()=>r.render(e,o,{...n,clipRect:s}))}for(let t of Object.values(this.#r)){let r=t.axisProps.orient;(r==`left`&&b==0||r==`right`&&b==s.nCols-1||r==`top`&&x==0||r==`bottom`&&x==s.nRows-1)&&h(BG(t.axisProps.zindex,S),jG.axis,()=>t.render(e,HG(d.shrink(y.view.getOverhang()),r,t),n))}u&&h(u.getZindex(),jG.selectionRect,()=>u?.render(e,f,n));for(let r of Object.values(y.scrollbars))h(1,jG.scrollbar,()=>{r.updateScrollbar(d,f),r.render(e,t,n)});l&&h(y.titleZindex,jG.title,()=>l?.render(e,d,n))}g(d);for(let e of p)e();g(f),e.popView(this)}propagateInteraction(e){wW(this,e,()=>{let t=this.#s.find(t=>t.coords.containsPoint(e.point.x,e.point.y)),n=t?.view,r=t?void 0:this.#g(e.point);if(e.type===`wheelclaimprobe`){if(!n){r&&e.claimWheel();return}RG(n)?LG(n)&&e.claimWheel():n.propagateInteraction(e);return}this.#o?.handlePointerEvent(t,e);for(let n of Object.values(t?.scrollbars??{}))if(TW(e,()=>n.coords.containsPoint(e.point.x,e.point.y),()=>n.propagateInteraction(e)),e.stopped)return;if(!n){r&&this.#y(e,r);return}TW(e,()=>!0,()=>n.propagateInteraction(e),RG(n)?()=>zW(e,t.coords,e=>this.#b(t.coords,t.view,e),this.context.getCurrentHover(),this.context.animator):void 0)})}#g(e){let t=this.#_();if(!t)return;let n=this.getScaleResolution(t);if(!n||!n.isZoomable())return;let r=this.#v(t);if(r&&r.containsPoint(e.x,e.y))return{coords:r,zoomableResolutions:PG(t,n)}}#_(){if(qU(this.spec))return`x`;if(JU(this.spec))return`y`}#v(e){let t=this.#s[0];if(!t)return;let n=t.coords,r=t.coords.expand(t.getOverhang()),i=n.x,a=r.y,o=n.x2,s=r.y2;for(let t of this.#s.slice(1)){let n=t.coords,r=t.coords.expand(t.getOverhang());e==`x`?(i=Math.max(i,n.x),o=Math.min(o,n.x2),a=Math.min(a,r.y),s=Math.max(s,r.y2)):(i=Math.min(i,r.x),o=Math.max(o,r.x2),a=Math.max(a,n.y),s=Math.min(s,n.y2))}for(let t of Object.values(this.#r)){let n=t.coords;if(!n)continue;let r=t.axisProps.orient;e==`x`&&(r==`top`||r==`bottom`)?(a=Math.min(a,n.y),s=Math.max(s,n.y2)):e==`y`&&(r==`left`||r==`right`)&&(i=Math.min(i,n.x),o=Math.max(o,n.x2))}if(!(i>=o||a>=s))return $U.create(i,a,o-i,s-a)}#y(e,t){e.target=this,zW(e,t.coords,e=>FG(t.coords,e,t.zoomableResolutions,this.context.animator),this.context.getCurrentHover(),this.context.animator)}#b(e,t,n){return FG(e,n,SG(t),this.context.animator)}getDefaultResolution(e,t){return`independent`}};function PG(e,t){let n={x:new Set,y:new Set};return n[e].add(t),n}function FG(e,t,n,r){let i=!1,a=!1,o=e.normalizePoint(t.x,t.y),s=e.normalizePoint(t.x+t.xDelta,t.y+t.yDelta),c={x:s.x-o.x,y:s.y-o.y};for(let[e,r]of Object.entries(n))if(!(r.size<=0)){i=!0;for(let n of r)a=n.zoom(2**t.zDelta,e==`y`?1-o[e]:o[e],e==`x`?c.x:-c.y)||a}return a&&r.requestRender(),i}function IG(e){let t=!0;return e.visit(e=>{e instanceof DB&&(t&&=e.mark.properties.clip===!0)}),t}function LG(e){let t=SG(e);return t.x.size>0||t.y.size>0}function RG(e){return e instanceof DB||e instanceof XU}function zG(e){return`vconcat`in e?[`horizontal`]:`hconcat`in e?[`vertical`]:[`horizontal`,`vertical`]}function BG(e,t){return e??(t?MG:0)}function VG(e,t){return e??(t?MG:0)}function HG(e,t,n){let r=n.axisProps,i=n.getPerpendicularSize();if(t==`bottom`)return e.translate(0,e.height+r.offset).modify({height:i});if(t==`top`)return e.translate(0,-i-r.offset).modify({height:i});if(t==`left`)return e.translate(-i-r.offset,0).modify({width:i});if(t==`right`)return e.translate(e.width+r.offset,0).modify({width:i})}var UG=class extends NG{constructor(e,t,n,r,i,a){super(e,t,n,r,i,YU(e)?e.columns:qU(e)?1:1/0,a),this.spec=e}async initializeChildren(){let e=this.spec,t=YU(e)?e.concat:qU(e)?e.vconcat:e.hconcat;this.setChildren(await Promise.all(t.map(e=>this.context.createOrImportView(e,this,this,this.getNextAutoName(`grid`))))),await this.createAxes()}async addChildSpec(e,t){return this.#t().addChildSpec(e,t)}async removeChildAt(e){await this.#t().removeChildAt(e)}getDefaultResolution(e,t){return t==`axis`?`independent`:qU(this.spec)&&e===`x`||JU(this.spec)&&e===`y`?`shared`:`independent`}#e(){let e=this.spec,t;return t=YU(e)?e.concat:qU(e)?e.vconcat:e.hconcat,{specs:t,insertAt:(e,n)=>{t.splice(e,0,n)},removeAt:e=>{t.splice(e,1)}}}#t(){return new IU(this,{getChildSpecs:this.#e.bind(this),insertView:(e,t)=>this.insertChildViewAt(e,t),removeView:e=>super.removeChildAt(e),prepareView:async(e,t,n)=>{await n.createAxes(),await this.syncSharedAxes()},afterRemove:async()=>{await this.syncSharedAxes()},defaultName:()=>this.getNextAutoName(`grid`)})}};function WG({defaultConfig:e,builtInTheme:t,theme:n}){return rP([e,t,n])}function GG(e,t){if(!(!e&&!t))return rP([e,t])}var KG=`viewRoot`,qG=class{#e=new Map;constructor(e={}){this.options={allowImport:!0,wrapRoot:!0,...e};let t=e=>(t,n,r,i,a,o)=>new e(t,n,r,i,a,o);this.addViewType(GU,t(XU)),this.addViewType(RU,((e,t,n,r,i,a)=>new XU(zU(e),t,n,r,i,a))),this.addViewType(WU,t(DB)),this.addViewType(qU,t(UG)),this.addViewType(JU,t(UG)),this.addViewType(YU,t(UG))}addViewType(e,t){this.#e.set(e,t)}createView(e,t,n,r,i,a){for(let[o,s]of this.#e)if(o(e))return s(e,t,n,r,i,a);throw XG(e)?Error(`SampleView is not supported by the @genome-spy/core package. Use @genome-spy/app instead!`):Error(`Invalid spec, cannot figure out the view type from the properties: `+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){let t=[...this.#e.keys()].filter(t=>t(e));if(t.length>1)throw Error(`Ambiguous spec. Cannot create a view!`);return t.length==1}async createOrImportView(e,t,n,r,i,a,o){let s,c=KU(e)?e.name??null:void 0;if(KU(e)){let i;if(`url`in e.import)if(this.options.allowImport)i=await PB(e,r.getBaseUrl(),t);else throw new QN(`Importing views is not allowed!`,n);else if(`template`in e.import)i=JG(e.import.template,r);else throw Error(`Invalid import: `+JSON.stringify(e));a?.(i),YG(i,e),s=i}else s=e;let l=e=>e?.params?.some(e=>mg(e)&&og(e.select).type==`interval`),u=!1;if(!r&&this.options.wrapRoot&&(WU(s)||GU(s)||RU(s)||l(s))&&i===`viewRoot`){let e={...s};delete e.theme,s={name:`implicitRoot`,vconcat:[e]},u=!0}let d=this.createView(s,t,n,r,i,o);return c!==void 0&&hU(d,c),u&&gU(d),d instanceof lU&&await d.initializeChildren(),d.registerStepSizeInvalidation(),d}};function JG(e,t){let n=t.spec?.templates?.[e];if(n)return structuredClone(n);if(t.dataParent)return JG(e,t.dataParent);throw Error(`Cannot find template "${e}" in current view or its ancestors!`)}function YG(e,t){t.name!=null&&(e.name=t.name),t.visible!=null&&(e.visible=t.visible),e.config=GG(t.config,e.config);let n=k(t.params)?t.params:Ze(t.params)?Object.entries(t.params).map(([e,t])=>({name:e,value:t})):[];if(n.length){e.params??=[];for(let t of n){let n=e.params.findIndex(e=>e.name==t.name);n>=0&&(e.params[n]=t)}for(let t of n)e.params.some(e=>e.name==t.name)||e.params.push(t)}}function XG(e){return`samples`in e&&Ze(e.samples)&&`spec`in e&&Ze(e.spec)}var ZG=class{constructor(e,t){this.animator=e,this.disabled=!!t,this.maxDistance=500,this.callback=null,this.targetValue=0,this.lastValue=0,this.smoother=bH(e,e=>{let t=e.x-this.lastValue;this.lastValue=e.x,this.callback?.(t)},40,.1,{x:0})}cancel(){this.lastValue!==this.targetValue&&(this.targetValue=I([this.lastValue,this.targetValue],.3),this.smoother({x:this.targetValue}))}setMomentum(e,t){if(this.disabled){t(e);return}this.callback=t;let n=kN(this.targetValue+e-this.lastValue,-this.maxDistance,this.maxDistance);this.targetValue=this.lastValue+n,this.smoother({x:this.targetValue})}};function QG(e){let t={},n=[`string`,`number`,`boolean`],r=[`wheelDelta`,`wheelDeltaX`,`wheelDeltaY`];for(let i in e){let a=i;!r.includes(i)&&n.includes(typeof e[a])&&(t[a]=e[a])}return t}var $G=class{#e;#t;constructor(e,t,n){this.point=e,this.#n=t,this.stopped=!1,this.wheelClaimed=!1,this.#r=n,this.target=void 0,this.currentTarget=void 0,this.relatedTarget=void 0}#n;#r;#i;get uiEvent(){return this.#n}set uiEvent(e){this.#n=e,this.#e=void 0,this.#t=void 0,this.#i=void 0}stopPropagation(){this.stopped=!0}claimWheel(){if(this.type!==`wheel`&&this.type!==`wheelclaimprobe`)throw Error(`Can claim wheel only for wheel events!`);this.wheelClaimed=!0}setWheelDeltas(e,t){if(!OW(this.uiEvent))throw Error(`Not a WheelEvent!`);this.#i={deltaX:e,deltaY:t},this.#t=void 0}get type(){return this.#r??this.uiEvent.type}set type(e){this.#r=e}get proxiedMouseEvent(){return this.#e||=AW(this.mouseEvent),this.#e}get mouseEvent(){if(this.uiEvent instanceof MouseEvent)return this.uiEvent;throw Error(`Not a MouseEvent!`)}get wheelEvent(){if(!OW(this.uiEvent))throw Error(`Not a WheelEvent!`);return this.#i?(this.#t||=kW(this.uiEvent,this.#i.deltaX,this.#i.deltaY),this.#t):this.uiEvent}},eK=class{#e;#t;#n;#r=[];constructor({viewRoot:e}){this.#e=e}dispatch(e,t){this.#t=e;let n=new $G(e,t);return this.#e.propagateInteraction(n),this.#n=n.target,n.type===`mousemove`&&this.#i(n),n}handlePointerLeave(e){if(!this.#t||this.#r.length===0){this.#r=[],this.#n=void 0;return}let t=new $G(this.#t,e,`mouseleave`);this.#a(t,this.#r,void 0),this.#r=[],this.#n=void 0}getCurrentTarget(){return this.#n}#i(e){let t=this.#s(e.target),n=this.#r,r=0;for(;r<n.length&&r<t.length&&n[r]===t[r];)r++;r<n.length&&this.#a(e,n.slice(r),t.at(-1)),r<t.length&&this.#o(e,t.slice(r),n.at(-1)),this.#r=t}#a(e,t,n){for(let r=t.length-1;r>=0;r--){let i=new $G(e.point,e.uiEvent,`mouseleave`),a=t[r];if(i.target=a,i.currentTarget=a,i.relatedTarget=n,this.#c(a,i),i.stopped)return}}#o(e,t,n){for(let r of t){let t=new $G(e.point,e.uiEvent,`mouseenter`);if(t.target=r,t.currentTarget=r,t.relatedTarget=n,this.#c(r,t),t.stopped)return}}#s(e){return e?e.getLayoutAncestors().reverse():[]}#c(e,t){e.handleInteraction(t,!0),!t.stopped&&e.handleInteraction(t,!1)}},tK=class{#e;#t;#n;constructor({canvas:e}){this.#e=e}update({target:e,hover:t}){this.#r(nK(e,t))}clear(){this.#r(void 0)}#r(e){if(rK(this.#t,e)){this.#i();return}this.#n?.(),this.#n=void 0,this.#t=e,e?.watch(e=>{this.#n=e},()=>this.#i()),this.#i()}#i(){let e=this.#t?.evaluate();this.#e.style.cursor=typeof e==`string`?e:``}};function nK(e,t){let n=t?.mark,r=n?.getCursorSpec?.();if(r!==void 0)return{owner:n,raw:r,evaluate:()=>n.getCursor(),watch:(e,t)=>n.watchCursor?.(t,e)};for(let t of e?.getLayoutAncestors()??[]){let e=t.getCursorSpec?.();if(e!==void 0)return{owner:t,raw:e,evaluate:()=>t.getCursor(),watch:(e,n)=>t.watchCursor?.(n,e)}}}function rK(e,t){return!e||!t?e===t:e.owner===t.owner&&e.raw===t.raw}var iK=class{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m=!1;#h=!1;#g=!1;#_=0;#v=!1;constructor({viewRoot:e,glHelper:t,tooltip:n,animator:r,emitEvent:i,tooltipHandlers:a,renderPickingFramebuffer:o,getDevicePixelRatio:s}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=a,this.#o=o,this.#s=s,this.#c=new eK({viewRoot:e}),this.#l=new tK({canvas:t.canvas}),this.#u=void 0,this.#d=new ZG(this.#r),this.#f=void 0,this.#p=void 0}getCurrentHover(){return this.#u}suspendHoverTracking(){this.#_++,!this.#h&&(this.#n.clear(),this.#m=!1)}resumeHoverTracking(e){if(!(this.#_<=0)&&(this.#_--,!(this.#_>0)&&(this.#n.clear(),this.#m=!1,!this.#C()))){if(e){let t=this.#y(e);if(this.#p=t,this.#b(t)){this.#x(t),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u});return}this.#c.handlePointerLeave(e)}else if(this.#p&&this.#b(this.#p)){this.#x(this.#p),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u});return}this.#u=null,this.#l.clear()}}registerInteractionEvents(){let e=this.#t.canvas,t=performance.now(),n=!1,r,i=(e,t)=>{let n=this.#c.dispatch(e,t);return!this.#m&&!this.#h&&this.#n.clear(),t instanceof MouseEvent&&t.type!==`mouseout`&&this.#l.update({target:n.target,hover:this.#u}),n},a=e=>{let r=performance.now(),a=r-t<200;if(e instanceof MouseEvent){if(e.type!==`contextmenu`&&this.#C())return;let o=this.#y(e);this.#p=o,e.type==`mousemove`&&!a&&this.#_===0&&(this.#g=!1,this.#n.handleMouseMove(e),this.#m=!1,e.buttons==0&&!LW()&&(this.#o(),this.#w(o.x,o.y)));let s=e=>{i(o,e)};if(e.type!=`wheel`&&this.#d.cancel(),(e.type==`mousedown`||e.type==`mouseup`)&&!LW())this.#o();else if(e.type==`wheel`){t=r,this.#m=!1;let n=e;if(Math.abs(n.deltaX)>Math.abs(n.deltaY))this.#u=null,this.#d.cancel();else if(i(o,{type:`wheelclaimprobe`}).wheelClaimed){let e=QG(n);this.#d.setMomentum(n.deltaY*(n.deltaMode?80:1),t=>{s(new WheelEvent(`wheel`,{...e,deltaMode:0,deltaX:0,deltaY:t}))}),n.preventDefault();return}else this.#d.cancel()}if(e.type==`click`){if(n)return;let t=this.#u?{type:e.type,viewPath:this.#u.mark.unitView.getLayoutAncestors().map(e=>e.name).reverse(),datum:this.#u.datum}:{type:e.type,viewPath:null,datum:null};this.#i(`click`,t)}if(e.type!=`click`||this.#f?.subtract(jW.fromMouseEvent(e)).length<3){let t=i(o,e);return e.type==`dblclick`&&this.#_===0&&this.#b(o)&&this.#S(),t}}};e.addEventListener(`mousedown`,e=>{this.#f=jW.fromMouseEvent(e),this.#h=!1;let t=e.shiftKey||e.ctrlKey||e.metaKey;this.#n.sticky?(this.#n.sticky=!1,this.#g=!0,this.#n.clear(),n=!0):n=!1;let r=()=>{document.addEventListener(`mouseup`,()=>this.#n.popEnabledState(),{once:!0,capture:!0}),this.#n.pushEnabledState(!1)};if(e.button==2)r();else if(e.button==0&&this.#n.visible){this.#h=!0;let e;t||(e=setTimeout(()=>{n=!0,this.#h=!1,this.#n.sticky=!0},400));let r=t=>{clearTimeout(e),this.#h&&(this.#h=!1,t&&this.#_>0&&(this.#n.clear(),this.#m=!1))};document.addEventListener(`mouseup`,()=>r(!1),{once:!0}),document.addEventListener(`mousemove`,()=>r(!0),{once:!0})}}),[`mousedown`,`mouseup`,`wheel`,`click`,`mousemove`,`contextmenu`,`dblclick`].forEach(t=>e.addEventListener(t,a));let o=(t,n)=>{let r=e.getBoundingClientRect();return new jW(t-r.left-e.clientLeft,n-r.top-e.clientTop)},s=e=>{if(e.length<=0)return;let t=e[0];if(e.length===1)return{pointerCount:1,centerX:t.clientX,centerY:t.clientY,distance:0};let n=e[1];return{pointerCount:2,centerX:(t.clientX+n.clientX)/2,centerY:(t.clientY+n.clientY)/2,distance:aK(t,n)}},c=(e,t,n,r,a,s,c)=>{i(o(e,t),{type:`touchgesture`,phase:n,pointerCount:r,xDelta:a,yDelta:s,zDelta:c})},l=e=>{e.preventDefault(),this.#d.cancel(),this.#m=!1;let t=s(e.touches);if(!t){r=void 0;return}if(!r||r.pointerCount!==t.pointerCount){r=t;return}let n=t.centerX-r.centerX,i=t.centerY-r.centerY,a=t.pointerCount===2?oK(r.distance,t.distance):0;(n!==0||i!==0||a!==0)&&Number.isFinite(n)&&Number.isFinite(i)&&Number.isFinite(a)&&c(r.centerX,r.centerY,`move`,t.pointerCount,n,i,a),r=t},u=e=>{e.preventDefault(),this.#m=!1,r&&e.touches.length===0&&c(r.centerX,r.centerY,`end`,r.pointerCount,0,0,0),r=s(e.touches)};e.addEventListener(`touchstart`,l,{passive:!1}),e.addEventListener(`touchmove`,l,{passive:!1}),e.addEventListener(`touchend`,u,{passive:!1}),e.addEventListener(`touchcancel`,u,{passive:!1}),e.addEventListener(`dragstart`,e=>e.stopPropagation()),e.addEventListener(`mouseout`,e=>{if(!this.#C()){if(this.#_>0){this.#n.clear(),this.#m=!1;return}this.#c.handlePointerLeave(e),this.#l.clear(),this.#n.clear(),this.#u=null}})}#y(e){let t=this.#t.canvas,n=t.getBoundingClientRect();return new jW(e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop)}#b(e){let t=this.#t.canvas;return e.x>=0&&e.y>=0&&e.x<=t.clientWidth&&e.y<=t.clientHeight}#x(e){LW()||(this.#o(),this.#w(e.x,e.y))}#S(){this.#v||(this.#v=!0,this.#r.requestRender(),window.requestAnimationFrame(()=>{if(this.#v=!1,this.#_>0||this.#C())return;let e=this.#p;if(!e||!this.#b(e)){this.#u=null,this.#l.clear();return}this.#n.clear(),this.#m=!1,this.#x(e),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u})}))}#C(){return typeof document<`u`&&!!document.body&&document.body.classList.contains(`gs-freeze-interaction`)}#w(e,t){let n=this.#s(),r=IM(this.#t.gl,this.#t._pickingBufferInfo,e*n,t*n),i=r[0]|r[1]<<8|r[2]<<16|r[3]<<24;if(i==0){this.#u=null;return}if(i!==this.#u?.uniqueId&&(this.#u=null),this.#u||this.#e.visit(n=>{if(n instanceof DB){if(n.mark.isPickingParticipant()&&[...n.facetCoords.values()].some(n=>n.containsPoint(e,t))){let e=n.getCollector().findDatumByUniqueId(i);e&&(this.#u={mark:n.mark,datum:e,uniqueId:i})}if(this.#u)return qL}}),this.#u){let e=this.#u.mark;this.updateTooltip(this.#u.datum,async t=>{if(!e.isPickingParticipant())return;let n=e.properties.tooltip;if(n!==null&&n!==!1){let r=n?.handler??`default`,i=this.#a[r];if(!i)throw Error(`No such tooltip handler: `+r);let a=GH(t,e,n?.params);return i(t,e,n?.params,a)}})}}updateTooltip(e,t){if(!this.#g)if(!this.#m||!e)this.#n.updateWithDatum(e,t),this.#m=!0;else throw Error(`Tooltip has already been updated! Duplicate event handler?`)}};function aK(e,t){let n=t.clientX-e.clientX,r=t.clientY-e.clientY;return Math.hypot(n,r)}function oK(e,t){return e<=0||t<=0?0:Math.log2(e/t)}var sK=class{constructor(e){this.globalOptions=e}pushView(e,t){}popView(e){}renderMark(e,t){}getDevicePixelRatio(){return 1}},cK=class extends sK{#e=[0,0,0,0];#t;#n=[];#r;#i;#a=new Set;#o=void 0;#s=1;#c={width:0,height:0};constructor(e,t){if(super(e),this.#i=t.webGLHelper,this.#r=t.framebufferInfo,this.#s=t.devicePixelRatio,this.#c=t.canvasSize,t.clearColor){let e=Su(t.clearColor).rgb();this.#e=[e.r/255,e.g/255,e.b/255,e.opacity]}}getDevicePixelRatio(){return this.#s}pushView(e,t){this.#a.add(e),this.#o=t}renderMark(e,t){if(this.globalOptions.picking&&!e.isPickingParticipant())return;let n=e.render(t);n&&this.#n.push({mark:e,callback:n,coords:this.#o,clipRect:t.clipRect})}render(){if(this.#t||this.#l(),this.#t.length==0)return;let e=this.#i.gl,t=this.#r;t?(e.bindFramebuffer(e.FRAMEBUFFER,t.framebuffer),e.viewport(0,0,t.width,t.height)):e.viewport(0,0,e.drawingBufferWidth,e.drawingBufferHeight),e.disable(e.SCISSOR_TEST),e.clearColor(...this.#e),e.clear(e.COLOR_BUFFER_BIT);for(let e of this.#a)e.onBeforeRender();for(let e of this.#t)e();this.#r&&e.bindFramebuffer(e.FRAMEBUFFER,null)}#l(){this.#t=[];let e=!0,t=!0,n=t=>()=>{e&&t()},r=n=>()=>{e&&t&&n()},i=bn(this.#n.reverse(),e=>e.mark);for(let[a,o]of[...i.entries()].reverse()){if(!a.isReady())continue;this.#t.push(()=>{e=a.unitView.getEffectiveOpacity()>0}),this.#t.push(...a.prepareRender(this.globalOptions).map(e=>n(e)));let i;for(let e of o){let o=e.coords;o.equals(i)||this.#t.push(n(()=>{t=a.setViewport(this.#c,this.#s,o,e.clipRect)})),this.#t.push(r(e.callback)),i=e.coords}}}},lK=class extends sK{constructor(...e){super({}),this.contexts=e}pushView(e,t){for(let n of this.contexts)n.pushView(e,t)}popView(e){for(let t of this.contexts)t.popView(e)}renderMark(e,t){for(let n of this.contexts)n.renderMark(e,t)}},uK=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor({viewRoot:e,glHelper:t,getBackground:n,broadcast:r,onLayoutComputed:i}){this.#e=e,this.#t=t,this.#n=n,this.#r=r,this.#i=i,this.#a=void 0,this.#o=void 0,this.#s=!1}computeLayout(){let e=this.#e;if(!e)return;this.#r(`layout`);let t=this.#t.getLogicalCanvasSize();if(isNaN(t.width)||isNaN(t.height)){console.log(`NaN in canvas size: ${t.width}x${t.height}. Skipping computeLayout().`);return}let n={webGLHelper:this.#t,canvasSize:t,devicePixelRatio:this.#t.getDevicePixelRatio(t)};this.#a=new cK({picking:!1},{...n,clearColor:this.#n()}),this.#o=new cK({picking:!0},{...n,framebufferInfo:this.#t._pickingBufferInfo}),e.render(new lK(this.#a,this.#o),$U.create(0,0,t.width,t.height)),this.#i(),this.#r(`layoutComputed`)}renderAll(){this.#a?.render(),this.#s=!0}renderPickingFramebuffer(){this.#s&&=(this.#o.render(),!1)}};function dK(e){let t=e=>{throw Error(`ViewContext.`+e+` is not configured.`)},n={dataFlow:e.dataFlow??t(`dataFlow`),glHelper:e.allowMissingGlHelper?e.glHelper:e.glHelper??t(`glHelper`),animator:e.animator??t(`animator`),genomeStore:e.genomeStore,fontManager:e.fontManager??t(`fontManager`),createOrImportView:async function(t,r,i,a,o,s){let c=e.createOrImportViewWithContext;return c?c(n,t,r,i,a,o,s):Promise.reject(Error(`ViewContext.createOrImportView is not configured.`))}},r=[`requestLayoutReflow`,`updateTooltip`,`getNamedDataFromProvider`,`getCurrentHover`,`suspendHoverTracking`,`resumeHoverTracking`,`addKeyboardListener`,`addBroadcastListener`,`removeBroadcastListener`,`highlightView`,`isViewConfiguredVisible`,`isViewSpec`,`getBaseConfig`],i=e,a=n;for(let e of r)a[e]=i[e]??(()=>t(e));return n}var fK={view:{},mark:{xOffset:0,yOffset:0,minBufferSize:0,opacity:1},point:{x:.5,y:.5,filled:!0,size:100,semanticScore:0,shape:`circle`,strokeWidth:2,fillGradientStrength:0,dx:0,dy:0,angle:0,sampleFacetPadding:.1,semanticZoomFraction:.02,minPickingSize:2},rect:{x2:void 0,y2:void 0,filled:!0,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1},rule:{x2:void 0,y2:void 0,size:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:`butt`},tick:{minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:`butt`,orient:void 0,thickness:1},text:{x:.5,y:.5,x2:void 0,y2:void 0,text:``,size:11,font:void 0,fontStyle:void 0,fontWeight:void 0,align:`center`,baseline:`middle`,dx:0,dy:0,angle:0,fitToBand:!1,squeeze:!0,paddingX:0,paddingY:0,flushX:!0,flushY:!0,logoLetters:!1,viewportEdgeFadeWidthTop:0,viewportEdgeFadeWidthRight:0,viewportEdgeFadeWidthBottom:0,viewportEdgeFadeWidthLeft:0,viewportEdgeFadeDistanceTop:-1/0,viewportEdgeFadeDistanceRight:-1/0,viewportEdgeFadeDistanceBottom:-1/0,viewportEdgeFadeDistanceLeft:-1/0},link:{x:0,x2:void 0,y:0,y2:void 0,size:1,segments:101,arcHeightFactor:1,minArcHeight:1.5,minPickingSize:3,clampApex:!1,maxChordLength:5e4,arcFadingDistance:!1,noFadingOnPointSelection:!0,linkShape:`arc`,orient:`vertical`},axis:{values:null,minExtent:20,maxExtent:1/0,offset:0,domain:!0,domainWidth:1,domainColor:`gray`,domainDash:null,domainDashOffset:0,domainCap:`square`,ticks:!0,tickSize:5,tickWidth:1,tickColor:`gray`,tickDash:null,tickDashOffset:0,tickCap:`square`,tickCount:null,tickMinStep:null,labels:!0,labelAlign:`center`,labelBaseline:`middle`,labelPadding:4,labelFontSize:10,labelLimit:180,labelColor:`black`,format:null,titleColor:`black`,titleFont:`sans-serif`,titleFontSize:10,titlePadding:3,grid:!1,gridCap:`butt`,gridColor:`lightgray`,gridDash:null,gridOpacity:1,gridWidth:1},axisLocus:{chromTicks:!0,chromTickSize:18,chromTickWidth:1,chromTickColor:`#989898`,chromTickDash:[4,2],chromTickDashOffset:1,chromLabels:!0,chromLabelFontSize:13,chromLabelFontWeight:`normal`,chromLabelFontStyle:`normal`,chromLabelColor:`black`,chromLabelAlign:`left`,chromLabelPadding:7,chromGrid:!1,chromGridCap:`butt`,chromGridColor:`gray`,chromGridDash:[1,5],chromGridOpacity:1,chromGridWidth:1},scale:{nominalColorScheme:`tableau10`,ordinalColorScheme:`blues`,quantitativeColorScheme:`viridis`},range:{shape:[`circle`,`square`,`triangle-up`,`cross`,`diamond`],size:[0,400],angle:[0,360],heatmap:`yellowgreenblue`},title:{anchor:`middle`,frame:`group`,offset:10,orient:`top`,align:void 0,angle:0,baseline:`alphabetic`,dx:0,dy:0,color:void 0,font:void 0,fontSize:12,fontStyle:`normal`,fontWeight:`normal`},style:{"track-title":{orient:`left`,anchor:`middle`,align:`right`,baseline:`middle`,angle:0,fontSize:12},overlay:{orient:`top`,anchor:`start`,align:`left`,baseline:`top`,offset:-10,dx:10,fontSize:12},"overlay-title":{orient:`top`,anchor:`start`,align:`left`,baseline:`top`,offset:-10,dx:10,fontSize:12}}};function pK(e){uU(e),dU(e)}function mK({glHelper:e,viewRoot:t,logicalWidth:n,logicalHeight:r,devicePixelRatio:i,clearColor:a=`white`}){n??=e.getLogicalCanvasSize().width,r??=e.getLogicalCanvasSize().height,i??=window.devicePixelRatio??1;let o=e.gl,s=Math.floor(n*i),c=Math.floor(r*i),l=oM(o,[{format:o.RGBA,type:o.UNSIGNED_BYTE,minMag:o.LINEAR,wrap:o.CLAMP_TO_EDGE}],s,c),u=new cK({picking:!1},{webGLHelper:e,canvasSize:{width:n,height:r},devicePixelRatio:i,clearColor:a,framebufferInfo:l});return t.render(u,$U.create(0,0,n,r)),u.render(),LM(o,l,`image/png`)}function hK(e){if(e.genome&&e.genomes)throw Error("Do not mix deprecated `genome` with `genomes`. Use only `genomes` and `assembly`.");if(e.genome&&e.assembly)throw Error("Do not mix deprecated `genome` with root `assembly`. Use `genomes` and `assembly`.");if(e.genome){let{name:t,...n}=e.genome;return{genomesByName:!(Object.keys(n).length>0)&&_K(t)?new Map:new Map([[t,n]]),defaultAssembly:t,deprecationWarning:gK()}}let t=new Map;for(let[n,r]of Object.entries(e.genomes??{}))t.set(n,r??{});let n=e.assembly;if(!n&&t.size===1&&(n=t.keys().next().value),n&&!t.has(n)&&!_K(n))throw Error(`Root assembly "${n}" is neither defined in \`genomes\` nor a built-in assembly.`);return{genomesByName:t,defaultAssembly:n,deprecationWarning:void 0}}function gK(){return'Root `genome` is deprecated and will be removed in a future version. Use root `genomes` and `assembly` instead. Built-in migration example: {"genome":{"name":"hg38"}} -> {"assembly":"hg38"}.'}function _K(e){try{return lR(e),!0}catch{return!1}}function vK(e,t,n){let r=bK(e,n);if(!r.size)return!0;for(let e of r)if(!xK(e,t))return!1;return!0}function yK(e,t,n,r,i){let a=i??(e=>e.isConfiguredVisible());return new Promise((i,o)=>{let s=new Set,c=new Set,l=()=>{f(),d()},u=()=>{for(let e of s)e();s.clear(),e.removeBroadcastListener(`subtreeDataReady`,l),r&&r.removeEventListener(`abort`,p)},d=()=>{vK(t,n,a)&&(u(),i())},f=()=>{t.visit(e=>{if(!(e instanceof DB)||!a(e))return;let t=e.flowHandle?.collector;t&&(c.has(t)||(c.add(t),s.add(t.observe(d))))})},p=()=>{u(),o(Error(`Lazy subtree readiness was aborted.`))};if(f(),d(),e.addBroadcastListener(`subtreeDataReady`,l),r){if(r.aborted){p();return}r.addEventListener(`abort`,p,{once:!0})}})}function bK(e,t){let n=t??(e=>e.isConfiguredVisible()),r=new Set;return e.visit(e=>{if(!(e instanceof DB)||!n(e))return;let t=e;for(;t&&!(t.flowHandle&&t.flowHandle.dataSource);)t=t.dataParent;if(!t||!t.flowHandle)return;let i=t.flowHandle.dataSource;i instanceof Zm&&r.add(i)}),r}function xK(e,t){let n=t??{[e.channel]:Array.from(e.scaleResolution.getDomain())};return e.isDataReadyForDomain(n)}var SK={mark:{color:`#4c78a8`},point:{filled:!1,size:30},rule:{color:`black`},text:{color:`black`},view:{stroke:`#ddd`,strokeWidth:1},axis:{grid:!1,domain:!0,tickColor:`gray`,domainColor:`gray`,gridColor:`#ddd`,labelColor:`#333`,titleColor:`#333`,titleFontSize:11,titleFontWeight:`normal`},axisQuantitative:{grid:!0},scale:{nominalColorScheme:`tableau10`,ordinalColorScheme:`blues`,quantitativeColorScheme:`blues`},range:{heatmap:`yellowgreenblue`,ramp:`blues`,diverging:`blueorange`}},CK={genomespy:{mark:{color:`#4c78a8`},rule:{color:`black`},text:{color:`black`},link:{color:`black`}},vegalite:SK,quartz:rP([SK,{background:`#f9f9f9`,view:{fill:`#f9f9f9`},mark:{color:`#ab5787`},point:{size:30},axis:{domainColor:`#979797`,domainWidth:.5,gridWidth:.2,labelColor:`#979797`,tickColor:`#979797`,tickWidth:.2,titleColor:`#979797`},axisX:{grid:!0,tickSize:10},axisY:{domain:!1,grid:!0,tickSize:0}}]),dark:rP([SK,{background:`#333`,view:{fill:`#333`,stroke:`#888`},title:{color:`#fff`},axis:{domainColor:`#fff`,gridColor:`#888`,tickColor:`#fff`,labelColor:`#fff`,titleColor:`#fff`},text:{color:`#fff`},rule:{color:`#fff`}}]),fivethirtyeight:rP([SK,{background:`#f0f0f0`,view:{fill:`#f0f0f0`},mark:{color:`#30a2da`},point:{filled:!0,shape:`circle`},axis:{domainColor:`#cbcbcb`,grid:!0,gridColor:`#cbcbcb`,gridWidth:1,labelColor:`#999`,labelFontSize:10,titleColor:`#333`,tickColor:`#cbcbcb`,tickSize:10,titleFontSize:14,titlePadding:10,labelPadding:4},axisNominal:{grid:!1},axisOrdinal:{grid:!1},title:{anchor:`start`,fontSize:24,fontWeight:600,offset:20}}]),urbaninstitute:rP([SK,{background:`#FFFFFF`,view:{fill:`#FFFFFF`,stroke:`#000000`,strokeOpacity:0},mark:{color:`#1696d2`},point:{filled:!0},text:{font:`Lato`,color:`#1696d2`,size:11,align:`center`,fontWeight:400},title:{anchor:`start`,fontSize:18,font:`Lato`},axisX:{domain:!0,domainColor:`#000000`,domainWidth:1,grid:!1,labelFontSize:12,labelFont:`Lato`,labelAngle:0,tickColor:`#000000`,tickSize:5,titleFontSize:12,titlePadding:10,titleFont:`Lato`},axisY:{domain:!1,domainWidth:1,grid:!0,gridColor:`#DEDDDD`,gridWidth:1,labelFontSize:12,labelFont:`Lato`,labelPadding:8,ticks:!1,titleFontSize:12,titlePadding:10,titleFont:`Lato`}}])},wK=Object.keys(CK);function TK(e){let t={...CK[e]};return delete t.background,t}function EK(e){if(!e)return[];let t=Array.isArray(e)?e:[e],n=t.filter(e=>!(e in CK));if(n.length>0)throw Error(`Unknown theme "`+n[0]+`". Available themes: `+wK.join(`, `));return t}var DK=`genomespy`;function OK(e){return CK[e].background}function kK(e){let t=EK(e);if(t.length!=0)return rP(t.map(e=>TK(e)))}var AK=class{#e=[];#t;#n;#r;#i;#a;#o;#s=new DT;#c=new OT;#l=new OT;constructor(e,t,n={}){this.container=e,this.options=n,n.inputBindingContainer??=`default`,this.spec=t,this.viewFactory=new qG,this.namedDataProviders=[],this.animator=new yH(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=e=>e.isVisibleInSpec(),this.tooltipHandlers={default:cU,refseqgene:MH,...n.tooltipHandlers??{}},this.viewRoot=void 0,this.#i=new AT(e,n),this.dpr=window.devicePixelRatio}get#u(){return this.container.querySelector(`.canvas-wrapper`)}#d(){this.#i.initialize(this.viewRoot)}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedDataFromProvider(e){for(let t of this.namedDataProviders){let n=t(e);if(n)return n}}updateNamedData(e,t){let n=this.viewRoot.context.dataFlow.findNamedDataSource(e);if(!n)throw Error(`No such named data source: `+e);n.dataSource.updateDynamicData(t),this.animator.requestRender()}addEventListener(e,t){this.#c.add(e,t)}removeEventListener(e,t){this.#c.remove(e,t)}broadcast(e,t){let n={type:e,payload:t};this.viewRoot.visit(e=>e.handleBroadcast(n)),this.#l.emit(e,n)}#f(){this.dpr=this.#o.getDevicePixelRatio();let e=this.viewRoot.paramRuntime.allocateSetter(`devicePixelRatio`,this.dpr),t=()=>{this.#o.invalidateSize(),this.dpr=this.#o.getDevicePixelRatio(),e(this.dpr),this.computeLayout(),this.renderAll()};if(this.viewRoot.getSize().isGrowing()){let e=new ResizeObserver(t);e.observe(this.container),this.#e.push(()=>e.disconnect())}let n=null,r=()=>{n!=null&&(n(),t());let e=matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);e.addEventListener(`change`,r),n=()=>{e.removeEventListener(`change`,r)}};r(),n&&this.#e.push(n)}#p(){let{canvasWrapper:e,loadingIndicatorsElement:t,tooltip:n}=mT(this.container);this.#o=new MM(e,()=>this.viewRoot?FB(this.viewRoot):{width:void 0,height:void 0},{powerPreference:this.options.powerPreference??`default`},()=>this.#t?.renderAll()),e.appendChild(t),this.tooltip=n,this.#r=new TT,this.#n=new wT(t,this.#r)}destroy(){let e=this.#u;for(this.container.classList.remove(`genome-spy`),e.classList.remove(`loading`),this.#s.removeAll(),this.#e.forEach(e=>e()),this.#o.finalize(),this.#i.remove(),this.#n.destroy();this.container.firstChild;)this.container.firstChild.remove()}async#m(){await this.#h();let e=this.#g();await this.#v(e),await mH(this.viewRoot,e.dataFlow,e.fontManager,e=>this.broadcast(`dataFlowBuilt`,e)),this.#b(e)}async#h(){this.genomeStore=new xH(this.spec.baseUrl);let{genomesByName:e,defaultAssembly:t,deprecationWarning:n}=hK(this.spec);this.genomeStore.configureGenomes(e,t),n&&console.warn(n)}#g(){let e=new GV;e.loadingStatusRegistry=this.#r;let t=WG({defaultConfig:fK,builtInTheme:kK(DK),theme:rP([this.options.theme,kK(this.spec.theme)])});return dK({dataFlow:e,glHelper:this.#o,animator:this.animator,genomeStore:this.genomeStore,fontManager:new EH(this.#o),updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this.#a.getCurrentHover(),suspendHoverTracking:()=>this.#a?.suspendHoverTracking(),resumeHoverTracking:e=>this.#a?.resumeHoverTracking(e),addKeyboardListener:(e,t)=>{this.#s.add(e,n=>{this.#_(e,n)&&t(n)})},addBroadcastListener:(e,t)=>this.#l.add(e,t),removeBroadcastListener:(e,t)=>this.#l.remove(e,t),isViewConfiguredVisible:this.viewVisibilityPredicate,isViewSpec:e=>this.viewFactory.isViewSpec(e),getBaseConfig:()=>t,createOrImportViewWithContext:(e,t,n,r,i,a,o)=>this.viewFactory.createOrImportView(t,e,n,r,i,a,o),highlightView:ET(this.container)})}#_(e,t){if(e===`keyup`)return!0;let n=document.activeElement;return n&&n!==document.body?this.container.contains(n):this.container.matches(`:hover`)}async#v(e){let t=this.spec;t.datasets&&this.registerNamedDataProvider(e=>t.datasets[e]),this.viewRoot=await e.createOrImportView(t,null,null,KG),await PU(this.viewRoot,this.genomeStore),this.#r.set(this.viewRoot,`loading`),this.#u.style.flexGrow=this.viewRoot.getSize().height.grow>0?`1`:`0`,this.#d(),pK(this.viewRoot),this.#y(),this.#o.invalidateSize();let n=this.spec.theme?Array.isArray(this.spec.theme)?this.spec.theme:[this.spec.theme]:[];this.#t=new uK({viewRoot:this.viewRoot,glHelper:this.#o,getBackground:()=>{if(this.spec.background!==void 0)return this.spec.background;let e;for(let t of n){let n=OK(t);n!==void 0&&(e=n)}return e},broadcast:this.broadcast.bind(this),onLayoutComputed:()=>this.#n.updateLayout()}),e.requestLayoutReflow=this.computeLayout.bind(this),this.#f()}#y(){let e=bU(this.viewRoot);if(e.length)for(let t of e)console.warn(`Selector constraints warning:`,t.message)}#b(e){e.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(e=>qN(e,`size`)),this.#o.invalidateSize(),this.#a=new iK({viewRoot:this.viewRoot,glHelper:this.#o,tooltip:this.tooltip,animator:this.animator,emitEvent:this.#c.emit.bind(this.#c),tooltipHandlers:this.tooltipHandlers,renderPickingFramebuffer:this.renderPickingFramebuffer.bind(this),getDevicePixelRatio:()=>this.dpr})}async launch(){let e=!1;try{return this.#p(),await this.#m(),this.#a.registerInteractionEvents(),this.computeLayout(),this.animator.requestRender(),e=!0,!0}catch(e){let t=`${e.view?`At "${e.view.getPathString()}": `:``}${e.toString()}`;return console.error(e.stack),this.options.onError?.(e,this.container)||hT(this.container,t),this.viewRoot&&this.#r.set(this.viewRoot,`error`,t),!1}finally{this.#u.classList.remove(`loading`),e&&this.viewRoot&&this.#r.set(this.viewRoot,`complete`)}}async initializeVisibleViewData(){this.viewRoot&&(await hH(this.viewRoot,this.viewRoot.context.dataFlow,this.viewRoot.context.fontManager),this.viewRoot._invalidateCacheByPrefix(`size`,`progeny`),this.#o.invalidateSize(),this.computeLayout(),this.animator.requestRender())}async awaitVisibleLazyData(e){this.viewRoot&&await yK(this.viewRoot.context,this.viewRoot,void 0,e,e=>e.isConfiguredVisible()&&jK(e))}updateTooltip(e,t){this.#a.updateTooltip(e,t)}exportCanvas(e,t,n,r=`white`){let i=mK({glHelper:this.#o,viewRoot:this.viewRoot,logicalWidth:e,logicalHeight:t,devicePixelRatio:n,clearColor:r});return this.computeLayout(),this.renderAll(),i}getLogicalCanvasSize(){return this.#o.getLogicalCanvasSize()}getRenderedBounds(){let e={width:void 0,height:void 0};return this.viewRoot.visit(t=>{for(let n of t.facetCoords.values())e.width=Math.max(e.width??0,n.x2),e.height=Math.max(e.height??0,n.y2)}),e}computeLayout(){this.#t.computeLayout(),this.#o.invalidateSize()}renderAll(){this.#t.renderAll()}renderPickingFramebuffer(){this.#t.renderPickingFramebuffer()}getSearchableViews(){let e=[];return this.viewRoot.visit(t=>{t instanceof DB&&t.getSearchAccessors().length>0&&e.push(t)}),e}getNamedScaleResolutions(){let e=new Map;return this.viewRoot.visit(t=>{for(let n of Object.values(t.resolutions.scale))n.name&&e.set(n.name,n)}),e}};function jK(e){let t=e;for(;t;){let e=t.flowHandle?.dataSource;if(e)return e instanceof bg;t=t.dataParent}return!1}var MK=`data:image/svg+xml,%3csvg%20viewBox='0%200%2032%2032'%20xmlns='http://www.w3.org/2000/svg'%20fill-rule='evenodd'%20clip-rule='evenodd'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='1.5'%3e%3cpath%20d='M4.7%2021.2s.4%202.3%201.3%203.6C7%2026%209.8%2028%209.8%2028s3.4-2.6%206.4-8.5c0%200%201%20.1%201.9-.4.9-.6.8-.4%201-1.2%200%200%202.9.5%206.6%200%202.1-.3%204.3-1%206.2-2.5%200%200-1.1-1.7-2.5-5.1-.5-1.3-2-1.8-4.6-4.6l-8.2%208.6-11.9%206.9z'%20fill-opacity='.1'/%3e%3cpath%20d='M12.7%2014.8s-4-1.8-12%202.7c0%200%201%203.7%202.5%205.3%201.4%201.5%202.3%203.6%204.6%204.6%200%200%204.7-3%206.9-9.2l3-2s4.7%202.8%2012.6-1.6c0%200-.6-3.3-3-6-2.6-3-3.8-4.7-3.8-4.7s-4.1%202.3-7.5%209.3l-3.3%201.6z'%20fill='%237fbbdd'/%3e%3cpath%20d='M12.4%2015.5c-.7-.5-2.4-.8-4.4-.4-2%20.4-4%201.3-4.8%201.8-.5.3-1.2%201-1.2%201.4%200%20.7.3%201.8.8%202.4.3.3.7.5%201.4.6.8%200%202.5-1.4%203.5-2%201-.6%201.6-.8%202.7-1.2l-2.9%202.4c-1.3%201.2-2.2%201.5-2.4%202.3%200%20.5%200%201.4.5%201.8.4.5.6.8%201.6.8.6%200%201%200%202.6-1.5.9-.9%202.3-3%202.7-3.7.6-1.1%201-2.2.7-3-.2-1-.4-1.4-.8-1.7zM17.4%2014.2c-.3-.5-.9-1.2-.2-2.5l1.9-3c.5-.8%202-2.3%202.6-2.6.6-.4%201.5-.6%202-.2.6.4%201%201%201.3%201.5.4.6.7%201.3.2%202-.7%201-1.6.9-2.8%201.7-1.2.8-1.9%201.2-2.5%201.9l3.8-1.8c1.3-.6%202.7-1.1%203.4-.7.8.5.8.7%201%201.4.3%201-.2%201.9-.8%202.4-.5.6-1.5.9-2.6%201.2-1.4.4-4.5%201-5.8.5-1.3-.5-1.3-1.4-1.5-1.8z'%20fill='%23fff'/%3e%3cpath%20d='M12.7%2014.8s-4-1.8-12%202.7c0%200%201%203.7%202.5%205.3%201.4%201.5%202.3%203.6%204.6%204.6%200%200%204.7-3%206.9-9.2l3-2s4.7%202.8%2012.6-1.6c0%200-.6-3.3-3-6-2.6-3-3.8-4.7-3.8-4.7s-4.1%202.3-7.5%209.3l-3.3%201.6z'%20fill='none'%20stroke='%23000'%20stroke-width='.5'/%3e%3cpath%20d='M12.4%2014.9s2.1-2%203-2c1.1%200%202.3%202.7%202.3%203.5%200%20.8-2.1%202.4-3.1%202.3%200%200%200-1.2-.7-2.6-.8-1.3-1.5-1.2-1.5-1.2z'%20fill='%237fbbdd'/%3e%3cpath%20d='M13.8%2015.3c.9.8.6%202%201.4%201.8%201-.2%201.4-.8%201.3-1.5%200-.7%200-.8-.4-1.6-.3-.7-1-1.1-2-.5-.7.5-1.4%201.3-1.4%201.3s.2-.3%201.1.5z'%20fill='%23fff'/%3e%3cpath%20d='M12.4%2014.9s2.1-2%203-2c1.1%200%202.3%202.7%202.3%203.5%200%20.8-2.1%202.4-3.1%202.3%200%200%200-1.2-.7-2.6-.8-1.3-1.5-1.2-1.5-1.2z'%20fill='none'%20stroke='%23000'%20stroke-width='.5'/%3e%3c/svg%3e`,NK=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5'%20viewBox='0%200%2064%2064'%3e%3cpath%20d='M208.6%20548.2s11.2%2046.2%2031.2%2071c20%2024.9%2079.3%2061.6%2079.3%2061.6S385.6%20623%20438%20498.3c0%200%2018.1%201%2036-11.9%2017.7-12.7%2016.3-7.9%2021-24.8%200%200%2057%206.3%20131-9.7%2041.7-9.1%2084.3-26.3%20121.5-58.8%200%200-25.4-32.9-58-101.7-12.4-26.1-41.9-34.3-98.7-88L438.1%20391.2%20208.6%20548.2Z'%20style='fill-opacity:.11'%20transform='matrix(.10221%20.00684%20-.00671%20.10035%20-8%20-13.2)'/%3e%3cg%20transform='rotate(-35.4%2034.2%2080.8)%20scale(.10057)'%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'%20style='fill:%237fbbdd'/%3e%3cclipPath%20id='a'%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'/%3e%3c/clipPath%3e%3cg%20clip-path='url(%23a)'%3e%3cpath%20d='M386.9%20397.2c-15.6-13.6-51.8-22.4-96.3-16.7-44.5%205.8-93.8%2021.8-111.8%2031.6-10.6%205.7-27.3%2017.3-28.1%2027.2-1.2%2014.2%202.9%2037.8%2015%2052%206%207.2%2014.2%2012.1%2028.1%2014.1%2017.9%202.6%2059-24.8%2081.6-36.2%2024-12%2038.6-14.6%2063-22.2%200%200-47%2031.6-68.2%2047.4-30.6%2022.9-51.6%2028-57.3%2045.5-3.1%209.4-.7%2027.9%207.5%2037.6%209%2011%2012.8%2017.6%2034.2%2020.1%2012.7%201.5%2022%201.2%2059.8-28.6%2021.7-17.2%2055.9-59.2%2067-74.4%2016.2-22%2023.8-43.1%2021.3-59.6-3.7-23.6-8.4-31.3-15.8-37.8Z'%20style='fill:%23fff'%20transform='scale(.88664)%20rotate(31.2%20485%20792.2)'/%3e%3cpath%20d='M484.7%20379c-5.4-11.1-17.6-28.5-.8-53.8a739%20739%200%200%201%2044.2-60.6c13.2-16.3%2046.7-46.2%2059.6-52%2013-6%2033.3-8.7%2044.2.2%2011%209.1%2016.5%2020.6%2023%2032.7%207.4%2013.8%2012.4%2029.3%201.6%2042.8-15.4%2019.2-34.3%2017-61.6%2031.5-27.7%2014.8-42.3%2023.1-55.7%2035.9%200%200%2052.2-21.6%2082-31.2%2029.8-9.7%2059.8-20%2074.8-8.5s14.6%2015.5%2018.4%2031.2c4.7%2019.4-7.2%2038-20.1%2048.6-13%2010.7-34.3%2016-57.4%2021-30.5%206.8-96.6%2015.1-124%202.6-27.5-12.6-24.4-32.8-28.2-40.5Z'%20style='fill:%23fff'%20transform='scale(.87906)%20rotate(31.2%20487.2%20893.5)'/%3e%3c/g%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'%20style='fill:none;stroke:%23000;stroke-width:16.57px'/%3e%3c/g%3e%3cg%20transform='rotate(-4.2%20-78%20211)%20scale(.10057)'%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'%20style='fill:%237fbbdd'/%3e%3cclipPath%20id='b'%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'/%3e%3c/clipPath%3e%3cg%20clip-path='url(%23b)'%3e%3cpath%20d='M413.3%20402.7c17.5%2018.9%2010%2045.7%2028.4%2043.4%2021.7-2.7%2030.9-15.7%2031.6-32.7.7-17-1-19.5-7.1-38-6.1-18.7-18.2-23.2-43.4-18.2-20.8%204.1-17.8%203-24%2010-6.4%207-14.5%2026-14.5%2026s8.4-12.7%2029%209.5Z'%20style='fill:%23fff'%20transform='matrix(.90907%200%200%20.85852%2037%2052.2)'/%3e%3c/g%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'%20style='fill:none;stroke:%23000;stroke-width:16.57px'/%3e%3c/g%3e%3c/svg%3e`,PK=[[`/docs/examples/`,`/docs/examples/`],[`/examples/core/`,`/examples/`],[`/examples/docs/`,`/examples/`],[`/examples/app/`,`/examples/`]],FK=/^(?:[a-z]+:)?\/\//i,IK=`https://example.invalid`;function LK(e){return FK.test(e)?`external`:e.startsWith(`/`)?`root`:`relative`}function RK(e){let t=new URL(e,IK),n=PK.find(([e])=>t.pathname.startsWith(e));if(n)return BK(n[1],t,LK(e))}function zK(e){let t=RK(e);if(t)return t;let n=new URL(e,IK);return BK(new URL(`./`,n).pathname,n,LK(e))}function BK(e,t,n){return n===`external`?t.origin+e:n===`root`?e:e.slice(1)}function VK(e){return async function(t,n,r={}){let i;if(F(t)){if(i=document.querySelector(t),!i)throw Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)i=t;else throw Error(`Invalid element: ${t}`);let a;try{let t=Ze(n)?n:await UK(n);if(t.baseUrl??=``,t.width??=`container`,t.padding??=10,i==document.body){let e=document.createElement(`div`);e.style.position=`fixed`,e.style.inset=`0`,e.style.overflow=`hidden`,i.appendChild(e),i=e}a=new e(i,t,r),HK(a,r),await a.launch()}catch(e){i.innerText=e.toString(),console.error(e)}return{finalize(){for(a.destroy();i.firstChild;)i.firstChild.remove()},addEventListener(e,t){a.addEventListener(e,t)},removeEventListener(e,t){a.removeEventListener(e,t)},getScaleResolutionByName(e){return a.getNamedScaleResolutions().get(e)},awaitVisibleLazyData:a.awaitVisibleLazyData.bind(a),getRenderedBounds:a.getRenderedBounds.bind(a),updateNamedData:a.updateNamedData.bind(a),getLogicalCanvasSize:a.getLogicalCanvasSize.bind(a),exportCanvas:a.exportCanvas.bind(a)}}}function HK(e,t){t.namedDataProvider&&e.registerNamedDataProvider(t.namedDataProvider)}async function UK(e){let t;try{t=await AB(e)}catch(t){throw Error(`Could not load or parse configuration: ${e}, reason: ${t.message}`,{cause:t})}return t.baseUrl||=zK(e),t}var WK=VK(AK);e.GenomeSpy=AK,e.embed=WK,e.favIcon=NK,e.html=O,e.icon=MK,e.loadSpec=UK});