@genome-spy/core 0.74.0 → 0.75.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.
- package/dist/bundle/index.es.js +4660 -4468
- package/dist/bundle/index.js +81 -81
- package/dist/schema.json +220 -12
- package/dist/src/data/sources/dataUtils.d.ts +25 -0
- package/dist/src/data/sources/dataUtils.d.ts.map +1 -1
- package/dist/src/data/sources/dataUtils.js +23 -0
- package/dist/src/data/sources/inlineSource.js +2 -2
- package/dist/src/data/sources/urlSource.d.ts.map +1 -1
- package/dist/src/data/sources/urlSource.js +8 -3
- package/dist/src/encoder/encoder.d.ts +2 -2
- package/dist/src/encoder/encoder.d.ts.map +1 -1
- package/dist/src/genome/scaleLocus.d.ts.map +1 -1
- package/dist/src/genome/scaleLocus.js +8 -3
- package/dist/src/genomeSpy/interactionController.d.ts.map +1 -1
- package/dist/src/genomeSpy/interactionController.js +91 -51
- package/dist/src/gl/dataToVertices.d.ts +12 -14
- package/dist/src/gl/dataToVertices.d.ts.map +1 -1
- package/dist/src/gl/dataToVertices.js +116 -95
- package/dist/src/gl/glslScaleGenerator.d.ts +3 -0
- package/dist/src/gl/glslScaleGenerator.d.ts.map +1 -1
- package/dist/src/gl/glslScaleGenerator.js +10 -8
- package/dist/src/gl/vertexRangeIndex.d.ts +23 -0
- package/dist/src/gl/vertexRangeIndex.d.ts.map +1 -0
- package/dist/src/gl/vertexRangeIndex.js +150 -0
- package/dist/src/marks/mark.d.ts +1 -1
- package/dist/src/paramRuntime/expressionCompiler.d.ts +2 -1
- package/dist/src/paramRuntime/expressionCompiler.d.ts.map +1 -1
- package/dist/src/paramRuntime/expressionCompiler.js +3 -2
- package/dist/src/paramRuntime/expressionRef.d.ts +4 -1
- package/dist/src/paramRuntime/expressionRef.d.ts.map +1 -1
- package/dist/src/paramRuntime/expressionRef.js +10 -3
- package/dist/src/paramRuntime/graphRuntime.d.ts.map +1 -1
- package/dist/src/paramRuntime/graphRuntime.js +15 -6
- package/dist/src/paramRuntime/paramRuntime.d.ts +8 -2
- package/dist/src/paramRuntime/paramRuntime.d.ts.map +1 -1
- package/dist/src/paramRuntime/paramRuntime.js +10 -5
- package/dist/src/paramRuntime/types.d.ts +1 -0
- package/dist/src/paramRuntime/types.d.ts.map +1 -1
- package/dist/src/paramRuntime/types.js +1 -0
- package/dist/src/paramRuntime/viewParamRuntime.d.ts +5 -4
- package/dist/src/paramRuntime/viewParamRuntime.d.ts.map +1 -1
- package/dist/src/paramRuntime/viewParamRuntime.js +17 -6
- package/dist/src/scale/scale.d.ts.map +1 -1
- package/dist/src/scale/scale.js +1 -0
- package/dist/src/scales/domainPlanner.d.ts +57 -11
- package/dist/src/scales/domainPlanner.d.ts.map +1 -1
- package/dist/src/scales/domainPlanner.js +182 -83
- package/dist/src/scales/scaleInstanceManager.d.ts.map +1 -1
- package/dist/src/scales/scaleInstanceManager.js +7 -2
- package/dist/src/scales/scalePropsResolver.d.ts +3 -3
- package/dist/src/scales/scalePropsResolver.d.ts.map +1 -1
- package/dist/src/scales/scalePropsResolver.js +28 -5
- package/dist/src/scales/scaleResolution.d.ts +12 -1
- package/dist/src/scales/scaleResolution.d.ts.map +1 -1
- package/dist/src/scales/scaleResolution.js +171 -18
- package/dist/src/screenshotExport.d.ts +23 -0
- package/dist/src/screenshotExport.d.ts.map +1 -0
- package/dist/src/screenshotExport.js +44 -0
- package/dist/src/screenshotHarness.d.ts.map +1 -1
- package/dist/src/screenshotHarness.js +26 -24
- package/dist/src/spec/axis.d.ts +2 -2
- package/dist/src/spec/channel.d.ts +4 -4
- package/dist/src/spec/data.d.ts +12 -0
- package/dist/src/spec/scale.d.ts +13 -1
- package/dist/src/utils/expression.d.ts +16 -8
- package/dist/src/utils/expression.d.ts.map +1 -1
- package/dist/src/utils/expression.js +291 -11
- package/dist/src/view/flowBuilder.d.ts +1 -1
- package/dist/src/view/flowBuilder.d.ts.map +1 -1
- package/dist/src/view/flowBuilder.js +11 -7
- package/dist/src/view/resolutionPlanner.d.ts +9 -0
- package/dist/src/view/resolutionPlanner.d.ts.map +1 -0
- package/dist/src/view/resolutionPlanner.js +302 -0
- package/dist/src/view/unitView.d.ts +1 -1
- package/dist/src/view/unitView.d.ts.map +1 -1
- package/dist/src/view/unitView.js +5 -152
- package/dist/src/view/view.d.ts.map +1 -1
- package/dist/src/view/view.js +2 -1
- package/package.json +2 -2
package/dist/bundle/index.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
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__`]),O=Array.isArray;function Qe(e){return e===Object(e)}function $e(e){return e[e.length-1]}function et(e){return e==null||e===``?null:+e}var k=e=>t=>e*Math.exp(t),tt=e=>t=>Math.log(e*t),nt=e=>t=>Math.sign(t)*Math.log1p(Math.abs(t/e)),rt=e=>t=>Math.sign(t)*Math.expm1(Math.abs(t))*e,it=e=>t=>t<0?-((-t)**+e):t**+e;function A(e,t,n,r){let i=n(e[0]),a=n($e(e)),o=(a-i)*t;return[r(i-o),r(a-o)]}function at(e,t){return A(e,t,et,Xe)}function ot(e,t){var n=Math.sign(e[0]);return A(e,t,tt(n),k(n))}function j(e,t,n){return A(e,t,it(n),it(1/n))}function st(e,t,n,r,i){let a=r(e[0]),o=r($e(e)),s=t==null?(a+o)/2:r(t);return[i(s+(a-s)*n),i(s+(o-s)*n)]}function ct(e,t,n){return st(e,t,n,et,Xe)}function lt(e,t,n){let r=Math.sign(e[0]);return st(e,t,n,tt(r),k(r))}function ut(e,t,n,r){return st(e,t,n,it(r),it(1/r))}function dt(e,t,n,r){return st(e,t,n,nt(r),rt(r))}function M(e){return e==null?[]:O(e)?e:[e]}function ft(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 pt(e){return typeof e==`function`}var mt=`descending`;function ht(e,t,n){n||={},t=M(t)||[];let r=[],i=[],a={},o=n.comparator||_t;return M(e).forEach((e,o)=>{e!=null&&(r.push(t[o]===mt?-1:1),i.push(e=pt(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 gt=(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,_t=(e,t)=>e.length===1?vt(e[0],t[0]):yt(e,t,e.length),vt=(e,t)=>function(n,r){return gt(e(n),e(r))*t},yt=(e,t,n)=>(t.push(0),function(r,i){let a,o=0,s=-1;for(;o===0&&++s<n;)a=e[s],o=gt(a(r),a(i));return o*t[s]});function bt(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 xt(e,t){return Object.hasOwn(e,t)}function St(e){return typeof e==`boolean`}function Ct(e){return Object.prototype.toString.call(e)===`[object Date]`}function wt(e){return e&&pt(e[Symbol.iterator])}function N(e){return typeof e==`number`}function Tt(e){return Object.prototype.toString.call(e)===`[object RegExp]`}function P(e){return typeof e==`string`}function F(e,t){let n=e[0],r=$e(e),i=+t;return i?i===1?r:n+i*(r-n):n}function Et(e){return e&&$e(e)-e[0]||0}function Dt(e){return O(e)?`[${e.map(e=>e===null?`null`:Dt(e))}]`:Qe(e)||P(e)?JSON.stringify(e).replaceAll(`\u2028`,`\\u2028`).replaceAll(`\u2029`,`\\u2029`):e}function Ot(e){return e==null||e===``?null:!e||e===`false`||e===`0`?!1:!!e}var kt=e=>N(e)||Ct(e)?e:Date.parse(e);function At(e,t){return t||=kt,e==null||e===``?null:t(e)}function jt(e){return e==null||e===``?null:e+``}function Mt(e){let t={},n=e.length;for(let r=0;r<n;++r)t[e[r]]=!0;return t}var Nt={},Pt={},Ft=34,It=10,Lt=13;function Rt(e){return Function(`d`,`return {`+e.map(function(e,t){return JSON.stringify(e)+`: d[`+t+`] || ""`}).join(`,`)+`}`)}function zt(e,t){var n=Rt(e);return function(r,i){return t(n(r),i,e)}}function Bt(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 Vt(e,t){var n=e+``,r=n.length;return r<t?Array(t-r+1).join(0)+n:n}function Ht(e){return e<0?`-`+Vt(-e,6):e>9999?`+`+Vt(e,6):Vt(e,4)}function Ut(e){var t=e.getUTCHours(),n=e.getUTCMinutes(),r=e.getUTCSeconds(),i=e.getUTCMilliseconds();return isNaN(e)?`Invalid Date`:Ht(e.getUTCFullYear(),4)+`-`+Vt(e.getUTCMonth()+1,2)+`-`+Vt(e.getUTCDate(),2)+(i?`T`+Vt(t,2)+`:`+Vt(n,2)+`:`+Vt(r,2)+`.`+Vt(i,3)+`Z`:r?`T`+Vt(t,2)+`:`+Vt(n,2)+`:`+Vt(r,2)+`Z`:n||t?`T`+Vt(t,2)+`:`+Vt(n,2)+`Z`:``)}function Wt(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?
|
|
4
|
-
`)}function s(e,t){return t??=
|
|
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(`
|
|
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?Ut(e):t.test(e+=``)?`"`+e.replace(/"/g,`""`)+`"`:e}return{parse:r,parseRows:i,format:o,formatBody:s,formatRows:c,formatRow:l,formatValue:u}}var Gt=Wt(` `);Gt.parse;var Kt=Gt.parseRows;Gt.format,Gt.formatBody,Gt.formatRows,Gt.formatRow,Gt.formatValue;function qt(e){return e}function Jt(e){if(e==null)return qt;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 Yt(e,t){for(var n,r=e.length,i=r-t;i<--r;)n=e[i],e[i++]=e[r],e[r]=n}function Xt(e,t){return typeof t==`string`&&(t=e.objects[t]),t.type===`GeometryCollection`?{type:`FeatureCollection`,features:t.geometries.map(function(t){return Zt(e,t)})}:Zt(e,t)}function Zt(e,t){var n=t.id,r=t.bbox,i=t.properties==null?{}:t.properties,a=Qt(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 Qt(e,t){var n=Jt(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&&Yt(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 $t(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 en(e){return Qt(e,tn.apply(this,arguments))}function tn(e,t,n){var r,i,a;if(arguments.length>1)r=nn(e,t,n);else for(i=0,r=Array(a=e.arcs.length);i<a;++i)r[i]=i;return{type:`MultiLineString`,arcs:$t(e,r)}}function nn(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 rn(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function an(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function on(e){let t,n,r;e.length===2?(t=e===rn||e===an?e:sn,n=e,r=e):(t=rn,n=(t,n)=>rn(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 sn(){return 0}function cn(e){return e===null?NaN:+e}function*ln(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 un=on(rn),dn=un.right;un.left,on(cn).center;function fn(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 pn(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 mn(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 hn=class extends Map{constructor(e,t=yn){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(gn(this,e))}has(e){return super.has(gn(this,e))}set(e,t){return super.set(_n(this,e),t)}delete(e){return super.delete(vn(this,e))}};function gn({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):n}function _n({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function vn({_intern:e,_key:t},n){let r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function yn(e){return typeof e==`object`&&e?e.valueOf():e}function bn(e){return e}function xn(e,...t){return Cn(e,bn,bn,t)}function Sn(e,...t){return Cn(e,Array.from,bn,t)}function Cn(e,t,n,r){return(function e(i,a){if(a>=r.length)return n(i);let o=new hn,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 wn(e=rn){if(e===rn)return Tn;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 Tn(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(e<t?-1:e>t?1:0)}var En=Math.sqrt(50),Dn=Math.sqrt(10),On=Math.sqrt(2);function kn(e,t,n){let r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/10**i,o=a>=En?10:a>=Dn?5:a>=On?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?kn(e,t,n*2):[s,c,l]}function An(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?kn(t,e,n):kn(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 jn(e,t,n){return t=+t,e=+e,n=+n,kn(e,t,n)[2]}function Mn(e,t,n){t=+t,e=+e,n=+n;let r=t<e,i=r?jn(t,e,n):jn(e,t,n);return(r?-1:1)*(i<0?1/-i:i)}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){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,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?Tn:wn(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));Fn(e,t,u,d,i)}let a=e[t],o=n,s=r;for(In(e,n,t),i(e[r],a)>0&&In(e,n,r);o<s;){for(In(e,o,s),++o,--s;i(e[o],a)<0;)++o;for(;i(e[s],a)>0;)--s}i(e[n],a)===0?In(e,n,s):(++s,In(e,s,r)),s<=t&&(n=s+1),t<=s&&(r=s-1)}return e}function In(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function Ln(e,t,n){if(e=Float64Array.from(ln(e,n)),!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return Pn(e);if(t>=1)return Nn(e);var r,i=(r-1)*t,a=Math.floor(i),o=Nn(Fn(e,a).subarray(0,a+1));return o+(Pn(e.subarray(a+1))-o)*(i-a)}}function Rn(e,t,n=cn){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 zn(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 Bn(e,t){return Ln(e,.5,t)}function Vn(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 Hn(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 Un(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString(`en`).replace(/,/g,``):e.toString(10)}function Wn(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 Gn(e){return e=Wn(Math.abs(e)),e?e[1]:NaN}function Kn(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 qn(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}var Jn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Yn(e){if(!(t=Jn.exec(e)))throw Error(`invalid format: `+e);var t;return new Xn({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]})}Yn.prototype=Xn.prototype;function Xn(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+``}Xn.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 Zn(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 Qn;function $n(e,t){var n=Wn(e,t);if(!n)return Qn=void 0,e.toPrecision(t);var r=n[0],i=n[1],a=i-(Qn=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`)+Wn(e,Math.max(0,t+a-1))[0]}function er(e,t){var n=Wn(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 tr={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+``,d:Un,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)=>er(e*100,t),r:er,s:$n,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function nr(e){return e}var rr=Array.prototype.map,ir=[`y`,`z`,`a`,`f`,`p`,`n`,`µ`,`m`,``,`k`,`M`,`G`,`T`,`P`,`E`,`Z`,`Y`];function ar(e){var t=e.grouping===void 0||e.thousands===void 0?nr:Kn(rr.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?nr:qn(rr.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=Yn(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`):tr[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=tr[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=Zn(e)),w&&+e==0&&f!==`+`&&(w=!1),n=(w?f===`(`?f:s:f===`-`||f===`(`?``:f)+n,r=(y===`s`&&!isNaN(e)&&Qn!==void 0?ir[8+Qn/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(Gn(t)/3)))*3,r=10**-n,i=l((e=Yn(e),e.type=`f`,e),{suffix:ir[8+n/3]});return function(e){return i(r*e)}}return{format:l,formatPrefix:u}}var or,sr,cr;lr({thousands:`,`,grouping:[3],currency:[`$`,``]});function lr(e){return or=ar(e),sr=or.format,cr=or.formatPrefix,or}function ur(e){return Math.max(0,-Gn(Math.abs(e)))}function dr(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Gn(t)/3)))*3-Gn(Math.abs(e)))}function fr(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Gn(t)-Gn(e))+1}var pr=new Date,mr=new Date;function hr(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=>hr(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)=>(pr.setTime(+t),mr.setTime(+r),e(pr),e(mr),Math.floor(n(pr,mr))),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 gr=hr(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);gr.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?hr(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):gr),gr.range;var _r=1e3,vr=_r*60,yr=vr*60,br=yr*24,xr=br*7,Sr=br*30,Cr=br*365,wr=hr(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*_r)},(e,t)=>(t-e)/_r,e=>e.getUTCSeconds());wr.range;var Tr=hr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*_r)},(e,t)=>{e.setTime(+e+t*vr)},(e,t)=>(t-e)/vr,e=>e.getMinutes());Tr.range;var Er=hr(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*vr)},(e,t)=>(t-e)/vr,e=>e.getUTCMinutes());Er.range;var Dr=hr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*_r-e.getMinutes()*vr)},(e,t)=>{e.setTime(+e+t*yr)},(e,t)=>(t-e)/yr,e=>e.getHours());Dr.range;var Or=hr(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*yr)},(e,t)=>(t-e)/yr,e=>e.getUTCHours());Or.range;var kr=hr(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*vr)/br,e=>e.getDate()-1);kr.range;var Ar=hr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/br,e=>e.getUTCDate()-1);Ar.range;var jr=hr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/br,e=>Math.floor(e/br));jr.range;function Mr(e){return hr(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())*vr)/xr)}var Nr=Mr(0),Pr=Mr(1),Fr=Mr(2),Ir=Mr(3),Lr=Mr(4),Rr=Mr(5),zr=Mr(6);Nr.range,Pr.range,Fr.range,Ir.range,Lr.range,Rr.range,zr.range;function Br(e){return hr(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)/xr)}var Vr=Br(0),Hr=Br(1),Ur=Br(2),Wr=Br(3),Gr=Br(4),Kr=Br(5),qr=Br(6);Vr.range,Hr.range,Ur.range,Wr.range,Gr.range,Kr.range,qr.range;var Jr=hr(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());Jr.range;var Yr=hr(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());Yr.range;var Xr=hr(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());Xr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:hr(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)}),Xr.range;var Zr=hr(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());Zr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:hr(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)}),Zr.range;function Qr(e,t,n,r,i,a){let o=[[wr,1,_r],[wr,5,5*_r],[wr,15,15*_r],[wr,30,30*_r],[a,1,vr],[a,5,5*vr],[a,15,15*vr],[a,30,30*vr],[i,1,yr],[i,3,3*yr],[i,6,6*yr],[i,12,12*yr],[r,1,br],[r,2,2*br],[n,1,xr],[t,1,Sr],[t,3,3*Sr],[e,1,Cr]];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=on(([,,e])=>e).right(o,i);if(a===o.length)return e.every(Mn(t/Cr,n/Cr,r));if(a===0)return gr.every(Math.max(Mn(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[$r,ei]=Qr(Zr,Yr,Vr,jr,Or,Er),[ti,ni]=Qr(Xr,Jr,Nr,kr,Dr,Tr),ri=`year`,ii=`quarter`,ai=`month`,oi=`week`,si=`date`,ci=`dayofyear`,li=`hours`,ui=`minutes`,di=`seconds`,fi=`milliseconds`;[ri,ii,ai,oi,si,`day`,ci,li,ui,di,fi].reduce((e,t,n)=>(e[t]=1+n,e),{}),`${ri}${ai}`,`${ri}${ai}${si}`,`${li}${ui}`,oi+``,oi+``;var pi={[ri]:Xr,[ii]:Jr.every(3),[ai]:Jr,[oi]:Nr,[si]:kr,day:kr,[ci]:kr,[li]:Dr,[ui]:Tr,[di]:wr,[fi]:gr},mi={[ri]:Zr,[ii]:Yr.every(3),[ai]:Yr,[oi]:Vr,[si]:Ar,day:Ar,[ci]:Ar,[li]:Or,[ui]:Er,[di]:wr,[fi]:gr};function hi(e){return pi[e]}function gi(e){return mi[e]}var _i=1e3,vi=_i*60,yi=vi*60,bi=yi*24;bi*7;var xi=bi*30;bi*365,[ri,ai,si,li,ui,di,fi].slice(0,-1).slice(0,-1).slice(0,-1).slice(0,-1),5*_i,15*_i,30*_i,5*vi,15*vi,30*vi,3*yi,6*yi,12*yi,3*xi;function Si(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 Ci(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 wi(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}function Ti(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=ji(i),u=Mi(i),d=ji(a),f=Mi(a),p=ji(o),m=Mi(o),h=ji(s),g=Mi(s),_=ji(c),v=Mi(c),y={a:oe,A:se,b:ce,B:le,c:null,d:$i,e:$i,f:ia,g:ha,G:_a,H:ea,I:ta,j:na,L:ra,m:aa,M:oa,p:ue,q:de,Q:Ba,s:Va,S:sa,u:ca,U:la,V:da,w:fa,W:pa,x:null,X:null,y:ma,Y:ga,Z:va,"%":za},b={a:fe,A:pe,b:me,B:he,c:null,d:ya,e:ya,f:wa,g:Fa,G:La,H:ba,I:xa,j:Sa,L:Ca,m:Ta,M:Ea,p:ge,q:_e,Q:Ba,s:Va,S:Da,u:Oa,U:ka,V:ja,w:Ma,W:Na,x:null,X:null,y:Pa,Y:Ia,Z:Ra,"%":za},x={a:E,A:ee,b:te,B:ne,c:re,d:Ui,e:Ui,f:Yi,g:zi,G:Ri,H:Gi,I:Gi,j:Wi,L:Ji,m:Hi,M:Ki,p:T,q:Vi,Q:Zi,s:Qi,S:qi,u:Pi,U:Fi,V:Ii,w:Ni,W:Li,x:ie,X:ae,y:zi,Y:Ri,Z:Bi,"%":Xi};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=Ei[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=wi(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=Ci(wi(r.y,0,1)),o=a.getUTCDay(),a=o>4||o===0?Hr.ceil(a):Hr(a),a=Ar.offset(a,(r.V-1)*7),r.y=a.getUTCFullYear(),r.m=a.getUTCMonth(),r.d=a.getUTCDate()+(r.w+6)%7):(a=Si(wi(r.y,0,1)),o=a.getDay(),a=o>4||o===0?Pr.ceil(a):Pr(a),a=kr.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?Ci(wi(r.y,0,1)).getUTCDay():Si(wi(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,Ci(r)):Si(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 Ei?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 Ei={"-":``,_:` `,0:`0`},Di=/^\s*\d+/,Oi=/^%/,ki=/[\\^$*+?|[\]().{}]/g;function I(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 Ai(e){return e.replace(ki,`\\$&`)}function ji(e){return RegExp(`^(?:`+e.map(Ai).join(`|`)+`)`,`i`)}function Mi(e){return new Map(e.map((e,t)=>[e.toLowerCase(),t]))}function Ni(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function Pi(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function Fi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function Ii(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function Li(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function Ri(e,t,n){var r=Di.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function zi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Bi(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 Vi(e,t,n){var r=Di.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function Hi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Ui(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function Wi(e,t,n){var r=Di.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function Gi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function Ki(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function qi(e,t,n){var r=Di.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function Ji(e,t,n){var r=Di.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function Yi(e,t,n){var r=Di.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Xi(e,t,n){var r=Oi.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function Zi(e,t,n){var r=Di.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function Qi(e,t,n){var r=Di.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function $i(e,t){return I(e.getDate(),t,2)}function ea(e,t){return I(e.getHours(),t,2)}function ta(e,t){return I(e.getHours()%12||12,t,2)}function na(e,t){return I(1+kr.count(Xr(e),e),t,3)}function ra(e,t){return I(e.getMilliseconds(),t,3)}function ia(e,t){return ra(e,t)+`000`}function aa(e,t){return I(e.getMonth()+1,t,2)}function oa(e,t){return I(e.getMinutes(),t,2)}function sa(e,t){return I(e.getSeconds(),t,2)}function ca(e){var t=e.getDay();return t===0?7:t}function la(e,t){return I(Nr.count(Xr(e)-1,e),t,2)}function ua(e){var t=e.getDay();return t>=4||t===0?Lr(e):Lr.ceil(e)}function da(e,t){return e=ua(e),I(Lr.count(Xr(e),e)+(Xr(e).getDay()===4),t,2)}function fa(e){return e.getDay()}function pa(e,t){return I(Pr.count(Xr(e)-1,e),t,2)}function ma(e,t){return I(e.getFullYear()%100,t,2)}function ha(e,t){return e=ua(e),I(e.getFullYear()%100,t,2)}function ga(e,t){return I(e.getFullYear()%1e4,t,4)}function _a(e,t){var n=e.getDay();return e=n>=4||n===0?Lr(e):Lr.ceil(e),I(e.getFullYear()%1e4,t,4)}function va(e){var t=e.getTimezoneOffset();return(t>0?`-`:(t*=-1,`+`))+I(t/60|0,`0`,2)+I(t%60,`0`,2)}function ya(e,t){return I(e.getUTCDate(),t,2)}function ba(e,t){return I(e.getUTCHours(),t,2)}function xa(e,t){return I(e.getUTCHours()%12||12,t,2)}function Sa(e,t){return I(1+Ar.count(Zr(e),e),t,3)}function Ca(e,t){return I(e.getUTCMilliseconds(),t,3)}function wa(e,t){return Ca(e,t)+`000`}function Ta(e,t){return I(e.getUTCMonth()+1,t,2)}function Ea(e,t){return I(e.getUTCMinutes(),t,2)}function Da(e,t){return I(e.getUTCSeconds(),t,2)}function Oa(e){var t=e.getUTCDay();return t===0?7:t}function ka(e,t){return I(Vr.count(Zr(e)-1,e),t,2)}function Aa(e){var t=e.getUTCDay();return t>=4||t===0?Gr(e):Gr.ceil(e)}function ja(e,t){return e=Aa(e),I(Gr.count(Zr(e),e)+(Zr(e).getUTCDay()===4),t,2)}function Ma(e){return e.getUTCDay()}function Na(e,t){return I(Hr.count(Zr(e)-1,e),t,2)}function Pa(e,t){return I(e.getUTCFullYear()%100,t,2)}function Fa(e,t){return e=Aa(e),I(e.getUTCFullYear()%100,t,2)}function Ia(e,t){return I(e.getUTCFullYear()%1e4,t,4)}function La(e,t){var n=e.getUTCDay();return e=n>=4||n===0?Gr(e):Gr.ceil(e),I(e.getUTCFullYear()%1e4,t,4)}function Ra(){return`+0000`}function za(){return`%`}function Ba(e){return+e}function Va(e){return Math.floor(e/1e3)}var Ha,Ua,Wa,Ga,Ka;qa({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 qa(e){return Ha=Ti(e),Ua=Ha.format,Wa=Ha.parse,Ga=Ha.utcFormat,Ka=Ha.utcParse,Ha}function Ja(e){let t={};return n=>t[n]||(t[n]=e(n))}function Ya(e,t){return n=>{let r=e(n),i=r.indexOf(t);if(i<0)return r;let a=Xa(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 Xa(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 Za(e){let t=Ja(e.format),n=e.formatPrefix;return{format:t,formatPrefix:n,formatFloat(e){let n=Yn(e||`,`);if(n.precision==null){switch(n.precision=12,n.type){case`%`:n.precision-=2;break;case`e`:--n.precision;break}return Ya(t(n),t(`.1f`)(1)[1])}else return t(n)},formatSpan(e,r,i,a){a=Yn(a??`,f`);let o=Mn(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=dr(o,s))||(a.precision=c),n(a,s);case``:case`e`:case`g`:case`p`:case`r`:isNaN(c=fr(o,s))||(a.precision=c-(a.type===`e`));break;case`f`:case`%`:isNaN(c=ur(o))||(a.precision=c-(a.type===`%`)*2);break}return t(a)}}}Qa();function Qa(){return Za({format:sr,formatPrefix:cr})}function $a(e,t,n){n||={},Qe(n)||qe(`Invalid time multi-format specifier: ${n}`);let r=t(di),i=t(ui),a=t(li),o=t(si),s=t(oi),c=t(ai),l=t(ii),u=t(ri),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 eo(e){let t=Ja(e.format),n=Ja(e.utcFormat);return{timeFormat:e=>P(e)?t(e):$a(t,hi,e),utcFormat:e=>P(e)?n(e):$a(n,gi,e),timeParse:Ja(e.parse),utcParse:Ja(e.utcParse)}}var to;no();function no(){return to=eo({format:Ua,parse:Wa,utcFormat:Ga,utcParse:Ka})}function ro(e){return eo(Ti(e))}function io(e){return arguments.length?to=ro(e):to}var ao=e=>e!=null&&e===e,oo=e=>e===`true`||e===`false`||e===!0||e===!1,so=e=>!Number.isNaN(Date.parse(e)),co=e=>!Number.isNaN(+e)&&!(e instanceof Date),lo=e=>co(e)&&Number.isInteger(+e),uo={boolean:Ot,integer:et,number:et,date:At,string:jt,unknown:Xe},fo=[oo,lo,co,so],po=[`boolean`,`integer`,`number`,`date`];function mo(e,t){if(!e||!e.length)return`unknown`;let n=e.length,r=fo.length,i=fo.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]&&ao(c)&&!fo[s](c)&&(i[s]=0,++o,o===fo.length))return`string`;return po[i.reduce((e,t)=>e===0?t:e,0)-1]}function ho(e,t){return t.reduce((t,n)=>(t[n]=mo(e,n),t),{})}function go(e){let t=function(t,n){let r={delimiter:e};return _o(t,n?bt(n,r):r)};return t.responseType=`text`,t}function _o(e,t){return t.header&&(e=t.header.map(Dt).join(t.delimiter)+`
|
|
7
|
-
`+e),Wt(t.delimiter).parse(e+``)}_o.responseType=`text`;function vo(e){return typeof Buffer==`function`&&pt(Buffer.isBuffer)?Buffer.isBuffer(e):!1}function yo(e,t){let n=t&&t.property?Ye(t.property):Xe;return Qe(e)&&!vo(e)?bo(n(e),t):n(JSON.parse(e))}yo.responseType=`json`;function bo(e,t){return!O(e)&&wt(e)&&(e=[...e]),t&&t.copy?JSON.parse(JSON.stringify(e)):e}var xo={interior:(e,t)=>e!==t,exterior:(e,t)=>e===t};function So(e,t){let n,r,i,a;return e=yo(e,t),t&&t.feature?(n=Xt,i=t.feature):t&&t.mesh?(n=en,i=t.mesh,a=xo[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]}So.responseType=`json`;var Co={dsv:_o,csv:go(`,`),tsv:go(` `),json:yo,topojson:So};function wo(e,t){return arguments.length>1?(Co[e]=t,this):xt(Co,e)?Co[e]:null}function To(e,t,n,r){t||={};let i=wo(t.type||`json`);return i||qe(`Unknown data format type: `+t.type),e=i(e,t),t.parse&&Eo(e,t.parse,n,r),xt(e,`columns`)&&delete e.columns,e}function Eo(e,t,n,r){if(!e.length)return;let i=io();n||=i.timeParse,r||=i.utcParse;let a=e.columns||Object.keys(e[0]),o,s,c,l,u,d;t===`auto`&&(t=ho(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(!uo[i])throw Error(`Illegal format pattern: `+e+`:`+i);return uo[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 Do,Oo,ko,Ao,jo,Mo,No,Po=n((()=>{Do=[`BOOLEAN`,`INT32`,`INT64`,`INT96`,`FLOAT`,`DOUBLE`,`BYTE_ARRAY`,`FIXED_LEN_BYTE_ARRAY`],Oo=[`PLAIN`,`GROUP_VAR_INT`,`PLAIN_DICTIONARY`,`RLE`,`BIT_PACKED`,`DELTA_BINARY_PACKED`,`DELTA_LENGTH_BYTE_ARRAY`,`DELTA_BYTE_ARRAY`,`RLE_DICTIONARY`,`BYTE_STREAM_SPLIT`],ko=[`REQUIRED`,`OPTIONAL`,`REPEATED`],Ao=[`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`],jo=[`UNCOMPRESSED`,`SNAPPY`,`GZIP`,`LZO`,`BROTLI`,`LZ4`,`ZSTD`,`LZ4_RAW`],Mo=[`DATA_PAGE`,`INDEX_PAGE`,`DICTIONARY_PAGE`,`DATA_PAGE_V2`],No=[`SPHERICAL`,`VINCENTY`,`THOMAS`,`ANDOYER`,`KARNEY`]}));function Fo(e){let t=Io(e);if(t.type===1)return{type:`Point`,coordinates:Lo(e,t)};if(t.type===2)return{type:`LineString`,coordinates:Ro(e,t)};if(t.type===3)return{type:`Polygon`,coordinates:zo(e,t)};if(t.type===4){let n=[];for(let r=0;r<t.count;r++)n.push(Lo(e,Io(e)));return{type:`MultiPoint`,coordinates:n}}else if(t.type===5){let n=[];for(let r=0;r<t.count;r++)n.push(Ro(e,Io(e)));return{type:`MultiLineString`,coordinates:n}}else if(t.type===6){let n=[];for(let r=0;r<t.count;r++)n.push(zo(e,Io(e)));return{type:`MultiPolygon`,coordinates:n}}else if(t.type===7){let n=[];for(let r=0;r<t.count;r++)n.push(Fo(e));return{type:`GeometryCollection`,geometries:n}}else throw Error(`Unsupported geometry type: ${t.type}`)}function Io(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 Lo(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 Ro(e,t){let n=[];for(let r=0;r<t.count;r++)n.push(Lo(e,t));return n}function zo(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(Ro(e,{...t,count:i}))}return r}var Bo=n((()=>{}));function Vo(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 Ho(e,r)}function Ho(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]=Uo(e[n])*t:r[n]=Number(e[n])*t;return r}if(!s&&o===`INT96`)return Array.from(e).map(e=>r.timestampFromNanoseconds(Wo(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(Ko.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(Go);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 Uo(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 Wo(e){let t=(e>>64n)-2440588n,n=e&18446744073709551615n;return t*86400000000000n+n}function Go(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 Ko,qo,Jo=n((()=>{Bo(),Ko=new TextDecoder,qo={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&&Ko.decode(e)},geometryFromBytes(e){return e&&Fo({view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0})},geographyFromBytes(e){return e&&Fo({view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0})}}}));function Yo(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=Yo(e,t+a,[...n,r.name]);a+=o.count,i.push(o)}return{count:a,element:r,children:i,path:n}}function Xo(e,t){let n=Yo(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 Zo(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 Qo(e){let t=0;for(let{element:n}of e)n.repetition_type===`REPEATED`&&t++;return t}function $o(e){let t=0;for(let{element:n}of e.slice(1))n.repetition_type!==`REQUIRED`&&t++;return t}function es(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 ts(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 ns(e){if(e.length!==2)return!1;let[,t]=e;return!(t.element.repetition_type===`REPEATED`||t.children.length)}var rs=n((()=>{}));function is(e){let t=0,n={};for(;e.offset<e.view.byteLength;){let[r,i,a]=us(e,t);if(t=a,r===ds.STOP)break;n[`field_${i}`]=as(e,r)}return n}function as(e,t){switch(t){case ds.TRUE:return!0;case ds.FALSE:return!1;case ds.BYTE:return e.view.getInt8(e.offset++);case ds.I16:case ds.I32:return cs(e);case ds.I64:return ls(e);case ds.DOUBLE:{let t=e.view.getFloat64(e.offset,!0);return e.offset+=8,t}case ds.BINARY:{let t=os(e),n=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,t);return e.offset+=t,n}case ds.LIST:{let t=e.view.getUint8(e.offset++),n=t&15,r=t>>4;r===15&&(r=os(e));let i=n===ds.TRUE||n===ds.FALSE,a=Array(r);for(let t=0;t<r;t++)a[t]=i?as(e,ds.BYTE)===1:as(e,n);return a}case ds.STRUCT:{let t={},n=0;for(;;){let[r,i,a]=us(e,n);if(n=a,r===ds.STOP)break;t[`field_${i}`]=as(e,r)}return t}default:throw Error(`thrift unhandled type: ${t}`)}}function os(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 ss(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 cs(e){let t=os(e);return t>>>1^-(t&1)}function ls(e){let t=ss(e);return t>>1n^-(t&1n)}function us(e,t){let n=e.view.getUint8(e.offset++),r=n&15;if(r===ds.STOP)return[0,0,t];let i=n>>4,a=i?t+i:cs(e);return[r,a,a]}var ds,fs=n((()=>{ds={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 ps(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 ms=n((()=>{}));function hs(e){return e&&ws.decode(e)}async function gs(e,{parsers:t,initialFetchSize:n=Cs,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),_s(c,{parsers:t,geoparquet:r})}else return _s(a,{parsers:t,geoparquet:r})}function _s(e,{parsers:t,geoparquet:n=!0}={}){if(!(e instanceof ArrayBuffer))throw Error(`parquet expected ArrayBuffer`);let r=new DataView(e);if(t={...qo,...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=is({view:r,offset:i-a}),s=o.field_1,c=o.field_2.map(e=>({type:Do[e.field_1],type_length:e.field_2,repetition_type:ko[e.field_3],name:hs(e.field_4),num_children:e.field_5,converted_type:Ao[e.field_6],scale:e.field_7,precision:e.field_8,field_id:e.field_9,logical_type:ys(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:hs(e.field_1),file_offset:e.field_2,meta_data:e.field_3&&{type:Do[e.field_3.field_1],encodings:e.field_3.field_2?.map(e=>Oo[e]),path_in_schema:e.field_3.field_3.map(hs),codec:jo[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:hs(e.field_1),value:hs(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:xs(e.field_3.field_12,l[n],t),encoding_stats:e.field_3.field_13?.map(e=>({page_type:Mo[e.field_1],encoding:Oo[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:hs(e.field_1),value:hs(e.field_2)})),p=hs(o.field_6);return n&&ps(c,f),{version:s,schema:c,num_rows:u,row_groups:d,key_value_metadata:f,created_by:p,metadata_length:a}}function vs({schema:e}){return Xo(e,[])[0]}function ys(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:bs(e.field_7.field_2)}:e?.field_8?{type:`TIMESTAMP`,isAdjustedToUTC:e.field_8.field_1,unit:bs(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:hs(e.field_17.field_1)}:e?.field_18?{type:`GEOGRAPHY`,crs:hs(e.field_18.field_1),algorithm:No[e.field_18.field_2]}:e}function bs(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 xs(e,t,n){return e&&{max:Ss(e.field_1,t,n),min:Ss(e.field_2,t,n),null_count:e.field_3,distinct_count:e.field_4,max_value:Ss(e.field_5,t,n),min_value:Ss(e.field_6,t,n),is_max_value_exact:e.field_7,is_min_value_exact:e.field_8}}function Ss(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`?Uo(e)*10**-(t.scale||0):a?.type===`FLOAT16`?Go(e):e}var Cs,ws,Ts=n((()=>{Po(),Jo(),rs(),fs(),ms(),Cs=1<<19,ws=new TextDecoder}));function Es(e,t){let n=1e4;for(let r=0;r<t.length;r+=n)e.push(...t.slice(r,r+n))}function Ds(e,t,n=!0){if(n?e===t:e==t)return!0;if(e instanceof Uint8Array&&t instanceof Uint8Array)return Ds(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(!Ds(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(!Ds(e[i],t[i],n))return!1;return!0}function Os(e){if(!e)return[];if(e.length===1)return e[0];let t=[];for(let n of e)Es(t,n);return t}var ks=n((()=>{}));function As({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=>As({rowGroup:e,physicalColumns:t,filter:n,strict:r}));if(`$or`in n&&Array.isArray(n.$or))return n.$or.every(n=>As({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`&&Ds(d,f,r)&&Ds(d,t,r)||e===`$in`&&Array.isArray(t)&&t.every(e=>e<d||e>f)||e===`$nin`&&Array.isArray(t)&&Ds(d,f,r)&&t.includes(d))return!0}}return!1}var js=n((()=>{ks()}));function Ms({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=Zo(vs(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&&!As({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<=Ps?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 Ns(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 Ps,Fs=n((()=>{js(),Ts(),rs(),Ps=1<<21}));function Is(e,t=qo){if(Array.isArray(e))return e.map(e=>Is(e,t));if(typeof e!=`object`)return e;if(`metadata`in e){let n=zs(e.metadata),r=e.typed_value&&Ls(e.typed_value,n,t),i=e.value&&Vs(Rs(e.value),n,t);return r&&i?{...i,...r}:r??i}return e}function Ls(e,t,n){if(e&&typeof e==`object`&&!Array.isArray(e)&&!(e instanceof Uint8Array)){if(`typed_value`in e)return Ls(e.typed_value,t,n);if(`value`in e&&e.value instanceof Uint8Array)return Vs(Rs(e.value),t,n);let r={};for(let[i,a]of Object.entries(e))r[i]=Ls(a,t,n);return r}return e instanceof Uint8Array?Vs(Rs(e),t,n):Array.isArray(e)?e.map(e=>Ls(e,t,n)):e}function Rs(e){return{view:new DataView(e.buffer,e.byteOffset,e.byteLength),offset:0}}function zs(e){let t=Js.get(e.buffer);t||(t=new Map,Js.set(e.buffer,t));let n=`${e.byteOffset}:${e.byteLength}`,r=t.get(n);if(r)return r;let i=Rs(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=Bs(i,c),u=Array(l+1);for(let e=0;e<u.length;e++)u[e]=Bs(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]=qs.decode(i)}let p={dictionary:f,sorted:s};return t.set(n,p),p}function Bs(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 Vs(e,t,n){let r=e.view.getUint8(e.offset++),i=r&3,a=r>>2;if(i===0)return Hs(e,a,n);if(i===2)return Us(e,a,t,n);if(i===3)return Ws(e,a,t,n);let o=new Uint8Array(e.view.buffer,e.view.byteOffset+e.offset,a);return e.offset+=a,qs.decode(o)}function Hs(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 Gs(e,4);case 9:return Gs(e,8);case 10:return Gs(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 Ks(e);case 16:{let t=Ks(e);return qs.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 Us(e,t,n,r){let i=(t&3)+1,a=(t>>2&3)+1,o=t>>4&1?Bs(e,4):e.view.getUint8(e.offset++),s=Array(o);for(let t=0;t<o;t++)s[t]=Bs(e,a);let c=Array(o+1);for(let t=0;t<c.length;t++)c[t]=Bs(e,i);let l={};for(let t=0;t<o;t++){let i=n.dictionary[s[t]];l[i]=Vs({view:e.view,offset:e.offset+c[t]},n,r)}return e.offset+=c[c.length-1],l}function Ws(e,t,n,r){let i=t&3,a=t>>2&1,o=i+1,s=Bs(e,a?4:1),c=Array(s+1);for(let t=0;t<c.length;t++)c[t]=Bs(e,o);let l=e.offset,u=Array(s);for(let t=0;t<s;t++)u[t]=Vs({view:e.view,offset:l+c[t]},n,r);return e.offset=l+c[c.length-1],u}function Gs(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 Ks(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 qs,Js,Ys=n((()=>{Jo(),qs=new TextDecoder,Js=new WeakMap}));function Xs(e,t,n,r,i){let a=$o(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 Zs(e,t,n,r=0){let i=t.path.join(`.`),a=t.element.repetition_type===`OPTIONAL`,o=a?r+1:r;if(es(t)){let s=t.children[0],c=o;s.children.length===1&&(s=s.children[0],c++),Zs(e,s,n,c);let l=s.path.join(`.`),u=e.get(l);if(!u)throw Error(`parquet list column missing values`);a&&Qs(u,r),e.set(i,u),e.delete(l);return}if(ts(t)){let s=t.children[0].element.name;Zs(e,t.children[0].children[0],n,o+1),Zs(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=$s(c,l,o);a&&Qs(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){Zs(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=ec(s,o);t.element.logical_type?.type===`VARIANT`&&(c=Is(c,n)),a&&Qs(c,r),e.set(i,c)}}function Qs(e,t){for(let n=0;n<e.length;n++)t?Qs(e[n],t-1):e[n]=e[n][0]}function $s(e,t,n){let r=[];for(let i=0;i<e.length;i++)if(n)r.push($s(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 ec(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(ec(o,t-1)):i.push(o)}return i}var tc=n((()=>{rs(),Ys()}));function nc(e,t,n){let r=n instanceof Int32Array,i=os(e),a=os(e);os(e);let o=ls(e),s=0;n[s++]=r?Number(o):o;let c=i/a;for(;s<t;){let i=ls(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 rc(e,t,n){let r=new Int32Array(t);nc(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 ic(e,t,n){let r=new Int32Array(t);nc(e,t,r);let i=new Int32Array(t);nc(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 ac=n((()=>{fs()}));function oc(e){return 32-Math.clz32(e)}function sc(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=os(e);if(r&1)a=lc(e,r,t,n,a);else{let i=r>>>1;cc(e,i,t,n,a),a+=i}}e.offset=i+r}function cc(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 lc(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 uc(e,t,n,r){let i=dc(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 dc(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 fc=n((()=>{fs()}));function pc(e,t,n,r){if(n===0)return[];if(t===`BOOLEAN`)return mc(e,n);if(t===`INT32`)return hc(e,n);if(t===`INT64`)return gc(e,n);if(t===`INT96`)return _c(e,n);if(t===`FLOAT`)return vc(e,n);if(t===`DOUBLE`)return yc(e,n);if(t===`BYTE_ARRAY`)return bc(e,n);if(t===`FIXED_LEN_BYTE_ARRAY`){if(!r)throw Error(`parquet missing fixed length`);return xc(e,n,r)}else throw Error(`parquet unhandled type: ${t}`)}function mc(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 hc(e,t){let n=(e.view.byteOffset+e.offset)%4?new Int32Array(Sc(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 gc(e,t){let n=(e.view.byteOffset+e.offset)%8?new BigInt64Array(Sc(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 _c(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 vc(e,t){let n=(e.view.byteOffset+e.offset)%4?new Float32Array(Sc(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 yc(e,t){let n=(e.view.byteOffset+e.offset)%8?new Float64Array(Sc(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 bc(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 xc(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 Sc(e,t,n){let r=new ArrayBuffer(n);return new Uint8Array(r).set(new Uint8Array(e,t,n)),r}var Cc=n((()=>{}));function wc(e,t,n,r,i){for(let a=0;a<i;a++)n[r+a]=e[t+a]}function Tc(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`);wc(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&Ec[t])+1,i+=t}if(i+o>n)throw Error(`snappy error literal exceeds input length`);wc(e,i,t,a,o),i+=o,a+=o}}if(a!==r)throw Error(`premature end of input`)}var Ec,Dc=n((()=>{Ec=[0,255,65535,16777215,4294967295]}));function Oc(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=kc(o,t,i),{definitionLevels:l,numNulls:u}=Ac(o,t,i),d=t.num_values-u;if(t.encoding===`PLAIN`)s=pc(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`?(sc(o,e,s),s=s.map(e=>!!e)):sc(o,e,s,a.byteLength-o.offset)):s=new Uint8Array(d)}else if(t.encoding===`BYTE_STREAM_SPLIT`)s=uc(o,d,n,r.type_length);else if(t.encoding===`DELTA_BINARY_PACKED`)s=n===`INT32`?new Int32Array(d):new BigInt64Array(d),nc(o,d,s);else if(t.encoding===`DELTA_LENGTH_BYTE_ARRAY`)s=Array(d),rc(o,d,s);else throw Error(`parquet unsupported encoding: ${t.encoding}`);return{definitionLevels:l,repetitionLevels:c,dataPage:s}}function kc(e,t,n){if(n.length>1){let r=Qo(n);if(r){let n=Array(t.num_values);return sc(e,oc(r),n),n}}return[]}function Ac(e,t,n){let r=$o(n);if(!r)return{definitionLevels:[],numNulls:0};let i=Array(t.num_values);sc(e,oc(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 jc(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),Tc(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 Mc(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=Nc(r,l,o);r.offset=l.repetition_levels_byte_length;let d=Pc(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=jc(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=pc(h,i,_,a.type_length);else if(l.encoding===`RLE`)g=Array(_),sc(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(_),sc(h,e,g,f-1)}else if(l.encoding===`DELTA_BINARY_PACKED`)g=i===`INT32`?new Int32Array(_):new BigInt64Array(_),nc(h,_,g);else if(l.encoding===`DELTA_LENGTH_BYTE_ARRAY`)g=Array(_),rc(h,_,g);else if(l.encoding===`DELTA_BYTE_ARRAY`)g=Array(_),ic(h,_,g);else if(l.encoding===`BYTE_STREAM_SPLIT`)g=uc(h,_,i,a.type_length);else throw Error(`parquet unsupported encoding: ${l.encoding}`);return{definitionLevels:d,repetitionLevels:u,dataPage:g}}function Nc(e,t,n){let r=Qo(n);if(!r)return[];let i=Array(t.num_values);return sc(e,oc(r),i,t.repetition_levels_byte_length),i}function Pc(e,t,n){let r=$o(n);if(r){let n=Array(t.num_values);return sc(e,oc(r),n,t.definition_levels_byte_length),n}}var Fc=n((()=>{ac(),fc(),Cc(),rs(),Dc()}));function Ic(e,{groupStart:t,selectStart:n,selectEnd:r},i,a){let{pathInSchema:o,schemaPath:s}=i,c=ns(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=Rc(e);if(t.type===`DICTIONARY_PAGE`){let{data:n}=Lc(e,t,i,u,void 0,0);n&&(u=Ho(n,i))}else{let r=d?.length||0,a=Lc(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 Lc(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&&ns(c))return{skipped:e.num_values};let{definitionLevels:o,repetitionLevels:s,dataPage:f}=Oc(jc(d,Number(t.uncompressed_page_size),l,u),e,n),p=Vo(f,r,e.encoding,n);return{skipped:0,data:Xs(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}=Mc(d,t,n),u=Vo(l,r,e.encoding,n);return{skipped:0,data:Xs(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=jc(d,Number(t.uncompressed_page_size),l,u);return{skipped:0,data:pc({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 Rc(e){let t=is(e);return{type:Mo[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:Oo[t.field_5.field_2],definition_level_encoding:Oo[t.field_5.field_3],repetition_level_encoding:Oo[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:Oo[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:Oo[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 zc=n((()=>{tc(),Po(),Jo(),Fc(),Cc(),rs(),fs()}));function Bc(e){let t=is(e);return{page_locations:t.field_1.map(Vc),unencoded_byte_array_data_bytes:t.field_2}}function Vc(e){return{offset:e.field_1,compressed_page_size:e.field_2,first_row_index:e.field_3}}var Hc=n((()=>{fs()}));function Uc(e,{metadata:t},n){let{file:r,compressors:i,utf8:a}=e,o=[],s={...qo,...e.parsers};for(let c of n.chunks){let{columnMetadata:l}=c,u=Xo(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=>Ic({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=Bc({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}=Ic({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 Wc(e,t,n){let{asyncColumns:r}=e;n={...qo,...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(`.`),Os(t))}))).then(()=>{Zs(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 Gc=n((()=>{tc(),zc(),Jo(),Hc(),rs(),ks()})),Kc=r({parquetRead:()=>Qc,parquetReadObjects:()=>$c});function qc(e){if(!e.metadata)throw Error(`parquet requires metadata`);let t=Ms(e);return e.file=Ns(e.file,t),t.groups.map(n=>Uc(e,t,n))}function Jc(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 Yc(e){let t=e.join(``),n=el.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?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(`,
|
|
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
|
|
15
|
-
`,`\r`],!0,!1),Je=function(e){return e.join(``).replace(/^"/,``).replace(/"$/,``)},Ye=
|
|
16
|
-
`,`\r`],!1,!1),
|
|
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
|
|
17
17
|
"bigChain pairwise alignment"
|
|
18
18
|
(
|
|
19
19
|
string chrom; "Reference sequence chromosome or scaffold"
|
|
@@ -28,7 +28,7 @@ return groupData;`);return el.set(t,i),i}function Xc(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
|
-
)`,
|
|
31
|
+
)`,pl=`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 el.set(t,i),i}function Xc(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
|
-
)`,
|
|
54
|
+
)`,ml=`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 el.set(t,i),i}function Xc(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
|
-
)`,
|
|
76
|
+
)`,hl=`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 el.set(t,i),i}function Xc(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
|
-
)`,
|
|
84
|
+
)`,gl=`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
|
-
)`,
|
|
91
|
+
)`,_l=`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 el.set(t,i),i}function Xc(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
|
-
)`,
|
|
104
|
+
)`,vl=`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 el.set(t,i),i}function Xc(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
|
-
)`,
|
|
136
|
+
)`,yl=`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 el.set(t,i),i}function Xc(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
|
-
)`,
|
|
151
|
+
)`,bl=`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 el.set(t,i),i}function Xc(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
|
-
)`,
|
|
165
|
+
)`,xl=`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 el.set(t,i),i}function Xc(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
|
-
)`})),
|
|
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}wo(`fasta`,Jl);function Yl(e,t){return e.length==t.length&&e.every((n,r)=>e[r]===t[r])}function Xl(e){return Array.isArray(e)?e:e===void 0?[]:[e]}function Zl(e){return e[e.length-1]}function Ql(e,t,n){return n=(n-e)/(t-e),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}function $l(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function eu(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 tu=Symbol(`implicit`);function nu(){var e=new hn,t=[],n=[],r=tu;function i(i){let a=e.get(i);if(a===void 0){if(r!==tu)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 hn;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 nu(t,n).unknown(r)},$l.apply(i,arguments),i}function ru(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function iu(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function au(){}var ou=.7,su=1/ou,cu=`\\s*([+-]?\\d+)\\s*`,lu=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,uu=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,du=/^#([0-9a-f]{3,8})$/,fu=RegExp(`^rgb\\(${cu},${cu},${cu}\\)$`),pu=RegExp(`^rgb\\(${uu},${uu},${uu}\\)$`),mu=RegExp(`^rgba\\(${cu},${cu},${cu},${lu}\\)$`),hu=RegExp(`^rgba\\(${uu},${uu},${uu},${lu}\\)$`),gu=RegExp(`^hsl\\(${lu},${uu},${uu}\\)$`),_u=RegExp(`^hsla\\(${lu},${uu},${uu},${lu}\\)$`),vu={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};ru(au,Cu,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:yu,formatHex:yu,formatHex8:bu,formatHsl:xu,formatRgb:Su,toString:Su});function yu(){return this.rgb().formatHex()}function bu(){return this.rgb().formatHex8()}function xu(){return Iu(this).formatHsl()}function Su(){return this.rgb().formatRgb()}function Cu(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=du.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?wu(t):n===3?new Ou(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Tu(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Tu(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=fu.exec(e))?new Ou(t[1],t[2],t[3],1):(t=pu.exec(e))?new Ou(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=mu.exec(e))?Tu(t[1],t[2],t[3],t[4]):(t=hu.exec(e))?Tu(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=gu.exec(e))?Fu(t[1],t[2]/100,t[3]/100,1):(t=_u.exec(e))?Fu(t[1],t[2]/100,t[3]/100,t[4]):vu.hasOwnProperty(e)?wu(vu[e]):e===`transparent`?new Ou(NaN,NaN,NaN,0):null}function wu(e){return new Ou(e>>16&255,e>>8&255,e&255,1)}function Tu(e,t,n,r){return r<=0&&(e=t=n=NaN),new Ou(e,t,n,r)}function Eu(e){return e instanceof au||(e=Cu(e)),e?(e=e.rgb(),new Ou(e.r,e.g,e.b,e.opacity)):new Ou}function Du(e,t,n,r){return arguments.length===1?Eu(e):new Ou(e,t,n,r??1)}function Ou(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}ru(Ou,Du,iu(au,{brighter(e){return e=e==null?su:su**+e,new Ou(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?ou:ou**+e,new Ou(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ou(Nu(this.r),Nu(this.g),Nu(this.b),Mu(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:ku,formatHex:ku,formatHex8:Au,formatRgb:ju,toString:ju}));function ku(){return`#${Pu(this.r)}${Pu(this.g)}${Pu(this.b)}`}function Au(){return`#${Pu(this.r)}${Pu(this.g)}${Pu(this.b)}${Pu((isNaN(this.opacity)?1:this.opacity)*255)}`}function ju(){let e=Mu(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Nu(this.r)}, ${Nu(this.g)}, ${Nu(this.b)}${e===1?`)`:`, ${e})`}`}function Mu(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Nu(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Pu(e){return e=Nu(e),(e<16?`0`:``)+e.toString(16)}function Fu(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Ru(e,t,n,r)}function Iu(e){if(e instanceof Ru)return new Ru(e.h,e.s,e.l,e.opacity);if(e instanceof au||(e=Cu(e)),!e)return new Ru;if(e instanceof Ru)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 Ru(o,s,c,e.opacity)}function Lu(e,t,n,r){return arguments.length===1?Iu(e):new Ru(e,t,n,r??1)}function Ru(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}ru(Ru,Lu,iu(au,{brighter(e){return e=e==null?su:su**+e,new Ru(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ou:ou**+e,new Ru(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 Ou(Vu(e>=240?e-240:e+120,i,r),Vu(e,i,r),Vu(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Ru(zu(this.h),Bu(this.s),Bu(this.l),Mu(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=Mu(this.opacity);return`${e===1?`hsl(`:`hsla(`}${zu(this.h)}, ${Bu(this.s)*100}%, ${Bu(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function zu(e){return e=(e||0)%360,e<0?e+360:e}function Bu(e){return Math.max(0,Math.min(1,e||0))}function Vu(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 Hu=Math.PI/180,Uu=180/Math.PI,Wu=18,Gu=.96422,Ku=1,qu=.82521,Ju=4/29,Yu=6/29,Xu=3*Yu*Yu,Zu=Yu*Yu*Yu;function Qu(e){if(e instanceof ed)return new ed(e.l,e.a,e.b,e.opacity);if(e instanceof sd)return cd(e);e instanceof Ou||(e=Eu(e));var t=id(e.r),n=id(e.g),r=id(e.b),i=td((.2225045*t+.7168786*n+.0606169*r)/Ku),a,o;return t===n&&n===r?a=o=i:(a=td((.4360747*t+.3850649*n+.1430804*r)/Gu),o=td((.0139322*t+.0971045*n+.7141733*r)/qu)),new ed(116*i-16,500*(a-i),200*(i-o),e.opacity)}function $u(e,t,n,r){return arguments.length===1?Qu(e):new ed(e,t,n,r??1)}function ed(e,t,n,r){this.l=+e,this.a=+t,this.b=+n,this.opacity=+r}ru(ed,$u,iu(au,{brighter(e){return new ed(this.l+Wu*(e??1),this.a,this.b,this.opacity)},darker(e){return new ed(this.l-Wu*(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=Gu*nd(t),e=Ku*nd(e),n=qu*nd(n),new Ou(rd(3.1338561*t-1.6168667*e-.4906146*n),rd(-.9787684*t+1.9161415*e+.033454*n),rd(.0719453*t-.2289914*e+1.4052427*n),this.opacity)}}));function td(e){return e>Zu?e**(1/3):e/Xu+Ju}function nd(e){return e>Yu?e*e*e:Xu*(e-Ju)}function rd(e){return 255*(e<=.0031308?12.92*e:1.055*e**(1/2.4)-.055)}function id(e){return(e/=255)<=.04045?e/12.92:((e+.055)/1.055)**2.4}function ad(e){if(e instanceof sd)return new sd(e.h,e.c,e.l,e.opacity);if(e instanceof ed||(e=Qu(e)),e.a===0&&e.b===0)return new sd(NaN,0<e.l&&e.l<100?0:NaN,e.l,e.opacity);var t=Math.atan2(e.b,e.a)*Uu;return new sd(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function od(e,t,n,r){return arguments.length===1?ad(e):new sd(e,t,n,r??1)}function sd(e,t,n,r){this.h=+e,this.c=+t,this.l=+n,this.opacity=+r}function cd(e){if(isNaN(e.h))return new ed(e.l,0,0,e.opacity);var t=e.h*Hu;return new ed(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}ru(sd,od,iu(au,{brighter(e){return new sd(this.h,this.c,this.l+Wu*(e??1),this.opacity)},darker(e){return new sd(this.h,this.c,this.l-Wu*(e??1),this.opacity)},rgb(){return cd(this).rgb()}}));var ld=-.14861,ud=1.78277,dd=-.29227,fd=-.90649,pd=1.97294,md=pd*fd,hd=pd*ud,gd=ud*dd-fd*ld;function _d(e){if(e instanceof yd)return new yd(e.h,e.s,e.l,e.opacity);e instanceof Ou||(e=Eu(e));var t=e.r/255,n=e.g/255,r=e.b/255,i=(gd*r+md*t-hd*n)/(gd+md-hd),a=r-i,o=(pd*(n-i)-dd*a)/fd,s=Math.sqrt(o*o+a*a)/(pd*i*(1-i)),c=s?Math.atan2(o,a)*Uu-120:NaN;return new yd(c<0?c+360:c,s,i,e.opacity)}function vd(e,t,n,r){return arguments.length===1?_d(e):new yd(e,t,n,r??1)}function yd(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}ru(yd,vd,iu(au,{brighter(e){return e=e==null?su:su**+e,new yd(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ou:ou**+e,new yd(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*Hu,t=+this.l,n=isNaN(this.s)?0:this.s*t*(1-t),r=Math.cos(e),i=Math.sin(e);return new Ou(255*(t+n*(ld*r+ud*i)),255*(t+n*(dd*r+fd*i)),255*(t+pd*r*n),this.opacity)}}));function bd(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 xd(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 bd((n-r/t)*t,o,i,a,s)}}function Sd(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 bd((n-r/t)*t,i,a,o,s)}}var Cd=e=>()=>e;function wd(e,t){return function(n){return e+n*t}}function Td(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Ed(e,t){var n=t-e;return n?wd(e,n>180||n<-180?n-360*Math.round(n/360):n):Cd(isNaN(e)?t:e)}function Dd(e){return(e=+e)==1?Od:function(t,n){return n-t?Td(t,n,e):Cd(isNaN(t)?n:t)}}function Od(e,t){var n=t-e;return n?wd(e,n):Cd(isNaN(e)?t:e)}var kd=(function e(t){var n=Dd(t);function r(e,t){var r=n((e=Du(e)).r,(t=Du(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=Od(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 Ad(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=Du(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 jd=Ad(xd),Md=Ad(Sd);function Nd(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 Pd(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Fd(e,t){return(Pd(t)?Nd:Id)(e,t)}function Id(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]=Gd(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 Ld(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function Rd(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function zd(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]=Gd(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var Bd=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Vd=new RegExp(Bd.source,`g`);function Hd(e){return function(){return e}}function Ud(e){return function(t){return e(t)+``}}function Wd(e,t){var n=Bd.lastIndex=Vd.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=Bd.exec(e))&&(i=Vd.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:Rd(r,i)})),n=Vd.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?Ud(c[0].x):Hd(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 Gd(e,t){var n=typeof t,r;return t==null||n===`boolean`?Cd(t):(n===`number`?Rd:n===`string`?(r=Cu(t))?(t=r,kd):Wd:t instanceof Cu?kd:t instanceof Date?Ld:Pd(t)?Nd:Array.isArray(t)?Id:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?zd:Rd)(e,t)}function Kd(e){var t=e.length;return function(n){return e[Math.max(0,Math.min(t-1,Math.floor(n*t)))]}}function qd(e,t){var n=Ed(+e,+t);return function(e){var t=n(e);return t-360*Math.floor(t/360)}}function Jd(e,t){return e=+e,t=+t,function(n){return Math.round(e*(1-n)+t*n)}}var Yd=180/Math.PI,Xd={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Zd(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)*Yd,skewX:Math.atan(c)*Yd,scaleX:o,scaleY:s}}var Qd;function $d(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?Xd:Zd(t.a,t.b,t.c,t.d,t.e,t.f)}function ef(e){return e==null||(Qd||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),Qd.setAttribute(`transform`,e),!(e=Qd.transform.baseVal.consolidate()))?Xd:(e=e.matrix,Zd(e.a,e.b,e.c,e.d,e.e,e.f))}function tf(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:Rd(e,i)},{i:c-2,x:Rd(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:Rd(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:Rd(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:Rd(e,n)},{i:s-2,x:Rd(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 nf=tf($d,`px, `,`px)`,`deg)`),rf=tf(ef,`, `,`)`,`)`),af=1e-12;function of(e){return((e=Math.exp(e))+1/e)/2}function sf(e){return((e=Math.exp(e))-1/e)/2}function cf(e){return((e=Math.exp(2*e))-1)/(e+1)}var lf=(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<af)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=of(y),c=s/(n*g)*(i*cf(t*r+y)-sf(y));return[a+c*d,o+c*f,s*i/of(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 uf(e){return function(t,n){var r=e((t=Lu(t)).h,(n=Lu(n)).h),i=Od(t.s,n.s),a=Od(t.l,n.l),o=Od(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 df=uf(Ed),ff=uf(Od);function pf(e,t){var n=Od((e=$u(e)).l,(t=$u(t)).l),r=Od(e.a,t.a),i=Od(e.b,t.b),a=Od(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 mf(e){return function(t,n){var r=e((t=od(t)).h,(n=od(n)).h),i=Od(t.c,n.c),a=Od(t.l,n.l),o=Od(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 hf=mf(Ed),gf=mf(Od);function _f(e){return(function t(n){n=+n;function r(t,r){var i=e((t=vd(t)).h,(r=vd(r)).h),a=Od(t.s,r.s),o=Od(t.l,r.l),s=Od(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 vf=_f(Ed),yf=_f(Od);function bf(e,t){t===void 0&&(t=e,e=Gd);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 xf(e,t){for(var n=Array(t),r=0;r<t;++r)n[r]=e(r/(t-1));return n}var Sf=r({interpolate:()=>Gd,interpolateArray:()=>Fd,interpolateBasis:()=>xd,interpolateBasisClosed:()=>Sd,interpolateCubehelix:()=>vf,interpolateCubehelixLong:()=>yf,interpolateDate:()=>Ld,interpolateDiscrete:()=>Kd,interpolateHcl:()=>hf,interpolateHclLong:()=>gf,interpolateHsl:()=>df,interpolateHslLong:()=>ff,interpolateHue:()=>qd,interpolateLab:()=>pf,interpolateNumber:()=>Rd,interpolateNumberArray:()=>Nd,interpolateObject:()=>zd,interpolateRgb:()=>kd,interpolateRgbBasis:()=>jd,interpolateRgbBasisClosed:()=>Md,interpolateRound:()=>Jd,interpolateString:()=>Wd,interpolateTransformCss:()=>nf,interpolateTransformSvg:()=>rf,interpolateZoom:()=>lf,piecewise:()=>bf,quantize:()=>xf});function Cf(e){return function(){return e}}function wf(e){return+e}var Tf=[0,1];function Ef(e){return e}function Df(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:Cf(isNaN(t)?NaN:.5)}function Of(e,t){var n;return e>t&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}function kf(e,t,n){var r=e[0],i=e[1],a=t[0],o=t[1];return i<r?(r=Df(i,r),a=n(o,a)):(r=Df(r,i),a=n(a,o)),function(e){return a(r(e))}}function Af(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]=Df(e[o],e[o+1]),a[o]=n(t[o],t[o+1]);return function(t){var n=dn(e,t,1,r)-1;return a[n](i[n](t))}}function jf(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function Mf(){var e=Tf,t=Tf,n=Gd,r,i,a,o=Ef,s,c,l;function u(){var n=Math.min(e.length,t.length);return o!==Ef&&(o=Of(e[0],e[n-1])),s=n>2?Af:kf,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),Rd))(n)))},d.domain=function(t){return arguments.length?(e=Array.from(t,wf),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=Jd,u()},d.clamp=function(e){return arguments.length?(o=e?!0:Ef,u()):o!==Ef},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 Nf(){return Mf()(Ef,Ef)}function Pf(e,t,n,r){var i=Mn(e,t,n),a;switch(r=Yn(r??`,f`),r.type){case`s`:var o=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(a=dr(i,o))&&(r.precision=a),cr(r,o);case``:case`e`:case`g`:case`p`:case`r`:r.precision==null&&!isNaN(a=fr(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=a-(r.type===`e`));break;case`f`:case`%`:r.precision==null&&!isNaN(a=ur(i))&&(r.precision=a-(r.type===`%`)*2);break}return sr(r)}function Ff(e){var t=e.domain;return e.ticks=function(e){var n=t();return An(n[0],n[n.length-1],e??10)},e.tickFormat=function(e,n){var r=t();return Pf(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=jn(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 If(){var e=Nf();return e.copy=function(){return jf(e,If())},$l.apply(e,arguments),Ff(e)}function Lf(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,wf),n):e.slice()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return Lf(e).unknown(t)},e=arguments.length?Array.from(e,wf):[0,1],Ff(n)}function Rf(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 zf(e){return Math.log(e)}function Bf(e){return Math.exp(e)}function Vf(e){return-Math.log(-e)}function Hf(e){return-Math.exp(-e)}function Uf(e){return isFinite(e)?+(`1e`+e):e<0?0:e}function Wf(e){return e===10?Uf:e===Math.E?Math.exp:t=>e**+t}function Gf(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 Kf(e){return(t,n)=>-e(-t,n)}function qf(e){let t=e(zf,Bf),n=t.domain,r=10,i,a;function o(){return i=Gf(r),a=Wf(r),n()[0]<0?(i=Kf(i),a=Kf(a),e(Vf,Hf)):e(zf,Bf),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=An(o,s,p))}else m=An(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=Yn(n)).precision==null&&(n.trim=!0),n=sr(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(Rf(n(),{floor:e=>a(Math.floor(i(e))),ceil:e=>a(Math.ceil(i(e)))})),t}function Jf(){let e=qf(Mf()).domain([1,10]);return e.copy=()=>jf(e,Jf()).base(e.base()),$l.apply(e,arguments),e}function Yf(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function Xf(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Zf(e){var t=1,n=e(Yf(t),Xf(t));return n.constant=function(n){return arguments.length?e(Yf(t=+n),Xf(t)):t},Ff(n)}function Qf(){var e=Zf(Mf());return e.copy=function(){return jf(e,Qf()).constant(e.constant())},$l.apply(e,arguments)}function $f(e){return function(t){return t<0?-((-t)**+e):t**+e}}function ep(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function tp(e){return e<0?-e*e:e*e}function np(e){var t=e(Ef,Ef),n=1;function r(){return n===1?e(Ef,Ef):n===.5?e(ep,tp):e($f(n),$f(1/n))}return t.exponent=function(e){return arguments.length?(n=+e,r()):n},Ff(t)}function rp(){var e=np(Mf());return e.copy=function(){return jf(e,rp()).exponent(e.exponent())},$l.apply(e,arguments),e}function ip(){return rp.apply(null,arguments).exponent(.5)}function ap(){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]=Rn(e,r/i);return a}function a(e){return e==null||isNaN(e=+e)?r:t[dn(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(rn),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 ap().domain(e).range(t).unknown(r)},$l.apply(a,arguments)}function op(){var e=0,t=1,n=1,r=[.5],i=[0,1],a;function o(e){return e!=null&&e<=e?i[dn(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 op().domain([e,t]).range(i).unknown(a)},$l.apply(Ff(o),arguments)}function sp(){var e=[.5],t=[0,1],n,r=1;function i(i){return i!=null&&i<=i?t[dn(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 sp().domain(e).range(t).unknown(n)},$l.apply(i,arguments)}function cp(e){return new Date(e)}function lp(e){return e instanceof Date?+e:+new Date(+e)}function up(e,t,n,r,i,a,o,s,c,l){var u=Nf(),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,lp)):f().map(cp)},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(Rf(n,e)):u},u.copy=function(){return jf(u,up(e,t,n,r,i,a,o,s,c,l))},u}function dp(){return $l.apply(up(ti,ni,Xr,Jr,Nr,kr,Dr,Tr,wr,Ua).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function fp(){return $l.apply(up($r,ei,Zr,Yr,Vr,Ar,Or,Er,wr,Ga).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function pp(){var e=0,t=1,n,r,i,a,o=Ef,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(Gd),l.rangeRound=u(Jd),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 mp(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function hp(){var e=Ff(pp()(Ef));return e.copy=function(){return mp(e,hp())},eu.apply(e,arguments)}function gp(){var e=qf(pp()).domain([1,10]);return e.copy=function(){return mp(e,gp()).base(e.base())},eu.apply(e,arguments)}function _p(){var e=Zf(pp());return e.copy=function(){return mp(e,_p()).constant(e.constant())},eu.apply(e,arguments)}function vp(){var e=np(pp());return e.copy=function(){return mp(e,vp()).exponent(e.exponent())},eu.apply(e,arguments)}function yp(){return vp.apply(null,arguments).exponent(.5)}function bp(){var e=0,t=.5,n=1,r=1,i,a,o,s,c,l=Ef,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=bf(e,[n,r,i]),p):[l(0),l(.5),l(1)]}}return p.range=m(Gd),p.rangeRound=m(Jd),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 xp(){var e=Ff(bp()(Ef));return e.copy=function(){return mp(e,xp())},eu.apply(e,arguments)}function Sp(){var e=qf(bp()).domain([.1,1,10]);return e.copy=function(){return mp(e,Sp()).base(e.base())},eu.apply(e,arguments)}function Cp(){var e=Zf(bp());return e.copy=function(){return mp(e,Cp()).constant(e.constant())},eu.apply(e,arguments)}function wp(){var e=np(bp());return e.copy=function(){return mp(e,wp()).exponent(e.exponent())},eu.apply(e,arguments)}function Tp(){return wp.apply(null,arguments).exponent(.5)}function Ep(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 Dp=Ep(`1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf`),Op=Ep(`7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666`),kp=Ep(`1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666`),Ap=Ep(`4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0`),jp=Ep(`a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928`),Mp=Ep(`fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2`),Np=Ep(`b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc`),Pp=Ep(`e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999`),Fp=Ep(`66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3`),Ip=Ep(`8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f`);function Lp(e,t,n){let r=e-t+n*2;return e?r>0?r:1:0}var Rp=`identity`,zp=`linear`,Bp=`sqrt`,Vp=`symlog`,Hp=`time`,Up=`sequential`,Wp=`diverging`,Gp=`quantile`,Kp=`quantize`,qp=`threshold`,Jp=`ordinal`,Yp=`point`,Xp=`band`,Zp=`bin-ordinal`,Qp=`continuous`,$p=`discrete`,em=`discretizing`,tm=`interpolating`,nm=`temporal`;function rm(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 im(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 am(){let e=nu().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=Lp(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=Vn(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,dn(o,c)-1),d=c===l?u:dn(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 am().domain(t()).range(r).round(o).paddingInner(s).paddingOuter(c).align(l)},u()}function om(e){let t=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,e.copy=function(){return om(t())},e}function sm(){return om(am().paddingInner(1))}var cm=Array.prototype.map;function lm(e){return cm.call(e,et)}var um=Array.prototype.slice;function dm(){let e=[],t=[];function n(n){return n==null||n!==n?void 0:t[(dn(e,n)-1)%t.length]}return n.domain=function(t){return arguments.length?(e=lm(t),n):e.slice()},n.range=function(e){return arguments.length?(t=um.call(e),n):t.slice()},n.tickFormat=function(t,n){return Pf(e[0],$e(e),t??10,n)},n.copy=function(){return dm().domain(n.domain()).range(n.range())},n}var fm=new Map,pm=Symbol(`vega_scale`);function mm(e){return e[pm]=!0,e}function hm(e,t,n){let r=function(){let n=t();return n.invertRange||=n.invert?rm(n):n.invertExtent?im(n):void 0,n.type=e,mm(n)};return r.metadata=Mt(M(n)),r}function L(e,t,n){return arguments.length>1?(fm.set(e,hm(e,t,n)),this):gm(e)?fm.get(e):void 0}L(Rp,Lf),L(zp,If,Qp),L(`log`,Jf,[Qp,`log`]),L(`pow`,rp,Qp),L(Bp,ip,Qp),L(Vp,Qf,Qp),L(Hp,dp,[Qp,nm]),L(`utc`,fp,[Qp,nm]),L(Up,hp,[Qp,tm]),L(`${Up}-${zp}`,hp,[Qp,tm]),L(`${Up}-log`,gp,[Qp,tm,`log`]),L(`${Up}-pow`,vp,[Qp,tm]),L(`${Up}-${Bp}`,yp,[Qp,tm]),L(`${Up}-${Vp}`,_p,[Qp,tm]),L(`${Wp}-${zp}`,xp,[Qp,tm]),L(`${Wp}-log`,Sp,[Qp,tm,`log`]),L(`${Wp}-pow`,wp,[Qp,tm]),L(`${Wp}-${Bp}`,Tp,[Qp,tm]),L(`${Wp}-${Vp}`,Cp,[Qp,tm]),L(Gp,ap,[em,Gp]),L(Kp,op,em),L(qp,sp,em),L(Zp,dm,[$p,em]),L(Jp,nu,$p),L(Xp,am,$p),L(Yp,sm,$p);function gm(e){return fm.has(e)}function _m(e,t){let n=fm.get(e);return n&&n.metadata[t]}function vm(e){return _m(e,Qp)}function ym(e){return _m(e,$p)}function bm(e){return _m(e,em)}function xm(e){return _m(e,`log`)}function Sm(e){return _m(e,tm)}function Cm(e,t){let n=t[0],r=$e(t)-n;return function(t){return e(n+t*r)}}function wm(e,t,n){return bf(Em(t||`rgb`,n),e)}function Tm(e,t){let n=Array(t),r=t+1;for(let i=0;i<t;)n[i]=e(++i/r);return n}function Em(e,t){let n=Sf[Dm(e)];return t!=null&&n&&n.gamma?n.gamma(t):n}function Dm(e){return`interpolate`+e.toLowerCase().split(`-`).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}var Om={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`},km={accent:Op,category10:Dp,category20:`1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5`,category20b:`393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6`,category20c:`3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9`,dark2:kp,observable10:Ap,paired:jp,pastel1:Mp,pastel2:Np,set1:Pp,set2:Fp,set3:Ip,tableau10:`4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac`,tableau20:`4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5`};function Am(e){if(O(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 jm(e,t){for(let n in e)Nm(n,t(e[n]))}var Mm={};jm(km,Am),jm(Om,e=>wm(Am(e)));function Nm(e,t){return e&&=e.toLowerCase(),arguments.length>1?(Mm[e]=t,this):Mm[e]}function Pm(e,t,n){return N(t)&&n!=null&&(t=Math.min(t,~~(Et(e.domain())/n)||1)),Qe(t)&&(t.step,t=t.interval),t}function Fm(e,t,n){var r=e.range(),i=Math.floor(r[0]),a=Math.ceil($e(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],$e(t)];t.length>n&&t.length>=3;)t=t.filter(function(e,t){return!(t%2)});t.length<3&&(t=o)}return t}function Im(e,t){return e.bins?Fm(e,Lm(e.bins,t)):e.ticks?e.ticks(t):e.domain()}function Lm(e,t){var n=e.length,r=~~(n/(t||n));return r<2?e.slice():e.filter(function(e,t){return!(t%r)})}function Rm(e,t,n){var r=e.tickFormat?e.tickFormat(t,n):n?sr(n):String;if(xm(e.type)){var i=Bm(n);r=e.bins?i:zm(r,i)}return r}function zm(e,t){return function(n){return e(n)?t(n):``}}function Bm(e){var t=Yn(e||`,`);if(t.precision==null){switch(t.precision=12,t.type){case`%`:t.precision-=2;break;case`e`:--t.precision;break}return Vm(sr(t),sr(`.1f`)(1)[1])}else return sr(t)}function Vm(e,t){return function(n){var r=e(n),i=r.indexOf(t),a,o;if(i<0)return r;for(a=Hm(r,i),o=a<r.length?r.slice(a):``;--a>i;)if(r[a]!==`0`){++a;break}return r.slice(0,a)+o}}function Hm(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 Um=[],Wm=[];function Gm(e,t){Wm.push({guard:e,Source:t})}function Km(e,t){for(let n of Um)if(n.guard(e))return new n.Source(e,t);for(let n of Wm)if(n.guard(e))return new n.Source(e,t);throw Error(`Cannot figure out the data source type: `+JSON.stringify(e))}var qm=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`,Vn(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
|
|
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(`
|
|
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
|
-
${
|
|
182
|
+
${Hn(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
|
|
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`,`
|
|
185
185
|
let validated = !validator;
|
|
186
186
|
return function accessField(datum) {
|
|
187
187
|
if (!validated) {
|
|
@@ -189,9 +189,9 @@ return groupData;`);return el.set(t,i),i}function Xc(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||dh(t,e)}),[e],t):Ye(e)}function dh(e,t){throw Error(`Invalid field "${t}". Available fields or properties: ${Object.keys(e).join(`, `)}`)}function fh(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=hh(t),r.scaleChannel=((jh(t)&&t.resolutionChannel)??(Xh(e)&&e))||void 0,r.scaleChannel!==void 0&&(r.domainKeyBase=gh({scaleChannel:r.scaleChannel,source:mh(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(z(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(kh(t))try{return r(R(t.field))}catch(e){throw Error(`Invalid field definition: ${e.message}`,{cause:e})}else if(Fh(t))return r(n.createExpression(t.expr));else if(Ah(t))return i(t.datum);else if(Oh(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 ph(e){return e.scaleChannel!==void 0}function mh(e){if(kh(e))return{kind:`field`,value:e.field};if(Fh(e))return{kind:`expr`,value:e.expr};if(Ah(e))return{kind:`datum`,value:e.datum};if(Oh(e))return{kind:`value`,value:e.value};throw Error(`Cannot derive a domain key from channel definition: `+JSON.stringify(e))}function hh(e){let t=mh(e);return t.kind===`datum`||t.kind===`value`?`constant|`+yh(t.value):t.kind+`|`+vh(t)}function gh({scaleChannel:e,source:t,type:n}){if(!e)throw Error(`Cannot build a domain key without a scale channel.`);let r=e+`|`+t.kind+`|`+vh(t);return{domainKeyBase:r,domainKey:n?n+`|`+r:void 0}}function _h(e,t){let{domainKey:n,domainKeyBase:r}=gh({scaleChannel:e.scaleChannel,source:mh(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 vh(e){switch(e.kind){case`field`:case`expr`:return e.value;case`datum`:case`value`:return yh(e.value);default:throw Error(`Unknown domain key source.`)}}function yh(e){return z(e)?`expr:`+e.expr:e===void 0?`undefined`:JSON.stringify(e)}function bh(e,t,n,r){let i,a=yg(!1),o=()=>{if(i)return i;let o=n.findValue(e);if(!o)return a;let s={};if(ig(o)){let n=Object.keys(o.intervals);for(let r of n){let n=t[r];if(kh(n)){s[r]=n.field;continue}else if(n&&`condition`in n){let e=n.condition;if(kh(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=rg({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 xh(e,t,n,r){let i=Ih(t)||Lh(t)?Array.isArray(t.condition)?t.condition:[t.condition]:[],a=[...i,t],o=a.map((t,o)=>{let s=i[o];return{accessor:fh(e,t,r),predicate:s?.param?bh(s.param,n,r,s.empty):Object.assign(yg(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 Sh(e,t){let n={},r=t=>e.getScaleResolution(t)?.getScale();for(let[i,a]of Object.entries(t)){if(!a)continue;let o=i;Ch(o)||(n[o]=Eh(xh(o,a,t,e.paramRuntime),r))}return n}function Ch(e){return e===`key`||e===`search`}function wh(e){return e.branches.map(e=>e.accessor)}function Th(e){return e.branches.find(e=>!e.accessor.constant)?.accessor}function Eh(e,t){if(e.length===1){let n=Dh(e[0].accessor,t);return Object.assign(n,{branches:e})}let n=e.map(e=>e.predicate),r=e.map(e=>Dh(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 Dh(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:yg(!0)}],channelDef:i})}function Oh(e){return e&&`value`in e}function kh(e){return e&&`field`in e}function Ah(e){return e&&`datum`in e}function jh(e){return kh(e)||Ah(e)||Fh(e)||Ph(e)}function Mh(e){if(Lh(e)){let t=e.condition;if(!Array.isArray(t)&&jh(t))return t}else if(jh(e))return e}function Nh(e,t){let n=e.mark.encoding[t];if(Array.isArray(n))throw Error(`Not a channel def with scale!`);{let e=Mh(n);if(e)return e}throw Error(`Not a channel def with scale!`)}function Ph(e){return e&&`chrom`in e}function Fh(e){return e&&`expr`in e}function Ih(e){return(kh(e)||Ah(e))&&`condition`in e}function Lh(e){return Oh(e)&&`condition`in e}var Rh=[`x`,`y`],zh=[`x2`,`y2`],Bh=[...Rh,...zh];function Vh(e){return Rh.includes(e)}function Hh(e){return Bh.includes(e)}var Uh={x:`x2`,y:`y2`},Wh=Object.fromEntries(Object.entries(Uh).map(e=>[e[1],e[0]]));function Gh(e){return e in Wh}function Kh(e){let t=Uh[e];if(t)return t;throw Error(`${e} has no secondary channel!`)}function qh(e){return Wh[e]??e}function Jh(e){return[`color`,`fill`,`stroke`].includes(qh(e))}function Yh(e){return[`shape`].includes(e)}function Xh(e){return[`x`,`y`,`x2`,`y2`,`color`,`fill`,`stroke`,`opacity`,`fillOpacity`,`strokeOpacity`,`strokeWidth`,`size`,`shape`,`angle`,`dx`,`dy`,`sample`].includes(e)}function Zh(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 Qh(e){if(!Yh(e))throw Error(`Not a discrete channel: `+e);let t=new Map(Zh(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 $h(e){return{type:`single`,datum:e,uniqueId:e?.[sh]}}function eg(e){return e??=[],{type:`multi`,data:new Map(e.map(e=>[e[sh],e]))}}function tg(e){return{type:`interval`,intervals:Object.fromEntries(e.map(e=>[e,null]))}}function ng(e,{add:t,remove:n,toggle:r}){let i=e.data;for(let e of t??[])i.set(e[sh],e);for(let e of n??[])i.delete(e[sh]);for(let e of r??[]){let t=e[sh];i.has(t)?i.delete(t):i.set(t,e)}return{type:`multi`,data:i}}function rg(e,t){let n=!!(e.empty??!0),r=gg(e.param),i=e.fields??{};if(ag(t))return`${r}.uniqueId == null ? ${n} : ${r}.uniqueId === datum[${JSON.stringify(sh)}]`;if(og(t))return`${r}.data.size == 0 ? ${n} : mapHasKey(${r}.data, datum[${JSON.stringify(sh)}])`;if(ig(t)){let a=Object.keys(t.intervals),o=Object.keys(i).filter(Vh);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=Kh(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 ig(e){return e.type===`interval`}function ag(e){return e.type===`single`}function og(e){return e.type===`multi`}function sg(e){let t=typeof e==`string`?{type:e}:{...e};return t.on=t.on?fg(t.on):cg(t)?{type:`click`}:void 0,t.clear=t.clear===!1?void 0:t.clear===!0||t.clear==null?{type:`dblclick`}:fg(t.clear),cg(t)&&t.on.type===`click`&&(t.toggle=!0),t}function cg(e){return e&&e.type==`point`}function lg(e){return e&&e.type==`interval`}function ug(e){return Object.values(e.intervals).some(e=>e&&e.length===2)}function dg(e,t){return Object.entries(e.intervals).every(([e,n])=>(e==`x`||e==`y`)&&n&&n[0]<=t[e]&&n[1]>=t[e])}function fg(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 z(e){return typeof e==`object`&&!!e&&`expr`in e&&P(e.expr)}function pg(e){if(z(e))throw Error(`ExprRef `+JSON.stringify(e)+` not allowed here. Expected a scalar value.`);return e}function mg(e){return(`expr`in e||`bind`in e)&&!(`select`in e)}function hg(e){return!(`expr`in e||`bind`in e)&&`select`in e}function gg(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 _g(e,t,n){if(`select`in e){let t=sg(e.select);if(cg(t))return t.toggle?eg():$h(null);if(lg(t)){if(!t.encodings)throw Error(`Interval selection "`+e.name+`" must have encodings defined!`);return tg(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 vg(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(z(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 yg(e){return Object.assign(()=>e,{subscribe:()=>()=>void 0,invalidate:()=>void 0,identifier:()=>`constant`,fields:[],globals:[],code:JSON.stringify(e)})}function bg(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 xg=class extends Qm{#e=new AbortController;#t=[0,0];#n=[0,0];#r=0;params;setupDebouncing(e){let t=()=>pg(e.debounce),n=e.debounceMode;if(n==`domain`)this.onDomainChanged=bg(this.onDomainChanged.bind(this),t,!1);else if(n==`window`)this.loadInterval=bg(this.loadInterval.bind(this),t,!1);else throw Error(`Invalid debounceMode: `+n)}onDomainChanged(e){this.#n=e;let t=pg(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))}},Sg=n((()=>{})),Cg,wg=n((()=>{Cg=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 Tg(e){return(typeof e==`object`&&e&&`message`in e?e.message:`${e}`).replace(/\.$/,``)}var Eg,Dg=n((()=>{Eg=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(`${Tg(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(){}}})),Og=r({BlobFile:()=>Cg,LocalFile:()=>kg,RemoteFile:()=>Eg}),kg,Ag=n((()=>{Sg(),wg(),Dg(),kg=class{readFile(){throw Error(`unimplemented`)}read(){throw Error(`unimplemented`)}close(){throw Error(`unimplemented`)}}}));function jg(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)*Ng+(n>>>0)}var Mg,Ng,Pg=n((()=>{Mg=65536,Ng=Mg*Mg}));function Fg(e,t,n){let r=t[Ig],i=n?n[Ig]:1/0;return r<=e&&i>e?0:r<e?-1:1}var Ig,Lg,Rg=n((()=>{Pg(),Ig=1,Lg=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=jg(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=jg(r,n*16),i=jg(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=Fg(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=Fg(t,r[s],r[s+1]);i.push(r[s]);let l=s+1;for(;l<r.length&&(i.push(r[l]),!(r[l][Ig]>=n));l+=1);return i[i.length-1][Ig]<n&&i.push([]),i}}})),zg=n((()=>{}));function Bg(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Vg(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)Bg(n,r)&&(e[r]=n[r])}}return e}function Hg(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)}var Ug,Wg,Gg,Kg,qg,Jg,Yg,Xg,Zg=n((()=>{Ug={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)}},Wg={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)}},Gg=()=>{let e=typeof Uint8Array<`u`&&typeof Uint16Array<`u`&&typeof Int32Array<`u`;return Gg=()=>e,e},Kg=(e,t,n,r,i)=>(Kg=Gg()?Ug.arraySet:Wg.arraySet,Kg(e,t,n,r,i)),qg=e=>(qg=Gg()?Ug.flattenChunks:Wg.flattenChunks,qg(e)),Jg=e=>(Jg=Gg()?Ug.Buf8:Wg.Buf8,Jg(e)),Yg=e=>(Yg=Gg()?Ug.Buf16:Wg.Buf16,Yg(e)),Xg=e=>(Xg=Gg()?Ug.Buf32:Wg.Buf32,Xg(e))}));function Qg(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 $g(e,t){if(t<65534&&(e.subarray&&i_()||!e.subarray&&r_()))return String.fromCharCode.apply(null,Hg(e,t));for(var n=``,r=0;r<t;r++)n+=String.fromCharCode(e[r]);return n}function e_(e){for(var t=new Uint8Array(e.length),n=0,r=t.length;n<r;n++)t[n]=e.charCodeAt(n);return t}function t_(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=a_(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 $g(s,r)}function n_(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+a_(e[n])>t?n:t}var r_,i_,a_,o_=n((()=>{Zg(),r_=function(){let e=!0;try{String.fromCharCode.apply(null,[0])}catch{e=!1}return r_=()=>e,e},i_=function(){let e=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{e=!1}return i_=()=>e,e},a_=function(e){for(var t=Jg(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,a_=e=>t[e],t[e]}}));function s_(){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 c_=n((()=>{}));function l_(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 u_=n((()=>{}));function d_(){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 f_(e,t,n,r){var i=p_(),a=r+n;e^=-1;for(var o=r;o<a;o++)e=e>>>8^i[(e^t[o])&255];return e^-1}var p_,m_=n((()=>{p_=function(){let e=d_();return p_=()=>e,e}}));function h_(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=g_;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=g_;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=g_;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=__;break top}else{e.msg=`invalid literal/length code`,n.mode=g_;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 g_,__,v_=n((()=>{g_=30,__=12}));function y_(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=Yg(b_+1),te=Yg(b_+1),ne=null,re=0,ie,ae,oe;for(l=0;l<=b_;l++)ee[l]=0;for(u=0;u<r;u++)ee[t[n+u]]++;for(p=c,f=b_;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<=b_;l++)if(g<<=1,g-=ee[l],g<0)return-1;if(g>0&&(e===C_||f!==1))return-1;for(te[1]=0,l=1;l<b_;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===C_?(w=ne=o,E=19):e===w_?(w=E_,T-=257,ne=D_,re-=257,E=256):(w=O_,ne=k_,E=-1),v=0,u=0,l=d,C=a,m=p,h=0,x=-1,_=1<<p,S=_-1,e===w_&&_>x_||e===T_&&_>S_)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===w_&&_>x_||e===T_&&_>S_)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 b_,x_,S_,C_,w_,T_,E_,D_,O_,k_,A_=n((()=>{Zg(),b_=15,x_=852,S_=592,C_=0,w_=1,T_=2,E_=[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],D_=[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],O_=[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],k_=[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 j_(e){return(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24)}function M_(){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=Yg(320),this.work=Yg(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function N_(e){var t;return!e||!e.state?Q_:(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=``,t.wrap&&(e.adler=t.wrap&1),t.mode=rv,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=Xg(Pv),t.distcode=t.distdyn=Xg(Fv),t.sane=1,t.back=-1,Y_)}function P_(e){var t;return!e||!e.state?Q_:(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,N_(e))}function F_(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))?Q_:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,P_(e))}function I_(e,t){var n,r;return e?(r=new M_,e.state=r,r.window=null,n=F_(e,t),n!==Y_&&(e.state=null),n):Q_}function L_(e){if(Iv){var t;for(Lv=Xg(512),Rv=Xg(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(y_(W_,e.lens,0,288,Lv,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;y_(G_,e.lens,0,32,Rv,0,e.work,{bits:5}),Iv=!1}e.lencode=Lv,e.lenbits=9,e.distcode=Rv,e.distbits=5}function R_(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=Jg(a.wsize)),r>=a.wsize?(Kg(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),Kg(a.window,t,n-r,i,a.wnext),r-=i,r?(Kg(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 z_(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=Jg(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 Q_;n=e.state,n.mode===mv&&(n.mode=hv),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=Y_;inf_leave:for(;;)switch(n.mode){case rv:if(n.wrap===0){n.mode=hv;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=f_(n.check,T,2,0),l=0,u=0,n.mode=iv;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=B;break}if((l&15)!==nv){e.msg=`unknown compression method`,n.mode=B;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=B;break}n.dmax=1<<C,e.adler=n.check=1,n.mode=l&512?fv:mv,l=0,u=0;break;case iv:for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.flags=l,(n.flags&255)!==nv){e.msg=`unknown compression method`,n.mode=B;break}if(n.flags&57344){e.msg=`unknown header flags set`,n.mode=B;break}n.head&&(n.head.text=l>>8&1),n.flags&512&&(T[0]=l&255,T[1]=l>>>8&255,n.check=f_(n.check,T,2,0)),l=0,u=0,n.mode=av;case av: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=f_(n.check,T,4,0)),l=0,u=0,n.mode=ov;case ov: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=f_(n.check,T,2,0)),l=0,u=0,n.mode=sv;case sv: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=f_(n.check,T,2,0)),l=0,u=0}else n.head&&(n.head.extra=null);n.mode=cv;case cv: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)),Kg(n.head.extra,r,a,p,C)),n.flags&512&&(n.check=f_(n.check,r,p,a)),s-=p,a+=p,n.length-=p),n.length))break inf_leave;n.length=0,n.mode=lv;case lv: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=f_(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=uv;case uv: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=f_(n.check,r,p,a)),s-=p,a+=p,C)break inf_leave}else n.head&&(n.head.comment=null);n.mode=dv;case dv: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=B;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=mv;break;case fv:for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}e.adler=n.check=j_(l),l=0,u=0,n.mode=pv;case pv: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,Z_;e.adler=n.check=1,n.mode=mv;case mv:if(t===q_||t===J_)break inf_leave;case hv:if(n.last){l>>>=u&7,u-=u&7,n.mode=kv;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=gv;break;case 1:if(L_(n),n.mode=Sv,t===J_){l>>>=2,u-=2;break inf_leave}break;case 2:n.mode=yv;break;case 3:e.msg=`invalid block type`,n.mode=B}l>>>=2,u-=2;break;case gv: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=B;break}if(n.length=l&65535,l=0,u=0,n.mode=_v,t===J_)break inf_leave;case _v:n.mode=vv;case vv:if(p=n.length,p){if(p>s&&(p=s),p>c&&(p=c),p===0)break inf_leave;Kg(i,r,a,p,o),s-=p,a+=p,c-=p,o+=p,n.length-=p;break}n.mode=mv;break;case yv: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=B;break}n.have=0,n.mode=bv;case bv: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=y_(U_,n.lens,0,19,n.lencode,0,n.work,E),n.lenbits=E.bits,w){e.msg=`invalid code lengths set`,n.mode=B;break}n.have=0,n.mode=xv;case xv: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=B;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=B;break}for(;p--;)n.lens[n.have++]=C}}if(n.mode===B)break;if(n.lens[256]===0){e.msg=`invalid code -- missing end-of-block`,n.mode=B;break}if(n.lenbits=9,E={bits:n.lenbits},w=y_(W_,n.lens,0,n.nlen,n.lencode,0,n.work,E),n.lenbits=E.bits,w){e.msg=`invalid literal/lengths set`,n.mode=B;break}if(n.distbits=6,n.distcode=n.distdyn,E={bits:n.distbits},w=y_(G_,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,E),n.distbits=E.bits,w){e.msg=`invalid distances set`,n.mode=B;break}if(n.mode=Sv,t===J_)break inf_leave;case Sv:n.mode=Cv;case Cv: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,h_(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===mv&&(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=Ov;break}if(v&32){n.back=-1,n.mode=mv;break}if(v&64){e.msg=`invalid literal/length code`,n.mode=B;break}n.extra=v&15,n.mode=wv;case wv: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=Tv;case Tv: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=B;break}n.offset=y,n.extra=v&15,n.mode=Ev;case Ev: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=B;break}n.mode=Dv;case Dv: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=B;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=Cv);break;case Ov:if(c===0)break inf_leave;i[o++]=n.length,c--,n.mode=Cv;break;case kv: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?f_(n.check,i,f,o-f):l_(n.check,i,f,o-f)),f=c,(n.flags?l:j_(l))!==n.check){e.msg=`incorrect data check`,n.mode=B;break}l=0,u=0}n.mode=Av;case Av: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=B;break}l=0,u=0}n.mode=jv;case jv:w=X_;break inf_leave;case B:w=$_;break inf_leave;case Mv:return ev;case Nv:default:return Q_}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<B&&(n.mode<kv||t!==K_))&&R_(e,e.output,e.next_out,f-e.avail_out)?(n.mode=Mv,ev):(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?f_(n.check,i,f,e.next_out-f):l_(n.check,i,f,e.next_out-f)),e.data_type=n.bits+(n.last?64:0)+(n.mode===mv?128:0)+(n.mode===Sv||n.mode===_v?256:0),(d===0&&f===0||t===K_)&&w===Y_&&(w=tv),w)}function B_(e){if(!e||!e.state)return Q_;var t=e.state;return t.window&&=null,e.state=null,Y_}function V_(e,t){var n;return!e||!e.state||(n=e.state,!(n.wrap&2))?Q_:(n.head=t,t.done=!1,Y_)}function H_(e,t){var n=t.length,r,i,a;return!e||!e.state||(r=e.state,r.wrap!==0&&r.mode!==pv)?Q_:r.mode===pv&&(i=1,i=l_(i,t,n,0),i!==r.check)?$_:(a=R_(e,t,n,n),a?(r.mode=Mv,ev):(r.havedict=1,Y_))}var 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,jv,B,Mv,Nv,Pv,Fv,Iv,Lv,Rv,zv=n((()=>{u_(),m_(),v_(),A_(),Zg(),U_=0,W_=1,G_=2,K_=4,q_=5,J_=6,Y_=0,X_=1,Z_=2,Q_=-2,$_=-3,ev=-4,tv=-5,nv=8,rv=1,iv=2,av=3,ov=4,sv=5,cv=6,lv=7,uv=8,dv=9,fv=10,pv=11,mv=12,hv=13,gv=14,_v=15,vv=16,yv=17,bv=18,xv=19,Sv=20,Cv=21,wv=22,Tv=23,Ev=24,Dv=25,Ov=26,kv=27,Av=28,jv=29,B=30,Mv=31,Nv=32,Pv=852,Fv=592,Iv=!0})),Bv,Vv=n((()=>{Bv={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 Hv(){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 Uv=n((()=>{}));function Wv(e,t){var n=new Kv(t);if(n.push(e,!0),n.err)throw n.msg||Bv[n.err];return n.result}var Gv,Kv,qv,Jv=n((()=>{Zg(),o_(),zg(),c_(),zv(),Vv(),Uv(),Gv=Object.prototype.toString,Kv=class e{constructor(t){if(!(this instanceof e))return new e(t);this.options=Vg({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 Hv,this.strm.avail_out=0;var r=I_(this.strm,n.windowBits);if(r!==0||(this.header=new s_,V_(this.strm,this.header),n.dictionary&&(typeof n.dictionary==`string`?n.dictionary=Qg(n.dictionary):Gv.call(n.dictionary)===`[object ArrayBuffer]`&&(n.dictionary=new Uint8Array(n.dictionary)),n.raw&&(r=H_(this.strm,n.dictionary),r!==0))))throw Error(Bv[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=e_(e):Gv.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=Jg(r),n.next_out=0,n.avail_out=r),a=z_(n,0),a===2&&i&&(u=typeof i==`string`?Qg(i):Gv.call(i)===`[object ArrayBuffer]`?new Uint8Array(i):i,a=H_(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=n_(n.output,n.next_out),c=n.next_out-s,l=t_(n.output,s),n.next_out=c,n.avail_out=r-c,c&&Kg(n.output,n.output,s,c,0),this.onData(l)):this.onData(Hg(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=B_(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=qg(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg}},qv=Wv})),Yv=n((()=>{})),Xv=n((()=>{zg(),Jv(),Yv()}));function Zv(e){try{let a=V.__wbindgen_add_to_stack_pointer(-16),o=dy(e,V.__wbindgen_export2),s=Ny;V.decompress_all(a,o,s);var t=oy().getInt32(a+0,!0),n=oy().getInt32(a+4,!0),r=oy().getInt32(a+8,!0);if(oy().getInt32(a+12,!0))throw fy(r);var i=ay(t,n).slice();return V.__wbindgen_export(t,n*1,1),i}finally{V.__wbindgen_add_to_stack_pointer(16)}}function Qv(e){try{let r=V.__wbindgen_add_to_stack_pointer(-16),i=dy(e,V.__wbindgen_export2),a=Ny;V.decompress_block(r,i,a);var t=oy().getInt32(r+0,!0),n=oy().getInt32(r+4,!0);if(oy().getInt32(r+8,!0))throw fy(n);return Sy.__wrap(t)}finally{V.__wbindgen_add_to_stack_pointer(16)}}function $v(e,t,n,r,i){try{let s=V.__wbindgen_add_to_stack_pointer(-16),c=dy(e,V.__wbindgen_export2),l=Ny;V.decompress_chunk_slice(s,c,l,t,n,r,i);var a=oy().getInt32(s+0,!0),o=oy().getInt32(s+4,!0);if(oy().getInt32(s+8,!0))throw fy(o);return xy.__wrap(a)}finally{V.__wbindgen_add_to_stack_pointer(16)}}function ey(e,t){return ny(Error(cy(e,t)))}function ty(e,t){throw Error(cy(e,t))}function ny(e){ky===Oy.length&&Oy.push(Oy.length+1);let t=ky;return ky=Oy[t],Oy[t]=e,t}function ry(e){e<132||(Oy[e]=ky,ky=e)}function iy(e,t){return e>>>=0,sy().subarray(e/8,e/8+t)}function ay(e,t){return e>>>=0,ly().subarray(e/1,e/1+t)}function oy(){return(Ty===null||Ty.buffer.detached===!0||Ty.buffer.detached===void 0&&Ty.buffer!==V.memory.buffer)&&(Ty=new DataView(V.memory.buffer)),Ty}function sy(){return(Ey===null||Ey.byteLength===0)&&(Ey=new Float64Array(V.memory.buffer)),Ey}function cy(e,t){return e>>>=0,py(e,t)}function ly(){return(Dy===null||Dy.byteLength===0)&&(Dy=new Uint8Array(V.memory.buffer)),Dy}function uy(e){return Oy[e]}function dy(e,t){let n=t(e.length*1,1)>>>0;return ly().set(e,n/1),Ny=e.length,n}function fy(e){let t=uy(e);return ry(e),t}function py(e,t){return My+=t,My>=jy&&(Ay=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),Ay.decode(),My=t),Ay.decode(ly().subarray(e,e+t))}function my(e){V=e}async function hy(){return Py||(Fy||=(async()=>{let e=await(await fetch(by)).arrayBuffer(),{instance:t}=await WebAssembly.instantiate(e,{"./bgzf_wasm_bg.js":yy});return Py=t.exports,my(Py),Py})(),Fy)}async function gy(e){return await hy(),Zv(e)}async function _y(e,t,n,r,i){await hy();let a=$v(e,t,n,r,i),o=a.buffer,s=[...a.cpositions],c=[...a.dpositions];return a.free(),{buffer:o,cpositions:s,dpositions:c}}var vy,yy,by,xy,Sy,Cy,wy,Ty,Ey,Dy,Oy,ky,Ay,jy,My,Ny,V,Py,Fy,Iy=n((()=>{vy={},vy.d=(e,t)=>{for(var n in t)vy.o(t,n)&&!vy.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},vy.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),vy.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})},yy={},vy.r(yy),vy.d(yy,{ChunkSliceResult:()=>xy,DecompressResult:()=>Sy,__wbg_Error_8c4e43fe74559d73:()=>ey,__wbg___wbindgen_throw_be289d5034ed271b:()=>ty,__wbg_set_wasm:()=>my,decompress_all:()=>Zv,decompress_block:()=>Qv,decompress_chunk_slice:()=>$v}),by=`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`,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();V.__wbg_chunksliceresult_free(e,0)}get buffer(){try{let r=V.__wbindgen_add_to_stack_pointer(-16);V.chunksliceresult_buffer(r,this.__wbg_ptr);var e=oy().getInt32(r+0,!0),t=oy().getInt32(r+4,!0),n=ay(e,t).slice();return V.__wbindgen_export(e,t*1,1),n}finally{V.__wbindgen_add_to_stack_pointer(16)}}get cpositions(){try{let r=V.__wbindgen_add_to_stack_pointer(-16);V.chunksliceresult_cpositions(r,this.__wbg_ptr);var e=oy().getInt32(r+0,!0),t=oy().getInt32(r+4,!0),n=iy(e,t).slice();return V.__wbindgen_export(e,t*8,8),n}finally{V.__wbindgen_add_to_stack_pointer(16)}}get dpositions(){try{let r=V.__wbindgen_add_to_stack_pointer(-16);V.chunksliceresult_dpositions(r,this.__wbg_ptr);var e=oy().getInt32(r+0,!0),t=oy().getInt32(r+4,!0),n=iy(e,t).slice();return V.__wbindgen_export(e,t*8,8),n}finally{V.__wbindgen_add_to_stack_pointer(16)}}},Symbol.dispose&&(xy.prototype[Symbol.dispose]=xy.prototype.free),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();V.__wbg_decompressresult_free(e,0)}get bytes_read(){return V.decompressresult_bytes_read(this.__wbg_ptr)>>>0}get data(){try{let r=V.__wbindgen_add_to_stack_pointer(-16);V.decompressresult_data(r,this.__wbg_ptr);var e=oy().getInt32(r+0,!0),t=oy().getInt32(r+4,!0),n=ay(e,t).slice();return V.__wbindgen_export(e,t*1,1),n}finally{V.__wbindgen_add_to_stack_pointer(16)}}},Symbol.dispose&&(Sy.prototype[Symbol.dispose]=Sy.prototype.free),Cy=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>V.__wbg_chunksliceresult_free(e>>>0,1)),wy=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>V.__wbg_decompressresult_free(e>>>0,1)),Ty=null,Ey=null,Dy=null,Oy=Array(128).fill(void 0),Oy.push(void 0,null,!0,!1),ky=Oy.length,Ay=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),Ay.decode(),jy=2146435072,My=0,Ny=0,Py=null,Fy=null}));function Ly(e){return e.length>=2&&e[0]===31&&e[1]===139}async function Ry(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 qv(e,void 0)}async function zy(e){try{return await gy(e)}catch(t){if(/invalid bgzf header/.exec(`${t}`)){if(Ly(e))return Ry(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 By(e,t,n){try{let{minv:n,maxv:r}=t,i=await _y(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 Vy=n((()=>{Xv(),Iy()}));function Hy(e){let t=0;for(let n of e)t+=n.length;return t}function Uy(e,t){let n=new Uint8Array(t??Hy(e)),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var Wy=n((()=>{})),Gy,Ky=n((()=>{Rg(),Vy(),Wy(),Gy=class{filehandle;gzi;constructor({filehandle:e,gziFilehandle:t}){this.filehandle=e,this.gzi=new Lg({filehandle:t})}async _readAndUncompressBlock(e,t){let n=t;n||=(await this.filehandle.stat()).size;let r=n-e;return zy(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 Uy(r)}}})),qy=n((()=>{Ky(),Vy()}));function Jy(e,t,n,r){return e+t*Math.floor(r/n)+r%n}async function Yy(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
|
|
194
|
-
`),[r,...i]=t.split(` `),a=n.join(``).replace(/\s/g,``);return{id:r,description:i.join(` `),sequence:a}})}var nb,rb=n((()=>{Ag(),$y(),Zy(),nb=class{constructor({fasta:e,path:t}){if(e)this.fasta=e;else if(t)this.fasta=new kg(t);else throw Error(`Need to pass fasta or path`);this.data=this.fasta.readFile().then(e=>tb(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)}}})),ib=class extends xg{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(()=>(rb(),eb)),Promise.resolve().then(()=>(Ag(),Og))]).then(([{IndexedFasta:t},{RemoteFile:n}])=>{let r=e=>new n(ih(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 ab(e){return e?.type==`indexedFasta`}Gm(ab,ib);function ob(e,t,n){let r=Number(!!n),i=Number(!n);return BigInt(e.getInt32(t,n)*i+e.getInt32(t+4,n)*r)<<cb|BigInt(e.getUint32(t,n)*r+e.getUint32(t+4,n)*i)}function sb(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)<<cb|BigInt(r*a+i*o)}var cb,lb=n((()=>{cb=BigInt(32)})),ub=n((()=>{lb(),`getBigInt64`in DataView||(DataView.prototype.getBigInt64=function(e,t){return ob(this,e,t)}),`getBigUint64`in DataView||(DataView.prototype.getBigUint64=function(e,t){return sb(this,e,t)})})),db,fb,pb=n((()=>{db=class{},fb=class{constructor(){this.signals=new Set,this.abortController=new AbortController}addSignal(e=new db){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()}}})),mb,hb=n((()=>{mb=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)}}})),gb,_b=n((()=>{pb(),hb(),gb=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 fb,a=new mb;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}}})),vb=n((()=>{_b()})),yb,H,U,bb,W,xb,Sb,Cb,wb,Tb,Eb,Db,Ob,kb,Ab,jb,Mb,Nb,Pb=n((()=>{yb=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},H=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)},Nb=class extends Map{constructor(e={}){if(super(),U.add(this),bb.set(this,0),W.set(this,new Map),xb.set(this,new Map),Sb.set(this,void 0),Cb.set(this,void 0),wb.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");yb(this,Sb,e.maxSize,`f`),yb(this,Cb,e.maxAge||1/0,`f`),yb(this,wb,e.onEviction,`f`)}get __oldCache(){return H(this,xb,`f`)}get(e){if(H(this,W,`f`).has(e)){let t=H(this,W,`f`).get(e);return H(this,U,`m`,Ob).call(this,e,t)}if(H(this,xb,`f`).has(e)){let t=H(this,xb,`f`).get(e);if(!H(this,U,`m`,Eb).call(this,e,t))return H(this,U,`m`,jb).call(this,e,t),t.value}}set(e,t,{maxAge:n=H(this,Cb,`f`)}={}){let r=typeof n==`number`&&n!==1/0?Date.now()+n:void 0;return H(this,W,`f`).has(e)?H(this,W,`f`).set(e,{value:t,expiry:r}):H(this,U,`m`,Ab).call(this,e,{value:t,expiry:r}),this}has(e){return H(this,W,`f`).has(e)?!H(this,U,`m`,Eb).call(this,e,H(this,W,`f`).get(e)):H(this,xb,`f`).has(e)?!H(this,U,`m`,Eb).call(this,e,H(this,xb,`f`).get(e)):!1}peek(e){if(H(this,W,`f`).has(e))return H(this,U,`m`,kb).call(this,e,H(this,W,`f`));if(H(this,xb,`f`).has(e))return H(this,U,`m`,kb).call(this,e,H(this,xb,`f`))}expiresIn(e){let t=H(this,W,`f`).get(e)??H(this,xb,`f`).get(e);if(t)return t.expiry?t.expiry-Date.now():1/0}delete(e){var t;let n=H(this,W,`f`).delete(e);return n&&yb(this,bb,(t=H(this,bb,`f`),t--,t),`f`),H(this,xb,`f`).delete(e)||n}clear(){H(this,W,`f`).clear(),H(this,xb,`f`).clear(),yb(this,bb,0,`f`)}resize(e){if(!(e&&e>0))throw TypeError("`maxSize` must be a number greater than 0");let t=[...H(this,U,`m`,Mb).call(this)],n=t.length-e;n<0?(yb(this,W,new Map(t),`f`),yb(this,xb,new Map,`f`),yb(this,bb,t.length,`f`)):(n>0&&H(this,U,`m`,Tb).call(this,t.slice(0,n)),yb(this,xb,new Map(t.slice(n)),`f`),yb(this,W,new Map,`f`),yb(this,bb,0,`f`)),yb(this,Sb,e,`f`)}evict(e=1){let t=e;if(!t||t<=0)return;let n=[...H(this,U,`m`,Mb).call(this)],r=Math.trunc(Math.min(t,Math.max(n.length-1,0)));r<=0||(H(this,U,`m`,Tb).call(this,n.slice(0,r)),yb(this,xb,new Map(n.slice(r)),`f`),yb(this,W,new Map,`f`),yb(this,bb,0,`f`))}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[(bb=new WeakMap,W=new WeakMap,xb=new WeakMap,Sb=new WeakMap,Cb=new WeakMap,wb=new WeakMap,U=new WeakSet,Tb=function(e){if(typeof H(this,wb,`f`)==`function`)for(let[t,n]of e)H(this,wb,`f`).call(this,t,n.value)},Eb=function(e,t){return typeof t.expiry==`number`&&t.expiry<=Date.now()?(typeof H(this,wb,`f`)==`function`&&H(this,wb,`f`).call(this,e,t.value),this.delete(e)):!1},Db=function(e,t){if(!H(this,U,`m`,Eb).call(this,e,t))return t.value},Ob=function(e,t){return t.expiry?H(this,U,`m`,Db).call(this,e,t):t.value},kb=function(e,t){let n=t.get(e);return H(this,U,`m`,Ob).call(this,e,n)},Ab=function(e,t){var n;H(this,W,`f`).set(e,t),yb(this,bb,(n=H(this,bb,`f`),n++,n),`f`),H(this,bb,`f`)>=H(this,Sb,`f`)&&(yb(this,bb,0,`f`),H(this,U,`m`,Tb).call(this,H(this,xb,`f`)),yb(this,xb,H(this,W,`f`),`f`),yb(this,W,new Map,`f`))},jb=function(e,t){H(this,xb,`f`).delete(e),H(this,U,`m`,Ab).call(this,e,t)},Mb=function*(){for(let e of H(this,xb,`f`)){let[t,n]=e;H(this,W,`f`).has(t)||H(this,U,`m`,Eb).call(this,t,n)||(yield e)}for(let e of H(this,W,`f`)){let[t,n]=e;H(this,U,`m`,Eb).call(this,t,n)||(yield e)}},Symbol.iterator)](){for(let e of H(this,W,`f`)){let[t,n]=e;H(this,U,`m`,Eb).call(this,t,n)||(yield[t,n.value])}for(let e of H(this,xb,`f`)){let[t,n]=e;H(this,W,`f`).has(t)||H(this,U,`m`,Eb).call(this,t,n)||(yield[t,n.value])}}*entriesDescending(){let e=[...H(this,W,`f`)];for(let t=e.length-1;t>=0;--t){let[n,r]=e[t];H(this,U,`m`,Eb).call(this,n,r)||(yield[n,r.value])}e=[...H(this,xb,`f`)];for(let t=e.length-1;t>=0;--t){let[n,r]=e[t];H(this,W,`f`).has(n)||H(this,U,`m`,Eb).call(this,n,r)||(yield[n,r.value])}}*entriesAscending(){for(let[e,t]of H(this,U,`m`,Mb).call(this))yield[e,t.value]}get size(){if(!H(this,bb,`f`))return H(this,xb,`f`).size;let e=0;for(let t of H(this,xb,`f`).keys())H(this,W,`f`).has(t)||e++;return Math.min(H(this,bb,`f`)+e,H(this,Sb,`f`))}get maxSize(){return H(this,Sb,`f`)}get maxAge(){return H(this,Cb,`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 Fb(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 Ib=n((()=>{}));function Lb(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=G().getInt32(u+0,!0),s=G().getInt32(u+4,!0),c=G().getInt32(u+8,!0);if(G().getInt32(u+12,!0))throw ex(c);var l=qb(o,s).slice();return K.__wbindgen_export2(o,s*1,1),l}finally{K.__wbindgen_add_to_stack_pointer(16)}}function Rb(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=G().getInt32(d+0,!0),c=G().getInt32(d+4,!0),l=G().getInt32(d+8,!0);if(G().getInt32(d+12,!0))throw ex(l);var u=qb(s,c).slice();return K.__wbindgen_export2(s,c*1,1),u}finally{K.__wbindgen_add_to_stack_pointer(16)}}function zb(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=G().getInt32(o+0,!0),r=G().getInt32(o+4,!0),i=G().getInt32(o+8,!0);if(G().getInt32(o+12,!0))throw ex(i);var a=qb(n,r).slice();return K.__wbindgen_export2(n,r*1,1),a}finally{K.__wbindgen_add_to_stack_pointer(16)}}function Bb(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=G().getInt32(c+0,!0),a=G().getInt32(c+4,!0),o=G().getInt32(c+8,!0);if(G().getInt32(c+12,!0))throw ex(o);var s=qb(i,a).slice();return K.__wbindgen_export2(i,a*1,1),s}finally{K.__wbindgen_add_to_stack_pointer(16)}}function Vb(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=G().getInt32(a+0,!0),n=G().getInt32(a+4,!0),r=G().getInt32(a+8,!0);if(G().getInt32(a+12,!0))throw ex(r);var i=qb(t,n).slice();return K.__wbindgen_export2(t,n*1,1),i}finally{K.__wbindgen_add_to_stack_pointer(16)}}function Hb(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=G().getInt32(o+0,!0),i=G().getInt32(o+4,!0),a=qb(r,i).slice();return K.__wbindgen_export2(r,i*1,1),a}finally{K.__wbindgen_add_to_stack_pointer(16)}}function Ub(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=G().getInt32(s+0,!0),a=G().getInt32(s+4,!0),o=qb(i,a).slice();return K.__wbindgen_export2(i,a*1,1),o}finally{K.__wbindgen_add_to_stack_pointer(16)}}function Wb(e,t){return Gb(Error(Jb(e,t)))}function Gb(e){gx===hx.length&&hx.push(hx.length+1);let t=gx;return gx=hx[t],hx[t]=e,t}function Kb(e){e<1028||(hx[e]=gx,gx=e)}function qb(e,t){return e>>>=0,Xb().subarray(e/1,e/1+t)}function G(){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 Kb(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=Bb(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(Lb(e,t,n,r,i,a))}async function cx(e,t,n,r,i,a,o){return await rx(),ox(Rb(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:()=>Wb,__wbg_set_wasm:()=>nx,decompress_and_parse_bigwig:()=>Lb,decompress_and_parse_summary:()=>Rb,inflate_raw:()=>zb,inflate_raw_batch:()=>Bb,inflate_raw_unknown_size:()=>Vb,parse_bigwig_block:()=>Hb,parse_summary_block:()=>Ub}),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((()=>{vb(),Pb(),Ib(),Dx(),kx(),Fx=new TextDecoder(`utf8`),Ix=610839776,Lx=class{bbi;refsByName;rTreeOffset;uncompressBufSize;blockType;rTreePromise;featureCache=new gb({cache:new Nb({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=Fb(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((()=>{Ag(),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 Eg(i);else if(r)this.bbi=new kg(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((()=>{vb(),Pb(),Wx(),Xx=new TextDecoder(`utf8`),Zx=class extends Ux{readIndicesCache=new gb({cache:new Nb({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((()=>{ub(),Kx(),Qx(),eS(),nS()})),aS=class extends xg{#e=[];#t;constructor(e,t){let n={pixelsPerBin:2,channel:`x`,debounce:200,debounceMode:`window`,...e},r=pg(n.channel);if(super(t,r),this.params=vg(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(()=>(Ag(),Og))]).then(([{BigWig:n},{RemoteFile:r}])=>{this.#t=new n({filehandle:new r(ih(pg(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`,`${pg(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/pg(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`}Gm(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 xg{parser;bbi;parseLine;constructor(e,t){let n={channel:`x`,windowSize:1e6,debounce:200,debounceMode:`window`,...e},r=pg(n.channel);if(super(t,r),this.params=vg(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(()=>(jl(),Al)),Promise.resolve().then(()=>(iS(),rS)),Promise.resolve().then(()=>(Ag(),Og))]).then(([n,{BigBed:r},{RemoteFile:i}])=>{let a=n.default;this.bbi=new r({filehandle:new i(ih(pg(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`,`${pg(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(`
|
|
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,AGFzbQEAAAABfRFgAABgAAF/YAF/AGABfwF/YAJ/fwBgAn9/AX9gA39/fwBgA39/fwF/YAR/f39/AGAEf39/fwF/YAV/f39/fwBgBX9/f39/AX9gBn9/f39/fwBgBn9/f39/fwF/YAd/f39/f39/AX9gCH9/f39/f39/AX9gB39/f3x8fHwAAm4CES4vYmd6Zl93YXNtX2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfYmUyODlkNTAzNGVkMjcxYgAEES4vYmd6Zl93YXNtX2JnLmpzHF9fd2JnX0Vycm9yXzhjNGU0M2ZlNzQ1NTlkNzMABQNragMODxAFCQ0CBwcGCAQFBAQFBQQGBAQEBAQQBgQKBAwMCgIGBQIMAgQGBgYGBgYDBAMHAgUDBAgGCwAFAgIGBAIFBAMBBQQCAgQEBAQFBg0CBwkFBAYEAwUFAAQABQQEBQQFAgICBAEFAAAEBQFwARgYBQMBABEGCQF/AUGAgMAACwfaAg4GbWVtb3J5AgAbX193YmdfY2h1bmtzbGljZXJlc3VsdF9mcmVlABgbX193YmdfZGVjb21wcmVzc3Jlc3VsdF9mcmVlAB0XY2h1bmtzbGljZXJlc3VsdF9idWZmZXIAGRtjaHVua3NsaWNlcmVzdWx0X2Nwb3NpdGlvbnMAFhtjaHVua3NsaWNlcmVzdWx0X2Rwb3NpdGlvbnMAFw5kZWNvbXByZXNzX2FsbAAcEGRlY29tcHJlc3NfYmxvY2sAFRZkZWNvbXByZXNzX2NodW5rX3NsaWNlABsbZGVjb21wcmVzc3Jlc3VsdF9ieXRlc19yZWFkADIVZGVjb21wcmVzc3Jlc3VsdF9kYXRhABofX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgBYEV9fd2JpbmRnZW5fZXhwb3J0AE8SX193YmluZGdlbl9leHBvcnQyADwJHQEAQQELF0RJKRJCMUNnSDMTXlQ3VV9BJRQfTEthCsPRAWrOJAIJfwF+IwBBEGsiASQAAkACQAJAAkACQAJAIABB9QFJDQACQCAAQcz/e00NAEEAIQAMBgsgAEELaiICQXhxIQNBACgCiJxAIgRFDQRBHyEFAkAgAEH0//8HSw0AIANBJiACQQh2ZyIAa3ZBAXEgAEEBdGtBPmohBQtBACADayECAkAgBUECdEHsmMAAaigCACIGDQBBACEHQQAhAAwCC0EAIQcgA0EAQRkgBUEBdmsgBUEfRht0IQhBACEAA0ACQCAGIgYoAgRBeHEiCSADSQ0AIAkgA2siCSACTw0AIAYhByAJIQIgCQ0AQQAhAiAGIQAgBiEHDAQLIAYoAhQiCSAAIAkgBiAIQR12QQRxaigCECIGRxsgACAJGyEAIAhBAXQhCCAGRQ0CDAALCwJAAkACQAJAAkACQEEAKAKEnEAiBkEQIABBC2pB+ANxIABBC0kbIgNBA3YiAnYiAEEDcUUNACAAQX9zQQFxIAJqIghBA3QiA0H8mcAAaiIAIANBhJrAAGooAgAiAigCCCIHRg0BIAcgADYCDCAAIAc2AggMAgsgA0EAKAKMnEBNDQggAA0CQQAoAoicQCIARQ0IIABoQQJ0QeyYwABqKAIAIgYoAgRBeHEgA2shAiAGIQcDQAJAIAcoAhAiAA0AIAcoAhQiAA0AIAYoAhghBQJAAkACQCAGKAIMIgAgBkcNACAGQRRBECAGKAIUIgAbaigCACIHDQFBACEADAILIAYoAggiByAANgIMIAAgBzYCCAwBCyAGQRRqIAZBEGogABshCANAIAghCSAHIgBBFGogAEEQaiAAKAIUIgcbIQggAEEUQRAgBxtqKAIAIgcNAAsgCUEANgIACyAFRQ0GAkACQCAGIAYoAhxBAnRB7JjAAGoiBygCAEYNAAJAIAUoAhAgBkYNACAFIAA2AhQgAA0CDAkLIAUgADYCECAADQEMCAsgByAANgIAIABFDQYLIAAgBTYCGAJAIAYoAhAiB0UNACAAIAc2AhAgByAANgIYCyAGKAIUIgdFDQYgACAHNgIUIAcgADYCGAwGCyAAKAIEQXhxIANrIgcgAiAHIAJJIgcbIQIgACAGIAcbIQYgACEHDAALC0EAIAZBfiAId3E2AoScQAsgAkEIaiEAIAIgA0EDcjYCBCACIANqIgMgAygCBEEBcjYCBAwHCwJAAkAgACACdEECIAJ0IgBBACAAa3JxaCIJQQN0IgJB/JnAAGoiByACQYSawABqKAIAIgAoAggiCEYNACAIIAc2AgwgByAINgIIDAELQQAgBkF+IAl3cTYChJxACyAAIANBA3I2AgQgACADaiIGIAIgA2siB0EBcjYCBCAAIAJqIAc2AgACQEEAKAKMnEAiAkUNAEEAKAKUnEAhAwJAAkBBACgChJxAIghBASACQQN2dCIJcQ0AQQAgCCAJcjYChJxAIAJBeHFB/JnAAGoiAiEIDAELIAJBeHEiAkH8mcAAaiEIIAJBhJrAAGooAgAhAgsgCCADNgIIIAIgAzYCDCADIAg2AgwgAyACNgIICyAAQQhqIQBBACAGNgKUnEBBACAHNgKMnEAMBgtBAEEAKAKInEBBfiAGKAIcd3E2AoicQAsCQAJAAkAgAkEQSQ0AIAYgA0EDcjYCBCAGIANqIgcgAkEBcjYCBCAHIAJqIAI2AgBBACgCjJxAIghFDQFBACgClJxAIQACQAJAQQAoAoScQCIJQQEgCEEDdnQiBXENAEEAIAkgBXI2AoScQCAIQXhxQfyZwABqIgghCQwBCyAIQXhxIghB/JnAAGohCSAIQYSawABqKAIAIQgLIAkgADYCCCAIIAA2AgwgACAJNgIMIAAgCDYCCAwBCyAGIAIgA2oiAEEDcjYCBCAGIABqIgAgACgCBEEBcjYCBAwBC0EAIAc2ApScQEEAIAI2AoycQAsgBkEIaiIARQ0DDAQLAkAgACAHcg0AQQAhB0ECIAV0IgBBACAAa3IgBHEiAEUNAyAAaEECdEHsmMAAaigCACEACyAARQ0BCwNAIAAoAgRBeHEiBiADayIIIAIgCCACSSIJGyEFIAYgA0khCCAAIAcgCRshCQJAIAAoAhAiBg0AIAAoAhQhBgsgAiAFIAgbIQIgByAJIAgbIQcgBiEAIAYNAAsLIAdFDQACQEEAKAKMnEAiACADSQ0AIAIgACADa08NAQsgBygCGCEFAkACQAJAIAcoAgwiACAHRw0AIAdBFEEQIAcoAhQiABtqKAIAIgYNAUEAIQAMAgsgBygCCCIGIAA2AgwgACAGNgIIDAELIAdBFGogB0EQaiAAGyEIA0AgCCEJIAYiAEEUaiAAQRBqIAAoAhQiBhshCCAAQRRBECAGG2ooAgAiBg0ACyAJQQA2AgALAkAgBUUNAAJAAkACQCAHIAcoAhxBAnRB7JjAAGoiBigCAEYNAAJAIAUoAhAgB0YNACAFIAA2AhQgAA0CDAQLIAUgADYCECAADQEMAwsgBiAANgIAIABFDQELIAAgBTYCGAJAIAcoAhAiBkUNACAAIAY2AhAgBiAANgIYCyAHKAIUIgZFDQEgACAGNgIUIAYgADYCGAwBC0EAQQAoAoicQEF+IAcoAhx3cTYCiJxACwJAAkAgAkEQSQ0AIAcgA0EDcjYCBCAHIANqIgAgAkEBcjYCBCAAIAJqIAI2AgACQCACQYACSQ0AIAAgAhARDAILAkACQEEAKAKEnEAiBkEBIAJBA3Z0IghxDQBBACAGIAhyNgKEnEAgAkH4AXFB/JnAAGoiAiEGDAELIAJB+AFxIgJB/JnAAGohBiACQYSawABqKAIAIQILIAYgADYCCCACIAA2AgwgACAGNgIMIAAgAjYCCAwBCyAHIAIgA2oiAEEDcjYCBCAHIABqIgAgACgCBEEBcjYCBAsgB0EIaiIADQELAkACQAJAAkACQAJAQQAoAoycQCIAIANPDQACQEEAKAKQnEAiACADSw0AIAFBBGpBsJzAACADQa+ABGpBgIB8cRAuAkAgASgCBCIGDQBBACEADAgLIAEoAgwhBUEAQQAoApycQCABKAIIIglqIgA2ApycQEEAIABBACgCoJxAIgIgACACSxs2AqCcQAJAAkACQEEAKAKYnEAiAkUNAEHsmcAAIQADQCAGIAAoAgAiByAAKAIEIghqRg0CIAAoAggiAA0ADAMLCwJAAkBBACgCqJxAIgBFDQAgBiAATw0BC0EAIAY2AqicQAtBAEH/HzYCrJxAQQAgBTYC+JlAQQAgCTYC8JlAQQAgBjYC7JlAQQBB/JnAADYCiJpAQQBBhJrAADYCkJpAQQBB/JnAADYChJpAQQBBjJrAADYCmJpAQQBBhJrAADYCjJpAQQBBlJrAADYCoJpAQQBBjJrAADYClJpAQQBBnJrAADYCqJpAQQBBlJrAADYCnJpAQQBBpJrAADYCsJpAQQBBnJrAADYCpJpAQQBBrJrAADYCuJpAQQBBpJrAADYCrJpAQQBBtJrAADYCwJpAQQBBrJrAADYCtJpAQQBBvJrAADYCyJpAQQBBtJrAADYCvJpAQQBBvJrAADYCxJpAQQBBxJrAADYC0JpAQQBBxJrAADYCzJpAQQBBzJrAADYC2JpAQQBBzJrAADYC1JpAQQBB1JrAADYC4JpAQQBB1JrAADYC3JpAQQBB3JrAADYC6JpAQQBB3JrAADYC5JpAQQBB5JrAADYC8JpAQQBB5JrAADYC7JpAQQBB7JrAADYC+JpAQQBB7JrAADYC9JpAQQBB9JrAADYCgJtAQQBB9JrAADYC/JpAQQBB/JrAADYCiJtAQQBBhJvAADYCkJtAQQBB/JrAADYChJtAQQBBjJvAADYCmJtAQQBBhJvAADYCjJtAQQBBlJvAADYCoJtAQQBBjJvAADYClJtAQQBBnJvAADYCqJtAQQBBlJvAADYCnJtAQQBBpJvAADYCsJtAQQBBnJvAADYCpJtAQQBBrJvAADYCuJtAQQBBpJvAADYCrJtAQQBBtJvAADYCwJtAQQBBrJvAADYCtJtAQQBBvJvAADYCyJtAQQBBtJvAADYCvJtAQQBBxJvAADYC0JtAQQBBvJvAADYCxJtAQQBBzJvAADYC2JtAQQBBxJvAADYCzJtAQQBB1JvAADYC4JtAQQBBzJvAADYC1JtAQQBB3JvAADYC6JtAQQBB1JvAADYC3JtAQQBB5JvAADYC8JtAQQBB3JvAADYC5JtAQQBB7JvAADYC+JtAQQBB5JvAADYC7JtAQQBB9JvAADYCgJxAQQBB7JvAADYC9JtAQQAgBkEPakF4cSIAQXhqIgI2ApicQEEAQfSbwAA2AvybQEEAIAYgAGsgCUFYaiIAakEIaiIHNgKQnEAgAiAHQQFyNgIEIAYgAGpBKDYCBEEAQYCAgAE2AqScQAwICyACIAZPDQAgByACSw0AIAAoAgwiB0EBcQ0AIAdBAXYgBUYNAwtBAEEAKAKonEAiACAGIAAgBkkbNgKonEAgBiAJaiEHQeyZwAAhAAJAAkACQANAIAAoAgAiCCAHRg0BIAAoAggiAA0ADAILCyAAKAIMIgdBAXENACAHQQF2IAVGDQELQeyZwAAhAAJAA0ACQCAAKAIAIgcgAksNACACIAcgACgCBGoiB0kNAgsgACgCCCEADAALC0EAIAZBD2pBeHEiAEF4aiIINgKYnEBBACAGIABrIAlBWGoiAGpBCGoiBDYCkJxAIAggBEEBcjYCBCAGIABqQSg2AgRBAEGAgIABNgKknEAgAiAHQWBqQXhxQXhqIgAgACACQRBqSRsiCEEbNgIEQQApAuyZQCEKIAhBEGpBACkC9JlANwIAIAhBCGoiACAKNwIAQQAgBTYC+JlAQQAgCTYC8JlAQQAgBjYC7JlAQQAgADYC9JlAIAhBHGohAANAIABBBzYCACAAQQRqIgAgB0kNAAsgCCACRg0HIAggCCgCBEF+cTYCBCACIAggAmsiAEEBcjYCBCAIIAA2AgACQCAAQYACSQ0AIAIgABARDAgLAkACQEEAKAKEnEAiB0EBIABBA3Z0IgZxDQBBACAHIAZyNgKEnEAgAEH4AXFB/JnAAGoiACEHDAELIABB+AFxIgBB/JnAAGohByAAQYSawABqKAIAIQALIAcgAjYCCCAAIAI2AgwgAiAHNgIMIAIgADYCCAwHCyAAIAY2AgAgACAAKAIEIAlqNgIEIAZBD2pBeHFBeGoiByADQQNyNgIEIAhBD2pBeHFBeGoiAiAHIANqIgBrIQMgAkEAKAKYnEBGDQMgAkEAKAKUnEBGDQQCQCACKAIEIgZBA3FBAUcNACACIAZBeHEiBhAQIAYgA2ohAyACIAZqIgIoAgQhBgsgAiAGQX5xNgIEIAAgA0EBcjYCBCAAIANqIAM2AgACQCADQYACSQ0AIAAgAxARDAYLAkACQEEAKAKEnEAiAkEBIANBA3Z0IgZxDQBBACACIAZyNgKEnEAgA0H4AXFB/JnAAGoiAyECDAELIANB+AFxIgNB/JnAAGohAiADQYSawABqKAIAIQMLIAIgADYCCCADIAA2AgwgACACNgIMIAAgAzYCCAwFC0EAIAAgA2siAjYCkJxAQQBBACgCmJxAIgAgA2oiBzYCmJxAIAcgAkEBcjYCBCAAIANBA3I2AgQgAEEIaiEADAYLQQAoApScQCECAkACQCAAIANrIgdBD0sNAEEAQQA2ApScQEEAQQA2AoycQCACIABBA3I2AgQgAiAAaiIAIAAoAgRBAXI2AgQMAQtBACAHNgKMnEBBACACIANqIgY2ApScQCAGIAdBAXI2AgQgAiAAaiAHNgIAIAIgA0EDcjYCBAsgAkEIaiEADAULIAAgCCAJajYCBEEAQQAoApicQCIAQQ9qQXhxIgJBeGoiBzYCmJxAQQAgACACa0EAKAKQnEAgCWoiAmpBCGoiBjYCkJxAIAcgBkEBcjYCBCAAIAJqQSg2AgRBAEGAgIABNgKknEAMAwtBACAANgKYnEBBAEEAKAKQnEAgA2oiAzYCkJxAIAAgA0EBcjYCBAwBC0EAIAA2ApScQEEAQQAoAoycQCADaiIDNgKMnEAgACADQQFyNgIEIAAgA2ogAzYCAAsgB0EIaiEADAELQQAhAEEAKAKQnEAiAiADTQ0AQQAgAiADayICNgKQnEBBAEEAKAKYnEAiACADaiIHNgKYnEAgByACQQFyNgIEIAAgA0EDcjYCBCAAQQhqIQALIAFBEGokACAAC7wdARZ/IAEgAmoiByACQREgAkERSRtrIQggAyAEaiIJIARBlwIgBEGXAkkbayEKIABBpNoAaiELIABBmMkAaiEMIABB4NUAaiENIABBzANqIQ5BACEPQQAhEEEAIQIgASERIAMhBAJAAkADQAJAAkAgByARa0EDSw0AIAIhEiAQQf8BcSICQRdLDQEDQAJAAkAgESAHRg0AIBEtAAAgAnQgEnIhEiARQQFqIREMAQtBASETIA9BAWoiD0EESw0FCyAQQQhqIhBB/wFxIgJBGEkNAAwCCwsgESgAACAQQf8BcXQgAnIhEiARIBBBA3ZBB3FrQQNqIREgEEEYciEQC0EBIRMCQAJAAkACQAJAAkAgEkEBdkEDcQ4EBAEABwQLQQAhFCAAQQA6AKBaIBBBb2ohAiASQRF2IRUgEkENdiIWQQ9xIhdBBGohECASQQh2QR9xQQFqIRggEkEDdkEfcUGBAmohGQNAAkACQCACQf8BcSITQQJNDQAgAiEaDAELAkAgByARa0EDSw0AIAIhGgNAAkACQCARIAdGDQAgES0AACATdCAVciEVIBFBAWohEQwBC0EBIRMgD0EBaiIPQQRLDQsLIBpBCGoiGkH/AXEiE0EYSQ0ADAILCyACQRhyIRogESgAACATdCAVciEVIBEgAkEDdkEHcWtBA2ohEQsgACAUQfCGwABqLQAAaiAVQQdxOgAAIBpBfWohAiAVQQN2IRUgFEEBaiIUIBBHDQALAkAgF0EPRg0AAkAgFkEDcSIaQQNGDQBBBCEQA0AgACAXIBBqQfCGwABqLQAAakEAOgAAIBBBfWohFCAQQQFqIhMhECAaIBRzQQNHDQALIBcgE2ohEAsgF0F0akEDSQ0AA0AgACAQQfCGwABqLQAAakEAOgAAIAAgEEHxhsAAai0AAGpBADoAACAAIBBB8obAAGotAABqQQA6AAAgACAQQfOGwABqLQAAakEAOgAAIBBBBGoiEEETRw0ACwsCQCAOIABBE0GQh8AAQQdBByANQQAQBA0AQQEPCyAZIBhqIRdBACEQA0ACQAJAIAJB/wFxIhRBDU0NACACIRoMAQsCQCAHIBFrQQNLDQAgAiEaA0ACQAJAIBEgB0YNACARLQAAIBR0IBVyIRUgEUEBaiERDAELQQEhEyAPQQFqIg9BBEsNCwsgGkEIaiIaQf8BcSIUQRhJDQAMAgsLIAJBGHIhGiARKAAAIBR0IBVyIRUgESACQQN2QQdxa0EDaiERCyAOIBVB/wBxQQJ0aigCACIUQRB2IRMgGiAUayECIBUgFEH/AXF2IRUCQAJAIBRB//8/Sw0AIAAgEGogEzoAACAQQQFqIRAMAQsCQAJAAkACQCATQXBqDgIAAQILAkAgEA0AQQEPCyAAIBBqIhRBBWogFEF/ai0AACIaOgAAIBRBBGogGjoAACAUQQNqIBo6AAAgFEECaiAaOgAAIBRBAWogGjoAACAUIBo6AAAgAkF+aiECIBVBA3FBA2ohFCAVQQJ2IRUMAgsgACAQaiIUQgA3AAAgFEEIakEAOwAAIAJBfWohAiAVQQdxQQNqIRQgFUEDdiEVDAELAkAgFUH/AHFBC2oiFEUNACAAIBBqQQAgFPwLAAsgAkF5aiECIBVBB3YhFQsgFCAQaiEQCyAQIBdJDQALIBAgF0YNAUEBDwsgEEF9aiECIBJBA3YhFSAALQCgWg0BIABBAToAoFpBACEQA0AgACAQaiIUQoiQoMCAgYKECDcAACAUQQhqQQg6AAAgEEEJaiIQQZABRw0AC0GQfyEQA0AgACAQakGAAmpCiZKkyJChwoQJNwAAIBBBCGoiEA0ACyAAQoWKlKjQoMGCBTcAuAIgAEKFipSo0KDBggU3ALACIABChYqUqNCgwYIFNwCoAiAAQoWKlKjQoMGCBTcAoAIgAEKIkKDAgIGChAg3AJgCIABCh46cuPDgwYMHNwCQAiAAQoeOnLjw4MGDBzcAiAIgAEKHjpy48ODBgwc3AIACQSAhGEGgAiEZCwJAIAwgACAZaiAYQeCHwABBCEEPIA1BABAEDQBBAQ8LIAAgACAZQeCIwABBC0EPIA0gCxAEDQBBAQ8LQX8gCygCAHRBf3MhFwJAAkAgESAITw0AIAQgCk8NACACQRhyIRAgESACQQN2QQdxa0EDaiEUIAAgESgAACACQf8BcXQgFXIiFSAXcUECdGooAgAhGANAIBAgGGshECAVIBhB/wFxIhN2IQICQAJAAkACQCAYQQBIDQACQCAYQYCAAnENACACIREMAwsCQCAYQYDAAHFFDQAgFCERDAkLIBAgACACQX8gGEEIdnRBf3NxIBhBEHZqQQJ0aigCACIYayEQIAIgGEH/AXEiE3YhESAYQQBODQEgESECCyAEIBhBEHY6AAAgBEEBaiEEIBQoAAAgEEH/AXF0IAJyIRUgFCAQQQN2QQdxa0EDaiEUIAAgAiAXcUECdGooAgAhGAwCCyACIRUgGEGAwABxRQ0AIBEhAiAUIREMBgsgEEEYciEZIBQoAAAgEEH/AXF0IBFyIRogFCAQQQN2QQdxa0EDaiEUAkAgDCARQf8BcUECdGooAgAiEUGAgAJxRQ0AIBQoAAAgGUF4aiICQfcBcXQgGkEIdiIQciEaIAwgEEF/IBFBCHZBP3F0QX9zcSARQRB2akECdGooAgAhESACQRhyIRkgFCACQQN2QQZxa0EDaiEUCwJAIBpBfyARQf8BcSIWdEF/c3EgEUEIdkH/AXF2IhsgEUEQdiIcaiICIAQgA2tNDQBBAQ8LIBVBfyATdEF/c3EhEyAUKAAAIBkgEWsiEEH/AXF0IBogFnYiGXIhFSAEIAJrIRogBCAYQRB2aiATIBhBCHZB/wFxdmohESAUIBBBA3ZBB3FrQQNqIRQgACAZIBdxQQJ0aigCACEYAkACQCACQQRJDQAgBCAaKAAANgAAIAQgGigABDYABCAEIBooAAg2AAggBCAaKAAMNgAMIAQgGigAEDYAECAEQRRqIBFPDQFBACACayETA0AgBEEUaiIaIAQgE2oiAkEUaigAADYAACAEQRhqIAJBGGooAAA2AAAgBEEcaiACQRxqKAAANgAAIARBIGogAkEgaigAADYAACAEQSRqIAJBJGooAAA2AAAgBEEoaiECIBohBCACIBFJDQAMAgsLAkAgAkEBRw0AIAQgGi0AAEGBgoQIbCIaNgAMIAQgGjYACCAEIBo2AAQgBCAaNgAAIARBEGoiAiARTw0BA0AgAiAaNgAAIAJBDGogGjYAACACQQhqIBo2AAAgAkEEaiAaNgAAIAJBEGoiAiARSQ0ADAILCyAEIBooAAAiGjYAACAEIAJqIBo2AAAgG0EBdCAcQQF0aiEaIAJBA2whFgNAIAQgGmogBCACaiITKAAAIhk2AAAgBCAWaiAZNgAAIBMgAmoiBCAaaiARSQ0ACwsgESEECyAQQRhyIRAgFCAITw0CIAQgCkkNAAwCCwsgAiEQIBEhFAsDQAJAAkAgByAUa0EDSw0AIBBB/wFxIgJBF0sNAQNAAkACQCAUIAdGDQAgFC0AACACdCAVciEVIBRBAWohFAwBC0EBIRMgD0EBaiIPQQRLDQgLIBBBCGoiEEH/AXEiAkEYSQ0ADAILCyAUKAAAIBBB/wFxdCAVciEVIBQgEEEDdkEHcWtBA2ohFCAQQRhyIRALIBAgACAVIBdxQQJ0aigCACICayEQIBUgAkH/AXF2IRECQAJAIAJBgIABcQ0AIBUhGiARIRUMAQsgECAAIBFBfyACQQh2QT9xdEF/c3EgAkEQdmpBAnRqKAIAIgJrIRAgESACQf8BcXYhFSARIRoLIAJBEHYhEQJAIAJBf0oNAAJAIAQgCUcNAEEDDwsgBCAROgAAIARBAWohBAwBCwJAIAJBgMAAcUUNACAVIQIgFCERDAMLAkAgGkF/IAJB/wFxdEF/c3EgAkEIdkHfAXF2IBFqIhogCSAEa00NAEEDDwsCQAJAIAcgFGtBA0sNACAQQf8BcSICQRdLDQEDQAJAAkAgFCAHRg0AIBQtAAAgAnQgFXIhFSAUQQFqIRQMAQtBASETIA9BAWoiD0EESw0ICyAQQQhqIhBB/wFxIgJBGEkNAAwCCwsgFCgAACAQQf8BcXQgFXIhFSAUIBBBA3ZBB3FrQQNqIRQgEEEYciEQCwJAIAwgFUH/AXFBAnRqKAIAIgJBgIACcUUNACAMIBVBCHYiFUF/IAJBCHZBP3F0QX9zcSACQRB2akECdGooAgAhAiAQQXhqIRECQAJAIAcgFGtBA0sNACARQf8BcSITQRdNDQEgESEQDAILIBFBGHIhECAUKAAAIBFB/wFxdCAVciEVIBQgEUEDdkEHcWtBA2ohFAwBCwNAAkACQCAUIAdGDQAgFC0AACATdCAVciEVIBRBAWohFAwBC0EBIRMgD0EBaiIPQQRLDQcLIBBB/wFxIRMgEEEIaiIRIRAgE0EYSQ0ACyARQXhqIRALAkAgFUF/IAJB/wFxIhN0QX9zcSACQQh2Qf8BcXYgAkEQdmoiESAEIANrTQ0AQQEPCyAQIAJrIRAgFSATdiEVIAQgBCARayICLQAAOgAAIAQgAi0AAToAASAEQQJqIQIgBCAaaiEEQQAgEWshEQNAIAIgAiARai0AADoAACACQQFqIgIgBEkNAAwBCwsLAkAgDyAQQf0BakEDdkEfcSICTQ0AQQEPCwJAIAcgESAPIAJraiIRa0EETg0AQQEPCwJAIBEvAAIgES8AACICc0H//wNxQf//A0YNAEEBDwsCQCAJIARrIAJODQBBAw8LAkAgByARQQRqIhFrIAJODQBBAQ8LAkAgAkUNACAEIBEgAvwKAAALIAQgAmohBCARIAJqIRFBACEPQQAhEEEAIQILIBJBAXFFDQALQQEhEyAPIBBBA3ZBH3EiAksNAAJAIAVFDQAgBSARIA8gAmtqIAFrNgIACwJAIAZFDQAgBiAEIANrNgIADAILIAQgCUYNAUECIRMLIBMPC0EAC5UPAQ9/IwBBgAFrIQggBUEBaiIJQQdxIQogCUECdEFgcSELQQAhDANAIAhBwABqIAxqIglCADcDACAJQRhqQgA3AwAgCUEQakIANwMAIAlBCGpCADcDACALIAxBIGoiDEcNAAsCQCAKRQ0AIAhBwABqIAxqIQkDQCAJQQA2AgAgCUEEaiEJIApBf2oiCg0ACwsCQCACRQ0AIAJBA3EhCkEAIQwCQCACQQRJDQAgAkF8cSENQQAhDANAIAhBwABqIAEgDGoiCS0AAEECdGoiCyALKAIAQQFqNgIAIAhBwABqIAlBAWotAABBAnRqIgsgCygCAEEBajYCACAIQcAAaiAJQQJqLQAAQQJ0aiILIAsoAgBBAWo2AgAgCEHAAGogCUEDai0AAEECdGoiCSAJKAIAQQFqNgIAIA0gDEEEaiIMRw0ACwsgCkUNACABIAxqIQkDQCAIQcAAaiAJLQAAQQJ0aiIMIAwoAgBBAWo2AgAgCUEBaiEJIApBf2oiCg0ACwsgCEHAAGogBUECdGohCQJAA0ACQCAJKAIARQ0AIAUhCgwCCyAJQXxqIQlBASEKIAVBf2oiBUEBSw0ACwsCQCAHRQ0AIAcgBCAKIAQgCkkbIgQ2AgALQQAhDiAIQQA2AgAgCCAIKAJAIgs2AgRBASEJQQAhDAJAIApBAkkNAEEBIQkgCkF/aiIMQQFxIQ8CQAJAIApBAkcNAEEAIQwMAQsgDEF+cSEQIAhBwABqQQhyIQkgCEEMciEMQQAhBUEAIQ0DQCAMQXxqIAlBfGooAgAiByALaiILNgIAIAwgCSgCACIRIAtqIgs2AgAgESAFQQJ0IAdBAXRqaiEFIAlBCGohCSAMQQhqIQwgECANQQJqIg1HDQALIA1BAWohCSAFQQF0IQwLAkAgD0UNACAJQQJ0IgkgCGpBBGogCEHAAGogCWooAgAiCSALajYCACAJIAxqIQULIAVBAXQhDCAKIQkLIAhBwABqIAlBAnRqKAIAIAxqIRECQCACRQ0AIAJBAXEhB0EAIQkCQCACQQFGDQAgAkF+cSENQQAhCQNAIAYgCCABIAlqIgwtAABBAnRqIgUoAgAiC0EBdGogCTsBACAFIAtBAWo2AgAgCCAMQQFqLQAAQQJ0aiIMIAwoAgAiDEEBajYCACAGIAxBAXRqIAlBAWo7AQAgDSAJQQJqIglHDQALCwJAIAdFDQAgCCABIAlqLQAAQQJ0aiIMIAwoAgAiDEEBajYCACAGIAxBAXRqIAk7AQALIAgoAgAhDgsCQAJAIBFBASAKdCIJTQ0AQQAhBQwBCyAGIA5BAXRqIQcCQAJAAkAgESAJSQ0AIAhBwABqQQRyIQlBACENA0AgDUEBaiENIAkoAgAhBiAJQQRqIQkgBkUNAAtBACEPIA0gBE0NAUEAIQEMAgsCQAJAIBENAEEAIQkMAQtBACEFIBFBASAKQX9qdEcNAyAIKAJEQQFHDQMgBy8BACEJCyADIAlBAnRqKAIAQYECaiEMQQEhBUEBIQkDQCAAIAw2AgAgAEEEaiEAIAkgBHYhCCAJQQFqIQkgCEUNAAwDCwtBASANdCEMIAhBwABqQQRyIQtBACEBA0AgDEF/aiEJIA1BgQJsIQUDQCAAIAFBAnRqIAUgAyAHLwEAQQJ0aigCAGo2AgACQCABIAlHDQBBASEFIAQgDU0NBCANQQFqIQkCQCAEIA1rQQFxRQ0AAkAgDEECdCIIRQ0AIAAgCGogACAI/AoAAAsgDUEBaiENIAxBAXQhDAsgBCAJRg0EIAQgDWshCANAAkAgDEECdCIJRQ0AIAAgCWogACAJ/AoAAAsCQCAMQQN0IgxFDQAgACAMaiAAIAz8CgAACyAJIQwgCEF+aiIIRQ0FDAALC0GAgICAeCABIAlzZ3YiCkF/aiABcSAKciEBIAdBAmohByAGQX9qIgYNAAsgCyANQQJ0aiEJA0ACQCANQQFqIg0gBEsNAAJAIAxBAnQiCkUNACAAIApqIAAgCvwKAAALIAxBAXQhDAsgCSgCACEGIAlBBGohCSAGRQ0ACyANIARNDQALCyAEQYCAA3IhEkEBIAR0IhBBf2ohEyAIQcAAakEEciEUQX8hCQNAIBQgDUECdGohEUF/IA10QX9zIQ4gDSAEayIVQYECbCEWQQEgFXQiCkECdCELA0ACQAJAIAEgE3EiAiAJRw0AIBAhDCAJIQIMAQsgFSEIIAohBQJAIAYgCk8NACARIQkgFSEIIAYhDANAIAkoAgAhBSAJQQRqIQkgBSAMQQF0aiIMQQEgCEEBaiIIdCIFSQ0ACwsgACACQQJ0aiAQQRB0IAhBCHRyIBJyNgIAIAUgEGohDCAQIQ8LIAAgDyABIAR2aiIIQQJ0aiEJIBYgAyAHLwEAQQJ0aigCAGohBQNAIAkgBTYCACAJIAtqIQkgCCAKaiIIIAxJDQALAkAgASAORw0AQQEPC0GAgICAeCABIA5zZ3YiCUF/aiABcSAJciEBIAdBAmohByAMIRAgAiEJIAZBf2oiBg0ACwNAIA1BAWohDSARKAIAIQYgEUEEaiERIAZFDQALIAwhECACIQkMAAsLIAULgg0DDX8CfgJ8IwBB0ABrIgckACAHEEU2AgAQagJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAQYABQQgQWSIIRQ0AQQAhCSAHQQA2AgwgByAINgIIIAdBEDYCBBBqQYABQQgQWSIKRQ0BIAdBADYCGCAHIAo2AhQgB0EQNgIQIAJBAnQiC0EASA0CAkACQCALDQBBASEMDAELEGpBASEJIAtBARBZIgxFDQMLIAdBADYCJCAHIAw2AiAgByALNgIcIAMgA6EiFiACuCIXY0UNCCACIBb8AyIJSQ0JIAMhFiACIAlrIg1BGkkNByADIRYgASAJaiIJLQAAQR9HDQcgAyEWIAktAAFBiwFHDQcgAyEWIAktAAJBCEcNByADIRYgCS0AA0EERw0HIAMhFiAJLQAKQQZHDQcgAyEWIAktAAxBwgBHDQcgAyEWIAktAA1BwwBHDQcgAyEWIA0gCS8AECIOTQ0HIAMhFiAOQRlJDQcgB0EoaiAJIA0gBxANIAcoAigiCUGAgICAeEYNCiAHKAIsIQ4gBykCMCIUQoCAgIAQVA0GIAT8AyEPIAb8A0EBaiEQIBRCIIinIREgFKchDSAIIAM5AwAgCiAEOQMAQQEhCCAHQQE2AgwgB0EBNgIYAkACQCADIAVmIhINACANIQogDSAPSw0BIAMgEbigIRYgBCANIA9ruKAhBEEAIQwMBQsgDyANIBAgDSAQSRsiCkkNAEEAIQtBASESQQAhCgwFCwJAIAogD0kNAEEAIRMCQCAKIA9rIgggC00NACAHQRxqQQAgCBAkIAcoAiAhDCAHKAIkIRMLAkAgCEUNACAMIBNqIA4gD2ogCPwKAAALIAcgEyAIaiIMNgIkIAMgEbigIRYgBCANIA9ruKAhBCASRQ0EQQAhC0EBIQhBASESQQAhCgwGCyAPIAogDUHkg8AAEDgAC0EIQYABEE0AC0EIQYABEE0ACyAJIAsQTQALAkAgCUUNACAOIAlBARBWCyAWIAOhIgYgF2NFDQQDQCACIAb8AyIJSQ0GIAIgCWsiCEEaSQ0EIAEgCWoiCy0AAEEfRw0EIAstAAFBiwFHDQQgCy0AAkEIRw0EIAstAANBBEcNBCALLQAKQQZHDQQgCy0ADEHCAEcNBCALLQANQcMARw0EIAggCy8AECIKTQ0EIApBGE0NBCAHQShqIAsgCCAHEA0gBygCKCIJQYCAgIB4Rg0HIAcoAiwhDiAHKQIwIhRCgICAgBBUDQMCQCAHKAIMIgogBygCBEcNACAHQQRqECgLIBRCIIghFSAHKAIIIApBA3RqIBY5AwAgByAKQQFqIhI2AgwCQCAHKAIYIgsgBygCEEcNACAHQRBqECgLIBWnIREgFKchDSAHKAIUIAtBA3RqIAQ5AwAgByALQQFqIgg2AhgCQAJAAkAgFiAFZiITDQAgDSEPIA0NASAEIA24oCEEIBYgEbigIRYMAgsgDSAQIA0gEEkbIg8NAEEAIQ8gFiEDDAMLAkAgDyAHKAIcIAxrTQ0AIAdBHGogDCAPECQgBygCJCEMCwJAIA9FDQAgBygCICAMaiAOIA/8CgAACyAHIAwgD2oiDDYCJCAEIA24oCEEIBYgEbigIRYgEw0DCwJAIAlFDQAgDiAJQQEQVgsgFiADoSIGIBdjDQAMBQsLIAMgEbigIRYgBCANIA9ruKAhBAsCQCASIAcoAgRHDQAgB0EEahAoCyAHKAIIIBJBA3RqIBY5AwAgByAKQQJqNgIMAkAgCCAHKAIQRw0AIAdBEGoQKAsgBygCFCAIQQN0aiAEOQMAIAcgC0ECajYCGAsgCUUNASAOIAlBARBWDAELIBYgA2INAEG/gMAAQRMQYyECDAMLIAdBKGpBCGoiAiAHQRxqQQhqKAIANgIAIAdBPGogB0EEakEIaigCADYCACAAIAcpAhw3AgAgAEEYaiAHKQIQNwIAIABBIGogB0EQakEIaigCADYCACAHIAcpAgQ3AjQgAEEIaiACKQMANwIAIABBEGogB0EoakEQaikDADcCAAwDCyAJIAIgAkH0g8AAEDgACyAHKAIsIAcoAjAQYyECCyAAQYCAgIB4NgIAIAAgAjYCBAJAIAcoAhwiAEUNACAHKAIgIABBARBWCwJAIAcoAhAiAEUNACAHKAIUIABBA3RBCBBWCyAHKAIEIgBFDQAgBygCCCAAQQN0QQgQVgsgBxBkIAdB0ABqJAAL7QYBCH8CQAJAIAEgAEEDakF8cSICIABrIgNJDQAgASADayIEQQRJDQAgBEEDcSEFQQAhBkEAIQECQCACIABGDQBBACEHQQAhAQJAIAAgAmsiCEF8Sw0AQQAhB0EAIQEDQCABIAAgB2oiAiwAAEG/f0pqIAJBAWosAABBv39KaiACQQJqLAAAQb9/SmogAkEDaiwAAEG/f0pqIQEgB0EEaiIHDQALCyAAIAdqIQIDQCABIAIsAABBv39KaiEBIAJBAWohAiAIQQFqIggNAAsLIAAgA2ohCAJAIAVFDQAgCCAEQXxxaiICLAAAQb9/SiEGIAVBAUYNACAGIAIsAAFBv39KaiEGIAVBAkYNACAGIAIsAAJBv39KaiEGCyAEQQJ2IQMgBiABaiEHA0AgCCEGIANFDQIgA0HAASADQcABSRsiBEEDcSEFAkACQCAEQQJ0IglB8AdxIggNAEEAIQIMAQtBACECIAYhAQNAIAFBDGooAgAiAEF/c0EHdiAAQQZ2ckGBgoQIcSABQQhqKAIAIgBBf3NBB3YgAEEGdnJBgYKECHEgAUEEaigCACIAQX9zQQd2IABBBnZyQYGChAhxIAEoAgAiAEF/c0EHdiAAQQZ2ckGBgoQIcSACampqaiECIAFBEGohASAIQXBqIggNAAsLIAMgBGshAyAGIAlqIQggAkEIdkH/gfwHcSACQf+B/AdxakGBgARsQRB2IAdqIQcgBUUNAAsgBiAEQfwBcUECdGoiAigCACIBQX9zQQd2IAFBBnZyQYGChAhxIQECQCAFQQFGDQAgAigCBCIIQX9zQQd2IAhBBnZyQYGChAhxIAFqIQEgBUECRg0AIAIoAggiAkF/c0EHdiACQQZ2ckGBgoQIcSABaiEBCyABQQh2Qf+BHHEgAUH/gfwHcWpBgYAEbEEQdiAHaiEHDAELAkAgAQ0AQQAPCyABQQNxIQgCQAJAIAFBBE8NAEEAIQJBACEHDAELIAFBfHEhA0EAIQJBACEHA0AgByAAIAJqIgEsAABBv39KaiABQQFqLAAAQb9/SmogAUECaiwAAEG/f0pqIAFBA2osAABBv39KaiEHIAMgAkEEaiICRw0ACwsgCEUNACAAIAJqIQEDQCAHIAEsAABBv39KaiEHIAFBAWohASAIQX9qIggNAAsLIAcL9QYBBn8CQAJAAkACQAJAAkACQAJAIABBfGoiBCgCACIFQXhxIgZBBEEIIAVBA3EiBxsgAWpJDQAgAUEnaiEIAkAgB0UNACAGIAhLDQILAkACQCACQQlJDQAgAiADEA8iAg0BQQAPC0EAIQIgA0HM/3tLDQhBECADQQtqQXhxIANBC0kbIQEgAEF4aiEIAkAgBw0AIAFBgAJJDQcgCEUNByAGIAFNDQcgBiABa0GAgAhLDQcgAA8LIAggBmohBwJAAkAgBiABTw0AIAdBACgCmJxARg0BAkAgB0EAKAKUnEBGDQAgBygCBCIFQQJxDQkgBUF4cSIJIAZqIgUgAUkNCSAHIAkQEAJAIAUgAWsiB0EQSQ0AIAQgASAEKAIAQQFxckECcjYCACAIIAFqIgEgB0EDcjYCBCAIIAVqIgUgBSgCBEEBcjYCBCABIAcQDgwJCyAEIAUgBCgCAEEBcXJBAnI2AgAgCCAFaiIBIAEoAgRBAXI2AgQMCAtBACgCjJxAIAZqIgcgAUkNCAJAAkAgByABayIGQQ9LDQAgBCAFQQFxIAdyQQJyNgIAIAggB2oiASABKAIEQQFyNgIEQQAhBkEAIQEMAQsgBCABIAVBAXFyQQJyNgIAIAggAWoiASAGQQFyNgIEIAggB2oiByAGNgIAIAcgBygCBEF+cTYCBAtBACABNgKUnEBBACAGNgKMnEAMBwsgBiABayIGQQ9NDQYgBCABIAVBAXFyQQJyNgIAIAggAWoiASAGQQNyNgIEIAcgBygCBEEBcjYCBCABIAYQDgwGC0EAKAKQnEAgBmoiByABSw0EDAYLAkAgAyABIAMgAUkbIgNFDQAgAiAAIAP8CgAACyAEKAIAIgNBeHEiB0EEQQggA0EDcSIDGyABakkNAiADRQ0GIAcgCE0NBkGAlMAAQS5BsJTAABA5AAtBwJPAAEEuQfCTwAAQOQALQYCUwABBLkGwlMAAEDkAC0HAk8AAQS5B8JPAABA5AAsgBCABIAVBAXFyQQJyNgIAIAggAWoiBSAHIAFrIgFBAXI2AgRBACABNgKQnEBBACAFNgKYnEALIAhFDQAgAA8LIAMQAiIBRQ0BAkAgA0F8QXggBCgCACICQQNxGyACQXhxaiICIAMgAkkbIgNFDQAgASAAIAP8CgAACyABIQILIAAQCQsgAgvxBQIIfwF+AkACQCABDQAgBUEBaiEGIAAoAgghB0EtIQgMAQtBK0GAgMQAIAAoAggiB0GAgIABcSIBGyEIIAFBFXYgBWohBgsCQAJAIAdBgICABHENAEEAIQIMAQsCQAJAIANBEEkNACACIAMQBiEBDAELAkAgAw0AQQAhAQwBCyADQQNxIQkCQAJAIANBBE8NAEEAIQpBACEBDAELIANBDHEhC0EAIQpBACEBA0AgASACIApqIgwsAABBv39KaiAMQQFqLAAAQb9/SmogDEECaiwAAEG/f0pqIAxBA2osAABBv39KaiEBIAsgCkEEaiIKRw0ACwsgCUUNACACIApqIQwDQCABIAwsAABBv39KaiEBIAxBAWohDCAJQX9qIgkNAAsLIAEgBmohBgsCQAJAIAYgAC8BDCILTw0AAkACQAJAIAdBgICACHENACALIAZrIQ1BACEBQQAhCwJAAkACQCAHQR12QQNxDgQCAAEAAgsgDSELDAELIA1B/v8DcUEBdiELCyAHQf///wBxIQYgACgCBCEJIAAoAgAhCgNAIAFB//8DcSALQf//A3FPDQJBASEMIAFBAWohASAKIAYgCSgCEBEFAEUNAAwFCwsgACAAKQIIIg6nQYCAgP95cUGwgICAAnI2AghBASEMIAAoAgAiCiAAKAIEIgkgCCACIAMQOg0DQQAhASALIAZrQf//A3EhAgNAIAFB//8DcSACTw0CQQEhDCABQQFqIQEgCkEwIAkoAhARBQBFDQAMBAsLQQEhDCAKIAkgCCACIAMQOg0CIAogBCAFIAkoAgwRBwANAkEAIQEgDSALa0H//wNxIQADQCABQf//A3EiAiAASSEMIAIgAE8NAyABQQFqIQEgCiAGIAkoAhARBQBFDQAMAwsLQQEhDCAKIAQgBSAJKAIMEQcADQEgACAONwIIQQAPC0EBIQwgACgCACIBIAAoAgQiCiAIIAIgAxA6DQAgASAEIAUgCigCDBEHACEMCyAMC44GAQV/IABBeGoiASAAQXxqKAIAIgJBeHEiAGohAwJAAkAgAkEBcQ0AIAJBAnFFDQEgASgCACICIABqIQACQCABIAJrIgFBACgClJxARw0AIAMoAgRBA3FBA0cNAUEAIAA2AoycQCADIAMoAgRBfnE2AgQgASAAQQFyNgIEIAMgADYCAA8LIAEgAhAQCwJAAkACQAJAAkACQCADKAIEIgJBAnENACADQQAoApicQEYNAiADQQAoApScQEYNAyADIAJBeHEiAhAQIAEgAiAAaiIAQQFyNgIEIAEgAGogADYCACABQQAoApScQEcNAUEAIAA2AoycQA8LIAMgAkF+cTYCBCABIABBAXI2AgQgASAAaiAANgIACyAAQYACSQ0CIAEgABARQQAhAUEAQQAoAqycQEF/aiIANgKsnEAgAA0EAkBBACgC9JlAIgBFDQBBACEBA0AgAUEBaiEBIAAoAggiAA0ACwtBACABQf8fIAFB/x9LGzYCrJxADwtBACABNgKYnEBBAEEAKAKQnEAgAGoiADYCkJxAIAEgAEEBcjYCBAJAIAFBACgClJxARw0AQQBBADYCjJxAQQBBADYClJxACyAAQQAoAqScQCIETQ0DQQAoApicQCIARQ0DQQAhAkEAKAKQnEAiBUEpSQ0CQeyZwAAhAQNAAkAgASgCACIDIABLDQAgACADIAEoAgRqSQ0ECyABKAIIIQEMAAsLQQAgATYClJxAQQBBACgCjJxAIABqIgA2AoycQCABIABBAXI2AgQgASAAaiAANgIADwsCQAJAQQAoAoScQCIDQQEgAEEDdnQiAnENAEEAIAMgAnI2AoScQCAAQfgBcUH8mcAAaiIAIQMMAQsgAEH4AXEiAEH8mcAAaiEDIABBhJrAAGooAgAhAAsgAyABNgIIIAAgATYCDCABIAM2AgwgASAANgIIDwsCQEEAKAL0mUAiAUUNAEEAIQIDQCACQQFqIQIgASgCCCIBDQALC0EAIAJB/x8gAkH/H0sbNgKsnEAgBSAETQ0AQQBBfzYCpJxACwuOBQEHfwJAAkAgACgCCCIDQYCAgMABcUUNAAJAAkACQAJAAkAgA0GAgICAAXFFDQAgAC8BDiIEDQFBACECDAILAkAgAkEQSQ0AIAEgAhAGIQUMBAsCQCACDQBBACEFQQAhAgwECyACQQNxIQYCQAJAIAJBBE8NAEEAIQdBACEFDAELIAJBDHEhBEEAIQdBACEFA0AgBSABIAdqIggsAABBv39KaiAIQQFqLAAAQb9/SmogCEECaiwAAEG/f0pqIAhBA2osAABBv39KaiEFIAQgB0EEaiIHRw0ACwsgBkUNAyABIAdqIQgDQCAFIAgsAABBv39KaiEFIAhBAWohCCAGQX9qIgYNAAwECwsgASACaiEGQQAhAiABIQggBCEHA0AgCCIFIAZGDQICQAJAIAUsAAAiCEF/TA0AIAVBAWohCAwBCwJAIAhBYE8NACAFQQJqIQgMAQsCQCAIQXBPDQAgBUEDaiEIDAELIAVBBGohCAsgCCAFayACaiECIAdBf2oiBw0ACwtBACEHCyAEIAdrIQULIAUgAC8BDCIITw0AIAggBWshCUEAIQVBACEEAkACQAJAIANBHXZBA3EOBAIAAQICCyAJIQQMAQsgCUH+/wNxQQF2IQQLIANB////AHEhBiAAKAIEIQcgACgCACEAAkADQCAFQf//A3EgBEH//wNxTw0BQQEhCCAFQQFqIQUgACAGIAcoAhARBQANAwwACwtBASEIIAAgASACIAcoAgwRBwANAUEAIQUgCSAEa0H//wNxIQIDQCAFQf//A3EiBCACSSEIIAQgAk8NAiAFQQFqIQUgACAGIAcoAhARBQANAgwACwsgACgCACABIAIgACgCBCgCDBEHACEICyAIC9cEAQh/IwBBEGsiAyQAIAMgATYCBCADIAA2AgAgA0KggICADjcCCAJAAkACQAJAAkAgAigCECIERQ0AIAIoAhQiAQ0BDAILIAIoAgwiAEUNASACKAIIIgEgAEEDdCIAaiEFIABBeGpBA3ZBAWohBiACKAIAIQADQAJAIABBBGooAgAiB0UNACADKAIAIAAoAgAgByADKAIEKAIMEQcARQ0AQQEhAQwFCwJAIAEoAgAgAyABQQRqKAIAEQUARQ0AQQEhAQwFCyAAQQhqIQAgAUEIaiIBIAVGDQMMAAsLIAFBGGwhCCABQX9qQf////8BcUEBaiEGIAIoAgghCSACKAIAIQBBACEHA0ACQCAAQQRqKAIAIgFFDQAgAygCACAAKAIAIAEgAygCBCgCDBEHAEUNAEEBIQEMBAtBACEFQQAhCgJAAkACQCAEIAdqIgFBCGovAQAOAwABAgALIAFBCmovAQAhCgwBCyAJIAFBDGooAgBBA3RqLwEEIQoLAkACQAJAIAEvAQAOAwABAgALIAFBAmovAQAhBQwBCyAJIAFBBGooAgBBA3RqLwEEIQULIAMgBTsBDiADIAo7AQwgAyABQRRqKAIANgIIAkAgCSABQRBqKAIAQQN0aiIBKAIAIAMgASgCBBEFAEUNAEEBIQEMBAsgAEEIaiEAIAggB0EYaiIHRg0CDAALC0EAIQYLAkAgBiACKAIETw0AIAMoAgAgAigCACAGQQN0aiIBKAIAIAEoAgQgAygCBCgCDBEHAEUNAEEBIQEMAQtBACEBCyADQRBqJAAgAQugBAIIfwJ+IwBBIGsiAyQAIAMQRTYCAEEAIQQCQCACQQJ0IgVBAEgNAAJAAkAgBQ0AQQEhBgwBCxBqQQEhBCAFQQEQWSIGRQ0BC0EAIQcgA0EANgIMIAMgBjYCCCADIAU2AgQCQAJAIAJFDQBBACEEA0ACQAJAAkAgAiAEayIIQRpJDQAgASAEaiIFLQAAQR9HDQAgBS0AAUGLAUcNACAFLQACQQhHDQAgBS0AA0EERw0AIAUtAApBBkcNACAFLQAMQcIARw0AIAUtAA1BwwBHDQAgCCAFLwAQIglNDQAgCUEZSQ0AIANBEGogBSAIIAMQDSADKAIQIghBgICAgHhHDQIgAygCFCADKAIYEGMhBQwBCyAEDQNBv4DAAEETEGMhBQsgAEGAgICAeDYCACAAIAU2AgQgAygCBCIFRQ0DIAMoAgggBUEBEFYMAwsgAygCFCEJAkAgAykCGCILQv////8PVg0AIAhFDQIgCSAIQQEQVgwCCyALQiCIIQwCQCALpyIFIAMoAgQgB2tNDQAgA0EEaiAHIAUQJCADKAIIIQYgAygCDCEHCyAMpyEKAkAgBUUNACAGIAdqIAkgBfwKAAALIAMgByAFaiIHNgIMIAQgCmohBAJAIAhFDQAgCSAIQQEQVgsgBCACSQ0ACwsgACADKQIENwIAIABBCGogA0EEakEIaigCADYCAAsgAxBkIANBIGokAA8LIAQgBRBNAAv4AwEGfyMAQRBrIgQkAAJAAkACQAJAAkACQAJAAkAgAkEaSQ0AIAEtAABBH0cNACABLQABQYsBRw0AIAEtAAJBCEcNACABLQADQQRHDQAgAS0ACkEGRw0AIAEtAAxBwgBHDQAgAS0ADUHDAEcNACACIAEvABAiBU0NACAFQRlJDQAgBUF9aiIGIAJPDQEgBUF+aiIHIAJPDQIgBUF/aiIIIAJPDQMgBSACTw0EIAVBeWoiCUESSQ0FIAkgAksNBSABIAdqLQAAQQh0IAEgBmotAAByIAEgCGotAABBEHRyIAEgBWotAABBGHQiCXIhAkEAIQYgCUEASA0GQQEhCQJAIAJFDQAQakEBIQYgAkEBEFoiCUUNBwsgBEEIaiADIAFBEmogBUFnaiAJIAIQJwJAIAQtAAhBAUcNACAAQRQ2AgggAEHAg8AANgIEIABBgICAgHg2AgAgAkUNCCAJIAJBARBWDAgLIAAgBUEBajYCDCAAIAI2AgggACAJNgIEIAAgAjYCAAwHCyAAQRM2AgggAEG/gMAANgIEIABBgICAgHg2AgAMBgsgBiACQYCDwAAQKgALIAcgAkGQg8AAECoACyAIIAJBoIPAABAqAAsgBSACQbCDwAAQKgALQRIgCSACQdSDwAAQOAALIAYgAhBNAAsgBEEQaiQAC4UEAQJ/IAAgAWohAgJAAkAgACgCBCIDQQFxDQAgA0ECcUUNASAAKAIAIgMgAWohAQJAIAAgA2siAEEAKAKUnEBHDQAgAigCBEEDcUEDRw0BQQAgATYCjJxAIAIgAigCBEF+cTYCBCAAIAFBAXI2AgQgAiABNgIADAILIAAgAxAQCwJAAkACQAJAIAIoAgQiA0ECcQ0AIAJBACgCmJxARg0CIAJBACgClJxARg0DIAIgA0F4cSIDEBAgACADIAFqIgFBAXI2AgQgACABaiABNgIAIABBACgClJxARw0BQQAgATYCjJxADwsgAiADQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgALAkAgAUGAAkkNACAAIAEQEQ8LAkACQEEAKAKEnEAiAkEBIAFBA3Z0IgNxDQBBACACIANyNgKEnEAgAUH4AXFB/JnAAGoiASECDAELIAFB+AFxIgFB/JnAAGohAiABQYSawABqKAIAIQELIAIgADYCCCABIAA2AgwgACACNgIMIAAgATYCCA8LQQAgADYCmJxAQQBBACgCkJxAIAFqIgE2ApCcQCAAIAFBAXI2AgQgAEEAKAKUnEBHDQFBAEEANgKMnEBBAEEANgKUnEAPC0EAIAA2ApScQEEAQQAoAoycQCABaiIBNgKMnEAgACABQQFyNgIEIAAgAWogATYCAA8LC+8CAQV/QQAhAgJAIAFBzf97IABBECAAQRBLGyIAa08NACAAQRAgAUELakF4cSABQQtJGyIDakEMahACIgFFDQAgAUF4aiECAkACQCAAQX9qIgQgAXENACACIQAMAQsgAUF8aiIFKAIAIgZBeHEgBCABakEAIABrcUF4aiIBQQAgACABIAJrQRBLG2oiACACayIBayEEAkAgBkEDcUUNACAAIAQgACgCBEEBcXJBAnI2AgQgACAEaiIEIAQoAgRBAXI2AgQgBSABIAUoAgBBAXFyQQJyNgIAIAIgAWoiBCAEKAIEQQFyNgIEIAIgARAODAELIAIoAgAhAiAAIAQ2AgQgACACIAFqNgIACwJAIAAoAgQiAUEDcUUNACABQXhxIgIgA0EQak0NACAAIAMgAUEBcXJBAnI2AgQgACADaiIBIAIgA2siA0EDcjYCBCAAIAJqIgIgAigCBEEBcjYCBCABIAMQDgsgAEEIaiECCyACC4kDAQR/IAAoAgwhAgJAAkACQAJAIAFBgAJJDQAgACgCGCEDAkACQAJAIAIgAEcNACAAQRRBECAAKAIUIgIbaigCACIBDQFBACECDAILIAAoAggiASACNgIMIAIgATYCCAwBCyAAQRRqIABBEGogAhshBANAIAQhBSABIgJBFGogAkEQaiACKAIUIgEbIQQgAkEUQRAgARtqKAIAIgENAAsgBUEANgIACyADRQ0CAkACQCAAIAAoAhxBAnRB7JjAAGoiASgCAEYNACADKAIQIABGDQEgAyACNgIUIAINAwwECyABIAI2AgAgAkUNBAwCCyADIAI2AhAgAg0BDAILAkAgAiAAKAIIIgRGDQAgBCACNgIMIAIgBDYCCA8LQQBBACgChJxAQX4gAUEDdndxNgKEnEAPCyACIAM2AhgCQCAAKAIQIgFFDQAgAiABNgIQIAEgAjYCGAsgACgCFCIBRQ0AIAIgATYCFCABIAI2AhgPCw8LQQBBACgCiJxAQX4gACgCHHdxNgKInEALyAIBBH9BACECAkAgAUGAAkkNAEEfIQIgAUH///8HSw0AIAFBJiABQQh2ZyICa3ZBAXEgAkEBdGtBPmohAgsgAEIANwIQIAAgAjYCHCACQQJ0QeyYwABqIQMCQEEAKAKInEBBASACdCIEcQ0AIAMgADYCACAAIAM2AhggACAANgIMIAAgADYCCEEAQQAoAoicQCAEcjYCiJxADwsCQAJAAkAgAygCACIEKAIEQXhxIAFHDQAgBCECDAELIAFBAEEZIAJBAXZrIAJBH0YbdCEDA0AgBCADQR12QQRxaiIFKAIQIgJFDQIgA0EBdCEDIAIhBCACKAIEQXhxIAFHDQALCyACKAIIIgMgADYCDCACIAA2AgggAEEANgIYIAAgAjYCDCAAIAM2AggPCyAFQRBqIAA2AgAgACAENgIYIAAgADYCDCAAIAA2AggLrQIBB38jAEEQayICJABBCiEDIAAoAgAiBCEFAkAgBEHoB0kNAEEKIQMgBCEAA0AgAkEGaiADaiIGQXxqIAAgAEGQzgBuIgVBkM4AbGsiB0H//wNxQeQAbiIIQQF0LwCElUA7AAAgBkF+aiAHIAhB5ABsa0H//wNxQQF0LwCElUA7AAAgA0F8aiEDIABB/6ziBEshBiAFIQAgBg0ACwsCQAJAIAVBCUsNACAFIQAMAQsgAkEGaiADQX5qIgNqIAUgBUH//wNxQeQAbiIAQeQAbGtB//8DcUEBdC8AhJVAOwAACwJAAkAgBEUNACAARQ0BCyACQQZqIANBf2oiA2ogAEEBdC0AhZVAOgAACyABQQFBAUEAIAJBBmogA2pBCiADaxAIIQAgAkEQaiQAIAALpQIBBn8gACgCCCECAkACQCABQYABTw0AQQEhAwwBCwJAIAFBgBBPDQBBAiEDDAELQQNBBCABQYCABEkbIQMLIAIhBAJAIAMgACgCACACa00NACAAIAIgA0EBQQEQIiAAKAIIIQQLIAAoAgQgBGohBAJAAkAgAUGAAUkNACABQT9xQYB/ciEFIAFBBnYhBgJAIAFBgBBPDQAgBCAFOgABIAQgBkHAAXI6AAAMAgsgAUEMdiEHIAZBP3FBgH9yIQYCQCABQf//A0sNACAEIAU6AAIgBCAGOgABIAQgB0HgAXI6AAAMAgsgBCAFOgADIAQgBjoAAiAEIAdBP3FBgH9yOgABIAQgAUESdkFwcjoAAAwBCyAEIAE6AAALIAAgAyACajYCCEEAC7ICAgN/AX4jAEHAAGsiAiQAAkAgASgCAEGAgICAeEcNACABKAIMIQMgAkEcakEIaiIEQQA2AgAgAkKAgICAEDcCHCACQShqQQhqIAMoAgAiA0EIaikCADcDACACQShqQRBqIANBEGopAgA3AwAgAiADKQIANwMoIAJBHGpB4JLAACACQShqEAsaIAJBEGpBCGogBCgCACIDNgIAIAIgAikCHCIFNwMQIAFBCGogAzYCACABIAU3AgALIAEpAgAhBSABQoCAgIAQNwIAIAJBCGoiAyABQQhqIgEoAgA2AgAgAUEANgIAIAIgBTcDABBqAkBBDEEEEFkiAQ0AQQRBDBBgAAsgASACKQMANwIAIAFBCGogAygCADYCACAAQcCUwAA2AgQgACABNgIAIAJBwABqJAALnQICBH8BfiMAQSBrIgMkAAJAAkACQAJAAkAgAg0AQQEhBEEAIQFBACEFQQAhBgwBCyADEEU2AgwgA0EQaiABIAIgA0EMahANIAMoAhAiBkGAgICAeEYNASADKAIUIQQgAykCGCEHIANBDGoQZCABIAJBARBWIAdCIIinIQEgB6chBQsQakEcQQQQWSICRQ0BIAIgATYCGCACIAU2AhQgAiAENgIQIAIgBjYCDEEAIQYgAkEANgIIIAJCgYCAgBA3AgAgAkEIaiEEDAILIAMoAhQgAygCGBBjIQQgA0EMahBkQQEhBiABIAJBARBWDAELQQRBHBBgAAsgACAGNgIIIAAgBEEAIAYbNgIEIABBACAEIAYbNgIAIANBIGokAAuSAgEHfyMAQRBrIgIkAAJAAkACQAJAIAFFDQAgAUF4aiIDIAMoAgBBAWoiBDYCACAERQ0BIAEoAgAiBEF/Rg0CIAEgBEEBajYCACACIAM2AgwgAiABNgIIIAIgAUEEajYCBCABKAIYIgVBA3QhBEEAIQYgBUH/////AUsNAyAEQfj///8HSw0DIAEoAhQhBwJAAkAgBA0AQQghCAwBCxBqQQghBiAEQQgQWSIIRQ0ECwJAIARFDQAgCCAHIAT8CgAACyABIAEoAgBBf2o2AgAgAyADKAIAQX9qIgE2AgACQCABDQAgAkEMahAmCyAAIAU2AgQgACAINgIAIAJBEGokAA8LEFsLAAsQXQALIAYgBBBNAAuSAgEHfyMAQRBrIgIkAAJAAkACQAJAIAFFDQAgAUF4aiIDIAMoAgBBAWoiBDYCACAERQ0BIAEoAgAiBEF/Rg0CIAEgBEEBajYCACACIAM2AgwgAiABNgIIIAIgAUEEajYCBCABKAIkIgVBA3QhBEEAIQYgBUH/////AUsNAyAEQfj///8HSw0DIAEoAiAhBwJAAkAgBA0AQQghCAwBCxBqQQghBiAEQQgQWSIIRQ0ECwJAIARFDQAgCCAHIAT8CgAACyABIAEoAgBBf2o2AgAgAyADKAIAQX9qIgE2AgACQCABDQAgAkEMahAmCyAAIAU2AgQgACAINgIAIAJBEGokAA8LEFsLAAsQXQALIAYgBBBNAAuCAgEHfyMAQRBrIgIkAAJAAkACQAJAIAENACAARQ0BIABBeGoiASgCAEEBRw0CIAAoAiAhAyAAKAIcIQQgACgCFCEFIAAoAhAhBiAAKAIIIQcgACgCBCEIIAFBADYCAAJAIAFBf0YNACAAQXxqIgAgACgCAEF/aiIANgIAIAANACABQTBBBBBWCwJAIAhFDQAgByAIQQEQVgsCQCAGRQ0AIAUgBkEDdEEIEFYLIARFDQMgAyAEQQN0QQgQVgwDCyAARQ0AIABBeGoiACAAKAIAQX9qIgE2AgAgAiAANgIMIAENAiACQQxqECYMAgsQWwALQYCAwABBPxBcAAsgAkEQaiQAC/gBAQZ/IwBBEGsiAiQAAkACQAJAAkAgAUUNACABQXhqIgMgAygCAEEBaiIENgIAIARFDQEgASgCACIEQX9GDQJBASEFIAEgBEEBajYCACACIAM2AgwgAiABNgIIIAIgAUEEajYCBEEAIQYgASgCDCIEQQBIDQMgASgCCCEHAkAgBEUNABBqQQEhBiAEQQEQWSIFRQ0ECwJAIARFDQAgBSAHIAT8CgAACyABIAEoAgBBf2o2AgAgAyADKAIAQX9qIgE2AgACQCABDQAgAkEMahAmCyAAIAQ2AgQgACAFNgIAIAJBEGokAA8LEFsLAAsQXQALIAYgBBBNAAv4AQEGfyMAQRBrIgIkAAJAAkACQAJAIAFFDQAgAUF4aiIDIAMoAgBBAWoiBDYCACAERQ0BIAEoAgAiBEF/Rg0CQQEhBSABIARBAWo2AgAgAiADNgIMIAIgATYCCCACIAFBBGo2AgRBACEGIAEoAgwiBEEASA0DIAEoAgghBwJAIARFDQAQakEBIQYgBEEBEFkiBUUNBAsCQCAERQ0AIAUgByAE/AoAAAsgASABKAIAQX9qNgIAIAMgAygCAEF/aiIBNgIAAkAgAQ0AIAJBDGoQNAsgACAENgIEIAAgBTYCACACQRBqJAAPCxBbCwALEF0ACyAGIAQQTQAL+QEBAX8jAEEwayIHJAAgB0EMaiABIAIgAyAEIAUgBhAFAkAgAkUNACABIAJBARBWCwJAAkACQCAHKAIMQYCAgIB4Rw0AQQEhASAHKAIQIQIMAQsQakEwQQQQWSICRQ0BQQAhASACQQA2AgggAkKBgICAEDcCACACIAcpAgw3AgwgAkEUaiAHQQxqQQhqKQIANwIAIAJBHGogB0EcaikCADcCACACQSRqIAdBJGopAgA3AgAgAkEsaiAHQSxqKAIANgIAIAJBCGohAgsgACABNgIIIAAgAkEAIAEbNgIEIABBACACIAEbNgIAIAdBMGokAA8LQQRBMBBgAAvMAQEDfyMAQRBrIgMkACADQQRqIAEgAhAMAkAgAkUNACABIAJBARBWCwJAAkACQCADKAIEIgRBgICAgHhHDQBBASEEQQAhASADKAIIIQVBACECDAELIAMoAgghBQJAAkAgBCADKAIMIgJLDQAgBSEBDAELAkAgAg0AQQEhASAFIARBARBWDAELIAUgBEEBIAIQUyIBRQ0CC0EAIQVBACEECyAAIAQ2AgwgACAFNgIIIAAgAjYCBCAAIAE2AgAgA0EQaiQADwtBASACEE0AC8ABAQN/IwBBEGsiAiQAAkACQAJAAkAgAQ0AIABFDQEgAEF4aiIBKAIAQQFHDQIgACgCCCEDIAAoAgQhBCABQQA2AgACQCABQX9GDQAgAEF8aiIAIAAoAgBBf2oiADYCACAADQAgAUEcQQQQVgsgBEUNAyADIARBARBWDAMLIABFDQAgAEF4aiIAIAAoAgBBf2oiATYCACACIAA2AgwgAQ0CIAJBDGoQNAwCCxBbAAtBgIDAAEE/EFwACyACQRBqJAAL3AEBAn8jAEEgayIFJAACQAJAQQEQNkH/AXEiBkECRg0AIAZBAXFFDQEgBUEIaiAAIAEoAhgRBAAMAQtBACgCwJxAIgZBf0wNAEEAIAZBAWo2AsCcQAJAAkBBACgCxJxARQ0AIAUgACABKAIUEQQAIAUgBDoAHSAFIAM6ABwgBSACNgIYIAUgBSkDADcCEEEAKALEnEAgBUEQakEAKALInEAoAhQRBAAMAQtBgICAgHggBRBHC0EAQQAoAsCcQEF/ajYCwJxAQQBBADoAuJxAIANFDQAgACABEFcACwALzAECA38BfiMAQTBrIgIkAAJAIAEoAgBBgICAgHhHDQAgASgCDCEDIAJBDGpBCGoiBEEANgIAIAJCgICAgBA3AgwgAkEYakEIaiADKAIAIgNBCGopAgA3AwAgAkEYakEQaiADQRBqKQIANwMAIAIgAykCADcDGCACQQxqQeCSwAAgAkEYahALGiACQQhqIAQoAgAiAzYCACACIAIpAgwiBTcDACABQQhqIAM2AgAgASAFNwIACyAAQcCUwAA2AgQgACABNgIAIAJBMGokAAu2AQICfwF+QQEhBkEEIQcCQAJAIAQgBWpBf2pBACAEa3GtIAOtfiIIQiCIp0UNAEEAIQMMAQsCQCAIpyIDQYCAgIB4IARrTQ0AQQAhAwwBCwJAAkACQAJAIAFFDQAgAiAFIAFsIAQgAxBTIQcMAQsCQCADDQAgBCEHDAILEGogAyAEEFkhBwsgBw0AIAAgBDYCBAwBCyAAIAc2AgRBACEGC0EIIQcLIAAgB2ogAzYCACAAIAY2AgALtgECAn8BfkEBIQZBBCEHAkACQCAEIAVqQX9qQQAgBGtxrSADrX4iCEIgiKdFDQBBACEDDAELAkAgCKciA0GAgICAeCAEa00NAEEAIQMMAQsCQAJAAkACQCABRQ0AIAIgBSABbCAEIAMQUyEHDAELAkAgAw0AIAQhBwwCCxBqIAMgBBBZIQcLIAcNACAAIAQ2AgQMAQsgACAHNgIEQQAhBgtBCCEHCyAAIAdqIAM2AgAgACAGNgIAC5UBAQF/IwBBEGsiBSQAAkAgAiABaiIBIAJPDQBBAEEAEE0ACyAFQQRqIAAoAgAiAiAAKAIEIAEgAkEBdCICIAEgAksbIgJBCEEEIARBAUYbIgEgAiABSxsiAiADIAQQIQJAIAUoAgRBAUcNACAFKAIIIAUoAgwQTQALIAUoAgghBCAAIAI2AgAgACAENgIEIAVBEGokAAuyAQEDfyMAQRBrIgEkACAAKAIAIgIoAgwhAwJAAkACQAJAIAIoAgQOAgABAgsgAw0BQQEhAkEAIQMMAgsgAw0AIAIoAgAiAigCBCEDIAIoAgAhAgwBCyABQYCAgIB4NgIAIAEgADYCDCABQZSTwAAgACgCBCAAKAIIIgAtAAggAC0ACRAeAAsgASADNgIEIAEgAjYCACABQfiSwAAgACgCBCAAKAIIIgAtAAggAC0ACRAeAAuLAQEBfyMAQRBrIgMkAAJAIAIgAWoiASACTw0AQQBBABBNAAsgA0EEaiAAKAIAIgIgACgCBCABIAJBAXQiAiABIAJLGyICQQggAkEISxsiAkEBQQEQIAJAIAMoAgRBAUcNACADKAIIIAMoAgwQTQALIAMoAgghASAAIAI2AgAgACABNgIEIANBEGokAAuHAQEBfyMAQSBrIgIkAAJAAkAgACgCAEGAgICAeEYNACABIAAoAgQgACgCCBBSIQAMAQsgAkEIakEIaiAAKAIMKAIAIgBBCGopAgA3AwAgAkEIakEQaiAAQRBqKQIANwMAIAIgACkCADcDCCABKAIAIAEoAgQgAkEIahALIQALIAJBIGokACAAC3wBAX8CQCAAKAIAIgAoAgwiAUUNACAAKAIQIAFBARBWCwJAIAAoAhgiAUUNACAAKAIcIAFBA3RBCBBWCwJAIAAoAiQiAUUNACAAKAIoIAFBA3RBCBBWCwJAIABBf0YNACAAIAAoAgRBf2oiATYCBCABDQAgAEEwQQQQVgsLhAEBAn8jAEEQayIGJABBACEHIAZBADYCDAJAAkACQAJAAkAgASgCACACIAMgBCAFIAZBDGoQUA4EAQIAAwALQZCFwABB7ABB/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(`
|
|
195
195
|
const emptyString = "";
|
|
196
196
|
return function makeTemplate(chrom, chromStart, chromEnd) {
|
|
197
197
|
return {
|
|
@@ -201,16 +201,16 @@ return groupData;`);return el.set(t,i),i}function Xc(e,t,n,r,i,a){for(let o=0;o<
|
|
|
201
201
|
${c.join(`,
|
|
202
202
|
`)}
|
|
203
203
|
}
|
|
204
|
-
};`)(),u=
|
|
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) {
|
|
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 uS(e){return e?.type==`bigbed`}Gm(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((()=>{Pb(),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 Nb({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((()=>{qy(),Pb(),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 zy(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 Nb({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((()=>{qy(),Pb(),VS(),Ag(),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 Nb({maxSize:100}),this.renameRefSeq=u,this.RecordClass=d??rC,e)this.bam=e;else if(t)this.bam=new kg(t);else if(n)this.bam=new Eg(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 kg(o)});else if(c)this.index=new KS({filehandle:new Eg(c)});else if(i)this.index=new LS({filehandle:i});else if(r)this.index=new LS({filehandle:new kg(r)});else if(a)this.index=new LS({filehandle:new Eg(a)});else if(t)this.index=new LS({filehandle:new kg(`${t}.bai`)});else if(n)this.index=new LS({filehandle:new Eg(`${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 zy(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 zy(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 By(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=>zy(e))))}var dC,fC=n((()=>{qy(),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 xg{#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(()=>(Ag(),Og))]).then(([{BamFile:t},{RemoteFile:n}])=>{let r=e=>new n(ih(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`}Gm(gC,hC);var _C,vC=n((()=>{_C=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}}})),yC,bC=n((()=>{yC=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 xC(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)*CC+(n>>>0)}var SC,CC,wC=n((()=>{SC=65536,CC=SC*SC}));function TC(e,t){return t.minv.blockPosition-e.maxv.blockPosition<65e3&&t.maxv.blockPosition-e.minv.blockPosition<5e6}function EC(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):TC(r,i)?i.maxv.compareTo(r.maxv)>0&&(r.maxv=i.maxv):(n.push(i),r=i));return n}var DC=n((()=>{}));function OC(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,AC=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 MC(e,t){return Math.floor(e/2**t)}var NC,PC,FC,IC,LC=n((()=>{qy(),vC(),bC(),wC(),DC(),AC(),NC=21582659,PC=38359875,FC={0:`generic`,1:`SAM`,2:`VCF`},IC=class extends yC{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=FC[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 zy(await this.filehandle.readFile(e)),n=new DataView(t.buffer),r;if(n.getUint32(0,!0)===NC)r=1;else if(n.getUint32(0,!0)===PC)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=OC(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=OC(t,l),i=OC(t,l+8);l+=16,o[n]=new _C(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:xC(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 _C(e.minv,e.maxv,n));return EC(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+MC(e,i),o=r+MC(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 RC(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 zC,BC,VC,HC=n((()=>{qy(),vC(),bC(),wC(),DC(),AC(),zC=21578324,BC=14,VC=class extends yC{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 zy(await this.filehandle.readFile(e)),n=new DataView(t.buffer);if(n.getUint32(0,!0)!==zC)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=OC(t,g),i=OC(t,g+8);g+=16,_=this._findFirstData(_,r),a[n]=new _C(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]=OC(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:xC(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>>BC>=o.linearIndex.length?o.linearIndex.length-1:t>>BC]:new kC(0,0))||console.warn(`querying outside of possible tabix range`);let s=RC(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 _C(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 EC(c,u)}}})),UC,WC=n((()=>{vb(),qy(),Pb(),Ag(),LC(),HC(),UC=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 Nb({maxSize:1e3});let d=l??(e=>e);if(t)this.filehandle=t;else if(e)this.filehandle=new kg(e);else if(n)this.filehandle=new Eg(n);else throw TypeError(`must provide either filehandle or path`);if(a)this.index=new VC({filehandle:a,renameRefSeqs:d});else if(c)this.index=new IC({filehandle:c,renameRefSeqs:d});else if(r)this.index=new VC({filehandle:new kg(r),renameRefSeqs:d});else if(o)this.index=new IC({filehandle:new kg(o),renameRefSeqs:d});else if(e)this.index=new VC({filehandle:new kg(`${e}.tbi`),renameRefSeqs:d});else if(s)this.index=new IC({filehandle:new Eg(s)});else if(i)this.index=new VC({filehandle:new Eg(i)});else if(n)this.index=new VC({filehandle:new Eg(`${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 gb({cache:new Nb({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
|
|
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(
|
|
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
|
|
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();
|
|
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();
|
|
213
|
-
`))}};function vw(e){return e?.type==`gff3`}Gm(vw,_w);function yw(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 bw=n((()=>{}));function xw(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 Sw=n((()=>{}));function Cw(e){try{return decodeURIComponent(e)}catch{return e}}var ww,Tw=n((()=>{bw(),Sw(),ww=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=Cw(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 yw(this.FORMAT??``,this.rest,this.sampleNames)}processGenotypes(e){xw(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 Ew(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 Dw(e,t){let n=e.indexOf(t);return[e.slice(0,n),e.slice(n+1)]}function Ow(e){let t=Ew(e.slice(1,-1)),n=[];for(let e=0;e<t.length;e++){let r=t[e],[i,a]=Dw(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 kw=n((()=>{})),Aw,jw=n((()=>{Aw={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`}}}})),Mw,Nw=n((()=>{Tw(),kw(),jw(),Mw=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:{...Aw.InfoFields},FORMAT:{...Aw.GenotypeFields},ALT:{...Aw.AltTypes},FILTER:{...Aw.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=Ow(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 ww(e,this.metadata.INFO,this.metadata.FORMAT,this.samples,this.strict)}}}));function Pw(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=Fw.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=Iw.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 Fw,Iw,Lw=n((()=>{Fw=/<(.*)>(.*)/,Iw=/(.*)<(.*)>/})),Rw=r({Variant:()=>ww,default:()=>Mw,parseBreakend:()=>Pw}),zw=n((()=>{Tw(),Nw(),Lw()})),Bw=class extends qC{#e;get label(){return`vcfSource`}async _handleHeader(e){let t=(await Promise.resolve().then(()=>(zw(),Rw))).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 Vw(e){return e?.type==`vcf`}Gm(Vw,Bw);var Hw=`
|
|
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=`
|
|
214
214
|
@scope {
|
|
215
215
|
:scope {
|
|
216
216
|
--genome-spy-basic-spacing: 10px;
|
|
@@ -463,34 +463,34 @@ background: #fff0f0;
|
|
|
463
463
|
}
|
|
464
464
|
}
|
|
465
465
|
}
|
|
466
|
-
`;function
|
|
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
467
|
<div class=${i.status}>
|
|
468
468
|
${i.status==`error`?D`<span
|
|
469
469
|
>Loading
|
|
470
470
|
failed${i.detail?D`: ${i.detail}`:Se}</span
|
|
471
471
|
>`:D`
|
|
472
|
-
<img src="${
|
|
472
|
+
<img src="${nT}" alt="" />
|
|
473
473
|
<span>Loading...</span>
|
|
474
474
|
`}
|
|
475
475
|
</div>
|
|
476
|
-
</div>`)}}n&&!r&&e.push(D`<div style=${
|
|
476
|
+
</div>`)}}n&&!r&&e.push(D`<div style=${tT({left:`0px`,top:`0px`,width:`100%`,height:`100%`})}>
|
|
477
477
|
<div class=${n.status}>
|
|
478
478
|
${n.status==`error`?D`<span
|
|
479
479
|
>Loading
|
|
480
480
|
failed${n.detail?D`: ${n.detail}`:Se}</span
|
|
481
481
|
>`:D`
|
|
482
|
-
<img src="${
|
|
482
|
+
<img src="${nT}" alt="" />
|
|
483
483
|
<span>Loading...</span>
|
|
484
484
|
`}
|
|
485
485
|
</div>
|
|
486
|
-
</div>`),t()?this.#e.style.display=`block`:setTimeout(()=>{t()||(this.#e.style.display=`none`)},3e3),Le(e,this.#e)}},
|
|
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
487
|
<div>
|
|
488
488
|
<input
|
|
489
489
|
id=${u}
|
|
490
490
|
type="range"
|
|
491
491
|
min=${i.min??0}
|
|
492
492
|
max=${i.max??100}
|
|
493
|
-
step=${i.step??
|
|
493
|
+
step=${i.step??Nn(i.min,i.max,100)}
|
|
494
494
|
.value=${s}
|
|
495
495
|
@input=${e=>{l(e.target.valueAsNumber),e.target.nextElementSibling.textContent=e.target.valueAsNumber}}
|
|
496
496
|
/><span>${s}</span>
|
|
@@ -533,7 +533,7 @@ background: #fff0f0;
|
|
|
533
533
|
@focus=${e=>e.target.select()}
|
|
534
534
|
@input=${e=>{l(i.input==`number`?e.target.valueAsNumber:e.target.value)}}
|
|
535
535
|
/>
|
|
536
|
-
</div>`);else throw Error(`Unsupported input type: `+i.input);i.description&&n.push(D`<div class="description">${i.description}</div>`)}return n}var cT=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(...sT(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 lT=5120,uT=5121,dT=5122,fT=5123,pT=5124,mT=5125,hT=5126,gT=32819,_T=32820,vT=33635,yT=5131,bT=33640,xT=35899,ST=35902,CT=36269,wT=34042,TT={};{let e=TT;e[lT]=Int8Array,e[uT]=Uint8Array,e[dT]=Int16Array,e[fT]=Uint16Array,e[pT]=Int32Array,e[mT]=Uint32Array,e[hT]=Float32Array,e[gT]=Uint16Array,e[_T]=Uint16Array,e[vT]=Uint16Array,e[yT]=Uint16Array,e[bT]=Uint32Array,e[xT]=Uint32Array,e[ST]=Uint32Array,e[CT]=Uint32Array,e[wT]=Uint32Array}function ET(e){if(e instanceof Int8Array)return lT;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)return uT;if(e instanceof Int16Array)return dT;if(e instanceof Uint16Array)return fT;if(e instanceof Int32Array)return pT;if(e instanceof Uint32Array)return mT;if(e instanceof Float32Array)return hT;throw Error(`unsupported typed array type`)}function DT(e){if(e===Int8Array)return lT;if(e===Uint8Array||e===Uint8ClampedArray)return uT;if(e===Int16Array)return dT;if(e===Uint16Array)return fT;if(e===Int32Array)return pT;if(e===Uint32Array)return mT;if(e===Float32Array)return hT;throw Error(`unsupported typed array type`)}function OT(e){let t=TT[e];if(!t)throw Error(`unknown gl type`);return t}var kT=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 AT(...e){console.error(...e)}function jT(...e){console.warn(...e)}function MT(e,t){return typeof WebGLBuffer<`u`&&t instanceof WebGLBuffer}function NT(e,t){return typeof WebGLRenderbuffer<`u`&&t instanceof WebGLRenderbuffer}function PT(e,t){return typeof WebGLTexture<`u`&&t instanceof WebGLTexture}function FT(e,t){return typeof WebGLSampler<`u`&&t instanceof WebGLSampler}var IT=35044,LT=34962,RT=34963,zT=34660,BT=5120,VT=5121,HT=5122,UT=5123,WT=5124,GT=5125,KT=5126,qT={attribPrefix:``};function JT(e,t,n,r,i){e.bindBuffer(t,n),e.bufferData(t,r,i||IT)}function YT(e,t,n,r){if(MT(e,t))return t;n||=LT;let i=e.createBuffer();return JT(e,n,i,t,r),i}function XT(e){return e===`indices`}function ZT(e){return e instanceof Int8Array||e instanceof Uint8Array}function QT(e){return e===Int8Array||e===Uint8Array}function $T(e){return e.length?e:e.data}var eE=/coord|texture/i,tE=/color|colour/i;function nE(e,t){let n;if(n=eE.test(e)?2:tE.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 rE(e,t){return e.numComponents||e.size||nE(t,$T(e).length)}function iE(e,t){if(kT(e))return e;if(kT(e.data))return e.data;Array.isArray(e)&&(e={data:e});let n=e.type;return n||=XT(t)?Uint16Array:Float32Array,new n(e.data)}function aE(e,t){let n={};return Object.keys(t).forEach(function(r){if(!XT(r)){let i=t[r],a=i.attrib||i.name||i.attribName||qT.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!kT(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=DT(a),s=i.normalize===void 0?QT(a):i.normalize,c=i.numComponents||i.size||nE(r,n),t=e.createBuffer(),e.bindBuffer(LT,t),e.bufferData(LT,l,i.drawType||IT)}else{let n=iE(i,r);t=YT(e,n,void 0,i.drawType),o=ET(n),s=i.normalize===void 0?ZT(n):i.normalize,c=rE(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(LT,null),n}function oE(e,t,n,r){n=iE(n),r===void 0?JT(e,LT,t.buffer,n,t.drawType):(e.bindBuffer(LT,t.buffer),e.bufferSubData(LT,r,n))}function sE(e,t){return t===BT||t===VT?1:t===HT||t===UT?2:t===WT||t===GT||t===KT?4:0}var cE=[`position`,`positions`,`a_position`];function lE(e,t){let n,r;for(r=0;r<cE.length&&(n=cE[r],!(n in t||(n=qT.attribPrefix+n,n in t)));++r);r===cE.length&&(n=Object.keys(t)[0]);let i=t[n];if(!i.buffer)return 1;e.bindBuffer(LT,i.buffer);let a=e.getBufferParameter(LT,zT);e.bindBuffer(LT,null);let o=a/sE(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 uE(e,t,n){let r=aE(e,t),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);let a=t.indices;if(a){let t=iE(a,`indices`);i.indices=YT(e,t,RT),i.numElements=t.length,i.elementType=ET(t)}else i.numElements||=lE(e,i.attribs);return i}function dE(e){return!!e.texStorage2D}var fE=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)}}(),pE={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},mE=kT,hE=function(){let e;return function(){return e||=typeof document<`u`&&document.createElement?document.createElement(`canvas`).getContext(`2d`):null,e}}(),gE=6406,_E=6407,q=6408,vE=6409,yE=6410,bE=6402,xE=34041,SE=33071,CE=9728,wE=9729,TE=3553,EE=34067,DE=32879,OE=35866,kE=34069,AE=34070,jE=34071,ME=34072,NE=34073,PE=34074,FE=10241,IE=10240,LE=10242,RE=10243,zE=32882,BE=33082,VE=33083,HE=33084,UE=33085,WE=3317,GE=3314,KE=32878,qE=3316,JE=3315,YE=32877,XE=37443,ZE=37441,QE=37440,$E=33321,eD=36756,tD=33325,nD=33326,rD=33330,iD=33329,aD=33338,oD=33337,sD=33340,cD=33339,lD=33323,uD=36757,dD=33327,fD=33328,pD=33336,mD=33335,hD=33332,gD=33331,_D=33334,vD=33333,yD=32849,bD=35905,xD=36194,SD=36758,CD=35898,wD=35901,TD=34843,ED=34837,DD=36221,OD=36239,kD=36215,AD=36233,jD=36209,MD=36227,ND=32856,PD=35907,FD=36759,ID=32855,LD=32854,RD=32857,zD=34842,BD=34836,VD=36220,HD=36238,UD=36975,WD=36214,GD=36232,KD=36226,qD=36208,JD=33189,YD=33190,XD=36012,ZD=36013,QD=35056,$D=5120,eO=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[gE]={numColorComponents:1},e[vE]={numColorComponents:1},e[yE]={numColorComponents:2},e[_E]={numColorComponents:3},e[q]={numColorComponents:4},e[vO]={numColorComponents:1},e[yO]={numColorComponents:1},e[gO]={numColorComponents:2},e[_O]={numColorComponents:2},e[_E]={numColorComponents:3},e[bO]={numColorComponents:3},e[q]={numColorComponents:4},e[xO]={numColorComponents:4},e[bE]={numColorComponents:1},e[xE]={numColorComponents:2}}var CO;function wO(e){if(!CO){let e={};e[gE]={textureFormat:gE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[eO,lO,uO,aO]},e[vE]={textureFormat:vE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[eO,lO,uO,aO]},e[yE]={textureFormat:yE,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[eO,lO,uO,aO]},e[_E]={textureFormat:_E,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[eO,lO,uO,aO,cO]},e[q]={textureFormat:q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[eO,lO,uO,aO,oO,sO]},e[bE]={textureFormat:bE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[iO,nO]},e[$E]={textureFormat:vO,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[eO]},e[eD]={textureFormat:vO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[$D]},e[tD]={textureFormat:vO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[aO,lO]},e[nD]={textureFormat:vO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[aO]},e[rD]={textureFormat:yO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[eO]},e[iD]={textureFormat:yO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[$D]},e[hD]={textureFormat:yO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[nO]},e[gD]={textureFormat:yO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[tO]},e[_D]={textureFormat:yO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[iO]},e[vD]={textureFormat:yO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[rO]},e[lD]={textureFormat:gO,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[eO]},e[uD]={textureFormat:gO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[$D]},e[dD]={textureFormat:gO,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[aO,lO]},e[fD]={textureFormat:gO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[aO]},e[pD]={textureFormat:_O,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[eO]},e[mD]={textureFormat:_O,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[$D]},e[aD]={textureFormat:_O,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[nO]},e[oD]={textureFormat:_O,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[tO]},e[sD]={textureFormat:_O,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[iO]},e[cD]={textureFormat:_O,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[rO]},e[yD]={textureFormat:_E,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[eO]},e[bD]={textureFormat:_E,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[eO]},e[xD]={textureFormat:_E,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[eO,cO]},e[SD]={textureFormat:_E,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[$D]},e[CD]={textureFormat:_E,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[aO,lO,fO]},e[wD]={textureFormat:_E,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[aO,lO,pO]},e[TD]={textureFormat:_E,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[aO,lO]},e[ED]={textureFormat:_E,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[aO]},e[DD]={textureFormat:bO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[eO]},e[OD]={textureFormat:bO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[$D]},e[kD]={textureFormat:bO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[nO]},e[AD]={textureFormat:bO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[tO]},e[jD]={textureFormat:bO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[iO]},e[MD]={textureFormat:bO,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[rO]},e[ND]={textureFormat:q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[eO]},e[PD]={textureFormat:q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[eO]},e[FD]={textureFormat:q,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[$D]},e[ID]={textureFormat:q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[eO,sO,dO]},e[LD]={textureFormat:q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[eO,oO]},e[RD]={textureFormat:q,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[dO]},e[zD]={textureFormat:q,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[aO,lO]},e[BD]={textureFormat:q,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[aO]},e[VD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[eO]},e[HD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[$D]},e[UD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[dO]},e[WD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[nO]},e[GD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[tO]},e[KD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[rO]},e[qD]={textureFormat:xO,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[iO]},e[JD]={textureFormat:bE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[nO,iO]},e[YD]={textureFormat:bE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[iO]},e[XD]={textureFormat:bE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[aO]},e[QD]={textureFormat:xE,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[hO]},e[ZD]={textureFormat:xE,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(!dE(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 mE(t)?ET(t):n||eO}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===EE?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(XE,t.colorspaceConversion),t.premultiplyAlpha!==void 0&&e.pixelStorei(ZE,t.premultiplyAlpha),t.flipY!==void 0&&e.pixelStorei(QE,t.flipY)}function NO(e){e.pixelStorei(WE,4),dE(e)&&(e.pixelStorei(GE,0),e.pixelStorei(KE,0),e.pixelStorei(qE,0),e.pixelStorei(JE,0),e.pixelStorei(YE,0))}function PO(e,t,n,r){r.minMag&&(n.call(e,t,FE,r.minMag),n.call(e,t,IE,r.minMag)),r.min&&n.call(e,t,FE,r.min),r.mag&&n.call(e,t,IE,r.mag),r.wrap&&(n.call(e,t,LE,r.wrap),n.call(e,t,RE,r.wrap),(t===DE||FT(e,t))&&n.call(e,t,zE,r.wrap)),r.wrapR&&n.call(e,t,zE,r.wrapR),r.wrapS&&n.call(e,t,LE,r.wrapS),r.wrapT&&n.call(e,t,RE,r.wrapT),r.minLod&&n.call(e,t,BE,r.minLod),r.maxLod&&n.call(e,t,VE,r.maxLod),r.baseLevel&&n.call(e,t,HE,r.baseLevel),r.maxLevel&&n.call(e,t,UE,r.maxLevel)}function FO(e,t,n){let r=n.target||TE;e.bindTexture(r,t),PO(e,r,e.texParameteri,n)}function IO(e){return e||=pE.textureColor,mE(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||=pE.textureOptions,a||=q;let o=n.target||TE;if(r||=n.width,i||=n.height,e.bindTexture(o,t),OO(e,r,i,a))e.generateMipmap(o);else{let t=kO(a)?wE:CE;e.texParameteri(o,FE,t),e.texParameteri(o,IE,t),e.texParameteri(o,LE,SE),e.texParameteri(o,RE,SE)}}function RO(e){return e.auto===!0||e.auto===void 0&&e.level===void 0}function zO(e,t){return t||={},t.cubeFaceOrder||[kE,AE,jE,ME,NE,PE]}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||=pE.textureOptions;let i=r.target||TE,a=r.level||0,o=n.width,s=n.height,c=r.internalFormat||r.format||q,l=EO(c),u=r.format||l.format,d=r.type||l.type;if(MO(e,r),e.bindTexture(i,t),i===EE){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=hE();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===DE||i===OE){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(WE,1),e.pixelStorei(GE,n.width),e.pixelStorei(KE,0),e.pixelStorei(YE,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(qE,o),e.pixelStorei(JE,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?pE.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;AT(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||=pE.textureOptions;let r=n.target||TE;if(e.bindTexture(r,t),n.color===!1)return;let i=IO(n.color);if(r===EE)for(let t=0;t<6;++t)e.texImage2D(kE+t,0,q,1,1,0,q,eO,i);else r===DE||r===OE?e.texImage3D(r,0,q,1,1,1,0,q,eO,i):e.texImage2D(r,0,q,1,1,0,q,eO,i)}function YO(e,t,n,r){return r||=HO,n||=pE.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||q,s=EO(o),c=n.format||s.format,l=n.type||eO,u=n.target||TE;if(u!==EE)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||q,o=EO(a),s=n.format||o.format,c=n.type||eO,l=n.target||OE;if(l!==DE&&l!==OE)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=hE(),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||=pE.textureOptions;let i=r.target||TE;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=EO(l),d=r.format||u.format,f=r.type||AO(e,n,u.type);mE(n)?n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer)):n=new(OT(f))(n);let p=TO(l,f),m=n.byteLength/p;if(m%1)throw`length wrong size for format: `+fE(e,d);let h;if(i===DE||i===OE)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(WE,r.unpackAlignment||1),MO(e,r),i===EE){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===DE||i===OE?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||TE;e.bindTexture(r,t);let i=n.level||0,a=n.internalFormat||n.format||q,o=EO(a),s=n.format||o.format,c=n.type||o.type;if(MO(e,n),r===EE)for(let t=0;t<6;++t)e.texImage2D(kE+t,i,a,n.width,n.height,0,s,c,null);else r===DE||r===OE?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||=pE.textureOptions;let r=e.createTexture(),i=t.target||TE,a=t.width||1,o=t.height||1,s=t.internalFormat||q;e.bindTexture(i,r),i===EE&&(e.texParameteri(i,LE,SE),e.texParameteri(i,RE,SE));let c=t.src;if(c)if(typeof c==`function`&&(c=c(e,t)),typeof c==`string`)YO(e,r,t,n);else if(mE(c)||Array.isArray(c)&&(typeof c[0]==`number`||Array.isArray(c[0])||mE(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===EE?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||TE;e.bindTexture(o,t);let s=n.level||0,c=n.internalFormat||n.format||q,l=EO(c),u=n.format||l.format,d,f=n.src;if(d=f&&(mE(f)||Array.isArray(f)&&typeof f[0]==`number`)?n.type||AO(e,f,l.type):n.type||l.type,o===EE)for(let t=0;t<6;++t)e.texImage2D(kE+t,s,c,r,i,0,u,d,null);else o===DE||o===OE?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=jT,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 dE(e)?function(t){let a,o;PT(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 dE(e)?function(t){e.uniform1iv(r,o),t.forEach(function(t,r){e.activeTexture(rk+o[r]);let i,s;PT(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 dE(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(NT(e,c))e.framebufferRenderbuffer(i,d,lj,c);else if(PT(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||NT(e,o))e.bindRenderbuffer(lj,o),c>1?e.renderbufferStorageMultisample(lj,c,s,r,i):e.renderbufferStorage(lj,s,r,i);else if(PT(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){fE(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&&jT(l,e[l],o,t)}r.constructor={name:n.constructor.name},fE(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;
|
|
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
537
|
#if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
|
|
538
538
|
out vec2 vPosInPixels;
|
|
539
539
|
#endif
|
|
@@ -569,7 +569,7 @@ fragColor=vFillColor;if(uPickingEnabled){fragColor=vPickingColor;}
|
|
|
569
569
|
#endif
|
|
570
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
571
|
#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(!
|
|
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
573
|
`),t=this.pushers.map((e,t)=>` p${t}();`).join(`
|
|
574
574
|
`);this.pushAll=Function(`that`,`${e}
|
|
575
575
|
return function unrolledPushAll() {
|
|
@@ -580,40 +580,40 @@ ${t}
|
|
|
580
580
|
`);this.updateFromDatum=Function(`that`,`datum`,`${e}
|
|
581
581
|
return function unrolledUpdateFromDatum(datum) {
|
|
582
582
|
${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(
|
|
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
584
|
|
|
585
585
|
`));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
586
|
|
|
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
|
|
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
588
|
`).map((e,t)=>{let r=i.get(t);return`${t+1+n}: ${e}${r?`\n\n^^^ ${r}`:``}`}).join(`
|
|
589
|
-
`)}function
|
|
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
590
|
${r.type} ${i}() {
|
|
591
591
|
// Constant value
|
|
592
592
|
return ${r};
|
|
593
|
-
}`,accessorFunctionName:i}}function
|
|
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
594
|
${n} ${o}() {
|
|
595
595
|
// Dynamic value
|
|
596
596
|
return ${i};
|
|
597
|
-
}`,accessorFunctionName:o,adjuster:r}}function
|
|
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
598
|
${i} ${s}() {
|
|
599
599
|
return ${a};
|
|
600
|
-
}`,accessorFunctionName:s}}function
|
|
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
601
|
${r} ${o}() {
|
|
602
602
|
return ${i};
|
|
603
|
-
}`,accessorFunctionName:o}}function
|
|
604
|
-
${g} ${
|
|
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) {
|
|
605
605
|
${v.map(e=>` ${e}\n`).join(``)}
|
|
606
606
|
}`);let S=u.join(`
|
|
607
|
-
`);if(x&&e==r){let e=
|
|
608
|
-
${
|
|
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)}
|
|
609
609
|
}
|
|
610
610
|
|
|
611
|
-
#define ${e}_DEFINED`}function
|
|
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
612
|
${t[i]}
|
|
613
613
|
}`)}return r.join(`
|
|
614
|
-
`)}function
|
|
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
615
|
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)){
|
|
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
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;
|
|
618
618
|
#if !defined(SAMPLE_FACET_UNIFORM) && !defined(SAMPLE_FACET_TEXTURE)
|
|
619
619
|
SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1.0);}
|
|
@@ -628,12 +628,12 @@ uint id=attr_uniqueId;vPickingColor=vec4(ivec4(id>>0,id>>8,id>>16,id>>24)&0xFF)/
|
|
|
628
628
|
#else
|
|
629
629
|
vPickingColor=vec4(1.0);
|
|
630
630
|
#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
|
|
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
632
|
`+(this.encoders.uniqueId&&m.length>0?` return ${m.join(` || `)};`:` return false;`)+`
|
|
633
633
|
}`);let h=`precision highp float;
|
|
634
634
|
precision highp int;`,g=e=>e.replace(`#pragma markUniforms`,u.join(`
|
|
635
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=gM(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}${z(t)?`Expr: ${t.expr}`:``}`);r(n)};if(z(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=uE(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,{[NM+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&&vm(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 hn{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=Kh(t),r=e[t]&&{...e[t]},i=e[n]&&{...e[n]};if(!(Oh(r)||Oh(i))){if(r){if(!jh(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=Kh(t),r=e[t],i=e[n];if(!r||!i||Oh(r)||Oh(i)||!jh(r)||!jh(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=Mh(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`))),Oh(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){Oh(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&&Oh(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!(Oh(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`,EM)}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=Xl(e);let n=this.unitView.getCollector().facetBatches.get(e);if(!n)return;let r=this.encoders,i=r.x.scale.type;if(ym(i)){let e=Th(r.x);return e?n.find(n=>t==e(n)):void 0}else{let e=Th(r.x),i=Th(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
|
+
`),...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(){
|
|
637
637
|
#if defined(dx_DEFINED) || defined(dy_DEFINED)
|
|
638
638
|
return vec2(getScaled_dx(),getScaled_dy())/uViewportSize;
|
|
639
639
|
#else
|
|
@@ -641,11 +641,11 @@ return vec2(0.0,0.0);
|
|
|
641
641
|
#endif
|
|
642
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
643
|
#pragma markUniforms
|
|
644
|
-
};`,$N=class extends
|
|
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
645
|
#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&&
|
|
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
647
|
#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||(
|
|
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
649
|
#if defined(x2_DEFINED) || defined(y2_DEFINED)
|
|
650
650
|
ivec2 align=fixAlignForAngle(uAlign,angleInDegrees);
|
|
651
651
|
#else
|
|
@@ -660,7 +660,19 @@ float y2=getScaled_y2();vec2 pos2=applySampleFacet(vec2(x,y2));if(uLogoLetter){s
|
|
|
660
660
|
#endif
|
|
661
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
662
|
#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 Rh)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?sr(n.text.format):e=>e;for(let e of t){let t=a(r(e)),n=P(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)}},DP=1;function OP(){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=mn(t),n=e[1]-e[0];let r=e[0]===0&&e[0]===0;if(n<DP&&!r){n=DP;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 An(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=Mn(e[0],e[1],Math.min(t,Math.ceil(n)))<1e5?sr(`,`):sr(`.3s`);return e=>i(e+s)},c.copy=()=>OP().domain(e).range(t).paddingInner(i).paddingOuter(a).numberingOffset(s),c}var kP=sr(`,d`);function AP(e){return e.chrom+`:`+kP(Math.floor(e.pos+1))}function jP(e,t){return e.chrom+`:`+kP(Math.floor(e.pos+1))+`-`+(e.chrom==t.chrom?``:t.chrom+`:`)+kP(Math.ceil(t.pos))}var MP={dm6:`chr3R 32079331
|
|
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";
|
|
666
|
+
try {
|
|
667
|
+
return (${s.code});
|
|
668
|
+
} catch (e) {
|
|
669
|
+
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
|
+
try {
|
|
672
|
+
return !!(${t.code});
|
|
673
|
+
} catch (e) {
|
|
674
|
+
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
|
|
664
676
|
chr3L 28110227
|
|
665
677
|
chr2R 25286936
|
|
666
678
|
chrX 23542271
|
|
@@ -781,33 +793,21 @@ chr18 90702639
|
|
|
781
793
|
chr19 61431566
|
|
782
794
|
chrX 171031299
|
|
783
795
|
chrY 91744698
|
|
784
|
-
chrM 16299`};function
|
|
785
|
-
`).map(e=>{let t=e.split(` `);return{name:t[0],size:parseInt(t[1])}})}var PP=/^([A-Za-z]+:)?\/\//;function FP(e,t){if(t&&PP.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 LP(n)+t}function IP(e,t,n=RP()){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 FP(r,t)}function LP(e){let t=e.replace(/[^/]*$/,``);return t===``?void 0:t.endsWith(`://`)?e+`/`:t}function RP(){if(typeof document<`u`&&document.baseURI)return document.baseURI;if(typeof window<`u`&&window.location?.href)return window.location.href}var zP=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(!WP(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,KP(this.config))this.setChromSizes(this.config.contigs);else if(!GP(this.config)){let e=NP(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(GP(this.config))try{let t=FP(e,this.config.url),n=await fetch(t);if(!n.ok)throw Error(`${n.status} ${n.statusText}`);this.setChromSizes(BP(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=dn(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 jP(...this.toChromosomalInterval(e))}formatLocus(e){let t=this.toChromosomal(e);if(t)return AP(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 BP(e){return Kt(e).map(([e,t])=>({name:e,size:parseInt(t)}))}function VP(e){return Qe(e)&&`chrom`in e}function HP(e){return e.every(VP)}function UP(e){return HP(e)&&(e[1]??e[0]).pos!==void 0}function WP(e){return Qe(e)&&(`name`in e||GP(e)||KP(e))}function GP(e){return WP(e)&&`url`in e}function KP(e){return WP(e)&&`contigs`in e}var qP=1e6;function JP(){let e=OP().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.ceil(i))),l=Mn(r[0],r[1],c);l<qP&&(l=Mn(r[0],r[1],c*.65)),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=Mn(i[0],i[1],Math.max(1,Math.min(n??10,Math.ceil(a))))<qP?sr(`,`):sr(`.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 YP(e){return e.type==`locus`}function XP(e,t){let n=tF(e);return n?n.toChromosomal(t):t}function ZP(e,t){let n=tF(e);return n&&VP(t)?n.toContinuous(t.chrom,t.pos):t}function QP(e,t){let n=tF(e);return n&&HP(t)?n.toContinuousInterval(t):t}function $P(e,t){let n=tF(e);return n?n.toChromosomalInterval(t):t}function eF(e){let t=tF(e);if(!t)throw Error(`No genome has been defined!`);return t.getExtent()}function tF(e){if(e&&`toChromosomal`in e)return e;if(e&&`genome`in e)return e.genome()}var nF=`locus`,rF=`index`,iF=5;function aF(e){let t=e.type;return!e.bins&&(t===`linear`||t===`pow`||t===`sqrt`)}function oF(e){return vm(e)&&![`sequential`,rF,nF].includes(e)}function sF(e){return e||{warn:(e,...t)=>console.warn(e,...t)}}var cF=Mt([`set`,`modified`,`clear`,`type`,`scheme`,`schemeExtent`,`schemeCount`,`domain`,`domainMin`,`domainMid`,`domainMax`,`domainRaw`,`domainImplicit`,`nice`,`zero`,`bins`,`range`,`rangeStep`,`round`,`reverse`,`interpolate`,`interpolateGamma`,`zoom`,`fp64`,`name`]);function lF(e,t,n){n=sF(n);for(let r in e)if(!cF[r]){if(r===`padding`&&oF(t.type))continue;pt(t[r])?t[r](e[r]):n.warn(`Unsupported scale property: `+r)}let r=mF(t,e,n);r.domain&&t.domain(r.domain),r.applyOrdinalUnknown&&t.unknown(r.ordinalUnknown),yF(t,e,vF(t,e,r.count))}function uF(e,t){let n=!e.domain&&vm(e.type)?{...e,domain:[0,0]}:e,r=dF(n),i=L(r);if(!i)throw Error(`Unknown scale type: `+r);let a=i();return lF(n,a,t),a}function dF(e){var t=e.type,n=``,r;return t===`sequential`?Up+`-`+zp:(fF(e)&&(r=e.rawDomain?e.rawDomain.length:e.domain?e.domain.length+ +(e.domainMid!=null):0,n=r===2?Up+`-`:r===3?Wp+`-`:``),(n+t||`linear`).toLowerCase())}function fF(e){let t=e.type;return vm(t)&&t!==`time`&&t!==`utc`&&(e.scheme||e.range&&e.range.length&&e.range.every(P))}function pF(e){if(!e.copy)return e;let t=e.copy();return t.type==null&&e.type!=null&&(t.type=e.type),t}function mF(e,t,n){if(!e.domain)return{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1};n=sF(n);let r=pF(e);var i=hF(r,t.domainRaw,n);if(i>-1)return{domain:r.domain(),count:i,ordinalUnknown:r.type===`ordinal`&&t.domainImplicit?tu:void 0,applyOrdinalUnknown:!1};var a=t.domain,o=r.type,s=t.zero||t.zero===void 0&&aF(r),c,l;return a?(oF(o)&&t.padding&&a[0]!==$e(a)&&(a=gF(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(_F(o,a,n)),t.nice&&r.nice&&r.nice(t.nice!==!0&&Pm(r,t.nice)||null),{domain:r.domain(),count:a.length,ordinalUnknown:o===`ordinal`&&t.domainImplicit?tu:void 0,applyOrdinalUnknown:o===Jp}):{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1}}function hF(e,t,n){return t?(e.domain(_F(e.type,t,n)),t.length):-1}function gF(e,t,n,r,i,a){n??=[0,1];var o=Math.abs($e(n)-n[0]),s=o/(o-2*r),c=e===`log`?lt(t,null,s):e===`sqrt`?ut(t,null,s,.5):e===`pow`?ut(t,null,s,i||1):e===`symlog`?dt(t,null,s,a||1):ct(t,null,s);return t=t.slice(),t[0]=c[0],t[t.length-1]=c[1],t}function _F(e,t,n){return xm(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: `+Dt(t)),t}function vF(e,t,n){let r=t.bins;if(r&&!O(r)){let t=(r.start==null||r.stop==null)&&e.domain(),n=r.start==null?t[0]:r.start,i=r.stop==null?$e(t):r.stop,a=r.step;a||qe(`Scale bins parameter missing step property.`),r=Vn(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 yF(e,t,n){var r=e.type,i=t.round||!1,a=t.range;if(t.rangeStep!=null)a=bF(r,t,n);else if(t.scheme&&(a=xF(r,t,n),pt(a))){if(e.interpolator)return e.interpolator(a);qe(`Scale type ${r} does not support interpolating color schemes.`)}if(a&&Sm(r))return e.interpolator(wm(CF(a,t.reverse),t.interpolate,t.interpolateGamma));a&&t.interpolate&&e.interpolate?e.interpolate(Em(t.interpolate,t.interpolateGamma)):pt(e.round)?e.round(i):pt(e.rangeRound)&&e.interpolate(i?Jd:Gd),a&&e.range(CF(a,t.reverse))}function bF(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*Lp(n,i,r)]}function xF(e,t,n){var r=t.schemeExtent,i,a;return O(t.scheme)?a=wm(t.scheme,t.interpolate,t.interpolateGamma):(i=t.scheme.toLowerCase(),a=Nm(i),a||qe(`Unrecognized scheme name: ${t.scheme}`)),n=e===`threshold`?n+1:e===`bin-ordinal`?n-1:e===`quantile`||e===`quantize`?+t.schemeCount||iF:n,Sm(e)?SF(a,r,t.reverse):pt(a)?Tm(SF(a,r),n):e===`ordinal`?a:a.slice(0,n)}function SF(e,t,n){return pt(e)&&(t||n)?Cm(e,CF(t||[0,1],n)):e}function CF(e,t){return t?e.slice().reverse():e}var wF=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=uF({...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||!YP(t)||t.genome(this.getLocusGenome(e.assembly))}reconfigureScale(e){let t=this.#e;!t||t.type==`null`||(lF({...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,...r}=e;return r}#l(){let e=this.#e;if(!e)return;let t=e.props;this.#t.forEach(e=>e.invalidate()),this.#t.clear();let n=EF({range:t.range,reverse:t.reverse,createExpression:e=>this.#n().createExpression(e),registerExpr:e=>this.#t.add(e)});if(!n)return;if(`values`in n){e.range(n.values);return}let r=()=>e.range(n.evaluate());n.setup(r),r()}#u(){let e=this.#e;if(!e)return;let t=e.range,n=e.domain,r=()=>this.#r?.();TF(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 TF(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 EF({range:e,reverse:t,createExpression:n,registerExpr:r}){if(!e||!O(e))return null;let i=(e,t)=>t?e.slice().reverse():e;if(e.some(z)){let a;return{dynamic:!0,evaluate:()=>i(a.map(e=>e()),t),setup:t=>{a=e.map(e=>{if(z(e)){let i=n(e.expr);return i.subscribe(t),r(i),()=>i(null)}return()=>e})}}}return{dynamic:!1,values:i(e,t)}}function DF(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||OF(e)&&OF(t)||OF(e)&&t===!0||e===!0&&Qe(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(OF(e))OF(o)&&(r[a]=DF([e,o],a));else if(OF(o)){if(!(e===!0||e===void 0))throw Error(`Bug in merge! Target is: `+e);r[a]=DF([{},o],a)}else r[a]=o}}};for(let t of e)a(t);return r}function OF(e){return Qe(e)&&!Array.isArray(e)}var kF={nominal:`nominalColorScheme`,ordinal:`ordinalColorScheme`,quantitative:`quantitativeColorScheme`},AF=new Set([`rect`]),jF=new Set([`shape`,`size`,`angle`,`heatmap`,`ramp`,`diverging`]);function MF(e){return typeof e==`string`||typeof e==`object`&&!!e}function NF(e){return jF.has(e)}function PF(e,t){if(NF(t))return RF(e)[t]}function FF(e){if([`nominal`,`ordinal`,`quantitative`,`index`,`locus`].includes(e))return e}function IF(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 LF(e,t){let n=FF(t);return FN(e.flatMap(e=>{let t=e.scale;return[t,t&&n?t[n]:void 0]}))}function RF(e){return FN(e.map(e=>e.range))}function zF(e,{channel:t,dataType:n,isExplicitDomain:r,markTypes:i,hasDomainMid:a}){let o=LF(e,n),s=RF(e),c={...IF(o)};if(r?c.zero=!1:c.zero===void 0&&o.zero!==void 0&&(c.zero=o.zero),Hh(t)&&c.nice===void 0&&(c.nice=o.nice===void 0?!r:o.nice),Jh(t)&&c.scheme===void 0)if(n==`quantitative`){let e=a||o.domainMid!==void 0?s.diverging:i?.length&&i.every(e=>AF.has(e))?s.heatmap:s.ramp,t=MF(e)?e:o.quantitativeColorScheme;MF(t)&&(c.scheme=t)}else{let e=o[kF[n]??kF.quantitative];MF(e)&&(c.scheme=e)}else Yh(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 BF=`quantitative`,VF=`ordinal`,HF=`nominal`;function UF(e,t){if(t==`index`||t==`locus`){if(Vh(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][[HF,VF,BF].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 WF(e,t){Hh(t)&&e.type!==`ordinal`&&(e.range=[0,1]),t==`opacity`&&vm(e.type)&&e.clamp===void 0&&(e.clamp=!0)}function GF(e){let t=e.view.getPathString(),n=e.channel??``;return t+`|`+n}function KF(e){return Array.from(e).sort((e,t)=>GF(e).localeCompare(GF(t)))}function qF({channel:e,dataType:t,members:n,isExplicitDomain:r,configScopes:i}){let a=[...n].map(e=>typeof e.view.getMarkType==`function`?e.view.getMarkType():void 0).filter(e=>!!e),o=DF(KF(n).map(e=>e.channelDef.scale).filter(e=>e!==void 0),`scale`,[`domain`]);if(o===null||o.type==`null`)return{type:`null`};let s={...zF(i,{channel:e,dataType:t,isExplicitDomain:r,markTypes:a,hasDomainMid:o.domainMid!==void 0}),...o};if(s.type||=UF(e,t),typeof s.range==`string`){if(!NF(s.range))throw Error(`Unknown named scale range "`+s.range+`". Supported names: shape, size, angle, heatmap, ramp, diverging.`);let t=PF(i,s.range);if(t===void 0)throw Error(`Named scale range "`+s.range+`" is not configured in config.range.`);Jh(e)&&(typeof t==`string`||typeof t==`object`&&t&&!Array.isArray(t))?(s.scheme=t,delete s.range):s.range=t}if(e==`y`&&ym(s.type)&&s.reverse==null&&(s.reverse=!0),s.range&&s.scheme&&delete s.scheme,!(`zoom`in s)){let e=LF(i,t);e.zoom===void 0?[`index`,`locus`].includes(s.type)&&(s.zoom=!0):s.zoom=e.zoom}return WF(s,e),s}function JF(e){return e===`index`||e===`locus`}function YF(e,t){return JF(e)?QF(t):t}function XF(e,t){return JF(e)?$F(t):t}function ZF(e,t){return t&&JF(e)?QF(t):t}function QF(e){return[e[0],e[1]+eI(e)]}function $F(e){return[e[0],e[1]-eI(e)]}function eI(e){return e[1]>=e[0]?1:-1}function tI(e,t){let n=e.findRuntimeForParam(t);if(!n)throw Error(`Selection domain parameter "${t}" was not found.`);return n}function nI(e,t){if(!e)throw Error(`Selection domain parameter "${t}" was not found.`);if(!ig(e))throw Error(`Selection domain parameter "${t}" must be an interval selection.`);return e}function rI(e,t,n){let r=e.paramRuntime.findRuntimeForParam?tI(e.paramRuntime,t):e.paramRuntime;return{runtime:r,selection:nI(r.getValue?r.getValue(t):e.paramRuntime.findValue(t),t)}}function iI(e,t,n,r){let i=[];return e.visit(e=>{let a=e.paramRuntime?.paramConfigs?.get(n);if(!a||!hg(a))return;let o=sg(a.select);!lg(o)||!o.encodings?.includes(r)||e.paramRuntime.findRuntimeForParam(n)===t&&i.push({view:e,param:a})}),i}function aI(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||!hg(e))continue;let o=sg(e.select);if(!(!lg(o)||!o.encodings?.includes(r))&&a.paramRuntime.findRuntimeForParam?.(n)===t)return!0}return!1}function oI(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 sI=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}},cI=class extends sI{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)}},lI=class extends sI{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}},uI=class extends lI{constructor(){super(),this.type=`nominal`}},dI=class extends sI{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!`)}},fI={quantitative:cI,index:cI,locus:cI,nominal:uI,ordinal:lI};function pI(e,t){if(e==`quantitative`&&mI(t)){let n=new dI(t);return n.type=e,n}else if(fI[e]){let n=new fI[e];return n.type=e,t&&n.extendAll(t),n}throw Error(`Unknown type: `+e)}function mI(e){return e&&e.length>0&&e.length!=2&&e.every(e=>typeof e==`number`)}var hI=class{#e;#t;#n;#r;#i;#a;#o;#s=void 0;#c=!0;#l=new Map;#u=new WeakMap;constructor({getMembers: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){return CI(this.#r(),this.#i,e?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=gI(this.#e(),this.#a,t);return yI(this.#t(),n.selectionRef),this.#s=n.selectionRef,this.#l.set(t,n.domain),this.#c=!1,n.domain}getDataDomain(){return SI(this.#n(),this.#r,e=>this.#d(e))}captureInitialDomain(e,t,n){if(!this.#o&&vm(e.type)){let t=n??e.domain();Et(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=wh(r);if(i.length===0)return[];let a=i.filter(ph).filter(e=>!e.channelDef.domainInert);return this.#u.set(e,a),a}};function gI(e,t,n){let r=Array.from(e).filter(e=>e.contributesToDomain).filter(e=>e.channelDef.scale?.domain),i=[],a,o,s,c=!1;for(let e of r){let r=e.channelDef.scale.domain;if(xI(r)){if(c)throw Error(`Cannot mix selection-driven and literal configured domains on a shared scale.`);let l=_I(e,r,t,n);if(s&&(s.runtime!==l.runtime||s.param!==l.param||s.encoding!==l.encoding))throw Error(`Conflicting selection domain references on a shared scale: `+o+` vs `+l.description+`.`);a=l.runtime,o=l.description,s={param:l.param,encoding:l.encoding,hasInitial:(s?.hasInitial??!1)||l.hasInitial,runtime:l.runtime},l.domain&&i.push(l.domain);continue}if(a)throw Error(`Cannot mix literal configured domains with selection-driven domains on a shared scale.`);c=!0,i.push(vI(e.channelDef.type,r,t))}return i.length>0?{domain:i.reduce((e,t)=>e.extendAll(t)),selectionRef:s}:a?{domain:void 0,selectionRef:s}:{domain:void 0,selectionRef:void 0}}function _I(e,t,n,r){let i=t.param,a=bI(e.channel,t,i),o=rI(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?vI(e.channelDef.type,t.initial,n):void 0,description:l,param:i,encoding:a,hasInitial:s,runtime:o.runtime}:{domain:pI(e.channelDef.type,n(c)),description:l,param:i,encoding:a,hasInitial:s,runtime:o.runtime}}function vI(e,t,n){let r=n(t);return pI(e,e===`locus`&&HP(t)&&!UP(t)?r:YF(e,r))}function yI(e,t){if(!t||e.size<2||!Array.from(e).some(e=>aI(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 bI(e,t,n){if(t.encoding)return t.encoding;let r=qh(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 xI(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&typeof e.param==`string`}function SI(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=_h(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=pI(r),s.extend(t({}));else continue;o.set(e,s)}}if(i.size===0)return;let a=pI(r);for(let e of i.values())for(let t of e.values())a.extendAll(t);return a}function CI(e,t,n,r){return e==`locus`?t(r):e==`index`?ZF(e,n)??[]:n??[]}function wI(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}function TI(e,t,n){return e*(t/e)**+n}var EI=e=>new Promise(t=>setTimeout(t,e));function DI(){return{canceled:!1}}function OI(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`):EI(e.delay).then(i):i()}function kI(e,t,n,r,i={}){let a=i.onUnsupported??`throw`;switch(e.type){case`linear`:case`index`:case`locus`:return ct(t,n,r);case`log`:return lt(t,n,r);case`pow`:case`sqrt`:return ut(t,n,r,e.exponent());case`symlog`:return dt(t,n,r,e.constant());default:if(a===`identity`)return t;throw Error(`Zooming is not implemented for: `+e.type)}}var AI=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 jI(e,t,this.#i,this.#a,this.#n)}isZoomable(){return this.isZoomingSupported()&&!!this.#e().props.zoom}isZoomingSupported(){let e=this.#e().type;return vm(e)&&!ym(e)}getDomainChangeAction(e,t){return Yl(t,e)?`none`:this.isZoomable()?`restore`:this.isZoomingSupported()?`animate`:`notify`}isZoomed(){return this.isZoomingSupported()&&!Yl(this.#r(),this.#e().domain())}zoom(e,t,n){if(!this.isZoomingSupported())return!1;let r=this.#e(),i=r.domain(),a=MI(r,i,e,t,n),o=this.getZoomExtent();return a=ft(a,o[0],o[1]),[0,1].some(e=>a[e]!=i[e])?(r.domain(a),!0):!1}async zoomTo(e,t=!1){if(St(t)&&(t=t?700:0),!this.isZoomingSupported())throw Error(`Not a zoomable scale!`);let n=this.#e(),r=NI(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=DI();this.#o=d,await i.transition({duration:t,easingFunction:wI,cancelToken:d,onUpdate:t=>{let r=TI(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()?Et(this.getZoomExtent())/Et(this.#e().domain()):1}};function jI(e,t,n,r,i){return PI(t)&&O(t.extent)?NI(e.props.type,t.extent,n):t&&e.props.type==`locus`?r():i()}function MI(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=at(a,i||0);break;case`log`:a=ot(a,i||0);break;case`pow`:case`sqrt`:a=j(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 kI(e,a,o,n)}function NI(e,t,n){let r=e===`locus`?n(t):t;return e===`locus`&&HP(t)&&!UP(t)?r:YF(e,r)}function PI(e){return Qe(e)}L(`index`,OP,[`continuous`]),L(`locus`,JP,[`continuous`]),L(`null`,aM,[]);var FI=class{#e=new Set;#t=new Set;#n={domain:new Set,range:new Set};#r;#i;#a;#o;#s=!1;#c=[];#l=0;#u=!1;#d=void 0;constructor(e){this.channel=e,this.type=null,this.name=void 0,this.#i=new hI({getMembers:()=>this.#p(),getAllMembers:()=>this.#e,getDataMembers:()=>this.#p(this.#t),getType:()=>this.type,getLocusExtent:e=>this.#h(e),fromComplexInterval:this.fromComplexInterval.bind(this)}),this.#r=new wF({getParamRuntime:()=>this.#f.paramRuntime,onRangeChange:()=>this.#_(`range`),onDomainChange:()=>this.#_(`domain`),getGenomeStore:()=>this.#m.genomeStore}),this.#a=new AI({getScale:()=>this.getScale(),getAnimator:()=>this.#m.animator,getInitialDomainSnapshot:()=>this.#i.initialDomainSnapshot,getResetDomain:()=>this.#S(),fromComplexInterval:this.fromComplexInterval.bind(this),getGenomeExtent:()=>this.#h()})}get#f(){let e=this.#e.values().next().value;if(!e)throw Error(`ScaleResolution has no members!`);return e.view}#p(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#m(){return this.#f.context}get zoomExtent(){return(this.#r.scale&&vm(this.#r.scale.type)&&this.#a.getZoomExtent())??[-1/0,1/0]}#h(e){return eF(this.#g(e))}#g(e){if(this.type===`locus`)return this.#r.scale??this.#r.getLocusGenome(e)}addEventListener(e,t){this.#n[e].add(t)}removeEventListener(e,t){this.#n[e].delete(t)}#_(e){e===`domain`&&this.#l===0&&this.syncLinkedSelectionFromDomain();for(let t of this.#n[e].values())t({type:e,scaleResolution:this})}#v(e){this.#l+=1;try{e()}finally{--this.#l}}syncLinkedSelectionFromDomain(){let e=this.#i.getSelectionConfiguredDomainBindingInfo();if(!e||!this.isZoomable())return;let t=nI(e.runtime.getValue(e.param),e.param),n=this.#y(this.getScale().domain());if(!n)return;let r=this.#y(this.#i.getDefaultDomain(!0)),i=r&&Yl(n,r)?null:n;II(t.intervals[e.encoding]??null,i)||e.runtime.setValue(e.param,{...t,type:`interval`,intervals:{...t.intervals,[e.encoding]:i}})}#y(e){return oI(e,this.zoomExtent)}#b(){return this.#i.getSelectionConfiguredDomainBindingInfo()}#x(){return!this.#u}#S(e=!1,t){return this.#i.getConfiguredOrDefaultDomain(e,t,{includeSelectionInitial:this.#x()})}#C(){return this.#i.hasConfiguredDomain({includeSelectionInitial:this.#x()})}#w(e){let t=nI(e.runtime.getValue(e.param),e.param).intervals[e.encoding];return t&&t.length===2?t:null}#T(e,t){t?this.#u=!1:e&&(this.#u=!0)}#E(e){let t=LI(e),{channel:n,channelDef:r}=t,i=r.type==null&&this.type;if(n!=`sample`&&!r.type&&!Gh(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)&&!Vh(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&&!Gh(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),this.#M(),this.#O(),t}registerMember(e){let t=this.#E(e);return()=>{let e=this.#e.delete(t);return e&&(this.#t.delete(t),this.#M(),this.#O()),e&&this.#e.size===0}}dispose(){this.#D(),this.#n.domain.clear(),this.#n.range.clear(),this.#r.dispose()}#D(){for(let e of this.#c)e();this.#c=[],this.#d=void 0}#O(){if(this.#D(),this.#e.size===0)return;let e=this.#b();e&&(this.#d=this.#w(e),this.#c.push(e.runtime.subscribe(e.param,()=>{let t=this.#d,n=this.#w(e);this.#T(t,n),this.#d=n,this.#M(),this.reconfigureDomain()})))}#k(){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(_h(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.#C()}isDomainInitialized(){let e=this.#r.scale;if(!e)return!1;let t=e.domain();return vm(e.type)?t.length>2||t.length==2&&(t[0]!==0||t[1]!==0):t.length>0}#A(){return CN(this,`mergedScaleProps`,()=>{let e=qF({channel:this.channel,dataType:this.type,members:this.#e,isExplicitDomain:this.isDomainDefinedExplicitly(),configScopes:this.#f.getConfigScopes()});return this.#N(e),e})}#j(){wN(this,`mergedScaleProps`)}#M(){this.#i.invalidateConfiguredDomain(),this.#j()}#N(e){let t=this.#b();if(!t||e===null||e.type===`null`)return;let n=vm(e.type)&&!ym(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.#A();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.#A();if(!(e===null||e.type===`null`))return e.type}#P(e=!1){let t=this.#A();if(t===null||t.type==`null`)return{type:`null`};let n={...t},r=this.#S(e,n.type===`locus`?n.assembly:void 0);if(ym(n.type)){let t=this.isDomainDefinedExplicitly(),i=this.#F(t);if(r!=null){if(t&&i.domain().length>0&&!Yl(i.domain(),r))return this.#o=void 0,this.#P(e);i.addAll(r);let a=new Set(r),o=i.domain().filter(e=>a.has(e));n.domain=o.length>0?o:new uI}else{let e=i.domain();n.domain=e.length>0?e:new uI}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}#F(e){return(!this.#o||this.#s!==e)&&(this.#o=uN(),this.#s=e),this.#o}reconfigure(){this.#v(()=>{this.#M();let e=this.#I(!0);e&&(this.#L(e,(e,t)=>this.#r.reconfigureScale(t)),this.#R(e))})}reconfigureDomain(){this.#v(()=>{this.#j();let e=this.#I(!0,!0);if(!e)return;let{domainConfig:t,targetDomain:n}=e,r=n!=null&&Yl(n,e.scale.domain());n!=null&&!r&&this.#L(e,e=>{e.domain(n),t.applyOrdinalUnknown&&e.unknown(t.ordinalUnknown)}),this.#R(e),this.syncLinkedSelectionFromDomain()})}#I(e,t=!1){let n=this.#r.scale;if(!n||n.type==`null`)return;let r={scale:n,props:this.#P(e),previousDomain:n.domain(),domainWasInitialized:this.isDomainInitialized(),hasSelectionConfiguredDomain:this.#i.hasSelectionConfiguredDomain()};if(t){let e=mF(n,r.props);return{...r,domainConfig:e,targetDomain:e.domain}}return r}#L(e,t){this.#r.withDomainNotificationsSuppressed(()=>{t(e.scale,e.props)})}#R(e){let{scale:t,previousDomain:n,domainWasInitialized:r,hasSelectionConfiguredDomain:i}=e,a=i?this.#i.getDefaultDomain(!0):void 0;if(this.#i.captureInitialDomain(t,r,a)){this.#_(`domain`);return}let o=t.domain(),s=this.#a.getDomainChangeAction(n,o);s===`restore`?i?this.#_(`domain`):this.#r.withDomainNotificationsSuppressed(()=>{t.domain(n)}):s===`animate`?i?this.#_(`domain`):this.#k()?(this.#r.withDomainNotificationsSuppressed(()=>{t.domain(n)}),this.zoomTo(o,500)):this.#_(`domain`):s===`notify`&&this.#_(`domain`)}get scale(){if(this.#r.scale)return this.#r.scale;throw Error(`ScaleResolution.scale accessed before initialization. Call initializeScale().`)}getScale(){return this.#r.scale??this.initializeScale()}initializeScale(){if(this.#r.scale)return this.#r.scale;let e=this.#P();return this.#r.createScale(e)}getDomain(){return this.getScale().domain()}getDataDomain(){return this.#i.getDataDomain()}getComplexDomain(){return $P(this.#g(),XF(this.type,this.getDomain()))}getLinkedSelectionDomainInfo(){let e=this.#b();if(!e)return;let t=this.#f.getLayoutAncestors().at(-1),n=t?iI(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.#a.isZoomed()}isZoomable(){let e=this.#A();return e===null||e.type===`null`?!1:vm(e.type)&&!ym(e.type)&&!!e.zoom}zoom(e,t,n){return this.#a.zoom(e,t,n)}async zoomTo(e,t=!1){return this.#a.zoomTo(e,t)}resetZoom(){return this.#a.resetZoom()}getZoomLevel(){return this.#a.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 XP(this.#g(),e)}fromComplex(e){return ZP(this.#g(),e)}fromComplexInterval(e){return this.type==`locus`?QP(this.#g(),e):e}};function II(e,t){return e===t?!0:!e||!t?!1:e.length===t.length&&Yl(e,t)}function LI(e){let t=e.channelDef.scale,n=t?.assembly;if(!t||!n||typeof n!=`object`||!(`url`in n))return e;let r=IP(e.view.getBaseUrl(),n.url);return r===n.url?e:{...e,channelDef:{...e.channelDef,scale:{...t,assembly:{...n,url:r}}}}}function RI(...e){for(let t of e)if(t!==void 0)return t}var zI=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=KF(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:DF(e.filter(e=>e!==void 0),`axis`,[`title`])})}getTitle(){let e=KF(this.#e).map(e=>{let t=Nh(e.view,e.channel);if(!Oh(t))return{member:e,axisTitle:`axis`in t?t.axis?.title:void 0,explicitTitle:RI(`axis`in t?t.axis?.title:void 0,t.title),implicitTitle:RI(kh(t)?t.field:void 0,Fh(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(Gh(t.member.channel)&&!t.explicitTitle){let n=qh(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=>RI(e.explicitTitle,e.implicitTitle)).filter(P));return r.size?[...r].join(`, `):null}};function BI(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+=KI(t.px)+(GI(t)?0:n),s+=KI(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&&GI(e[0]))return[{location:p,size:0}];for(let t=0;t<e.length;t++){let r=e[t];if(GI(r))u.push(r);else{f(d.length>0);let e=KI(r.px)+(s?KI(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 VI(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 HI=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)}},UI=Object.freeze({px:0,grow:0}),WI=new HI(UI,UI);function GI(e){return!e.px&&!e.grow}function KI(e){return e||0}function qI(e){return e&&(N(e.px)||N(e.grow))}function JI(e){if(Pz(e))throw Error(`parseSizeDef does not accept step-based sizes.`);if(qI(e))return e;if(N(e))return{px:e,grow:0};if(e===`container`||!e)return{px:0,grow:1};throw Error(`Invalid sizeDef: ${e}`)}var YI=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):XI}static createFromRecord(t){return new e(t.top,t.right,t.bottom,t.left)}static zero(){return XI}static createUniformPadding(t){return new e(t,t,t,t)}},XI=YI.createUniformPadding(0);Object.freeze(XI);var ZI=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}},QI=Symbol(`runtimeNode`),$I=1e6;function eL(e){return e?(t,n)=>{e.addDisposer(t,n)}:()=>void 0}function tL(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,QI,{enumerable:!1,configurable:!1,writable:!1,value:e}),t?Object.assign(n,{set(e){t(e)}}):n}function nL(e){let t=e[QI];if(!t)throw Error(`ParamRef is not bound to this graph runtime. Expected runtime-created ref.`);return t}function rL(e){for(let t of e)t()}var iL=class{#e=1;#t=1;#n=0;#r=!1;#i=!1;#a=new Set;#o=new Set;#s=new ZI;#c=new ZI;#l=new Set;#u;constructor(e={}){this.#u=eL(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()}),tL(s,e=>{if(s.disposed)throw Error(`Cannot set disposed parameter "`+t+`" (`+a+`).`);e!==s.value&&(s.value=e,o&&(rL(s.listeners),this.#m()))})}computed(e,t,n,r){let i=n.map(nL).reduce((e,t)=>Math.max(e,t.rank),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))}),tL(a)}effect(e,t,n){let r=t.map(nL).reduce((e,t)=>Math.max(e,t.rank),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,rL(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%$I;return this.#t+=1,e*$I+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()}}},aL=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)}}},oL=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){gg(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){gg(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}}},sL=`RawCode`,cL=`Literal`,lL=`Property`,uL=`Identifier`,dL=`ArrayExpression`,fL=`BinaryExpression`,pL=`CallExpression`,mL=`ConditionalExpression`,hL=`LogicalExpression`,gL=`MemberExpression`,_L=`ObjectExpression`,vL=`UnaryExpression`;function yL(e){this.type=e}yL.prototype.visit=function(e){let t,n,r;if(e(this))return 1;for(t=bL(this),n=0,r=t.length;n<r;++n)if(t[n].visit(e))return 1};function bL(e){switch(e.type){case dL:return e.elements;case fL:case hL:return[e.left,e.right];case pL:return[e.callee].concat(e.arguments);case mL:return[e.test,e.consequent,e.alternate];case gL:return[e.object,e.property];case _L:return e.properties;case lL:return[e.key,e.value];case vL:return[e.argument];case uL:case cL:case sL:default:return[]}}var xL,Y,X,SL,Z,CL=1,wL=2,TL=3,EL=4,DL=5,OL=6,kL=7,AL=8,jL=9;xL={},xL[CL]=`Boolean`,xL[wL]=`<end>`,xL[TL]=`Identifier`,xL[EL]=`Keyword`,xL[DL]=`Null`,xL[OL]=`Numeric`,xL[kL]=`Punctuator`,xL[AL]=`String`,xL[jL]=`RegularExpression`;var ML=`ArrayExpression`,NL=`BinaryExpression`,PL=`CallExpression`,FL=`ConditionalExpression`,IL=`Identifier`,LL=`Literal`,RL=`LogicalExpression`,zL=`MemberExpression`,BL=`ObjectExpression`,VL=`Property`,HL=`UnaryExpression`,UL=`Unexpected token %0`,WL=`Unexpected number`,GL=`Unexpected string`,KL=`Unexpected identifier`,qL=`Unexpected reserved word`,JL=`Unexpected end of input`,YL=`Invalid regular expression`,XL=`Invalid regular expression: missing /`,ZL=`Octal literals are not allowed in strict mode.`,QL=`Duplicate data property in object literal not allowed in strict mode`,$L=`ILLEGAL`,eR=`Disabled.`,tR=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]`),nR=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 rR(e,t){if(!e)throw Error(`ASSERT: `+t)}function iR(e){return e>=48&&e<=57}function aR(e){return`0123456789abcdefABCDEF`.includes(e)}function oR(e){return`01234567`.includes(e)}function sR(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 cR(e){return e===10||e===13||e===8232||e===8233}function lR(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e===92||e>=128&&tR.test(String.fromCharCode(e))}function uR(e){return e===36||e===95||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===92||e>=128&&nR.test(String.fromCharCode(e))}var dR={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 fR(){for(;X<SL;){let e=Y.charCodeAt(X);if(sR(e)||cR(e))++X;else break}}function pR(e){var t,n,r,i=0;for(n=e===`u`?4:2,t=0;t<n;++t)X<SL&&aR(Y[X])?(r=Y[X++],i=i*16+`0123456789abcdef`.indexOf(r.toLowerCase())):Q({},UL,$L);return String.fromCharCode(i)}function mR(){var e=Y[X],t=0,n,r;for(e===`}`&&Q({},UL,$L);X<SL&&(e=Y[X++],aR(e));)t=t*16+`0123456789abcdef`.indexOf(e.toLowerCase());return(t>1114111||e!==`}`)&&Q({},UL,$L),t<=65535?String.fromCharCode(t):(n=(t-65536>>10)+55296,r=(t-65536&1023)+56320,String.fromCharCode(n,r))}function hR(){var e=Y.charCodeAt(X++),t=String.fromCharCode(e);for(e===92&&(Y.charCodeAt(X)!==117&&Q({},UL,$L),++X,e=pR(`u`),(!e||e===`\\`||!lR(e.charCodeAt(0)))&&Q({},UL,$L),t=e);X<SL&&(e=Y.charCodeAt(X),uR(e));)++X,t+=String.fromCharCode(e),e===92&&(t=t.substr(0,t.length-1),Y.charCodeAt(X)!==117&&Q({},UL,$L),++X,e=pR(`u`),(!e||e===`\\`||!uR(e.charCodeAt(0)))&&Q({},UL,$L),t+=e);return t}function gR(){for(var e=X++,t;X<SL;){if(t=Y.charCodeAt(X),t===92)return X=e,hR();if(uR(t))++X;else break}return Y.slice(e,X)}function _R(){var e=X,t=Y.charCodeAt(X)===92?hR():gR();return{type:t.length===1?TL:dR.hasOwnProperty(t)?EL:t===`null`?DL:t===`true`||t===`false`?CL:TL,value:t,start:e,end:X}}function vR(){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:kL,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:kL,value:String.fromCharCode(t)+String.fromCharCode(n),start:e,end:X};case 33:case 61:return X+=2,Y.charCodeAt(X)===61&&++X,{type:kL,value:Y.slice(e,X),start:e,end:X}}}if(o=Y.substr(X,4),o===`>>>=`)return X+=4,{type:kL,value:o,start:e,end:X};if(a=o.substr(0,3),a===`>>>`||a===`<<=`||a===`>>=`)return X+=3,{type:kL,value:a,start:e,end:X};if(i=a.substr(0,2),r===i[1]&&`+-<>&|`.includes(r)||i===`=>`)return X+=2,{type:kL,value:i,start:e,end:X};if(i===`//`&&Q({},UL,$L),`<>=!+-*%&|^/`.includes(r))return++X,{type:kL,value:r,start:e,end:X};Q({},UL,$L)}function yR(e){let t=``;for(;X<SL&&aR(Y[X]);)t+=Y[X++];return t.length===0&&Q({},UL,$L),lR(Y.charCodeAt(X))&&Q({},UL,$L),{type:OL,value:parseInt(`0x`+t,16),start:e,end:X}}function bR(e){let t=`0`+Y[X++];for(;X<SL&&oR(Y[X]);)t+=Y[X++];return(lR(Y.charCodeAt(X))||iR(Y.charCodeAt(X)))&&Q({},UL,$L),{type:OL,value:parseInt(t,8),octal:!0,start:e,end:X}}function xR(){var e,t,n=Y[X];if(rR(iR(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,yR(t);if(oR(n))return bR(t);n&&iR(n.charCodeAt(0))&&Q({},UL,$L)}for(;iR(Y.charCodeAt(X));)e+=Y[X++];n=Y[X]}if(n===`.`){for(e+=Y[X++];iR(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++]),iR(Y.charCodeAt(X)))for(;iR(Y.charCodeAt(X));)e+=Y[X++];else Q({},UL,$L);return lR(Y.charCodeAt(X))&&Q({},UL,$L),{type:OL,value:parseFloat(e),start:t,end:X}}function SR(){var e=``,t,n,r,i,a=!1;for(t=Y[X],rR(t===`'`||t===`"`,`String literal must starts with a quote`),n=X,++X;X<SL;)if(r=Y[X++],r===t){t=``;break}else if(r===`\\`)if(r=Y[X++],!r||!cR(r.charCodeAt(0)))switch(r){case`u`:case`x`:Y[X]===`{`?(++X,e+=mR()):e+=pR(r);break;case`n`:e+=`
|
|
786
|
-
|
|
787
|
-
`&&++X;else if(cR(r.charCodeAt(0)))break;else e+=r;return t!==``&&Q({},UL,$L),{type:AL,value:e,octal:a,start:n,end:X}}function CR(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({},YL)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,`x`));try{new RegExp(n)}catch{Q({},YL)}try{return new RegExp(e,t)}catch{return null}}function wR(){var e=Y[X],t,n,r,i;for(rR(e===`/`,`Regular expression literal must start with a slash`),t=Y[X++],n=!1,r=!1;X<SL;)if(e=Y[X++],t+=e,e===`\\`)e=Y[X++],cR(e.charCodeAt(0))&&Q({},XL),t+=e;else if(cR(e.charCodeAt(0)))Q({},XL);else if(n)e===`]`&&(n=!1);else if(e===`/`){r=!0;break}else e===`[`&&(n=!0);return r||Q({},XL),i=t.substr(1,t.length-2),{value:i,literal:t}}function TR(){for(var e,t=``,n=``;X<SL&&(e=Y[X],uR(e.charCodeAt(0)));)++X,e===`\\`&&X<SL?Q({},UL,$L):(n+=e,t+=e);return n.search(/[^gimuy]/g)>=0&&Q({},YL,n),{value:n,literal:t}}function ER(){var e,t,n,r;return Z=null,fR(),e=X,t=wR(),n=TR(),r=CR(t.value,n.value),{literal:t.literal+n.literal,value:r,regex:{pattern:t.value,flags:n.value},start:e,end:X}}function DR(e){return e.type===TL||e.type===EL||e.type===CL||e.type===DL}function OR(){if(fR(),X>=SL)return{type:wL,start:X,end:X};let e=Y.charCodeAt(X);return lR(e)?_R():e===40||e===41||e===59?vR():e===39||e===34?SR():e===46?iR(Y.charCodeAt(X+1))?xR():vR():iR(e)?xR():vR()}function kR(){let e=Z;return X=e.end,Z=OR(),X=e.end,e}function AR(){let e=X;Z=OR(),X=e}function jR(e){let t=new yL(ML);return t.elements=e,t}function MR(e,t,n){let r=new yL(e===`||`||e===`&&`?RL:NL);return r.operator=e,r.left=t,r.right=n,r}function NR(e,t){let n=new yL(PL);return n.callee=e,n.arguments=t,n}function PR(e,t,n){let r=new yL(FL);return r.test=e,r.consequent=t,r.alternate=n,r}function FR(e){let t=new yL(IL);return t.name=e,t}function IR(e){let t=new yL(LL);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 LR(e,t,n){let r=new yL(zL);return r.computed=e===`[`,r.object=t,r.property=n,r.computed||(n.member=!0),r}function RR(e){let t=new yL(BL);return t.properties=e,t}function zR(e,t,n){let r=new yL(VL);return r.key=t,r.value=n,r.kind=e,r}function BR(e,t){let n=new yL(HL);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)=>(rR(t<r.length,`Message reference must be in range`),r[t]));throw n=Error(i),n.index=X,n.description=i,n}function VR(e){e.type===wL&&Q(e,JL),e.type===OL&&Q(e,WL),e.type===AL&&Q(e,GL),e.type===TL&&Q(e,KL),e.type===EL&&Q(e,qL),Q(e,UL,e.value)}function HR(e){let t=kR();(t.type!==kL||t.value!==e)&&VR(t)}function $(e){return Z.type===kL&&Z.value===e}function UR(e){return Z.type===EL&&Z.value===e}function WR(){let e=[];for(X=Z.start,HR(`[`);!$(`]`);)$(`,`)?(kR(),e.push(null)):(e.push(oz()),$(`]`)||HR(`,`));return kR(),jR(e)}function GR(){X=Z.start;let e=kR();return e.type===AL||e.type===OL?(e.octal&&Q(e,ZL),IR(e)):FR(e.value)}function KR(){var e,t,n,r;if(X=Z.start,e=Z,e.type===TL)return n=GR(),HR(`:`),r=oz(),zR(`init`,n,r);if(e.type===wL||e.type===kL)VR(e);else return t=GR(),HR(`:`),r=oz(),zR(`init`,t,r)}function qR(){var e=[],t,n,r,i={},a=String;for(X=Z.start,HR(`{`);!$(`}`);)t=KR(),n=t.key.type===IL?t.key.name:a(t.key.value),r=`$`+n,Object.prototype.hasOwnProperty.call(i,r)?Q({},QL):i[r]=!0,e.push(t),$(`}`)||HR(`,`);return HR(`}`),RR(e)}function JR(){HR(`(`);let e=sz();return HR(`)`),e}var YR={if:1};function XR(){var e,t,n;if($(`(`))return JR();if($(`[`))return WR();if($(`{`))return qR();if(e=Z.type,X=Z.start,e===TL||YR[Z.value])n=FR(kR().value);else if(e===AL||e===OL)Z.octal&&Q(Z,ZL),n=IR(kR());else if(e===EL)throw Error(eR);else e===CL?(t=kR(),t.value=t.value===`true`,n=IR(t)):e===DL?(t=kR(),t.value=null,n=IR(t)):$(`/`)||$(`/=`)?(n=IR(ER()),AR()):VR(kR());return n}function ZR(){let e=[];if(HR(`(`),!$(`)`))for(;X<SL&&(e.push(oz()),!$(`)`));)HR(`,`);return HR(`)`),e}function QR(){X=Z.start;let e=kR();return DR(e)||VR(e),FR(e.value)}function $R(){return HR(`.`),QR()}function ez(){HR(`[`);let e=sz();return HR(`]`),e}function tz(){for(var e=XR(),t,n;;)if($(`.`))n=$R(),e=LR(`.`,e,n);else if($(`(`))t=ZR(),e=NR(e,t);else if($(`[`))n=ez(),e=LR(`[`,e,n);else break;return e}function nz(){let e=tz();if(Z.type===kL&&($(`++`)||$(`--`)))throw Error(eR);return e}function rz(){var e,t;if(Z.type!==kL&&Z.type!==EL)t=nz();else if($(`++`)||$(`--`))throw Error(eR);else if($(`+`)||$(`-`)||$(`~`)||$(`!`))e=kR(),t=rz(),t=BR(e.value,t);else if(UR(`delete`)||UR(`void`)||UR(`typeof`))throw Error(eR);else t=nz();return t}function iz(e){let t=0;if(e.type!==kL&&e.type!==EL)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 az(){var e=Z,t,n,r,i,a,o,s,c=rz(),l;if(r=Z,i=iz(r),i===0)return c;for(r.prec=i,kR(),t=[e,Z],o=rz(),a=[c,r,o];(i=iz(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=MR(s,c,o),a.push(n);r=kR(),r.prec=i,a.push(r),t.push(Z),n=rz(),a.push(n)}for(l=a.length-1,n=a[l],t.pop();l>1;)t.pop(),n=MR(a[l-1].value,a[l-2],n),l-=2;return n}function oz(){var e=az(),t,n;return $(`?`)&&(kR(),t=oz(),HR(`:`),n=oz(),e=PR(e,t,n)),e}function sz(){let e=oz();if($(`,`))throw Error(eR);return e}function cz(e){Y=e,X=0,SL=Y.length,Z=null,AR();let t=sz();if(Z.type!==wL)throw Error(`Unexpect token after expression.`);return t}var lz={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 uz(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 dz(e){let t=e&&e.length-1;return t&&(e[0]===`"`&&e[t]===`"`||e[0]===`'`&&e[t]===`'`)?e.slice(1,-1):e}function fz(e){e||={};let t=e.allowed?Mt(e.allowed):{},n=e.forbidden?Mt(e.forbidden):{},r=e.constants||lz,i=(e.functions||uz)(d),a=e.globalvar,o=e.fieldvar,s=pt(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(P(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:xt(n,i)?qe(`Illegal identifier: `+i):xt(r,i)?r[i]:xt(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[dz(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=xt(i,t)&&i[t];return r||qe(`Unrecognized function: `+t),pt(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 pz(e,t,n){return tM((n-e)/(t-e),0,1)}function mz(e){return O(e)||ArrayBuffer.isView(e)?e:null}function hz(e){return mz(e)||(P(e)?e:null)}var gz={clamp:tM,format(e,t){return sr(t)(e)},join(e,t){return mz(e).join(t)},indexof(e,t,n){return hz(e).indexOf(t,n)},lastindexof(e,t,n){return hz(e).lastIndexOf(t,n)},reverse(e){return mz(e).slice().reverse()},slice(e,t,n){return hz(e).slice(t,n)},mapHasKey(e,t){return e.has(t)},isArray:O,isBoolean:St,isDefined(e){return e!==void 0},isNumber:N,isObject:Qe,isRegExp:Tt,isString:P,isValid(e){return e!=null&&e===e},lerp:F,linearstep:pz,replace(e,t,n){return String(e).replace(t,n)},sort(e){return mz(e).slice().sort(gt)},smoothstep:Ql};function _z(e){let t=uz(e);for(let e in gz)t[e]=`this.${e}`;return t}var vz=fz({forbidden:[],allowed:[`datum`,`undefined`],globalvar:`globalObject`,fieldvar:`datum`,functions:_z});function yz(e,t={}){try{let n=vz(cz(e)),r=Function(`datum`,`globalObject`,`"use strict";
|
|
788
|
-
try {
|
|
789
|
-
return (${n.code});
|
|
790
|
-
} catch (e) {
|
|
791
|
-
throw new Error("Error evaluating expression: " + ${JSON.stringify(e)} + ", " + e.message, e);
|
|
792
|
-
}`).bind(gz),i=e=>r(e,t);return i.fields=n.fields,i.globals=n.globals,i.code=n.code,i}catch(t){throw Error(`Invalid expression: ${e}, ${t.message}`,{cause:t})}}var bz=fz({forbidden:[],allowed:[`event`],globalvar:`globalObject`});function xz(e){try{let t=bz(cz(e));return Function(`event`,`globalObject`,`"use strict";
|
|
793
|
-
try {
|
|
794
|
-
return !!(${t.code});
|
|
795
|
-
} catch (e) {
|
|
796
|
-
throw new Error("Error evaluating expression: " + ${JSON.stringify(e)} + ", " + e.message, e);
|
|
797
|
-
}`)}catch(t){throw Error(`Invalid expression: ${e}, ${t.message}`,{cause:t})}}function Sz(e,t={}){return yz(e,t)}function Cz(e,t){let n={},r=Sz(e,n),i=new Map;for(let a of r.globals){if(i.has(a))continue;let r=t(a);if(!r)throw Error(`Unknown variable "`+a+`" in expression: `+e);i.set(a,r),Object.defineProperty(n,a,{enumerable:!0,get(){return r.get()}})}let a=new Set;return r.subscribe=e=>{let t=[];for(let n of i.values())t.push(n.subscribe(e));let n=!0,r=()=>{n&&(n=!1,a.delete(r),t.forEach(e=>e()))};return a.add(r),r},r.invalidate=()=>{for(let e of a)e();a.clear()},r.identifier=()=>r.code+`|`+Array.from(i.values()).map(e=>e.id).join(`,`),{expression:r,dependencies:Array.from(i.values())}}var wz=class{#e=new aL;#t=new iL({lifecycleRegistry:this.#e});#n=new oL;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){let{expression:r,dependencies:i}=Cz(n,t=>this.resolve(e,t)),a=this.#n.getOwnerId(e),o=this.#t.computed(a,t,i,()=>r(null));return this.#n.register(e,t,o)}createExpression(e,t){let{expression:n}=Cz(t,t=>this.resolve(e,t));return n}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)}},Tz=class{#e;#t;#n=new Map;#r=new Map;#i=new Map;#a;#o=!1;constructor(e){this.#a=e??(()=>void 0);let t=this.#a();t?(this.#e=t.#e,this.#t=this.#e.createScope(t.#t)):(this.#e=new wz,this.#t=this.#e.createScope())}registerParam(e){let t=e.name;if(gg(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=_g(e,this),n=this.#s(t,r);else if(`expr`in e){let r=this.#e.registerDerived(this.#t,t,e.expr);this.#r.set(t,r),n=()=>{throw Error(`Cannot set derived parameter "`+t+`".`)}}else r=_g(e,this),n=this.#s(t,r);if(`select`in e){if(r??=_g(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(gg(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){gg(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){gg(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 gg(e),this.#r.has(e)}hasConfiguredParamInScopeChain(e){return gg(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)}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}#s(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.#o||(this.#o=!0,this.#e.disposeScope(this.#t),this.#n.clear(),this.#r.clear(),this.#i.clear())}hasPointSelections(){for(let e of this.#i.values())if(hg(e)){let t=e.select;if(P(t)){if(t==`point`)return!0}else if(t.type==`point`)return!0}return!1}},Ez=`VISIT_SKIP`,Dz=`VISIT_STOP`,Oz=e=>e,kz=class{spec;#e;#t;#n={};#r={};#i={};#a;#o;#s=!1;opacityFunction=Oz;#c=[];#l=`none`;facetCoords=new hn([],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 Tz(()=>this.dataParent?.paramRuntime),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 z(e)?this.paramRuntime.evaluateAndGet(e.expr):e}watchCursor(e,t){let n=this.getCursorSpec();z(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`,()=>YI.createFromConfig(this.spec.padding))}getOverhang(){return YI.zero()}isScrollable(){return this.spec.viewportWidth!=null||this.spec.viewportHeight!=null}getSize(){return this._cache(`size/size`,()=>this.isConfiguredVisible()?new HI(this.#d(`width`),this.#d(`height`)):WI)}getViewportSize(){if(!this.isScrollable())return this.getSize();if(!this.isConfiguredVisible())return WI;let e=this.getSize();return new HI(this.#d(`viewportWidth`)??e.width,this.#d(`viewportHeight`)??e.height)}#d(e){let t=this.spec[e],n=Pz(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(ym(i.type))e=i.domain().length;else if([`locus`,`index`].includes(i.type)){let t=i.domain();e=Zl(t)-t[0]}else throw new AN(`Cannot use step-based size with "${i.type}" scale!`,this);let t=i;return e=Lp(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&&JI(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(!Pz(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===Oz)&&(this.opacityFunction=jz(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 kh(t)?[t.field]:this.layoutParent?.getFacetFields(this)}getSampleFacetTexture(){}getScaleResolution(e){let t=qh(e);return this.getDataAncestors().map(e=>e.resolutions.scale[t]).find(e=>e)}getAxisResolution(e){let t=qh(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 FP(()=>this.dataParent?.getBaseUrl(),ah(this.spec.baseUrl))}isPickingSupported(){return!0}getTitleText(){let e=this.spec.title;if(e)return P(e)?e:z(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 Az(e){return`unitsPerPixel`in e}function jz(e){let t=`opacity`in e.spec?e.spec.opacity:void 0;if(t!==void 0){if(N(t))return e=>e*t;if(Az(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=Nz(t.values,`opacity.values`,e);if(!O(t.unitsPerPixel))throw new AN(`"opacity.unitsPerPixel" must be an array.`,e);let i=()=>1,a=[],o=()=>{let t=Mz(Nz(a.map(e=>e()),`opacity.unitsPerPixel`,e),r,e),n=Jf().domain(t.unitsPerPixel).range(t.values).clamp(!0);i=e=>n(e)};a=t.unitsPerPixel.map(t=>{if(z(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 Et(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(z(t)){let n=e.paramRuntime.watchExpression(t.expr,()=>e.context.animator.requestRender());return e=>n(null)*e}}return e=>e}function Mz(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 Nz(e,t,n){if(!O(e))throw new AN(`"`+t+`" must evaluate to an array.`,n);return e.map((e,r)=>{if(!N(e)||!Number.isFinite(e))throw new AN(`Invalid `+t+` value at index `+r+`. Expected a finite number.`,n);return e})}var Pz=e=>!!e?.step;function Fz(e){return Iz(e?.search,`search`)}function Iz(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 Lz={point:nP,rect:YN,rule:cP,tick:cP,link:bP,text:EP},Rz=class extends kz{#e;#t=!1;#n=null;constructor(e,t,n,r,i,a){super(e,t,n,r,i,a),this.spec=e;let o=Lz[this.getMarkType()];if(o)this.mark=new o(this);else throw Error(`No such mark: ${this.getMarkType()}`);this.resolve(),this.#e=this.paramRuntime.allocateSetter(`zoomLevel`,1);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 Rh)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=sg(t.select),r=n.on,i=n.clear;if(cg(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?xz(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[sh]:0,l;n.toggle?r.mouseEvent.shiftKey?i&&(l=ng(this.paramRuntime.getValue(e),{toggle:[i]})):l=eg(i?[i]:null):c!=t&&(t=c,l=$h(i)),l!==void 0&&a(l)}),i){let e=i.filter?xz(i.filter):()=>!0;this.addInteractionListener(i.type,r=>{e(r.proxiedMouseEvent)&&(t=0,a(n.toggle?eg():$h(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}let t=this.mark.encoding;for(let[n,r]of Object.entries(t)){if(!r||Array.isArray(r))continue;let t;if(jh(r))t=r;else if(Lh(r)){let e=r.condition;if(!Array.isArray(e)&&jh(e))t=e;else continue}else continue;let i=qh(t.resolutionChannel??n);if(!Xh(i)||e==`axis`&&!Hh(i))continue;let a=this;for(;(a.getConfiguredOrDefaultResolution(i,e)==`forced`||a.dataParent&&[`shared`,`excluded`,`forced`].includes(a.dataParent.getConfiguredOrDefaultResolution(i,e)))&&a.getConfiguredOrDefaultResolution(i,e)!=`excluded`;)a=a.dataParent;if(e==`axis`&&Hh(n)&&Vh(i)){a.resolutions[e][i]||(a.resolutions[e][i]=new zI(i));let r=a.resolutions[e][i],o=r.registerMember({view:this,channel:n,channelDef:t});this.registerDisposer(()=>{o()&&a.resolutions[e][i]===r&&delete a.resolutions[e][i]})}else if(e==`scale`&&Xh(n)){if(!a.resolutions[e][i]){let t=new FI(i);a.resolutions[e][i]=t;let n=e=>{this.context.glHelper?.createRangeTexture(e.scaleResolution,!0)};t.addEventListener(`range`,n),t.addEventListener(`domain`,n),this.registerDisposer(()=>{t.removeEventListener(`range`,n),t.removeEventListener(`domain`,n)})}let r=!this.isDomainInert(),o=a.resolutions[e][i],s=o.registerMember({view:this,channel:n,channelDef:t,contributesToDomain:r});this.registerDisposer(()=>{s()&&a.resolutions[e][i]===o&&(o.dispose(),delete a.resolutions[e][i])})}}}dispose(){super.dispose(),this.mark.dispose()}getDataAccessor(e){let t=this.mark.encoders;if(t)return t[e]?Th(t[e]):void 0}getSearchAccessors(){return this.#n||=(Fz(this.getEncoding())??[]).map(e=>R(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=Jm(e),r=new Map;for(let e of Object.values(t)){if(!e)continue;let t=wh(e);if(t.length!==0)for(let e of t){if(!ph(e))continue;let t=this.getScaleResolution(e.scaleChannel);if(!t)throw Error(`Missing scale resolution for channel: `+e.scaleChannel);if(e.channelDef.domainInert||zz(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 Rh.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 zz(e,t,n){return!t.isDomainDefinedExplicitly()&&n.has(qh(e.scaleChannel))}var Bz=class extends Error{constructor(e,t){super(t),this.kind=e}};async function Vz(e,t={}){let n;try{n=await fetch(e,{signal:t.signal})}catch(e){throw new Bz(`network`,String(e))}if(!n.ok)throw new Bz(`http`,String(n.status)+` `+n.statusText);try{return await n.json()}catch(e){throw new Bz(`json`,String(e))}}function Hz(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 Uz(e){for(let t of Rh){let n=e.getScaleResolution(t);n&&!n.name&&n.isZoomable()&&(n.name=`${t}_at_root`)}}function Wz(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 Gz(e,t,n){let r=e.import;if(!(`url`in r))throw Error(`Not an url import: `+JSON.stringify(r));let i=FP(t,r.url),a;try{a=await Vz(i)}catch(e){throw Error(`Could not load imported view spec: ${i}. Reason: ${e.message}`,{cause:e})}if(n.isViewSpec(a))return a.baseUrl=FP(LP(r.url),a.baseUrl),a;throw Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(e)}`)}function Kz(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*qz(e,t=[]){for(let[n,r]of e.entries())if(r instanceof Map)for(let e of qz(r,[...t,n]))yield e;else yield[[...t,n],r]}var Jz=2147483647,Yz=Zz([Jz]);function Xz(e){for(let t=1;t<e.length;t++)if(e[t]<e[t-1])return!1;return!0}function Zz(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 Qz(e){let t=Zz(e),n=Array.from({length:e.length},(e,t)=>t);if(Xz(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>=Yz?i>Jz?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 $z=`|`,eB=`\\`,tB=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+=$z);let r=i[n],a=nB(t[n],r);e+=iB(a)}a=e}else{let e=i[0];a=nB(t[0],e)}return this.#e.get(a)}#r(e,t){let n=e.map(e=>R(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+=$z);let r=e[t],i=nB(n[t](o),r);s+=iB(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=nB(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 nB(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 rB(e){if(!(e.indexOf(eB)!==-1||e.indexOf($z)!==-1))return e;let t=``;for(let n=0;n<e.length;n++){let r=e[n];(r===eB||r===$z)&&(t+=eB),t+=r}return t}function iB(e){return typeof e==`string`?rB(e):String(e)}var aB=class extends qm{#e=[];#t=R(sh);#n=[];#r=new tB;#i;#a;#o=new oB;get behavior(){return 4}get label(){return`collect`}constructor(e){super(),this.params=e??{type:`collect`},this.observers=new Set,this.facetBatches=new hn([],JSON.stringify),this.#a=cB(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(),Xm(e)&&(this.#e=[],this.facetBatches.set(Xl(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=>R(e)),n=t.length>1?xn(e,...t):sB(e,t[0]);this.facetBatches.clear();for(let[e,t]of qz(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=pI(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=Qz(n)}findDatumByUniqueId(e){if(!this.#n.length)return;let t=on(e=>e.start).right,n=this.#t,r=on(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())}},oB=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 sB(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 cB(e){if(e?.field){let t=Xl(e.field);if(t.length==1&&!t[0].includes(`.`)){let n=Xl(e.order)[0]??`ascending`,r=JSON.stringify(t[0]);return Function(`a`,`b`,`return a[${r}] ${n===`ascending`?`-`:`+`} b[${r}];`)}return ht(e.field,e.order)}}var lB=class extends oh{get behavior(){return 1}constructor(e){super(e),this.params=e,this.startAccessor=R(e.start),this.endAccessor=R(e.end),this.chromAccessor=e.chrom?R(e.chrom):e=>void 0,this.weightAccessor=e.weight?R(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 ZI}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 uB(e,t,n=e=>+e,r=0,i=e.length){let a=new ZI,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 dB=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}},fB=class extends oh{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=R(this.params.pos),this.endPosAccessor=R(this.params.pos2??this.params.pos),this.startPosBisector=on(this.startPosAccessor),this.endPosBisector=on(this.endPosAccessor),this.scoreAccessor=R(this.params.score),this.widthAccessor=R(this.params.width),this.laneAccessor=this.params.lane?R(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 dB(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=uB(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 oh{constructor(e,t){super(e,t),this.params=e,this.predicate=void 0}initialize(){let e;if(mB(this.params))e=this.params.expr;else if(hB(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=rg(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 mB(e){return`expr`in e}function hB(e){return`param`in e}var gB=class extends oh{get behavior(){return 1}constructor(e){super(e),this.params=e;let t=e.index;if(e.fields){let n=Xl(e.fields).map(e=>R(e)),r=Xl(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)}}}},_B=48;function*vB(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-_B}yield r}var yB=class extends oh{get behavior(){return 1}constructor(e){super(e);let t=R(e.exons??`exons`),n=R(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 vB(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}}}},bB=class extends oh{get behavior(){return 1}constructor(e){super(e);let t=Xl(e.field).map(e=>R(e)),n=Xl(e.separator),r=Xl(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]));xB(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 xB(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 SB=class extends oh{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)}},CB=class extends oh{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=R(e.chrom),o=Xl(e.pos).map(e=>R(e)),s=Xl(e.as);if(o.length!=s.length)throw Error(`The number of "pos" and "as" elements must be equal!`);let c=Xl(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)}}},wB=class extends oh{get behavior(){return 2}constructor(e,t){super(e,t),this.params=e;let n=R(e.field),r=e.as,i=0;if(z(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()}},TB=65536,EB=class extends oh{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=N(e.spacing)?e.spacing:1,r=R(e.start),i=R(e.end);if(!e.preference!=!e.preferredOrder)throw Error(`Must specify both "preference" and "preferredOrder"`);if(e.preference){let a=new Float64Array(TB),o=R(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 ZI,a=new ZI,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)}}}},DB=class extends oh{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=>R(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)}}},OB=class extends oh{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=R(e.field);this.handle=i=>{let a=r(i);if(P(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)}}},kB=class extends oh{get behavior(){return 1}constructor(e){super(e),this.params=e;let t=Xl(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=Xl(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 {
|
|
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 {
|
|
799
799
|
`+u.join(`,
|
|
800
800
|
`)+`
|
|
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=>{
|
|
802
|
-
`)+` };`);return n.properties=t,n}function fV(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 pV=class extends oh{get behavior(){return 1}#e;#t=e=>e;constructor(){super({type:`clone`});let e=e=>{let t=fV(e);(!this.#e||!Yl(t,this.#e))&&(this.#e=t,this.#t=dV(e));let n=this.#t;this.handle=e=>this._propagate(n(e)),this.handle(e)};this.handle=e,this.beginBatch=t=>{Ym(t)&&(this.handle=e),super.beginBatch(t)}}};function mV(e){return`name`in e}var hV=class extends Zm{#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=HB(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 rT}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 Zm?this.removeDataSource(e):e.dispose()}}findNamedDataSource(e){let t;for(let n of this.#e.values())if(n instanceof hV&&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 _V(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 vV(e,t,n){let r=t.preOrder?.(e);if(r)return r;for(let r of n(e)){let e=vV(r,t,n);if(e===`stop`)return e}return t.postOrder?.(e)}function yV(e,t){return vV(e,t,e=>e.children)}function bV(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=PB(n,t)}catch(e){throw console.warn(e),Error(`Cannot initialize "${n.type}" transform: ${e}`,{cause:e})}e.behavior&2&&d(new pV),d(e)}}function p(){return i.findLastIndex(e=>e instanceof uh)>i.findLastIndex(e=>e instanceof Zm)}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 Rz)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=mV(e.spec.data)?new hV(e.spec.data,e,e.context.getNamedDataFromProvider):lV(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 Rz){if(!o)throw Error(`A unit view (${e.getPathString()}) has no (inherited) data source`);let t=SV(e);if(t){c.push(t.rewrite);for(let e of t.transforms)d(e)}e.mark.isPickingParticipant()&&!p()&&(d(new pV),d(new uh({type:`identifier`})));let n=new aB({type:`collect`,groupby:e.getFacetFields(),sort:CV(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=_V(xV(e,n),e=>e.dataParent);for(let e of h)yV(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 Ez;n.push(e)}),n}function SV(e){let t=[],n={},r=e.mark.encoding,i=e.getEncoding(),a=[];for(let[e,t]of Object.entries(r)){let n=e;qh(n)!==n&&!(n in i)||Hh(n)&&!Array.isArray(t)&&Ph(t)&&a.push({channel:n,chromPosDef:t})}let o=xn(a,e=>qh(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 pV),t.push(new CB({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 CV(e,t){let n={...e.getEncoding(),...t}.x;if(jh(n)&&e.getScaleResolution(`x`)?.isZoomable()){if(kh(n))return`buildIndex`in n&&n.buildIndex?{field:n.field}:null;if(!Ah(n)&&Fh(n))throw Error(`A zoomable x channel must be mapped to a field.`)}}function wV(e,t=void 0){if(e.parent!==t)return!1;for(let t of e.children)if(!wV(t,e))return!1;return!0}function TV(e,t=!1){if(e.behavior&4&&(t=!0),e instanceof pV)if(t)t=!1;else{let n=e.children[0];e.excise(),n&&TV(n,t);return}e.behavior&1&&(t=!1);for(let n=0,r=e.children.length;n<r;n++)TV(e.children[n],t||r>1)}function EV(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 DV(e){if(TV(e),!wV(e))throw Error(`Encountered a bug! There's a problem in the data flow structure.`)}function OV(e){let t=EV(e);for(let t of e.dataSources)DV(t);return t}var kV=new WeakMap,AV=new WeakMap;function jV(e,t){let n=kV.get(e);if(n){if(!t?.queueReload)return n;let r=AV.get(e);if(r)return r;let i=n.catch(()=>{}).then(()=>jV(e)).finally(()=>{AV.delete(e)});return AV.set(e,i),i}let r=Promise.resolve().then(()=>e.load()).finally(()=>{kV.delete(e)});return kV.set(e,r),r}function MV(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 NV(e,t,n,r){let i=r??(()=>!0),a=LV(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=bV(e,t,n,e=>o.has(e)),MV(e,OV(s))}catch(e){for(let e of a)e._setDataInitializationState(`none`);throw e}let c=PV(a);for(let e of c)e.visit(e=>e.initializeOnce());let l=a.filter(e=>e instanceof Rz),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 PV(e,t){let n=Array.isArray(e)?e:LV(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 FV(e,t){let n=new Set;return e.visit(e=>{if(t&&!t(e))return Ez;if(e.flowHandle?.dataSource)return n.add(e.flowHandle.dataSource),Ez}),n}function IV(e,t,n,r){return t||=FV(e,n),Promise.all(Array.from(t).map(e=>jV(e,r))).then(t=>(RV(e),t))}function LV(e,t){let n=[];return t?(e.visit(e=>{if(!t(e))return Ez;n.push(e)}),n):e.getDescendants()}function RV(e){let t={type:`subtreeDataReady`,payload:{subtreeRoot:e}};e.visit(e=>e.handleBroadcast(t))}async function zV(e,t,n,r){let i=e=>e.isConfiguredVisible(),{dataFlow:a,graphicsPromises:o}=NV(e,t,i);return r(a),await n.waitUntilReady(),await IV(e,new Set(a.dataSources),i),await Wz(o),a}async function BV(e,t,n){let r=e=>e.isConfiguredVisible(),i=VV(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=UV(e);t?s.add(t):c.push(e)}let{dataFlow:l,graphicsPromises:u}=NV(e,t,r,o);await n.waitUntilReady();for(let e of s)e.repropagate();if(c.length){let e=HV(c);await Promise.all(Array.from(e.entries()).map(([e,t])=>IV(e,t,void 0,{queueReload:!0})))}return await Wz(u),l}function VV(e,t){let n=[];return e.visit(e=>{if(!t(e))return Ez;n.push(e)}),n}function HV(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 UV(e){let t=e.dataParent;for(;t;){let e=t.flowHandle?.collector;if(e)return e.completed?e:void 0;t=t.dataParent}}var WV=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 OI({requestAnimationFrame:e=>this.requestTransition(e),...e})}};function GV(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 KV=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=qV(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 zP({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 zP({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 zP({name:t,contigs:e.contigs});return this.genomes.set(t,n),n}let r=new zP({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 zP({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 qV(e){return typeof e==`string`?`name:${e}`:`inline:${JSON.stringify(e)}`}var JV={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:[]},YV=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAEFzklEQVR4AezcRXjr2BnG8b8SQ+gJOiA5d1NmZuZVuU133Zf3++6XxW27Ku7LzIzDrMgByxQGaxwfWVFGMly088z7e76Zi5bu6nvP+Y4sKwgC2n4KP4QfgEcvAVdZGHfuM++Fj8HHwUZERO6aMTocsMGhl4C7bbrzr7C5N0REFAC30nct7qwhdH8REQXAfKf7FrjTLPpJ7EPuMhERycB36XD+hX0/DuzSlsnw3OfyilcwAA/vn/yzQQMoUHg9r59hhn7Oz/njH9ncJAiAXNj9P2qTxdhARETufgDYNs4fsH/Cv2jL53nzm1lcZH2dngKCP/Gnn/LTEiXg+Tw/Q+btvJ1+/vlPfvYz/v1vEwA26w4fs8lm4R4GgIiIAmB5GdvGnmbuh9Rq8MIXcuMGpVJ6AFhEXNwneOI//OfnSz8fL49/jI+9lJcecjjJJD15Ho8+yo9/TKUCb7J5vY1tcw+JiOgMILYJcDpNuFQKq5+neMrFbRXLnI+fu7im6KlSCS9fqXDBccLb31siIgqARBOu1SiV8DzKZbpr0nRxWxnQqs8tv51lol/2Xf63qlS6euOpKYZIREQ7ANOHTYdu1SDL/wMOlguFlxW+Hf8dujMX9ryrNx4KEREFgGXd9BQoWu97S0vLbU36T4EOD6NwGf78R0REAZBoxWaJ3qqDA9Kcx3p9YXW1sLLSCoBM5jIV+i7/gwCWl8Nbzs0xLCIiCgDbDiub7b8JMF3exT3kMOM4a3bLmuNczoX22ScpPluK33KIREQUALmc2QS0KjGqT3BxzWKf2VmKhl0sEhD0ngKZS5ZKOgAQERmVAEg05KhVBwFXnXJ62eWLRYoGrRofv8yGHsv/gwOYmwtvtryMiIgMLQCSxwCHh92mQNGg/4gjEwCTxRZMRdOhPfbSl/86/hURGbUAmJ4eaAoULf/N/OeibDsKgPhf0AOgIiLXIQASbTn+la3ICSfRSS+xru84YY2NpU+BqtXwYr4PU1PaAYiIjFoAxNpy9NKGajV5/HvMcTwApqYuf2X+govboJG+/I82GiIiMiIBsLAQdualpStfCIg/AJqc/9DWewqUfABUy38RkREKgPjpbKJtc8xxdAIc7/dXAyBlCnR8HIuSbFYHACIioxgA6e+EODqKr+tPOU0GQHwKtMmm2SvUqcdzpNmM3SCXQ0RERicAVlbCFj07C81m/CjYrP1T5z/pUyArnALFJ0k6/hURGdEASL4XyNQRR2b5n5z/9JsCRdfQA6AiIqMdAClTIM+Ljn/POEsGQHIK5BF+ZGurZpb/+/uxS09PIyIiIxgApiYnYX/fjIDcrc7x79xc6vyn27NArY/qBXAiItcjAMbGnrkJOLzo4rH3/6yvR8v/vlMgz3tKb4AQEbkWAZBo1Ftb3vb25s6mi3vOeXyRn2S+5GuqRMk9cLd2Wp9u7O5CoRBedH4eEREZzQCIdgCZDJTLZd/f8Xe2m9u95z/JKdB2dXunsuP7uzr+FRG5HgGQz8fadbPpV6t+zW9VvLv3DQDLotwol+vlet2/HvMfEREFQLxdW1Cp16v1amWx0jMArOitotHf8hu+v+c3Gj5zc+HllpcREZFRDoD4AzvVWq1Sq1zOf9bW6CkKgPLr/Uqj0njkA/HLiYjIsGQYwMxMuAlYW+Oz//8/X/4/L3lJcvlvQdBrChR896vf1QHAdSIi2gEkm/Yg85/kFOjC5KQOAERERkEGPjT4McC6w/rfYQ6KS93nPx9K3QS8ulVPgdMJE8tCRESGGgAbDGBhAcdhw4YlWIUiqcv/b8Gn2UgNgI0iWGB3MkBERIYdAJ9iMO8Je3e7iu1Klbjg9HS7+5syV3AsRERk2AGQZzB52/TudhVhjVSpF8ybT0X5kUNERIZrjMGtJpb/gyuaCiPk+hARUQAYzq0GwMzVEZCIiAybFQQBIiLyrN4BiIiIAqAK34T3wxp8CX7N0+zZAQYCQRzF4bfMAQroCKETRMfYvWRHqFt0kI4wkaaQDQQ7+33mDPPz9wBwAQAgAAAIAAALU3KeWwEu+dglp7yNATqEADT35Np+/zGNAHQOEIDWgFsyBQAbAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAH8iAAAIAAACAIAAACAAAAgAAAIAgAAAULLPD9v0CYCSKXOO6RYAJaPff40ASg75tnm+5QLACAyAAAAgAAAMtdasBAAuAADKkJcHO3eZ3Uh2wFH8GtRkZmb2kXrCWUNWHGbmxAwyW2RmtpXSyOrwfJ9X93f+ghW8K6xZSP3LRvgvf4bvw/fgl7wq8iUlSaqlYgn2P62SgWYqcjBXWSAkyQBUXMCv/ysDST73d5j7/P6csEiSAajYgcy/LzWX7Z3rZQ5WkCSFGICKJ/jrp/cBh4f7f/9xam4q9ffUe94jSQo2ABWH8BPIzM9n5uYyf9/KHGe+zbd76UWSFG4AKtLp1YWF/dLOjjiqp94AxIAkA/D8zNISi4vXCwtn1L/hTTTCJ0n+EWx1lZWVaIn9wgwz0aaYInCSZACKRdbXWVtjdXWSySmmppnuppvASZIB2NxkY4N0mkJhnPFok0wSPkkyAFtbpW1ujjASbYyxDjoInCQZgNNTdnfZ2WFvb4ihYYajIUkKPwCZTGn7+3XU9dM/wMAgg4RPkgxAPk8uRzbbQ08vvX30VVNN4CTJANzfc3BAoRCtm+7yCJ8kGYCjo9dBO+0ddHTSSfgkyQCcnXF6yslJE01ttEXzGnDxIMkAXFxwfh6tmeZoLbQgKRZkAK6uymugIVojjUiKBRmA29vSbm4+8KGOumhIkmIRgLu70u7v3/O+PCRJ4Qfg8fF1kCDhJaAlKTYBeH7m5aV0D7XU1lATDUlS+AEoFl9XQhVV0ZAkhR+AqqrSqquBIsUXXqIhSQo/ALW1pdXUAE88lYckKRYBSCR484aqqgceykOSFH4AIu/elXfL7Q030ZAkxSIAHz6UVld3xdU119E9kqRYBKC+noaGaJdcXnARDUlSLALQ1FRac/MZZ6ecnnCCJCkWAWhpobU12jXXxxxHO+ccSVL4AWhvL62jg0TigIPykCSFH4Dqarq6SuvuLlDIkcuSRZIUfgAiPT309tLXlyWbIRPNH4NKUjwC0NdHfz8DA0+Jqj32dtndYQdJUvgB+PCBwUGGhhgZ2WFnm+1oSJLCD0BkZITR0Wh58ptspknbgHiQZAD6+hgfZ2KC4eE06XXW11hDkhR+ACITE0xOMj29xdYqqyuspEkjSbEXgwAMDzMzU9rU1DLLUQCiEiBJCkItX2x2lu3tod3d5P5d63XrW94iKQ5kAJp6elKpVDKTSWbbkr9Nfo2vETxJMgDJ8j5+TGXzyVxyND/KFpKkkAPQD0lIlQPw7l3qs+8k8glylHaHJCnAANR/OvcrTzqAkQQfeQ3AHwiNJBmAmX8596NN8C8+g1xlewRCkgxAz3+98H/Hv6v7lwbk4ZEvNUlSVbFYRJLkH8FiQpL0D/buAqqtNd/7+DcUSQrBQ4TgGg6NNEyZqZ13pvJed3dZet3d71123WXZdR13OX7OSIVOE6BKC6USCMGC9oS2+z6bTUIoFkrP9Ib+P+u3Uk+C/X/7efZOycHEanzwy/Aq643CS/Cn8MPQBQWk6YU/htNg2jTrmDZJDnwV/Cn087TNwz/B14Ips9TBL8I5duwe/AUcA9Nq/o8TQshVQL3gTMaDIQF9azPKWl6IwdhywuxOIJlOstZ0MkIIkT0FkN4BLihhcO3ov8Im/DAGseVEeFK1cDBZAFksnowQQmRVAYxAL7iYck71Hy9Ln/4zbK7C6IBkHrBzFggkUyoFIIQQz+KVwL30O/v7nH19rnf1NTf3wTCbej9JHoi9SSzKGPRgcOI8ylEUE2g8JhxmYABNS9v8cQd4TwvLvp2thMPh4eHhRCJRWVnZ0dFRVVW11bMzzMOn2Lk6OISy7dOKRLhy5cHUVDw/P15XN+PzIYQQWVQAceJfevClvl41/Qf6XAV91dUPLRYyKQDF72fsc3pi00ZpBAlasfrwsYYJuHWLM2d4/XUePgRaqQpwOkAgkMmkPXPmzJtvvnn58uXFxcWampqxsbETJ05UVFRsUwBP0gF1y2H7Ahgf54031DObHh2dtlimOztZWqKri2whhJACGGDgLd46c+dMX99CzO2mtpaurkwLoLiYQIBYjLHPqhooX7TkkefE6cBhx06ahQVCIT3nzjE4VaaP/oMHCQQwm9nO1NSUGv2qA954443p6Wmv15ubm+t2uw8fPszjPsJ68+Rt3QGvwImlJZRaqCNDg4P09vLaa/H+/nh5eXxxEaeTjg727ycrCCGkAAoosGBZYCHW309dHfX1NDRQUUGGmpqW1wFjxGKTX/ximLADhxPnKU6RJhRayeAgvC9AYDk1NWRgZmZmYmLi7t27k5OTwMDAgN/vV02AYbvD9dIt1hYaXISX4FTsP15+qVqrLqGkkEIysbDAzAyjo3FNi09MxCMRxseZnpYCyBpCSAG00OLBM8jgzbmbsStXaGykuZnDh8lcIKAKwMilG5ecOI1FwAEOsOzmzdUCwOslEFhJZgoKCvbv319SUsIytftfVFRksVi2LoBtpr+G7hb0xLjwMhcufFlr76LLi7eRRjJhtVJeTk3N9NTUtM2maoDsIoSQAjBjbqf9Bjeucz129TwtLQwM0N6uT7cMmc3GRpCesbHwzMoiQKWSytnZ1el/v8xJILn5kzGHw9HS0hIMBvPy8hYWFurq6jo7OxsaGmC9byJNof7rdTRWxOP0vKRGv4pjMu8UXUGCKhYsmS59vF4WF+NtbfEy0/TgJIWF2XT4L4SQAlBaaW2hpZnmy4nLUzduoDI4mGkBGGprjY0gldgbb4QJG4uAE5xITf/he7nGWV89Nhs7cejQoZycnKampkQiYbPZVAHU19fzBDRW9fSo0W+6cKHg5t2TnDSmfzXVZKi0lBdfnKiqmpy8MW39UOLf7Nhs+m9mESGEFEAeeU00NdLYQMPUzesMDenx+cjLI2Ppi4C+K31GATivO0OhDqMAjAN/PR4PO1RaWnry5MmpqamlpSX18/z8/N1O/y9/WY1+lhPkPcb076STHamqGqgaHGLobnCUr+uipobsIoSQAlDqqVepo+7i3EVteJjbt7lzh8bGHczVffvw+03GyYBYLDwediaczj5VAI5QiCV3g7H5o6nbJBM7U1ZWxhPTSDGpektOf4/WHiRohB0aNA320nul8sr1/++hrY2mJrKOEEL+N9ASSmqoceOuppq7d/Xcu8d2ND1pnE413zW//77fHyUajoTDw+Fr13rvThfNqd9fDlbrun/+DvskaBhMKtPTqenvmMw3Rn8XXfvZzxZMjydqip7hTE9uT+jg3H2fj85OSkrIOkIIKQBFjX4VFy599I+M6HnwgHW0tKxnXORzMRD4XZ8v3BgOR8PRaPg3Dx4MGZs/DQ1b3OHTVwg/lD7Adcnpr2/9p6a/C9dOn9YII5fyLvUcuT7Y3U1XF14vQgiRjVtAyuoLuJaWiEaNnRycTnZoqCkQahxTsQyM1X506LW8Xw4H/r8jUG4PlDfzDJhYs/W/UgA9PUEOd9Gl8gIvkKKRIVepy9ftm+vOzTl8+ILqgOwlhJACsGK1YVMpoSQ+Po7KxMROC2B+nlCoIhQKhEK/0fhXFY7PePI/E1G/sh+02/PsDhxFFD2b0a8MDaWmvwdPV/K6TwwaO+CiqrvqePfxfd1VOd3dORbLebKWEEIKQKmgQqWc8vjkJFNTKlvOVY11QiEjnqGhoZPek46I93ok4vyhL4S0kB27ylGOZnp/O2dic9PTqenvnDJ3pV/1r5Hyd/DtUMmWmqFbj6PbceyQIweMnCVrCSGkAMooK6VUhfh14nFmZnY0bwcGCIW4eFG/7aCj09tZH/E6IhFGRsKmsAOHscXUQgtfecnpbx6MBJNX/bs0F2neC9/BdrzQnUwnVXAMcpL5EtlJCCEFUEyxFasK8/PMzel59IicHDKgyiIUWknR2xV+/P58f8DrNc4nJyKR0P2VRYADhxUrOxePx43XAeTm5rITxta/8cqvIEf06a8F07f+Tej+H9v1XXdaGjFUru2AL5CFhBBSAIUUGkFZWFhJURHbW53+d+5wAr9f8/vxO+rr8XqJRFTunDsXYqUDjnGMnZidne3p6RkcHEwkElVVVZ2dnW1tbWRoaCg1/TvoCGorV/6wI4Vrp7+DdOXrOuARWUUIIQVgwaJixozy9ttGMimAq1dXC+AABwIE/Ph9+ACjAIyE765uBLXSSsbOnj376quv9vb2Liws1NfXT05OWiyW2tpatjU9TU+PMf2dk2Zj9KuYMe/s9WhzbK0UvlZPdhJCSAHkkptPvooJk7a0hJHtTE6ubv1XPLD78RvBUFi40gEjI0sjnwk9XN0IKqaYDESj0YGBgQsXLrz00kuapjU1NVmt1paWlkwKwBj9Kub/iATPnlw+99vq5DYqm47+JqgkpRshxN4nBaDsY5+KaoKlhw9RefQo882fkYjpNH7j8N+GjZSWFqMA1O3dixfDhI0OOM5xMnD//v25ubmpqSk1/YGRkZGZmRm1FGBbly+nLvwPvv9IF21BbndsNfqVpuUgBfDcEUIKwIRJBUXTkrdbuXRptQACyWP/tPOrST6fUQAqoWjIWAGoZLIRVFRUVFZW5nK5SkpK4vF4c3OzzWZTP89k7cCtW/T1AV3vvxNEBRNbaIQmHvPHPBeEEFIAj3ikoqGRk4PJpOdxx0mKxVZ2fhZDHIdmmo0CYL3S0pWNoGj0wcJCiFl78oRwCSVsqaKioqOjY3x8vLi4eHFx0e12BwKB1tZWtnhmBk3T35q2Jdq4yO2L8EdwfOsCeG4JIaQAHvDACPv2Gdniu26FQkyHOKQSXbmKNEiwjDI21NHB+DgWCw8f3oMw2BmzE3qRF9nO4cOHLRZLe3t7IpGorKz0eDxqEZDRN4Ts1COE2IaQAkiQMIKSn29kszEbDeMN6aEPgxnzNofzx4/j8RjnFUJgB4eeaBt2thNYpmmayWTCsG0BvKBHCLE9IQWwwMIiiyooZvNKHmdHGcUeAiM7kjxyf2h0QDKlZGSL6a/YN/+1EEKIHDY3x5zKPPPk5LB/vx6LhfUewcXk9J/giUUgvJwQz5QQQsgKYIYZI1itKpu+BCyUzGV2Z3UR4IB2nhEhhJACmGRyiikVSkspKdGzoYPL+VUypPGsvG85f48QQmxNtoDGGZ9gYpJJystXIoTY84QUwDjjY4ypLLCAzaanogIhxJ4npABGGBllVIWiIhwOqqqorEQIsecJKYC73L3HvQgRqqtxOnG5EELseUIKYJTR29y+w50YMWpqVPQaEELseUIKYIihW9xSwWajvp66OimAvU8IIQUQJ36Tm4MMqhqgqYmGBr0DhBB7npACuMa161wfYOB+qZnmZhW9BoQQe5uQAhhn/CpXjQ6gvZ22NlpbsVgQQuxtQgpgmGFVAFe4Mu+w0tGBx6PXgBBCiD0nd92vc61Y22lf6rRffeEFvQPMZoQQe56QAvDhS5BwdDjc3v6aAwf6PZ4RhBB7nZACMLyr7F01vhq3113j9dZAH/TDIkKIvU5IAeDD4XU4fI4aOzXghhroh+sIIfYwIQXQBl7wgZd2cCcLwGiCfhhDCLH3CCmAYvAlk4NSBO82pn/aUqAPEggh9hIhBeBLHv67SFe9nJq0JugnuwkhhDBpmoYQQgh5IVgaIYQQUgCmjXIY/gzukrke+C3wg2mzZPK4Rk7BX8Ntnoj6Z38C74Zq+Bn4ArtzAX4FmsCUWerhF+EcG/hx+Ev4LAyzVlR/ezme8WPkwnfDh8lEDP4W3gsm6ITfhStsYhT+Kvk0fPAHG1wcZnraqYDvYnMP4b/gW1P/4ImfzPNg03eWKS1e+H24yjv1kX0P/N7az/8p+Hf4Xih9Sg+RbgD+GI7tfuyY4TvhP2CerX0GfhSsO3zOJ+EfYIrtDcMfwaHN7+o74P1PswA0NpCHkcw1QSN69rE7juQd1bIXzKx+NXwCPZ9Ev30ZvV7FQT3iK8eMkXeEGw5Ap367qgw6wKPfPn31yVif1h0V7uHLQDOXb4TNGIe6Q2s/zKkOGGAXjLtoIOvNw1W4podDxtpEzw0Y0G/1tOnB9RxP/6CejGmIXb6zLO9kAaSmv4U1OvRZwS39llGepjxoSKaXXUjdC89hAWjrVkp5WxWACQrAt9HoblLZTQFYocHoALLY4iLXrnHNz7VkB/wuKUMqRg3oMWog2gZ27DxP6iG4ixWACfGEKwCLyjs5/Vt4XAF0ZFYAuzh230UBOJN34XwuCyC9A85zfphhLV8jj2/Me6wCvj31hefTk/L+1BWljZ+lcQZ3an+juJiuLioq2FyceA89k0ymHf43UNCVesiNvX/TMwBnSeOCI2zo28egiqcskdBHv8rVWq6BUQCzrHdjNUYNfLKNNpVKKslIxu+XGLzOWp3gSXtHvD91CuCt9S8cpzX1gcjU6CiRCBMTzM+ztERODmYzJSU4HNTVkZcHFCdHfxDKSDmzflf7/OrEN9VR58CBMjvL8DDRqPqJ/hC5uRQVYbfrnzlWK7szPj5+7969iYmJ2dnZJXXnUFBQYLVabTab2+0uUW/IU6Ge/L17q++lffvYv5/yclwu3G629b/sfQdYFGnW9SmBJgoNKJIzggKCIKLojDppZ76dmY3On3POOeecc845rRu+71t3djbNrI6ZIAgiUTI0OTTdQHdD/ef1LmUrdFMdGNedPs996oEOVV1vOOfe+4Zqxs6yaoNAFTnPwfIg1FWGh9WFNjZgscQdOhRXWhrH9wLCzAzGxiC/1uN5+muzspCXByBV2F/Z7qgAhrzMgDotG8ziIpxOSGtJTMShQ8jPR0aGmaaeDhR+jMJ5FBija/x6Y6P6hb4xh7lWtK5gxUtDqoEKo7X7JpmPADuCxBtP2/tlX5cYAe5hb1ze8WeIKSAdE9rEXdz9FJ9SAC5b2FrghW8Y7J8niwp2I53iYhT/KorvbgsAa5Ed/rXX4Bud6PwxfjyIQRwQAfglnmWvW8P3LuOLAD7wqwHZu39f3cm/Um+FE5ub29Tfg94F9OYr6l+Cf/Q+jQOc/bjaj/4KVFAGUpEaugD40IBKoMq7LOQru2nACW+Vv2yS1B4+RH8/ezV5VLGzIQCpqYraSkpw7BjNSP6U7PXjh7e57gAOnMGZ9/T3LO0PtUePMDiIqSksL4sA0NVQ5y8rQ02N2uY2KJD0u7q6BgYGRkdHZ2dnKQAbGxuaplEAyPtHjhwpKCg4evRoVVVVIkkqaHiX0uwsVldFAIT4yKfqLqqqeDuB1vPgtgbwZPX1eP99WDqacf8+r6Uuur7OO4nLzIyraow98XVZELo3WInt7WzVSnEpA/y1IgD8tXTs+GtZp5WVVfn5wv5+/BcjCOBRB9SvYn8ZGnrOXRAtJwnwtLwNEsieRVBYiMIOFN7eFoCKCvXzTp+Gb3Sg44f44RjGkMDvR6PwS+osgG8BCF0DXofArwAYrd4E+4dXAACn7lzRVvpi+o7HtHsVu+4ddEcbS8p8CQCtC12/ioUF4L33VIcnF7Bl7wYq8BCGBjDwK/gVd3EBit5X36dnYRLkL82HBvhgfx3hh/C+lwA0YR4msQU8gsQBN1kONEMGkpEctAD40IBKmt+vGBpwQllA4I03N6OjA2RnupxknJWVGDegwZ1ggZDF0aPkkRNzc/VnztTFxNTtqE5fveEeUKqXFtmLlu9cO9zaigcP0NeH8XFtYUEXAbBaVXhByiCV8BXKQGAgHfU3Nzd3dHT09PQMDQ1NT08vLy9vbm7qum6xWKxWa1ZWVnFx8fHjxycnJxsbG7MNgg6xlPhrLRZsbdGHIPGRhlSXobadOcOYMMB6Fg2g36Xn5GDp/t2M69e1O3fQ2cmyYmYyPi4hvvhy/Hg8pgAbVA3n7CGJuHED9+6hq0u1TZstcWXD4rFsRm3akzQ9I4NlTrYtHh+vbmiorq2thj8UAMdEAFZXH7ISqSvd3eq0/G2GEFIARMt57xQGvnjhAjVgbwGgkdR/BUvuRH5eyVVtrSrY3TCPeeY52NG+i++i8Liw/y574/8AvnAA30/GajDs77seTWvA5f0aBHbB5dJdriSXxcJGv3vK1WD/UuwCegZ0CEQGlABQ3mmPH/sSAHk8PT/khlu+pqJ4c/itUKXn0APPB18Mn/svXgzN0ICZeAQON9ClZEAFATSRAWoAlSDxpZiXwBu/fh23bqGlhe5tNrKLUJGBjAQkQIfT4Zx2TA+PDk0ODuZOT9fZ7XVud/3581HP989x+ADfyF7NdnzqcNz8acadO8XD9/PyFtOaVE93uehgeAYH56Za58hQ6v/4eOoNkyABsf/169dv3brV0tLCIIDkTk//0KFD8fHxFACn0zkzM/P48eNHjx6NjY0tLCwwMrhw4QIlIWD2v3ZNlRLpj8THSOWVV+jukHoU+y8vq5iABcjj0pJytC0Wn91hGH6YIzOTxdC30dys8VrXr6csbCYiFUhdX1+P646Lm4qDDZiCshPAKewOXVdaRQH49FP+4DJPUSkaWaexiKUuUh0nlice93cuDg1Vzc5WOzerPalRpwpA+A8C5ueHbt0aunvX2dZGIU+YWGS3z0R9EpKiEOXcck4tTfUs9ayTGFggBAMCaqE/UDVYTmIMeByK/fl1HhlL+aYdagAA45vmmVYLH3/gLeyKVL7zmY0BkKolCnOvrrqI/+qy/OiqxZKIjjS6JGxNBsFmP91NzifI4aIBdBrWhf15rK7e9dmTpH4xJhNZB/wa/cRABwN1UxrgFchcQOjgfXnzPs06tUbKPoqjWcgKzHmXaPrEifXY2I6+voHR74kA8EiTsYF4xOPnFnTfSFu3b5NrWJn1qD+Jk/zNLAf2agCrWJ3EJO+ly9Z16JPoeldaPXIOw4Lz4MEkHLcdzptLjuvX34y/efw9nS2FTkVsLBMbpH02NvIqo4IJUpX40eYFgEl/+v5k/2vXrg0ODp4+ffrkyZNlZWWZmZkJKo9MN3SVXj8jg9bW1rt3766trR04cIBZoLfeeovZoQCGRuhK81dSA1ZW8MYbOHkSpaXMdLNrUADYAdmo+LPVZ27eVPfGvBm5nO8GiA2Fzo3u9uzm5qqFU3nIk4pgwE1/Im4xToWDU9t2yreoM3Rgzd69ywo9h3NVqMpBDpuiB54FLIxilK20d7C32lFa7a4u2CzAJtAIP8iYxfEbg0M3W4ZvfdzS3Hzcc7QK58pQlotcdhkKAJsKeZlXue68bmfskpLCaIC0sNd4gKpwMQZXW6R+mg8B2MSmvE0NYGnL13Y//+V9Zn8fSew0efmzEAC2ue5u+j8Shbnsdhex6YqJuxLznSSyEkufvMwoj7Ge5sX+KfAFCrZoAI2+oAOGBtDf2cH+IsVsTCg+JxFAqHPeNB/vhHHuCBvPs9SfMm4n7wtT8w/x3GEeLLJz59jbmSHh2Ry9vW2UgbEBkQGaIQMWWBB+6CGWC6uZ3Y7My1omU1zAhbM4ewIn8pEfhzgA61gnWXSjm/08ai2q7kYd7wUC0xpAAXDcufPXs2+91aAzwcPiIDdaLCQ7XlY1VZdLJVSWWWCDg6qOFhdVkZoAXf729nb6/mT/hoYGuvZnz56trq7mkG8cfXPA4XCMjIzk5+dTD9g/Hjx4IGPCOTk5dXV1MAlqFJMe5FP2tbfeUpmNs2dVrt9qNWYQqM5IyqMYfPQRi1Qy7EGks1yufper19Xd/frEa6dwqhSlVlh16MtY1qDxXxC92wLwF3yFXeMsWTbIdKSzWl/BK01oYg0CkDpl/+1BTzWq82x5VderFPuLNfleaXgTx24eG7o5NHJvJAUJbCQ1qOGgEDmY414UAP5CthM2G2rVp85PeXWVEBsd3UsAWIqGBpBvxiUI2DX5TMIR4yVQeALynV3xBV+v/SdlAePfmdGYVHntsxCAvj42R0ZhJDJJR7pWVtxs4B6PJf7Kr0lOth06pFEhqaJsB7W1NQ0NNVFRNdib20jjYmQGcfF3FQBJ/tCY9fOd/zEXBPhgMx1hxfi4wftiySOLivFxwVsAVN4jUOTn0ygALG0aq2alt7e5t7d/QrE/zVsG2E/CxvyhY2aGIsWMNr1FzmStRe1pnKYGHMZhbIP9mcXCO6RXAKByvRI3QASkARv/em3sUuWFV/7q2bOv0HXeBsc1lX+ytqa6PPmTHMsEOhszO78ZAWBuh/kfevednZ3M/NTW1jK/f/HixVSv79LZZ+o/OTmZKRQODnOImJpRWFjINFFlZaWpIGBignXKUuJPZKjH3qSmqZw/D29Qzfi6283fxG7Bz1PJ2DEDFwCK4sDG6OBf6c95A+dexatkWJ+rFG/AJ5aW6CCyJA+hjMEcG56wv1GnPC21ZA5zVJf4uXhc3xYAD3Bux4rQSbK/soM3D9a01Gxgg84+2wMFIBOZRlOkDHCof1abZYNnSn+F5Sa1aQJeAqC8NNGAnQJguP9qwpjxHdP4CG9fAb4B2AMhqNcVrf+eD7BjdkcyfLyw3wIgSVuG7a2t5Gm2cSZh3IWF7vj4xNH45ssrhy8vHaqf4lsSHxyZnz+xulpz7twJEwEp1drgcw6nSRBAGSfHeY/DCPurmiiuheR/LJYwerR6GKeOsxU+O9KbNDSr6BjnvKk/xHy9lJoIAI/Ug6Xe3juUgcmnMmAMEePnBOPK21I1CfDX84fRJfRmf2/K4FsQrD9LPa9hT5wBzh7G+WqcOLlLZdNXZkCgOrsw18qKMhNgTp/ePfP7zPUXFRXJJB/F/jvAgIAywDlC/Fh3dzcHivlFfr20tNTMZVQpsRdI0plKz/Hq3cCmRJ3gxdgxlWzYbIYbax4D9q/8OLHh3W+/W/9KPWk6mC6g6zIuzSNzJh541rCGHYhBDLUBgkVANMADdbzk3Ugg7K8q/T7YgDlKRA1gO9nphdC/ydKzOB86TUtbWR6G1KbHo4b6/aKgQJL5KhyclzEAGQr2+iJpR9x/hqQorBb29znR6Ns+JADOYOnk0lMJ+OoLXAdAF6O5mXlGagB5mblIOlFkZ1damivhkeVfnHvNsgLLwoQ+MaANPHr8aGbmxyfsjhpX/Ak9K+18JeLNUhmNzCApIB55iZ2BGAeOTbj/Wz5e8IFNIA9be330gNef/srK4H2h/gHbUdWDG71zPirHGi6QUGjbMkCb7+u7SRmYUuzvPVOIn8MLx/S0TPzXoDF1SzefdQkzEA0wLQBnoeyED8GnM8d0vTgnWF+nDwyXy1wAM2Oz2Tjxn2l9RgBkefK7b4op4Ac49ksB4KgAv8iv7xSAsV1bEUuJhH74MD0t5OQg3Qk4oe24lWQoArNalU+2sMBEFhnQWwDysDeYpqdzzZZJ9g8y26dpqjSTkmgTqxN96LuN29QAnpZxwAFf/WVFNOBZARjdpn4eOyBI1pPhG3SkeAtxehw0sCrFyOMmgwBW4HyLHYYGlJTsdP99DP+anKLzPcCJgHERghcuAHQxjKQtLl1CUxPDUlKw6/CUK7HD8u9+v8Uy8K5ljiXVp/cVaoXdq90112tObJ2oRCUkZo/fuyaMoeDp7SwQryJTPN1wG8O/Qv08+gjYfUwQ/D5g3z0LJMiGfGdM2W56/ZrXOjAfO5LNAz0Y68WHvXikNODUXzloTS/MPHymOK/46CHF+7SDOLgfGRfyvmHrfX3D5eVkqbn5+T+8cLV/QGTAXY7S8he7aNrtJj2RpGhpirfS6dNJ3t+8BpjEnwZ0v3x14IAy8V7FTPx899LSEmf18JiWlkbHPz09nZM+fYe2GfwAPymLBhYXF/nFvRur0wkpJYeD7K/IPe0B8ACaj2xmLC1WuaX8PL9LPfPCn8DeSEbeYeTnoIBMGvyIT2amLEpYu3//Jm4y6c9Z8+RLOu80iv3uSuCA0gCPd3oTyn7dnmkSFXKsremkes2jHdg8oG1pJmrT51CwW1JAXgKwhS1j/g/FXD7qb5nqd+EbVxMD04BLPzcrgdkW6YzTm2R6p7paLZfgeNSZM8yIufAtl+aKOeWKiclJseS8hxMckOEUguM4XugurLlRA4E5DTCmA01P60YQIAJgDP/aYUdx047hX3Na/JE/DTjD7/hlf4FvAXACo4Yld43GPx79+jffsXJuYEZGQVHB0fLC5PJCHDqI/cRGwdG+jbLejb4B9+NJi23u4MJU0p+MH4hPQGY8QEuAsswXuOkFGYo8BXDkg3RjREL7oQFSxWEE53c6ngAAB3iZ60+iz+sbMvmHnyQ4NYhf5BmwA38Sz6Bxfd0oJeXXJ32CPwDcAzQfYekPobC8rMKFzU1aoAIA5AnvhjTqL+vRGLt4PDOdnd/H9xkHMMIzBIB/k0F3yXyuKw0wB413abNRTRUtra6ynLSNDd0jSaQtBAjvrD4ZblQiAAZSQjtC/TwuYxmFtXtn/y/DF74ugvJSbgUh0ej4OEWV96+82Lo6lhwbGtnfBZfFsmWxaDExugaNLn+BXsAxGTp3ye5k3IBpDRBWl7lAWPGaD0rvxhj+lTleyhgU+8PH2A2Wj2AxOqCRXfuHUNzvxOX/9vF/+29YAmCFNy7ADBKAk0ApUFaF0hiU0hX/X9/u+ST9WlpWlsa+QQXt62PpMRskEXrYN5Xg6Xt7edR6e8v7+spHR+3Rs9Vvud6qiFJjABVIKQdywjkcrAUTAdBcLkkHW2ChIVCsA3gxGuB5AtnvIWYb8AvjY6R+fpHgpPgopjF94y4ZXAycHnvg8oOCywUoK4BP/Aco8ENEfHxQA2M/Af6wtI7gNcBqpXfIMlK0mpvL/jo4OjroHGRyRtx/SfeRIupQ93zez7P3Nk7kA5rsBDE7qwTAbldCycXXbverm5uXgiJYbwGAsSDAEADRAJkzFLQAfA0GXkYBYDFTdhmQxsWxIEheEgSR+tmbeVSdWJn0NdCno0HgftZfexO+QZ5/OhLQ3m43pgPZKqzy1wQmUHxe8j9BTJeN3fmqDoxKtNBx9YMx4N2rwLmQRn8P1uNUCRT7M+FO+93zvT3zPb29VzfZvkj9chQZYDHukfzRTJKqUL/3MX4+t0KR/rsyx5RHdr+ft/mgenDkXB3CpK/wIbjH52maUWKm8lOeDzybqN7EMbNlLVQVzKStvDDUNvsmQ5bMTNX2SaNk68nJtampgcnJgZWBFKTQ/WcvZhyvQWN2yOTGfeT6tjaVHGbvGR3lKemUpi5a0u3JybwceanroOVK1P1vRCEIUKoksX/kCKaNuUC1tQvaorj/PBruv1SKT/wSduJtAC+1AIgzQmH3Tq6JAIgGbAuAj7birQFvmh0KZmV7toOA4YpUkWKkpJie/Xl5J/tf9pli71ACQO7/b/HUgNCJzQprIxpLvWSgzN3b09XT23cVO2UgLS0Eh3QX6o+Zy6reJn05eve0F6wBMTE0aStsOeJABLyXYwOAF6MB4stL0l9CAddeQ8fubTAdxC/y6+L+7+EKiQEbX9tgMn0NJUCtmbLWQ9psWzdf23nAmK8pfa+/ruZwk6qZNpiaImGr0ezBweXu7ubF5iUsUdzSkEaPhBN49mT/hQW1Eu7uXTqFaixyNKFCdf+abHqiMvStx8U9ZI1EDyGqH98JKQiYvrtkzAcdLloU9n9m3fAvNKL9d1rGWqo2pqdZo0zFiADQkrwFwLcGmEFqqqEBpLMpsr/z8eOh8bShXBn+PSbuv/o9e+CNPf7XvfcB6gAxKR+KB86FrgEEk2BNaHpGBly9PZ09A5QByQXJUZSAdx4IOPzV0/M8+2uzGce2SZ/2WU37uQ2chUnExzN3zk4ry33pCa5gJaAyxWllLwoJCir1L6u9Vp8AvsFsj5H657IAGQ8wtdKbUTQTKZpm1+wr+gpz0Lum3nSEF5qc1YzCXISq+AH4QFYWjRkhcgU1gGLABkrS4DTC/ul+WSUwjvECFGAvtLbiyf4UuNdu4UoITkFkl6HfTqWhAOgsKGYmLBNQAuBz6Nj8UPD6kxTQFmfsPhEAmvE2L/e5FAA2xJQUcVQp43TOqb2sWlcO1EZAmuuJOtD0sHgjJSWGAKi03+jw8MiofTh3eD3a81Qcwg1t356ykoEMmrcM9Gz09Hb2DvVffRoKUN0uXlQdxjQ+/lgFxQb1b86kG/6+8QeCAt1TmkS6koqmnw6faAfuBBYBWK1UOx4XlxbnMT+DGQccptZDWKCov0HZi0J0dDRn/qQ9wcITcFsI7vTALYB8zRnlB/gxADIdKNWM0rP009QkKQ7qzs3MzWgzNt3GiY0MCkLh/fDGSxcAC5R1+89l5eQoq6lBZ6di6sVFepCzmGUcQPk3s2iEzfvBA7UpBk7XUgCUVVczy/RsOUxgFbgWtK4/JfmeXuX+c+3eiH1h5OCIkt7CeiP7/7kUAJY1q7CgQA3Okm+Yd9N1hgKuo0ddhS7XATUGwBFgskZYIHsA06jxrP+Jyclx2xrnkxnsr9QorNB8tHwJAsICujw0QwZ47Fnv6X3QOyoy4HZTGkwLAGlF1cMPfqAqZGPaupP6Q1n6y04qbjrBLsoOwL66a/ksoFuxv7IMmAcFUVrU0hJ9wFGMcmyvGtV+NhyUgWJhf3WswwsEN3nmvH5u6kBa59R+LuziCq/jPjaUZiJhfHx8ii4wwK9wsyBODDV5Gdno3z0zwyIa0ob60FetV/tpxMwUyYRaHAdeAy5BHa2h9glfDt1FIBbKLEC7GeGvq5N1tpS3LQLKTGy7BBYeUzKQxXsVFZyDLhGk/ty8gJvALQQLLwHo0cEVG1NTk9Pz4wfHKcPyBgnw8yoADLJIUlVVsNnUPn/NzbINoaukxFVgdV1xWX75lsUyAk8OHaRwTHAXnteoAWvj67bZ2anZ9cm5SRS/bW74N7Dra+aD4JCRi1zaMzKw1tO7NDjBvhDIiKKu06gaB/Omn6d+cmXIWQ7lo7PZM/Cbtk9zyI7JN47dZSLTKB+P7ulARzOa7+HmCG4DM0Cm+UE3WYJJ+RrEYA96mAfgMk4KJJ4FL92GNuaIuDqprqZO2J/HEN3a0GSdLJTH5V3c55k7fXIvoN7eXi4EI61zuu9O9n/48CH3jeCyYfr+/Bi/yK+b3OpDlsaQkPqd/d3opiOdoqXsOpI/hakudNlgY0m+mv8qJEvWCFj3MUFUAli2LdZ4okZ3N5xOVjE1fud2EzS2WjJ/EpISkGBmv0KXS31pfV1FpkpFYmOF/Z8Bs3B3pnBLD0UAZG9JGmWXHhY38JiZnZsunUZhuZH9/7wKAMEIjlrMqmU1tLfLriPuoiJ3Xp4rlxHAty2DOfhODiueDVc5dyFBBEDnMa9L+3Nzc7Y5B2pz8CX1KusnLOyvmWvqEgSEF+ylNC8Z6JWnQNoCYWmgPNeb+sO6/WdmJouZNUmK9pCgKVqyOY8VVgAMCEa0EVLSfdy3nX/72IXZ0b88ij8RgAvNcEe5ckND8w8ftqOdp+Wo4AmcYLGQGljqvARVpxOdLWiZxvRq8WpKQ0rJ6RLF/vF4sSDRc/sHuvzMEty/f5/PA2BWhwO83OSHi36Z5dd1fWVlhe/yLXlgAHfa5H5Bx44d446hatqoGaSk0OuSodS5u3db0cqSoctchSpqQApSGOTR5WcuRbbYfIiHAxg4n34+qTGp7nSdEoCcfU8Q5QEWL7vd2uphanJ+XlXuiRP8/cp3NNj//n15losExMyLcpAMMDUczqhUtr9WLDQ+Tp4x+ijPqTNDRK+Uu9TcHADCEASsPJgTrFo28KUiefXzLQCshHPnFPvLbqsDA2yXGwMDroGB2fh4S/Z3LP0q00fvSJEb57xXVobC1AcOiAYsFhf/1z/Z/N2i+9/iNujhcf8dgRD69rrCiwg/JJ9FAVCG3jJAZGB2rx4BlAMVPH5xm/pJDQgrWNKsQ5LPxAQeLj20wEJGpo8pa5jpkk9isj+6X2/sPNf0tYGmRJxFYGDzGB+Xx0V1jnRq0Oywc7SNvMDBANIcx4eZ9GPSg/KwlrVG9reetvJ4KONQOPgrVHDjT2Z1uLKX2f+2tjZN07jZPff8YXaIY7wUAA788gMMDvguX6+vrz916lRNTQ13DYJ58MOTk+J4dXd2slgWsch0mWweTsmkR72ABabR+CJ1eiZlJq4xThVUY0pJeQk+ExwxckHT07GdndQAB+lYJoAyGmC+i9Th8VAV6DWSpulTVKKSzgSd6jSkmZkVInthMOdJ2lGjtPHxJBmlCS4XE9G8Fh/3VtHefqb81x7+V55Hv/t66AKQ3bH6V+cVjJcYDn++BUBckjfeYI2SHmQ9hnt83DU1FT81ZXn82DI4yIqhAMhe0HwXDQ3sKFAIeih4oLh4kE/cG4q1hmf497/62TzP9xsp+Oky/hX2BdtBAI8rpYAhA7sh2qB+2mko6qcniH0AuxwduNlZtW63pYV+/n2yM1NAZGcdugMOe870iROL9fX66cbvTjUlxiXFrZ9AYMMAbB5OJ9WVF3jw6AGTGAwp6BUyjiHT8RI22MhrK8dycLKp5cwJ6+mKlJJDb6hSePHg0764CzTZn9TPlcDc6ZNbAzG9w2Fe7wfCcGyAue5XXnmF7N/U1MSvqAmg5iEPKWT6Q9P4N3cfnXBMSCmxIigALriWsUwxZu1sHS1F9aWWU3XWM8dT6kqsQPpnVhoyINzZZekaT+hce/BobXjiQ5AQGEJyKNtiUQKwtESXkfNHKu353LyTm0VTBswl3FSnP3ZM+SJMpvFsbJcMUakrsq2IZWKiZrn/1KlHjY3fXDybihDAUxqE/6c4K/wq8OabL4P7XwD8Kdo+C4BMEJE5WFR4sv/EhKttyn1lyvKVSVaDzPSiMfdJ547dm548fb0gZxkkOg6UDB4oHogqHkTsUWF/hDzQ/Dt9LdarUvZCoEFT8zXhKQNKlaFsl/IqN9ifxxglAGnYT9TXK+aJiaEYUO7Z6RbX1xddioiQq7ZuVfFBbS08pxKSEpNOBzExk16CrtOPk0G22ZGR2dkhOLrU0KDFQodLXTj/ouwu0F5fb62uTgGswBl4owg+UASz7xQFGSQVkf3p73OXf+7zzEmD8gQYeSYwnwpAkaioqOBQATM/3DKaD43hJxEoGFW/+qo8sIxur314+IHNxgwc1PY3miq95GRVUDnV8vDkoZqaloYGKSiKZZTZZV55CA0JPbjQeSG+Mz6tO40JQ675Gm0enWu+tmr1eGJiojc3E+1ahjujEOfZ1OtQdxZnj+CIyS3m6IswCiLbMxrgqMriL/d5Dh1iJi3F48k6tFJSsnq8kbQUH9eQlpqfmufvXl41HwSkPwQytv9nxunzgWiTjgl7P8314yXXnank5C9ZvvqBZaxBqQIlurOT0RpDe8kXMeG7+7YH2h6jwmrzsuKBgZKB1X4X3i8OPf/zwy/6WB9MVNP8fxl/AJh5a1+LPrpS2F8dvVEmpO91PJyGzwLM+dGBY/tnOMdQWzzRhATWpzysV6cnMIhCOnRsDQgC9OusVsVx5eX0J3gNiQmU7CQlkfL4lrh/bEUtgPAaj8f2WnpfSjO1QlB0NUiQ9zm0y0Hd8vJyzgWSh8LLujB5KDxHhvlMGNkv2kj9B6MBZD4eWdysCbpWKyvgVQgKAJWSBcUUCeuJH8jOvr9dULTGPZbGC4qUhYJVoBPRndFNnU1MT9FTY+jGAXympxxLjk1scriCQ77M+JOdGe9Wo9ok+xubNlME2SL4B1Niy8tuj2eKxclbJ7vwRTZF5hoGkrM4WUDGFYJ+NK4kON4uUpqIbCmbInxuEK0YptfsHBiXy+pypVomK2O+HBMz9j6GRiTrx5lC7M/yfCLZ9ybQBShuuAcxOHB4YPB3DqJcUb8yOjshwCd75yszgwzsO2KBE8+Q1zvPUn8mPluQe+VR24zgxemkM0pVYMcTlKDksHZ4DWvBz72gMdk9NYXFRaacRADoZPAyjPR5NEimZVsAeMzyzWplynZHK1Dv9ZUKZSGBa7vOnDnD4V+6/0wZM/VvCIDxCDBGA6EvP2PGTMZk6Awr74pX0TQJlaQ+vOdGS0FJWVX4Z7/Q2Z/oVIYuYAqyXpZZKRtsi1h0wikCwMweM/4yGTq4hDC/ydY4PQ27HR6POAmKWuidUwEJBhZxWpwd9lAEgKguVAZaNo+0g58nATgHbAGaqRmbbrfGdmjhJKBEi6XCgop3lJ/C5u5wsD8zccD2yhoLYnxOsT8GeKQTgeJGw/3/nCABBt7dZv8cvCAwjcc+RvMVsiUjmRbqrCPaXpgAjDjgPQjq8Syi5CXfMN63qL/CA3I9gwDsNyiKdKdo/rFDLKVk0YgdiFKvhogxEQBlBmT7z3CvwaafoMwP9opETYUdRwoBbwFIwOdPADaBxwD8rzon+1MDYOFWQJrFoltAMF23vEzqp+/PdB1jVXor6kMBxr9kfzFFPOL+0wH4POJd7/AkgofeAuAbEYx7ieW72Ddsebn/63hB0MPOgt4CEA68rQz/6aUSAB6HfY7cCvuLbe8EaoG+PYPEaqVTZOwip4b1AgETiOL+M4pE8asiAPic4ueT/XW8OIhvG8Ge6PoMBKBrWwAG8AsFQwA+Z25nNMq9BIDHMZ8U4HKJBuzY1d1rx1CRhiDcf0kBqeRm8TPDvxFE4FIaEMGLF0vM70z+vFBfREPYkA78dnwOEQ3imJcAfApMQBblk+0LtIID+gFjD3ojAlAaoFsgWFxUmR+7HSkpNIYCu+ygXeUndB2X5M8okpGYJe6/OkMoiGBzP915/ecpWIgCfq2yvWEBfgPtcxtSGUUVLNL3qQD1F1WIEURDUOUVB1xX64Bu47YTTo7B1KP+MA4DpH6dg8CUgURYRANAzM4az+xRxM3JCbvOff7Av/s/P4AmGX9Ugz6lpXi5UK8Mf3ef11/+QWURRBBBBOEWAOKECACmNqfaP22/PnPdBhttXpvnloQVqHC5LNQAJoIsUCPAPKrZgi0taqegnh7qg5q6VVDA0WDz07FmMDOIzAFcHjQmoGRnIzFx//Psf0JZBBFEEEFEAAQ4CX1L79js6Njq6LjZ0TPTs4CFaUyPYrQPfTmunCfrAOos/RbLA4s2+zGGhtDZqfbtfvAAdXVqDXBFxe7T+yp8uf8ZyiLBXAQRRBDBC18J3FGvdWyld6Cgx1KDVk/nQCcHAx5rj7lT5xH3kWRXssv16yxXHlrW2jA/rzI/8nSS6mo0NlID1KxQ01gCBoEBdYwggggiiOCFCoAN6KA1NDx4suxaVt0t9PXdmrzVoXUcKjh08DcddLkSYq64Y9buqKWiNpvK+F+4gNpaJQBnzwb0mEOD/TfwWSOCCCKIIAJN13Vs4wfb1g1gdJTpHZXcHxigp69PTzcvLn7D6fxva2uXLZYP4uIuyLY/+flqpSIjALr/TP68dIgggggiiEQAD8T9F/YnyOwczi0r05non5jAzIyLezI5HJb1b1ssX46JjZVdCRkiyK6EkYmbLyUiiCCCiADMKOoXDfCCpumyFQmzPXNzrrFl1xWn5TtXLd9MtMR+RXYljHj9LzciiCCCiAB0bNv8rsssrFaa+zF+thPcBYsFCUAlXlpEEEEEEURwAEDnNvt3+Vxkp9FcLo0LwX62ExwseJkRQQQRRBBB9JyR/d+d/eugcBKAy6UsweW1E9xLiwgiiCCCCKKN5M/sLuz/d409HLa2FPvX0DZRjvJMZELDS68BEUQQQQQRAeh8nv0Hn9vAgezf4FZGkP0TkADgZdeACCKIIIKIAOz0/UvwLOJcKHEBNC+8vBoQQQQRRBDBgQ5g2szWqm5gVwEgNLyUiCCCCCKICADMOPEuwK0MiGhABBFEEMEvzFYQn09EEEEEEUTWAUQQQQQRRBARALQAfwYoAjRT5oUfAX8cOBbo12DuC9nA7wC+CTiggFd3ntIkaoC/CfTBBLR9ts/gGsHDiWBxD/gHwLvAwTD91uvAHwKOBHX/2cAfAW7ue+2+ppoVbiMofAj8diB5r2sUAX8aaMY+oVj1fbSGu1v4Pksc8JuAXzX7iNP/C3zN92lfCOSXHAX+AtARdGF9AFx50ZvBhY4qYAwYV4ZVhBtV25ZorE+bB7r3ZzpSBMPAgirkoHDaa8rANXX8hUc90CCGwOEBVoBlwI4XiG7sByLQTYrVyy8AWUC1Yn8lA3cQVhxTp1ZWAcBbAGjTCAQTiMAMepQAoARIQVA4C7i8NOAXGmWK93GKx+C607IyrOAFYgpoRQT7pwGE9osuAEYQYMQB4UGS4f4/53MtKAHAjwCPySBgALiLCPbEgJcANAadWRQNkFDgNn5RccTL909DUFgRQwgIKQZeV+yPFoQf+xib6y+Bf/9ShALRz6efWoAheScaiYlqx/+CAqT5bdvGKeKB6n6Mt3sLQApS6lB3CIdgDhsbuHsX09PYRjWtCNWnkOn9fPnK7Qhg4VlW14BvYDd0deHOIyM0qQGOwg8uwxw2NzE6CpsNS0tYW+O/UmyqwLKykJOD8ICnHhtThbK8rApI1+H1yDajdsxUkRn0XEXvmirbEmWXTNXd5R3XiKMGrMB1Da51uMTDhAYtDWlsD1ZYzf/U68A0QkQ2cM5E7ZrA48fo78fKirR3of5TKC/ECVPFshPL7VjuxzJMopBX9NlcDYr5Bkyj5QZaprwjgGKgPpRuMYKRKUwtYnENa5vYjEZ0EpLYinKRexiHYQLNuw8CtG17FwfykS+nwvo6hoZUD2SNuFyIikJSEjIyFGulpiJ0sLqnprC4qC5ExMXxtKpjFxYC6EGPHXYIYFG8so2GvTRgZgbNzXA6jbINgYbAJtk/MDCwurqanJx89OjRoqKiYAXA0AAyGSkmMxMlJaiuxsmTptilrExR1dj3MTaChyDykMdG8A7egTm0tuKTT/BQfZfItaLqHVRVoWpnqRhZINoAnuKDnQXHkr5zB8rcSMIJqaiQBeDRI/T0qObHFrKwoOpSBIAtkMzMRsKSq6xEXh6Ch8eDzk709WF4mJcRnVECYLEgOdl4IpsqoZSUsAgA70jZPREA3kHWeZwPRgAI/sKzZ6kBytw2PABRhCK2hzfxpumfGroGZLFRmKtdE3Tw8cdoa8PcHIT9UdWA108I+wcnAGSulU+xYjPF/jRTzfUDk/fKjsYe13pTCUCW1A+Kg+4WpP4udA1gYAIT85h3wsm6jkFMkpaU8aOMAhQUohyoAp6l5je8//RTYoOiAVGIakDDe3gvpmeQjp3S48lJxdEiAGx1ZK3SUtUpyFpBY2REdT2enITG7s1+R8THIz1dqcvx49212T849ANKHRRinmtjDXvFAb29bEo8t8+C/YYdOGiyz/Z88sknHR0dCwsLhw4dqquru3TpUgn7bpACACT3osIVPTObskAHs6KCaqUczzNnTHVZqsX4OJR9nx7rJVzKQhYVuxKV2AsTE6pFdnTgww95QYpG9SuoJvvHIQ47kPSsBizu+ntcLqF+GiMLNpQTqrOGCDkrew6bnzwxE/PzcDiUAIhuigtSXq7u6PRpVSTBgCxz7x7a29HdjcFBnktdRgQgNlYxPqOM4mIcO0Zt4GUoBiEKAOWG7M+m2fMp5mzRJXiXGkBjDSK4KINKqDTAJTLAs7+BN47gCJ3BYzgW0E+9BswEyf6XERZQfVnldCZ+/GMqQS1qSf1kolM4FVLwxahO2fcAZ1DsH/zFSZuK/Wk3sD4l7E8LEg/x8DZu38d9+g9Ugtn42fjk+KioKJfLpS/qWVeyilGcicfAGPAbYOCLAEwJgKEBRXoR3cql2y2HWRfsHXTESNbkaFIGBcBqpc+lWMtmU07ZuXMIAqR+9vD793ly+l4kQPY7ht009m1xc+cWGh6ff3xVv4qjMTvb2N/fKxe0uqoa1Ecfwf72Lp/Af5ZTmhWAlpaWH//4x6Ojo8XFxZubm5mZmeYFwBuq9PjFy5dZmJ7x8fn29vn2H40x/GHsozozdXVPMGtE7SUp0m7eZLOg8lMAeGQkuKc/QiOrsirJ+2JlKIMPFHhpwE927VrC+yIA9BHCAdLvjRv49FOeWLUQNrNsZJch6yAOMjhd96zPL86PLo729q4NDZHDWXhslvQYAmf/69dZgGhpwYMHMQ4Hw7oj9fWJiYmapq2trc3Ozo4MDq5SG0ZHeWuqyC5eDDHrRPYXy/lb9X/wO1n/82qPbwEwjexs0QCxrsddZH8xlhhM48gRmvn0cBvwCa1ztRsWi5LlkCFkSSP7k8tI/WKxiEXQYK2trNBIVdXVZIKvK/ORH2Oqj6KfkBC2tKLcDdtX4p8r/X3fzP7o+lgI08aGb+HWNVy7i7vzqfNVVVVnC85arVYRgLm5ucetjz8c/DAJo8A//rcH0n4v86S0HdL57+Rsfi+VgQzHDYfjxrXDt28rsmBTYj2QmlmYlAH2OqoCO4XdDk1TV6mtRUAg6bN7s5PT/aLjxfOfOqXYj+7/1hZPq/r8T35iX1+3H7DPvjbrQLbZwZa4pxpAf1Fsl+b7TgDsz7TP4uLi1NQU2R9g23w8OTnJUGB9fT2OpB2oAJDh2cKoTtROeoIsPYdjoZ8xL51NvkczA/L2+LjYzIiKCikAtDM44599WJsUAEZdzBFXo1oEAH7hHQS0wws2m0H9tIzkf13/3pXvf/f7YeEBnlg0IHYj+RLqK1BBlyQFKQxOGfbOYGYQg+1oZ2KO3Yzkw6iUfgObEMyPLdC7uXWLGsAOSuqvvXSprKwsOzv74MGDFACn02mz2Zj1Y9z3iD9IREZyTwwOggLPIe4/j2eys7Kys28fvvsbZ3+mAaw+BA0mTN1uEQCb61rX+M80oAlNMAEWHeWTR9PsPwDc68TdT/7y9/DaaxRFJR0hoq3NEACmsw32598IBcL+y8tRfz3qOFIqkQLabgOGQmUM9uh9hgXkfbHpq2lvXqmvdwx8hODBPt6GNkYAi6mLzD+cPn2azTU9PT0mJoZMxLb68OHD5NvJzFSc/g2nexNrf5KUVEdXhpoWeNWstq067jhWb7SoJvveeygqUmkZEYDpadWCeVdMI7DjS8cj9/BC5h0vo4fThSX119erWD4zk8xIAWBl8XXPo0f227ft8QWORAfM43+olQ+E06k7HBppluczoBvjOG/DNNjdY+Pj4w8+gd1uT01N5TBAQkICXw8mAhCPzQjfGaRQAvs/GqOiMmLkzSsnZE9YLEYQQHu49VAEgEGAL1+SekPqFyOE+qkBZkaNZEaQ2CgUGLV5Z34KCuYbG6/Mn3HhzwK/D6FgdpbRIR1/xc9k/4u4SFWrQQ1dwnSkUwAo6kyA8j6oB1vYGhwfpDsi4wHmBYBKSC9GOig70quvvsoeVVlZWVBQkJKScuDAAdb0+Pg4O1VaWhqdrC5+nvUiQwLMe4bm/sfMZeXm5ubk51qLinrCIgAyOORyiQx0XruWM9MpGmDmtIzmyX1Op8l5IesP8eD7aL2He3P/LkcNkPDSVKAQwOZksL8FFoP9WekIDZL/oQakfMD6SzmDlHzfk0bogDK3oWmhzzNh+zJuCK866uscR+ucDxAsRjFKj6cXvY/x+NVq1VZfe+01ZqLZMrdlboW5aYYCVILey73lieXDiV+oSyzVk5O1wKvG0exw3Ot20LF64w3U1Sl2Zsu3WKgHinDYOfm3w8HkrGIT5kj5BxOkJsGQWno4T8XQ4ZVXVBKppoY9i6eVmyEnOnJyVuPjV7/1U/wDIGBJFt9faUDoc5ooscz21NTUuN3u+fn5jIwM/s1X6CaGOg2UHZSyR3GllmwsLFANePOmBABguRtxwFpHh5EI8iUABvszm12IQiP/AxNIezYOcDCCM9j/wYOKCr2xcfrUGfeVM27UIkRQDvv6VCNht72Ak2R/0QAN2vaPSWM0wCiV7D+HOYbGvb2bpLCREeVJmFJll4tBEONQ/niKeX19fVNTEzWg1Cv8YiIo8wmio6MdDsf09PQsy45ETReRoxzseAGCzojh/lehpLC4sKCkgNQ52Nvbs6w0QAyhoLJSgoCN6OgutzsXP9MA5s2wB0h8ZqcEPkDfIzxiUxrRRnDpEgWAFipHG2S5uNiAc8L+tSE3JmETseSK5BRdaUB5SBMHJ4FsMyNtxg1VrtfVNdfVr6+fZKwKDUFhHvOMeun30BXNz8/nLBQ2Wrop2AabMVlpaGgoLy/v0ZcfTelTs5idxwX6TEFMkl//I7aN1x0uVi7ZubERBuihUwyokyxSMg95n92V4i2OPH/PniDL8Vu9vYqJSHzsSlSOV19VaW2vm1E+1sGDKky3j2PxMQLC+8CvigDQVBXroe6qyZs75fF4cnJy6BfSQSwvLz9p2guM3ktelFFrN9h1xYMzDRkNliCgd6GX7C9WjnI8i5kZSf2rI51o8f1pvLhZ/9IQgLa2T7cdf1I1y+HMGTaSraUzm5vlm9AQyBDwBVmjuX10M17jDZHKORmEGWneCEeUG9FosL8B+obsD2QiEtyIa4SBKUOH+XmJrkx0UF5jaIh0U1pXd+zYsdraWrL/bgqdy7fGWLy9vbO8ZX6Lv29yknwZtPtvWcrgfZUnlJeWF1CH2B967oZJAAhpl/n5g5ubXUAunJQBxk/hmhC+hjX6oX1aH4/IUe6/RABhSf2TTdgmDfcfut8NcXWz6iLGAf1kJNN8n8UMSaRiLzCQMlL/cbbCerolm/V1ntuax1OEGAQFFrsTThJaUlISuZ5ZCLL/jpHBwxwSYJoCgENzOHXnOtaDXCtVb8WpEkX9tJ0gx7CzMLBgA2BXokdpsymKoTO7J4SvqBns6nRh2XjotZD9d6L0MFY0LELZiMlSWnduM79z1el4AgC3Ibi9c1XVQXjjLHyAzv7Zs2c57sLMMKuA3mHYFoJR5MToVNJMqaj3oJUxGHDtmvdo8HOzeoT6afRDa7Z9/6IAJyTUbW7O37mj7O7d7jt3DkyMnWkS9lfH7+QjcHz9WQFYmZtbnplZmZ5ejltbyUQmyZ3Bii8HlgpBBycVqSMYsdtVtbPvmQKFgnLBhgvQxyfLc2QfPsC36FVlcYSG4Lfm5ujFBCoADO0M9/8kysmatOiKIrI/bbS/v2fhZxrA0Y4waAAN6ARyty09TGuByPu9Wi+PC1jA0XC4/+3thgCw3f6M/fWGeMT7/jnBRAApqEjRUhgEhLYIKg64CrwL3xDqp032JL+J+jrmUPTcVIQEdgExfRvYAe+31Ie1A5quBVmE9cpwyu+8AyaFSNwycW5xkU3clABQJ6gWdKEI9qncXH/JwzpgEfgz/lJAbYBDGZzyBz50YMapOTmG8QTOPwZc8cH+NJgTAIEMA4R5JfD6uhpZoanAKi5OGRBcEDD5+LExGuw9c25wUNhf5VXImHSyxBAYVi1Rd+qK784P3pmPvTPvmqu6JOyv8+gRCddCFQBieXm5bmmlBMvUQ7J/tu+I2wILLRrRMr1SdNRsOsZu59XoRrFGGdPRdYIPMOjmB/gx/rHGb/G7DkfQ7n/i6hFhfxWlxUepgFqCgFtPgwAJy0LHgpcGXAyZ+sWvJPWLkQJCd/8ZURnsn6pbhfp5pLSHbSKORADr6ylQ7M8jQoUVIKv8E1+TG0n9ck9NivrrGAGUwGOu1H2664lI5IQu/vgZ+8zS0hLn/OycgsLsP6emsPvI4lB+PlFLDFI1/wXUYF68nzKwsjhVQEWwU0i/MOkKUS3oQiUl0X9Vo3b+KfUN+MeVZ9hf/r7mwLDj1zucX1BBgLC/2kbzA//sT/xjhIIgBEDKjabrSl9YoDwGpNhUehkNljjgoetpECCju0wpGVM/CSP1T8cZAWAOuEPLyrpTX39nYcHBtkflFvefVTmF4JBJ8ybmhNWVL68ur6yusNfSi2Gex8/vdMHlhtsDjwyKSzLN5BQgKgaNAkCokTS/iNoGXC75YqDTTQ33v2Gb/SlvACgAEgRM9fcbo8FKm8MEEYAcdURpaOwPDX3oE1vCEo7Whur+2+0G+0fNLzXoaso/zc+kZA2BRQUy/EvjRNJkPZm0mIAEeltSg5o0moADjFTA6iu9YWSzKlwnSP00RgDAPVNF7vvFDC1D1vp0bXQNDw9zWjojV6ahmY7Ydqxn7t+/z0lxnKqYgxwOkvHzvN/gd4nIhj8Y3qq3D2smO+ZwKL5jB+RwAhMp8vtN1rcPATDYf1PTyIf8bfpXy64D35jGlQMY/+q3L2+evnwaNM1LAD4zRJsITxWBiaKyUAJukQUFRhxgb2szggAuEAOM1D/fBMklKPdfNp8Tu1tZyWUQnDVI/WamQX9KnhpCRlL2Ki0b5pyJRSySiVh+AAuP0um7Oe1gdI660Diws7GxwSn/HN+P8aEejKnpR/AzhLqANLKg3P+UdTWqQSNxGlPMngYBs4+MIEDxVDigP5sIiguW+gk6Kjvdf1roqX/ee4N+RrH/akP9ag7cY6wgEgTdTA2mUA7YgGU/+Z/+lJR7KclL8bB/i2GBRreI9WixGGvK2Yk0s7piVRqAV4Hrz007MVL/MdO5Qv00UXottF13jugqcKTfZtNsnJfMMQB2Qg5NceaPTAPlLPXu7u579+6N94+z43MNIGeUB7dTkKlvsfuIBRJ9GzOVjcFPWijsTww+O2GTxKTzV0mK7AYUvv1t/J8o4Ks+Bv1ftABIhKoITEwB84Hue2VMCWUQMPN0Sqh1odiY/GOBxXD/tQDKoc+gfmOrEA7d0/YFq2Im2pLiibEpTE1jmqKZlRXIOgB+QeKt2VlGzQyoGT4z0e8jSzHC3kUPa1Pclvj4gNYB2GxP3f+m7ey/kILACALmGATYfhYEkDgQJox5aUBDoOyvwYDB/mywOHoyVPZ/8MAQgOOu4w0PGxpGGhpmRmDvIk1oFADWUXq6oubi4j3rlZ3btm1TPO4cAf5WSspCUsriNxl2aPRDDQFgG2Aim92FiazKSmOlt18xSBUN8JX6H+2NfxOK+uv1ekbh4dpzjSP5c5hb19ctvZbrvddn/sYM5yhTCThLjU4MFy0ODg4udi/KlDle3XcgFSYN0HVlhKbJ0dQKT29oGi28e7vpHP2qqVEXuolt/DpcBiAaAPy8CYAk0LwF4N8icPCLxv4QH38so8G0tEdFDx9qZH+m3eq3ff9A5pt3bFM/j492lvYLFAC61GTNIQw54DhRwnwUO69p15zMwm7PMavBQbpRnDzHmJpDwTsn9nLWV2dnJ6cAcfkfiNRUyX4G4f4f8mQa2f/nnSkJApQAtBtBAFsDwgIfAmDS8RewkTLzIwJAsQ0x+0/dRUeHmgne1pY1kHHqw1OnurMahr6XNDWlka9dLtnvSaiZF2KzJaOaEQDF/t62suKUCOCbhSkL30xZXNRWVrTNLRLPFrZkXqNqBkVFqKjgyKRsKrIXDcZva0Ai4DDkzEj9N6rMjzJWdLjYX2Y/n184H9Mck9aZlt+XP544/iDzgeN/OjajNmNcMcn2ZOZ8mtB0HMd56bM4G4YOqvtdX00RpREWi2RgzUTeYt5p2DDu76kbWfHnGnEU5PIvJAiIlov6z4khN4ktnm7p6yHMATfWhXFWCedHliyUHOo/2ttbzrHfDGQEMvFfYFA/bRj+oYWJ/e3qiC34B12hTnR2o5t8RDY+dowsYXYNtczuVMxC1/LRI/pNpHiG0vSkOM2Lc+mwDSZb+dadO3eYXeXfIEgWDDT4GXOgHBvu/6vb7L9zUpORBVpmImjiZ0FAIxrDqKqiAc9CN1+bQv3UACoBjtaJAJhy+nytkurspAZYZmfrfvjFuvbEUw++Vz84yJH2Y9HRTMdxJJMuLYMARc1s2NPTqp9wTroPnNqOm23P2fIyberI8szQzJX5wz9G8ZeRRLqiALjgojJMOaco7etU95ER2eyMRKbEgNg7C0RzAKrPGdmsMvdxet9iXsXpn17N7UnmdGbdaH7rxq1/3tKSmvrb33t7xl497/zTzs18tRkch3wZbTD1z4qp0Cv2fTtocpYxG0Jyr2ZmRjJ09h45oDGt6h+fAq+E/HvDt132FvDNbdPNXT1aPrBrYxARdbmUiqrSoYUAIwigsa/2P+5fHuReBuW8hPj+ZH81D9osfrrN/tPh3i9cD8X9Z9dlqM0tsR7gAZXg4knmo6hsAaxFZ2mTc+n+s6C4M+rdu3c5wMsJSBQDLvPjIu+trS36/hMTE319fWT/27dvy9Q3zv6kePjYBbfKl/s/3KPe88r+74CmkXQoACoISJ0pwc80QO2CECb0PCMAekBazhyKCIDh/ivfn8egIKooY1Mu4Hu/53vDlZU/LSv7Wm0tZ1sxo+1yubj1CpdhM/Dqp1RMTKhIeWuLxKEGiX0jXRkqgTVh/9VVm7YydX7FVvrlFVv2EduRNFvaQdvB2LFYCgBHLTmAxK7Cm2JbeszCp1dL9pf13juq2EcWaJw0aKT+tZkj5H1x/2P1WHM94D8BH5hUTY2XuXHjfNTtxsarr702E1235Dzg3NK3mIxPRCJbi+kdpUzMAuqFvwBGFt0sLMhkdImMzfQ7cXNVHtVul+wcQwGfyyq7gJZQqF/bVQN04B0EA2re8tracmLickKCHkwKaIcSyORe3j7bN41lEYoqM2EqgwHa2NiU3jw8Nrw+yvyGTQ0f2auqkqoqURmII/+JYn+s7P1DtCDYP3gB4HYo3ISgGc0d6GDGj72N7lZNTeBiabOp9ufx2FtafvSjH5FxuA8EN1fhdE8KgKz+/TcTEx81NFh/rfWjP/zhFlmPtFxUZHInX8YMJLq0XlweAJGJTHH/dy8DyUGvrzvd7h6gBCOUAdkmOoyJoODCOIP96fXhaH2o7j91l2zb1yeL7M+dO8dllsePH2fhc9cNvsKMNhfcMy/HDZr4CuWZWzYxV8PEHTXYzGZ88UARLWkFX1mx2ZZttt+wYsvJtGWm29IpABabBf8PHnjmMc8UIjOl9Ip06ENjQwxKlMCXqDVQewkAzeqd+h/qi3lTpv3odSRi35kM79p/2+SeZJoEGiy3jo64JpJtQmpqYY5LaeK+oBVIA1KBDB8L6RkwUZjZgyiZ9AlkTYAJUCpk9idvhyrCM/A8u2+yO25HK5Rlhsz+OzTg+8B/DnR/SnqB/f3LDsdycvLysWOs6hDHAHRATXOQOQh0eTAzQ85gaVIeg/a3ZV3YL4+PX8kZv/9nx91jY5vnS6ovv2M2+aM/FwG49oP9QxEAbohIAaDdxd3jx9U8VKZtT50KfGsGTeOXqbiyCetWf//DJzv/kP25x5Ou68709Jmioh++9VZHnaOjoWOLQyqs9fJyn4nvHX7ceg/e6AFoCmCQngO/5MWtRgsL6QcoARDDVNh8OmA6qAwe3WRj9iczYOL7KwsODocsBIUaUyHNNnIHDu7DwRmNjL3gBeoxX6EecPLVA6bYmTJiFfDqAezGukzLzFzJzPwKEIcVr4GCs4j+o9FHcETWEpL9F7HI5KmHMsdaJrvV1flNalslAqBeGKn/U4r6VeaHHc1fNltHENA9HtKuGr52Oll+bW0aNzkg5SYm8mey8fNIY1vmK4xhyMb8W/N1MrMCYLXjgmNnbocixNwp1Yj+E3sE64WRsVktYpGzFVHIx9TuZ2wG9JIoukbi3qh+pfr37qNlFDbgIAKEFuZcECv4pz9Fc/MScfgwE5SKpUlAIQ4CFxbqLMDaWjhuakNs4snJmJpSgRJeB9KCebhGUpIxI6j/j/yIWfLT75yWjR+EfczDBPsHQ/2hCAA3oLiJmzTKQP7R9aYm7oJMGieBB3VFlvalS3RJ2HzloTNs0Gsu11pUlP5kBPIn+fltR6faT9ycKJrBF77AgqWT7tvzrYA3BlDRA/QCwwEkpoRY3YChAeGi/6A123D/HXAY7j+7a7AqNK3KeXKSOldYWMhtNrivGTWAurtzEw4qMeMwTsFias7R3886Ug3bIZRk/lGQHRAkK8NRwA3YgD8KAWfL2GDjEDxDgcG1Qf429SPn5pQr5hMJQOroqLW1NaG11UlyKHKXGckf+EDu801SA74Ac5ANb/Un06K03glmzru7NbbcHQJAAqAAkGPJLWyt/BKCQec0rO2IT2Y18SxKdBUpgcVCT4A8SAmiJJMEZfyNMVMAw28UjOJieQIHT6LESuZBMDJgu1pZUcLA12Wz3vz30POPgT8SrsZtaMBvD3TFYlcXd6hettuXjxxZYrHyrkMXADIXm8z6+nJS0t3h4anpD/+OanYxbyOUpysxm9w7hoxxxIxnux9VIb0KBaSufaFsLXynMgRg0if7f4pPb+AGBeBI2Qo3EKRRA/LzQ5Ao9hgKCJsv29zMDBuf7nbjyRzE1vT0lpwbrYWtbVobowyqNNNMbLhmb7dHDMHBEABaPl4YFrBgCAB9tzDM/ZdVoOQRgBke7sPKHVgN9t+5uQ13PeP0ds7Q5TQtGPs9mRWAZWU7EQPkefvkyEUuE3TMoQ9iEEtLsnzMrwDAbif7pz4x59b/S6//RFF/Curuwfht2i6t8RPRJXzy3BD2QQguwSfYShdPnhzc2PjWo0e/t7W1RYtf+3SNzCkCwD8sFhKyKht5oiKDJWrZ+fNBbdT9r4/gWjZ9XlUU9PQZnPHUHo8qHHmMF/NyLCIOy7Nf0DFiWZkEU3n8ZbJ3I/md5+GvZ6vgmBCFS9Mo8HQRZD9ItUlc3xmAFlbXJtDQiCrIeyczkP2BZe5Us7jIv2X0ItStIJIrx6wJtw/ldjomRvS/P++JSeI3QkY1MA6MVeER/6IlvshHNush64dif1K/WHrpIps1jQJA6g49OiHTMJw2appuyGD0SAt+rCJ7rZWulOyuw7Zu3m2GuP/jwU9L6HnxAgAj+bOGNRw9Far7T6ytydQ3LsAmv3OHpXwKuG9wvSs/xpEAmTQd4D4cZp8Er3ZNQKJafGesa3W54BcjrakdLVbOx+nrm3jrSn0q6lqUyb1ou9b0e8BHV2AHrsCAseXO3gLQ5aloT/H0FqaOaGVfP3TIUXbEWep0lbrc75KZlK1jnVHaHOa6YYuN5SCXKiry9i/9EgJGE+DKwKceXL0KVhAjD7pK5DvqAVWFLYJqc+ECA3DlGzHvFeiiJXkIMMuZ0dMPf8iUIJNCssqSzYMyz8sp9q9pQl8jkBoK+4cONnh5NvhabS23KlvOyWGSAGIhRgCsMI5nXiu6dqfoTt9Zy+q7775OuolByMgEqoDf/kPgTwHlCDOuARfMaoAOA8NAIYKAsL+4/9biBfH9KQD0JIKmft1XTVss85jnqF4r6GS1LCa6hPppZtcZu0N1/wWDz8QBLwAsh/C6/yKxYvT6OduKOxlQCfyu2EuMfwKZM+dz5vhvAW4D/XgGunr4l8mt1jRoNACm1jS1I5VTMVtTLa1WAG1X6toUkdcCmg9iOiSPKcEVYf+3gTlhf5o3/jV2x/376uFI9+5VPXz4/mD1+V95553V48VrpWuuIpdH97g1twsuCgAf5DJzbab/p/3N15pbWpbYYEknDG7J4YGhBvAAUReZQmK6n346+VqVv8ySYlKIfY8KU1/PGDzguYskd8oGJZYqQsdrcFDFdszvaZo8I50np0goXZlvBLIBDSjbd+ov2GuS/dzcUmLikt2+lNmOx2rjgTAsBHuMx91aN+mmLWca77/PYUB126q5hyUIUHgT0BF+/AHgX+2tAToM/IMgHxzLwV7D908pWiDvi5GITNxZwOKwiU1x/FkpQxhC7Tlx/5n8Cdj9tyEkvGgBMNifzIKjDcL+yusJAWQQMf0JONsKfqFvQ/LgPt2uC4AFiAG6fdCC7o80GN9wVihN6InEpMwXRoBWWFutFICszay38Bbm2gDa3wP/3rX93QauPMQV9B/HZbR/wNECYxagppnYQFOjAHDs6/r1WNu5d9n6L7EDcM8D6OR9SiLdf5euBGAFK5OuyXZXO5zgxDby6sKC8tqDQT2QVCN0rLz+lRVKrzyPm96ALJ1TXhFfCQI8gwy/FRQwFyQP4pZHsjHdRNVSJ6+qwZWkz8jxLwWa4A8shzfftJWVzTl/ZeH3L+LLauJTaAKggZjF7BSmhjGMjBwORaoRFR7Dg3jsMzKAGX8aoMPA6eDZXxx/HpMLDfbniJGZtFIw0ifUL+sMFN8Z7r9JrIXH/ReMemlABT5TsGUaAsA+GR73HzC2AHOOj3OAl09b5XZM0b5JhHMuuCCDHwMgq414Bp8CINYeMEvwZhewsIQlQNbk+/bvVoBWZYmtidVz1bIqxZz30f3X0B1zGUAtUAbpMaS80lJey/8vJv3SP2aS3Barxnb1qioZftSgxSKW5t3OqxqrNmY2+AA77hW6ubnOtI0e9EZA5UD+F+WJ7bDbKQBUX1mhTZpSpRQKmNZ77TXVoiYmVHixvi77uDHdxJOrSyyHzu/mUAE0KfOP5bSo3rS+x7GPx75YSv0zH1VF+2mLlG6J3YxR/HDO8/A9GrX/4wHmr2bK9z9YIJkfnceKihBcAc2fS8hkN6lfDFYreV/cf/aygN3/OYQBL04AjOw/2yd7qXn33+w0cIBrfbkFE6d7cjoQfIB7W/IB3NyISYZqyA67L9Eq2Wb/GHXEPZgHb5AemOwrBYuFvh4v5GtimbA/WoB+sGWwUOiAm2F/JQAw3KCTsjerTgVITt6zKTscpF9FkohTo73+W6PL5eJCCq6mprKyCVNcKJrBQ+b50PYJubnK9gfGVkMSJDHCo1hKaKtDr5AuVbXN/uf81QOzlkwMPMCD7lM9y8e/QA+UTTFAAdB2fS9ajOoqA82hRzqhf18PyFHYc0xYAxqCZH9x/xPy5kn94vvT9Qn4xjRTL85gxmB/O+w4eUnc/wAaqD2c7r9gSjQAnylYFPvi/gMyB5xFSmbhLnuc38lJPhwK3vX52pz5w3e5xbHah4NeIX2unByfjmeelwDQbgFbaEYz74V7JBzH8SQk+aD01i50UeoYBKD0uOwqtXsK6L6ifmWtT7fpN9+LxoEiq/F6ivlZFLJLAKkY8wuw2bhzeHpGhmW3VAFXs7e3t7PcuMNVXJyHt8KSllxFcEHAi4YWinLJnChpzyMY4VCiFdZpTLO6xfmurq1+yv6F/q7JhsSvt5S1tDNFLxOfTCPaz10kIIHGZrQgWwLZ7T8BLuNlh47QwIFxw/ePz517Qv1uWlElnL6bRxzifD/81tT2EmJ0BtWYj+H+AwG7/0sIG16EABjsz05isL+5bK8JMiMtlZTQhxpub+fOxlx6zdVefJ6t90IwPniP+0C0trY2NzerVWCAqfnmR4CLT0OBttttH69//AiPClBAH78c5YUo9N5izwYb32WNy6pyJCfTv+AP83mV1m3bCrgHaL6I1YQGsGBkU9TBwSW0t38rMTF9eTmdq9YPH+YgOXcx4VAKd4Q29s9guVEGTp0iTakyS0oKjX71l4z6jQwTyy0rSy0160Qn652JPpKtLGzMRGbWqay8pjxrk1Wxfy78YxnLk2WTM03ZW41qrz82lfDsBkqvhFPQaFhZpHwrA37vz4sG3AziHePtWdrz9Zhj6Ow5v+wvjj8tLuf2+fM3z59fSDlvb61yt/ptHixMEnYxihE4DPZnW2HDMeZ9BrDhwWL43X/BnDrlZwe6SEb+h8kQ8xt/mgUZlp1yfBxzc9zmgQMATPEz1ZOdnc3N4DgpiEt/mfPhHm1MZHODezqzaGhgdZDP9l5wlCrjARixjLRZ2qgBP1r5UQlKKADUszzkMRqgo6BDd8BBARjEIGucTW7V4sLpV9VVTpygz+xPAOYDY3/NBLHqfjmvoEAJ0+SkPG244w85HF8bHk7PyUlLT+dMKkMAuIMeU2qPFbpOn3adOcNi894i5SWSAQ0hg1EcGwsdOaYP+/tXPsJHD/GQKaBVrDqtk1VVJztP5+Y25b5y7hVkYk8crz2+2Lh4oNF5oKnpflFR2LaDpi6JYXlYtkYytrXS8cLxDfiCB/i2D4fmDwM//cbsLl/OFV3zLwDMshm+f0zW3z937ttZ56bvnpu3V9tdcPlvGFnI4hyRIASgG92GAAAg74v7TyIIxv1fRdjR8yLcfw88hvuvBqjCBRlcWVjA2trGnTsff/wxaYtZiyNHjtCfFQHgQxooCXRmlxgZNzbKfHOzu68kYfWCq80y3GaZa0v0LN63tgy1kOiLUMR8cypSRQCccNIlHMUogwCVz62/yKvwWv5mtbcAAwGwv2aeWPfiWFL5+joTQapJcn/HT+4MaFo6n2PKCbJUUAoA8/7M/2xtzeTnb3LiP7WSpcUbslh8FZLA9HsHATv2Hwd3/oKkYKebUfyWljhuRTGgs7Hlco2wNHLSmE1ki+6src091piHQ7mAX0KPAhqR25j7SuMrBxpdBwoLDwCt4RKAZCSLUdyNh5dyKPiFhl8GrsAPPMB3nmnJ/xQCzB6+csUv+xP/zPe8WAbjZP85zL079duHzjfcPT8zVzPn0BzYC1/BV9awRtpSYyqmMYlJg/35dfH9xd8MlKTF9gPL+Iwwhann5/7L5j/hBfM5Gxtq1gej366u7icjAdwKlP4sh0XJZcxmbLEH0/WtqFDzzZnOaGpSymEObRZL24ULbfHxA/wKswA9PYt8WMr4gzZPG9OtFlhk6uc61tWQclEdfw/ZglchZfpb5tZqlv21cPvXdBI5ZYY6xfzZ8LCKBrhf3urqPEtxa4s/mZwhz7aRZBFviJGMv1u57PNKvt/77cB/xn7it++8dk4I6RCWA9mfZcI4wFjGwBaRnc23PJWVnTExuQAtzydLH1TsL5bdmP1KBg5ADM1hEQAmf5i4oD19fJ3dLgKww79+DwHibYSIGvhFvQeYhYGPgIPqojU4DLOohcAYaudIvVrNCFUxV8EG58Z/VjsvohbBw/d36QYK9beicwpHYMlTvC/uf6AQ938dLwF8N6Xtp77oW/giGyZpUVEw+03YwUKWSd8MqIeGwE07l5a4167iM4uFwiBzDSWMN78Kj3gItIkxaOD55Wlfwppzc5x56nC5ZMYhyYAiZzwObO90iW7q3fd9FfBJZbvjfSj86h4TaClP1OKxMZaWiqAYHRkCEBuryuzQIeodRWLvmT8fYDdYfb3h1cnfxv7go53XzpWXQkBBAU22/RUBoEyyzkUah4EuQDTg5O5DSo1eloRM4BUYGoC7oQsAUxYJSIhHfCxiN1ifTidtD802hy8geJi5Yr2ykPFByOcO/ipG6v9hK7K65UN0GEg69ARTU4MRANpLgcs+g6FejPahhiZLosiMKv28T+DJc3MVpclGTBL+6jq7KeleNn/+/+y9B1wU2bru/S8FGhAkJ4liAAOimJ0czz5p9rlnNt64z3dzzjnnnHPO+Y4n3JmTdpysM86YYVRMgAhKjgJNqu9Zs37UbYWWohsanKlnv7umraaraq1a63ned721akkezNY3uj32h2kQF1qfWacwNNDfL9a060GqdPa1mboGOYQihhV57uG/QeNy2d/C/vjbS69lJwMV4nEBUJ0lJcXhHW5cHXKP9YqyVu5yiouNRV8rr9xsKSASWx9l/w1YFD6qAZ/EKQDek6BSAvskaPQlAU7GXpcrLQANshXJ5TTGz/6xl+MKt86x5TyN57DARowxPjbRAjM8HTgZrQR5LZxsAdcbRhW1rCrS0uxCpTb29QTAvtJsudMOZiLY/wERsDKgniW32S4I7PnMHu+vBPuH4aS/DhM/7GhGfAgwFLFe6ks+n2HMh28as4hbAOy7UVxcOyUgeqMP4RshVgSZPr+IHdt5FBsW7Fr5s1jchXNst3N6pp62RK1/+G8f96CFUAvcYC1gc2HxwWP/L1gAT91XHK6PfhdivSJA83wEINvBKmAD0THIYD/9QwxNMGEnoHvu51OPGtYtRuAcWPbvIYDBDaw9rbgdIQABAiwHTdBsbHWQxALYVOc441e5ep3r7bTz5VIPFBWZD6uMAN58fst3ATqgBWM3n9pI3lL/eRgjgXDX/3H9YyP8OmPrBFnw22U+6mp9w3FxH0u1neb0AAOTTHbQcZ7zH2z8yH3hBb1tjh//cerq/JRv/SNAgAABAiRFe/B8mmmzFl3pOHtesfNc7LPnXxUECBAgQCAAz7MQd5hpS04hcw9btrB9O/X1Zhai4/DVQYAAAQIEAnCSBagwtnGjyfraBRB27OCrhgABAgQIBKBxMfYX7OoKoRBfTQQIECBAIACFPIpCAgQIECDA1wAbCBAgQIAAgQAECBAgQICvDxzXdQkQIECAAEEEECBAgAABvt4CMAz/Hn4EnEetBv48XMEvRuE/wjfAgTT4/+CXiAbHh5XDt+E/wG3fJ145i/N00dEB/xCOgQOvwL+GfnxhAv4L/AQ4UA9/HW7gIeYaSjTG4H/AX/XfrtZhGR1/9jr8G+/ufg5/CrYtp8W0w9+HIz7OtB/+BtyIcnGvwb+DIXyiCf4i1IIDu+EvQTP+8Dn8SagCBw7A34q+atl78Idhawxd0fFnb2CIo48n4R78IzgOIfhN8A4eVoluDsPfhTaWQBj+O7wRB3mFDHPyzlMdARTA8XnbRoCvyote2ozRru3TW0bXn7OVDTnGDBiEIWMGAaqssTqomD96PgGeSgHYDMfhmDF2E+Crwv7MU7+1u1/hV6R57L8BmIUhGJQlpMTrH1vnKTonwfKy/hEIQMo89R+HBlYHAX6RNcA96/5726eujP6Z1rJ/NkIE+7sE8DTA2kojK6oABEg6FTUJ8D2ioAb2LVjUKspxRuE7RCANfgJY8HOHR9HWRksLIyMYeCM/Bcd58dHfwSkfZ10MGzaQnExaGllZ5OVRUkJ6OkvAx+mSkqiuXnQBVwfcKAfogE95BC9DnlfKaCeeWCSlUg87gWi/9V9FDk4yyWmkbWZzHnkllGSQ4b96/KL9NG1dHvvLXq83d8Q//De/hdjAhhRSVMYssmwZ9TluDXCIgJrwxYv09GDZnwM5bKeRU4O3GLzIkJ1yrxazf7+vSm2Hz+K/LA+vQfaSvalpwXpCu2AvPvH5AlU/ANu9k0aetWqYqu9RBZdh1lsv8ciRGN5H0ELLda5PMRUhLNvZeGCpst6DT/BACN7w05tsQ4sDh6FqkTrxEIZ3iBcLSkSjJwC+NWAn1PjrgQvrJg0a/SyKePcuH3zA2bP09WF9f6qP8eIxji34XYxd3xMAkb5de7W01HTD2tonLGXn63QpKRw/rharQ/k9wAINeBnw1exgHH4ZD/ug3tdvF1bRz0QVAJFjAQWllG5lay21IsoVE4CxMaP07W/TBrNou7eNmnb27cM//Dc/fmZxAUgn3StjNdUqo/7pK+/rLk2258/z/e9z6xaQzSs55OS8BUgABhk6z+AdTCt87rnHVoZ1o1aqpwHx4zX/vSlSA3YZs4hBAw4Yg0XJTj2xqoiqt6nq4DYG7NmjvmQ0YDnoo+8MZz7iozHGcKzv/2NUVfkrq6cBKXDSR2+KXwMOweFodbKiGhCyR/clAJ4G7Nv3a+EkvOkJwPJ7/gh8NxVO+omau7v55BM+/ZT33+f69f3sF/Uf57gslVS/J/bOSlQ4jiHrTZsM4xcWUlHBjh20t3P4sFECixhOV1amHq2mrMPaHu3/AHfhLLy8zBN7GrBPtrzfelWUGjUCEDlmk11IYQUV29neSmsDDbvZvTICIPa3Nv05kNdOZrv5l38B8N/8SI0aAWxiU2QZdUEHOagPvjRAcKNqQDhMVxfXrvH22477LcP+8/7FqaEhpAGDP4TaExw6xPR0xI+XKlwbfE58eHW59XgFWmJhf4vPoB32w4Enn1Usbewyt3+I8c6Skti1SwH1soIA3cE73DnHuSaaqNpK1Td1UFW+77J2wAVojI0ClolDMr9nmYxjDNPTM/9rAv816yebeM9r0yLKlV+71MFTnGFRvzWx/y52ifetWacsBrySmsrJZ2jEPi7pYdadnQxPDoWHHgw8uHNn6NIldu826jMxYYLyykpiw717nDuHFYBXX0Unf8xptPW4rvAKqfDMwuWgw4SHGe6h5zM+u8hFucaddGrPNNP11BM/pLeytraa/1jz5s9t/5u//MtWDu7eVTNb2QLCYmWcYWaSySGGHvDgNrcvcUlNTp+N5whWA+IIBQzFW3Nz5tlfbQvm5rD7JQN4X0U9zAFfu1w4D6fgraGL2a1Q/zTO8tF9txqQn09f37htHsZqavAH3VO1KutZeJJiLFE4Ia062AiyN+Lo6yf87Y0CF8bg+/A9bbvP3L6t0Daf/M1s9i0AkXqxG08DcnJWUABcIjE5aXx/a5cuacBBYz7W5J0RKxoRSuHEY9H5LLMTTKgb3uNeCy0XJi9cuDA1NkZSkumMW7YYRz42NDdbATD27LOsf0RWUaQAWHK8z/1b3LrCFflTAwyI/eU1q3CVVBIPJJW2b/f2FhTUFBQU3N28+cW2EdvlV1AA/jUWi5RRbWCccbUBCdtNbkoALnBBCufiKiwooCCLrFg1wAXHY3lL8dq6WGFwBwcd7Z8LpZGbq/1kZrpPvj8R+DVP6knD8JayDvxN4M2nUQO2brUmAcC2EMmAfwGw1C8NGGVUdZt4AWgEquEgXjOI8TAL8PKyOPUiXOjn4ve5ffsG+Qrc5bTtZKdfAXB5FDvjLE/UMzjMw/P9z57dwhbP96+gIm52W0QDbOfvp1/N5TKX00l/l3dv3JC8qbUo7jRNLga8/o3Xf9j4w3O/d9YKgJSgrs5HRi4B8F1FkQIgxu+g4ypX88jToKqI8nM+zyW3lNI4BcBz7hzXKTpbVFhYWFBY2N46Yrt8vU0Fr1TpomiA2sBDHqoNiC+aadYde5/3FQrIUVILlNN0hCNAzBoglrcaQMGX7D8/CmFVQVvttOYyj/8D34KNUUvwU0uw/yngz3o/ego1wGPsy5eZ6uqy7cTE5kVF+ECk+++JSeJ7k38N8CkALy3Lnb42woXvIUfgwoUyeJ2GAxyQBqhV+xIAd+nzOCv7wJx1/K2Jayz1y/ffwQ7iQx7eyXIXErBYTFF/JpkiArGbQgG1Hfmm9+/HKADT4UOHwsNn7509t9cKgNmWlz/KE2ukAf6ryEMZZfvYV0JJMsnSy1/hV8SPqqVaaiUM5ZQTE2z61/ZtNcqSYv2vJHXLltlbt+xu2b59Kx1jLlZGuflim73stVGm6FpN8AY3lOdQAQ9z2MGJWQPk6Q8NGQ1gZ2QCAMv+ngB4wsBvW8j+wnbmUblECc8v9qPtC3loPSMjA08D5JB5iSI/AtBHn3X/de9ISkq8+y+ULvgUU92XEoEQlPpv5b294n3L/s70dMM8+6sj+5oH4OIH7gr2Sl2r5/5vmkr2Rn7qqEvAE9tppO1hj/wEebVgAk/roMWGsBGAQzXhGrksSgZYGx31X4PrEWo9ysaL9LexDVDv6qKrm258I3r6d7qCirLSstLSUsrKSE/3Rn0TOQEqREhcL9JXARULyhtQ6cQmAwzEms5ichLL8qNjjijeNUNAXgRgtQHL/makQqiALNkKZdQcnlo8ytueRxAOsxQWH/3fvBmf2LhRJuWwps+x139iuru74MCua9nfEfvfv6/OZdlfWxZDUvyPPMfbWK9e9Xz/pJHx4/PP/BziECsEJ/qTGp4bmEuuHfANh03XnZrCdWNYBVk/PFQ5PXxoemjIHWpxur1kwEsvrU4NrmoVRUACqWigmGJFAJYZRWLxp39TSVUbrUyqrKyooLJS1n/tWuyp4Dg6nDSghJJ88tUSFOuMMSYZ0Ic88lgOJp1JPV8AjAxaT38sN6fioWX/jZMIc3hDQGO5uQ9NEJCN85A9sBljbAKDTbGzz9ON0lJL3cbp7+4eV2vwkwqeYca6/7IY079paY/bSvamyH3Oajk4ov4vfX+amuTKeOyvRuZLANwETzK/fdvz/RW5HOc5z/1PJMElkyzplwGOYz5pK4sBc3Pls7OHDs2qgw/9kB+eOzfpJQMaGha5FvvJWfcaYAUyk0zAMuMEE/GnfyupEevLUrWxZgSAOFPBLrFAPV4ykEKKTQ/I5phjOfiYj1Wwaaaxw0nGdPez3zIs3wlv2f3Thv1FL5u+3D9LutlPlrVXPeb/Lcssp7PUHXXBecpSwRKAiCBAAuDD/R9hxKbyjJWXJ14ABMfPQPpncAT4uyvVxJ27d637bww89n/CQHpSwgclXDx0dhret+5/hxlvFe9b919cvBpnjdZdRhn1GC03V2Rto8aYsfcQEgBjp+dOawjISwZUV/vIq6xLDUgiydNI0aK1ONO/gHH/qdSW4mJsEFBU1N7ebb/fv183InEuyRRT8iJlgFUCeQb4xk1uypE5zemwE8aFIasBSi/knMppIrsJwYFb2P3P52h/D7mnsNgse9MW2BMA/3B83NGnNBU80dWl1rBkKthz/2NP/4ZChvTT08nI0DYeAXCffJMqoRFjBn8y/qM7wPi4N/Qv7qmhxhv9JzqS1oz9+/ocO+FLduuWEhTeYz+KXBL8Mqw73Omks4ceMBxdVhZ9VqY/Fi3hkNEAd2jYGW4eaPZmBsgkMLBOZcAlKqSOYcIywDKjLJ70ryyffOv22+yLPloNmO3utn/if1KYywqgjz4xs/EfQffKRjxEwwJu0W/VhC5zuRWoNt//BFyaYWCAb/3bgT/xb+eH0l7jt8HPwrXkpG+9ff3n3qbVHi3riFqJLIa75fhQ9acrCEhL8zRAMWHE86BRBKCffhsB3OWueDz29O+WLeYRwLw864usLPvHDh9hn8f+otM88jz2DxEiOpLWhv3FApb6pQHNzRIrb+Qnh5xEsv8009e4pkcbr3JVo9tqMHV11NaybVuctZKqHMYQQ8MMa3vnzj1PAF55RY607ZRrLwP+K+o+93vpteP+YqnNbM4gIy73f2rKsr/3mK/+ZU3tuL192v6VBCAxuM51NQDRh+5XCSU24SEB8P+gtpRjBGeERluZb4vluxj6Oer/wJVs9g1CNgafaj+zg/xsLrk5vParUAMO2Pno8bC/fw14jacAkQLgJY28WcHRHv9/5JebNrFcyHOTb/PwISUlsvXM/g4RuH7dsr/Zgsf+1rVaQgAShe97/2V01Dl/3rD/+fOVbqU38qMqX/E8V/OiHx1D/WOMPeCB3P8rXJEcFe0a0N0/etQ9cMCEgHFC9CENsAIgu3hxbD4ZoFOsmEvrOAv/sfLsP8poCy2ttHbQAeg2FVJYQAExYN6338AGkb01LDZt8oKA/lu34kwF+8ccc3ICNNv5Epf0AdjN7u1sl7MO+BeAYbKHaRyen4Y52MzQVWYmTmQ3vpnDkez5Yg7SK/ZXk9jGNu3UV1jHXC1jxw784LMovcG3Bnwf/h3rHcXFlsaNU97V9dALAti5k0cxy+yKzf4V+4sF4sCZhR+dqOR7xP9s398ki3K8vj6P/QmHRf2W/f1M109K4POIpxDeATtcdedO+tmzO365ft+Vfcdrjh8PHdcdW41o/xQWn8se8/2VzJRXe3fz3f4t/31nVW5t7WYNOh854qMb+utttdQOu8NDjhEAzTCKTAbU1BA/NmywtuAfK+37K6l0jnPNNPfQk056NdVibfnI8aV/t1r3P3J6uqjfaoDCWPV0/6ngW/jHLSwcptwpue0qoHx/OQFnOdtJp2RbnaeOuhpqeAIOEYkRGDZ6z4xl+Q6GPsZkgMnOOWRSvXDIphks+8szMF+hr+oheRmDM3/cB/v70IDfAUNPTSpYAoDnOkgAorn/upuP6MYawCOc95Zk/0b/L4EIPfFgHvt3dpZT7uV+8YEkN5E18w7eM9L1k5OlP/ZrS//vjoqKmrIDDcXP1pC1SmddhP1d3Jn8mfGS8f6S/l9X8sef3/Kz5eV527eW7K2sLDHNayMrBDsQZDv8xdGLX2qANaeoyCU+JCVZW/CPZaJ1wUdvprQEUo6/xsc0SiYfGdjP/j3sETmKuONJ/1rfX/EfEXDLyx2rATk5bW2D/lPBp/CJJpnXk6Y+nRrdPdqzuUfccZ3rYcLP8Zx9GGG5TyEPz5v7yFQvJ8fOASPHyxOoMWibRZbdn0zyMp4TrPTB/r41IPupSgWPRU8FP+7+W9FYI7yF8C6/B2NdLIpkaCQa/tGyBj489lcdpZHmsX8uSyQbEz4E1DAJDVjMzl7u77/8K/8nP/9sbe2OsbEcBV4vv2zpa4WxyW4Woo/M0czNPZu/0/7vfzG7qrSgYItchm3bTAqooYHSUlYCG9loNcBaa0dr5KviQqH4Dr4R1VtKCo6Dq//oH7IYm6zwhSxyYGSCiX7673HvBjfEj4DI8ShHrYMcT/pX9Gfcf7dCWx6F++UQkGRg9tKg/1TwW/jBFVlkZ5o+Pj32v8b6d/dn7c7amrRVYzIa/FHnOcIR23/8o3yIP/Kz/JHfjoVlf20rsM/5W7LFsr8sx9sfU1jmxBedPi1Qo/Y0oLkZr/1ECoCaqHX/Tfo3Pd1Qv/3BGqF/G40XshuzeQOcKLe3cqXmdnR0eLlfwGP/nez02aqSEvuOjO1wwAoAnZ189lnf6aMff+yKtTT8K3vmmWXViYsPnPTeZrcAM+GZ8e7x/u7+v0qHCO5W0ecmulSdDg+7L7xgnyCOv5/luXmHnP+XEG5qGvQSwipv/D1EJiGZtJ9ky8epBezvCYB9UyZQTrnIUe6/BEAOsnyNuNK/bq2NAJyFzdsGBtKAS5fsL/wIwCWWQGolJ89OnD0Lf5yWGnBdw8O9va//yut5bXn57flbDm+pKq6qoWYve2N5wGnMGM/A6ci5vk69a1g+MgKwQUAO3v5lt2oHi6+FBkQKgNeEIlPB9tHPx0f/U1PX9NVaDbDN/7BejHd5YsJjfzUrkb6X+/VB/WsjAPMaMDPjNjc7GzYwOcl5R93SCoD0+8CBlT/twlWM7J2ZYcamAZQHrqAio/vMpe6PGBiQPjm6moICrxm5xAW5lp4A/IAfnDvn2lGgrCx3717igS7Q2qT3afm4YTdR3pWv9lRCiXrVDnbI8dc/de3xpH8JUzlVaWcATC2kpU05Ng8crqgI3b1rf7QCqeCTwNG/T+VP2JPNzXH/PmfPnv+VN3e35RU+yKuZKX711YrMzHT84QqP4mELY2EeggOjdq4vMxPJ2VcMy98l++6jQ0AapND+MDlXsPfRmR/ZdnxNX/naaEDkjK6OjsdTwbPMLv78D6ypAMSrAQ4+4LH/zZsKWD32Fwv4jyWT1uolSeJ7KZi18atXpQFif5l2686uIKoiP0aBgkeRmvSgn/6OL74wQ85lZSYXLHpeof5ykIPeE0GfT34emRAuww+qowlAWhq5xtKQ6d+xcSO/BpKJgIPjLZZSRFE55ZIxWfyzf8veKhP7h6j8VfLsqRbQUqXVgP929+5fnvf5tGMluuURqARcabxu9Oxs//f/ykcfdYbDZGSQm4sCP584tXCAa+z/MmZpHoYwGeA/n625XpeQWUyBYX+1BLH/fXJOWSnFyczkxRc5ciSBb3pwYpv678ZxQie+VLAEAFF/ZCrYc/9VpY+8QWINsSfi0+rNvWhpWfS5zzLKolH/H4WTcGxtBGAhiebnu8eOORKAyUlZ7507VgNsHCD6FRLm64iPppnuoquFlg46uHXL+JxdXVYA4j+zbQKRCeEbD254yYDsg2T4Y+mFMKqZxsk0MJZGcnLs3MhPQXJkd/WWSyykMN75GV6/hcpTlR0YW8Bp3j+noZKcCrFyW9uYj1SwD9Qt+CSxHBigX6KfeuFCODfXlQDI6upiFoBBxn6A8Br8WhhE7P8uOfB7oQUL/gUMAl+Q8wV/BX4DBpw4sfR5nQT0yuiTwLW179tRT5HhD/aP9St7HGvxpIKHOzuxDaKnh8LChe6/hGK9zadfeQ3o7/fYX+SpgVnL/voQbbJYWZS0c9JaVo1o/tgxFcDGAe3t9z/7zAqA2ebkkLCXwdmHUoopzicf742gw8OsKDazOXJ22PXrPVlZTna2GQ560T9LLxCAxnTwLCb8yIKPK4yxMS9yT0/fdGnTJf7XJfgr0d94lo19q/0tZq/iIxUcSyNwa2sddSTZwMDMmTN6eWJeHlYDSkvdJd3mFh7F7Cxzc+wtc/dyEX72ND87Q1L5/W9x9k3K6ikDOrWfn/+56Q19yXkv0vYtyl6lzIEi7HsHEsH7MYQCqaTKD1AsaF8DJaEbYQR/GGXUvlYPML4KabIYHnaI1ACvQQwUJln3X1syM22YYMd/vuIa4LH/vXty+R957tNdXvtJWuOq2bHDCoC2WgT46tVBbyBIr88MhRLn6CSRFCJk3wpn3uY4NcXMjGxln0yqoMJqwHwyYMpmg7M2cIAno4HFsCstgv3T1uuAcET6t6L6Nx6vhE/haPS26UI3vA2VD7j6q+/4TAXHUM6GBgmAtZ6WlvPnDfvn5cmcZY+lVVYqp+/W1wODsssMNf3FHX90RzY/nkO6Pe0XMPiAgZ8lZ7I9548fzsZSFZnGbHyzHpFFlswmflRTffT10CO/Xp1lSfbXX+rv1doB+/yz3KA4nwf1mlPb/qS2lAWj/zYIXp8asPh8vr8JjbADn7h0ybK/PkibPfbXwyYxeA9JrCGsKtbVWQHQVhqg12d6CeHnn1+5E/mIVSeZnGJqllk7IdB7rH4FR4GEfezzgoAzs2e+TAYkZR3fmJ2UtDW2FMcfN2Zwfr0mBT0fnl8RTx4xT4BGd4pcDIqgUvYOxcX/6cGDWFLBPsrppqU5ERpw/XqfBMDash/Q2rbNLSmx76wffNc+BfS7c04eMY978k0MGGhm8Jr215U0lZhHgHgVcrHsb7brFKqPQgqLKMokU5zeQYc49za3a6ld8hVb+stOOu0b13UEbWOIACBybUe1o4e2Rd29m9K+fcHzP+sE7tJh1xGE/dC4vFzawuc+3QM11MQWOyatC208ciQyDohMCB88iB/E/3YO+zI40QAgSjb+WEYGq4PIV0Rc7XfOnevLygplp6RkQw5x4OC6fDCks9NL/xYW/tiXT3jyoyU+AuOKa9hJYQ8etPtIBcc+DulpwPe/f+GC6w0E7dq1vAZmW62dAqZt0nRado55BCgDbx0Ya527c3fnuHYSQA6W/Y2tX5RSWkGF+LWJJlH/da7rswj9CZmhbrqbaW6h5Ra3AP29jqDjxD8rWM1APNjd2Xm/M6Nze6e6UuRa8uub/Z0oO2U+IHr02H9gYAc7Gtyoz306+ELSmj8PZhlAyQArALLJTz+NfDBU/XDl4RAJ9f7LXL7JTRtO2teBUli4OnKHeCIyIXz7dkpWVkp2YSgbXoENy3lMo6+v78aNG8PDw+np6dXV1eXl5YnXAN/uv/eiB389R39q7dKltrawj1RwrKiv94KAyfOCHQgy26KiZfd0bwpYNiU5To6IHgMePsR+NTm+IXISgAs/aYMA1i+2YmbJ7WSn2Pw+9y9xSRJpl1ErppgFuMc9zRs/xzl1KzvrTb/VEXSc+CcE6L7Q1dVz/37Pg5zume715/4vl/1907XH/jduqF15T/6kkRb9NOsuAojCbSkpkQnhgcuXI+OAePy+URjDYizy7PaRhjHG1KBF/Re5eJ7zIhn7ICrV1fasK6kBEd5uCSURCeGSCxceZr/8zWzIgiO+b+GDBw/ef//9ixcv9vb2bt68ua6u7vnnn9+xY8eKNFJ3pdO/yckepUfJjrkLEtxmSrBRjNmbNyUiPlLBMY7MRSYDutrarAbIXnuNpKTlOXmieBsE5Ni5vk42Lp4wDAxg2V/asMG1Wm/Zn3TWL/LJ381u3QF1ljOcUU8R+08zrfoSs8uvzyIriSTtUZO2a2tLJM5yVhGDfX3IXvbWUmszyfFrABdm+nt7+76Eide96GA9oA/6wW580bKDkIdFHlFw44aX+6WPhv4Gy/7lpEP/cqg/L/Jj0jqaFJKVFRkHdLS0RMYBMcd2p7DotR9x8OBNBBNFXeWqmixiqcOHjZ+5Zw8FBauaEtrFLu8VER/wwbvvvv0uy8O1a9c+++yzd99999atWyUlJWNjWmEwd9u2bRs2bFh5jY4//bvNuv9ORobvJyTm14nk5k17GCsAK39DRCIRGtDcPOoNBB096l80I8d52GmJfj4CGBhw7H7r+8u8Kv6f8APWO5S76qZbbVUOmrwlyYA+y9NXx7HvzZYAqEPZl+tp9P8LvrjBDeAoRxUoiK10hJWaFZx0mf/TLxhQtRu7V81+HcDSTBec8s/+rzseLf9uFsPAgMf+Ysj6U/WG/ck6wFmM4eAT+z0BsCdLSkQO0L9nXFQUGQe0tNy17C97+eUY1+c5FYX9rQCMM25fdzPGGMXFZjTgyBHT6UUHq4/Ip0IVLLNMyP25d+/elStXXNeVBlRWVnZ3dw8NDUkGVly44hr/keG5/8tZ4q6sDPubvDx1dT+p4NjLtm2bupk1JaIiB4J27PAf0WPdfxsBWHtMGEofewuQg/CqyzpHGmmi8jBh+1nekl1Co4IKxQcZZFgBGGVUHpVuuT5vZrN9sdIJTmi7gQ3xu4ieBnzrSv/rL/ZP1U3zzXU2/nPKY39/zCz29xBNAK5f59Ilw/4dHaUvlx44ldfAhQNcWOaATz3sBxYKwNprQKTKe3GAthcu9NpRIJmmSsaAX9Vx/uuv8l+jv1J582YKSigtNRQgx//AASMAycmrUtRHXd1kkiMTwuo2y3x1eXIoFNLgj3IAjuOkpaWlpKQkRRuzSHwoEDFnJyfHSwAss615QUB/f+ypYH+IDALGmpqsBngy4Ace+yfNpFpPX8z42Fd7yLZfPXXvZiii6HmeTyVVF7+FLXLwdTc0fCrjUaiAGpGxL1ZqoEHKoZ+s7Auib9/u/N4/7fRe/WZUdX0g/G74Xf47Mj846PhayUPtpqvLyAB0vtv5n5EtF2VQv4o5gJ8kOlLs175RW2sjAEDbs7Dpoo0D5J2v6InF/qmpZGSYAaaSEtOMamp09kSVE/t4nI0DJplcboxcUVGxe/duufxdXV3y+pUD2Lp1q/TA/0X7v+I34J3lNgPrsae2aa9q2mZV/BOe46WCdV/27pVCt80fcmREqh3/bbGlihDljRutBugEOulduNBD7nmbDPDVFCzFpwzyDTZKtXRzI5ebzcrScZxULwLwU8UxNKm9slXUgFd5tZBCla6W2g46euiRB6PuOstsEklppKlo+oMKKrazXeOc9dRrPx7iK2J5OZbwf7IAeqGKhLv//nuTDzgyx+85XmXFkRSnF+L9phFiePW1wX+Dby8YBJYbPjtLWRnh8DSchXTY1GLiAPnoHuI6sRUA9Uv7Fhi7KHl0xHu66OPd6ifqP3nkSQPwC1tJB8bHx/Py8gYHBzdt2lRTU3No8cWMGuO7Yu9GGXzbZ/XY9G+drN26OKpd0bhPOJFhv7Iy0unJyVlohzZsJmBFb4uHwkITgKpJSAPgIuRC3gPJwMInkhsXFYDiQRqH2MCGUkojlmRS2VUCRkdzwLD/Rjb6rOJGloM9skSMBanRyv3vpLOX3hFG1HTnmFOhFB9kkSXlU/GrqdZn/Hcq35mA56tANgdbZVmJFQD/vckvFmpAY0LYX0iKfczX8fGqmhT7RUwQl8kdm54GhsDEAZAuC7M1tEInlgD4GOpZuXKGIcRiqKNuD3ummV5ms3GeffZZ8f7o6GhqaqrWM/B70bHfGVsGH9WT3M63LF1PeS6wz7bmLIwId+60LaFt3vaxas1v2zaZndIlnIdcKwNhqkJLnHPPoDEGsW9SIgJlZdafycE+/u+7ik8m3vf3AfkrMvuKw1FGIwUgk8xlTvdd3k3aUSWbFwD7IUFY+d6EI/NxjldZJSTFmPdzoqxZ5muvb1gPHYMuLw7AWGHsJ44Jq386+YyhmI5T8CWWe9Gh1a6ekCXqdl/xo++W0D9/0LtQ4eu2xBSVRejVEFyA3Hnb/ORaHYQhGCQaQiHL/jK/COEboTV7UUT8rcY/QhmQAAFIWG9yfNBpKHEC4KNfOqwJbs4LgLYvQQYB1i06wQpAzwq/Cd0bBYIKEoTbNgLAbF8iOgbnbeYJxbLsn008CLBVNi8Am3mK4bC2SCIKBqLs0MQW+aqrNiV4CVyeFwBtXybAukWbJWr/SST/3cGLLEYS1/cjBoJgH1GwlPsPDmRjLId4EGALVMGs2T71cGRreHLXZSGGhzl16l+fOsUPfkBjIydf4qcxcNjClhd44ZExPpenDgECBAgQIIno+N1YL7sX3vLcs+d4roqqOup4mhEgQIAAAZKe50mYeXaO++/yTzD2PLBzhhkXl6ccAQIECBAg6STR8QZfVQQIECBAgKTGryX7BwgQIECApEIWQxZfbQQIECBAgA18fRAgQIAAAQIBCBAgQIAAjuu6fF0RIECAAEEEECBAgAABAgE4DX8YtoDzqL0J/wfmeBxOAi0Z3lit06bAT8N/hB6w6IP/Dr8R8lboFPHDWV2Liln43/AmOFAMfxA+Wt8FibR9ROAm/At4A0IxVIfjw47An4cPeTJGMU3tG6vTSiC+s0cv62H4u9DG0rgH/wiOQwh+E7yDQQf8Q8zOVPi2dsZ0wcv7rcV34LdBJjjwCvxr6E/EiRfiV+G3RlzIv4GBZV9HGvx/8EtfxwhgH9SxSqiZt0KwyIc675xPJwKUwAEisAP2z9vKo3L+0AeIDS5rCZcAwasg1isKoc7YaiAUIQCRqIPOebtFvAjgJJZkUqBBtnBZ7G6M9UAbK4e0eeqXZQbsHyAQgJV3/2Wr6v7nL4iPIjVggqcJwVtvGxYVgE3zGtCj7QreVEv9+2EbMeBt1hJv8/VEgKRTiyQBuoiCN2EDHhpZPsYYe8CDAQZGGBlnfJrpOebsWijppGeRlU9+CSUppBCJXfPsv4dlYHCQe/fo62N0lKkpu4w6GRnk5FBczPz6Wamwc94WojxCA84yj+lp7t7lwQOGhpicZG6OlBQ2b6aoiIoKc4plYmJi4sqVK52dnYAW9tLqvlrikZhhr03FHx9nZoaNG0lPJztbpfa3eN6CRjELP8+jKIbniIbGlWZ/3cTubgYGzK1Uhc/O4jimzlVLKldBAaWlppgR2A4HrAAsLFU17P+Ennt0wydYqAXuY18VVfjDZ5/R3h55tv2k7OdHDpD6SB2cijqo+x0fqulsZGMaaZlk5pJbRJG2+ISPs8f2cvbDRNZRY5Sz3INPHo2x34AO+HTBzhiqy/vlApxqXDQDMMqjeBnyHm2qp3ycdeF5G72f+k8CjBGBVyA38nD+L4U0+AmWi8ZoAuBDA96MbyXPDjpuc1vb+9zvo2+YYQnAFFMurhWATWzKJruAgi1sUT/czvY8e5cyoQ5rfiGaaGri5k3TR0UcIyN4ApCZSV6eYX+7BPy2bZ77nxc99uict3tgjnzjBq2t3L8vShJ5GwGwa36XlFBdze7d1NezHHz00UenT5++desW6Iq2aY3fV199NVlXu1zcvs21a9y5Q1cX/f08fIgnALbU9vK2b/fJG1E0oPhJd/+tFaV+1YkKZSXNarkq3BMAK+fS3fJyVZy5oampQM489R+ATYuWav9+0zC6v0d3H3cQcsiROyL/I4Ol9fv6dT75hNOnwWAz7Of1AzKd3UdvXtCnfxPRYJdZ38xm9YUSSsopr6ZaXQN/8H92nzgEh4GlBMDTgAULJnoaELK/XX512V9GgXl3PUtowMsLCuBPebzz+hIAHxrwChYxiGCa/eNVEgAoaKEA4T/DKfjlK1d+mtghum+i6RrXbnGrjbYuunrpHWLoIQ8jBUAdT52wkEK18q1sraFmL3v3s3/Dvg1Y9i/BF+T1nz3LpUtcvWqoUDQtPz0cRhBNSwDkMJaViQTFLOn792sl9Zq0tBqiIt3TgIGBznPnXHtkEZNOZEnWdc2Rc3ONH7pzp9k/PMxzz+H4IUDp1E25/9KATz/91HXdI0eOpKWlVVZW7hZTLwuffsr581jl6+igt5exMSsAxlNWqcWSujx9NTjI4cPL5A1PA4qiLoDqrqjjL8a/fNnomYrT1kZnpxEAVWykAOhuqtqlu5WV7NhhpKKuTh88378yWqnS0owG9PTQ/V16vqeKOsIRudgi2ROcWDKwVBOQffyxaVy8YKjfHK2iwndVWozAdwkBTxIALzKWY1RJ5Q527GJXHXX6J9Hh/+z+cUi2vLN0wAVoXLDzIjTGdsGGhWMos8e7Ly/nV95ZLfv7/6kPDXgZYrwUUuHkquUA5EyJd/LzXRi31/IpXGmEv0BMuMGNc5xTf2mmWZ/vcMfFBeOPlmSaLrxhg7rz3OTkxMjIxI3hXv2NWrx8HIULnXT2VvYeqTuSU5fDPvxAPVLutOman3/OlSviffXqPLbJjXJwJsOTg+HBzj6J0TV5cfIra/r6tKR6zTPP5GRlER07oPP+/c4zZzrPnr1y/ryOnE+fOCevxjCJAoCRkXBn5/1b5+4byRkYMLSrL0SyPjA0NNTT09Pa2qqBIEBxwIMHDxQEsCycOcOHHxoNuHhR5ZKOKsYRcYhBwrPhgZGBeyP3RsSPMgnD5KRRhYYGVhDuijr+ukG6gypLc7PulDTVjtLkkptOUTLJc+5cOBweDY8O9KnJ3CAnx7j/7e1qAPUDAw1Hj1oBeBKqqmwcIJMzf5nLYn9r8j+IDsv+0ibD/rt26SDGDhwgJjxDCA4RBdNMjzE2wMBFLsrkG+1kp7yoBzw4xKE97CE+nCAEB7EIECSBjV+cnu7Kc7T4xBu1Owk1LBMi/dOcPsvZ85y/whUwbmh1tXGU9UHemyJmx5EAIOobHjbU1NlJa+v4lcEr7bT3JPUM7Rsarxs/UXeiKKWIJaEDXbggEpQGyBEupliO0ja2iQ0lKg7OBBN99N3l7k1uXuu4ltE9WDOSWTO1s2YOnoEcoqOjLuVM5+SZzq4znZfPydeUSm7dKrlUbRkBEF23tYkXxMMDYXGxPG59J4koLGQJqBJSNeKfm5vbpkMYaczLyMgIhUL4x9WrGpMWi6ngqcPhgzwjJ7GCCtGlBGCSSZW6lVZxXHNHs6nrpCSys20iZB2yv+6dkXDdx3PnTNFAZREpl1KaR56GCo0AMBcmPMyw+Fs39NbgrTH9fWdnaV9fw+how9TUgRMnjMg9GZ4A9PSEb96M1IBUUqPVtGV/bXWrLPXLvHP5xz/Bw1Y4zAK4uBKAUUb76e+kU87Tda530KHP2iNh0LcSH2LCP8JDNYEGBALgwfVIYdx3YiiK7y/2/5APz3BGPktKiukme/YYiamoMMSYlRUpAIZD1RM7OuQCq5uJBIaH976XVPcwvy5cVD0Nx6F86aHZ5mZ1Tf1YZKGlKw9zuJZafbYDu+OMq7urIykE0M7BqcGaj2pqZmuyZrOYhWcgn8XQCmfy8s7U1Z3u7Lw8OmoKsm+fGU2RkonqJQCSLvmsKtH0tLhrxFxJTY08cT8CUFFRUVtbK69fvA/oswZ/quSf+sTDh7bUosvk4fHneUmDGOIFKV8BBeJKyZ4cRnGHTSE29zWb2Ki8HOlY/AKwssM+IHdeKmrDOLWGTDIbaJCru4Md8n9VIt1KFcrFlbANMthFl1pXCy3yNm533G4YmW0IZzTMFubPbOQZSOFJSEmxGiAB0LZtpM3TgKMcZQH6+w31W/Z3XSz16wj6RdzjsVWLaoBETgLQQ494X15LFVUXuKBbqZ1TTDk4IUIS+xjP/lXTAJc4EQiAG/fK7d64v0Z+5Ptb9hczyiE7dIj6ehGcfGc5zosOhhg/uqXFKERZmXFS6+o+27dvCqZB2xNQzRPQ3m6GOES+IAY8znFpwGOrV4pKdrNbHUnxgcRAnWfnmZ3MgbVnoJBHcRPOYOx0Xd0XAwPY/PHBg6Sl4UF0KqqfnDQCJvUa6Ow0nCLC8IGsrKzjx4+npKTs0ngCKnjZgQMH8vPz8QkNOok0pT8PHhw4ceToTx194adeOL7juKjBo2SpnUjNxdV90e0Yk8aqru7dIxwmFFqp7uYQN/r7JWNK4UgDVJWie4mZRufrqded0l3bwAYehTRAA1vVVG9hyxd80TDccODDAxJ1ZmAWTkA60WDv3HwyoFtjaIpTvSCgggoegaV+mWoauQB28EdteoW4qoToGGBAXovKmE32x3wsJ0Y9S2GKzQ8rxo377KU83XBjcFMDJPlh/xg0oIkm9RSN/IhuRJTPPMPzz3P8uOHN6M83GsZXh6quFglqa/0z8eOleQHQVlYT9ckf9eGuLnXmMsrk/4rrDfsvgKhfpr40wog6uboQn8LsvD0LxczjmqV+zLbFcXjxRaamzIUthIjUDm3l5DBw9yHj4yau8QcFAaWlpcoEgI5QkJSUxGJ4CUZgeH4bBgOJzd27koHMUGZNeU1ded3h8sOW/SNvl8pbQ41IRJVzffa6odrBQYaHJVzrhf3t4I9Y9sIF6ZN8f7G/JFxbjXdvZCOLIYccfVtOeRFFknZJXcPDBj7ACoDZPrPExCxPAGQPW1psEKAWoq1CDebxxRd4o/9qQd7gT2I8VUVvz/CMtrqzs8w+5OE97ikakEbqOl/hlZU8e/xMunGjMTVja/oM9nOkrZbX7y6zUQYC4LKSuMtdEY1Ccjvu39DA0aNGA559Fj/YvNn88d69aiGeWnyxtACMjRkNEKNBFlnqKk92i0QWROJzmLPm5dibItj/duSwQTRs2IDjGLP/MeYT32PjWxtL/n0Jws9AI/wkC/GtRwVgRDY+PtzTM9LdPez25VVu31KxpaqialPq4hqrChFdGsETJiclZbJ1NM9LEYniGBGtRqhA5KoRPIVxZjRmKYj9v8E3pOi2dIThw3kB0PbHiQpLTPX1XjLg9uBtbyBI0uLNQ7DsLzO32Rv8yc9P5DiFwiCx/yijffR9l++qi0nOlR3ZwQ65MutolCQt7TGzyS5jkTvjQ/wDFgGS/LcJ//Wq+FTjlS202Ai7rs70lMOHn3D/fgFOYWwmYmBk4VCMjQN+Z9QMsDVwcKyxLJy3QYAnAB/Os387/jAwYARISmRELCMjSrDzWdRdWRD2zn6ECBzxBOAxDRgZGdb/a4eGS5iby922I3dLZV40bvZcL+ujichk8fa7/n6nt9dIr33eVKUuLIyBFu1Ylsn/tLTguqIz+xCwpWCfMOzvYQY+8CcAQmkpXjLgvfciB4JKKY188kffc9BQv7HduxM/Sq1qkVLZWTW3uHWDG9qqx/kRADdmVX8WTsJ/jUsA7AerAVYMVpf9Aw3wUVtJ7krXvtwTRQBttLXSap8qqqkxud9QKP6O0AZTRENyMtZgmOF++u9z33Pz/eISzDGPD+AMdPqfgyXuam/HDBAfKKe4WDzo8znfIfg+kXgeWCgAhRjzMA4jjA2/NjYyMibhkQBUVOSWluZg8TcfP9VDHk4wMckkQmam0af09Lie07961RFr68PICNPTRlykfKLNbdsk+8uTgYcPuXvXVF9rK6ARvJ3slMNr5Sp2nIZZ/MAKgLWRq1cjNeCLpg2W/U1kUl6+cPAnwaihRnlgOf6ifvUydTfpgW7uJjatrtf/i1CML4RCYnm1LjkE2noRgD6o1cnszkTkewMNcBP7LqAHPBDzdtHl4ooNKiqU8hUhxNwgre/RuHTTE6PpfNnZdtaxeogdw62nPoss/OMK4EUA3X6lqQ37CH5zM/aZdCN9VVX+J3oMwg+isL/w91gE6bLiseLiMZAJOZBrtsLNxSdj6+700WcnT8lVV3XFMjRsa+nCdxw7KdpOfJuask+XGopUNrunxwzklZUtQ07u36ezk9lZOfLyZ6uoqqaa+PEpvuA4kU8EtfS3lDglJW5JSU9J8+X9Nv0rXrPUb3NTa/WQShllqp9SSlVRI4yor+m2SrgWVpfL2mHLFtMM8vKorKSoyIu07E51De1cXfYPNMBdi5fByfUWxfTQY2eViWfUEhKB9HQ53WIfaY58ybOcVR5qjDGxntzJcsptLO8f/tlfjuH580YAPvmE9r5NPHfUPvFq6XUB2omCQRghxPIwNm9CrrHFIMdfLu0lLt3ghhxG9j7Pjh3qhDFyxFn45LxmHqRdvFg6c116l7LF8H9/P61X2l2RpSTh4UPpgVhSwuz3+Z++PpGvzVXYHGyCu4ZN7To2IfzDHyoTYC6jqaTpUvGlS8W9vXDMUL8r9lftRYGTkMH3IopUS/nkSwDU3dTpBhjwBGBdZHUOHTLhuJqBjaMsDh60O0UK2rmK7B9ogLtGbwNVixxmeIghQNQgXzM/P1FOiR1vamsTjwxPDv+AH8gzUpgsX1JOkwRAW9kKMsvEBGfPcu6c8f21vTFSzIsHOXaMo0YDSATGYHReAP4F/PNODFzuubgzzIj6Bxm8x70WWi5w4Vz6Ofaf4MgRt77eDGHHgHNwGj76YN/tM2/U91RWmvubkkI4bGjz+nVTIf3yltXP8/JMfasq/GBkhKEhmX2wJ5dcsdsadIr6evdLAQh3d6c2N1/pvVJyu6TlWklzc8mt6uptPgZ/7Cmc1WR/W0VZZMnsgKc63SijLMAo/jHqh/0zl9wROSQrDVg48UI748JF778B/Df0xAnAOOMPeSgDM9aXkWFdwISguhp10cFBpqfFx9MDZgL9da7beNnTgEoqNX66ne0ppBAHdBJNVzp92lCeIoC+gl28etD4OGrix4+TIERGAO4/ARdrEy7vzDI7yaRoVYNyrQWtP1c2VbLtxQ0KTXSFUqnYnsM7Lev8S8Mff+MbfV++d8fEeaEQdg6Ejfa+8x3mmpt1OxTvi1J9pfvGx42p4YAGiTPIkK1Jp7ADQZe7u/9qT89fLLxa8hdLejpKfmdGxuUDB4oPHNikb30kTtxVdnnSSZelkWZ7nGRexgK8hU/0wltLsv+PL8L3v41E4xTCp8Z8IGD/d+CNhArAFFOyaaZtKsja45iN9q/o2Bj53+gQr83MGMYpKKClBb1gp79fzq8sk0wJgMRAAqBguZZa+6IIYsXlyxoFwWrAVN1Bkb6I1ZgYNtHsPwfuc+A+YuFZfkECIPew5yd7/njJz/y85hpUVW2tqdm1b19qrCm4wT/J9RdKX3zx548de66hwYZ3jqe/jiPytPnwCSMI9++bf1dWsiTUaqyBhFmWSiprAbWc9v37L3V3X+rpyfje9y53Xu5r+mH6c0eL9+8p3r/3RFXVepicmkyyNUBxnrVY31PWC6c86o/O/hZrLgBv8QkyHwjY/9vQmNAIYI45F1fmPRdv7ckN8x0I80S8CMVY/DqeCHWKl14yA09lZXY4yNBQZyddXaNDQ4oGZEUUyf1vpbWbbgXOMb9NRQfW4T7/nKmtNXaqm5Gf0lISgctQHyEA7lEWgZM8s7G+OTROxif5P//fPy7cUlheXr4j27wy7TCHJYcsH8dzOFGrV51qVocq+/FhD2X7y80DUEZysXPNhoZ8CYDrMjdntmBbjYPDWiAc5vKdvZfvdF++3eP+i9Pf+M7xX5P8nd+4/3LxgWKZ96q49QM3usp8lyUQCocb//t3//t/58l4lnWDvfdgLzGgJRvOf53YPxUaEz0EZLuubMGj+UuEpu/AJFHwEhZ+BMAbyZU7KvffvvBAAiBXVBpgXzXXPWae9eukc5hhXV0aaTXUsHzI6ZLDOjaGEZvaWk6coKSEBGEL/Bv4hfk+7pzF/Qc8ihBzjeYKHz5kYKCv85/33bx59WJL1m52q/gT7sSLvBhDOuS4tSSx/yJZtpwcOwXCG9XxOx1arcZOTZAM6KZYYw3gTfjaf/v2qzv37Szt2l3a1TX5z85f/lOXi5OL7SRhtZm1XQXT8/ptNOBN71g2fiQEL74Nb4DD04BGYNeyNeAGtADnvzbs70BobXIAdtRH8fskk+Ewk5PGRAqP4BcWf8h4ZgV9j8xM9u0z9uCBqN+anHa7ZIr6dxtt6j/ppBdQUEGF/y4dmdCyNmWfdxb5JQ4FsAVKIAuGMXD+GO5dIlevEJdiJaq3l7t3uXqVz/OHT5/+ZIyxjc7GLLI8AfDPUn8b/jSkRp9Ua83qv67AmP/aDIUkGGHCajUyVhjOkkVtb7eve3O0VTOu3Vdb1VVV1rXP7epyytrM5ADXCMAxjvk/z2poQOS4v5quupuMGHDStqWXIuO4dS8Ay9SAG8YEtdwg67vqApBBhjV14NFRZCMjFBYuETeo9/+4HWZ0oRVOyTqVyH076hgo0/hDcbGxhgbDgurfN25QXi550OD9Pe5d5aodDlpsyliKTwFAAiBTH0woSqwGWAGwqFj4KWKhhJISQ83DwzQ1N+WRJ9nbyU4V3xc3RiCLlYd9YEBb0ZpajWyEEd25RK5PPDnpuf8mbDrqmvm++/btK+2alPegGjQPhjpqTMaqqFrD1fCHGLIP/9j5zzL1uDj4NB9eejqelqyO/OQPN75uz/w4aykA2WTbx/j66BscpL/fEO/27U96JreGmh/jx6aZjihJJ5wCGqOsWPcMfAhzy0zu2eUIjKvuugwN0dRk50b10rt45/AhAN80ApBiBCDRsOyv7XU/PCP2V4air4+bN2luxi7PqbDICoDFWg5rZGXJdGt0iQMM9NOvmyJ9In5ULSOrb+3OHSqprKfeWG09nRM2ghxvarKTA+w0hRChtaq0HnpUP6olQFqu7iYjBmz2LitzfT8xH389OgH7J0IA8sm3E3lucMOb3Tk9TXJyVA2opVZdfdadBYt7kWnik4u54idgBj5m+VBPOXIEXdm1axIAuVFyNhVQxyYAP5oCsnSsAKxRBJAO4376R34+RUXk5RmPsXfE0IccSSzWXAN0WZLnwkIJlCRZdKv4bJLJeJ8FKoJj+IFdz8eamN2yv2wTm9i3zyaQtL3Tf8dqgATgCEdYC6h+rHgPMgjoSuy8MOLG060B65/9Xdda5IsjEzrykwAB2MKWUkrLKVdMOjY+Zl/ucusWu3YtuHsRg44bXJs69tscn4FZjH0SG9fYZGVy8ty0GaWOkm/8Jk/EcyH4fwKwJv2gZGpqS2trSXv77YkJtmzh8OEl+od0yr6Ja2RkMkxYtvID6rFBXnVJCaWl0tXwVLiNNvtKwTrqiBmb4Rgc9TWhz77tRzY+zlHM4I9dVMfGjlYDjL3/vicA2lZQkXjVbKFFAZx915Z9rFndbTObE8CnT6cGOKwTqMPJ7LPOKdZWlv2dtReAJJKqqLIzreROacDh+nW2bjVdW5Tr3T2fIjYFISBKBGDt8zik2N6FZJKJASkQkq2RAPTJaS35vLWktVUacHt0VP6qhtDt9F4n2sCn5M6ag2ONdQKJUkUFlZWmrbS03OLWda5XU11GWQ45xIBkOGaNJeGt8+UN/lhjHlYArD28ccNbM0Cm9pNIsrVrn13jmiJsQKGzVMp7MjXQgPXL/mNjcrtQR52edhzvnXgJ8P0TKwCCqL+GGjkp8uO6u4euXDEdJTtbD8pbxfN7967DNTywCRqwINsGAfMacBED+xIICgt58mwd+8oB3YyZmSyyMsmUEQP2G+NvkGi0GqONLa1b5lq3XGjd8lFbaHY2LNd+505qa+3Ei532Eh+ba9Xba5eBQfGZWmA66awfVFfbl3koYOyb7WuiSSQr9n+e5/0MBPXTr5S+4kh57iqapX6OLi0Ara3e254XDP54cJxIDbg9dttLBhzmcMLIVn3KrrCts0vHxf672V1LrZRyxfnUBeep1wCH9YPOTrq76euzg7G5uYYSHWcF2d9ZLwKgTruHPTa/+h7vXbhAVpao3ziehw6p5N7lRi3NHbgG1+GPY0EFNBjzQN58HDBrjCti/+9/nxs32LaNhgYOHoy6TndLi6RC3diOn9qXasU0D2Cmvb19YmIiMzOzsrKSBOCKx/5mm9KaUt5aXjlWeYkqOYYqukom7RN7zePSYwua377N3btyQaiiWKW2mcP1gpISM1Bo5+5dvHiRi9lki/pd3EMcyiPvyWsQfc7nIkf54+OMP3/o+dCxkB/2n5gQ70cZ/Fm4ZoCnAWfORGaDFaastgY85KG8fumUyvgJn6hzqd0e5KCEai97iRMLeuS6hP9rdlhvUNtS51SAqe4HW7ao6chTTQj7J14ABLXLHnrkaavhfjb32enTYn9VgjxQ9XGRlGRgkcHkcNgubsiNeQGwOAAN8xaJIm8sSGhuviov7ld/1fRf+2rJ3bt1pse7+xdfmBc4NDXpfsgLVuxcSeVyOzDoDP1nzpy5fv366OhoXl7e3r17n3322VAoxKribY/9zVbQ9cv7U8glAVDJxFE5OSQlLfI2CsVhZ8+K5kzyW9CvVHDfk4ETFWvX1YleTSsZHlY7OM1pF1eE3kef/Nwqqh6TAX1rV/mX73+BC9IABXPJe5KTjiW9cOyFDcc2kOZz2pfigCiDP7DoQNBoW1tkMmC587AG/e3zFoWXwikj0kyziqk4wFstWRqwYjdxQY90wXn6RoQc1haTk6YBp6YaP99xTNz94IGhnXPnaG5Wy0lONrFuZSXl5cSCe95//XW9soiPCRMAReJqnRNMzDCzkY2fT37+3nszAwPcu4eyAhUVFBWZCCg9XWwlbRD1O6Oj9PS4nZ3GBTSZgx7uQi40RNgOHkepHQtqbp5tapprarqufizq15lU6XJ3y8p0G8zNcF3pj9l565a6u7hQ/6znmV3s2sGOGEZC5KF++OGHn376aV9fn96vMDQ0lJGRcfTo0UQIwAAexD52tE0E0dTf9OmnJuwZGzM+dEmJqV7XNf/s7JTeoVBMfzA4iHxGhWj6YTnlsJ5Gj9UmFCSqKagXue5Ua+v7vD/AwD3u3eCGdFrEJ4oX284xN8WUyLGXXpVd317hijIHodra5OP3ko51JR+9/2xu6ZKDP9b3jzL4swChUKQG3Jy66QmAiJjlIBf+DZF4AKcWvuNhmmm7AGQnndI55UX0T4m3TneMY9IAXe2qOteu+zRqwNphZoYf/AAF4xrgz8lRbxS1iZGMV2tpB7UwOcEarZUTHPvb8G7K/LD/tkdY/48kTADsQNCzPCslSCMtm+wmmi5fvqcuJ/UrLTXhT1YWaWlWACST6vWqKOf+fdrb70gnHM6bVd0p89z/aNVV0c+J5s2zzVs2NO9OY+zS6CX3gw90FJ1JsZa5DVYA5P7buWDygUdG1IU0enuAAzFE0PL6Ozo6rl279vHHH4OilrsKAvbs2bPqAnCehVAtiY366Zfc3mq9pVJK5kT3BQWmeq3wdXerBcr/MBUgV1rc0UDDPvatL/ffYts202dcl5QUNm8WN4vZW2lVrLOFLXnkKW7zBGCMMRVc5CgJnNK+/YfChw+fOXYs6fjx5NLSJDj2xKDcc/9VaQsGf6Jg61ZPA+TTRWaDl+uJ/y54BYv70V7cKQFQGSWB97kfJiz9s2M+dsFkbRPAqq7Lc0RFgHrohh6YA3Uw09N+4RfkfKn1SgAMtQ0MyCPTfhviHjnCgQPs3UuMOLUc9pexRgJg5wS8zMtZZBVSKGezhZY7I3cuXepQl7Prd4mhVEWua99YoIoyYrCJut1UbuMnRFViN7X4/RTzBDRR3VS9oWlD2qBRGnVIOUp32u7Q1mZOIKcyFDLnmJw0J5ieLqJoNwfFgHbB8RieNJ/9EtPT0xigNICGoLRnbm5uw4YNJBYiBXHBJJPS2s1svvbg2g8eTFy5Iv/CEz4bFBlJPsEucZxKLQ3QTWF9QmN3ipMzMkz0VlYmNRttbb0yqzJdCRGSe+4JwEMezjJLUpIR+9pa9Sr1rbEjR85UVCRDEiQT1TP3nvtsa/Mx+BNlIGikq8sOBFlTsMty8EOEsP1vNKSQoh4kr1/6V0WVAlaFrRJvfSZR+Aj+GYsjwE9Dj9UAWTjcHQ4PhsMY1xD7bivvOeeaGuNiyEuUZWURGyY/mfyE/4rsyQjBNpZE0mqHW/LXXuAF23ZrqGmjrZPOHnoGRwdHBcLqwA6OunQW6eVslounjiS1kMdnV4VdgqduQ7OxquYqT2nUSXQiOU0DEwMPJx5OM6ZTiOizqNHB1dt1JepCCgJiSv9KU7KLioqqq6vl9ff29ioDXFVVpT3+2L8i6mGNxQKVV+wvZlTp9Pkud/t6+oZ7xvqYBlTwYjbXU1RBhb6V/yjxe+LgT3L0L/x+k0x82LHDrltJVZX6jYIs7t+XiIVHR8MmPpgzXSs1m4wy+2dUVuondvkBeRZDcMYKgNl6pP6TkevP2+c+Cy6ZvdIV6aId/PH7mikJgER1drYFimktxoQCC11yHTw6Usz34SUeqk4jTbquhmqnHUgJ1Hp9phx+cqmT+8Ib8A4JgI8Ljv0YL63Sia0AeBowOSnr3TI59IIJMaen5REaLzQnh9JSBbcmOdfQIDGI4VLsdawwkuKcz+OfoZSotEPV4uVeeocYGmMsHCEAtqHLS5WHXkqpBEMfeDLC0GSMZnDRb1/kRSmHfc9BN92DDI4zPs20TqFOruNbhVCYv5vd8WUr6zTuLyWwSeD6+vq9foO6kyyGHPtFrFCJxBGqNI0U2xEhece24HIhLYOUUWYXQlBVxHCFaXDS308y4OSKzA1+8UW2bxdbm9xRdzeDg4yN2QEiEzmGQnak1SSUysrUvSJXH+2FM48LQKO3/ryoP+MSb16GSWzKSq6G/8UhpEm6GAUo1r+7DMVQQrNNCfibTZ7sfcl/X/zvbL+QfmeSmUuuuoMcKZaDRh8n94X/xh+AB98mBiT2gv/bon/34mqe2Hb7KasBU1M9h6b6qqZGRowAzMzgOEYAsrIM6VdWmoazlJfY6P864kdSTNM6HZYPB0caIJtgoo++YYbFUJ4AJJNsG7pIvIACfKJ53u7ioZJK2QgjVmZ0Ok8AdHzrSRE35PKnp6fX1taOj49v3rx5+/btehg05kaevRJ3N4ssBZeKbB7wwD5/ZV8XLAFQwfPIEzc5OLFdYVr0K3wbvhnxZcbKtlQxu2xykp4ehoYMeU9NiXaNAKSkGAHIzqagYNE38d2fjwN+z6MqlXSZH78MsjYsrEyyLBw7Znw51wWG4DKUQLEx18FZQktJ8SmREgA7rBQbTvo/uQ8UhyGEHyTggv0f4KWEnDgFymT7ptg3NTFhBGBiQgJg6D4UUlCKX3rgpP/riB9Jyx/XcYgP8vTlg8uIE90RArAA9hWJrCYKvwTLxhEfu+Kq3rhXLPkmj2Kjdvn7SYo+rd48YdkycRfO4CGEcJvQJZBdJk5ETuS/7gkA7MdDNMIMLVJ/LiuOkP+9sWNdXXAoyq6E1dSULC1Nhn/4KkICBMCHBjisHzTPj/+MEA0BAtwhAg/h8rxNsrKwA0GexZ5WC/AUY8oaTwmSWICwE37oPmQR5LF+cGPe979KgAB+cWne2llxDDyqAQQa8HXE9NMtABo+/piP+53+9d4Qm+YtQAD/eMYYf5UY4LJyyITfaiwGrMPTu+v8gr9hjP+QmLO+Zox/t77umH8BaKX1Ez65xCUceMg83k3szfeBN419dfC6Mf49FuuutjfCr5P5y4X9Rtk6LUckAgQIkMTzRMK+HP8aM/eBH8WC55/nq4YAAQIECATgJAuww9hXHAECBAgQCEBjwP5fTwQIECAQgEIeRSFfAwQIECBAgA18fRAgQIAAAQIBCBAgQIAAjuu6fE0QIECAAAGCCCBAgAABAmxwwL+9CP8Cenkczhrb47gOfwdOrNyRnZWwZ+DvQktMa8CdhN8G3yGR8FHyDfC6KRUXWZ9wlml74C/DVVYUw/Dv4UfAgZ3w5+AyfjAL/xveBAeK4Q/CR8SJhHVFZ40sOn4Rvg2pkAW/A74Hq3oTnAUWRAAJQ5UxKiGN9YJ0qJq3SHTzNOPgvB1gfcJleUgyxsaoHTpAAB9wWEsEApAKlZZt15Mm2UsK8Qh+BT6DMZ5CVEcIwFcFSdae6p4dIECQA6iytv6CEhYIgOxX4QtixzRcIrHIiWD/bNYz3PgFIAgFnnYE7n/sawLfvUtnJwMDTE7OL3D8IhRg0UjsePCAnh4GBzFrA4fNwe06fxkZ5ORQWEhx8XIHyz0UQyXfqWS0BO4nJVFezqFDJB7nztHRsWVmxggAWUW8jodGhFR4B9qhzWzZEykS34fXTj1arkz4BkLjp3AMA27BF3AV9rM0bt682dnZqcUstaJ9SkqKlrQsLS3Vcmb4QB99t7k9zTR47J/O1gYi8CyxYGBg4MGDB9pqfc3JyUmtsO84ji5Pa65lZWXl5+eXlJSkpqYSK9xovfLhQ9ra6O5mZITpaTW/jZmZSYWFSWVl5OX56OXuo60vGoYXDDnvhPqIhhDlALPw8zyKYniOaGhkRTDOeAcdPfQMMxwmPMdcCikZZOSRV0ppAQWsHFTrugNigqEhwwGCt4JuZSWx4tSiKYBJIpFFRGdsXKk74BA/1P7b29vVI9RP1R1c11Vf0LKDBQUF5eXl+pAoAdA9uXCBq1dpb6evj/FxXBdeiLfNSUhu3aK1lXv3zJ2XtEgAtNMKgPq5BCA31y70SlUVO3aoUcRw36vMj9+u4vz9lBTsgr0J1oDPPuOHP6S5uWp6upJDlXxzYdX9GFTCF/Ar0D6vAbshv8Xs5bVGODlftEz7G97CfEflfUos9dvtn+EJkNT2nD9//urVq2pbotqpqSm1Kq1mrBXtd+/effDgQTWvJ7UFht7n/c/5fJLJL6k/jYOv0mAJ//+n7jzAokizd38KUERUGhHMNJKlQR1QEAzj5GfdnHdvjk+8Oeecc8453/vf8E8zOzlgwKwgTZLUKCCSJEuy7s86Q03ZQFNd3Yzs2e9hR+jqrq4633ve857zfeU9AHR2dnZ0dPT09PT39w8NDY2Pj4cFAEIUj10jSvEMTgIVwUDiZc3N0tCAK0pfn4yN8aRJ3C9px46kvWVJB78vB0SHpLndv19vlYsYUGAFAIkUAFZGoD0R5hteEbuxEWSDNLRKa7d0szO8PlHVFFOfKgr081Q2nupaKqW7JA43orVVgkHp6IBhwgPBAA0Awk0G/QsLecI/JDA+AQCDac3a6O+8kvxjo9wBvLK5paWFedHX18c8nZmZefr0aXJyMkxoz549zNbCwkIeSM7UWOcAACeqrZXLl3l+NpPkwMCsb8onZobEaC0t3HPuPFOf3EL6+3cNDe3YOr5ly5OEhKeLiwmzsymTMztGMjIWuPPQdp70zXOUAwE5fNhDAGD4+QI7fmNmcZF/8T4aS74EI17i2nx46i9+kTPxdT0ZWWZfEcm2RpCxFAO6nzwJBIOBxgDPSV76VtvkV37guDnBYDC7qVoDAEKeVEkkA1tra2svX758584dkgC8B0KNb4G2oCo5weTk5Llz5yLA6025eUNufCQf9R0akYo3pOK0VKyg/f9TcWnQ7oGGhgYCEufT3d2Nuw8ODo6NjXFWdgBITU1NT0/fvXs3xCc3N7eoqCgQCBw7diyJlC7GJACvvnRJrl+H3+CHwE/ynJFIAEivStx/LOlAEtAvB4Wf8jvFfSoABBhrxIACRjSwZSPQbuLLum6uDd+/Ile40UEJkur1Su+IjCxsXkhgZj55mkb+Krt52mixFPdJX6VUEgkkBuPaX73KfQASuAMyPMzDuzeJyNbN83A/5j2TdXBQamokNzcuAcCOATu4kvG8A/ZNMGIl/nV1dbC0u3fvMinu37/PtJ2amiIDYLYyEfbt28csgK6RHFRVVREP1jMAcGe4P599tvVKQ7VUl0gJMZ/nU/NgcbiAeDDSbe45b3v3LmFud+e9nJyh/YWSeYpH5gPLPD1ZiHVPnkxNTEwND/c/fNjY82lGV1M+MEqugC9IZaVEowOAnn7xP0Pe8f3N5Jk6CCRfjunHhUL+iYN6GjyVfsXHwZ+CzC8NAP1TYkBjYyj4i1AwFDACRaap4o96GYGs6a4RDL7Z9DA7mOEfLCwkXQgwJIKRyN26cuXKZ599hj+dPXsWHkEM4HH2ZAP8CdgFcEkt33zzzRXVzFtyC1x4NnwdEH+gn0GiHgP1a71+/frt27fxdf6bDEBEoDl4OXx/06ZNeMLs7CyKUIdlTICCggL+48GDB8QJvH8nOaLnGMDH4YoXLsjFi5BP+GyOnPCJL3ExMXEocfPQ5qT6JGa7HAgLAK5SAXP9deD1QH+YPk+CuiAXrspVHgeSsDMBZlCxt2Lbtm0EAIgCYNTV1fWb3b8ZkhCBAWkINPD89GkwgPjLHQBjeoeShVl59IBY4sbU48edXV2dHzSTmIEZhoEigB7s8rEp62/e0D9N1jKc8eKFCxeYp0xJIJ6s9/DhwxB/rj/TFsIEeyM/YAogDZHBv/zyy0yWdQkAoC1zlLvEPDkhp8/JuSqpOiAHuOV7ZA/AKlEa8Z1kAkkETdxXX1+a11/8dYI8FJ9bC5IQAMi/QTcepQ+9hbGSG6ASDbe1DTd+GLqPUkSKCKc+fVpwB9cG7Opo7r6tcPwlBwBGjlRYiUgkRVOhxq9jcBB6/04wSABgsvEWX8B7p7wThLOSRDU2JWcX+/1fyc4ObNnCn/Miyiz4TX19PV711ltv4Tfw6O3btwOvfBDY+v777+NbBw4cYM5DMZY/Iwjo1yHgvg5e5tGQxBrxdRz9xo0bnICQAGVnHzp0CIKDJAXiEABgPYAOihDKFVQI6CdUEK6YBiqMnj59Gs3KcxqK+IMrgv5n5MxJOQmrhd8kSVKCJODhsF0ZEGHcjK725wwDxi8P+mOAPvreJblEGMANKisrcRJVnAEg0jKcp62tDWyCpRItgIIdsoOcYKtErUUgLdfXC5efGDDwJE1ePy0vvYRHKaVg8nODkIGCFy5ACgkKe/fKq6+uhvgcwvDpzw3aZZAqsLzIBh9iRmgMIBMlHQf9mRdQIv7JVCVF5vrDmbj++D+MLSUlBcZGohz/AIA0z9wAvHYtphdK4TE59oq8wvQQbwZ2K9uqq8t/dK3i7ALSXkmJoO2DzWhZy66ksbAA6Yf6kyrIvn0Pr1//qAEywG/xCHzBtQLAZFbw3fvwTj9wCiITWHCo9TbYi/Vx+wYSNQIxVWQtK1Y5qDuYbQaDBxuDp0c0BgSMHsM4b9QZ7e/A/Y2mpoL0YMlbhVkB/0wguzVQcTTy5YAywN1IKiHRpaWlJ0+eREsRy+AXo6Oj+ld+ArUEgDBZwEb/0fJDXwQAr8YHoUTh5ZcuXQLQOYGXXnqJrBbQAW7AdCKTHQDAenCHl5ElEACQjEhiSFwWFxeZFa+++irRIuokAHzp7sa3GIgYfBn4DYKGd1E7ciqw4aFfy/vN0oz6j8pHvb2mpgaWQFmIm4IKJyJccHyD688/4Z7IFOmSTkE4T/IAB4m68IMbCKGf6ru8dlzOnJFTp4Qqnc+n4iAlYOY4pcG7d+5kZwveWlYmVrjfYcO9/kfYPzci+m+x0L9GIhgaLPwMPnSVhEi4HmdOnTrFvNCiF65Ojs4sYAowX5gChAFuBEkwKtBx6prxDwBjY4RpaDu3mYnBnfaO/tTWrlyB/hMAApNXa15ByAFAuKPc4tUuoMmflLpnZxsZGQSJOaP2Yn1dIpkCoCVVVeLaVH5h9NsqEAHgy9J/NPzw0/V6sc4TJxr9/qA1JOjvv3U21P+X+jMzz2292PXhxe2Tt1871oM6GggEA4HsgC/bxzeMjF1oJvBoGER1dTUg6+z5ISTAMpjzgDKvIc1fLv3r6MhZjBn9cahh9XI+DofGfcGaEydOHDlypLiYfMaPry8rRY2TwRCWeDFsFIoEV6IGoA1C4FS08o85NGTQewYPQOSXg0BYmVlmo39cY0A4QBgb9Qm89Pzgr+3SToWfG0GVBVc57MiVuS8U4bngpAKU64nibeNtyMI90uMhAEAvoXfMD2ailnrJ7MU2KgAnT9IbwivkGSlJ7+/3DQ6mZ2auiPvOX255YehvrI6vNToiZ6QtpMLgO0AP9KNwotMyNezpwJVnnhIMIP7IQcxTAobdGUGjRLwDwPw8wM1IkjQaABji1ZCfSfaQ+ooeX0VLIthT1Tl0yKUjg1AmJC8hwZidfTr2/vXuWz40I5ICxKNoVaA73XdmFJePHVvXUrA2FzJSux849R8XtqDF4Kyst/mWfj+jhdH36wPTTxaebBrxf/X/+n/f+UBJIJAbQJET7E9bWcM5Wc2YsXgMKSSUAXKNr4SBLL7F7/krr6EUDL+2Gwxuy+3PA0DavS+kf8R3r4aLozXBH6n6cibKNMEayCY6g6xkgD54hDxFLky2CxUlBSYGaHHYdQ+rFmh/oHfHnJw00BlF0P13mjtJEx3z+KvWy2j1SIlXDFghw91I6I8NyzBNn/3Sj6qgsKLoH2Zcc03UYAyt460DMkDqMC7jaEHisMj5DzIv1x56yZD9VrPf8rmMFoT3M2u/970Jn28qMX16ekX0T97o60sU+k8xInVDoHASU1F4uLDa5oAEt5wMcVPgQ7we8sQkIi0mlYcelZeXxzkAgLg69BHBDPFmPT2ofcSAPW03Kt+Q6moivbb3msvlU9jHpExqmzkhJ1VSt2zeIt+Vvf9LTpwwR0eNhw8n79+9u0hOiEyB07guBX9Ow5/kNGsZYJ1LwfoRDP+sJh9a/nV3O65/Xd75OgvDHlx9cM8M3ssO3ssP9gz2VL5X/WQurfGdb83l7kkOFSQHJDlgZGa+LH/3vNVJVCarGIi5YBn+lGSZPG/oLfp7fRmvF81hjG6b/ps296du49VQoihFwHRQEkQEr8XLiQFucli4D3kxp0eIgv4wW4glIBGVA9cBAAPWfwUhEX5jzs8niLHJ3MSt2SSbvMOy2xgQIRK8eEPTp/ef2bctdZuyBFnFiAGEZFXeOIQDmbZ2AHATBvAvBjdBnY9B9V+WG4rQkyfcqbn09GfDp4i/WTaGmW5Wfp1aGjWRThxtDUBHgBUR/DkvL48kjIYIWckQS9vb20mImUQcwoE0UMQ/AECQGSgv3F0dnptaKflB/I4cmabMw0wPR39DpmRKe86gIRMyYQcAeo12Ze06mHUwtzY39+yWQMDs6jLa2tpbkA8RcJGQ4A5RqkDNodtfRi/QUpjJkeN8NEPcW0Aehx4He56VgIMI/v7g5pJgxZF/Har+Sdr75w//mZ82/u7Gnh4qAyjjhwKWpaSUyuoGs060zI4E8rwp6GMaBpR3QOts9B95yR8m/nirc0Jz8F1oC/o+Hkw1AqbjXsEEmHB0rQnDevgJY+INmQZMm5WE1edOtW8liDZ6DX1huO38IgHYL25tclIXNGk/Ow1rRnq6SbKa4plFRng1H4OQtbR+jc4INHKG12Bl6PB2rOvzNpyYz+dR5yFFJSeT5Qbiv/66ICFbA1DY+EZKhGwialVK/yWtRnZoRi0rc1YkNeRZ6BGzj0wXqYcMLMIs4AW8jESNNJqjOJY6meeW0KQVUzU+h9ybn1PSDy8Alz0S4bY2uokKEjoQrUFsfoah/1252yRNbdKGmDgog+AOVxCXIgBAK3Zn7vZn+r+dlVcsufn5eUxz0LQlFCJoUjchAHgpBWsAoEjL1FwH0+I5Y/+jTW7Lv04BaKsESx8Ge64GQ7Wjhcj87SUl5u7Ar3T+67kn21/5+mxGdnd20PDXhogBmaHp0tCuQCDHKJZVDT0HeQfKhrYDfSaFBH9REp0iO79HJlIhiNc7pf92//wX6G8dZXrCLz4CqoLLgt0iAs1hPcvhKMMwfk/OSwghfpAEKAMiEhAA1uzpvqQxQAyRK87X3BfGMvT/vtj2R9xpfvCc9nayHF0yrySK1cRGdrZZXCxHJX7GB+jqKcoYhAENAExYIIDMOBBAWI92VTSdPCTcrPWdmp7iTiEGyiqGSM1f8RYR4fUcCFWMKoLhe2A7Gg+1PZI5YibTmTJAhG1OGHPisP9o3aAdsqGM7imq6MqVBabE8oUaefmUtraq/bEVr6eW6JiGdMGhagLlSv9XM2QiXkMDKLOJAzmcy+g9AKyYqnHWDOThcWkFlBkeAwB5Db0WRVR64NzPIcYT40md1AExXLUWaenKGRwCkSnwJm27PD//s8eP/8Hwx29l7a7IOpSZmQdi7N2by9/5mtuu9U3SJwD9wTyXgjk33m49uz/5xKjKvx2gv47iYoJcoKenem8T05l2qZu5It9AmuaEzfNaGkj0Nx2a/kUg0JOT0yPCCKzOVdFPcBd8C6YAZYCJ27KJUmllEJg2VtIReNOwAsCOVlv6Z76a4t34CJgO3Q40+CMjoN5Q8oXLSJQG1nMghxMAlP7wtiQxsKdIAcAZA2yrlvsEgLA0Pl0rBe4DAKCv61so5XHbATVIrYZe4XLm5xvd3Y+HMqSa38QuOrQRnN8TNDQ+DNykv479E/juTBw6Z2iXgX/QIkHMwVwrUOzxkCVZ+2Rf/XQ9EjMXlsjKdV7WzzFHFOdWgjs7ZSfMhqSDMBAlIzD37OFkCY0ydGsIfBC+C58FQ1zJ5nTYJ/yWhf7GxtJ/gDI6aGullhUSRPsTFvTT2UScwyIEAPrcaMNjxa/KazT20Am9phzKy3ixdlVwLO8QHwnIJgf4kw74OI2ABACEGjhCVPs94Iv46O4pPIl5yy13UF1jQVedsPLw1q5bQ8hDh6sFsrRzJ/nhr8/OPhqt3TbcmPlgIDNzICMDVCQG5LJMlb/7UkcnuV58Z9QMXN9DKVg1ekgHczTu5V/rzVO7e9F/XJZ/BwB9xyBfOI+y87inpCQUCISoxdw0ZGmWQfZNf5rfH/DnBJpJEOzFw4zfvzpx1m4BBBN68PEw6AZ8n5+I8vwGMIVZK7bSdWrT/6dL3N8kYMRmeKoyHREhGhFsIDISvZH5cqwuFmM7I6U/vDnhTcLs8nMyBRUtqkHJ8sp01R+ePjXNZjfm5Yq5r3XIw78j8nfkxnFR+2rU7b50OOuaYpbNzDxNFrxs7y4EIJY1dkxOttUOwHGnquWpyMsxathBglgzPXUU1ZhfTE/YIAGAi0sCQlSAb+m8QGFhyrlFMkPohmJJFw3frPlQJ+EKQ9WdERpvofsQ6ZkMDNAB33Ill50holeyuEKkgGZhIeBvjHHmUDFQDxWLc47QZrNR9+Jj/cRluUwAYBwIjCn019S4EuQ038JEhDSdWUlThkS0HZbxSr0p2rsRtxrAbatb4m9zMzQGbN48MTdBAEAFii4AsJQMnv6MWi5yfy30N+1bSLsx0E8MuLi/de7Uq0Jn6JEjoAzXbHTT/ODszwZHBjPOTWZ9V1cATgisVBo5KZqSGeAsi8IYXIyoS8GzVilYB+x6nVb/zrkt/15zQL8pUinCOQUOHAicZ60WqP5z3RsIW/q/QMrj4PG/eZwY4GcnH+vA+ogBAOhHbIHpM2/pv6S/nrYz+j0QhSB0zGpmO3I8QScjJ+MD+UDp//Cxg6Loz8+Ybcwy+I6IUGOEvyjTidZAJaU/vAnozxvqO2sAiGCH5TDlpcfm4+mr09P/r29afuXvyPdJm8/8QW358QIrYC8NbnV1wp4poD/4xYImGtdIVBGACABM0JHe3k9bvv/00g8Sk4Ra81nPG/C2WyGNTwIxAwGcC8YIWyISkA3TV09UgEqjCIH+/InYQBBySWih8/R0UocbM8bqOuvo0+U6E1khBPZCMDIt3IYuXtaC0fqJZ9A+ywI6idqYtegBTJSnrG2qre2Q63+YWQ3UoGXBAiNXWTdWDDCETjnQX8fe4jGFfoZLejNjGTNR8MElk4jG7dCXsYSTA9XiXATOx9+IMBbiTs0Bt89GtIu/ECvhJhl7yVnA8eeajuulHoi5uv36XNUbdIbSG2TSmqmBQ9oeJT8aTBvMOhFW1lrAQ7SCpC2q+LonFYgAcGtdA4CWf13qP+9YCP5QRHFef+I8sp3/DMlfsfXoEoazVpxZSg+Q+HWs9RAryqeQBeQXujA//vhj6APeQyTAddDiWXLC6jBew01R9L+XPSsVZwX0p0hLDhKz8UEIx0pVtCahFMaDcSCH8yYEAN4TczMBAmaAln94zIx0Tsv/mxZoPy20nc9igPclzfS4ccmW0P/cORrYkTLIuZg7NLuQ4dO6MHbw4K/UvfMrn17/K7GUgq8wpkiphe06mCzwZ+YGkwG9iVQb+s8nfvwxpJrfA6OEfUiVuDYAnWofp0LzRfNo83sn3qPEgiptbwXB1UYwHPrNoZo9NUeMI2wNcEJOeG4QTz3SWtrfMjTUPjrKGu82vghuRngHDVZr8FuQBZPzM0THJlnRNn2Z+k+jNIL7Sv/T84cV+okBLlsUVVWbtUzIDi2LXADA7Fdi3BfeAVMVNJ57AcEj+BwGWAt1YkTntiQ1DKSGQq0miG2UfFl2SPm3sqzsW+Xl36qqylb01wBA7mAM0pVcmknYYIQRQIZ9AtFlnloKZuwduNOvZQAtBa9b+ZfTdxMAitB8lqA/37l7SNOPVY9ettlPkwRKmHr2c2YYkUMNBJmOe0ATCcXeDRRXQ09E+YH704nfk97zufizvRnp31yS/kVEsZvqMbxDU9RoDbmGT+Sn033FkzkPZ+bwnpibWUsWyAD0nTUFwTE89fwDvNBubXPjjeH+oD8xAGi2PxPuAxCr93MR5YP3xbP99gE51SosfKOTmozZmT/Rmwvl5yJQf/jgAzovCAP4YVQBAInsZXl5W8e2PR17Cu4X9Pyenv/15/8X9xqf0QCA0Py1P/u1Uz87lbsvt+RQyUtFL2WmeGk6IswgANxJuhM8Hmwba6v678H5U8Utl4Kic1tjABH0eaNVhGIhHaTK/b+9agD4rfJlGZVLcF8DQErOgEI/g5nv3uwePF1tZ7fhRTZ9GeZ8h3gHAM7JNBls+oFzMKLq/GBqkpySOjI1UlKIJnqYjBqjqMyd0jmSPnKm8Iyf/S6cDQCGAP3EgNHtg0A/VMaJNni4DoEv6IjS7HW5ui0EgwAQ9+5PO9UQF/amzf2X34ySZf9lW8FzCXGprP1hSOfnz59n6S8lPvt5AMgpugUQXVg2/V9ckv5RM1CEKRpT90NqJADQI0ShWHeQ3uT6+j+1jMPtHFZNPJkeq41MvKe+ebQrdgxHt763ttaeHu42VXRIDjcgn7orgOtAf4dVFslkg4yKjKCFiUcL7JYT5SylAR+Xb4dF2gH/APpJBZBeKUxDbqBSTCH35asENv5qaPC3tnaGQjQGfLJ3LzIdd5yrTaAl8frWz+5l75nwHxjLy5+QrinySoq3UT0UhRopoMl+c9r9kXUs6/T583I42fzjZut3Gp0xwNi/33webd+Rd9CiwaHvWKmCvIgAYJ8Sq6YvG58rP3LggUI/MSDaYpm5ZCpvqrkRQtXC3iF+AaC/H3/Cgchh90g5TQI+0yfRGPGDkchIFIZt4Dv7jLOdLNklvRzsAQajc65IBP15TVbWDK4bRv/RD1T8FxRD6rcMzJMKVN9dP60BgPDDu8VunJyu/g31sbWk+/4fuH9JPDYx2eYOOossExHdTscmZTb6Dx3dr7o/FeDLFy8i+KL8EjPQ2XEy+CCBRKMIC9Zd7s4fhviLSyaeTI8F9O135otEpa0YEeb319xvZy1gLLNE6+xAIUx81Y+tgPtQW9PI7cmO8yb8TAP9V6v1IzyT63FmpAKor2iwLgMA6Yzu/Y4LkNH4ExJICr9dVUVxyM4AyBrfffCACvCdW7eIdiYQQeg7exbty/1yM7plaP2g+Hct8dri6dO9lZUdZE6BObPYFBH2e3LGAJuczZgzU8YU3Si/Lr/+HVQJa7zA5h/muco+/Jzd2312SfeHA0RrSmWcbMYNlOvLMOc7eA4AvxK2K6DcE2p26JqJLS3lc0dLTehNPmpGtNU6hpmQwEk6+Rl3kUXgAP3BnQeBj7DandJ/hqJ/mPfyB7x6dMJqIdYKWJSmpWAGa3Sb7X7QkpJ4qv9zOfoRLuXRGnkx5gRNG/3bDs6w0T/oz5q9Omv7aPZdYNcR7U7jEPptWINOCAEOQOHXXnst1V34TF6y2SUDU7w924gDbdmUSgbvSSrjHf01CYjatMIl+CQnoWWuSGibBnzH4/n7Ebq9mRQ+n6bMzF8EWEiJyy1Muf80F7H3OxXt4vx8tqOhIERxiGAP8dcisG4H/awsfOUKz5YwqOcTwiFhfHfKOS4uIvVSbZghDMjJU7oHXB5y1s5RU6z/GWYbGYwjBmgtFcRgAB18mnaC4Lxfvn0kanMDoL/xDP1HM26cq0lT9C8t9fJkSHQbXYqvYo6aG+FITd9BLU4BQDuB6qequ7r2/OPiouwiSj0vyUsSpalEs7Bpk9ZriQHK/9hGHCLAYN4iKIc916b3am9/VT8L6o4sLRVxCuwMaMeEMh2vCx/s9vzm7puq2BAA4rn9Qxj93/DWYDR8Lv1vC9rSf6fV88f+tHQNsQfD0aNH6drUAEDnKFGBvTxVDmInH3FhduEX4NbWN4rS3nYz51i79Y33xFwGIcxYc9uG3xT5b66anLXIRRiSXds4DyGYRZZID0lM9ofWgFjNidFb9fx0uLoCtKk2NenzP3b5fOzNp7tRhu2xQTxgiwJ4gPZ0QQv41kxDMgB90J4R8euT9wclqN0fQqoE8a+qAuLxjDzZKXqsdXQb7+yIAXwEgAApZN8hPpxGcJDhhdj/UwATOgimWSuzWPCdc0feq64u51JRxPS234dWfeExWhDGlNlENl6jLwb3ORxjbnoOAIOyzHa2TX83UJj1s8yc/J1l/T7f6e3RVvt1JwmGtmsi3cAS7I5sfurOBM7yHbWBdl9799/s7vvzfZVb9A2cG+bpcyQTpSQXDHcW2j2Wgh8trQomsNCmGoMhuWoysX9ws7P8u/HtvnHf7vpfWJL+mevt778P0NP0TXsoWAAiAAd4GwuvSNq4a2+//bZuxEYxwE1Z2GcZ7ZsQSbIHAgn/weESpeH6HGgvftF+UE7AO/ovjwG/A9FhzeYNLXKJTmISHIbnz459eyElkzqUIqoG69J7cV0q2nwrvaHQ/xVvDYkg2zfRDkQqwKPc5ltbaeekMcnNk1aZaez4gpRPXEIp50BKJrb6SoMW9N8OA/eIRgZmmFYM6N3d22/2PzQe5u6xE60XYD+VBX5oP9JY0tgf2pFc5hs45puoyOCa53jb72Prktmdctia/RS8EmMuaJVeD/ccAL6//OEk35bxhl9rvrD7g86yTvg6SS5JTrTNegxokb3zH/+yF53zNyYwnkRzuq4+vT90/3rf9YbdDQNpA3/23LmG+U+ZY0wwEgncGHxCeKTd4t7WUpQ2ipPiUJ+9l4KXdJtYA4C+ibP8u+FNd2Gy0X/wyF5t+uQn/A6JnyUC+CJ7NoAINs0HcFFg6CNiTzdWonP7CAlu8NdejcyiM9aa6v4nWoeIdkc5jqUorRVp3hP/WbMUYUSLrylrirCi2qZz50SJ0WKPAZwTA7MZtDsxCyWLPEA7BWgK4KbLKkYMQAUiHeSycwe13sD0JsJLRCMDIIen1wBMEMR9GlUZDkNntpMA7N7t2/oVeBRG15n+UFZoNGGY5J+ZytEvxJLkB99RCJb5toW2f3az9v7Y2AEQSpU3T4nJdst0Bo1bxuxzs6SGV+pWvjssiyUA/CAM/fk3Wny6pD8eeGyMf8A5QrdNdJJodp3mcuAszPuhXl0TZvAeglBpZmQZzxad3+m6A4gAKExpJvPDRw/v9t29+qevHk87Xu579IFFqalLkWVC9ZqbrYeJtefKuQrKtmF6W6ylYOgPKRxkJMbyb7ej/LthzVhhr//WA1NSUaP0HwpJjxAUm/BMvg/C7nt+wlG6100jgHKIvMtl6EAG7wO4oPsRV4guNJXTYqQVaffGUQQeDtczIQvhbb2jv9d6gAK+Bi8YCqGAEe0OPHHeg1hXxjAwe8mMC9MMHTfWhzCDJpEZJS+wZTftyoAjRgYHJF8aeOCByAGybR9vsSJcEgM0AOjPe5A+w2gxjHvG044z7F/CXkcm8xZAekH2/STIsfV1PjM/mzamD7bf4IubwDfn9NprK5YmjIi3Trd/wEREM2PmnUQ0XsDLMBFhhuq6yFgCgJM98Q/9uYtGHWA6Y2brMJMN/Obz+Kri1kjVaEiAUfTfSOnrmyHLpGeMOcOic1aQs4Cwd6yXh3sQyoAYitrDI8NdfV1Vf7mqMquyfN+tu3dyttdCMBGCUFpBV6kfKR07e5w2OPJNz1vSh5eC5/zNdj9oIBDr3p/zzvLvi4f4yMY6jM8DQOpde8Mfsmvn6kQt0oQ9dcveM05XYPFKl837MEfd7VY3n9A93UBw90/14hCUBzYB1QDA4bwh2xV4vQzeYwAAqyNcD4pg9SJH1w39nVgs0bXJaS7DMJKStKXEbQ+iHquHRzTUKGQTRqTsxBSsgP+J2GHAMG7+E8NoNtJ7ftj5la88IvMnOYk1fHu3VxQxq2WUSEYNiKjWduOGQTzT3TNZCBKlMZU0MyaLBdl1yyzYfQRSr/tfkUZrxsaxsLH4PxRe90ln4NzKLCJHs+Ucib40SNr4Pn93dwsLU1DwaZKGObGCfMgYwuOa+5oB/fYt7alm6r7ZfW/JWywxr86vzi2bnx0b+6R5562PR5INYzotbRLFn2ZquD89A3iBw8zYVCBKwbEHAI0BlH9/WfSfB/LApv/z9oY/kHFH274uLUmwbMWeTu3FxMSdIStrIREWjwezoT/uC3mhwOCmh4GN5NiHgNoj8UNrkmQPvKdmAPEzV26OJgrGErk4cZ5RoBXhSCh0n4RLYrV+MqmISo6KrZp/qy7hLjjzfRizU8+M6jricoT1qLp3rAZ+LX6s2ZVJaQIkIWLaCQeXa7VrRQz4PAB0mfJfpel33mgy9h858kdLSy+WlJzZv39XnKK9d3KAOsIzRLnlOvqvX9cAwPDQUaKZMeksxS19NgAThNqbrGTspmVLr0QODtQnacc/AAD5OogCWlyKaopggCEkjXl/71ZLayuh22C3NzyNbafQfNKN9CIpGpXRxSeLcBWqpvyeDUkO5B6Q0wvMLbR+hC6YAhcXBUG3ujVJLOJhbGSoYL3vUX1fLKVgkhTrcMq/GlQ2fvkX8mKj/6Oy3WI1ffLT+YgYDM4+bxnNBmGL19W0/9L9cjA4DuUE/BvfpbmIdlJoDu9ALwBVx8hOTMbAU8D0WWBEAqRPniLJEwV0Q+n1sciNLaArGEsuypycpSGU/1t14dWEhf43iFq8WQxdQLzJG6s/BUub5DgNjOSbM3GHC6pfc3vAZXilPkGaOC0rGeRUNwSFrsIF+P5uIg3hhZ3FfOKj+DeBZsh5hkLUc+CIK8aAQv7XLmadKRflo2Kzt69j/1uXZo8aw2XGsJxhWVKM0B97DKCCUWlWThjPAsBHEx9NEgNAfx0Q32hMHwBAOoskzqJLElz6L4gHK84I2A95MNqp7qmuGziuwzOB24XFQRQJAQvtLWNIlEZ+Ak8Dx/s6O4PBJi4LOwzW1Jgiggp00Dz4wHhADkUqgH/ohrT2w4BIHUh1IBsEAIKBGdmbvSYBCtl9SxoOAcBz9ydv9ctC/230b9k/IRVvKP136sVoMkAz3TUwEa0HhEmQ6P4AAeKj1qDEtYHaYAdvSB8nGQC9pKQRMEpwBzrPTNBNKJ0t/+QKnAZTgl2Mrl27xgQgZtCLwt4VNKeiIMkLMtU4YSZArjbSkOQCu+FxA8J75Zpc75KbY9IWw0KwW1RgIZ+rPFywrY0gSZMctwdEEa2WutTW+A68GBwJhQAg1v3BK5EmwKDlGzqRhIFTxGNuDQjEPOVwN+uy9speHmLKBEF7RMujeZQryIH8DGOTBBnaUgtpBgVV6669XzXzgwu5/+8/XTP+lGH4cA7jjJxh97oXvh9cQAKaAQBin/R9Is4YwHBtTDQSWfyfi4+Ta2bMtGJ7LmcMgCdx8TUJRgjlNQRplmRybLwDwN8WWrX4VgzKHdrPo84UtUHQQiG4yZ33B3btGuay8Jik8nJutJASHjJXbY2mriKMNTL0vZaqesz6+SPPCwLqQ45VwdF8Te6+ij+p3f1+qdz47f+6fdXnAWBrvS39MwmdLAxJEWGR1BK6TbKJX0I0gFqFAAgILB4ajgijj7AQ10a/M23mIL5mFfg6O9NRzoJUKu6QJRB+yCrIEYEYSkTEBv4KLQL6ORmAiYnBgySJAfo0sRdl+lxqfIilSybgSys9lwi2FAhoumzofhH8+erVgrq6vKPp8kdF/qLnuD0uvi6ehiEJSc4GSkV/lnHRyM85aMc+0Ox+SxqwGFlVGzofdnVx07lNKDxAEveXkg8hWTeDwxNAH/YKBaf4phA1QTbks1wYnA9er3uOjnC50tO5SswgzpZACr8E4QwIH+GUi9bWBtel889vmmdPs9I2+c+IlBdf1eqBxgB0GHkh5hCuWCOlOyUzbrTcsNGfgnCUMHlY55Q+7Z0pwDWHe5EW6AJMTbwIvXAgbhAcCI2orKyMlJpEPH4BwPhiva4O6toAsQ7xYNxaxKzBwenHj69e/TQ5ecZq5TaIAVGeNmcD0hpEItyVE7WhX3/GWgq2+0HxaQ+rfxec5d+Na8w9m/7P2crPsmQfRZ6cVFvClWvoQwVwRBy0wTJcEIAgCY2Wg9MOxMIC/BvHJYGot4yUlk/kT7g7EK8BACUavwd3ECXQPTVZZuNScJ+2VGKAvEgjIwX6AEBoN5HM2hgafRMIA7yYLIbBf5PFsoDl4O3bVYf+4EzVr0iVeLbUf7d36wc7t9bW8rZ8JOm1gqagqPBP+DIxABWorIyBEs3Jud+OALenDZQ5xhsSlbnyJGpkXSRkCkb8hjhNAOaX7A6yyOytrsZ5CEUuV+SQ4h+RIyzpAjHZRGGcrj5yI65PMIj6JLwhzVTUBhDTSKc6OhKbm8tmisrN8sqWypOSeNRqb73SecUZA9CUXmwMSDQTK40vigGtziTgxIloWibTcWwyYwgWrTFkxvoEPZIw8gPmHf8kFSbxYrJwL5QAIZwyQ2PtbQ1H/7AAYH8fzwat5p1mZgYWFmprL8/OTo2PE+YNzpzchaUeLjaWNjo7mVZMJWBIvvY1gMLGfYaqwDGWgm8ol/cWAKD/G1//IZmz0X+gNJPZq2M1SoL/Ab64IyQd5yMtoPALK0GQoRKFC+KyAU+Vc1RL0B9qCd8nfsDuec+gZfg6/UV2ALD3edZFZ+S8iEh8LmkEUUpesAGzkGboDcBFf+oD+fBDwItzJWPGswE4HD2vs6OqqqOm5jevVKVuzdk67bl1rXzLlpFDWz6+I2+/ja8BmsQb8JrJBe4zN/gp3A4aUYjrTLqoLDeXA4FgggqxpK21lTIA4ZYbRCeYbgbHrad4g/pHaGGa8CnEgKhgjg0FEJbpCIJ7sSS4E47PxOZyUUhAC+LTuWIjI0n9/bnzh4rkdTSWo3K0oriiQBZ1fQM/67rqnDEAZvpiYwBB6IuCsDnR54wB0bQ449t4Oy0VUCsVgki1ycDQggjA/IlJx8UnJED88X8mIJtxScyWtGIhhSitA0mEEWPnLY7C3YVoDGzZ8uGNm0NDffgqfUFweYpAJAmkg3yIrf2aJvECx4YNwEt0mS0KJ06e+MYbZd3dxxwBID0+peDB+j5V863ClNvyr3XI/qHkjVX+Pb6G9N8sqSCFov9q6i28D4qBUIMaoNDM/Mc7QW1SgTfffBP2gRSDO4onI6vgTYjkEH94jVaGSS/QfBAfKAzg9KQCYBAMCJWJD0WGQnSC8uS547ZrTb6t+pIYDK0MAMRXyZPxYUoAQ2MXL5JAoc/gzZmbZgoKZo9YRZa8k6l3A6mpRup8pBrApgh/SClJSZlISZk7LXBn+D5ArKAJ8hB/EKTYiRo+zgkx3ZhUURrH6pNk8H/QaJ5Hh6L5MFFnZ5mQlIj4UihFZHDMW16gnyVRhmEgmywZ9YZ6AAuDe6eRg0ZmpEMfA47WnCEH91p0ijUBPMOHdIYXS7HYAYAzvPx02pBLdgwAa11dyfj/jbkzRxQ4aBzUGABgfjT20awzBnC5XBtzCvQnLQb3cXUSX2YE3AsyBGFirjElEYUgZ+g/xADmZjwCgLEyW6T8SxFYtmy3K8DeDe85exb3IpBM79p1ubEx9DZ9QRPop4R/ZpHPp08EIkbQg0ifCZOK+AMbYAUCzAZV0Oicyp8rKio0SkOho8eOHU1JORz/UrAOJkA03Z8brvz7fVluQQla6J96U76pHTnAUmSYwOFeffVVNBkAF3TW7aABZeCY30BDQGSJwfB1Crm8lf1cYkQGNB/kZupdBADyAD6O+UDyQQZA3kAS4H7Xwx9EFFT07zEbJA+n1dYP+4HAnPwYhIYaJ27BM/0RQYdytrO25k1508Mppyz9YUfVjq1JlcwWtDD4BxSJqQIEM610Tx4+DMWVYOD9ywBYxFe+CeIM/Au5yQ4AiP6EB3xGnzbjNfZXSRUFYfZ+YP70Sz+Nq1QcNQBANvVRw6wW4gWsQ3LmpNp1ynfkfC6JGAxp0BhA5HB587/n0WlSIjsMtQ3QH8mEMzHvm3J9XnZc12JAVCtMaWxDdoMVkYEB/VB+uL8GACYCUw9K5L3w674LiCUbOrQBlNsf++aTgmhLroeH+f29bQW9XV07Pr6/ZyvawmJaGt4VFgDwPQIAOXTWwD5aFLLxSwhIN32EZWWhlPRiiY8p+tOBGuoOTSmmM4WWlYLTlnXDaQDY1j2z8QMAa/puytab8o2bIrP2Rh0u9tLA4eDp6Dykn/YDYfR5AArEsRsEv9wybS4izDgDAHIQfq+V4XjEQbWt+sd4mT4Ckp9kj3gs3TG4Mf5MkQCQpMaJY2dJyaQxSc4V7Smn2L81hMa5PRXlzCCQWnQ3ZuYoM4uLo08B4yRivC8qXrNTG6k3X4ZJyGzUAAALJPbwQbwmNqOHksHmbloSmLW8kgDAJjHwfTJpNCLBzHBdkgvNWWk2cFHE0CEDZ8QgeKx587/n0WlS3DgMBWF+UucwOe8gV5JhEgbIzKLrLrMMjk/7A2k304HMWyVTpp69f+L6BgD28GeA/eAxg0xT4mFkjjAlBEeyZdBzvLd3fGCgDaIxOA7k85Bvg++akLCgK1MAqcJ0OZWp/RZgLLwjdOBAt0hIJF4BgHUsLEeAlfjmfXPdczD6FUvB31+5+zN988I3WdXMO2yg8u/zvPwJ4o/sA/oZD8WL7bdM1tkyLZP4WZmHv3g1XJWF7gzEGBgzIAxa4sI2hrHS5ZysCQTfDJ+G/GrF9iMGsxLxRwMAHBOAjqPB+ZinjPU0UiKGRGWkIAw1RwxgnCGtW/1KYl8XzP0diHwTVsbMk3JSbLtOAFga5RKtxbTDT+wBgEQGBYsCy0Pdy406V7wMtoL4EAgg65BmwvAJ6bgyAYA1R8R26BPezOzhlTAOnET7lPXG94O91hiAn0p8jOXHzM9SKV0ILQjhpbtv7QBA8hqqku4qYiTpqq5f35h2c2k0/X/2zjOuqXTb/98tVQIiIFEIwtBU0BksyH/G+Yin934O8++99zf/3st9dc+r++b23u89vdw+fYQpeKyoY4NANIAh5BAgkFD2/V122CcaxBDAwjzfWbMNO/t5kuDH9XvWWjvPYtMxyBXLHgX6Z6LA+YONnaYBRY/rfVjpWZR7NSCrnM1jEwA1Y1eeTq7t2vDL9Pdz+TKlpdTVablBeTnrR/5dsbFMsUUkokhTAkC6AJSWpi9tBsEJAnazYeityAiBf8kCsJdUPkEKQ+D/BH4I84RzJUUAth4Gw+K9GvAJniTG79UA79MjADXUNNHUSmuQ4JWzZykqkptWlC4BoLGRj32MjUITao0vy5jBZQ04DPlsNP5ledn7kGtkTzgjKd5/FsOjx2bzMSzA6SdTAIQ/RQM+yxOIZWOzEnL9r/LqaU6f5ez1kusTjfXJL+996Ut0dbl7ntiPY0OOF+GL8CVo3vA9ofI09bKVsAJR+B58d+m48Ij8wzeWrAS64FMYDAbDZkYAoprqk5wspLCKqtbJ1tD5UIzY4qkEtv0kyKoTBDSz0cylLPCfXTVEWOCR0YXsUWEwGIwAiDrqlJ1ppDFAIEx4hhkbmyeAO8uJoBBUPuKY+7kl+59sZQwGgxEA4cFzhCPOd7hXEQCbrYXBYDAYAXAppljGVsFgMBgM2/jgYDAYDAYjAAaDwWDIxSZDDAaDwWAiAIPBYDAYAbAet63CJPwqfCq7eTIZ8+mlF5jkoSzA78NXV3659b6P1cf/BfwrqMrw6lvw09Cx2kUrzlMN/xpezuqtr8o34SXIgb8J3yYD3oP/CM9k/OqF8HfhBxgMRgAMW26PgOqkZUb5sqViZf0q62cxy9+WwWAwAmDwyTJ3zWVQDhWQv5kyk6m+2EkzGAybKgAG60l8YYt1sxOqwQeVWQQBmeFdfomdbCyLj14ADAbzRTD1Zb148eKdO3cANahUJ271ZmIjGGd8lFEdo0RnmZ1n3sLKI6+IolJKnW2oCylkjXzjgUWAP035qLkNNLTRth6nfP48AwPMz+PCp6AEhy4E75DOAvQuT23VUbeHPcCtW9y+rYYLJBLk51Nejnpt1dbauCwu6iKGh3UR8bjT/cNp/7T6FqrfIYXqS1TfxAchnDbWxzi2gx0P+IDlt26VLy6Ww0hNjfrLprTATmGe+Xd59y53wfH+OjbDIZb4chYi+IekYzNv851FXHLgK7h0YTAYNl4A3nrrre7u7ps3bwLqP6nOZB//+Mdz5H3WQT/9t7g1xNAww2HCEoAZZlwB8OCRY5IA+PCpvWIzzbvYtS4BSNOAfPJPcUrT6iXICgliby+vv87cXIr3536P9I3VdoZlG9vUOehD4c+fPZt/+bIlOQmHkwLg9dLczLFjdHQgGBriwgWuXSMQIBJhdjbZ/2/PHhobefZZXcoD+MP7e0i9S/UrnE92wZQWnuQkaYRC+oDlr71WPj9fAXobUhm9pZWbDL/GazqC4/0/plcBMheAG9y4w50o0UUWt7O94hsVPnyS/7TWpLOL/GAbWORadAFGAAyGTRSAGzduaPkvDXjnnXcAtaLX8l9tYNWNnqzQOvEiF69w5QY3/PjvcCdEaIIJVwDcdqC72V1Djdbp+9l/kIOHOSxtWJ8AiCj8mdP1RQJTT33WAnD1KleucOYM16+73n9155uuAe812831wfpXuyd6e73nzqGpRketeFx9n/H5aGsjFiMvjyMlNzl9GglOXx9SiVDIEYBkA/KWFp2RbmiJ/vBfSEXFkgYUU/GdnPDkl/myNHieeckA9xIMSuTKL18uv3ixvLZWg3RmZQHQDAECL/NyZBdUf1mXpnYK+j1WQ33A3+O9S1waZDBCRAKg+M/7DW8NNbXUSp9kHjzAEEMhQhFGPFws4mvSCQwGw6YKgNb7agKutvRKBAGKA0ZGRtSwm6y4zvVees9x7hKXrnFtkEEgPz+/vLzc6/Hm5ubatp1IJKLR6K3xWwoRCilsokkPbnM7RKiDjvRQIOt3Is8iAdBRL8Ea6e+XAMgc778at1d9sjpUHeuOvfnmdE9PZcHZpiN4CyiYZXYkPvJ+//tvTkTz8uSxQzV573rfeiuvu/tA/rWaQ5SUOM3TFvz+SP+liDJHytORn09ZGQcOkMZCWmNfmdz0QvjSCCOOyeGuJABF0oB/8A/Kf/u3S4LBSZ2Jx5E4pSLx1nBpwBhjVD+nadHkmREn3k33m7x5hjP6G9EMkqJiip0OdHXU6W/HSZFZWH78ffT106+VwS52lVPOClxK/yErnk19ZDB8QAWgsLDQ4/HIQfv9fpAzqtCPOsnaUYqgm+53eEca0EcfsHfv3vr6ejUZ17TFxcV5eXkSAHW+lwCEQqFAIHDr1q2+SJ90YpRRLRUVJShZ4cXL+vha19e++cffvDp91REAHXPIIWNsW2v/pABA0ec+99kf/vAbZMV07/TwO9Pd3Z89dO5TinLkmLWwjRHTR9bjN8JvXL5MY+OVlvkLpb29JxquHTlCfT07dyIBCIXQG3j7bc6di6BIxOtFy+X9+7EsVkc+2nHTly45vlt2nwCEw/L+0gCKi8tFzRsVwf80qet0Rm8gFXcGhDOtjpnRR99ZzvbQc5rTcvTHOa6PP820ZnuFVyqo0N+O4gBH9RU7at0wyugn+aTO6w0/NNqZgR+SBccxAmAwAiBqa2sPHDigVb8cNKDMT2tr6zNyNGvkJjd76NFaTxrgx68m90eOHDl48KCKCpKBysrKkpISVwAUdoyOjkpyrl+/funSpQsXLmig3OICC7nkfoSPlFDCOoi1xn7Nf/wf9vYqEyXvL3uWZ9eU/HFsaIhfbG/9RryFbIm9F/uL3m+d/JkPPX/y+SMcabQaHQ8oscwnP0Kk1z8eCPQHJ6+3e/s6OzlxgoMHJcNIALTu372b+XkpgR4Po5BpcFCPpKusTmWlowGKGIYjw04EkLb8dyIAypcJBv06ky4ActaO6VLH+2fY1HOe+X76FQhe4EIrrZL2AxzQ8n+SSQV8fvwyXaDgoIwyIEJEz77Ii/pF6Xp9gExSbjPwg7V6f1kK/w+D4YMqAKWlpS+88IKyNHL9zppdjlvugLUQIfIjfqQbRd7mbT/+3bt3nzhxor29va2tTeoiOUkvKU9OTmr5f+XKlT179kgtVIU+s3hG63TnBqEP8SHWwUzrzMxAixJbrWM/CQLkXDIaO5P0/goCRsrLv9HSEh9chwD8vP2Rlzrk1DrprKEGG+GxPB10yCm/z/vnphtGRv79v7/m/+IXbS3/pQFu++S6OubmCATQO5HbR054dJSxMUcAMgkCZNHIZUcAxhhLTa/J9TsRQFtbuagor7gcTKqCJCc3FzeH43h/zUB1S3LazAgR0ij5eun6czynX4KsggqFegqAZH78AQJ6IzojtSiiSLO30NJOu4yVaVvpVFYYDEYAnCBAWRpVAgAt1ZWpZ40ocj/PeQX7/fRLUeT9Ozs7dTx27Fi663dQQHD48GHpTVlZmeRnYWGhp6fHWQx68frwNdOcvQC0SABaZwcGxt56yw0C5HPXtPzX7yPxYktcAnC9hexpL6J9Lx33JDRssFCmW95Qn/fllwfb2/0+Hw0N3EdNDQoCFBAgJiaIRqWcZIBbBuDyZdeDuwIQiSR9vdSuqqpyz56qam91QXxHMBh1ztfW3r/8lxN3RYUVOcx9TDE1yeQEE/vw6uM306yCPyCBr6MuSlQaIAEYOT+ix5q/kEIvXl0jtXjw7QBd3MtfQ5YtBoMRAP6cnD/MqfrlKsTfgy74PJmjFZwcZh99ivQBBRC6lUjeX0cehmoDJ0+enJ+fn5qaCofD165dk5YoKSwv0ESThUVWJFoTcwPMDbTaAwOe21fcIKCSSlZDJfHk2l9Hu6qqv6VlzmqZm2sle9rhODSRRhFFcnkFFMBveDxSREpL0ys0FBWxfTuS0YXZWRIJZJkg3XDy9Tt2jESTdeBDHEpZ/sv0vGNJ1+4IwPDw/QKgsXpzzoSaOTPPjHw6zHcxDwVQqM9LCjvYobycbOL8hHRikcUCCqSIueSyGl8jhQ5kmWIwGAF4jzSSp0ohDi8h0v9Zdax6y/8Nblzn+iKLyvYcOnRImZ/jx4+TGao9KFBQ/BFQLry//87cHU2lisIAA5IBsiMHu9W2B1oYGIjd/nMFAY4AnOJUhsv/iQk41mK3tJBose08sue/gM1KSN62sc0RuW3bkpaOZaHzOmLbSXPJrBQ8Gr3qFHKnmfbgcQsAsoMHlwRA4NPV7wbfd867aJQzluo6t/yboQDkuOdW3QqutKu0dF8pBoNh8wXgG6TxY/gLUukEMhSAGLEhhpxqHtDY2Lhv3z6VEyzLgsw9VbVKBSoINzQ0KAiQ69eEmjZ7ARBN0NoqAZBduZHMAskUXnA/NljAyEjKzT8qg8v7yy7sZ71YYPPIcTM2+jyOH5c10ihtc8q/09P3RAD605ouDganHA3QKTf/EyOW9P6yB9G8yglrybZhMBieNAEQEXj5wd5ffJ2VcZaH8hjzzCv7r3KCvkSWxU1EultUA1USkAAECGhCTZsgkU9+9i63pYGBv9IAWxow7wQBjgCsjFv7jceXxEPef58EALCeSg1wb9ksLh6ZGnEFwC3/6knHRDVuFui6KwDu8p+SkuTzVVVkw2oRgCvBBoNhswVgkAcQgSgFrJEw4RAhZ5cYr9er+3+0nGftaJRuB9IMBQUF8Xhcc44xpsmrqCJrapATl/fXDgz9ly5dJXlH0AEOkIbfnxSA99+HAwdsZ/lPipI9zRowcn3IWcsvshgMbnMiAGmcKwD607Gzw0kBSK0Au9kkssRZ/uvIBmtAx5J9HYPB8Bh2A51gQhYhAuzcuVO39Di3kGaBBmq4JnH2D9C0UaKsE2chr2NxsSoBMjn5OHHScGu/5OdrSNKeclzHPcusEwGoIOxEAFNTK0cAcxNFjgDcvTvuLP8jRFwhITsc7y8zGAxbSQBixKaZlgEej0cVXd3fSVYUL6FJAE2omWWsk4oKeX/H5Mvk/R0Z4F6uXUsu/wcGwPX+VVVbRABkRUXJL/QGhx3/nur9nU3rnBNLWSCWbPkLwB5PWgFgo1NADjYGg+FpEoAECceA/CWUwyErNNCZ4b5ps8RKCwIqK90gQBEGyyQSKbXfkpK05b/F08u2ba4GOAn90eDovTeA4uJcp3P3C4CrIpZFFpgisMGwVQXAxl5kUUc0+xJWtm4idbjmdKddL0VF9rIGyO9LABxLr/3K2zlqYevisjK2BO43wvTZwzPh8HB4eHgmGl1BAJzlvyw2XjgysjAyMjb247EQodQCwPojABMEGAxbRwCUOsghR0dgYYlFue6sSB2uOd1pNwAnAtCxttbNAjm7m0WjSQGQKUTY5Oy/9RjLABQWRu5GQqPahenH6d7f+Z27peDR0XHVAMKh8EJhXnoBIPsisMFg2EoCUECBY0B8Ce31RlbMLqEZUqfdqEyIqwFx4k4WSMfU2m8kkpL9LyraOg0pc3PdHM7E6MTdu9HR0eiD9nRwS8FjY5Oh0MREaMINIJAiw/qLwCYIMBi2jgB48BRT7Gzeqe0ctMVbNBolKzR2aglAc2pm2Yb52cbGpAbs23eNa04Q0B/qd5f/Tt8V55rUKbZMECCbvDs5Oqo9nydXjACEGwEEQy1jY1OTY5OkasX6U0AGw1bCCEAppTvZmdzONxIJh8NjY2Osnbm5OQ0cHx/XJEA55ZpTk7NB2KnV4Lw8JwjQl86WvL8Vi+Eu/22FC1sLdxXf/5XAr/961OdzBGCFmm4eeclS8LTvN8d+6lrXwIYKwDbABAGPC4Mhl42mkkov3t3s1rJaW/yrr4Cay8uba+t/1sLt27eDwaCGqwywne2aUzPvYtfGLoTdzSGGLly4Gb3ZP9B/69bta9eW4wNZUxNrpD6LJ+szncNlL6txglXJz0/m8Y9Xw88VFPycz2frp3TcUrCOVX9cxTM4AzWDiQDux2AwAlBFlfxFDTUePNOx6cHBQXWXVF/JtbYUVm8A9YcZGhoC9rLXcUPWRrsMVwBk/iG/f9Cv/+cXt+l81rXfLh5EkyyDMV/gYdRoRJbvIUX8amU+GLQspcGsmpqVV9o11Oxn/1f5KqIafKxj+X8A/heyLLB50jEYjADkkltHXT31jTRe5KJcv/Iq2tOtpqYm82+EqTH91atXtRmc/DHQQIPTKXDj918oK8MNAgLnA0u4yR/27s0iX/8SK9KMbEV+pDFr8P57ZVm8h3QBeKkaZDmwsHt36ge078sCfZyPH+UouY73l5VjMBiMAKyIXH8zzVo29tOvHM7Fixe1I5B2dFBPmEwSQcr8nDlz5vz58319fYAzlY4+fGwoNlggR+8IQPwf+odG/+Du9u/T+VlHALJbdx4jnRydzmDAoezmT6eah7FdebWkO4fAQ+/sqkb/kbRCVsZgMBgBqKCildYhhoIEu+k+e/astgXV13qVzT969OiuVfvHKmKQ91cvsN7eXpUBSilto+0QhzThJqUF5ApdDQjMz1NXl/T+Xi9bGjehA4FML3dGGAyGLUHuJm28qx5+o4yGCU8yeXHh4unTp+X9dUOn2ryoPYD2edY2n5Zlpd7yPzw8rGqBMj9a+7/33ntqDZ9Pfgcdxzh2mMM+fNibtgtnayuDg0Qit51b/g8dQg/Sh201XI+ewb6kVopeGAxbCBMBbLwGFFDQTvsUUwkSFtaF2QuvvfaabglVUVctYlQPUBygkoAyQrZty/tPTExIG1QxVvZfmR9d5ol6ni95/gQnpAGaig3E1YDUT67+5BUVTE+Tn09TEzt2APZW9v7CA39HZuquH3AMJgVkw5twio1jD3te5EVHDHaw4wIXVAxQhkedXqqqqrTVs3b6dAQgHo9Ho9FQKKScj1P1rf2vtUd6jrSfan+h8AVpAGlsfBwgj9/RsVnf1cqBv4FsdQ4t2f/lYXxpyX4Hg8GwUZgaQBz+KfwSG8de9n6YD5dQsotdPnzXuDYQG7i8hHZ50z7PrgDEYjHE59gTLhmdOlDfc7gtr+1E3tHOzo7c3Bw2Exsss/z9YGMwGAFIINtodrP7E3xC0UAddfvZP8hgkGCIUHQxOjM5M8+8s3uEpKKsu8z7htc3F/e98cb/7TmvL+fm5TXl5tLZufqq3AY+z4PJf/DTX4Dv8zC+kD6+BpnBYNhqGAHIhXk2lDzyVMhtoqmf/iGGRhgJE44SnWVWAmBh6QKP7Sm1SysTldUJv29u7n+88UZPT1NeHhIAHV944SHZmK4HvzZd2QQB9oPn9jmnDAbDVsEIwOKyAMyzOZRSeoQjsjHGxhmfZPInAmDnFVFUapVWnKgomXuHuTkSidhpq6dH3j9p7e1r/95Tvp7IJhFkP3juGudng8GwhTAC4Hj/OEvYNkksi41G9QDZyrn2fDhxQgLg2MS770oDnCBA1tbGgyjI9GwWFKT/YDAYthJGAOJLlgAWF5meJhZjdhaKCikspKCAR4bHo4yPqwFjZ8+6cYCU4ODBTa8G23zAMBgMJgK4eTMxNZUAxse5cYNgkEQCnvFSXs7OnZvodNMpK5MG6OUdG+nrkwa49YB9+9gwzJ0/BoPBCMDwcOLllxOBQAKYnOTmTS5cgPx8mpupq8Pn4xHj9bq5IHn9QDicmguqryczSuAfIdtAGuG/IDMYDFsEIwCz44noaOLPv5GYgOlpgkGorKSzjWPHlHbZLAGwH9a0RBpgWehBNNoPebK+pAbU1LAeDAaDwZDLKzBEYiiRCCTiTZU3pjsRh4upqmL/fo4epaODR4vFMs88Q1kZgQCxGLZ9DXIdGbhDZy579mAwGAyGrMnloxAhPhSPBw4n7lYjV2tZFBWhCKC+Xsv/x5xuLy1FtsxlRwAgF05BBevBYDAYTAqojETZc4m25xLRKDMzSAC2b6ekhCeS88sCoOMp/rKdO+BQIIgCOP5mupRGYQpQxSEFEZAAhPvcg44OKAClQGkXxoJb2BubAw539txp+v889OYL/GVqpCMVAAB3APltOh0J8wcKqeLtMwBhXgQAUD0A8v+UfMvrbwUAAAjAezk/VtzlL/EBAKooCnk8AAAtAIBoEAAAAAEAABAAAAABAAA8yVeyLNvtdpfLRSnV7/dns1mj0ZC4AQAByPPcObderw+HQ61WG4/H3vvVaiVxAwACsN/vt9utc26z2dTr9cVi0W63n0sCIGIgAN77JEmOx2NeOp1OYQ2HAiBu4BK42WwaY6y1tzV8CGs4FABxA98AhsPhZDK5Xq+9Xk9rPZ1OwzoajQRA3EAArLXL5dIYcz6flVKDwWA+n7daLQHwCMBjcOE8TVOtdbfbFQAAr4ECAPgnMACAAAAA7s0HoDFhsamH/bcAAAAASUVORK5CYII=`,XV={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900},ZV=class{constructor(e){this._webGLHelper=e,this.fontRepository=`https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/`,this._fonts=new hn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:eM(JV),texture:e?this._createTextureNow(YV):void 0}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,t=`normal`,n=`regular`){if(P(n)&&(n=XV[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=eH(await this._loadMetadata(t.family),t),r=this.fontRepository+QV(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=QV(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=>$V(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 QV(e){return e.toLowerCase().replaceAll(/[^\w]/g,``)}function $V(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
|
|
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`
|
|
804
804
|
<div class="title">
|
|
805
805
|
<strong>${a.name}</strong>
|
|
806
806
|
${a.description}
|
|
807
807
|
</div>
|
|
808
808
|
<p class="summary">${a.summary}</p>
|
|
809
809
|
<p class="source">Source: NCBI RefSeq Gene</p>
|
|
810
|
-
`):null}async function
|
|
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
811
|
<span
|
|
812
812
|
class="color-legend color-legend-unmapped"
|
|
813
813
|
></span>
|
|
@@ -816,9 +816,9 @@ chrM 16299`};function NP(e){if(!(e in MP))throw Error(`Unknown assembly: ${e}`);
|
|
|
816
816
|
class="color-legend"
|
|
817
817
|
style=${`background-color: `+String(e)}
|
|
818
818
|
></span>
|
|
819
|
-
`}default:}}return``},s=r??
|
|
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
820
|
<table class="attributes">
|
|
821
|
-
${f.map(t=>{let n=
|
|
821
|
+
${f.map(t=>{let n=PH(t.value),r=o(t.key,t.value,e);return D`
|
|
822
822
|
<tr>
|
|
823
823
|
<th>${t.key}</th>
|
|
824
824
|
<td>${n} ${r}</td>
|
|
@@ -829,4 +829,4 @@ chrM 16299`};function NP(e){if(!(e in MP))throw Error(`Unknown assembly: ${e}`);
|
|
|
829
829
|
<div class="title">
|
|
830
830
|
<strong>${m}</strong>
|
|
831
831
|
</div>
|
|
832
|
-
`:``}${p}`}var PH=class e extends kz{#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,Dz}),t}getDefaultResolution(e,t){return`shared`}};function FH(e){Hz(e),Uz(e)}function IH(e){e.getDescendants().forEach(e=>e.configureViewOpacity())}var LH=new WeakMap,RH=new WeakMap;function zH(e,t){if(t!==null&&typeof t!=`string`)throw Error(`Import scope name must be a string or null.`);LH.set(e,{name:t})}function BH(e,t={}){let n=t.skipSubtree??!1?`excludeSubtree`:`exclude`;RH.set(e,n)}function VH(e){let t=e.getDataAncestors(),n=[];for(let e=t.length-1;e>=0;--e){let r=LH.get(t[e]);r&&typeof r.name==`string`&&n.push(r.name)}return n}function HH(e,t){e.visit(e=>{let n=RH.get(e);if(n===`excludeSubtree`)return Ez;if(n!==`exclude`)return t(e)})}function UH(e){let t=[];for(let n of GH(e)){let r=KH(n);JH(e,r,t),YH(e,r,t)}return t}function WH(e){return e.persist===!1?!1:hg(e)?!0:mg(e)?!!e.bind:!1}function GH(e){let t=new Set([e]);return e.visit(e=>{let n=LH.get(e);n&&typeof n.name==`string`&&t.add(e)}),Array.from(t)}function KH(e){return VH(e)}function qH(e){return e.length?`import scope [`+e.join(` / `)+`]`:`import scope (root)`}function JH(e,t,n){let r=new Map;QH(e,t,e=>{for(let[t,n]of e.paramRuntime.paramConfigs){if(!WH(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 `+qH(t)+`. Found in: `+r+`.`,scope:t})}}function YH(e,t,n){let r=XH(e,t);if(!r.length)return;let i=r.filter(e=>ZH(e));if(i.length<=1)return;let a=new Map;for(let e of i){let t=LH.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 `+qH(t)+`.`,scope:t})}function XH(e,t){let n=[];return QH(e,t,e=>{if(VH(e).length!==t.length+1)return;let r=LH.get(e);!r||typeof r.name!=`string`||n.push(e)},{includeNamedImportRoots:!0}),n}function ZH(e){let t=!1;return e.visit(e=>{let n=RH.get(e);if(n===`excludeSubtree`)return Ez;if(n!==`exclude`){for(let n of e.paramRuntime.paramConfigs.values())if(WH(n))return t=!0,Dz}}),t}function QH(e,t,n,r={}){let i=r.includeNamedImportRoots??!1;e.visit(e=>{let r=LH.get(e),a=RH.get(e);if(a===`excludeSubtree`)return Ez;if(a!==`exclude`&&$H(e,t,r,i))return n(e)})}function $H(e,t,n,r){let i=VH(e);return eU(i,t)?!0:!r||!n||typeof n.name!=`string`||i.length!==t.length+1?!1:tU(t,i)}function eU(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 nU(e){let t=[],n=!1,r=iU(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 rU(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 iU(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),HH(e,r),t}var aU=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 rU(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),IH(o);let{dataSources:c,graphicsPromises:l}=NV(o,this.container.context.dataFlow,e=>e.isConfiguredVisible());return await IV(o,c),await Wz(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())}},oU=.5;function sU(e){return`multiscale`in e&&O(e.multiscale)}function cU(e){if(!e.multiscale.length)throw Error(`"multiscale" must contain at least one child view.`);let t=lU(e.stops,e.multiscale.length),n=e.multiscale.map((n,r)=>e.multiscale.length===1?n:{opacity:dU(r,e.multiscale.length,t),layer:[n]}),r={...e};return delete r.multiscale,delete r.stops,{...r,layer:n}}function lU(e,t){let n=`unitsPerPixel`,r,i=`auto`,a=oU;if(O(e))r=uU(e,t,`stops`);else if(Qe(e))n=e.metric??`unitsPerPixel`,r=uU(e.values,t,`stops.values`),i=e.channel??`auto`,a=e.fade??oU;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(!z(e)&&(!Number.isFinite(e)||e<=0))throw Error(`Invalid stop value at index `+t+`. Stop values must be positive finite numbers.`)}),!r.some(z)){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 uU(e,t,n){if(!O(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(!z(t)&&!Number.isFinite(t))throw Error(`"`+n+`" must contain only numbers or ExprRefs.`);return e}function dU(e,t,n){let r,i,a=n.values.map(e=>({hi:fU(e,1+n.fade),lo:fU(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 fU(e,t){return z(e)?{expr:`(`+e.expr+`) * `+t}:e*t}function pU(e){return`mark`in e&&(P(e.mark)||Qe(e.mark))}function mU(e){return`layer`in e&&Qe(e.layer)}function hU(e){return`import`in e}function gU(e){return`vconcat`in e&&O(e.vconcat)}function _U(e){return`hconcat`in e&&O(e.hconcat)}function vU(e){return`concat`in e&&O(e.concat)}var yU=class extends PH{#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(!mU(e)&&!pU(e)&&!sU(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 aU(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)}},bU=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 xU(e){return()=>e}var SU=class e{static create(t,n,r,i){return new e(xU(t),xU(n),xU(r),xU(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`?xU(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(xU(this.x),xU(this.y),xU(this.width),xU(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)}`}},CU={x:`axisX`,y:`axisY`},wU={top:`axisTop`,bottom:`axisBottom`,left:`axisLeft`,right:`axisRight`},TU={nominal:`axisNominal`,ordinal:`axisOrdinal`,quantitative:`axisQuantitative`,index:`axisIndex`,locus:`axisLocus`};function EU(e,{channel:t,orient:n,type:r,style:i}){let a=IN(i);return FN(e.flatMap(e=>{let i=CU[t],o=n?wU[n]:void 0,s=r?TU[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 DU=`chromosome_ticks_and_labels`,OU=`labels_main`,kU=`ticks_and_labels`,AU=`axisExtent`,jU=`_labelWidth`,MU=10,NU=2;function PU(e){return e==`x`?`y`:`x`}var FU={x:[`bottom`,`top`],y:[`left`,`right`]},IU=Object.fromEntries(Object.entries(FU).map(([e,t])=>t.map(t=>[t,e])).flat(1));function LU(e){return IU[e]}var RU=class extends yU{#e;#t;#n;#r=!1;#i=!1;constructor(e,t,n,r,i,a){let o=LU(e.orient),s=EU(i.getConfigScopes(),{channel:o,orient:e.orient,type:t,style:e.style}),c={...s,...e},l={...s,...WU(t,c),...e};super(t==`locus`?KU(l,t):GU(l,t),n,r,i,`axis_${e.orient}`,{blockEncodingInheritance:!0,...a}),this.axisProps=l,this.#e=zU(l),this.#t=this.paramRuntime.allocateSetter(AU,this.#e),BH(this,{skipSubtree:!0})}async initializeChildren(){await super.initializeChildren();let e=this.getDescendants().find(e=>e instanceof Rz&&e.name===OU);e instanceof Rz&&(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 IU[this.axisProps.orient]==`x`?new HI(t,e):new HI(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=LU(this.axisProps.orient),t=this.dataParent.getScaleResolution(e);if(t&&!t.isDomainDefinedExplicitly()&&!t.isDomainInitialized())return;let n=UU(this.axisProps,this.context,this.#n);if(n===void 0)return;let r=zU(this.axisProps,n);r>=this.#e+NU&&(this.#e=r,this.#t(r),this.invalidateSizeCache(),this.context.requestLayoutReflow())}};function zU(e,t){let n=BU(e);return e.labels&&(n+=t??VU(e)),HU(e,n)}function BU(e){let t=e.ticks&&e.tickSize||0;return e.labels&&(t+=e.labelPadding),e.title&&(t+=e.titlePadding+e.titleFontSize),t}function VU(e){return LU(e.orient)==`x`?e.labelFontSize:MU}function HU(e,t){return Math.min(e.maxExtent||1/0,Math.max(e.minExtent||0,t))}function UU(e,t,n){let r=n?.getCollector();if(!r?.completed)return;let i=0;r.visitData(e=>{i=Math.max(i,Number(e[jU])||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=LU(e.orient)==`x`?i*c+o*l:i*l+o*c;return Math.ceil(u)}function WU(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 GU(e,t){let n=e,r=LU(n.orient),i=PU(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:OU,transform:[{type:`measureText`,field:`label`,as:jU,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} / ${AU} * ${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:kU,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 KU(e,t){let n=e,r=LU(n.orient),i=PU(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} / ${AU} * ${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=GU({...e,...c},t);if(e.chromTicks||e.chromLabels){let i={name:DU,data:{lazy:{type:`axisGenome`,channel:LU(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==kU).forEach(t=>t.layer.filter(e=>e.name==OU).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 qU(e,t,n){e.handleInteraction(t,!0),!t.stopped&&(n(),!t.stopped&&e.handleInteraction(t,!1))}function JU(e,t,n,r){return t()?(n(),e.stopped||r?.(),!0):!1}var YU=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 XU(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 ZU(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 QU(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 $U(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 eW=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,nW=new WeakMap,rW=fW(),iW=6;function aW(){tW=performance.now()}function oW(){return performance.now()-tW<50}function sW(e){return function(...t){return aW(),e(...t)}}function cW(e,t,n,r,i){n=sW(n);let a=pW(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=lW(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=uW(e.x,r.datum)*t.width+t.x),e.y&&!e.y2&&!e.y.constant&&(c=(1-uW(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 YU(30),r=e.mouseEvent;r.preventDefault(),e.target?.context.suspendHoverTracking();let o=eW.fromMouseEvent(r),s=e=>{let r=eW.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),hW(a,t,o,n,i,{minSampleCount:5})};document.addEventListener(`mouseup`,c,!1),document.addEventListener(`mousemove`,s,!1)}else if(e.type==`touchgesture`){if(!XU(e.uiEvent))return;let t=e.uiEvent,{xDelta:r,yDelta:o,zDelta:s}=t;if(t.phase===`end`){t.pointerCount===1&&hW(a,a.touchPanEventBuffer,a.touchPanLastPoint,n,i,{minSampleCount:2,minVelocityPxPerMs:.03}),mW(a);return}a.touchPanPointerCount!==t.pointerCount&&(mW(a),a.touchPanPointerCount=t.pointerCount);let c=new eW(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 lW(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=uW(r.x,n.datum)*t.width+t.x,s=(1-uW(r.y,n.datum))*t.height+t.y,c=uW(r.x2,n.datum)*t.width+t.x,l=(1-uW(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,iW):iW,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 uW(e,t){let n=+e(t),r=e.scale;if(!r)return n;let i=dW(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 dW(e){return e&&`band`in e?e.band??.5:.5}function fW(){return{smoother:void 0,touchPanEventBuffer:new YU(30),touchPanLastPoint:void 0,touchPanPointerCount:0}}function pW(e){if(!e)return rW;let t=nW.get(e);return t||(t=fW(),nW.set(e,t)),t}function mW(e){e.touchPanEventBuffer=new YU(30),e.touchPanLastPoint=void 0,e.touchPanPointerCount=0}function hW(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&&gW(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=GV(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 gW(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 _W=class extends yU{constructor(e,t,n,r,i,a){super(xW(e,t),n,r,i,`axisGrid_${e.orient}`,{blockEncodingInheritance:!0,...a}),this.axisProps=e,BH(this,{skipSubtree:!0})}getOrient(){return this.axisProps.orient}isPickingSupported(){return!1}};function vW(e,t){let n=e,r=LU(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 yW(e,t){let n=e,r=LU(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 bW(e,t){let n=e,r=LU(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 xW(e,t){let n={...e},r=[];return n.chromGrid&&(n.chromGridFillOdd||n.chromGridFillEven)&&r.push(bW(n,t)),n.chromGrid&&n.chromGridOpacity>0&&r.push(yW(n,t)),n.grid&&n.gridOpacity>0&&r.push(vW(n,t)),{name:`grid_layers`,resolve:{scale:{[LU(e.orient)]:`forced`,fill:`independent`,opacity:`independent`}},domainInert:!0,layer:r}}function SW(e){return FN(e.map(e=>e.title))}function CW(e,t){let n=IN(t);return n.length==0?{}:FN(e.flatMap(e=>n.map(t=>e.style?.[t])))}var wW={start:0,middle:.5,end:1},TW={start:`left`,middle:`center`,end:`right`},EW=`group-title`;function DW(e){let t={},n={x:0,y:0},r=wW[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 OW(e,t=[]){if(!e)return;let n=P(e)?{text:e}:e;if(!n.text||n.orient==`none`)return;let r=SW(t),i=CW(t,n.style??EW),{orientConfig:a}=DW({...r,...i,...n});return{...r,...a,...i,...n}}function kW(e,t=[]){let n=OW(e,t);if(!n)return;let{xy:r}=DW(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??TW[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 AW=class extends Rz{#e;#t=SU.ZERO;#n=SU.ZERO;#r=SU.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}),BH(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 SU(()=>this.#n.x+this.#n.width-i-r,()=>this.#n.y+r+this.scrollOffset,()=>i,()=>this.#s()):new SU(()=>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=tM(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=tM(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=GV(this.context.animator,e=>{this.setViewportOffset(e.x,{notify:!0,syncSmoother:!1})},35,.4,{x:e})}},jW=`intervalDragActive`,MW=class extends yU{constructor(e,t,n={}){let r=t(),i=Object.keys(r.intervals),{zindex:a=1,...o}=n;if(Rh.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:jW,value:!1}],resolve:{scale:{x:`forced`,y:`forced`}},data:{values:NW(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,BH(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(NW(e))}))}getZindex(){return this._zindex}};function NW(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 PW(e,t){let n=[`cell`,...IN(t?.style)];return FN(e.flatMap(e=>[e.view,...n.map(t=>e.style?.[t])]).concat([t]))}var FW=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=SU.ZERO,e.needsAxes.x||e.needsAxes.y){let r=e.spec,i=PW(e.getConfigScopes(),`view`in r?r.view:void 0);this.backgroundZindex=i?.zindex??0,this.backgroundStrokeZindex=i?.strokeZindex;let a=RW(i);a&&(this.background=new Rz(a,t.context,t,e,`background`+n,{blockEncodingInheritance:!0}),BH(this.background,{skipSubtree:!0}));let o=zW(i);o&&(this.backgroundStroke=new Rz(o,t.context,t,e,`backgroundStroke`+n,{blockEncodingInheritance:!0}),BH(this.backgroundStroke,{skipSubtree:!0}));let s=OW(e.spec.title,e.getConfigScopes());this.titleZindex=s?.zindex??1;let c=kW(s);c&&(this.title=new Rz(c,t.context,t,e,`title`+n,{blockEncodingInheritance:!0}),BH(this.title,{skipSubtree:!0}))}e.spec.viewportWidth!=null&&(this.scrollbars.horizontal=new AW(this,`horizontal`)),e.spec.viewportHeight!=null&&(this.scrollbars.vertical=new AW(this,`vertical`)),this.#e()}#e(){let e=this.view;for(let[t,n]of e.paramRuntime.paramConfigs){if(!(`select`in n))continue;let r=sg(n.select);if(!lg(r))continue;let i=r.encodings,a=Object.fromEntries(i.map(e=>{let n=this.view.getScaleResolution(e),r=n?.getResolvedScaleType();if(!n||!r||!vm(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?xz(s.filter):()=>!0,l=IW(r.zoom,o,t),u=l?.filter?xz(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=()=>{_(tg(i))};this.selectionRect=new MW(this,g,r.mark);let y=e=>{this.selectionRect.paramRuntime.setValue(jW,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 SU.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(ug(g())&&(f=!0),c(t.proxiedMouseEvent))v(),p=!0;else if(ug(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=eW.fromMouseEvent(t.mouseEvent).subtract(n),o=e=>{let t=eW.fromMouseEvent(e).subtract(r),o;if(m){let e=t.subtract(n),r=m.translate(e.x,e.y);o=h(b(new eW(r.x,r.y)),b(new eW(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=LW(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=>dg(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($U(t))||Math.abs(t.deltaX)>=Math.abs(t.deltaY)||!S(e.point))return;let n=g();if(!ug(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=LW(n,kI(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 FU[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(),!FU[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 RU(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={...EU(i.getConfigScopes(),{channel:t,orient:a.orient,type:e.scaleResolution.type,style:a.style}),...a};if(o.grid||o.chromGrid){let t=new _W(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 yU){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 Rz&&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 YI(e(`top`),e(`right`),e(`bottom`),e(`left`)).add(this.view.getOverhang())}getOverhangAndPadding(){return this.getOverhang().add(this.view.getPadding())}};function IW(e,t,n){let r=e===void 0?!t:e;if(r===!1)return;if(r===!0)return{type:`wheel`};let i=fg(r);if(i.type!==`wheel`)throw Error(`Interval selection param "${n}" currently supports only "wheel" in "zoom".`);return i}function LW(e,t){let n=e.getScale();return oI(t,e.zoomExtent,{roundToIntegers:n.type===`index`||n.type===`locus`})}function RW(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 zW(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 BW={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}},VW=class{#e;#t;#n;#r;#i;constructor(e=BW){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=HW(this.#e.KeyD,this.#e.KeyA),n=HW(this.#e.KeyW,this.#e.KeyS),r=UW(this.#t,t,e,this.#r),i=UW(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 HW(e,t){return e===t?0:t?1:-1}function UW(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=WW(e.velocity,a,n,r.pressHalfLifeMs)}else e.holdMs=0,e.velocity=WW(e.velocity,0,n,r.releaseHalfLifeMs),Math.abs(e.velocity)<r.stopVelocity&&(e.velocity=0);return e.direction=t,e.velocity}function WW(e,t,n,r){return t+(e-t)*2**(-n/r)}function GW(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 KW(e){let t=GW(e).x;if(t.size===1){let n=t.values().next().value,r=e.getScaleResolution(`x`);return!r||r!==n?void 0:n}}var qW=class{#e;#t;#n=.5;#r=new VW;#i=!1;#a=0;#o=e=>{if(!this.#i)return;let t=KW(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)&&(aW(),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=>{JW(e)||this.#r.isNavigationKey(e.code)&&KW(this.#t)&&this.#r.handleKeyDown(e.code)&&(e.preventDefault(),this.#c())}),e(`keyup`,e=>{this.#r.isNavigationKey(e.code)&&this.#r.handleKeyUp(e.code)&&KW(this.#t)&&(e.preventDefault(),this.#c())}))}#c(){this.#i||(this.#i=!0,this.#a=performance.now(),this.#e.animator.requestTransition(this.#o))}};function JW(e){return!!(e.altKey||e.ctrlKey||e.metaKey||YW(e.target))}function YW(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 XW=Object.freeze({size:1,color:`#ccc`,opacity:1,strokeDash:[4,4],strokeCap:`butt`}),ZW=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 Rz($W(e),t,n,r,this.#e===`horizontal`?i(`separatorHorizontal`):i(`separatorVertical`),{blockEncodingInheritance:!0});return BH(a,{skipSubtree:!0}),a}};function QW(e){if(!e)return null;let t=e===!0?{...XW}:{...XW,...e};return t.strokeDash===XW.strokeDash&&(t.strokeDash=XW.strokeDash.slice()),t}function $W(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 eG=Object.freeze({background:0,separator:10,grid:20,backgroundStroke:30,axis:40,selectionRect:80,scrollbar:90,title:100}),tG=10,nG=class extends PH{#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=QW(e.separator);if(s)for(let t of oG(e))this.#a[t]=new ZW({direction:t,props:s,context:this.context,layoutParent:this,dataParent:this,getName:e=>this.getNextAutoName(e)});this.layoutParent||(this.#o=new qW({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 FW(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 bU(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 Rh){let n=this.resolutions.axis[t];if(!n)continue;let r=n.getAxisProps();if(!r)continue;let i=new RU({title:n.getTitle(),orient:FU[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:VI(e.map(e=>this.#s[e].view.getViewportSize()[t]))})))}#d(e){let t=this.#u(e),n=[];n.push(UI);for(let[e,r]of t.entries())e>0&&n.push({px:this.#t,grow:0}),(e==0||this.wrappingFacet)&&n.push(UI),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(UI);return n}#f(e){let t=0,n=0,r=e==`row`?this.spec.height:this.spec.width;if(r||r===0)return JI(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?YI.zero():new YI(t.at(0).axisBefore,e.at(-1).axisAfter,t.at(-1).axisAfter,e.at(0).axisBefore)}#h(){let e=e=>{let t=IU[e],n=this.#r[t];return n?.axisProps.orient===e?Math.max(n.getPerpendicularSize()+(n.axisProps.offset??0),0):0};return new YI(e(`top`),e(`right`),e(`bottom`),e(`left`))}getSize(){return this._cache(`size`,()=>new HI(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=BI(this.#d(`column`),t.width,i),o=BI(this.#d(`row`),t.height,i),s=new bU(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 SU(()=>t.x+C,()=>t.y+w,()=>E,()=>ee),ce=i.isScrollable(),le=ce?new SU(()=>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,eG.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(),eG.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(),eG.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=rG(i)||v;for(let t of Object.values(o))h(t.axisProps.zindex??0,eG.grid,()=>t.render(e,d,n));p.push(()=>i.render(e,f,S?{...n,clipRect:m}:n)),c&&h(cG(y.backgroundStrokeZindex,S),eG.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=lG(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(sG(r.axisProps.zindex,S),eG.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(sG(t.axisProps.zindex,S),eG.axis,()=>t.render(e,lG(d.shrink(y.view.getOverhang()),r,t),n))}u&&h(u.getZindex(),eG.selectionRect,()=>u?.render(e,f,n));for(let r of Object.values(y.scrollbars))h(1,eG.scrollbar,()=>{r.updateScrollbar(d,f),r.render(e,t,n)});l&&h(y.titleZindex,eG.title,()=>l?.render(e,d,n))}g(d);for(let e of p)e();g(f),e.popView(this)}propagateInteraction(e){qU(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;aG(n)?iG(n)&&e.claimWheel():n.propagateInteraction(e);return}this.#o?.handlePointerEvent(t,e);for(let n of Object.values(t?.scrollbars??{}))if(JU(e,()=>n.coords.containsPoint(e.point.x,e.point.y),()=>n.propagateInteraction(e)),e.stopped)return;n&&JU(e,()=>!0,()=>n.propagateInteraction(e),aG(n)?()=>cW(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(GW(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 rG(e){let t=!0;return e.visit(e=>{e instanceof Rz&&(t&&=e.mark.properties.clip===!0)}),t}function iG(e){let t=GW(e);return t.x.size>0||t.y.size>0}function aG(e){return e instanceof Rz||e instanceof yU}function oG(e){return`vconcat`in e?[`horizontal`]:`hconcat`in e?[`vertical`]:[`horizontal`,`vertical`]}function sG(e,t){return e??(t?tG:0)}function cG(e,t){return e??(t?tG:0)}function lG(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,vU(e)?e.columns:gU(e)?1:1/0,a),this.spec=e}async initializeChildren(){let e=this.spec,t=vU(e)?e.concat:gU(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`:gU(this.spec)&&e===`x`||_U(this.spec)&&e===`y`?`shared`:`independent`}#e(){let e=this.spec,t;return t=vU(e)?e.concat:gU(e)?e.vconcat:e.hconcat,{specs:t,insertAt:(e,n)=>{t.splice(e,0,n)},removeAt:e=>{t.splice(e,1)}}}#t(){return new aU(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 dG({defaultConfig:e,builtInTheme:t,theme:n}){return FN([e,t,n])}function fG(e,t){if(!(!e&&!t))return FN([e,t])}var pG=`viewRoot`,mG=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(mU,t(yU)),this.addViewType(sU,((e,t,n,r,i,a)=>new yU(cU(e),t,n,r,i,a))),this.addViewType(pU,t(Rz)),this.addViewType(gU,t(uG)),this.addViewType(_U,t(uG)),this.addViewType(vU,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 _G(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=hU(e)?e.name??null:void 0;if(hU(e)){let i;if(`url`in e.import)if(this.options.allowImport)i=await Gz(e,r.getBaseUrl(),t);else throw new AN(`Importing views is not allowed!`,n);else if(`template`in e.import)i=hG(e.import.template,r);else throw Error(`Invalid import: `+JSON.stringify(e));a?.(i),gG(i,e),s=i}else s=e;let l=e=>e?.params?.some(e=>hg(e)&&sg(e.select).type==`interval`),u=!1;if(!r&&this.options.wrapRoot&&(pU(s)||mU(s)||sU(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&&zH(d,c),u&&BH(d),d instanceof PH&&await d.initializeChildren(),d.registerStepSizeInvalidation(),d}};function hG(e,t){let n=t.spec?.templates?.[e];if(n)return structuredClone(n);if(t.dataParent)return hG(e,t.dataParent);throw Error(`Cannot find template "${e}" in current view or its ancestors!`)}function gG(e,t){t.name!=null&&(e.name=t.name),t.visible!=null&&(e.visible=t.visible),e.config=fG(t.config,e.config);let n=O(t.params)?t.params:Qe(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 _G(e){return`samples`in e&&Qe(e.samples)&&`spec`in e&&Qe(e.spec)}var vG=class{constructor(e,t){this.animator=e,this.disabled=!!t,this.maxDistance=500,this.callback=null,this.targetValue=0,this.lastValue=0,this.smoother=GV(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=F([this.lastValue,this.targetValue],.3),this.smoother({x:this.targetValue}))}setMomentum(e,t){if(this.disabled){t(e);return}this.callback=t;let n=tM(this.targetValue+e-this.lastValue,-this.maxDistance,this.maxDistance);this.targetValue=this.lastValue+n,this.smoother({x:this.targetValue})}};function yG(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 bG=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(!ZU(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||=$U(this.mouseEvent),this.#e}get mouseEvent(){if(this.uiEvent instanceof MouseEvent)return this.uiEvent;throw Error(`Not a MouseEvent!`)}get wheelEvent(){if(!ZU(this.uiEvent))throw Error(`Not a WheelEvent!`);return this.#i?(this.#t||=QU(this.uiEvent,this.#i.deltaX,this.#i.deltaY),this.#t):this.uiEvent}},xG=class{#e;#t;#n;#r=[];constructor({viewRoot:e}){this.#e=e}dispatch(e,t){this.#t=e;let n=new bG(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 bG(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 bG(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 bG(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)}},SG=class{#e;#t;#n;constructor({canvas:e}){this.#e=e}update({target:e,hover:t}){this.#r(CG(e,t))}clear(){this.#r(void 0)}#r(e){if(wG(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 CG(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 wG(e,t){return!e||!t?e===t:e.owner===t.owner&&e.raw===t.raw}var TG=class{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m;#h;#g;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 xG({viewRoot:e}),this.#l=new SG({canvas:t.canvas}),this.#u=void 0,this.#d=new vG(this.#r),this.#f=void 0,this.#p=void 0,this.#m=!1,this.#h=0,this.#g=!1}getCurrentHover(){return this.#u}suspendHoverTracking(){this.#h++,this.#n.clear(),this.#m=!1}resumeHoverTracking(e){if(!(this.#h<=0)&&(this.#h--,!(this.#h>0)&&(this.#n.clear(),this.#m=!1,!this.#x()))){if(e){let t=this.#_(e);if(this.#p=t,this.#v(t)){this.#y(t),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u});return}this.#c.handlePointerLeave(e)}else if(this.#p&&this.#v(this.#p)){this.#y(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.#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.#x())return;let o=this.#_(e);this.#p=o,e.type==`mousemove`&&!a&&this.#h===0&&(this.#n.handleMouseMove(e),this.#m=!1,e.buttons==0&&!oW()&&(this.#o(),this.#S(o.x,o.y)));let s=e=>{i(o,e)};if(e.type!=`wheel`&&this.#d.cancel(),(e.type==`mousedown`||e.type==`mouseup`)&&!oW())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=yG(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(eW.fromMouseEvent(e)).length<3){let t=i(o,e);return e.type==`dblclick`&&this.#h===0&&this.#v(o)&&this.#b(),t}}};[`mousedown`,`mouseup`,`wheel`,`click`,`mousemove`,`contextmenu`,`dblclick`].forEach(t=>e.addEventListener(t,a));let o=(t,n)=>{let r=e.getBoundingClientRect();return new eW(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:EG(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?DG(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(`mousedown`,e=>{this.#f=eW.fromMouseEvent(e),this.#n.sticky?(this.#n.sticky=!1,this.#n.clear(),n=!0):n=!1;let t=()=>{document.addEventListener(`mouseup`,()=>this.#n.popEnabledState(),{once:!0,capture:!0}),this.#n.pushEnabledState(!1)};if(e.button==2||e.shiftKey||e.ctrlKey||e.metaKey)t();else if(this.#n.visible){let e=setTimeout(()=>{n=!0,this.#n.sticky=!0},400),t=()=>clearTimeout(e);document.addEventListener(`mouseup`,t,{once:!0}),document.addEventListener(`mousemove`,t,{once:!0})}}),e.addEventListener(`dragstart`,e=>e.stopPropagation()),e.addEventListener(`mouseout`,e=>{if(!this.#x()){if(this.#h>0){this.#n.clear(),this.#m=!1;return}this.#c.handlePointerLeave(e),this.#l.clear(),this.#n.clear(),this.#u=null}})}#_(e){let t=this.#t.canvas,n=t.getBoundingClientRect();return new eW(e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop)}#v(e){let t=this.#t.canvas;return e.x>=0&&e.y>=0&&e.x<=t.clientWidth&&e.y<=t.clientHeight}#y(e){oW()||(this.#o(),this.#S(e.x,e.y))}#b(){this.#g||(this.#g=!0,this.#r.requestRender(),window.requestAnimationFrame(()=>{if(this.#g=!1,this.#h>0||this.#x())return;let e=this.#p;if(!e||!this.#v(e)){this.#u=null,this.#l.clear();return}this.#n.clear(),this.#m=!1,this.#y(e),this.#l.update({target:this.#c.getCurrentTarget(),hover:this.#u})}))}#x(){return typeof document<`u`&&!!document.body&&document.body.classList.contains(`gs-freeze-interaction`)}#S(e,t){let n=this.#s(),r=vM(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 Rz){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 Dz}}),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.#m||!e)this.#n.updateWithDatum(e,t),this.#m=!0;else throw Error(`Tooltip has already been updated! Duplicate event handler?`)}};function EG(e,t){let n=t.clientX-e.clientX,r=t.clientY-e.clientY;return Math.hypot(n,r)}function DG(e,t){return e<=0||t<=0?0:Math.log2(e/t)}var OG=class{constructor(e){this.globalOptions=e}pushView(e,t){}popView(e){}renderMark(e,t){}getDevicePixelRatio(){return 1}},kG=class extends OG{#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=Cu(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=xn(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}}}},AG=class extends OG{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)}},jG=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 kG({picking:!1},{...n,clearColor:this.#n()}),this.#o=new kG({picking:!0},{...n,framebufferInfo:this.#t._pickingBufferInfo}),e.render(new AG(this.#a,this.#o),SU.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 MG(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 NG={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 PG(e){FH(e),IH(e)}function FG({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 kG({picking:!1},{webGLHelper:e,canvasSize:{width:n,height:r},devicePixelRatio:i,clearColor:a,framebufferInfo:l});return t.render(u,SU.create(0,0,n,r)),u.render(),yM(o,l,`image/png`)}function IG(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)&&RG(t)?new Map:new Map([[t,n]]),defaultAssembly:t,deprecationWarning:LG()}}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)&&!RG(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 LG(){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 RG(e){try{return NP(e),!0}catch{return!1}}function zG(e,t,n){let r=VG(e,n);if(!r.size)return!0;for(let e of r)if(!HG(e,t))return!1;return!0}function BG(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=()=>{zG(t,n,a)&&(u(),i())},f=()=>{t.visit(e=>{if(!(e instanceof Rz)||!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 VG(e,t){let n=t??(e=>e.isConfiguredVisible()),r=new Set;return e.visit(e=>{if(!(e instanceof Rz)||!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 Qm&&r.add(i)}),r}function HG(e,t){let n=t??{[e.channel]:Array.from(e.scaleResolution.getDomain())};return e.isDataReadyForDomain(n)}var UG={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`}},WG={genomespy:{},vegalite:UG,quartz:FN([UG,{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([UG,{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([UG,{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([UG,{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`}}])},GG=Object.keys(WG);function KG(e){let t={...WG[e]};return delete t.background,t}function qG(e){if(!e)return[];let t=Array.isArray(e)?e:[e],n=t.filter(e=>!(e in WG));if(n.length>0)throw Error(`Unknown theme "`+n[0]+`". Available themes: `+GG.join(`, `));return t}var JG=`genomespy`;function YG(e){return WG[e].background}function XG(e){let t=qG(e);if(t.length!=0)return FN(t.map(e=>KG(e)))}var ZG=class{#e=[];#t;#n;#r;#i;#a;#o;#s=new aT;#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 mG,this.namedDataProviders=[],this.animator=new WV(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=e=>e.isVisibleInSpec(),this.tooltipHandlers={default:NH,refseqgene:rH,...n.tooltipHandlers??{}},this.viewRoot=void 0,this.#i=new cT(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}=Kw(this.container);this.#o=new mM(e,()=>this.viewRoot?Kz(this.viewRoot):{width:void 0,height:void 0},{powerPreference:this.options.powerPreference??`default`}),e.appendChild(t),this.tooltip=n,this.#r=new rT,this.#n=new nT(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 zV(this.viewRoot,e.dataFlow,e.fontManager,e=>this.broadcast(`dataFlowBuilt`,e)),this.#b(e)}async#h(){this.genomeStore=new KV(this.spec.baseUrl);let{genomesByName:e,defaultAssembly:t,deprecationWarning:n}=IG(this.spec);this.genomeStore.configureGenomes(e,t),n&&console.warn(n)}#g(){let e=new gV;e.loadingStatusRegistry=this.#r;let t=dG({defaultConfig:NG,builtInTheme:XG(JG),theme:FN([this.options.theme,XG(this.spec.theme)])});return MG({dataFlow:e,glHelper:this.#o,animator:this.animator,genomeStore:this.genomeStore,fontManager:new ZV(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:iT(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,pG),await rU(this.viewRoot,this.genomeStore),this.#r.set(this.viewRoot,`loading`),this.#u.style.flexGrow=this.viewRoot.getSize().height.grow>0?`1`:`0`,this.#d(),PG(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 jG({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=YG(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=UH(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 TG({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)||qw(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 BV(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 BG(this.viewRoot.context,this.viewRoot,void 0,e,e=>e.isConfiguredVisible()&&QG(e))}updateTooltip(e,t){this.#a.updateTooltip(e,t)}exportCanvas(e,t,n,r=`white`){let i=FG({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 Rz&&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 QG(e){let t=e;for(;t;){let e=t.flowHandle?.dataSource;if(e)return e instanceof xg;t=t.dataParent}return!1}var $G=`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`,eK=`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/`]],nK=/^(?:[a-z]+:)?\/\//i,rK=`https://example.invalid`;function iK(e){return nK.test(e)?`external`:e.startsWith(`/`)?`root`:`relative`}function aK(e){let t=new URL(e,rK),n=tK.find(([e])=>t.pathname.startsWith(e));if(n)return sK(n[1],t,iK(e))}function oK(e){let t=aK(e);if(t)return t;let n=new URL(e,rK);return sK(new URL(`./`,n).pathname,n,iK(e))}function sK(e,t,n){return n===`external`?t.origin+e:n===`root`?e:e.slice(1)}function cK(e){return async function(t,n,r={}){let i;if(P(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=Qe(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),lK(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 lK(e,t){t.namedDataProvider&&e.registerNamedDataProvider(t.namedDataProvider)}async function uK(e){let t;try{t=await Vz(e)}catch(t){throw Error(`Could not load or parse configuration: ${e}, reason: ${t.message}`,{cause:t})}return t.baseUrl||=oK(e),t}var dK=cK(ZG);e.GenomeSpy=ZG,e.embed=dK,e.favIcon=eK,e.html=D,e.icon=$G,e.loadSpec=uK});
|
|
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});
|