@genome-spy/app 0.30.0 → 0.30.3
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/index.js +79 -70
- package/package.json +3 -3
package/dist/index.js
CHANGED
@@ -1,21 +1,21 @@
|
|
1
|
-
(function(U,R){typeof exports=="object"&&typeof module<"u"?R(exports):typeof define=="function"&&define.amd?define(["exports"],R):(U=typeof globalThis<"u"?globalThis:U||self,R(U.genomeSpyApp={}))})(this,function(U){var Ho,
|
2
|
-
\r]`),n=t.charCodeAt(0);function r(l,d){var p,h,m=i(l,function(g,y){if(p)return p(g,y-1);h=g,p=d?
|
3
|
-
`)}function s(l,d){return d==null&&(d=
|
1
|
+
(function(U,R){typeof exports=="object"&&typeof module<"u"?R(exports):typeof define=="function"&&define.amd?define(["exports"],R):(U=typeof globalThis<"u"?globalThis:U||self,R(U.genomeSpyApp={}))})(this,function(U){var Ho,Fd,si,ci,$e,ui,Go,Pd,Et,Cn,oc,Zb,ac,qb,br,Jo,Qo,zd,Vo,Rd,Yo,jd,sc,Kb,_o,li,Yt,An,Wo,cc,Jb,uc,$b,Xo,Ud,lc,e2,fc,t2,Zo,Hd;"use strict";var zN=Object.defineProperty;var RN=(U,R,ce)=>R in U?zN(U,R,{enumerable:!0,configurable:!0,writable:!0,value:ce}):U[R]=ce;var hc=(U,R,ce)=>(RN(U,typeof R!="symbol"?R+"":R,ce),ce),Od=(U,R,ce)=>{if(!R.has(U))throw TypeError("Cannot "+ce)};var j=(U,R,ce)=>(Od(U,R,"read from private field"),ce?ce.call(U):R.get(U)),$=(U,R,ce)=>{if(R.has(U))throw TypeError("Cannot add the same private member more than once");R instanceof WeakSet?R.add(U):R.set(U,ce)},et=(U,R,ce,Sn)=>(Od(U,R,"write to private field"),Sn?Sn.call(U,ce):R.set(U,ce),ce),_b=(U,R,ce,Sn)=>({set _(pc){et(U,R,pc,ce)},get _(){return j(U,R,Sn)}}),se=(U,R,ce)=>(Od(U,R,"access private method"),ce);function R(t,e,n){return t.fields=e||[],t.fname=n,t}function ce(t){return t==null?null:t.fname}function Sn(t){return t==null?null:t.fields}function pc(t){return t.length===1?n2(t[0]):r2(t)}const n2=t=>function(e){return e[t]},r2=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function ae(t){throw Error(t)}function i2(t){const e=[],n=t.length;let r=null,i=0,o="",a,s,c;t=t+"";function u(){e.push(o+t.substring(a,s)),o="",a=s+1}for(a=s=0;s<n;++s)if(c=t[s],c==="\\")o+=t.substring(a,s),o+=t.substring(++s,++s),a=s;else if(c===r)u(),r=null,i=-1;else{if(r)continue;a===i&&c==='"'||a===i&&c==="'"?(a=s+1,r=c):c==="."&&!i?s>a?u():a=s+1:c==="["?(s>a&&u(),i=a=s+1):c==="]"&&(i||ae("Access path missing open bracket: "+t),i>0&&u(),i=0,a=s+1)}return i&&ae("Access path missing closing bracket: "+t),r&&ae("Access path missing closing quote: "+t),s>a&&(s++,u()),e}function $o(t,e,n){const r=i2(t);return t=r.length===1?r[0]:t,R((n&&n.get||pc)(r),[t],e||t)}$o("id");const ea=R(t=>t,[],"identity");R(()=>0,[],"zero"),R(()=>1,[],"one"),R(()=>!0,[],"true"),R(()=>!1,[],"false");var _e=Array.isArray;function ze(t){return t===Object(t)}function tt(t){return t[t.length-1]}function fi(t){return t==null||t===""?null:+t}const Gd=t=>e=>t*Math.exp(e),Qd=t=>e=>Math.log(t*e),o2=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),a2=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,ta=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function mc(t,e,n,r){const i=n(t[0]),o=n(tt(t)),a=(o-i)*e;return[r(i-a),r(o-a)]}function s2(t,e){return mc(t,e,fi,ea)}function c2(t,e){var n=Math.sign(t[0]);return mc(t,e,Qd(n),Gd(n))}function u2(t,e,n){return mc(t,e,ta(n),ta(1/n))}function na(t,e,n,r,i){const o=r(t[0]),a=r(tt(t)),s=e!=null?r(e):(o+a)/2;return[i(s+(o-s)*n),i(s+(a-s)*n)]}function gc(t,e,n){return na(t,e,n,fi,ea)}function Vd(t,e,n){const r=Math.sign(t[0]);return na(t,e,n,Qd(r),Gd(r))}function yc(t,e,n,r){return na(t,e,n,ta(r),ta(1/r))}function l2(t,e,n,r){return na(t,e,n,o2(r),a2(r))}function vc(t){return t!=null?_e(t)?t:[t]:[]}function f2(t,e,n){let r=t[0],i=t[1],o;return i<r&&(o=i,i=r,r=o),o=i-r,o>=n-e?[e,n]:[r=Math.min(Math.max(r,e),n-o),r+o]}function Ie(t){return typeof t=="function"}const d2="descending";function Yd(t,e,n){n=n||{},e=vc(e)||[];const r=[],i=[],o={},a=n.comparator||h2;return vc(t).forEach((s,c)=>{s!=null&&(r.push(e[c]===d2?-1:1),i.push(s=Ie(s)?s:$o(s,null,n)),(Sn(s)||[]).forEach(u=>o[u]=1))}),i.length===0?null:R(a(i,r),Object.keys(o))}const _d=(t,e)=>(t<e||t==null)&&e!=null?-1:(t>e||e==null)&&t!=null?1:(e=e instanceof Date?+e:e,(t=t instanceof Date?+t:t)!==t&&e===e?-1:e!==e&&t===t?1:0),h2=(t,e)=>t.length===1?p2(t[0],e[0]):m2(t,e,t.length),p2=(t,e)=>function(n,r){return _d(t(n),t(r))*e},m2=(t,e,n)=>(e.push(0),function(r,i){let o,a=0,s=-1;for(;a===0&&++s<n;)o=t[s],a=_d(o(r),o(i));return a*e[s]});function g2(t){return Ie(t)?t:()=>t}function bc(t){for(let e,n,r=1,i=arguments.length;r<i;++r){e=arguments[r];for(n in e)t[n]=e[n]}return t}const y2=Object.prototype.hasOwnProperty;function En(t,e){return y2.call(t,e)}function ra(t){return typeof t=="boolean"}function v2(t){return Object.prototype.toString.call(t)==="[object Date]"}function b2(t){return t&&Ie(t[Symbol.iterator])}function le(t){return typeof t=="number"}function ne(t){return typeof t=="string"}function A2(t,e){const n=t[0],r=tt(t),i=+e;return i?i===1?r:n+i*(r-n):n}function ia(t){return t&&tt(t)-t[0]||0}function oa(t){return _e(t)?"["+t.map(oa)+"]":ze(t)||ne(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function x2(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const w2=t=>le(t)||v2(t)?t:Date.parse(t);function C2(t,e){return e=e||w2,t==null||t===""?null:e(t)}function S2(t){return t==null||t===""?null:t+""}function aa(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var Wd={},Ac={},xc=34,di=10,wc=13;function Xd(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function E2(t,e){var n=Xd(t);return function(r,i){return e(n(r),i,t)}}function Zd(t){var e=Object.create(null),n=[];return t.forEach(function(r){for(var i in r)i in e||n.push(e[i]=i)}),n}function ke(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function D2(t){return t<0?"-"+ke(-t,6):t>9999?"+"+ke(t,6):ke(t,4)}function M2(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":D2(t.getUTCFullYear())+"-"+ke(t.getUTCMonth()+1,2)+"-"+ke(t.getUTCDate(),2)+(i?"T"+ke(e,2)+":"+ke(n,2)+":"+ke(r,2)+"."+ke(i,3)+"Z":r?"T"+ke(e,2)+":"+ke(n,2)+":"+ke(r,2)+"Z":n||e?"T"+ke(e,2)+":"+ke(n,2)+"Z":"")}function qd(t){var e=new RegExp('["'+t+`
|
2
|
+
\r]`),n=t.charCodeAt(0);function r(l,d){var p,h,m=i(l,function(g,y){if(p)return p(g,y-1);h=g,p=d?E2(g,d):Xd(g)});return m.columns=h||[],m}function i(l,d){var p=[],h=l.length,m=0,g=0,y,b=h<=0,w=!1;l.charCodeAt(h-1)===di&&--h,l.charCodeAt(h-1)===wc&&--h;function C(){if(b)return Ac;if(w)return w=!1,Wd;var v,A=m,D;if(l.charCodeAt(A)===xc){for(;m++<h&&l.charCodeAt(m)!==xc||l.charCodeAt(++m)===xc;);return(v=m)>=h?b=!0:(D=l.charCodeAt(m++))===di?w=!0:D===wc&&(w=!0,l.charCodeAt(m)===di&&++m),l.slice(A+1,v-1).replace(/""/g,'"')}for(;m<h;){if((D=l.charCodeAt(v=m++))===di)w=!0;else if(D===wc)w=!0,l.charCodeAt(m)===di&&++m;else if(D!==n)continue;return l.slice(A,v)}return b=!0,l.slice(A,h)}for(;(y=C())!==Ac;){for(var x=[];y!==Wd&&y!==Ac;)x.push(y),y=C();d&&(x=d(x,g++))==null||p.push(x)}return p}function o(l,d){return l.map(function(p){return d.map(function(h){return f(p[h])}).join(t)})}function a(l,d){return d==null&&(d=Zd(l)),[d.map(f).join(t)].concat(o(l,d)).join(`
|
3
|
+
`)}function s(l,d){return d==null&&(d=Zd(l)),o(l,d).join(`
|
4
4
|
`)}function c(l){return l.map(u).join(`
|
5
|
-
`)}function u(l){return l.map(f).join(t)}function f(l){return l==null?"":l instanceof Date?E2(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:a,formatBody:s,formatRows:c,formatRow:u,formatValue:f}}var D2=Xd(" "),M2=D2.parseRows;function T2(t){return t}function I2(t){if(t==null)return T2;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],a=t.translate[1];return function(s,c){c||(e=n=0);var u=2,f=s.length,l=new Array(f);for(l[0]=(e+=s[0])*r+o,l[1]=(n+=s[1])*i+a;u<f;)l[u]=s[u],++u;return l}}function k2(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function N2(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return Zd(t,n)})}:Zd(t,e)}function Zd(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=qd(t,e);return n==null&&r==null?{type:"Feature",properties:i,geometry:o}:r==null?{type:"Feature",id:n,properties:i,geometry:o}:{type:"Feature",id:n,bbox:r,properties:i,geometry:o}}function qd(t,e){var n=I2(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var d=r[f<0?~f:f],p=0,h=d.length;p<h;++p)l.push(n(d[p],p));f<0&&k2(l,h)}function o(f){return n(f)}function a(f){for(var l=[],d=0,p=f.length;d<p;++d)i(f[d],l);return l.length<2&&l.push(l[0]),l}function s(f){for(var l=a(f);l.length<4;)l.push(l[0]);return l}function c(f){return f.map(s)}function u(f){var l=f.type,d;switch(l){case"GeometryCollection":return{type:l,geometries:f.geometries.map(u)};case"Point":d=o(f.coordinates);break;case"MultiPoint":d=f.coordinates.map(o);break;case"LineString":d=a(f.arcs);break;case"MultiLineString":d=f.arcs.map(a);break;case"Polygon":d=c(f.arcs);break;case"MultiPolygon":d=f.arcs.map(c);break;default:return null}return{type:l,coordinates:d}}return u(e)}function L2(t,e){var n={},r={},i={},o=[],a=-1;e.forEach(function(u,f){var l=t.arcs[u<0?~u:u],d;l.length<3&&!l[1][0]&&!l[1][1]&&(d=e[++a],e[a]=u,e[f]=d)}),e.forEach(function(u){var f=s(u),l=f[0],d=f[1],p,h;if(p=i[l])if(delete i[p.end],p.push(u),p.end=d,h=r[d]){delete r[h.start];var m=h===p?p:p.concat(h);r[m.start=p.start]=i[m.end=h.end]=m}else r[p.start]=i[p.end]=p;else if(p=r[d])if(delete r[p.start],p.unshift(u),p.start=l,h=i[l]){delete i[h.end];var g=h===p?p:h.concat(p);r[g.start=h.start]=i[g.end=p.end]=g}else r[p.start]=i[p.end]=p;else p=[u],r[p.start=l]=i[p.end=d]=p});function s(u){var f=t.arcs[u<0?~u:u],l=f[0],d;return t.transform?(d=[0,0],f.forEach(function(p){d[0]+=p[0],d[1]+=p[1]})):d=f[f.length-1],u<0?[d,l]:[l,d]}function c(u,f){for(var l in u){var d=u[l];delete f[d.start],delete d.start,delete d.end,d.forEach(function(p){n[p<0?~p:p]=1}),o.push(d)}}return c(i,r),c(r,i),e.forEach(function(u){n[u<0?~u:u]||o.push([u])}),o}function B2(t){return qd(t,O2.apply(this,arguments))}function O2(t,e,n){var r,i,o;if(arguments.length>1)r=F2(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:L2(t,r)}}function F2(t,e,n){var r=[],i=[],o;function a(l){var d=l<0?~l:l;(i[d]||(i[d]=[])).push({i:l,g:o})}function s(l){l.forEach(a)}function c(l){l.forEach(s)}function u(l){l.forEach(c)}function f(l){switch(o=l,l.type){case"GeometryCollection":l.geometries.forEach(f);break;case"LineString":s(l.arcs);break;case"MultiLineString":case"Polygon":c(l.arcs);break;case"MultiPolygon":u(l.arcs);break}}return f(e),i.forEach(n==null?function(l){r.push(l[0].i)}:function(l){n(l[0].g,l[l.length-1].g)&&r.push(l[0].i)}),r}function Dn(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function P2(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function sa(t){let e,n,r;t.length!==2?(e=Dn,n=(s,c)=>Dn(t(s),c),r=(s,c)=>t(s)-c):(e=t===Dn||t===P2?t:z2,n=t,r=t);function i(s,c,u=0,f=s.length){if(u<f){if(e(c,c)!==0)return f;do{const l=u+f>>>1;n(s[l],c)<0?u=l+1:f=l}while(u<f)}return u}function o(s,c,u=0,f=s.length){if(u<f){if(e(c,c)!==0)return f;do{const l=u+f>>>1;n(s[l],c)<=0?u=l+1:f=l}while(u<f)}return u}function a(s,c,u=0,f=s.length){const l=i(s,c,u,f-1);return l>u&&r(s[l-1],c)>-r(s[l],c)?l-1:l}return{left:i,center:a,right:o}}function z2(){return 0}function Kd(t){return t===null?NaN:+t}const Jd=sa(Dn),Cc=Jd.right;Jd.left,sa(Kd).center;const Mn=Cc;function R2(t,e){let n=0;if(e===void 0)for(let r of t)r!=null&&(r=+r)>=r&&++n;else{let r=-1;for(let i of t)(i=e(i,++r,t))!=null&&(i=+i)>=i&&++n}return n}function ca(t,e){let n,r;if(e===void 0)for(const i of t)i!=null&&(n===void 0?i>=i&&(n=r=i):(n>i&&(n=i),r<i&&(r=i)));else{let i=-1;for(let o of t)(o=e(o,++i,t))!=null&&(n===void 0?o>=o&&(n=r=o):(n>o&&(n=o),r<o&&(r=o)))}return[n,r]}class Tn extends Map{constructor(e,n=H2){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(const[r,i]of e)this.set(r,i)}get(e){return super.get($d(this,e))}has(e){return super.has($d(this,e))}set(e,n){return super.set(j2(this,e),n)}delete(e){return super.delete(U2(this,e))}}function $d({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function j2({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function U2({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function H2(t){return t!==null&&typeof t=="object"?t.valueOf():t}function pi(t){return t}function mi(t,...e){return Sc(t,pi,pi,e)}function G2(t,...e){return Sc(t,Array.from,pi,e)}function Q2(t,e,...n){return Sc(t,pi,e,n)}function Sc(t,e,n,r){return function i(o,a){if(a>=r.length)return n(o);const s=new Tn,c=r[a++];let u=-1;for(const f of o){const l=c(f,++u,o),d=s.get(l);d?d.push(f):s.set(l,[f])}for(const[f,l]of s)s.set(f,i(l,a));return e(s)}(t,0)}function V2(t,e){return Array.from(e,n=>t[n])}function Y2(t,...e){if(typeof t[Symbol.iterator]!="function")throw new TypeError("values is not iterable");t=Array.from(t);let[n]=e;if(n&&n.length!==2||e.length>1){const r=Uint32Array.from(t,(i,o)=>o);return e.length>1?(e=e.map(i=>t.map(i)),r.sort((i,o)=>{for(const a of e){const s=Ec(a[i],a[o]);if(s)return s}})):(n=t.map(n),r.sort((i,o)=>Ec(n[i],n[o]))),V2(t,r)}return t.sort(_2(n))}function _2(t=Dn){if(t===Dn)return Ec;if(typeof t!="function")throw new TypeError("compare is not a function");return(e,n)=>{const r=t(e,n);return r||r===0?r:(t(n,n)===0)-(t(e,e)===0)}}function Ec(t,e){return(t==null||!(t>=t))-(e==null||!(e>=e))||(t<e?-1:t>e?1:0)}var W2=Array.prototype,X2=W2.slice;function ua(t){return()=>t}var Dc=Math.sqrt(50),Mc=Math.sqrt(10),Tc=Math.sqrt(2);function gi(t,e,n){var r,i=-1,o,a,s;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(s=yi(t,e,n))===0||!isFinite(s))return[];if(s>0){let c=Math.round(t/s),u=Math.round(e/s);for(c*s<t&&++c,u*s>e&&--u,a=new Array(o=u-c+1);++i<o;)a[i]=(c+i)*s}else{s=-s;let c=Math.round(t*s),u=Math.round(e*s);for(c/s<t&&++c,u/s>e&&--u,a=new Array(o=u-c+1);++i<o;)a[i]=(c+i)/s}return r&&a.reverse(),a}function yi(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=Dc?10:o>=Mc?5:o>=Tc?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Dc?10:o>=Mc?5:o>=Tc?2:1)}function In(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Dc?i*=10:o>=Mc?i*=5:o>=Tc&&(i*=2),e<t?-i:i}function Z2(t,e,n){let r;for(;;){const i=yi(t,e,n);if(i===r||i===0||!isFinite(i))return[t,e];i>0?(t=Math.floor(t/i)*i,e=Math.ceil(e/i)*i):i<0&&(t=Math.ceil(t*i)/i,e=Math.floor(e*i)/i),r=i}}function q2(t){return Math.ceil(Math.log(R2(t))/Math.LN2)+1}function K2(){var t=pi,e=ca,n=q2;function r(i){Array.isArray(i)||(i=Array.from(i));var o,a=i.length,s,c,u=new Array(a);for(o=0;o<a;++o)u[o]=t(i[o],o,i);var f=e(u),l=f[0],d=f[1],p=n(u,l,d);if(!Array.isArray(p)){const y=d,b=+p;if(e===ca&&([l,d]=Z2(l,d,b)),p=gi(l,d,b),p[0]<=l&&(c=yi(l,d,b)),p[p.length-1]>=d)if(y>=d&&e===ca){const w=yi(l,d,b);isFinite(w)&&(w>0?d=(Math.floor(d/w)+1)*w:w<0&&(d=(Math.ceil(d*-w)+1)/-w))}else p.pop()}for(var h=p.length;p[0]<=l;)p.shift(),--h;for(;p[h-1]>d;)p.pop(),--h;var m=new Array(h+1),g;for(o=0;o<=h;++o)g=m[o]=[],g.x0=o>0?p[o-1]:l,g.x1=o<h?p[o]:d;if(isFinite(c)){if(c>0)for(o=0;o<a;++o)(s=u[o])!=null&&l<=s&&s<=d&&m[Math.min(h,Math.floor((s-l)/c))].push(i[o]);else if(c<0){for(o=0;o<a;++o)if((s=u[o])!=null&&l<=s&&s<=d){const y=Math.floor((l-s)*c);m[Math.min(h,y+(p[y]<=s))].push(i[o])}}}else for(o=0;o<a;++o)(s=u[o])!=null&&l<=s&&s<=d&&m[Mn(p,s,0,h)].push(i[o]);return m}return r.value=function(i){return arguments.length?(t=typeof i=="function"?i:ua(i),r):t},r.domain=function(i){return arguments.length?(e=typeof i=="function"?i:ua([i[0],i[1]]),r):e},r.thresholds=function(i){return arguments.length?(n=typeof i=="function"?i:Array.isArray(i)?ua(X2.call(i)):ua(i),r):n},r}function Ic(t,e,n=Kd){if(r=t.length){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,o=Math.floor(i),a=+n(t[o],o,t),s=+n(t[o+1],o+1,t);return a+(s-a)*(i-o)}}function _t(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,o=new Array(i);++r<i;)o[r]=t+r*n;return o}function la(t,e){let n=0;if(e===void 0)for(let r of t)(r=+r)&&(n+=r);else{let r=-1;for(let i of t)(i=+e(i,++r,t))&&(n+=i)}return n}function J2(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function fa(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function xr(t){return t=fa(Math.abs(t)),t?t[1]:NaN}function $2(t,e){return function(n,r){for(var i=n.length,o=[],a=0,s=t[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),o.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=t[a=(a+1)%t.length];return o.reverse().join(e)}}function eA(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var tA=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Wt(t){if(!(e=tA.exec(t)))throw new Error("invalid format: "+t);var e;return new kc({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}Wt.prototype=kc.prototype;function kc(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}kc.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 nA(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var eh;function rA(t,e){var n=fa(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(eh=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+fa(t,Math.max(0,e+o-1))[0]}function th(t,e){var n=fa(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const nh={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:J2,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>th(t*100,e),r:th,s:rA,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function rh(t){return t}var ih=Array.prototype.map,oh=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function iA(t){var e=t.grouping===void 0||t.thousands===void 0?rh:$2(ih.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?rh:eA(ih.call(t.numerals,String)),a=t.percent===void 0?"%":t.percent+"",s=t.minus===void 0?"−":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=Wt(l);var d=l.fill,p=l.align,h=l.sign,m=l.symbol,g=l.zero,y=l.width,b=l.comma,w=l.precision,C=l.trim,x=l.type;x==="n"?(b=!0,x="g"):nh[x]||(w===void 0&&(w=12),C=!0,x="g"),(g||d==="0"&&p==="=")&&(g=!0,d="0",p="=");var v=m==="$"?n:m==="#"&&/[boxX]/.test(x)?"0"+x.toLowerCase():"",A=m==="$"?r:/[%p]/.test(x)?a:"",D=nh[x],k=/[defgprs%]/.test(x);w=w===void 0?6:/[gprs]/.test(x)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function O(T){var B=v,G=A,Q,De,xn;if(x==="c")G=D(T)+G,T="";else{T=+T;var wn=T<0||1/T<0;if(T=isNaN(T)?c:D(Math.abs(T),w),C&&(T=nA(T)),wn&&+T==0&&h!=="+"&&(wn=!1),B=(wn?h==="("?h:s:h==="-"||h==="("?"":h)+B,G=(x==="s"?oh[8+eh/3]:"")+G+(wn&&h==="("?")":""),k){for(Q=-1,De=T.length;++Q<De;)if(xn=T.charCodeAt(Q),48>xn||xn>57){G=(xn===46?i+T.slice(Q+1):T.slice(Q))+G,T=T.slice(0,Q);break}}}b&&!g&&(T=e(T,1/0));var _=B.length+T.length+G.length,Qe=_<y?new Array(y-_+1).join(d):"";switch(b&&g&&(T=e(Qe+T,Qe.length?y-G.length:1/0),Qe=""),p){case"<":T=B+T+G+Qe;break;case"=":T=B+Qe+T+G;break;case"^":T=Qe.slice(0,_=Qe.length>>1)+B+T+G+Qe.slice(_);break;default:T=Qe+B+T+G;break}return o(T)}return O.toString=function(){return l+""},O}function f(l,d){var p=u((l=Wt(l),l.type="f",l)),h=Math.max(-8,Math.min(8,Math.floor(xr(d)/3)))*3,m=Math.pow(10,-h),g=oh[8+h/3];return function(y){return p(m*y)+g}}return{format:u,formatPrefix:f}}var da,de,Nc;oA({thousands:",",grouping:[3],currency:["$",""]});function oA(t){return da=iA(t),de=da.format,Nc=da.formatPrefix,da}function ah(t){return Math.max(0,-xr(Math.abs(t)))}function sh(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(xr(e)/3)))*3-xr(Math.abs(t)))}function ch(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,xr(e)-xr(t))+1}var Lc=new Date,Bc=new Date;function me(t,e,n,r){function i(o){return t(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=function(o){return t(o=new Date(+o)),o},i.ceil=function(o){return t(o=new Date(o-1)),e(o,1),t(o),o},i.round=function(o){var a=i(o),s=i.ceil(o);return o-a<s-o?a:s},i.offset=function(o,a){return e(o=new Date(+o),a==null?1:Math.floor(a)),o},i.range=function(o,a,s){var c=[],u;if(o=i.ceil(o),s=s==null?1:Math.floor(s),!(o<a)||!(s>0))return c;do c.push(u=new Date(+o)),e(o,s),t(o);while(u<o&&o<a);return c},i.filter=function(o){return me(function(a){if(a>=a)for(;t(a),!o(a);)a.setTime(a-1)},function(a,s){if(a>=a)if(s<0)for(;++s<=0;)for(;e(a,-1),!o(a););else for(;--s>=0;)for(;e(a,1),!o(a););})},n&&(i.count=function(o,a){return Lc.setTime(+o),Bc.setTime(+a),t(Lc),t(Bc),Math.floor(n(Lc,Bc))},i.every=function(o){return o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?function(a){return r(a)%o===0}:function(a){return i.count(0,a)%o===0}):i}),i}var ha=me(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});ha.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?me(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):ha};const Oc=ha;ha.range;const Dt=1e3,We=Dt*60,Mt=We*60,kn=Mt*24,Fc=kn*7,uh=kn*30,Pc=kn*365;var lh=me(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*Dt)},function(t,e){return(e-t)/Dt},function(t){return t.getUTCSeconds()});const Xt=lh;lh.range;var fh=me(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Dt)},function(t,e){t.setTime(+t+e*We)},function(t,e){return(e-t)/We},function(t){return t.getMinutes()});const zc=fh;fh.range;var dh=me(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Dt-t.getMinutes()*We)},function(t,e){t.setTime(+t+e*Mt)},function(t,e){return(e-t)/Mt},function(t){return t.getHours()});const Rc=dh;dh.range;var hh=me(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*We)/kn,t=>t.getDate()-1);const Nn=hh;hh.range;function Ln(t){return me(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(e,n){e.setDate(e.getDate()+n*7)},function(e,n){return(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*We)/Fc})}var vi=Ln(0),pa=Ln(1),aA=Ln(2),sA=Ln(3),wr=Ln(4),cA=Ln(5),uA=Ln(6);vi.range,pa.range,aA.range,sA.range,wr.range,cA.range,uA.range;var ph=me(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12},function(t){return t.getMonth()});const ma=ph;ph.range;var jc=me(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});jc.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:me(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)})};const Zt=jc;jc.range;var mh=me(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*We)},function(t,e){return(e-t)/We},function(t){return t.getUTCMinutes()});const Uc=mh;mh.range;var gh=me(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*Mt)},function(t,e){return(e-t)/Mt},function(t){return t.getUTCHours()});const Hc=gh;gh.range;var yh=me(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/kn},function(t){return t.getUTCDate()-1});const Bn=yh;yh.range;function On(t){return me(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCDate(e.getUTCDate()+n*7)},function(e,n){return(n-e)/Fc})}var bi=On(0),ga=On(1),lA=On(2),fA=On(3),Cr=On(4),dA=On(5),hA=On(6);bi.range,ga.range,lA.range,fA.range,Cr.range,dA.range,hA.range;var vh=me(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12},function(t){return t.getUTCMonth()});const ya=vh;vh.range;var Gc=me(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});Gc.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:me(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})};const qt=Gc;Gc.range;function bh(t,e,n,r,i,o){const a=[[Xt,1,Dt],[Xt,5,5*Dt],[Xt,15,15*Dt],[Xt,30,30*Dt],[o,1,We],[o,5,5*We],[o,15,15*We],[o,30,30*We],[i,1,Mt],[i,3,3*Mt],[i,6,6*Mt],[i,12,12*Mt],[r,1,kn],[r,2,2*kn],[n,1,Fc],[e,1,uh],[e,3,3*uh],[t,1,Pc]];function s(u,f,l){const d=f<u;d&&([u,f]=[f,u]);const p=l&&typeof l.range=="function"?l:c(u,f,l),h=p?p.range(u,+f+1):[];return d?h.reverse():h}function c(u,f,l){const d=Math.abs(f-u)/l,p=sa(([,,g])=>g).right(a,d);if(p===a.length)return t.every(In(u/Pc,f/Pc,l));if(p===0)return Oc.every(Math.max(In(u,f,l),1));const[h,m]=a[d/a[p-1][2]<a[p][2]/d?p-1:p];return h.every(m)}return[s,c]}const[pA,mA]=bh(qt,ya,bi,Bn,Hc,Uc),[gA,yA]=bh(Zt,ma,vi,Nn,Rc,zc),Ai="year",xi="quarter",wi="month",Ci="week",Si="date",va="day",Qc="dayofyear",Ei="hours",Di="minutes",Mi="seconds",ba="milliseconds";[Ai,xi,wi,Ci,Si,va,Qc,Ei,Di,Mi,ba].reduce((t,e,n)=>(t[e]=1+n,t),{});const vA={[Ai]:Zt,[xi]:ma.every(3),[wi]:ma,[Ci]:vi,[Si]:Nn,[va]:Nn,[Qc]:Nn,[Ei]:Rc,[Di]:zc,[Mi]:Xt,[ba]:Oc},bA={[Ai]:qt,[xi]:ya.every(3),[wi]:ya,[Ci]:bi,[Si]:Bn,[va]:Bn,[Qc]:Bn,[Ei]:Hc,[Di]:Uc,[Mi]:Xt,[ba]:Oc};function AA(t){return vA[t]}function xA(t){return bA[t]}function Vc(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Yc(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Ti(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Ah(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,s=t.months,c=t.shortMonths,u=Ii(i),f=ki(i),l=Ii(o),d=ki(o),p=Ii(a),h=ki(a),m=Ii(s),g=ki(s),y=Ii(c),b=ki(c),w={a:wn,A:_,b:Qe,B:qo,c:null,d:Dh,e:Dh,f:VA,g:ex,G:nx,H:HA,I:GA,j:QA,L:Mh,m:YA,M:_A,p:Ko,q:dc,Q:Bh,s:Oh,S:WA,u:XA,U:ZA,V:qA,w:KA,W:JA,x:null,X:null,y:$A,Y:tx,Z:rx,"%":Lh},C={a:Nd,A:NN,b:LN,B:BN,c:null,d:Ih,e:Ih,f:sx,g:yx,G:bx,H:ix,I:ox,j:ax,L:kh,m:cx,M:ux,p:ON,q:FN,Q:Bh,s:Oh,S:lx,u:fx,U:dx,V:hx,w:px,W:mx,x:null,X:null,y:gx,Y:vx,Z:Ax,"%":Lh},x={a:O,A:T,b:B,B:G,c:Q,d:Sh,e:Sh,f:zA,g:Ch,G:wh,H:Eh,I:Eh,j:BA,L:PA,m:LA,M:OA,p:k,q:NA,Q:jA,s:UA,S:FA,u:DA,U:MA,V:TA,w:EA,W:IA,x:De,X:xn,y:Ch,Y:wh,Z:kA,"%":RA};w.x=v(n,w),w.X=v(r,w),w.c=v(e,w),C.x=v(n,C),C.X=v(r,C),C.c=v(e,C);function v(L,H){return function(W){var M=[],Pe=-1,J=0,Ve=L.length,Ye,Ar,Qb;for(W instanceof Date||(W=new Date(+W));++Pe<Ve;)L.charCodeAt(Pe)===37&&(M.push(L.slice(J,Pe)),(Ar=xh[Ye=L.charAt(++Pe)])!=null?Ye=L.charAt(++Pe):Ar=Ye==="e"?" ":"0",(Qb=H[Ye])&&(Ye=Qb(W,Ar)),M.push(Ye),J=Pe+1);return M.push(L.slice(J,Pe)),M.join("")}}function A(L,H){return function(W){var M=Ti(1900,void 0,1),Pe=D(M,L,W+="",0),J,Ve;if(Pe!=W.length)return null;if("Q"in M)return new Date(M.Q);if("s"in M)return new Date(M.s*1e3+("L"in M?M.L:0));if(H&&!("Z"in M)&&(M.Z=0),"p"in M&&(M.H=M.H%12+M.p*12),M.m===void 0&&(M.m="q"in M?M.q:0),"V"in M){if(M.V<1||M.V>53)return null;"w"in M||(M.w=1),"Z"in M?(J=Yc(Ti(M.y,0,1)),Ve=J.getUTCDay(),J=Ve>4||Ve===0?ga.ceil(J):ga(J),J=Bn.offset(J,(M.V-1)*7),M.y=J.getUTCFullYear(),M.m=J.getUTCMonth(),M.d=J.getUTCDate()+(M.w+6)%7):(J=Vc(Ti(M.y,0,1)),Ve=J.getDay(),J=Ve>4||Ve===0?pa.ceil(J):pa(J),J=Nn.offset(J,(M.V-1)*7),M.y=J.getFullYear(),M.m=J.getMonth(),M.d=J.getDate()+(M.w+6)%7)}else("W"in M||"U"in M)&&("w"in M||(M.w="u"in M?M.u%7:"W"in M?1:0),Ve="Z"in M?Yc(Ti(M.y,0,1)).getUTCDay():Vc(Ti(M.y,0,1)).getDay(),M.m=0,M.d="W"in M?(M.w+6)%7+M.W*7-(Ve+5)%7:M.w+M.U*7-(Ve+6)%7);return"Z"in M?(M.H+=M.Z/100|0,M.M+=M.Z%100,Yc(M)):Vc(M)}}function D(L,H,W,M){for(var Pe=0,J=H.length,Ve=W.length,Ye,Ar;Pe<J;){if(M>=Ve)return-1;if(Ye=H.charCodeAt(Pe++),Ye===37){if(Ye=H.charAt(Pe++),Ar=x[Ye in xh?H.charAt(Pe++):Ye],!Ar||(M=Ar(L,W,M))<0)return-1}else if(Ye!=W.charCodeAt(M++))return-1}return M}function k(L,H,W){var M=u.exec(H.slice(W));return M?(L.p=f.get(M[0].toLowerCase()),W+M[0].length):-1}function O(L,H,W){var M=p.exec(H.slice(W));return M?(L.w=h.get(M[0].toLowerCase()),W+M[0].length):-1}function T(L,H,W){var M=l.exec(H.slice(W));return M?(L.w=d.get(M[0].toLowerCase()),W+M[0].length):-1}function B(L,H,W){var M=y.exec(H.slice(W));return M?(L.m=b.get(M[0].toLowerCase()),W+M[0].length):-1}function G(L,H,W){var M=m.exec(H.slice(W));return M?(L.m=g.get(M[0].toLowerCase()),W+M[0].length):-1}function Q(L,H,W){return D(L,e,H,W)}function De(L,H,W){return D(L,n,H,W)}function xn(L,H,W){return D(L,r,H,W)}function wn(L){return a[L.getDay()]}function _(L){return o[L.getDay()]}function Qe(L){return c[L.getMonth()]}function qo(L){return s[L.getMonth()]}function Ko(L){return i[+(L.getHours()>=12)]}function dc(L){return 1+~~(L.getMonth()/3)}function Nd(L){return a[L.getUTCDay()]}function NN(L){return o[L.getUTCDay()]}function LN(L){return c[L.getUTCMonth()]}function BN(L){return s[L.getUTCMonth()]}function ON(L){return i[+(L.getUTCHours()>=12)]}function FN(L){return 1+~~(L.getUTCMonth()/3)}return{format:function(L){var H=v(L+="",w);return H.toString=function(){return L},H},parse:function(L){var H=A(L+="",!1);return H.toString=function(){return L},H},utcFormat:function(L){var H=v(L+="",C);return H.toString=function(){return L},H},utcParse:function(L){var H=A(L+="",!0);return H.toString=function(){return L},H}}}var xh={"-":"",_:" ",0:"0"},ge=/^\s*\d+/,wA=/^%/,CA=/[\\^$*+?|[\]().{}]/g;function V(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function SA(t){return t.replace(CA,"\\$&")}function Ii(t){return new RegExp("^(?:"+t.map(SA).join("|")+")","i")}function ki(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function EA(t,e,n){var r=ge.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function DA(t,e,n){var r=ge.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function MA(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function TA(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function IA(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function wh(t,e,n){var r=ge.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Ch(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function kA(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function NA(t,e,n){var r=ge.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function LA(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Sh(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function BA(t,e,n){var r=ge.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Eh(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function OA(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function FA(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function PA(t,e,n){var r=ge.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function zA(t,e,n){var r=ge.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function RA(t,e,n){var r=wA.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function jA(t,e,n){var r=ge.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function UA(t,e,n){var r=ge.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Dh(t,e){return V(t.getDate(),e,2)}function HA(t,e){return V(t.getHours(),e,2)}function GA(t,e){return V(t.getHours()%12||12,e,2)}function QA(t,e){return V(1+Nn.count(Zt(t),t),e,3)}function Mh(t,e){return V(t.getMilliseconds(),e,3)}function VA(t,e){return Mh(t,e)+"000"}function YA(t,e){return V(t.getMonth()+1,e,2)}function _A(t,e){return V(t.getMinutes(),e,2)}function WA(t,e){return V(t.getSeconds(),e,2)}function XA(t){var e=t.getDay();return e===0?7:e}function ZA(t,e){return V(vi.count(Zt(t)-1,t),e,2)}function Th(t){var e=t.getDay();return e>=4||e===0?wr(t):wr.ceil(t)}function qA(t,e){return t=Th(t),V(wr.count(Zt(t),t)+(Zt(t).getDay()===4),e,2)}function KA(t){return t.getDay()}function JA(t,e){return V(pa.count(Zt(t)-1,t),e,2)}function $A(t,e){return V(t.getFullYear()%100,e,2)}function ex(t,e){return t=Th(t),V(t.getFullYear()%100,e,2)}function tx(t,e){return V(t.getFullYear()%1e4,e,4)}function nx(t,e){var n=t.getDay();return t=n>=4||n===0?wr(t):wr.ceil(t),V(t.getFullYear()%1e4,e,4)}function rx(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+V(e/60|0,"0",2)+V(e%60,"0",2)}function Ih(t,e){return V(t.getUTCDate(),e,2)}function ix(t,e){return V(t.getUTCHours(),e,2)}function ox(t,e){return V(t.getUTCHours()%12||12,e,2)}function ax(t,e){return V(1+Bn.count(qt(t),t),e,3)}function kh(t,e){return V(t.getUTCMilliseconds(),e,3)}function sx(t,e){return kh(t,e)+"000"}function cx(t,e){return V(t.getUTCMonth()+1,e,2)}function ux(t,e){return V(t.getUTCMinutes(),e,2)}function lx(t,e){return V(t.getUTCSeconds(),e,2)}function fx(t){var e=t.getUTCDay();return e===0?7:e}function dx(t,e){return V(bi.count(qt(t)-1,t),e,2)}function Nh(t){var e=t.getUTCDay();return e>=4||e===0?Cr(t):Cr.ceil(t)}function hx(t,e){return t=Nh(t),V(Cr.count(qt(t),t)+(qt(t).getUTCDay()===4),e,2)}function px(t){return t.getUTCDay()}function mx(t,e){return V(ga.count(qt(t)-1,t),e,2)}function gx(t,e){return V(t.getUTCFullYear()%100,e,2)}function yx(t,e){return t=Nh(t),V(t.getUTCFullYear()%100,e,2)}function vx(t,e){return V(t.getUTCFullYear()%1e4,e,4)}function bx(t,e){var n=t.getUTCDay();return t=n>=4||n===0?Cr(t):Cr.ceil(t),V(t.getUTCFullYear()%1e4,e,4)}function Ax(){return"+0000"}function Lh(){return"%"}function Bh(t){return+t}function Oh(t){return Math.floor(+t/1e3)}var Sr,_c,Fh,Wc,Ph;xx({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 xx(t){return Sr=Ah(t),_c=Sr.format,Fh=Sr.parse,Wc=Sr.utcFormat,Ph=Sr.utcParse,Sr}function Ni(t){const e={};return n=>e[n]||(e[n]=t(n))}function wx(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=Cx(r,i);const a=o<r.length?r.slice(o):"";for(;--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+a}}function Cx(t,e){let n=t.lastIndexOf("e"),r;if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}function Sx(t){const e=Ni(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=Wt(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return wx(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,a){a=Wt(a??",f");const s=In(r,i,o),c=Math.max(Math.abs(r),Math.abs(i));let u;if(a.precision==null)switch(a.type){case"s":return isNaN(u=sh(s,c))||(a.precision=u),n(a,c);case"":case"e":case"g":case"p":case"r":{isNaN(u=ch(s,c))||(a.precision=u-(a.type==="e"));break}case"f":case"%":{isNaN(u=ah(s))||(a.precision=u-(a.type==="%")*2);break}}return e(a)}}}Ex();function Ex(){return Sx({format:de,formatPrefix:Nc})}function zh(t,e,n){n=n||{},ze(n)||ae("Invalid time multi-format specifier: ".concat(n));const r=e(Mi),i=e(Di),o=e(Ei),a=e(Si),s=e(Ci),c=e(wi),u=e(xi),f=e(Ai),l=t(n[ba]||".%L"),d=t(n[Mi]||":%S"),p=t(n[Di]||"%I:%M"),h=t(n[Ei]||"%I %p"),m=t(n[Si]||n[va]||"%a %d"),g=t(n[Ci]||"%b %d"),y=t(n[wi]||"%B"),b=t(n[xi]||"%B"),w=t(n[Ai]||"%Y");return C=>(r(C)<C?l:i(C)<C?d:o(C)<C?p:a(C)<C?h:c(C)<C?s(C)<C?m:g:f(C)<C?u(C)<C?y:b:w)(C)}function Rh(t){const e=Ni(t.format),n=Ni(t.utcFormat);return{timeFormat:r=>ne(r)?e(r):zh(e,AA,r),utcFormat:r=>ne(r)?n(r):zh(n,xA,r),timeParse:Ni(t.parse),utcParse:Ni(t.utcParse)}}let Xc;Dx();function Dx(){return Xc=Rh({format:_c,parse:Fh,utcFormat:Wc,utcParse:Ph})}function Mx(t){return Rh(Ah(t))}function Tx(t){return arguments.length?Xc=Mx(t):Xc}const Ix=/^(data:|([A-Za-z]+:)?\/\/)/,kx=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,Nx=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,jh="file://";function Lx(t,e){return n=>({options:n||{},sanitize:Ox,load:Bx,fileAccess:!!e,file:Fx(e),http:zx(t)})}async function Bx(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function Ox(t,e){e=bc({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,a;const s=kx.test(t.replace(Nx,""));(t==null||typeof t!="string"||!s)&&ae("Sanitize failure, invalid URI: "+oa(t));const c=Ix.test(t);return(a=e.baseURL)&&!c&&(!t.startsWith("/")&&!a.endsWith("/")&&(t="/"+t),t=a+t),o=(i=t.startsWith(jh))||e.mode==="file"||e.mode!=="http"&&!c&&n,i?t=t.slice(jh.length):t.startsWith("//")&&(e.defaultProtocol==="file"?(t=t.slice(2),o=!0):t=(e.defaultProtocol||"http")+":"+t),Object.defineProperty(r,"localFile",{value:!!o}),r.href=t,e.target&&(r.target=e.target+""),e.rel&&(r.rel=e.rel+""),e.context==="image"&&e.crossOrigin&&(r.crossOrigin=e.crossOrigin+""),r}function Fx(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):Px}async function Px(){ae("No file system access.")}function zx(t){return t?async function(e,n){const r=bc({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?Ie(o[i])?o[i]():o.text():ae(o.status+""+o.statusText)}:Rx}async function Rx(){ae("No HTTP fetch method available.")}const jx=t=>t!=null&&t===t,Ux=t=>t==="true"||t==="false"||t===!0||t===!1,Hx=t=>!Number.isNaN(Date.parse(t)),Uh=t=>!Number.isNaN(+t)&&!(t instanceof Date),Gx=t=>Uh(t)&&Number.isInteger(+t),Hh={boolean:b2,integer:di,number:di,date:x2,string:w2,unknown:ea},Aa=[Ux,Gx,Uh,Hx],Qx=["boolean","integer","number","date"];function Gh(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=Aa.length,i=Aa.map((o,a)=>a+1);for(let o=0,a=0,s,c;o<n;++o)for(c=e?t[o][e]:t[o],s=0;s<r;++s)if(i[s]&&jx(c)&&!Aa[s](c)&&(i[s]=0,++a,a===Aa.length))return"string";return Qx[i.reduce((o,a)=>o===0?a:o,0)-1]}function Vx(t,e){return e.reduce((n,r)=>(n[r]=Gh(t,r),n),{})}function Qh(t){const e=function(n,r){const i={delimiter:t};return Zc(n,r?bc(r,i):i)};return e.responseType="text",e}function Zc(t,e){return e.header&&(t=e.header.map(oa).join(e.delimiter)+`
|
6
|
-
`+t),Xd(e.delimiter).parse(t+"")}Zc.responseType="text";function Yx(t){return typeof Buffer=="function"&&Ie(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function qc(t,e){const n=e&&e.property?$o(e.property):ea;return ze(t)&&!Yx(t)?_x(n(t),e):n(JSON.parse(t))}qc.responseType="json";function _x(t,e){return!_e(t)&&y2(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const Wx={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function Vh(t,e){let n,r,i,o;return t=qc(t,e),e&&e.feature?(n=N2,i=e.feature):e&&e.mesh?(n=B2,i=e.mesh,o=Wx[e.filter]):ae("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):ae("Invalid TopoJSON object: "+i),r&&r.features||[r]}Vh.responseType="json";const Kc={dsv:Zc,csv:Qh(","),tsv:Qh(" "),json:qc,topojson:Vh};function Yh(t,e){return arguments.length>1?(Kc[t]=e,this):En(Kc,t)?Kc[t]:null}function _h(t,e,n,r){e=e||{};const i=Yh(e.type||"json");return i||ae("Unknown data format type: "+e.type),t=i(t,e),e.parse&&Xx(t,e.parse,n,r),En(t,"columns")&&delete t.columns,t}function Xx(t,e,n,r){if(!t.length)return;const i=Tx();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),a,s,c,u,f,l;e==="auto"&&(e=Vx(t,o)),o=Object.keys(e);const d=o.map(p=>{const h=e[p];let m,g;if(h&&(h.startsWith("date:")||h.startsWith("utc:")))return m=h.split(/:(.+)?/,2),g=m[1],(g[0]==="'"&&g[g.length-1]==="'"||g[0]==='"'&&g[g.length-1]==='"')&&(g=g.slice(1,-1)),(m[0]==="utc"?r:n)(g);if(!Hh[h])throw Error("Illegal format pattern: "+p+":"+h);return Hh[h]});for(c=0,f=t.length,l=o.length;c<f;++c)for(a=t[c],u=0;u<l;++u)s=o[u],a[s]=d[u](a[s])}const Li=Lx(typeof fetch<"u"&&fetch,null),Wh=1;function Jc(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,a=.5,s=0;const u=f=>(f+a-t[0])/n*r+e[0];return u.invert=f=>(f-e[0])/r*n+t[0]-a,u.domain=function(f){if(arguments.length){if(t=ca(f),n=t[1]-t[0],n<Wh){n=Wh;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return u}else return t},u.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],u):e},u.numberingOffset=function(f){return arguments.length?(s=f,u):s},u.padding=function(f){return arguments.length?(o=f,i=Math.min(1,f),u):i},u.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),u):i},u.paddingOuter=function(f){return arguments.length?(o=f,u):o},u.align=function(f){return arguments.length?(a=Math.max(0,Math.min(1,f)),u):a},u.step=()=>r/n,u.bandwidth=()=>u.step(),u.ticks=f=>{const l=u.align(),d=u.numberingOffset();return gi(t[0]-l+d,t[1]-l+d,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(p=>p-s)},u.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const p=In(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?de(","):de(".3s");return h=>p(h+s)},u.copy=()=>Jc().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(s),u}function Zx(){const t=Jc().numberingOffset(1);let e;t.genome=function(r){return arguments.length?(e=r,t):e},t.ticks=r=>{if(!e)return[];const i=t.domain(),o=t.numberingOffset(),[a,s]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(f=>e.toChromosome(f)),c=Math.max(1,In(i[0],i[1],r)),u=[];for(let f=a.index;f<=s.index;f++){const l=e.chromosomes[f],d=Math.max(l.continuousStart+c,i[0]-(i[0]-l.continuousStart)%c),p=Math.min(l.continuousEnd-c/4,i[1]+1);for(let h=d;h<=p;h+=c){const m=h-o;m>=i[0]&&m<i[1]&&u.push(m)}}return u},t.tickFormat=(r,i)=>{if(!e)return;if(i)throw new Error("Locus scale's tickFormat does not support a specifier!");const o=t.domain(),a=o[1]-o[0],s=t.numberingOffset(),u=In(o[0],o[1],Math.min(r,Math.ceil(a)))<1e6?de(","):de(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>u(f(l)+s)};const n=t.copy;return t.copy=()=>n().genome(e),t}function qx(t){return t.type=="locus"}function lt(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function Kt(t,e){switch(arguments.length){case 0:break;case 1:{typeof t=="function"?this.interpolator(t):this.range(t);break}default:{this.domain(t),typeof e=="function"?this.interpolator(e):this.range(e);break}}return this}const $c=Symbol("implicit");function eu(){var t=new Tn,e=[],n=[],r=$c;function i(o){let a=t.get(o);if(a===void 0){if(r!==$c)return r;t.set(o,a=e.push(o)-1)}return n[a%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new Tn;for(const a of o)t.has(a)||t.set(a,e.push(a)-1);return i},i.range=function(o){return arguments.length?(n=Array.from(o),i):n.slice()},i.unknown=function(o){return arguments.length?(r=o,i):r},i.copy=function(){return eu(e,n).unknown(r)},lt.apply(i,arguments),i}function Er(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Bi(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Jt(){}var Fn=.7,Dr=1/Fn,Mr="\\s*([+-]?\\d+)\\s*",Oi="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",ft="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Kx=/^#([0-9a-f]{3,8})$/,Jx=new RegExp(`^rgb\\(${Mr},${Mr},${Mr}\\)$`),$x=new RegExp(`^rgb\\(${ft},${ft},${ft}\\)$`),ew=new RegExp(`^rgba\\(${Mr},${Mr},${Mr},${Oi}\\)$`),tw=new RegExp(`^rgba\\(${ft},${ft},${ft},${Oi}\\)$`),nw=new RegExp(`^hsl\\(${Oi},${ft},${ft}\\)$`),rw=new RegExp(`^hsla\\(${Oi},${ft},${ft},${Oi}\\)$`),Xh={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};Er(Jt,Pn,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Zh,formatHex:Zh,formatHex8:iw,formatHsl:ow,formatRgb:qh,toString:qh});function Zh(){return this.rgb().formatHex()}function iw(){return this.rgb().formatHex8()}function ow(){return t0(this).formatHsl()}function qh(){return this.rgb().formatRgb()}function Pn(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Kx.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Kh(e):n===3?new ye(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?xa(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?xa(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=Jx.exec(t))?new ye(e[1],e[2],e[3],1):(e=$x.exec(t))?new ye(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=ew.exec(t))?xa(e[1],e[2],e[3],e[4]):(e=tw.exec(t))?xa(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=nw.exec(t))?e0(e[1],e[2]/100,e[3]/100,1):(e=rw.exec(t))?e0(e[1],e[2]/100,e[3]/100,e[4]):Xh.hasOwnProperty(t)?Kh(Xh[t]):t==="transparent"?new ye(NaN,NaN,NaN,0):null}function Kh(t){return new ye(t>>16&255,t>>8&255,t&255,1)}function xa(t,e,n,r){return r<=0&&(t=e=n=NaN),new ye(t,e,n,r)}function tu(t){return t instanceof Jt||(t=Pn(t)),t?(t=t.rgb(),new ye(t.r,t.g,t.b,t.opacity)):new ye}function wa(t,e,n,r){return arguments.length===1?tu(t):new ye(t,e,n,r??1)}function ye(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}Er(ye,wa,Bi(Jt,{brighter(t){return t=t==null?Dr:Math.pow(Dr,t),new ye(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Fn:Math.pow(Fn,t),new ye(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ye(zn(this.r),zn(this.g),zn(this.b),Ca(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:Jh,formatHex:Jh,formatHex8:aw,formatRgb:$h,toString:$h}));function Jh(){return`#${Rn(this.r)}${Rn(this.g)}${Rn(this.b)}`}function aw(){return`#${Rn(this.r)}${Rn(this.g)}${Rn(this.b)}${Rn((isNaN(this.opacity)?1:this.opacity)*255)}`}function $h(){const t=Ca(this.opacity);return`${t===1?"rgb(":"rgba("}${zn(this.r)}, ${zn(this.g)}, ${zn(this.b)}${t===1?")":`, ${t})`}`}function Ca(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function zn(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Rn(t){return t=zn(t),(t<16?"0":"")+t.toString(16)}function e0(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new nt(t,e,n,r)}function t0(t){if(t instanceof nt)return new nt(t.h,t.s,t.l,t.opacity);if(t instanceof Jt||(t=Pn(t)),!t)return new nt;if(t instanceof nt)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),a=NaN,s=o-i,c=(o+i)/2;return s?(e===o?a=(n-r)/s+(n<r)*6:n===o?a=(r-e)/s+2:a=(e-n)/s+4,s/=c<.5?o+i:2-o-i,a*=60):s=c>0&&c<1?0:a,new nt(a,s,c,t.opacity)}function nu(t,e,n,r){return arguments.length===1?t0(t):new nt(t,e,n,r??1)}function nt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Er(nt,nu,Bi(Jt,{brighter(t){return t=t==null?Dr:Math.pow(Dr,t),new nt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Fn:Math.pow(Fn,t),new nt(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new ye(ru(t>=240?t-240:t+120,i,r),ru(t,i,r),ru(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new nt(n0(this.h),Sa(this.s),Sa(this.l),Ca(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(){const t=Ca(this.opacity);return`${t===1?"hsl(":"hsla("}${n0(this.h)}, ${Sa(this.s)*100}%, ${Sa(this.l)*100}%${t===1?")":`, ${t})`}`}}));function n0(t){return t=(t||0)%360,t<0?t+360:t}function Sa(t){return Math.max(0,Math.min(1,t||0))}function ru(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const r0=Math.PI/180,i0=180/Math.PI,Ea=18,o0=.96422,a0=1,s0=.82521,c0=4/29,Tr=6/29,u0=3*Tr*Tr,sw=Tr*Tr*Tr;function l0(t){if(t instanceof dt)return new dt(t.l,t.a,t.b,t.opacity);if(t instanceof Tt)return f0(t);t instanceof ye||(t=tu(t));var e=cu(t.r),n=cu(t.g),r=cu(t.b),i=ou((.2225045*e+.7168786*n+.0606169*r)/a0),o,a;return e===n&&n===r?o=a=i:(o=ou((.4360747*e+.3850649*n+.1430804*r)/o0),a=ou((.0139322*e+.0971045*n+.7141733*r)/s0)),new dt(116*i-16,500*(o-i),200*(i-a),t.opacity)}function iu(t,e,n,r){return arguments.length===1?l0(t):new dt(t,e,n,r??1)}function dt(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}Er(dt,iu,Bi(Jt,{brighter(t){return new dt(this.l+Ea*(t??1),this.a,this.b,this.opacity)},darker(t){return new dt(this.l-Ea*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=o0*au(e),t=a0*au(t),n=s0*au(n),new ye(su(3.1338561*e-1.6168667*t-.4906146*n),su(-.9787684*e+1.9161415*t+.033454*n),su(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function ou(t){return t>sw?Math.pow(t,1/3):t/u0+c0}function au(t){return t>Tr?t*t*t:u0*(t-c0)}function su(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function cu(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function cw(t){if(t instanceof Tt)return new Tt(t.h,t.c,t.l,t.opacity);if(t instanceof dt||(t=l0(t)),t.a===0&&t.b===0)return new Tt(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*i0;return new Tt(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function uu(t,e,n,r){return arguments.length===1?cw(t):new Tt(t,e,n,r??1)}function Tt(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function f0(t){if(isNaN(t.h))return new dt(t.l,0,0,t.opacity);var e=t.h*r0;return new dt(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}Er(Tt,uu,Bi(Jt,{brighter(t){return new Tt(this.h,this.c,this.l+Ea*(t??1),this.opacity)},darker(t){return new Tt(this.h,this.c,this.l-Ea*(t??1),this.opacity)},rgb(){return f0(this).rgb()}}));var d0=-.14861,lu=1.78277,fu=-.29227,Da=-.90649,Fi=1.97294,h0=Fi*Da,p0=Fi*lu,m0=lu*fu-Da*d0;function uw(t){if(t instanceof jn)return new jn(t.h,t.s,t.l,t.opacity);t instanceof ye||(t=tu(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(m0*r+h0*e-p0*n)/(m0+h0-p0),o=r-i,a=(Fi*(n-i)-fu*o)/Da,s=Math.sqrt(a*a+o*o)/(Fi*i*(1-i)),c=s?Math.atan2(a,o)*i0-120:NaN;return new jn(c<0?c+360:c,s,i,t.opacity)}function du(t,e,n,r){return arguments.length===1?uw(t):new jn(t,e,n,r??1)}function jn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Er(jn,du,Bi(Jt,{brighter(t){return t=t==null?Dr:Math.pow(Dr,t),new jn(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Fn:Math.pow(Fn,t),new jn(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*r0,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new ye(255*(e+n*(d0*r+lu*i)),255*(e+n*(fu*r+Da*i)),255*(e+n*(Fi*r)),this.opacity)}}));function g0(t,e,n,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*n+(1+3*t+3*o-3*a)*r+a*i)/6}function y0(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,s=r<e-1?t[r+2]:2*o-i;return g0((n-r/e)*e,a,i,o,s)}}function v0(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],a=t[(r+1)%e],s=t[(r+2)%e];return g0((n-r/e)*e,i,o,a,s)}}const Ma=t=>()=>t;function b0(t,e){return function(n){return t+n*e}}function lw(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function Ta(t,e){var n=e-t;return n?b0(t,n>180||n<-180?n-360*Math.round(n/360):n):Ma(isNaN(t)?e:t)}function fw(t){return(t=+t)==1?ve:function(e,n){return n-e?lw(e,n,t):Ma(isNaN(e)?n:e)}}function ve(t,e){var n=e-t;return n?b0(t,n):Ma(isNaN(t)?e:t)}const hu=function t(e){var n=fw(e);function r(i,o){var a=n((i=wa(i)).r,(o=wa(o)).r),s=n(i.g,o.g),c=n(i.b,o.b),u=ve(i.opacity,o.opacity);return function(f){return i.r=a(f),i.g=s(f),i.b=c(f),i.opacity=u(f),i+""}}return r.gamma=t,r}(1);function A0(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),o=new Array(n),a,s;for(a=0;a<n;++a)s=wa(e[a]),r[a]=s.r||0,i[a]=s.g||0,o[a]=s.b||0;return r=t(r),i=t(i),o=t(o),s.opacity=1,function(c){return s.r=r(c),s.g=i(c),s.b=o(c),s+""}}}var dw=A0(y0),hw=A0(v0);function pu(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(o){for(i=0;i<n;++i)r[i]=t[i]*(1-o)+e[i]*o;return r}}function x0(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function pw(t,e){return(x0(e)?pu:w0)(t,e)}function w0(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),a;for(a=0;a<r;++a)i[a]=$t(t[a],e[a]);for(;a<n;++a)o[a]=e[a];return function(s){for(a=0;a<r;++a)o[a]=i[a](s);return o}}function C0(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function rt(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function S0(t,e){var n={},r={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?n[i]=$t(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var mu=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,gu=new RegExp(mu.source,"g");function mw(t){return function(){return t}}function gw(t){return function(e){return t(e)+""}}function E0(t,e){var n=mu.lastIndex=gu.lastIndex=0,r,i,o,a=-1,s=[],c=[];for(t=t+"",e=e+"";(r=mu.exec(t))&&(i=gu.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),s[a]?s[a]+=o:s[++a]=o),(r=r[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,c.push({i:a,x:rt(r,i)})),n=gu.lastIndex;return n<e.length&&(o=e.slice(n),s[a]?s[a]+=o:s[++a]=o),s.length<2?c[0]?gw(c[0].x):mw(e):(e=c.length,function(u){for(var f=0,l;f<e;++f)s[(l=c[f]).i]=l.x(u);return s.join("")})}function $t(t,e){var n=typeof e,r;return e==null||n==="boolean"?Ma(e):(n==="number"?rt:n==="string"?(r=Pn(e))?(e=r,hu):E0:e instanceof Pn?hu:e instanceof Date?C0:x0(e)?pu:Array.isArray(e)?w0:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?S0:rt)(t,e)}function yw(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function vw(t,e){var n=Ta(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function Pi(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var D0=180/Math.PI,yu={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function M0(t,e,n,r,i,o){var a,s,c;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e/=a),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r<e*n&&(t=-t,e=-e,c=-c,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*D0,skewX:Math.atan(c)*D0,scaleX:a,scaleY:s}}var Ia;function bw(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?yu:M0(e.a,e.b,e.c,e.d,e.e,e.f)}function Aw(t){return t==null||(Ia||(Ia=document.createElementNS("http://www.w3.org/2000/svg","g")),Ia.setAttribute("transform",t),!(t=Ia.transform.baseVal.consolidate()))?yu:(t=t.matrix,M0(t.a,t.b,t.c,t.d,t.e,t.f))}function T0(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function o(u,f,l,d,p,h){if(u!==l||f!==d){var m=p.push("translate(",null,e,null,n);h.push({i:m-4,x:rt(u,l)},{i:m-2,x:rt(f,d)})}else(l||d)&&p.push("translate("+l+e+d+n)}function a(u,f,l,d){u!==f?(u-f>180?f+=360:f-u>180&&(u+=360),d.push({i:l.push(i(l)+"rotate(",null,r)-2,x:rt(u,f)})):f&&l.push(i(l)+"rotate("+f+r)}function s(u,f,l,d){u!==f?d.push({i:l.push(i(l)+"skewX(",null,r)-2,x:rt(u,f)}):f&&l.push(i(l)+"skewX("+f+r)}function c(u,f,l,d,p,h){if(u!==l||f!==d){var m=p.push(i(p)+"scale(",null,",",null,")");h.push({i:m-4,x:rt(u,l)},{i:m-2,x:rt(f,d)})}else(l!==1||d!==1)&&p.push(i(p)+"scale("+l+","+d+")")}return function(u,f){var l=[],d=[];return u=t(u),f=t(f),o(u.translateX,u.translateY,f.translateX,f.translateY,l,d),a(u.rotate,f.rotate,l,d),s(u.skewX,f.skewX,l,d),c(u.scaleX,u.scaleY,f.scaleX,f.scaleY,l,d),u=f=null,function(p){for(var h=-1,m=d.length,g;++h<m;)l[(g=d[h]).i]=g.x(p);return l.join("")}}}var xw=T0(bw,"px, ","px)","deg)"),ww=T0(Aw,", ",")",")"),Cw=1e-12;function I0(t){return((t=Math.exp(t))+1/t)/2}function Sw(t){return((t=Math.exp(t))-1/t)/2}function Ew(t){return((t=Math.exp(2*t))-1)/(t+1)}const k0=function t(e,n,r){function i(o,a){var s=o[0],c=o[1],u=o[2],f=a[0],l=a[1],d=a[2],p=f-s,h=l-c,m=p*p+h*h,g,y;if(m<Cw)y=Math.log(d/u)/e,g=function(A){return[s+A*p,c+A*h,u*Math.exp(e*A*y)]};else{var b=Math.sqrt(m),w=(d*d-u*u+r*m)/(2*u*n*b),C=(d*d-u*u-r*m)/(2*d*n*b),x=Math.log(Math.sqrt(w*w+1)-w),v=Math.log(Math.sqrt(C*C+1)-C);y=(v-x)/e,g=function(A){var D=A*y,k=I0(x),O=u/(n*b)*(k*Ew(e*D+x)-Sw(x));return[s+O*p,c+O*h,u*k/I0(e*D+x)]}}return g.duration=y*1e3*e/Math.SQRT2,g}return i.rho=function(o){var a=Math.max(.001,+o),s=a*a,c=s*s;return t(a,s,c)},i}(Math.SQRT2,2,4);function N0(t){return function(e,n){var r=t((e=nu(e)).h,(n=nu(n)).h),i=ve(e.s,n.s),o=ve(e.l,n.l),a=ve(e.opacity,n.opacity);return function(s){return e.h=r(s),e.s=i(s),e.l=o(s),e.opacity=a(s),e+""}}}const Dw=N0(Ta);var Mw=N0(ve);function Tw(t,e){var n=ve((t=iu(t)).l,(e=iu(e)).l),r=ve(t.a,e.a),i=ve(t.b,e.b),o=ve(t.opacity,e.opacity);return function(a){return t.l=n(a),t.a=r(a),t.b=i(a),t.opacity=o(a),t+""}}function L0(t){return function(e,n){var r=t((e=uu(e)).h,(n=uu(n)).h),i=ve(e.c,n.c),o=ve(e.l,n.l),a=ve(e.opacity,n.opacity);return function(s){return e.h=r(s),e.c=i(s),e.l=o(s),e.opacity=a(s),e+""}}}const Iw=L0(Ta);var kw=L0(ve);function B0(t){return function e(n){n=+n;function r(i,o){var a=t((i=du(i)).h,(o=du(o)).h),s=ve(i.s,o.s),c=ve(i.l,o.l),u=ve(i.opacity,o.opacity);return function(f){return i.h=a(f),i.s=s(f),i.l=c(Math.pow(f,n)),i.opacity=u(f),i+""}}return r.gamma=e,r}(1)}const Nw=B0(Ta);var Lw=B0(ve);function vu(t,e){e===void 0&&(e=t,t=$t);for(var n=0,r=e.length-1,i=e[0],o=new Array(r<0?0:r);n<r;)o[n]=t(i,i=e[++n]);return function(a){var s=Math.max(0,Math.min(r-1,Math.floor(a*=r)));return o[s](a-s)}}function Bw(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}const Ow=Object.freeze(Object.defineProperty({__proto__:null,interpolate:$t,interpolateArray:pw,interpolateBasis:y0,interpolateBasisClosed:v0,interpolateCubehelix:Nw,interpolateCubehelixLong:Lw,interpolateDate:C0,interpolateDiscrete:yw,interpolateHcl:Iw,interpolateHclLong:kw,interpolateHsl:Dw,interpolateHslLong:Mw,interpolateHue:vw,interpolateLab:Tw,interpolateNumber:rt,interpolateNumberArray:pu,interpolateObject:S0,interpolateRgb:hu,interpolateRgbBasis:dw,interpolateRgbBasisClosed:hw,interpolateRound:Pi,interpolateString:E0,interpolateTransformCss:xw,interpolateTransformSvg:ww,interpolateZoom:k0,piecewise:vu,quantize:Bw},Symbol.toStringTag,{value:"Module"}));function Fw(t){return function(){return t}}function bu(t){return+t}var O0=[0,1];function Ne(t){return t}function Au(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Fw(isNaN(e)?NaN:.5)}function Pw(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function zw(t,e,n){var r=t[0],i=t[1],o=e[0],a=e[1];return i<r?(r=Au(i,r),o=n(a,o)):(r=Au(r,i),o=n(o,a)),function(s){return o(r(s))}}function Rw(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),a=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++a<r;)i[a]=Au(t[a],t[a+1]),o[a]=n(e[a],e[a+1]);return function(s){var c=Mn(t,s,1,r)-1;return o[c](i[c](s))}}function zi(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function ka(){var t=O0,e=O0,n=$t,r,i,o,a=Ne,s,c,u;function f(){var d=Math.min(t.length,e.length);return a!==Ne&&(a=Pw(t[0],t[d-1])),s=d>2?Rw:zw,c=u=null,l}function l(d){return d==null||isNaN(d=+d)?o:(c||(c=s(t.map(r),e,n)))(r(a(d)))}return l.invert=function(d){return a(i((u||(u=s(e,t.map(r),rt)))(d)))},l.domain=function(d){return arguments.length?(t=Array.from(d,bu),f()):t.slice()},l.range=function(d){return arguments.length?(e=Array.from(d),f()):e.slice()},l.rangeRound=function(d){return e=Array.from(d),n=Pi,f()},l.clamp=function(d){return arguments.length?(a=d?!0:Ne,f()):a!==Ne},l.interpolate=function(d){return arguments.length?(n=d,f()):n},l.unknown=function(d){return arguments.length?(o=d,l):o},function(d,p){return r=d,i=p,f()}}function F0(){return ka()(Ne,Ne)}function P0(t,e,n,r){var i=In(t,e,n),o;switch(r=Wt(r??",f"),r.type){case"s":{var a=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=sh(i,a))&&(r.precision=o),Nc(r,a)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=ch(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=ah(i))&&(r.precision=o-(r.type==="%")*2);break}}return de(r)}function Un(t){var e=t.domain;return t.ticks=function(n){var r=e();return gi(r[0],r[r.length-1],n??10)},t.tickFormat=function(n,r){var i=e();return P0(i[0],i[i.length-1],n??10,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,a=r[i],s=r[o],c,u,f=10;for(s<a&&(u=a,a=s,s=u,u=i,i=o,o=u);f-- >0;){if(u=yi(a,s,n),u===c)return r[i]=a,r[o]=s,e(r);if(u>0)a=Math.floor(a/u)*u,s=Math.ceil(s/u)*u;else if(u<0)a=Math.ceil(a*u)/u,s=Math.floor(s*u)/u;else break;c=u}return t},t}function Na(){var t=F0();return t.copy=function(){return zi(t,Na())},lt.apply(t,arguments),Un(t)}function z0(t){var e;function n(r){return r==null||isNaN(r=+r)?e:r}return n.invert=n,n.domain=n.range=function(r){return arguments.length?(t=Array.from(r,bu),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return z0(t).unknown(e)},t=arguments.length?Array.from(t,bu):[0,1],Un(n)}function R0(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],a;return o<i&&(a=n,n=r,r=a,a=i,i=o,o=a),t[n]=e.floor(i),t[r]=e.ceil(o),t}function j0(t){return Math.log(t)}function U0(t){return Math.exp(t)}function jw(t){return-Math.log(-t)}function Uw(t){return-Math.exp(-t)}function Hw(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Gw(t){return t===10?Hw:t===Math.E?Math.exp:e=>Math.pow(t,e)}function Qw(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),e=>Math.log(e)/t)}function H0(t){return(e,n)=>-t(-e,n)}function xu(t){const e=t(j0,U0),n=e.domain;let r=10,i,o;function a(){return i=Qw(r),o=Gw(r),n()[0]<0?(i=H0(i),o=H0(o),t(jw,Uw)):t(j0,U0),e}return e.base=function(s){return arguments.length?(r=+s,a()):r},e.domain=function(s){return arguments.length?(n(s),a()):n()},e.ticks=s=>{const c=n();let u=c[0],f=c[c.length-1];const l=f<u;l&&([u,f]=[f,u]);let d=i(u),p=i(f),h,m;const g=s==null?10:+s;let y=[];if(!(r%1)&&p-d<g){if(d=Math.floor(d),p=Math.ceil(p),u>0){for(;d<=p;++d)for(h=1;h<r;++h)if(m=d<0?h/o(-d):h*o(d),!(m<u)){if(m>f)break;y.push(m)}}else for(;d<=p;++d)for(h=r-1;h>=1;--h)if(m=d>0?h/o(-d):h*o(d),!(m<u)){if(m>f)break;y.push(m)}y.length*2<g&&(y=gi(u,f,g))}else y=gi(d,p,Math.min(p-d,g)).map(o);return l?y.reverse():y},e.tickFormat=(s,c)=>{if(s==null&&(s=10),c==null&&(c=r===10?"s":","),typeof c!="function"&&(!(r%1)&&(c=Wt(c)).precision==null&&(c.trim=!0),c=de(c)),s===1/0)return c;const u=Math.max(1,r*s/e.ticks().length);return f=>{let l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=u?c(f):""}},e.nice=()=>n(R0(n(),{floor:s=>o(Math.floor(i(s))),ceil:s=>o(Math.ceil(i(s)))})),e}function wu(){const t=xu(ka()).domain([1,10]);return t.copy=()=>zi(t,wu()).base(t.base()),lt.apply(t,arguments),t}function G0(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function Q0(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Cu(t){var e=1,n=t(G0(e),Q0(e));return n.constant=function(r){return arguments.length?t(G0(e=+r),Q0(e)):e},Un(n)}function V0(){var t=Cu(ka());return t.copy=function(){return zi(t,V0()).constant(t.constant())},lt.apply(t,arguments)}function Y0(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function Vw(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Yw(t){return t<0?-t*t:t*t}function Su(t){var e=t(Ne,Ne),n=1;function r(){return n===1?t(Ne,Ne):n===.5?t(Vw,Yw):t(Y0(n),Y0(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Un(e)}function Eu(){var t=Su(ka());return t.copy=function(){return zi(t,Eu()).exponent(t.exponent())},lt.apply(t,arguments),t}function _w(){return Eu.apply(null,arguments).exponent(.5)}function _0(){var t=[],e=[],n=[],r;function i(){var a=0,s=Math.max(1,e.length);for(n=new Array(s-1);++a<s;)n[a-1]=Ic(t,a/s);return o}function o(a){return a==null||isNaN(a=+a)?r:e[Mn(n,a)]}return o.invertExtent=function(a){var s=e.indexOf(a);return s<0?[NaN,NaN]:[s>0?n[s-1]:t[0],s<n.length?n[s]:t[t.length-1]]},o.domain=function(a){if(!arguments.length)return t.slice();t=[];for(let s of a)s!=null&&!isNaN(s=+s)&&t.push(s);return t.sort(Dn),i()},o.range=function(a){return arguments.length?(e=Array.from(a),i()):e.slice()},o.unknown=function(a){return arguments.length?(r=a,o):r},o.quantiles=function(){return n.slice()},o.copy=function(){return _0().domain(t).range(e).unknown(r)},lt.apply(o,arguments)}function W0(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function a(c){return c!=null&&c<=c?i[Mn(r,c,0,n)]:o}function s(){var c=-1;for(r=new Array(n);++c<n;)r[c]=((c+1)*e-(c-n)*t)/(n+1);return a}return a.domain=function(c){return arguments.length?([t,e]=c,t=+t,e=+e,s()):[t,e]},a.range=function(c){return arguments.length?(n=(i=Array.from(c)).length-1,s()):i.slice()},a.invertExtent=function(c){var u=i.indexOf(c);return u<0?[NaN,NaN]:u<1?[t,r[0]]:u>=n?[r[n-1],e]:[r[u-1],r[u]]},a.unknown=function(c){return arguments.length&&(o=c),a},a.thresholds=function(){return r.slice()},a.copy=function(){return W0().domain([t,e]).range(i).unknown(o)},lt.apply(Un(a),arguments)}function X0(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[Mn(t,o,0,r)]:n}return i.domain=function(o){return arguments.length?(t=Array.from(o),r=Math.min(t.length,e.length-1),i):t.slice()},i.range=function(o){return arguments.length?(e=Array.from(o),r=Math.min(t.length,e.length-1),i):e.slice()},i.invertExtent=function(o){var a=e.indexOf(o);return[t[a-1],t[a]]},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return X0().domain(t).range(e).unknown(n)},lt.apply(i,arguments)}function Ww(t){return new Date(t)}function Xw(t){return t instanceof Date?+t:+new Date(+t)}function Du(t,e,n,r,i,o,a,s,c,u){var f=F0(),l=f.invert,d=f.domain,p=u(".%L"),h=u(":%S"),m=u("%I:%M"),g=u("%I %p"),y=u("%a %d"),b=u("%b %d"),w=u("%B"),C=u("%Y");function x(v){return(c(v)<v?p:s(v)<v?h:a(v)<v?m:o(v)<v?g:r(v)<v?i(v)<v?y:b:n(v)<v?w:C)(v)}return f.invert=function(v){return new Date(l(v))},f.domain=function(v){return arguments.length?d(Array.from(v,Xw)):d().map(Ww)},f.ticks=function(v){var A=d();return t(A[0],A[A.length-1],v??10)},f.tickFormat=function(v,A){return A==null?x:u(A)},f.nice=function(v){var A=d();return(!v||typeof v.range!="function")&&(v=e(A[0],A[A.length-1],v??10)),v?d(R0(A,v)):f},f.copy=function(){return zi(f,Du(t,e,n,r,i,o,a,s,c,u))},f}function Zw(){return lt.apply(Du(gA,yA,Zt,ma,vi,Nn,Rc,zc,Xt,_c).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function qw(){return lt.apply(Du(pA,mA,qt,ya,bi,Bn,Hc,Uc,Xt,Wc).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function La(){var t=0,e=1,n,r,i,o,a=Ne,s=!1,c;function u(l){return l==null||isNaN(l=+l)?c:a(i===0?.5:(l=(o(l)-n)*i,s?Math.max(0,Math.min(1,l)):l))}u.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),u):[t,e]},u.clamp=function(l){return arguments.length?(s=!!l,u):s},u.interpolator=function(l){return arguments.length?(a=l,u):a};function f(l){return function(d){var p,h;return arguments.length?([p,h]=d,a=l(p,h),u):[a(0),a(1)]}}return u.range=f($t),u.rangeRound=f(Pi),u.unknown=function(l){return arguments.length?(c=l,u):c},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),u}}function en(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Mu(){var t=Un(La()(Ne));return t.copy=function(){return en(t,Mu())},Kt.apply(t,arguments)}function Z0(){var t=xu(La()).domain([1,10]);return t.copy=function(){return en(t,Z0()).base(t.base())},Kt.apply(t,arguments)}function q0(){var t=Cu(La());return t.copy=function(){return en(t,q0()).constant(t.constant())},Kt.apply(t,arguments)}function Tu(){var t=Su(La());return t.copy=function(){return en(t,Tu()).exponent(t.exponent())},Kt.apply(t,arguments)}function Kw(){return Tu.apply(null,arguments).exponent(.5)}function Ba(){var t=0,e=.5,n=1,r=1,i,o,a,s,c,u=Ne,f,l=!1,d;function p(m){return isNaN(m=+m)?d:(m=.5+((m=+f(m))-o)*(r*m<r*o?s:c),u(l?Math.max(0,Math.min(1,m)):m))}p.domain=function(m){return arguments.length?([t,e,n]=m,i=f(t=+t),o=f(e=+e),a=f(n=+n),s=i===o?0:.5/(o-i),c=o===a?0:.5/(a-o),r=o<i?-1:1,p):[t,e,n]},p.clamp=function(m){return arguments.length?(l=!!m,p):l},p.interpolator=function(m){return arguments.length?(u=m,p):u};function h(m){return function(g){var y,b,w;return arguments.length?([y,b,w]=g,u=vu(m,[y,b,w]),p):[u(0),u(.5),u(1)]}}return p.range=h($t),p.rangeRound=h(Pi),p.unknown=function(m){return arguments.length?(d=m,p):d},function(m){return f=m,i=m(t),o=m(e),a=m(n),s=i===o?0:.5/(o-i),c=o===a?0:.5/(a-o),r=o<i?-1:1,p}}function K0(){var t=Un(Ba()(Ne));return t.copy=function(){return en(t,K0())},Kt.apply(t,arguments)}function J0(){var t=xu(Ba()).domain([.1,1,10]);return t.copy=function(){return en(t,J0()).base(t.base())},Kt.apply(t,arguments)}function $0(){var t=Cu(Ba());return t.copy=function(){return en(t,$0()).constant(t.constant())},Kt.apply(t,arguments)}function Iu(){var t=Su(Ba());return t.copy=function(){return en(t,Iu()).exponent(t.exponent())},Kt.apply(t,arguments)}function Jw(){return Iu.apply(null,arguments).exponent(.5)}function ku(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const $w="identity",Ir="linear",tn="log",Ri="pow",ji="sqrt",Oa="symlog",ep="time",tp="utc",ht="sequential",kr="diverging",Nu="quantile",np="quantize",rp="threshold",Lu="ordinal",Bu="point",ip="band",Ou="bin-ordinal",he="continuous",Ui="discrete",Hi="discretizing",Xe="interpolating",op="temporal";function e4(t){return function(e){let n=e[0],r=e[1],i;return r<n&&(i=n,n=r,r=i),[t.invert(n),t.invert(r)]}}function t4(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,a,s,c,u;for(i<r&&(s=r,r=i,i=s),c=0,u=n.length;c<u;++c)n[c]>=r&&n[c]<=i&&(o<0&&(o=c),a=c);if(!(o<0))return r=t.invertExtent(n[o]),i=t.invertExtent(n[a]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function Fu(){const t=eu().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,a=!1,s=0,c=0,u=.5;delete t.unknown;function f(){const l=e().length,d=r[1]<r[0],p=r[1-d],h=ku(l,s,c);let m=r[d-0];i=(p-m)/(h||1),a&&(i=Math.floor(i)),m+=(p-m-i*(l-s))*u,o=i*(1-s),a&&(m=Math.round(m),o=Math.round(o));const g=_t(l).map(y=>m+i*y);return n(d?g.reverse():g)}return t.domain=function(l){return arguments.length?(e(l),f()):e()},t.range=function(l){return arguments.length?(r=[+l[0],+l[1]],f()):r.slice()},t.rangeRound=function(l){return r=[+l[0],+l[1]],a=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(l){return arguments.length?(a=!!l,f()):a},t.padding=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),s=c,f()):s},t.paddingInner=function(l){return arguments.length?(s=Math.max(0,Math.min(1,l)),f()):s},t.paddingOuter=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),f()):c},t.align=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.invertRange=function(l){if(l[0]==null||l[1]==null)return;const d=r[1]<r[0],p=d?n().reverse():n(),h=p.length-1;let m=+l[0],g=+l[1],y,b,w;if(!(m!==m||g!==g)&&(g<m&&(w=m,m=g,g=w),!(g<p[0]||m>r[1-d])))return y=Math.max(0,Cc(p,m)-1),b=m===g?y:Cc(p,g)-1,m-p[y]>o+1e-10&&++y,d&&(w=y,y=h-b,b=h-w),y>b?void 0:e().slice(y,b+1)},t.invert=function(l){const d=t.invertRange([l,l]);return d&&d[0]},t.copy=function(){return Fu().domain(e()).range(r).round(a).paddingInner(s).paddingOuter(c).align(u)},f()}function ap(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return ap(e())},t}function n4(){return ap(Fu().paddingInner(1))}var r4=Array.prototype.map;function i4(t){return r4.call(t,di)}const o4=Array.prototype.slice;function sp(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(Mn(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=i4(r),n):t.slice()},n.range=function(r){return arguments.length?(e=o4.call(r),n):e.slice()},n.tickFormat=function(r,i){return P0(t[0],tt(t),r??10,i)},n.copy=function(){return sp().domain(n.domain()).range(n.range())},n}const Fa={};function a4(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?e4(o):o.invertExtent?t4(o):void 0),o.type=t,o};return r.metadata=aa(vc(n)),r}function X(t,e,n){return arguments.length>1?(Fa[t]=a4(t,e,n),this):s4(t)?Fa[t]:void 0}X($w,z0),X(Ir,Na,he),X(tn,wu,[he,tn]),X(Ri,Eu,he),X(ji,_w,he),X(Oa,V0,he),X(ep,Zw,[he,op]),X(tp,qw,[he,op]),X(ht,Mu,[he,Xe]),X("".concat(ht,"-").concat(Ir),Mu,[he,Xe]),X("".concat(ht,"-").concat(tn),Z0,[he,Xe,tn]),X("".concat(ht,"-").concat(Ri),Tu,[he,Xe]),X("".concat(ht,"-").concat(ji),Kw,[he,Xe]),X("".concat(ht,"-").concat(Oa),q0,[he,Xe]),X("".concat(kr,"-").concat(Ir),K0,[he,Xe]),X("".concat(kr,"-").concat(tn),J0,[he,Xe,tn]),X("".concat(kr,"-").concat(Ri),Iu,[he,Xe]),X("".concat(kr,"-").concat(ji),Jw,[he,Xe]),X("".concat(kr,"-").concat(Oa),$0,[he,Xe]),X(Nu,_0,[Hi,Nu]),X(np,W0,Hi),X(rp,X0,Hi),X(Ou,sp,[Ui,Hi]),X(Lu,eu,Ui),X(ip,Fu,Ui),X(Bu,n4,Ui);function s4(t){return En(Fa,t)}function Gi(t,e){const n=Fa[t];return n&&n.metadata[e]}function Le(t){return Gi(t,he)}function nn(t){return Gi(t,Ui)}function Hn(t){return Gi(t,Hi)}function cp(t){return Gi(t,tn)}function Pa(t){return Gi(t,Xe)}function c4(t,e){const n=e[0],r=tt(e)-n;return function(i){return t(n+i*r)}}function za(t,e,n){return vu(up(e||"rgb",n),t)}function u4(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function up(t,e){const n=Ow[l4(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function l4(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const f4={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"},d4={category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"};function lp(t){const e=t.length/6|0,n=new Array(e);for(let r=0;r<e;)n[r]="#"+t.slice(r*6,++r*6);return n}function fp(t,e){for(const n in t)Pu(n,e(t[n]))}const dp={};fp(d4,lp),fp(f4,t=>za(lp(t)));function Pu(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(dp[t]=e,this):dp[t]}const jN="";function hp(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}/**
|
5
|
+
`)}function u(l){return l.map(f).join(t)}function f(l){return l==null?"":l instanceof Date?M2(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:a,formatBody:s,formatRows:c,formatRow:u,formatValue:f}}var T2=qd(" "),I2=T2.parseRows;function k2(t){return t}function N2(t){if(t==null)return k2;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],a=t.translate[1];return function(s,c){c||(e=n=0);var u=2,f=s.length,l=new Array(f);for(l[0]=(e+=s[0])*r+o,l[1]=(n+=s[1])*i+a;u<f;)l[u]=s[u],++u;return l}}function L2(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function B2(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return Kd(t,n)})}:Kd(t,e)}function Kd(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=Jd(t,e);return n==null&&r==null?{type:"Feature",properties:i,geometry:o}:r==null?{type:"Feature",id:n,properties:i,geometry:o}:{type:"Feature",id:n,bbox:r,properties:i,geometry:o}}function Jd(t,e){var n=N2(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var d=r[f<0?~f:f],p=0,h=d.length;p<h;++p)l.push(n(d[p],p));f<0&&L2(l,h)}function o(f){return n(f)}function a(f){for(var l=[],d=0,p=f.length;d<p;++d)i(f[d],l);return l.length<2&&l.push(l[0]),l}function s(f){for(var l=a(f);l.length<4;)l.push(l[0]);return l}function c(f){return f.map(s)}function u(f){var l=f.type,d;switch(l){case"GeometryCollection":return{type:l,geometries:f.geometries.map(u)};case"Point":d=o(f.coordinates);break;case"MultiPoint":d=f.coordinates.map(o);break;case"LineString":d=a(f.arcs);break;case"MultiLineString":d=f.arcs.map(a);break;case"Polygon":d=c(f.arcs);break;case"MultiPolygon":d=f.arcs.map(c);break;default:return null}return{type:l,coordinates:d}}return u(e)}function O2(t,e){var n={},r={},i={},o=[],a=-1;e.forEach(function(u,f){var l=t.arcs[u<0?~u:u],d;l.length<3&&!l[1][0]&&!l[1][1]&&(d=e[++a],e[a]=u,e[f]=d)}),e.forEach(function(u){var f=s(u),l=f[0],d=f[1],p,h;if(p=i[l])if(delete i[p.end],p.push(u),p.end=d,h=r[d]){delete r[h.start];var m=h===p?p:p.concat(h);r[m.start=p.start]=i[m.end=h.end]=m}else r[p.start]=i[p.end]=p;else if(p=r[d])if(delete r[p.start],p.unshift(u),p.start=l,h=i[l]){delete i[h.end];var g=h===p?p:h.concat(p);r[g.start=h.start]=i[g.end=p.end]=g}else r[p.start]=i[p.end]=p;else p=[u],r[p.start=l]=i[p.end=d]=p});function s(u){var f=t.arcs[u<0?~u:u],l=f[0],d;return t.transform?(d=[0,0],f.forEach(function(p){d[0]+=p[0],d[1]+=p[1]})):d=f[f.length-1],u<0?[d,l]:[l,d]}function c(u,f){for(var l in u){var d=u[l];delete f[d.start],delete d.start,delete d.end,d.forEach(function(p){n[p<0?~p:p]=1}),o.push(d)}}return c(i,r),c(r,i),e.forEach(function(u){n[u<0?~u:u]||o.push([u])}),o}function F2(t){return Jd(t,P2.apply(this,arguments))}function P2(t,e,n){var r,i,o;if(arguments.length>1)r=z2(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:O2(t,r)}}function z2(t,e,n){var r=[],i=[],o;function a(l){var d=l<0?~l:l;(i[d]||(i[d]=[])).push({i:l,g:o})}function s(l){l.forEach(a)}function c(l){l.forEach(s)}function u(l){l.forEach(c)}function f(l){switch(o=l,l.type){case"GeometryCollection":l.geometries.forEach(f);break;case"LineString":s(l.arcs);break;case"MultiLineString":case"Polygon":c(l.arcs);break;case"MultiPolygon":u(l.arcs);break}}return f(e),i.forEach(n==null?function(l){r.push(l[0].i)}:function(l){n(l[0].g,l[l.length-1].g)&&r.push(l[0].i)}),r}function Dn(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function R2(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function sa(t){let e,n,r;t.length!==2?(e=Dn,n=(s,c)=>Dn(t(s),c),r=(s,c)=>t(s)-c):(e=t===Dn||t===R2?t:j2,n=t,r=t);function i(s,c,u=0,f=s.length){if(u<f){if(e(c,c)!==0)return f;do{const l=u+f>>>1;n(s[l],c)<0?u=l+1:f=l}while(u<f)}return u}function o(s,c,u=0,f=s.length){if(u<f){if(e(c,c)!==0)return f;do{const l=u+f>>>1;n(s[l],c)<=0?u=l+1:f=l}while(u<f)}return u}function a(s,c,u=0,f=s.length){const l=i(s,c,u,f-1);return l>u&&r(s[l-1],c)>-r(s[l],c)?l-1:l}return{left:i,center:a,right:o}}function j2(){return 0}function $d(t){return t===null?NaN:+t}const eh=sa(Dn),Cc=eh.right;eh.left,sa($d).center;const Mn=Cc;function U2(t,e){let n=0;if(e===void 0)for(let r of t)r!=null&&(r=+r)>=r&&++n;else{let r=-1;for(let i of t)(i=e(i,++r,t))!=null&&(i=+i)>=i&&++n}return n}function ca(t,e){let n,r;if(e===void 0)for(const i of t)i!=null&&(n===void 0?i>=i&&(n=r=i):(n>i&&(n=i),r<i&&(r=i)));else{let i=-1;for(let o of t)(o=e(o,++i,t))!=null&&(n===void 0?o>=o&&(n=r=o):(n>o&&(n=o),r<o&&(r=o)))}return[n,r]}class Tn extends Map{constructor(e,n=Q2){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(const[r,i]of e)this.set(r,i)}get(e){return super.get(th(this,e))}has(e){return super.has(th(this,e))}set(e,n){return super.set(H2(this,e),n)}delete(e){return super.delete(G2(this,e))}}function th({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function H2({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function G2({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function Q2(t){return t!==null&&typeof t=="object"?t.valueOf():t}function hi(t){return t}function pi(t,...e){return Sc(t,hi,hi,e)}function V2(t,...e){return Sc(t,Array.from,hi,e)}function Y2(t,e,...n){return Sc(t,hi,e,n)}function Sc(t,e,n,r){return function i(o,a){if(a>=r.length)return n(o);const s=new Tn,c=r[a++];let u=-1;for(const f of o){const l=c(f,++u,o),d=s.get(l);d?d.push(f):s.set(l,[f])}for(const[f,l]of s)s.set(f,i(l,a));return e(s)}(t,0)}function _2(t,e){return Array.from(e,n=>t[n])}function W2(t,...e){if(typeof t[Symbol.iterator]!="function")throw new TypeError("values is not iterable");t=Array.from(t);let[n]=e;if(n&&n.length!==2||e.length>1){const r=Uint32Array.from(t,(i,o)=>o);return e.length>1?(e=e.map(i=>t.map(i)),r.sort((i,o)=>{for(const a of e){const s=Ec(a[i],a[o]);if(s)return s}})):(n=t.map(n),r.sort((i,o)=>Ec(n[i],n[o]))),_2(t,r)}return t.sort(X2(n))}function X2(t=Dn){if(t===Dn)return Ec;if(typeof t!="function")throw new TypeError("compare is not a function");return(e,n)=>{const r=t(e,n);return r||r===0?r:(t(n,n)===0)-(t(e,e)===0)}}function Ec(t,e){return(t==null||!(t>=t))-(e==null||!(e>=e))||(t<e?-1:t>e?1:0)}var Z2=Array.prototype,q2=Z2.slice;function ua(t){return()=>t}var Dc=Math.sqrt(50),Mc=Math.sqrt(10),Tc=Math.sqrt(2);function mi(t,e,n){var r,i=-1,o,a,s;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(s=gi(t,e,n))===0||!isFinite(s))return[];if(s>0){let c=Math.round(t/s),u=Math.round(e/s);for(c*s<t&&++c,u*s>e&&--u,a=new Array(o=u-c+1);++i<o;)a[i]=(c+i)*s}else{s=-s;let c=Math.round(t*s),u=Math.round(e*s);for(c/s<t&&++c,u/s>e&&--u,a=new Array(o=u-c+1);++i<o;)a[i]=(c+i)/s}return r&&a.reverse(),a}function gi(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=Dc?10:o>=Mc?5:o>=Tc?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Dc?10:o>=Mc?5:o>=Tc?2:1)}function In(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Dc?i*=10:o>=Mc?i*=5:o>=Tc&&(i*=2),e<t?-i:i}function K2(t,e,n){let r;for(;;){const i=gi(t,e,n);if(i===r||i===0||!isFinite(i))return[t,e];i>0?(t=Math.floor(t/i)*i,e=Math.ceil(e/i)*i):i<0&&(t=Math.ceil(t*i)/i,e=Math.floor(e*i)/i),r=i}}function J2(t){return Math.ceil(Math.log(U2(t))/Math.LN2)+1}function $2(){var t=hi,e=ca,n=J2;function r(i){Array.isArray(i)||(i=Array.from(i));var o,a=i.length,s,c,u=new Array(a);for(o=0;o<a;++o)u[o]=t(i[o],o,i);var f=e(u),l=f[0],d=f[1],p=n(u,l,d);if(!Array.isArray(p)){const y=d,b=+p;if(e===ca&&([l,d]=K2(l,d,b)),p=mi(l,d,b),p[0]<=l&&(c=gi(l,d,b)),p[p.length-1]>=d)if(y>=d&&e===ca){const w=gi(l,d,b);isFinite(w)&&(w>0?d=(Math.floor(d/w)+1)*w:w<0&&(d=(Math.ceil(d*-w)+1)/-w))}else p.pop()}for(var h=p.length;p[0]<=l;)p.shift(),--h;for(;p[h-1]>d;)p.pop(),--h;var m=new Array(h+1),g;for(o=0;o<=h;++o)g=m[o]=[],g.x0=o>0?p[o-1]:l,g.x1=o<h?p[o]:d;if(isFinite(c)){if(c>0)for(o=0;o<a;++o)(s=u[o])!=null&&l<=s&&s<=d&&m[Math.min(h,Math.floor((s-l)/c))].push(i[o]);else if(c<0){for(o=0;o<a;++o)if((s=u[o])!=null&&l<=s&&s<=d){const y=Math.floor((l-s)*c);m[Math.min(h,y+(p[y]<=s))].push(i[o])}}}else for(o=0;o<a;++o)(s=u[o])!=null&&l<=s&&s<=d&&m[Mn(p,s,0,h)].push(i[o]);return m}return r.value=function(i){return arguments.length?(t=typeof i=="function"?i:ua(i),r):t},r.domain=function(i){return arguments.length?(e=typeof i=="function"?i:ua([i[0],i[1]]),r):e},r.thresholds=function(i){return arguments.length?(n=typeof i=="function"?i:Array.isArray(i)?ua(q2.call(i)):ua(i),r):n},r}function Ic(t,e,n=$d){if(r=t.length){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,o=Math.floor(i),a=+n(t[o],o,t),s=+n(t[o+1],o+1,t);return a+(s-a)*(i-o)}}function _t(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((e-t)/n))|0,o=new Array(i);++r<i;)o[r]=t+r*n;return o}function la(t,e){let n=0;if(e===void 0)for(let r of t)(r=+r)&&(n+=r);else{let r=-1;for(let i of t)(i=+e(i,++r,t))&&(n+=i)}return n}function eA(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function fa(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function xr(t){return t=fa(Math.abs(t)),t?t[1]:NaN}function tA(t,e){return function(n,r){for(var i=n.length,o=[],a=0,s=t[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),o.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=t[a=(a+1)%t.length];return o.reverse().join(e)}}function nA(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var rA=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Wt(t){if(!(e=rA.exec(t)))throw new Error("invalid format: "+t);var e;return new kc({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}Wt.prototype=kc.prototype;function kc(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}kc.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 iA(t){e:for(var e=t.length,n=1,r=-1,i;n<e;++n)switch(t[n]){case".":r=i=n;break;case"0":r===0&&(r=n),i=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var nh;function oA(t,e){var n=fa(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(nh=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+fa(t,Math.max(0,e+o-1))[0]}function rh(t,e){var n=fa(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const ih={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:eA,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>rh(t*100,e),r:rh,s:oA,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function oh(t){return t}var ah=Array.prototype.map,sh=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function aA(t){var e=t.grouping===void 0||t.thousands===void 0?oh:tA(ah.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?oh:nA(ah.call(t.numerals,String)),a=t.percent===void 0?"%":t.percent+"",s=t.minus===void 0?"−":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=Wt(l);var d=l.fill,p=l.align,h=l.sign,m=l.symbol,g=l.zero,y=l.width,b=l.comma,w=l.precision,C=l.trim,x=l.type;x==="n"?(b=!0,x="g"):ih[x]||(w===void 0&&(w=12),C=!0,x="g"),(g||d==="0"&&p==="=")&&(g=!0,d="0",p="=");var v=m==="$"?n:m==="#"&&/[boxX]/.test(x)?"0"+x.toLowerCase():"",A=m==="$"?r:/[%p]/.test(x)?a:"",D=ih[x],k=/[defgprs%]/.test(x);w=w===void 0?6:/[gprs]/.test(x)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function O(T){var B=v,G=A,Q,De,xn;if(x==="c")G=D(T)+G,T="";else{T=+T;var wn=T<0||1/T<0;if(T=isNaN(T)?c:D(Math.abs(T),w),C&&(T=iA(T)),wn&&+T==0&&h!=="+"&&(wn=!1),B=(wn?h==="("?h:s:h==="-"||h==="("?"":h)+B,G=(x==="s"?sh[8+nh/3]:"")+G+(wn&&h==="("?")":""),k){for(Q=-1,De=T.length;++Q<De;)if(xn=T.charCodeAt(Q),48>xn||xn>57){G=(xn===46?i+T.slice(Q+1):T.slice(Q))+G,T=T.slice(0,Q);break}}}b&&!g&&(T=e(T,1/0));var _=B.length+T.length+G.length,Qe=_<y?new Array(y-_+1).join(d):"";switch(b&&g&&(T=e(Qe+T,Qe.length?y-G.length:1/0),Qe=""),p){case"<":T=B+T+G+Qe;break;case"=":T=B+Qe+T+G;break;case"^":T=Qe.slice(0,_=Qe.length>>1)+B+T+G+Qe.slice(_);break;default:T=Qe+B+T+G;break}return o(T)}return O.toString=function(){return l+""},O}function f(l,d){var p=u((l=Wt(l),l.type="f",l)),h=Math.max(-8,Math.min(8,Math.floor(xr(d)/3)))*3,m=Math.pow(10,-h),g=sh[8+h/3];return function(y){return p(m*y)+g}}return{format:u,formatPrefix:f}}var da,de,Nc;sA({thousands:",",grouping:[3],currency:["$",""]});function sA(t){return da=aA(t),de=da.format,Nc=da.formatPrefix,da}function ch(t){return Math.max(0,-xr(Math.abs(t)))}function uh(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(xr(e)/3)))*3-xr(Math.abs(t)))}function lh(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,xr(e)-xr(t))+1}var Lc=new Date,Bc=new Date;function me(t,e,n,r){function i(o){return t(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=function(o){return t(o=new Date(+o)),o},i.ceil=function(o){return t(o=new Date(o-1)),e(o,1),t(o),o},i.round=function(o){var a=i(o),s=i.ceil(o);return o-a<s-o?a:s},i.offset=function(o,a){return e(o=new Date(+o),a==null?1:Math.floor(a)),o},i.range=function(o,a,s){var c=[],u;if(o=i.ceil(o),s=s==null?1:Math.floor(s),!(o<a)||!(s>0))return c;do c.push(u=new Date(+o)),e(o,s),t(o);while(u<o&&o<a);return c},i.filter=function(o){return me(function(a){if(a>=a)for(;t(a),!o(a);)a.setTime(a-1)},function(a,s){if(a>=a)if(s<0)for(;++s<=0;)for(;e(a,-1),!o(a););else for(;--s>=0;)for(;e(a,1),!o(a););})},n&&(i.count=function(o,a){return Lc.setTime(+o),Bc.setTime(+a),t(Lc),t(Bc),Math.floor(n(Lc,Bc))},i.every=function(o){return o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?function(a){return r(a)%o===0}:function(a){return i.count(0,a)%o===0}):i}),i}var ha=me(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});ha.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?me(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):ha};const Oc=ha;ha.range;const Dt=1e3,We=Dt*60,Mt=We*60,kn=Mt*24,Fc=kn*7,fh=kn*30,Pc=kn*365;var dh=me(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*Dt)},function(t,e){return(e-t)/Dt},function(t){return t.getUTCSeconds()});const Xt=dh;dh.range;var hh=me(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Dt)},function(t,e){t.setTime(+t+e*We)},function(t,e){return(e-t)/We},function(t){return t.getMinutes()});const zc=hh;hh.range;var ph=me(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Dt-t.getMinutes()*We)},function(t,e){t.setTime(+t+e*Mt)},function(t,e){return(e-t)/Mt},function(t){return t.getHours()});const Rc=ph;ph.range;var mh=me(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*We)/kn,t=>t.getDate()-1);const Nn=mh;mh.range;function Ln(t){return me(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(e,n){e.setDate(e.getDate()+n*7)},function(e,n){return(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*We)/Fc})}var yi=Ln(0),pa=Ln(1),cA=Ln(2),uA=Ln(3),wr=Ln(4),lA=Ln(5),fA=Ln(6);yi.range,pa.range,cA.range,uA.range,wr.range,lA.range,fA.range;var gh=me(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12},function(t){return t.getMonth()});const ma=gh;gh.range;var jc=me(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});jc.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:me(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)})};const Zt=jc;jc.range;var yh=me(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*We)},function(t,e){return(e-t)/We},function(t){return t.getUTCMinutes()});const Uc=yh;yh.range;var vh=me(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*Mt)},function(t,e){return(e-t)/Mt},function(t){return t.getUTCHours()});const Hc=vh;vh.range;var bh=me(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/kn},function(t){return t.getUTCDate()-1});const Bn=bh;bh.range;function On(t){return me(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCDate(e.getUTCDate()+n*7)},function(e,n){return(n-e)/Fc})}var vi=On(0),ga=On(1),dA=On(2),hA=On(3),Cr=On(4),pA=On(5),mA=On(6);vi.range,ga.range,dA.range,hA.range,Cr.range,pA.range,mA.range;var Ah=me(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12},function(t){return t.getUTCMonth()});const ya=Ah;Ah.range;var Gc=me(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});Gc.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:me(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})};const qt=Gc;Gc.range;function xh(t,e,n,r,i,o){const a=[[Xt,1,Dt],[Xt,5,5*Dt],[Xt,15,15*Dt],[Xt,30,30*Dt],[o,1,We],[o,5,5*We],[o,15,15*We],[o,30,30*We],[i,1,Mt],[i,3,3*Mt],[i,6,6*Mt],[i,12,12*Mt],[r,1,kn],[r,2,2*kn],[n,1,Fc],[e,1,fh],[e,3,3*fh],[t,1,Pc]];function s(u,f,l){const d=f<u;d&&([u,f]=[f,u]);const p=l&&typeof l.range=="function"?l:c(u,f,l),h=p?p.range(u,+f+1):[];return d?h.reverse():h}function c(u,f,l){const d=Math.abs(f-u)/l,p=sa(([,,g])=>g).right(a,d);if(p===a.length)return t.every(In(u/Pc,f/Pc,l));if(p===0)return Oc.every(Math.max(In(u,f,l),1));const[h,m]=a[d/a[p-1][2]<a[p][2]/d?p-1:p];return h.every(m)}return[s,c]}const[gA,yA]=xh(qt,ya,vi,Bn,Hc,Uc),[vA,bA]=xh(Zt,ma,yi,Nn,Rc,zc),bi="year",Ai="quarter",xi="month",wi="week",Ci="date",va="day",Qc="dayofyear",Si="hours",Ei="minutes",Di="seconds",ba="milliseconds";[bi,Ai,xi,wi,Ci,va,Qc,Si,Ei,Di,ba].reduce((t,e,n)=>(t[e]=1+n,t),{});const AA={[bi]:Zt,[Ai]:ma.every(3),[xi]:ma,[wi]:yi,[Ci]:Nn,[va]:Nn,[Qc]:Nn,[Si]:Rc,[Ei]:zc,[Di]:Xt,[ba]:Oc},xA={[bi]:qt,[Ai]:ya.every(3),[xi]:ya,[wi]:vi,[Ci]:Bn,[va]:Bn,[Qc]:Bn,[Si]:Hc,[Ei]:Uc,[Di]:Xt,[ba]:Oc};function wA(t){return AA[t]}function CA(t){return xA[t]}function Vc(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Yc(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Mi(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function wh(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,s=t.months,c=t.shortMonths,u=Ti(i),f=Ii(i),l=Ti(o),d=Ii(o),p=Ti(a),h=Ii(a),m=Ti(s),g=Ii(s),y=Ti(c),b=Ii(c),w={a:wn,A:_,b:Qe,B:qo,c:null,d:Th,e:Th,f:_A,g:nx,G:ix,H:QA,I:VA,j:YA,L:Ih,m:WA,M:XA,p:Ko,q:dc,Q:Fh,s:Ph,S:ZA,u:qA,U:KA,V:JA,w:$A,W:ex,x:null,X:null,y:tx,Y:rx,Z:ox,"%":Oh},C={a:Bd,A:LN,b:BN,B:ON,c:null,d:Nh,e:Nh,f:ux,g:bx,G:xx,H:ax,I:sx,j:cx,L:Lh,m:lx,M:fx,p:FN,q:PN,Q:Fh,s:Ph,S:dx,u:hx,U:px,V:mx,w:gx,W:yx,x:null,X:null,y:vx,Y:Ax,Z:wx,"%":Oh},x={a:O,A:T,b:B,B:G,c:Q,d:Dh,e:Dh,f:jA,g:Eh,G:Sh,H:Mh,I:Mh,j:FA,L:RA,m:OA,M:PA,p:k,q:BA,Q:HA,s:GA,S:zA,u:TA,U:IA,V:kA,w:MA,W:NA,x:De,X:xn,y:Eh,Y:Sh,Z:LA,"%":UA};w.x=v(n,w),w.X=v(r,w),w.c=v(e,w),C.x=v(n,C),C.X=v(r,C),C.c=v(e,C);function v(L,H){return function(W){var M=[],Pe=-1,J=0,Ve=L.length,Ye,Ar,Yb;for(W instanceof Date||(W=new Date(+W));++Pe<Ve;)L.charCodeAt(Pe)===37&&(M.push(L.slice(J,Pe)),(Ar=Ch[Ye=L.charAt(++Pe)])!=null?Ye=L.charAt(++Pe):Ar=Ye==="e"?" ":"0",(Yb=H[Ye])&&(Ye=Yb(W,Ar)),M.push(Ye),J=Pe+1);return M.push(L.slice(J,Pe)),M.join("")}}function A(L,H){return function(W){var M=Mi(1900,void 0,1),Pe=D(M,L,W+="",0),J,Ve;if(Pe!=W.length)return null;if("Q"in M)return new Date(M.Q);if("s"in M)return new Date(M.s*1e3+("L"in M?M.L:0));if(H&&!("Z"in M)&&(M.Z=0),"p"in M&&(M.H=M.H%12+M.p*12),M.m===void 0&&(M.m="q"in M?M.q:0),"V"in M){if(M.V<1||M.V>53)return null;"w"in M||(M.w=1),"Z"in M?(J=Yc(Mi(M.y,0,1)),Ve=J.getUTCDay(),J=Ve>4||Ve===0?ga.ceil(J):ga(J),J=Bn.offset(J,(M.V-1)*7),M.y=J.getUTCFullYear(),M.m=J.getUTCMonth(),M.d=J.getUTCDate()+(M.w+6)%7):(J=Vc(Mi(M.y,0,1)),Ve=J.getDay(),J=Ve>4||Ve===0?pa.ceil(J):pa(J),J=Nn.offset(J,(M.V-1)*7),M.y=J.getFullYear(),M.m=J.getMonth(),M.d=J.getDate()+(M.w+6)%7)}else("W"in M||"U"in M)&&("w"in M||(M.w="u"in M?M.u%7:"W"in M?1:0),Ve="Z"in M?Yc(Mi(M.y,0,1)).getUTCDay():Vc(Mi(M.y,0,1)).getDay(),M.m=0,M.d="W"in M?(M.w+6)%7+M.W*7-(Ve+5)%7:M.w+M.U*7-(Ve+6)%7);return"Z"in M?(M.H+=M.Z/100|0,M.M+=M.Z%100,Yc(M)):Vc(M)}}function D(L,H,W,M){for(var Pe=0,J=H.length,Ve=W.length,Ye,Ar;Pe<J;){if(M>=Ve)return-1;if(Ye=H.charCodeAt(Pe++),Ye===37){if(Ye=H.charAt(Pe++),Ar=x[Ye in Ch?H.charAt(Pe++):Ye],!Ar||(M=Ar(L,W,M))<0)return-1}else if(Ye!=W.charCodeAt(M++))return-1}return M}function k(L,H,W){var M=u.exec(H.slice(W));return M?(L.p=f.get(M[0].toLowerCase()),W+M[0].length):-1}function O(L,H,W){var M=p.exec(H.slice(W));return M?(L.w=h.get(M[0].toLowerCase()),W+M[0].length):-1}function T(L,H,W){var M=l.exec(H.slice(W));return M?(L.w=d.get(M[0].toLowerCase()),W+M[0].length):-1}function B(L,H,W){var M=y.exec(H.slice(W));return M?(L.m=b.get(M[0].toLowerCase()),W+M[0].length):-1}function G(L,H,W){var M=m.exec(H.slice(W));return M?(L.m=g.get(M[0].toLowerCase()),W+M[0].length):-1}function Q(L,H,W){return D(L,e,H,W)}function De(L,H,W){return D(L,n,H,W)}function xn(L,H,W){return D(L,r,H,W)}function wn(L){return a[L.getDay()]}function _(L){return o[L.getDay()]}function Qe(L){return c[L.getMonth()]}function qo(L){return s[L.getMonth()]}function Ko(L){return i[+(L.getHours()>=12)]}function dc(L){return 1+~~(L.getMonth()/3)}function Bd(L){return a[L.getUTCDay()]}function LN(L){return o[L.getUTCDay()]}function BN(L){return c[L.getUTCMonth()]}function ON(L){return s[L.getUTCMonth()]}function FN(L){return i[+(L.getUTCHours()>=12)]}function PN(L){return 1+~~(L.getUTCMonth()/3)}return{format:function(L){var H=v(L+="",w);return H.toString=function(){return L},H},parse:function(L){var H=A(L+="",!1);return H.toString=function(){return L},H},utcFormat:function(L){var H=v(L+="",C);return H.toString=function(){return L},H},utcParse:function(L){var H=A(L+="",!0);return H.toString=function(){return L},H}}}var Ch={"-":"",_:" ",0:"0"},ge=/^\s*\d+/,SA=/^%/,EA=/[\\^$*+?|[\]().{}]/g;function V(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function DA(t){return t.replace(EA,"\\$&")}function Ti(t){return new RegExp("^(?:"+t.map(DA).join("|")+")","i")}function Ii(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function MA(t,e,n){var r=ge.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function TA(t,e,n){var r=ge.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function IA(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function kA(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function NA(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Sh(t,e,n){var r=ge.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Eh(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function LA(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function BA(t,e,n){var r=ge.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function OA(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Dh(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function FA(t,e,n){var r=ge.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Mh(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function PA(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function zA(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function RA(t,e,n){var r=ge.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function jA(t,e,n){var r=ge.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function UA(t,e,n){var r=SA.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function HA(t,e,n){var r=ge.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function GA(t,e,n){var r=ge.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Th(t,e){return V(t.getDate(),e,2)}function QA(t,e){return V(t.getHours(),e,2)}function VA(t,e){return V(t.getHours()%12||12,e,2)}function YA(t,e){return V(1+Nn.count(Zt(t),t),e,3)}function Ih(t,e){return V(t.getMilliseconds(),e,3)}function _A(t,e){return Ih(t,e)+"000"}function WA(t,e){return V(t.getMonth()+1,e,2)}function XA(t,e){return V(t.getMinutes(),e,2)}function ZA(t,e){return V(t.getSeconds(),e,2)}function qA(t){var e=t.getDay();return e===0?7:e}function KA(t,e){return V(yi.count(Zt(t)-1,t),e,2)}function kh(t){var e=t.getDay();return e>=4||e===0?wr(t):wr.ceil(t)}function JA(t,e){return t=kh(t),V(wr.count(Zt(t),t)+(Zt(t).getDay()===4),e,2)}function $A(t){return t.getDay()}function ex(t,e){return V(pa.count(Zt(t)-1,t),e,2)}function tx(t,e){return V(t.getFullYear()%100,e,2)}function nx(t,e){return t=kh(t),V(t.getFullYear()%100,e,2)}function rx(t,e){return V(t.getFullYear()%1e4,e,4)}function ix(t,e){var n=t.getDay();return t=n>=4||n===0?wr(t):wr.ceil(t),V(t.getFullYear()%1e4,e,4)}function ox(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+V(e/60|0,"0",2)+V(e%60,"0",2)}function Nh(t,e){return V(t.getUTCDate(),e,2)}function ax(t,e){return V(t.getUTCHours(),e,2)}function sx(t,e){return V(t.getUTCHours()%12||12,e,2)}function cx(t,e){return V(1+Bn.count(qt(t),t),e,3)}function Lh(t,e){return V(t.getUTCMilliseconds(),e,3)}function ux(t,e){return Lh(t,e)+"000"}function lx(t,e){return V(t.getUTCMonth()+1,e,2)}function fx(t,e){return V(t.getUTCMinutes(),e,2)}function dx(t,e){return V(t.getUTCSeconds(),e,2)}function hx(t){var e=t.getUTCDay();return e===0?7:e}function px(t,e){return V(vi.count(qt(t)-1,t),e,2)}function Bh(t){var e=t.getUTCDay();return e>=4||e===0?Cr(t):Cr.ceil(t)}function mx(t,e){return t=Bh(t),V(Cr.count(qt(t),t)+(qt(t).getUTCDay()===4),e,2)}function gx(t){return t.getUTCDay()}function yx(t,e){return V(ga.count(qt(t)-1,t),e,2)}function vx(t,e){return V(t.getUTCFullYear()%100,e,2)}function bx(t,e){return t=Bh(t),V(t.getUTCFullYear()%100,e,2)}function Ax(t,e){return V(t.getUTCFullYear()%1e4,e,4)}function xx(t,e){var n=t.getUTCDay();return t=n>=4||n===0?Cr(t):Cr.ceil(t),V(t.getUTCFullYear()%1e4,e,4)}function wx(){return"+0000"}function Oh(){return"%"}function Fh(t){return+t}function Ph(t){return Math.floor(+t/1e3)}var Sr,_c,zh,Wc,Rh;Cx({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 Cx(t){return Sr=wh(t),_c=Sr.format,zh=Sr.parse,Wc=Sr.utcFormat,Rh=Sr.utcParse,Sr}function ki(t){const e={};return n=>e[n]||(e[n]=t(n))}function Sx(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=Ex(r,i);const a=o<r.length?r.slice(o):"";for(;--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+a}}function Ex(t,e){let n=t.lastIndexOf("e"),r;if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}function Dx(t){const e=ki(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=Wt(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return Sx(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,a){a=Wt(a??",f");const s=In(r,i,o),c=Math.max(Math.abs(r),Math.abs(i));let u;if(a.precision==null)switch(a.type){case"s":return isNaN(u=uh(s,c))||(a.precision=u),n(a,c);case"":case"e":case"g":case"p":case"r":{isNaN(u=lh(s,c))||(a.precision=u-(a.type==="e"));break}case"f":case"%":{isNaN(u=ch(s))||(a.precision=u-(a.type==="%")*2);break}}return e(a)}}}Mx();function Mx(){return Dx({format:de,formatPrefix:Nc})}function jh(t,e,n){n=n||{},ze(n)||ae("Invalid time multi-format specifier: ".concat(n));const r=e(Di),i=e(Ei),o=e(Si),a=e(Ci),s=e(wi),c=e(xi),u=e(Ai),f=e(bi),l=t(n[ba]||".%L"),d=t(n[Di]||":%S"),p=t(n[Ei]||"%I:%M"),h=t(n[Si]||"%I %p"),m=t(n[Ci]||n[va]||"%a %d"),g=t(n[wi]||"%b %d"),y=t(n[xi]||"%B"),b=t(n[Ai]||"%B"),w=t(n[bi]||"%Y");return C=>(r(C)<C?l:i(C)<C?d:o(C)<C?p:a(C)<C?h:c(C)<C?s(C)<C?m:g:f(C)<C?u(C)<C?y:b:w)(C)}function Uh(t){const e=ki(t.format),n=ki(t.utcFormat);return{timeFormat:r=>ne(r)?e(r):jh(e,wA,r),utcFormat:r=>ne(r)?n(r):jh(n,CA,r),timeParse:ki(t.parse),utcParse:ki(t.utcParse)}}let Xc;Tx();function Tx(){return Xc=Uh({format:_c,parse:zh,utcFormat:Wc,utcParse:Rh})}function Ix(t){return Uh(wh(t))}function kx(t){return arguments.length?Xc=Ix(t):Xc}const Nx=/^(data:|([A-Za-z]+:)?\/\/)/,Lx=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,Bx=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Hh="file://";function Ox(t,e){return n=>({options:n||{},sanitize:Px,load:Fx,fileAccess:!!e,file:zx(e),http:jx(t)})}async function Fx(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function Px(t,e){e=bc({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,a;const s=Lx.test(t.replace(Bx,""));(t==null||typeof t!="string"||!s)&&ae("Sanitize failure, invalid URI: "+oa(t));const c=Nx.test(t);return(a=e.baseURL)&&!c&&(!t.startsWith("/")&&!a.endsWith("/")&&(t="/"+t),t=a+t),o=(i=t.startsWith(Hh))||e.mode==="file"||e.mode!=="http"&&!c&&n,i?t=t.slice(Hh.length):t.startsWith("//")&&(e.defaultProtocol==="file"?(t=t.slice(2),o=!0):t=(e.defaultProtocol||"http")+":"+t),Object.defineProperty(r,"localFile",{value:!!o}),r.href=t,e.target&&(r.target=e.target+""),e.rel&&(r.rel=e.rel+""),e.context==="image"&&e.crossOrigin&&(r.crossOrigin=e.crossOrigin+""),r}function zx(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):Rx}async function Rx(){ae("No file system access.")}function jx(t){return t?async function(e,n){const r=bc({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?Ie(o[i])?o[i]():o.text():ae(o.status+""+o.statusText)}:Ux}async function Ux(){ae("No HTTP fetch method available.")}const Hx=t=>t!=null&&t===t,Gx=t=>t==="true"||t==="false"||t===!0||t===!1,Qx=t=>!Number.isNaN(Date.parse(t)),Gh=t=>!Number.isNaN(+t)&&!(t instanceof Date),Vx=t=>Gh(t)&&Number.isInteger(+t),Qh={boolean:x2,integer:fi,number:fi,date:C2,string:S2,unknown:ea},Aa=[Gx,Vx,Gh,Qx],Yx=["boolean","integer","number","date"];function Vh(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=Aa.length,i=Aa.map((o,a)=>a+1);for(let o=0,a=0,s,c;o<n;++o)for(c=e?t[o][e]:t[o],s=0;s<r;++s)if(i[s]&&Hx(c)&&!Aa[s](c)&&(i[s]=0,++a,a===Aa.length))return"string";return Yx[i.reduce((o,a)=>o===0?a:o,0)-1]}function _x(t,e){return e.reduce((n,r)=>(n[r]=Vh(t,r),n),{})}function Yh(t){const e=function(n,r){const i={delimiter:t};return Zc(n,r?bc(r,i):i)};return e.responseType="text",e}function Zc(t,e){return e.header&&(t=e.header.map(oa).join(e.delimiter)+`
|
6
|
+
`+t),qd(e.delimiter).parse(t+"")}Zc.responseType="text";function Wx(t){return typeof Buffer=="function"&&Ie(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function qc(t,e){const n=e&&e.property?$o(e.property):ea;return ze(t)&&!Wx(t)?Xx(n(t),e):n(JSON.parse(t))}qc.responseType="json";function Xx(t,e){return!_e(t)&&b2(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const Zx={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function _h(t,e){let n,r,i,o;return t=qc(t,e),e&&e.feature?(n=B2,i=e.feature):e&&e.mesh?(n=F2,i=e.mesh,o=Zx[e.filter]):ae("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):ae("Invalid TopoJSON object: "+i),r&&r.features||[r]}_h.responseType="json";const Kc={dsv:Zc,csv:Yh(","),tsv:Yh(" "),json:qc,topojson:_h};function Wh(t,e){return arguments.length>1?(Kc[t]=e,this):En(Kc,t)?Kc[t]:null}function Xh(t,e,n,r){e=e||{};const i=Wh(e.type||"json");return i||ae("Unknown data format type: "+e.type),t=i(t,e),e.parse&&qx(t,e.parse,n,r),En(t,"columns")&&delete t.columns,t}function qx(t,e,n,r){if(!t.length)return;const i=kx();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),a,s,c,u,f,l;e==="auto"&&(e=_x(t,o)),o=Object.keys(e);const d=o.map(p=>{const h=e[p];let m,g;if(h&&(h.startsWith("date:")||h.startsWith("utc:")))return m=h.split(/:(.+)?/,2),g=m[1],(g[0]==="'"&&g[g.length-1]==="'"||g[0]==='"'&&g[g.length-1]==='"')&&(g=g.slice(1,-1)),(m[0]==="utc"?r:n)(g);if(!Qh[h])throw Error("Illegal format pattern: "+p+":"+h);return Qh[h]});for(c=0,f=t.length,l=o.length;c<f;++c)for(a=t[c],u=0;u<l;++u)s=o[u],a[s]=d[u](a[s])}const Ni=Ox(typeof fetch<"u"&&fetch,null),Zh=1;function Jc(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,a=.5,s=0;const u=f=>(f+a-t[0])/n*r+e[0];return u.invert=f=>(f-e[0])/r*n+t[0]-a,u.domain=function(f){if(arguments.length){if(t=ca(f),n=t[1]-t[0],n<Zh){n=Zh;const l=(t[0]+t[1])/2;t[0]=l-n/2,t[1]=l+n/2}return u}else return t},u.range=function(f){return arguments.length?(e=[...f],r=e[1]-e[0],u):e},u.numberingOffset=function(f){return arguments.length?(s=f,u):s},u.padding=function(f){return arguments.length?(o=f,i=Math.min(1,f),u):i},u.paddingInner=function(f){return arguments.length?(i=Math.min(1,f),u):i},u.paddingOuter=function(f){return arguments.length?(o=f,u):o},u.align=function(f){return arguments.length?(a=Math.max(0,Math.min(1,f)),u):a},u.step=()=>r/n,u.bandwidth=()=>u.step(),u.ticks=f=>{const l=u.align(),d=u.numberingOffset();return mi(t[0]-l+d,t[1]-l+d,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(p=>p-s)},u.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const p=In(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?de(","):de(".3s");return h=>p(h+s)},u.copy=()=>Jc().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(s),u}function Kx(){const t=Jc().numberingOffset(1);let e;t.genome=function(r){return arguments.length?(e=r,t):e},t.ticks=r=>{if(!e)return[];const i=t.domain(),o=t.numberingOffset(),[a,s]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(f=>e.toChromosome(f)),c=Math.max(1,In(i[0],i[1],r)),u=[];for(let f=a.index;f<=s.index;f++){const l=e.chromosomes[f],d=Math.max(l.continuousStart+c,i[0]-(i[0]-l.continuousStart)%c),p=Math.min(l.continuousEnd-c/4,i[1]+1);for(let h=d;h<=p;h+=c){const m=h-o;m>=i[0]&&m<i[1]&&u.push(m)}}return u},t.tickFormat=(r,i)=>{if(!e)return;if(i)throw new Error("Locus scale's tickFormat does not support a specifier!");const o=t.domain(),a=o[1]-o[0],s=t.numberingOffset(),u=In(o[0],o[1],Math.min(r,Math.ceil(a)))<1e6?de(","):de(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>u(f(l)+s)};const n=t.copy;return t.copy=()=>n().genome(e),t}function Jx(t){return t.type=="locus"}function lt(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function Kt(t,e){switch(arguments.length){case 0:break;case 1:{typeof t=="function"?this.interpolator(t):this.range(t);break}default:{this.domain(t),typeof e=="function"?this.interpolator(e):this.range(e);break}}return this}const $c=Symbol("implicit");function eu(){var t=new Tn,e=[],n=[],r=$c;function i(o){let a=t.get(o);if(a===void 0){if(r!==$c)return r;t.set(o,a=e.push(o)-1)}return n[a%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new Tn;for(const a of o)t.has(a)||t.set(a,e.push(a)-1);return i},i.range=function(o){return arguments.length?(n=Array.from(o),i):n.slice()},i.unknown=function(o){return arguments.length?(r=o,i):r},i.copy=function(){return eu(e,n).unknown(r)},lt.apply(i,arguments),i}function Er(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Li(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Jt(){}var Fn=.7,Dr=1/Fn,Mr="\\s*([+-]?\\d+)\\s*",Bi="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",ft="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",$x=/^#([0-9a-f]{3,8})$/,ew=new RegExp(`^rgb\\(${Mr},${Mr},${Mr}\\)$`),tw=new RegExp(`^rgb\\(${ft},${ft},${ft}\\)$`),nw=new RegExp(`^rgba\\(${Mr},${Mr},${Mr},${Bi}\\)$`),rw=new RegExp(`^rgba\\(${ft},${ft},${ft},${Bi}\\)$`),iw=new RegExp(`^hsl\\(${Bi},${ft},${ft}\\)$`),ow=new RegExp(`^hsla\\(${Bi},${ft},${ft},${Bi}\\)$`),qh={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};Er(Jt,Pn,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Kh,formatHex:Kh,formatHex8:aw,formatHsl:sw,formatRgb:Jh,toString:Jh});function Kh(){return this.rgb().formatHex()}function aw(){return this.rgb().formatHex8()}function sw(){return r0(this).formatHsl()}function Jh(){return this.rgb().formatRgb()}function Pn(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=$x.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?$h(e):n===3?new ye(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?xa(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?xa(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=ew.exec(t))?new ye(e[1],e[2],e[3],1):(e=tw.exec(t))?new ye(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=nw.exec(t))?xa(e[1],e[2],e[3],e[4]):(e=rw.exec(t))?xa(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=iw.exec(t))?n0(e[1],e[2]/100,e[3]/100,1):(e=ow.exec(t))?n0(e[1],e[2]/100,e[3]/100,e[4]):qh.hasOwnProperty(t)?$h(qh[t]):t==="transparent"?new ye(NaN,NaN,NaN,0):null}function $h(t){return new ye(t>>16&255,t>>8&255,t&255,1)}function xa(t,e,n,r){return r<=0&&(t=e=n=NaN),new ye(t,e,n,r)}function tu(t){return t instanceof Jt||(t=Pn(t)),t?(t=t.rgb(),new ye(t.r,t.g,t.b,t.opacity)):new ye}function wa(t,e,n,r){return arguments.length===1?tu(t):new ye(t,e,n,r??1)}function ye(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}Er(ye,wa,Li(Jt,{brighter(t){return t=t==null?Dr:Math.pow(Dr,t),new ye(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Fn:Math.pow(Fn,t),new ye(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ye(zn(this.r),zn(this.g),zn(this.b),Ca(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:e0,formatHex:e0,formatHex8:cw,formatRgb:t0,toString:t0}));function e0(){return`#${Rn(this.r)}${Rn(this.g)}${Rn(this.b)}`}function cw(){return`#${Rn(this.r)}${Rn(this.g)}${Rn(this.b)}${Rn((isNaN(this.opacity)?1:this.opacity)*255)}`}function t0(){const t=Ca(this.opacity);return`${t===1?"rgb(":"rgba("}${zn(this.r)}, ${zn(this.g)}, ${zn(this.b)}${t===1?")":`, ${t})`}`}function Ca(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function zn(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Rn(t){return t=zn(t),(t<16?"0":"")+t.toString(16)}function n0(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new nt(t,e,n,r)}function r0(t){if(t instanceof nt)return new nt(t.h,t.s,t.l,t.opacity);if(t instanceof Jt||(t=Pn(t)),!t)return new nt;if(t instanceof nt)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),a=NaN,s=o-i,c=(o+i)/2;return s?(e===o?a=(n-r)/s+(n<r)*6:n===o?a=(r-e)/s+2:a=(e-n)/s+4,s/=c<.5?o+i:2-o-i,a*=60):s=c>0&&c<1?0:a,new nt(a,s,c,t.opacity)}function nu(t,e,n,r){return arguments.length===1?r0(t):new nt(t,e,n,r??1)}function nt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Er(nt,nu,Li(Jt,{brighter(t){return t=t==null?Dr:Math.pow(Dr,t),new nt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Fn:Math.pow(Fn,t),new nt(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new ye(ru(t>=240?t-240:t+120,i,r),ru(t,i,r),ru(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new nt(i0(this.h),Sa(this.s),Sa(this.l),Ca(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(){const t=Ca(this.opacity);return`${t===1?"hsl(":"hsla("}${i0(this.h)}, ${Sa(this.s)*100}%, ${Sa(this.l)*100}%${t===1?")":`, ${t})`}`}}));function i0(t){return t=(t||0)%360,t<0?t+360:t}function Sa(t){return Math.max(0,Math.min(1,t||0))}function ru(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const o0=Math.PI/180,a0=180/Math.PI,Ea=18,s0=.96422,c0=1,u0=.82521,l0=4/29,Tr=6/29,f0=3*Tr*Tr,uw=Tr*Tr*Tr;function d0(t){if(t instanceof dt)return new dt(t.l,t.a,t.b,t.opacity);if(t instanceof Tt)return h0(t);t instanceof ye||(t=tu(t));var e=cu(t.r),n=cu(t.g),r=cu(t.b),i=ou((.2225045*e+.7168786*n+.0606169*r)/c0),o,a;return e===n&&n===r?o=a=i:(o=ou((.4360747*e+.3850649*n+.1430804*r)/s0),a=ou((.0139322*e+.0971045*n+.7141733*r)/u0)),new dt(116*i-16,500*(o-i),200*(i-a),t.opacity)}function iu(t,e,n,r){return arguments.length===1?d0(t):new dt(t,e,n,r??1)}function dt(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}Er(dt,iu,Li(Jt,{brighter(t){return new dt(this.l+Ea*(t??1),this.a,this.b,this.opacity)},darker(t){return new dt(this.l-Ea*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=s0*au(e),t=c0*au(t),n=u0*au(n),new ye(su(3.1338561*e-1.6168667*t-.4906146*n),su(-.9787684*e+1.9161415*t+.033454*n),su(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function ou(t){return t>uw?Math.pow(t,1/3):t/f0+l0}function au(t){return t>Tr?t*t*t:f0*(t-l0)}function su(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function cu(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function lw(t){if(t instanceof Tt)return new Tt(t.h,t.c,t.l,t.opacity);if(t instanceof dt||(t=d0(t)),t.a===0&&t.b===0)return new Tt(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*a0;return new Tt(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function uu(t,e,n,r){return arguments.length===1?lw(t):new Tt(t,e,n,r??1)}function Tt(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function h0(t){if(isNaN(t.h))return new dt(t.l,0,0,t.opacity);var e=t.h*o0;return new dt(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}Er(Tt,uu,Li(Jt,{brighter(t){return new Tt(this.h,this.c,this.l+Ea*(t??1),this.opacity)},darker(t){return new Tt(this.h,this.c,this.l-Ea*(t??1),this.opacity)},rgb(){return h0(this).rgb()}}));var p0=-.14861,lu=1.78277,fu=-.29227,Da=-.90649,Oi=1.97294,m0=Oi*Da,g0=Oi*lu,y0=lu*fu-Da*p0;function fw(t){if(t instanceof jn)return new jn(t.h,t.s,t.l,t.opacity);t instanceof ye||(t=tu(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(y0*r+m0*e-g0*n)/(y0+m0-g0),o=r-i,a=(Oi*(n-i)-fu*o)/Da,s=Math.sqrt(a*a+o*o)/(Oi*i*(1-i)),c=s?Math.atan2(a,o)*a0-120:NaN;return new jn(c<0?c+360:c,s,i,t.opacity)}function du(t,e,n,r){return arguments.length===1?fw(t):new jn(t,e,n,r??1)}function jn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Er(jn,du,Li(Jt,{brighter(t){return t=t==null?Dr:Math.pow(Dr,t),new jn(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Fn:Math.pow(Fn,t),new jn(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*o0,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new ye(255*(e+n*(p0*r+lu*i)),255*(e+n*(fu*r+Da*i)),255*(e+n*(Oi*r)),this.opacity)}}));function v0(t,e,n,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*n+(1+3*t+3*o-3*a)*r+a*i)/6}function b0(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,s=r<e-1?t[r+2]:2*o-i;return v0((n-r/e)*e,a,i,o,s)}}function A0(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],a=t[(r+1)%e],s=t[(r+2)%e];return v0((n-r/e)*e,i,o,a,s)}}const Ma=t=>()=>t;function x0(t,e){return function(n){return t+n*e}}function dw(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function Ta(t,e){var n=e-t;return n?x0(t,n>180||n<-180?n-360*Math.round(n/360):n):Ma(isNaN(t)?e:t)}function hw(t){return(t=+t)==1?ve:function(e,n){return n-e?dw(e,n,t):Ma(isNaN(e)?n:e)}}function ve(t,e){var n=e-t;return n?x0(t,n):Ma(isNaN(t)?e:t)}const hu=function t(e){var n=hw(e);function r(i,o){var a=n((i=wa(i)).r,(o=wa(o)).r),s=n(i.g,o.g),c=n(i.b,o.b),u=ve(i.opacity,o.opacity);return function(f){return i.r=a(f),i.g=s(f),i.b=c(f),i.opacity=u(f),i+""}}return r.gamma=t,r}(1);function w0(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),o=new Array(n),a,s;for(a=0;a<n;++a)s=wa(e[a]),r[a]=s.r||0,i[a]=s.g||0,o[a]=s.b||0;return r=t(r),i=t(i),o=t(o),s.opacity=1,function(c){return s.r=r(c),s.g=i(c),s.b=o(c),s+""}}}var pw=w0(b0),mw=w0(A0);function pu(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),i;return function(o){for(i=0;i<n;++i)r[i]=t[i]*(1-o)+e[i]*o;return r}}function C0(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function gw(t,e){return(C0(e)?pu:S0)(t,e)}function S0(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),a;for(a=0;a<r;++a)i[a]=$t(t[a],e[a]);for(;a<n;++a)o[a]=e[a];return function(s){for(a=0;a<r;++a)o[a]=i[a](s);return o}}function E0(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function rt(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function D0(t,e){var n={},r={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?n[i]=$t(t[i],e[i]):r[i]=e[i];return function(o){for(i in n)r[i]=n[i](o);return r}}var mu=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,gu=new RegExp(mu.source,"g");function yw(t){return function(){return t}}function vw(t){return function(e){return t(e)+""}}function M0(t,e){var n=mu.lastIndex=gu.lastIndex=0,r,i,o,a=-1,s=[],c=[];for(t=t+"",e=e+"";(r=mu.exec(t))&&(i=gu.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),s[a]?s[a]+=o:s[++a]=o),(r=r[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,c.push({i:a,x:rt(r,i)})),n=gu.lastIndex;return n<e.length&&(o=e.slice(n),s[a]?s[a]+=o:s[++a]=o),s.length<2?c[0]?vw(c[0].x):yw(e):(e=c.length,function(u){for(var f=0,l;f<e;++f)s[(l=c[f]).i]=l.x(u);return s.join("")})}function $t(t,e){var n=typeof e,r;return e==null||n==="boolean"?Ma(e):(n==="number"?rt:n==="string"?(r=Pn(e))?(e=r,hu):M0:e instanceof Pn?hu:e instanceof Date?E0:C0(e)?pu:Array.isArray(e)?S0:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?D0:rt)(t,e)}function bw(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function Aw(t,e){var n=Ta(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function Fi(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var T0=180/Math.PI,yu={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function I0(t,e,n,r,i,o){var a,s,c;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e/=a),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r<e*n&&(t=-t,e=-e,c=-c,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*T0,skewX:Math.atan(c)*T0,scaleX:a,scaleY:s}}var Ia;function xw(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?yu:I0(e.a,e.b,e.c,e.d,e.e,e.f)}function ww(t){return t==null||(Ia||(Ia=document.createElementNS("http://www.w3.org/2000/svg","g")),Ia.setAttribute("transform",t),!(t=Ia.transform.baseVal.consolidate()))?yu:(t=t.matrix,I0(t.a,t.b,t.c,t.d,t.e,t.f))}function k0(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function o(u,f,l,d,p,h){if(u!==l||f!==d){var m=p.push("translate(",null,e,null,n);h.push({i:m-4,x:rt(u,l)},{i:m-2,x:rt(f,d)})}else(l||d)&&p.push("translate("+l+e+d+n)}function a(u,f,l,d){u!==f?(u-f>180?f+=360:f-u>180&&(u+=360),d.push({i:l.push(i(l)+"rotate(",null,r)-2,x:rt(u,f)})):f&&l.push(i(l)+"rotate("+f+r)}function s(u,f,l,d){u!==f?d.push({i:l.push(i(l)+"skewX(",null,r)-2,x:rt(u,f)}):f&&l.push(i(l)+"skewX("+f+r)}function c(u,f,l,d,p,h){if(u!==l||f!==d){var m=p.push(i(p)+"scale(",null,",",null,")");h.push({i:m-4,x:rt(u,l)},{i:m-2,x:rt(f,d)})}else(l!==1||d!==1)&&p.push(i(p)+"scale("+l+","+d+")")}return function(u,f){var l=[],d=[];return u=t(u),f=t(f),o(u.translateX,u.translateY,f.translateX,f.translateY,l,d),a(u.rotate,f.rotate,l,d),s(u.skewX,f.skewX,l,d),c(u.scaleX,u.scaleY,f.scaleX,f.scaleY,l,d),u=f=null,function(p){for(var h=-1,m=d.length,g;++h<m;)l[(g=d[h]).i]=g.x(p);return l.join("")}}}var Cw=k0(xw,"px, ","px)","deg)"),Sw=k0(ww,", ",")",")"),Ew=1e-12;function N0(t){return((t=Math.exp(t))+1/t)/2}function Dw(t){return((t=Math.exp(t))-1/t)/2}function Mw(t){return((t=Math.exp(2*t))-1)/(t+1)}const L0=function t(e,n,r){function i(o,a){var s=o[0],c=o[1],u=o[2],f=a[0],l=a[1],d=a[2],p=f-s,h=l-c,m=p*p+h*h,g,y;if(m<Ew)y=Math.log(d/u)/e,g=function(A){return[s+A*p,c+A*h,u*Math.exp(e*A*y)]};else{var b=Math.sqrt(m),w=(d*d-u*u+r*m)/(2*u*n*b),C=(d*d-u*u-r*m)/(2*d*n*b),x=Math.log(Math.sqrt(w*w+1)-w),v=Math.log(Math.sqrt(C*C+1)-C);y=(v-x)/e,g=function(A){var D=A*y,k=N0(x),O=u/(n*b)*(k*Mw(e*D+x)-Dw(x));return[s+O*p,c+O*h,u*k/N0(e*D+x)]}}return g.duration=y*1e3*e/Math.SQRT2,g}return i.rho=function(o){var a=Math.max(.001,+o),s=a*a,c=s*s;return t(a,s,c)},i}(Math.SQRT2,2,4);function B0(t){return function(e,n){var r=t((e=nu(e)).h,(n=nu(n)).h),i=ve(e.s,n.s),o=ve(e.l,n.l),a=ve(e.opacity,n.opacity);return function(s){return e.h=r(s),e.s=i(s),e.l=o(s),e.opacity=a(s),e+""}}}const Tw=B0(Ta);var Iw=B0(ve);function kw(t,e){var n=ve((t=iu(t)).l,(e=iu(e)).l),r=ve(t.a,e.a),i=ve(t.b,e.b),o=ve(t.opacity,e.opacity);return function(a){return t.l=n(a),t.a=r(a),t.b=i(a),t.opacity=o(a),t+""}}function O0(t){return function(e,n){var r=t((e=uu(e)).h,(n=uu(n)).h),i=ve(e.c,n.c),o=ve(e.l,n.l),a=ve(e.opacity,n.opacity);return function(s){return e.h=r(s),e.c=i(s),e.l=o(s),e.opacity=a(s),e+""}}}const Nw=O0(Ta);var Lw=O0(ve);function F0(t){return function e(n){n=+n;function r(i,o){var a=t((i=du(i)).h,(o=du(o)).h),s=ve(i.s,o.s),c=ve(i.l,o.l),u=ve(i.opacity,o.opacity);return function(f){return i.h=a(f),i.s=s(f),i.l=c(Math.pow(f,n)),i.opacity=u(f),i+""}}return r.gamma=e,r}(1)}const Bw=F0(Ta);var Ow=F0(ve);function vu(t,e){e===void 0&&(e=t,t=$t);for(var n=0,r=e.length-1,i=e[0],o=new Array(r<0?0:r);n<r;)o[n]=t(i,i=e[++n]);return function(a){var s=Math.max(0,Math.min(r-1,Math.floor(a*=r)));return o[s](a-s)}}function Fw(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}const Pw=Object.freeze(Object.defineProperty({__proto__:null,interpolate:$t,interpolateArray:gw,interpolateBasis:b0,interpolateBasisClosed:A0,interpolateCubehelix:Bw,interpolateCubehelixLong:Ow,interpolateDate:E0,interpolateDiscrete:bw,interpolateHcl:Nw,interpolateHclLong:Lw,interpolateHsl:Tw,interpolateHslLong:Iw,interpolateHue:Aw,interpolateLab:kw,interpolateNumber:rt,interpolateNumberArray:pu,interpolateObject:D0,interpolateRgb:hu,interpolateRgbBasis:pw,interpolateRgbBasisClosed:mw,interpolateRound:Fi,interpolateString:M0,interpolateTransformCss:Cw,interpolateTransformSvg:Sw,interpolateZoom:L0,piecewise:vu,quantize:Fw},Symbol.toStringTag,{value:"Module"}));function zw(t){return function(){return t}}function bu(t){return+t}var P0=[0,1];function Ne(t){return t}function Au(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:zw(isNaN(e)?NaN:.5)}function Rw(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function jw(t,e,n){var r=t[0],i=t[1],o=e[0],a=e[1];return i<r?(r=Au(i,r),o=n(a,o)):(r=Au(r,i),o=n(o,a)),function(s){return o(r(s))}}function Uw(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),a=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++a<r;)i[a]=Au(t[a],t[a+1]),o[a]=n(e[a],e[a+1]);return function(s){var c=Mn(t,s,1,r)-1;return o[c](i[c](s))}}function Pi(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function ka(){var t=P0,e=P0,n=$t,r,i,o,a=Ne,s,c,u;function f(){var d=Math.min(t.length,e.length);return a!==Ne&&(a=Rw(t[0],t[d-1])),s=d>2?Uw:jw,c=u=null,l}function l(d){return d==null||isNaN(d=+d)?o:(c||(c=s(t.map(r),e,n)))(r(a(d)))}return l.invert=function(d){return a(i((u||(u=s(e,t.map(r),rt)))(d)))},l.domain=function(d){return arguments.length?(t=Array.from(d,bu),f()):t.slice()},l.range=function(d){return arguments.length?(e=Array.from(d),f()):e.slice()},l.rangeRound=function(d){return e=Array.from(d),n=Fi,f()},l.clamp=function(d){return arguments.length?(a=d?!0:Ne,f()):a!==Ne},l.interpolate=function(d){return arguments.length?(n=d,f()):n},l.unknown=function(d){return arguments.length?(o=d,l):o},function(d,p){return r=d,i=p,f()}}function z0(){return ka()(Ne,Ne)}function R0(t,e,n,r){var i=In(t,e,n),o;switch(r=Wt(r??",f"),r.type){case"s":{var a=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=uh(i,a))&&(r.precision=o),Nc(r,a)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=lh(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=ch(i))&&(r.precision=o-(r.type==="%")*2);break}}return de(r)}function Un(t){var e=t.domain;return t.ticks=function(n){var r=e();return mi(r[0],r[r.length-1],n??10)},t.tickFormat=function(n,r){var i=e();return R0(i[0],i[i.length-1],n??10,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,a=r[i],s=r[o],c,u,f=10;for(s<a&&(u=a,a=s,s=u,u=i,i=o,o=u);f-- >0;){if(u=gi(a,s,n),u===c)return r[i]=a,r[o]=s,e(r);if(u>0)a=Math.floor(a/u)*u,s=Math.ceil(s/u)*u;else if(u<0)a=Math.ceil(a*u)/u,s=Math.floor(s*u)/u;else break;c=u}return t},t}function Na(){var t=z0();return t.copy=function(){return Pi(t,Na())},lt.apply(t,arguments),Un(t)}function j0(t){var e;function n(r){return r==null||isNaN(r=+r)?e:r}return n.invert=n,n.domain=n.range=function(r){return arguments.length?(t=Array.from(r,bu),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return j0(t).unknown(e)},t=arguments.length?Array.from(t,bu):[0,1],Un(n)}function U0(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],a;return o<i&&(a=n,n=r,r=a,a=i,i=o,o=a),t[n]=e.floor(i),t[r]=e.ceil(o),t}function H0(t){return Math.log(t)}function G0(t){return Math.exp(t)}function Hw(t){return-Math.log(-t)}function Gw(t){return-Math.exp(-t)}function Qw(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Vw(t){return t===10?Qw:t===Math.E?Math.exp:e=>Math.pow(t,e)}function Yw(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),e=>Math.log(e)/t)}function Q0(t){return(e,n)=>-t(-e,n)}function xu(t){const e=t(H0,G0),n=e.domain;let r=10,i,o;function a(){return i=Yw(r),o=Vw(r),n()[0]<0?(i=Q0(i),o=Q0(o),t(Hw,Gw)):t(H0,G0),e}return e.base=function(s){return arguments.length?(r=+s,a()):r},e.domain=function(s){return arguments.length?(n(s),a()):n()},e.ticks=s=>{const c=n();let u=c[0],f=c[c.length-1];const l=f<u;l&&([u,f]=[f,u]);let d=i(u),p=i(f),h,m;const g=s==null?10:+s;let y=[];if(!(r%1)&&p-d<g){if(d=Math.floor(d),p=Math.ceil(p),u>0){for(;d<=p;++d)for(h=1;h<r;++h)if(m=d<0?h/o(-d):h*o(d),!(m<u)){if(m>f)break;y.push(m)}}else for(;d<=p;++d)for(h=r-1;h>=1;--h)if(m=d>0?h/o(-d):h*o(d),!(m<u)){if(m>f)break;y.push(m)}y.length*2<g&&(y=mi(u,f,g))}else y=mi(d,p,Math.min(p-d,g)).map(o);return l?y.reverse():y},e.tickFormat=(s,c)=>{if(s==null&&(s=10),c==null&&(c=r===10?"s":","),typeof c!="function"&&(!(r%1)&&(c=Wt(c)).precision==null&&(c.trim=!0),c=de(c)),s===1/0)return c;const u=Math.max(1,r*s/e.ticks().length);return f=>{let l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=u?c(f):""}},e.nice=()=>n(U0(n(),{floor:s=>o(Math.floor(i(s))),ceil:s=>o(Math.ceil(i(s)))})),e}function wu(){const t=xu(ka()).domain([1,10]);return t.copy=()=>Pi(t,wu()).base(t.base()),lt.apply(t,arguments),t}function V0(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function Y0(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Cu(t){var e=1,n=t(V0(e),Y0(e));return n.constant=function(r){return arguments.length?t(V0(e=+r),Y0(e)):e},Un(n)}function _0(){var t=Cu(ka());return t.copy=function(){return Pi(t,_0()).constant(t.constant())},lt.apply(t,arguments)}function W0(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function _w(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Ww(t){return t<0?-t*t:t*t}function Su(t){var e=t(Ne,Ne),n=1;function r(){return n===1?t(Ne,Ne):n===.5?t(_w,Ww):t(W0(n),W0(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},Un(e)}function Eu(){var t=Su(ka());return t.copy=function(){return Pi(t,Eu()).exponent(t.exponent())},lt.apply(t,arguments),t}function Xw(){return Eu.apply(null,arguments).exponent(.5)}function X0(){var t=[],e=[],n=[],r;function i(){var a=0,s=Math.max(1,e.length);for(n=new Array(s-1);++a<s;)n[a-1]=Ic(t,a/s);return o}function o(a){return a==null||isNaN(a=+a)?r:e[Mn(n,a)]}return o.invertExtent=function(a){var s=e.indexOf(a);return s<0?[NaN,NaN]:[s>0?n[s-1]:t[0],s<n.length?n[s]:t[t.length-1]]},o.domain=function(a){if(!arguments.length)return t.slice();t=[];for(let s of a)s!=null&&!isNaN(s=+s)&&t.push(s);return t.sort(Dn),i()},o.range=function(a){return arguments.length?(e=Array.from(a),i()):e.slice()},o.unknown=function(a){return arguments.length?(r=a,o):r},o.quantiles=function(){return n.slice()},o.copy=function(){return X0().domain(t).range(e).unknown(r)},lt.apply(o,arguments)}function Z0(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function a(c){return c!=null&&c<=c?i[Mn(r,c,0,n)]:o}function s(){var c=-1;for(r=new Array(n);++c<n;)r[c]=((c+1)*e-(c-n)*t)/(n+1);return a}return a.domain=function(c){return arguments.length?([t,e]=c,t=+t,e=+e,s()):[t,e]},a.range=function(c){return arguments.length?(n=(i=Array.from(c)).length-1,s()):i.slice()},a.invertExtent=function(c){var u=i.indexOf(c);return u<0?[NaN,NaN]:u<1?[t,r[0]]:u>=n?[r[n-1],e]:[r[u-1],r[u]]},a.unknown=function(c){return arguments.length&&(o=c),a},a.thresholds=function(){return r.slice()},a.copy=function(){return Z0().domain([t,e]).range(i).unknown(o)},lt.apply(Un(a),arguments)}function q0(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[Mn(t,o,0,r)]:n}return i.domain=function(o){return arguments.length?(t=Array.from(o),r=Math.min(t.length,e.length-1),i):t.slice()},i.range=function(o){return arguments.length?(e=Array.from(o),r=Math.min(t.length,e.length-1),i):e.slice()},i.invertExtent=function(o){var a=e.indexOf(o);return[t[a-1],t[a]]},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return q0().domain(t).range(e).unknown(n)},lt.apply(i,arguments)}function Zw(t){return new Date(t)}function qw(t){return t instanceof Date?+t:+new Date(+t)}function Du(t,e,n,r,i,o,a,s,c,u){var f=z0(),l=f.invert,d=f.domain,p=u(".%L"),h=u(":%S"),m=u("%I:%M"),g=u("%I %p"),y=u("%a %d"),b=u("%b %d"),w=u("%B"),C=u("%Y");function x(v){return(c(v)<v?p:s(v)<v?h:a(v)<v?m:o(v)<v?g:r(v)<v?i(v)<v?y:b:n(v)<v?w:C)(v)}return f.invert=function(v){return new Date(l(v))},f.domain=function(v){return arguments.length?d(Array.from(v,qw)):d().map(Zw)},f.ticks=function(v){var A=d();return t(A[0],A[A.length-1],v??10)},f.tickFormat=function(v,A){return A==null?x:u(A)},f.nice=function(v){var A=d();return(!v||typeof v.range!="function")&&(v=e(A[0],A[A.length-1],v??10)),v?d(U0(A,v)):f},f.copy=function(){return Pi(f,Du(t,e,n,r,i,o,a,s,c,u))},f}function Kw(){return lt.apply(Du(vA,bA,Zt,ma,yi,Nn,Rc,zc,Xt,_c).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function Jw(){return lt.apply(Du(gA,yA,qt,ya,vi,Bn,Hc,Uc,Xt,Wc).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function La(){var t=0,e=1,n,r,i,o,a=Ne,s=!1,c;function u(l){return l==null||isNaN(l=+l)?c:a(i===0?.5:(l=(o(l)-n)*i,s?Math.max(0,Math.min(1,l)):l))}u.domain=function(l){return arguments.length?([t,e]=l,n=o(t=+t),r=o(e=+e),i=n===r?0:1/(r-n),u):[t,e]},u.clamp=function(l){return arguments.length?(s=!!l,u):s},u.interpolator=function(l){return arguments.length?(a=l,u):a};function f(l){return function(d){var p,h;return arguments.length?([p,h]=d,a=l(p,h),u):[a(0),a(1)]}}return u.range=f($t),u.rangeRound=f(Fi),u.unknown=function(l){return arguments.length?(c=l,u):c},function(l){return o=l,n=l(t),r=l(e),i=n===r?0:1/(r-n),u}}function en(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Mu(){var t=Un(La()(Ne));return t.copy=function(){return en(t,Mu())},Kt.apply(t,arguments)}function K0(){var t=xu(La()).domain([1,10]);return t.copy=function(){return en(t,K0()).base(t.base())},Kt.apply(t,arguments)}function J0(){var t=Cu(La());return t.copy=function(){return en(t,J0()).constant(t.constant())},Kt.apply(t,arguments)}function Tu(){var t=Su(La());return t.copy=function(){return en(t,Tu()).exponent(t.exponent())},Kt.apply(t,arguments)}function $w(){return Tu.apply(null,arguments).exponent(.5)}function Ba(){var t=0,e=.5,n=1,r=1,i,o,a,s,c,u=Ne,f,l=!1,d;function p(m){return isNaN(m=+m)?d:(m=.5+((m=+f(m))-o)*(r*m<r*o?s:c),u(l?Math.max(0,Math.min(1,m)):m))}p.domain=function(m){return arguments.length?([t,e,n]=m,i=f(t=+t),o=f(e=+e),a=f(n=+n),s=i===o?0:.5/(o-i),c=o===a?0:.5/(a-o),r=o<i?-1:1,p):[t,e,n]},p.clamp=function(m){return arguments.length?(l=!!m,p):l},p.interpolator=function(m){return arguments.length?(u=m,p):u};function h(m){return function(g){var y,b,w;return arguments.length?([y,b,w]=g,u=vu(m,[y,b,w]),p):[u(0),u(.5),u(1)]}}return p.range=h($t),p.rangeRound=h(Fi),p.unknown=function(m){return arguments.length?(d=m,p):d},function(m){return f=m,i=m(t),o=m(e),a=m(n),s=i===o?0:.5/(o-i),c=o===a?0:.5/(a-o),r=o<i?-1:1,p}}function $0(){var t=Un(Ba()(Ne));return t.copy=function(){return en(t,$0())},Kt.apply(t,arguments)}function ep(){var t=xu(Ba()).domain([.1,1,10]);return t.copy=function(){return en(t,ep()).base(t.base())},Kt.apply(t,arguments)}function tp(){var t=Cu(Ba());return t.copy=function(){return en(t,tp()).constant(t.constant())},Kt.apply(t,arguments)}function Iu(){var t=Su(Ba());return t.copy=function(){return en(t,Iu()).exponent(t.exponent())},Kt.apply(t,arguments)}function e4(){return Iu.apply(null,arguments).exponent(.5)}function ku(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const t4="identity",Ir="linear",tn="log",zi="pow",Ri="sqrt",Oa="symlog",np="time",rp="utc",ht="sequential",kr="diverging",Nu="quantile",ip="quantize",op="threshold",Lu="ordinal",Bu="point",ap="band",Ou="bin-ordinal",he="continuous",ji="discrete",Ui="discretizing",Xe="interpolating",sp="temporal";function n4(t){return function(e){let n=e[0],r=e[1],i;return r<n&&(i=n,n=r,r=i),[t.invert(n),t.invert(r)]}}function r4(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,a,s,c,u;for(i<r&&(s=r,r=i,i=s),c=0,u=n.length;c<u;++c)n[c]>=r&&n[c]<=i&&(o<0&&(o=c),a=c);if(!(o<0))return r=t.invertExtent(n[o]),i=t.invertExtent(n[a]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function Fu(){const t=eu().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,a=!1,s=0,c=0,u=.5;delete t.unknown;function f(){const l=e().length,d=r[1]<r[0],p=r[1-d],h=ku(l,s,c);let m=r[d-0];i=(p-m)/(h||1),a&&(i=Math.floor(i)),m+=(p-m-i*(l-s))*u,o=i*(1-s),a&&(m=Math.round(m),o=Math.round(o));const g=_t(l).map(y=>m+i*y);return n(d?g.reverse():g)}return t.domain=function(l){return arguments.length?(e(l),f()):e()},t.range=function(l){return arguments.length?(r=[+l[0],+l[1]],f()):r.slice()},t.rangeRound=function(l){return r=[+l[0],+l[1]],a=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(l){return arguments.length?(a=!!l,f()):a},t.padding=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),s=c,f()):s},t.paddingInner=function(l){return arguments.length?(s=Math.max(0,Math.min(1,l)),f()):s},t.paddingOuter=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),f()):c},t.align=function(l){return arguments.length?(u=Math.max(0,Math.min(1,l)),f()):u},t.invertRange=function(l){if(l[0]==null||l[1]==null)return;const d=r[1]<r[0],p=d?n().reverse():n(),h=p.length-1;let m=+l[0],g=+l[1],y,b,w;if(!(m!==m||g!==g)&&(g<m&&(w=m,m=g,g=w),!(g<p[0]||m>r[1-d])))return y=Math.max(0,Cc(p,m)-1),b=m===g?y:Cc(p,g)-1,m-p[y]>o+1e-10&&++y,d&&(w=y,y=h-b,b=h-w),y>b?void 0:e().slice(y,b+1)},t.invert=function(l){const d=t.invertRange([l,l]);return d&&d[0]},t.copy=function(){return Fu().domain(e()).range(r).round(a).paddingInner(s).paddingOuter(c).align(u)},f()}function cp(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return cp(e())},t}function i4(){return cp(Fu().paddingInner(1))}var o4=Array.prototype.map;function a4(t){return o4.call(t,fi)}const s4=Array.prototype.slice;function up(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(Mn(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=a4(r),n):t.slice()},n.range=function(r){return arguments.length?(e=s4.call(r),n):e.slice()},n.tickFormat=function(r,i){return R0(t[0],tt(t),r??10,i)},n.copy=function(){return up().domain(n.domain()).range(n.range())},n}const Fa={};function c4(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?n4(o):o.invertExtent?r4(o):void 0),o.type=t,o};return r.metadata=aa(vc(n)),r}function X(t,e,n){return arguments.length>1?(Fa[t]=c4(t,e,n),this):u4(t)?Fa[t]:void 0}X(t4,j0),X(Ir,Na,he),X(tn,wu,[he,tn]),X(zi,Eu,he),X(Ri,Xw,he),X(Oa,_0,he),X(np,Kw,[he,sp]),X(rp,Jw,[he,sp]),X(ht,Mu,[he,Xe]),X("".concat(ht,"-").concat(Ir),Mu,[he,Xe]),X("".concat(ht,"-").concat(tn),K0,[he,Xe,tn]),X("".concat(ht,"-").concat(zi),Tu,[he,Xe]),X("".concat(ht,"-").concat(Ri),$w,[he,Xe]),X("".concat(ht,"-").concat(Oa),J0,[he,Xe]),X("".concat(kr,"-").concat(Ir),$0,[he,Xe]),X("".concat(kr,"-").concat(tn),ep,[he,Xe,tn]),X("".concat(kr,"-").concat(zi),Iu,[he,Xe]),X("".concat(kr,"-").concat(Ri),e4,[he,Xe]),X("".concat(kr,"-").concat(Oa),tp,[he,Xe]),X(Nu,X0,[Ui,Nu]),X(ip,Z0,Ui),X(op,q0,Ui),X(Ou,up,[ji,Ui]),X(Lu,eu,ji),X(ap,Fu,ji),X(Bu,i4,ji);function u4(t){return En(Fa,t)}function Hi(t,e){const n=Fa[t];return n&&n.metadata[e]}function Le(t){return Hi(t,he)}function nn(t){return Hi(t,ji)}function Hn(t){return Hi(t,Ui)}function lp(t){return Hi(t,tn)}function Pa(t){return Hi(t,Xe)}function l4(t,e){const n=e[0],r=tt(e)-n;return function(i){return t(n+i*r)}}function za(t,e,n){return vu(fp(e||"rgb",n),t)}function f4(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function fp(t,e){const n=Pw[d4(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function d4(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const h4={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"},p4={category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"};function dp(t){const e=t.length/6|0,n=new Array(e);for(let r=0;r<e;)n[r]="#"+t.slice(r*6,++r*6);return n}function hp(t,e){for(const n in t)Pu(n,e(t[n]))}const pp={};hp(p4,dp),hp(h4,t=>za(dp(t)));function Pu(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(pp[t]=e,this):pp[t]}const UN="";function mp(t,e){var n=t.getBoundingClientRect();return[e.clientX-n.left-t.clientLeft,e.clientY-n.top-t.clientTop]}/**
|
7
7
|
* @license
|
8
8
|
* Copyright 2017 Google LLC
|
9
9
|
* SPDX-License-Identifier: BSD-3-Clause
|
10
|
-
*/var zu;const Ra=window,Nr=Ra.trustedTypes,
|
10
|
+
*/var zu;const Ra=window,Nr=Ra.trustedTypes,gp=Nr?Nr.createPolicy("lit-html",{createHTML:t=>t}):void 0,It=`lit$${(Math.random()+"").slice(9)}$`,Ru="?"+It,m4=`<${Ru}>`,Lr=document,Gi=(t="")=>Lr.createComment(t),Qi=t=>t===null||typeof t!="object"&&typeof t!="function",yp=Array.isArray,vp=t=>yp(t)||typeof(t==null?void 0:t[Symbol.iterator])=="function",Vi=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,bp=/-->/g,Ap=/>/g,Gn=RegExp(`>|[
|
11
11
|
\f\r](?:([^\\s"'>=/]+)([
|
12
12
|
\f\r]*=[
|
13
13
|
\f\r]*(?:[^
|
14
|
-
\f\r"'\`<>=]|("|')|))|$)`,"g"),bp=/'/g,Ap=/"/g,xp=/^(?:script|style|textarea|title)$/i,p4=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),E=p4(1),Ae=Symbol.for("lit-noChange"),z=Symbol.for("lit-nothing"),wp=new WeakMap,Br=Lr.createTreeWalker(Lr,129,null,!1),Cp=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",a=Yi;for(let c=0;c<n;c++){const u=t[c];let f,l,d=-1,p=0;for(;p<u.length&&(a.lastIndex=p,l=a.exec(u),l!==null);)p=a.lastIndex,a===Yi?l[1]==="!--"?a=yp:l[1]!==void 0?a=vp:l[2]!==void 0?(xp.test(l[2])&&(i=RegExp("</"+l[2],"g")),a=Gn):l[3]!==void 0&&(a=Gn):a===Gn?l[0]===">"?(a=i??Yi,d=-1):l[1]===void 0?d=-2:(d=a.lastIndex-l[2].length,f=l[1],a=l[3]===void 0?Gn:l[3]==='"'?Ap:bp):a===Ap||a===bp?a=Gn:a===yp||a===vp?a=Yi:(a=Gn,i=void 0);const h=a===Gn&&t[c+1].startsWith("/>")?" ":"";o+=a===Yi?u+h4:d>=0?(r.push(f),u.slice(0,d)+"$lit$"+u.slice(d)+It+h):u+It+(d===-2?(r.push(void 0),c):h)}const s=o+(t[n]||"<?>")+(e===2?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[pp!==void 0?pp.createHTML(s):s,r]};let ju=class Yb{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,a=0;const s=e.length-1,c=this.parts,[u,f]=Cp(e,n);if(this.el=Yb.createElement(u,r),Br.currentNode=this.el.content,n===2){const l=this.el.content,d=l.firstChild;d.remove(),l.append(...d.childNodes)}for(;(i=Br.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const d of i.getAttributeNames())if(d.endsWith("$lit$")||d.startsWith(It)){const p=f[a++];if(l.push(d),p!==void 0){const h=i.getAttribute(p.toLowerCase()+"$lit$").split(It),m=/([.?@])?(.*)/.exec(p);c.push({type:1,index:o,name:m[2],strings:h,ctor:m[1]==="."?Ep:m[1]==="?"?Dp:m[1]==="@"?Mp:_i})}else c.push({type:6,index:o})}for(const d of l)i.removeAttribute(d)}if(xp.test(i.tagName)){const l=i.textContent.split(It),d=l.length-1;if(d>0){i.textContent=Nr?Nr.emptyScript:"";for(let p=0;p<d;p++)i.append(l[p],Qi()),Br.nextNode(),c.push({type:2,index:++o});i.append(l[d],Qi())}}}else if(i.nodeType===8)if(i.data===Ru)c.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(It,l+1))!==-1;)c.push({type:7,index:o}),l+=It.length-1}o++}}static createElement(e,n){const r=Lr.createElement("template");return r.innerHTML=e,r}};function Qn(t,e,n=t,r){var i,o,a,s;if(e===Ae)return e;let c=r!==void 0?(i=n._$Co)===null||i===void 0?void 0:i[r]:n._$Cl;const u=Vi(e)?void 0:e._$litDirective$;return(c==null?void 0:c.constructor)!==u&&((o=c==null?void 0:c._$AO)===null||o===void 0||o.call(c,!1),u===void 0?c=void 0:(c=new u(t),c._$AT(t,n,r)),r!==void 0?((a=(s=n)._$Co)!==null&&a!==void 0?a:s._$Co=[])[r]=c:n._$Cl=c),c!==void 0&&(e=Qn(t,c._$AS(t,e.values),c,r)),e}class Sp{constructor(e,n){this.u=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(e){var n;const{el:{content:r},parts:i}=this._$AD,o=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:Lr).importNode(r,!0);Br.currentNode=o;let a=Br.nextNode(),s=0,c=0,u=i[0];for(;u!==void 0;){if(s===u.index){let f;u.type===2?f=new ja(a,a.nextSibling,this,e):u.type===1?f=new u.ctor(a,u.name,u.strings,this,e):u.type===6&&(f=new Tp(a,this,e)),this.u.push(f),u=i[++c]}s!==(u==null?void 0:u.index)&&(a=Br.nextNode(),s++)}return o}p(e){let n=0;for(const r of this.u)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}let ja=class _b{constructor(e,n,r,i){var o;this.type=2,this._$AH=z,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cm=(o=i==null?void 0:i.isConnected)===null||o===void 0||o}get _$AU(){var e,n;return(n=(e=this._$AM)===null||e===void 0?void 0:e._$AU)!==null&&n!==void 0?n:this._$Cm}get parentNode(){let e=this._$AA.parentNode;const n=this._$AM;return n!==void 0&&e.nodeType===11&&(e=n.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,n=this){e=Qn(this,e,n),Vi(e)?e===z||e==null||e===""?(this._$AH!==z&&this._$AR(),this._$AH=z):e!==this._$AH&&e!==Ae&&this.g(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):gp(e)?this.k(e):this.g(e)}O(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}g(e){this._$AH!==z&&Vi(this._$AH)?this._$AA.nextSibling.data=e:this.T(Lr.createTextNode(e)),this._$AH=e}$(e){var n;const{values:r,_$litType$:i}=e,o=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=ju.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===o)this._$AH.p(r);else{const a=new Sp(o,this),s=a.v(this.options);a.p(r),this.T(s),this._$AH=a}}_$AC(e){let n=wp.get(e.strings);return n===void 0&&wp.set(e.strings,n=new ju(e)),n}k(e){mp(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let r,i=0;for(const o of e)i===n.length?n.push(r=new _b(this.O(Qi()),this.O(Qi()),this,this.options)):r=n[i],r._$AI(o),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,n){var r;for((r=this._$AP)===null||r===void 0||r.call(this,!1,!0,n);e&&e!==this._$AB;){const i=e.nextSibling;e.remove(),e=i}}setConnected(e){var n;this._$AM===void 0&&(this._$Cm=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}},_i=class{constructor(e,n,r,i,o){this.type=1,this._$AH=z,this._$AN=void 0,this.element=e,this.name=n,this._$AM=i,this.options=o,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=z}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,n=this,r,i){const o=this.strings;let a=!1;if(o===void 0)e=Qn(this,e,n,0),a=!Vi(e)||e!==this._$AH&&e!==Ae,a&&(this._$AH=e);else{const s=e;let c,u;for(e=o[0],c=0;c<o.length-1;c++)u=Qn(this,s[r+c],n,c),u===Ae&&(u=this._$AH[c]),a||(a=!Vi(u)||u!==this._$AH[c]),u===z?e=z:e!==z&&(e+=(u??"")+o[c+1]),this._$AH[c]=u}a&&!i&&this.j(e)}j(e){e===z?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}},Ep=class extends _i{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===z?void 0:e}};const m4=Nr?Nr.emptyScript:"";let Dp=class extends _i{constructor(){super(...arguments),this.type=4}j(e){e&&e!==z?this.element.setAttribute(this.name,m4):this.element.removeAttribute(this.name)}},Mp=class extends _i{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=Qn(this,e,n,0))!==null&&r!==void 0?r:z)===Ae)return;const i=this._$AH,o=e===z&&i!==z||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,a=e!==z&&(i===z||o);o&&this.element.removeEventListener(this.name,this,i),a&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){var n,r;typeof this._$AH=="function"?this._$AH.call((r=(n=this.options)===null||n===void 0?void 0:n.host)!==null&&r!==void 0?r:this.element,e):this._$AH.handleEvent(e)}},Tp=class{constructor(e,n,r){this.element=e,this.type=6,this._$AN=void 0,this._$AM=n,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(e){Qn(this,e)}};const g4={P:"$lit$",A:It,M:Ru,C:1,L:Cp,R:Sp,D:gp,V:Qn,I:ja,H:_i,N:Dp,U:Mp,B:Ep,F:Tp},Ip=Ra.litHtmlPolyfillSupport;Ip==null||Ip(ju,ja),((zu=Ra.litHtmlVersions)!==null&&zu!==void 0?zu:Ra.litHtmlVersions=[]).push("2.4.0");const Be=(t,e,n)=>{var r,i;const o=(r=n==null?void 0:n.renderBefore)!==null&&r!==void 0?r:e;let a=o._$litPart$;if(a===void 0){const s=(i=n==null?void 0:n.renderBefore)!==null&&i!==void 0?i:null;o._$litPart$=a=new ja(e.insertBefore(Qi(),s),s,void 0,n??{})}return a._$AI(t),a};function kp(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function y4(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function Ze(t){return Array.isArray(t)?t:typeof t<"u"?[t]:[]}function Re(t){return t[t.length-1]}const Vn="gs-suppress-tooltip";class v4{constructor(e){this.container=e,this.element=document.createElement("div"),this.element.className="tooltip",this._visible=!0,this.container.appendChild(this.element),this._previousTooltipDatum=void 0,this.enabledStack=[!0],this._penaltyUntil=0,this._lastCoords=void 0,this._previousMove=0,this.clear()}set visible(e){e!=this._visible&&(this.element.style.display=e?null:"none",this._visible=e)}get visible(){return this._visible}get enabled(){return Re(this.enabledStack)??!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=hp(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&b4(this.mouseCoords,this._lastCoords)>20&&(this._penaltyUntil=n+400),this._lastCoords=this.mouseCoords,this.visible&&this.updatePlacement(),this._previousMove=n}updatePlacement(){const[n,r]=this.mouseCoords;let i=n+20;i>this.container.clientWidth-this.element.offsetWidth&&(i=n-20-this.element.offsetWidth),this.element.style.left=i+"px",this.element.style.top=Math.min(r+20,this.container.clientHeight-this.element.offsetHeight)+"px"}setContent(e){if(!e||!this.enabled||this._isPenalty()){this.visible&&(Be("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}Be(e,this.element),this.visible=!0,this.updatePlacement()}clear(){this._previousTooltipDatum=void 0,this.setContent(void 0)}updateWithDatum(e,n){e!==this._previousTooltipDatum&&(this._previousTooltipDatum=e,n||(n=r=>Promise.resolve(E`${JSON.stringify(r)}`)),n(e).then(r=>this.setContent(r)).catch(r=>{if(r!=="debounced")throw r}))}_isPenalty(){return this._penaltyUntil&&this._penaltyUntil>performance.now()}}function b4(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const A4="RawCode",x4="Literal",w4="Property",C4="Identifier",S4="ArrayExpression",E4="BinaryExpression",D4="CallExpression",M4="ConditionalExpression",T4="LogicalExpression",I4="MemberExpression",k4="ObjectExpression",N4="UnaryExpression";function it(t){this.type=t}it.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=L4(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function L4(t){switch(t.type){case S4:return t.elements;case E4:case T4:return[t.left,t.right];case D4:return[t.callee].concat(t.arguments);case M4:return[t.test,t.consequent,t.alternate];case I4:return[t.object,t.property];case k4:return t.properties;case w4:return[t.key,t.value];case N4:return[t.argument];case C4:case x4:case A4:default:return[]}}var pt,N,S,we,Z,Ua=1,Wi=2,Yn=3,rn=4,Ha=5,_n=6,Oe=7,Xi=8,B4=9;pt={},pt[Ua]="Boolean",pt[Wi]="<end>",pt[Yn]="Identifier",pt[rn]="Keyword",pt[Ha]="Null",pt[_n]="Numeric",pt[Oe]="Punctuator",pt[Xi]="String",pt[B4]="RegularExpression";var O4="ArrayExpression",F4="BinaryExpression",P4="CallExpression",z4="ConditionalExpression",Np="Identifier",R4="Literal",j4="LogicalExpression",U4="MemberExpression",H4="ObjectExpression",G4="Property",Q4="UnaryExpression",be="Unexpected token %0",V4="Unexpected number",Y4="Unexpected string",_4="Unexpected identifier",W4="Unexpected reserved word",X4="Unexpected end of input",Uu="Invalid regular expression",Hu="Invalid regular expression: missing /",Lp="Octal literals are not allowed in strict mode.",Z4="Duplicate data property in object literal not allowed in strict mode",xe="ILLEGAL",Zi="Disabled.",q4=new 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]"),K4=new 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 Ga(t,e){if(!t)throw new Error("ASSERT: "+e)}function kt(t){return t>=48&&t<=57}function Gu(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function qi(t){return"01234567".indexOf(t)>=0}function J4(t){return t===32||t===9||t===11||t===12||t===160||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function Ki(t){return t===10||t===13||t===8232||t===8233}function Ji(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&q4.test(String.fromCharCode(t))}function Qa(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&K4.test(String.fromCharCode(t))}const $4={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 Bp(){for(;S<we;){const t=N.charCodeAt(S);if(J4(t)||Ki(t))++S;else break}}function Qu(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)S<we&&Gu(N[S])?(r=N[S++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):Y({},be,xe);return String.fromCharCode(i)}function e3(){var t,e,n,r;for(t=N[S],e=0,t==="}"&&Y({},be,xe);S<we&&(t=N[S++],!!Gu(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&Y({},be,xe),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function Op(){var t,e;for(t=N.charCodeAt(S++),e=String.fromCharCode(t),t===92&&(N.charCodeAt(S)!==117&&Y({},be,xe),++S,t=Qu("u"),(!t||t==="\\"||!Ji(t.charCodeAt(0)))&&Y({},be,xe),e=t);S<we&&(t=N.charCodeAt(S),!!Qa(t));)++S,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),N.charCodeAt(S)!==117&&Y({},be,xe),++S,t=Qu("u"),(!t||t==="\\"||!Qa(t.charCodeAt(0)))&&Y({},be,xe),e+=t);return e}function t3(){var t,e;for(t=S++;S<we;){if(e=N.charCodeAt(S),e===92)return S=t,Op();if(Qa(e))++S;else break}return N.slice(t,S)}function n3(){var t,e,n;return t=S,e=N.charCodeAt(S)===92?Op():t3(),e.length===1?n=Yn:$4.hasOwnProperty(e)?n=rn:e==="null"?n=Ha:e==="true"||e==="false"?n=Ua:n=Yn,{type:n,value:e,start:t,end:S}}function Vu(){var t=S,e=N.charCodeAt(S),n,r=N[S],i,o,a;switch(e){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++S,{type:Oe,value:String.fromCharCode(e),start:t,end:S};default:if(n=N.charCodeAt(S+1),n===61)switch(e){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return S+=2,{type:Oe,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:S};case 33:case 61:return S+=2,N.charCodeAt(S)===61&&++S,{type:Oe,value:N.slice(t,S),start:t,end:S}}}if(a=N.substr(S,4),a===">>>=")return S+=4,{type:Oe,value:a,start:t,end:S};if(o=a.substr(0,3),o===">>>"||o==="<<="||o===">>=")return S+=3,{type:Oe,value:o,start:t,end:S};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return S+=2,{type:Oe,value:i,start:t,end:S};if(i==="//"&&Y({},be,xe),"<>=!+-*%&|^/".indexOf(r)>=0)return++S,{type:Oe,value:r,start:t,end:S};Y({},be,xe)}function r3(t){let e="";for(;S<we&&Gu(N[S]);)e+=N[S++];return e.length===0&&Y({},be,xe),Ji(N.charCodeAt(S))&&Y({},be,xe),{type:_n,value:parseInt("0x"+e,16),start:t,end:S}}function i3(t){let e="0"+N[S++];for(;S<we&&qi(N[S]);)e+=N[S++];return(Ji(N.charCodeAt(S))||kt(N.charCodeAt(S)))&&Y({},be,xe),{type:_n,value:parseInt(e,8),octal:!0,start:t,end:S}}function Fp(){var t,e,n;if(n=N[S],Ga(kt(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=S,t="",n!=="."){if(t=N[S++],n=N[S],t==="0"){if(n==="x"||n==="X")return++S,r3(e);if(qi(n))return i3(e);n&&kt(n.charCodeAt(0))&&Y({},be,xe)}for(;kt(N.charCodeAt(S));)t+=N[S++];n=N[S]}if(n==="."){for(t+=N[S++];kt(N.charCodeAt(S));)t+=N[S++];n=N[S]}if(n==="e"||n==="E")if(t+=N[S++],n=N[S],(n==="+"||n==="-")&&(t+=N[S++]),kt(N.charCodeAt(S)))for(;kt(N.charCodeAt(S));)t+=N[S++];else Y({},be,xe);return Ji(N.charCodeAt(S))&&Y({},be,xe),{type:_n,value:parseFloat(t),start:e,end:S}}function o3(){var t="",e,n,r,i,o=!1;for(e=N[S],Ga(e==="'"||e==='"',"String literal must starts with a quote"),n=S,++S;S<we;)if(r=N[S++],r===e){e="";break}else if(r==="\\")if(r=N[S++],!r||!Ki(r.charCodeAt(0)))switch(r){case"u":case"x":N[S]==="{"?(++S,t+=e3()):t+=Qu(r);break;case"n":t+=`
|
15
|
-
`;break;case"r":t+="\r";break;case"t":t+=" ";break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:
|
16
|
-
`&&++S;else{if(Ki(r.charCodeAt(0)))break;t+=r}return e!==""&&Y({},be,xe),{type:Xi,value:t,octal:o,start:n,end:S}}function a3(t,e){let n=t;e.indexOf("u")>=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(r,i)=>{if(parseInt(i,16)<=1114111)return"x";Y({},Uu)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{Y({},Uu)}try{return new RegExp(t,e)}catch{return null}}function s3(){var t,e,n,r,i;for(t=N[S],Ga(t==="/","Regular expression literal must start with a slash"),e=N[S++],n=!1,r=!1;S<we;)if(t=N[S++],e+=t,t==="\\")t=N[S++],Ki(t.charCodeAt(0))&&Y({},Hu),e+=t;else if(Ki(t.charCodeAt(0)))Y({},Hu);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||Y({},Hu),i=e.substr(1,e.length-2),{value:i,literal:e}}function c3(){var t,e,n;for(e="",n="";S<we&&(t=N[S],!!Qa(t.charCodeAt(0)));)++S,t==="\\"&&S<we?Y({},be,xe):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&Y({},Uu,n),{value:n,literal:e}}function u3(){var t,e,n,r;return Z=null,Bp(),t=S,e=s3(),n=c3(),r=a3(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:S}}function l3(t){return t.type===Yn||t.type===rn||t.type===Ua||t.type===Ha}function Pp(){if(Bp(),S>=we)return{type:Wi,start:S,end:S};const t=N.charCodeAt(S);return Ji(t)?n3():t===40||t===41||t===59?Vu():t===39||t===34?o3():t===46?kt(N.charCodeAt(S+1))?Fp():Vu():kt(t)?Fp():Vu()}function Fe(){const t=Z;return S=t.end,Z=Pp(),S=t.end,t}function zp(){const t=S;Z=Pp(),S=t}function f3(t){const e=new it(O4);return e.elements=t,e}function Rp(t,e,n){const r=new it(t==="||"||t==="&&"?j4:F4);return r.operator=t,r.left=e,r.right=n,r}function d3(t,e){const n=new it(P4);return n.callee=t,n.arguments=e,n}function h3(t,e,n){const r=new it(z4);return r.test=t,r.consequent=e,r.alternate=n,r}function Yu(t){const e=new it(Np);return e.name=t,e}function $i(t){const e=new it(R4);return e.value=t.value,e.raw=N.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function jp(t,e,n){const r=new it(U4);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function p3(t){const e=new it(H4);return e.properties=t,e}function Up(t,e,n){const r=new it(G4);return r.key=e,r.value=n,r.kind=t,r}function m3(t,e){const n=new it(Q4);return n.operator=t,n.argument=e,n.prefix=!0,n}function Y(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,a)=>(Ga(a<r.length,"Message reference must be in range"),r[a]));throw n=new Error(i),n.index=S,n.description=i,n}function Va(t){t.type===Wi&&Y(t,X4),t.type===_n&&Y(t,V4),t.type===Xi&&Y(t,Y4),t.type===Yn&&Y(t,_4),t.type===rn&&Y(t,W4),Y(t,be,t.value)}function Ce(t){const e=Fe();(e.type!==Oe||e.value!==t)&&Va(e)}function ee(t){return Z.type===Oe&&Z.value===t}function _u(t){return Z.type===rn&&Z.value===t}function g3(){const t=[];for(S=Z.start,Ce("[");!ee("]");)ee(",")?(Fe(),t.push(null)):(t.push(Wn()),ee("]")||Ce(","));return Fe(),f3(t)}function Hp(){S=Z.start;const t=Fe();return t.type===Xi||t.type===_n?(t.octal&&Y(t,Lp),$i(t)):Yu(t.value)}function y3(){var t,e,n,r;if(S=Z.start,t=Z,t.type===Yn)return n=Hp(),Ce(":"),r=Wn(),Up("init",n,r);if(t.type===Wi||t.type===Oe)Va(t);else return e=Hp(),Ce(":"),r=Wn(),Up("init",e,r)}function v3(){var t=[],e,n,r,i={},o=String;for(S=Z.start,Ce("{");!ee("}");)e=y3(),e.key.type===Np?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?Y({},Z4):i[r]=!0,t.push(e),ee("}")||Ce(",");return Ce("}"),p3(t)}function b3(){Ce("(");const t=Wu();return Ce(")"),t}const A3={if:1};function x3(){var t,e,n;if(ee("("))return b3();if(ee("["))return g3();if(ee("{"))return v3();if(t=Z.type,S=Z.start,t===Yn||A3[Z.value])n=Yu(Fe().value);else if(t===Xi||t===_n)Z.octal&&Y(Z,Lp),n=$i(Fe());else{if(t===rn)throw new Error(Zi);t===Ua?(e=Fe(),e.value=e.value==="true",n=$i(e)):t===Ha?(e=Fe(),e.value=null,n=$i(e)):ee("/")||ee("/=")?(n=$i(u3()),zp()):Va(Fe())}return n}function w3(){const t=[];if(Ce("("),!ee(")"))for(;S<we&&(t.push(Wn()),!ee(")"));)Ce(",");return Ce(")"),t}function C3(){S=Z.start;const t=Fe();return l3(t)||Va(t),Yu(t.value)}function S3(){return Ce("."),C3()}function E3(){Ce("[");const t=Wu();return Ce("]"),t}function D3(){var t,e,n;for(t=x3();;)if(ee("."))n=S3(),t=jp(".",t,n);else if(ee("("))e=w3(),t=d3(t,e);else if(ee("["))n=E3(),t=jp("[",t,n);else break;return t}function Gp(){const t=D3();if(Z.type===Oe&&(ee("++")||ee("--")))throw new Error(Zi);return t}function Ya(){var t,e;if(Z.type!==Oe&&Z.type!==rn)e=Gp();else{if(ee("++")||ee("--"))throw new Error(Zi);if(ee("+")||ee("-")||ee("~")||ee("!"))t=Fe(),e=Ya(),e=m3(t.value,e);else{if(_u("delete")||_u("void")||_u("typeof"))throw new Error(Zi);e=Gp()}}return e}function Qp(t){let e=0;if(t.type!==Oe&&t.type!==rn)return 0;switch(t.value){case"||":e=1;break;case"&&":e=2;break;case"|":e=3;break;case"^":e=4;break;case"&":e=5;break;case"==":case"!=":case"===":case"!==":e=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":e=7;break;case"<<":case">>":case">>>":e=8;break;case"+":case"-":e=9;break;case"*":case"/":case"%":e=11;break}return e}function M3(){var t,e,n,r,i,o,a,s,c,u;if(t=Z,c=Ya(),r=Z,i=Qp(r),i===0)return c;for(r.prec=i,Fe(),e=[t,Z],a=Ya(),o=[c,r,a];(i=Qp(Z))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)a=o.pop(),s=o.pop().value,c=o.pop(),e.pop(),n=Rp(s,c,a),o.push(n);r=Fe(),r.prec=i,o.push(r),e.push(Z),n=Ya(),o.push(n)}for(u=o.length-1,n=o[u],e.pop();u>1;)e.pop(),n=Rp(o[u-1].value,o[u-2],n),u-=2;return n}function Wn(){var t,e,n;return t=M3(),ee("?")&&(Fe(),e=Wn(),Ce(":"),n=Wn(),t=h3(t,e,n)),t}function Wu(){const t=Wn();if(ee(","))throw new Error(Zi);return t}function T3(t){N=t,S=0,we=N.length,Z=null,zp();const e=Wu();if(Z.type!==Wi)throw new Error("Unexpect token after expression.");return e}var I3={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 k3(t){function e(a,s,c,u){let f=t(s[0]);return c&&(f=c+"("+f+")",c.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+a+(u<0?"":u===0?"()":"("+s.slice(1).map(t).join(",")+")")}function n(a,s,c){return u=>e(a,u,s,c)}const r="new Date",i="String",o="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",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(a){a.length<3&&ae("Missing arguments to clamp function."),a.length>3&&ae("Too many arguments to clamp function.");const s=a.map(t);return"Math.max("+s[1]+", Math.min("+s[2]+","+s[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),regexp:o,test:n("test",o),if:function(a){a.length<3&&ae("Missing arguments to if function."),a.length>3&&ae("Too many arguments to if function.");const s=a.map(t);return"("+s[0]+"?"+s[1]+":"+s[2]+")"}}}function N3(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function L3(t){t=t||{};const e=t.allowed?aa(t.allowed):{},n=t.forbidden?aa(t.forbidden):{},r=t.constants||I3,i=(t.functions||k3)(l),o=t.globalvar,a=t.fieldvar,s=Ie(o)?o:h=>`${o}["${h}"]`;let c={},u={},f=0;function l(h){if(ne(h))return h;const m=d[h.type];return m==null&&ae("Unsupported type: "+h.type),m(h)}const d={Literal:h=>h.raw,Identifier:h=>{const m=h.name;return f>0?m:En(n,m)?ae("Illegal identifier: "+m):En(r,m)?r[m]:En(e,m)?m:(c[m]=1,s(m))},MemberExpression:h=>{const m=!h.computed,g=l(h.object);m&&(f+=1);const y=l(h.property);return g===a&&(u[N3(y)]=1),m&&(f-=1),g+(m?"."+y:"["+y+"]")},CallExpression:h=>{h.callee.type!=="Identifier"&&ae("Illegal callee type: "+h.callee.type);const m=h.callee.name,g=h.arguments,y=En(i,m)&&i[m];return y||ae("Unrecognized function: "+m),Ie(y)?y(g):y+"("+g.map(l).join(",")+")"},ArrayExpression:h=>"["+h.elements.map(l).join(",")+"]",BinaryExpression:h=>"("+l(h.left)+" "+h.operator+" "+l(h.right)+")",UnaryExpression:h=>"("+h.operator+l(h.argument)+")",ConditionalExpression:h=>"("+l(h.test)+"?"+l(h.consequent)+":"+l(h.alternate)+")",LogicalExpression:h=>"("+l(h.left)+h.operator+l(h.right)+")",ObjectExpression:h=>"{"+h.properties.map(l).join(",")+"}",Property:h=>{f+=1;const m=l(h.key);return f-=1,m+":"+l(h.value)}};function p(h){const m={code:l(h),globals:Object.keys(c),fields:Object.keys(u)};return c={},u={},m}return p.functions=i,p.constants=r,p}function Xu(t,e={}){const n=L3({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=T3(t),i=n(r),o=Function("datum","global",`"use strict"; return (${i.code});`),a=s=>o(s,e);return a.fields=i.fields,a}catch(r){throw new Error(`Invalid expression: ${t}, ${r.message}`)}}function B3(){let t=0;const e=new Map,n=r=>{let i=e.get(r);return i===void 0&&(i=t++,e.set(r,i)),i};return n.addAll=r=>{for(const i of r)n(i)},n.invert=r=>{for(const i of e.entries())if(i[1]==r)return i[0]},n.domain=()=>[...e.keys()],n}function O3(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(qe(i)&&i.resolutionChannel||r);n[r]=F3(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function F3(t,e,n,r){let i;if(ot(t)){const o=t.value;i=a=>o,i.constant=!0,i.constantValue=!0,i.accessor=void 0}else if(n)if(r=="text")i=o=>{},i.accessor=n,i.constant=n.constant;else{if(!e)throw new Error(`Missing scale! "${r}": ${JSON.stringify(t)}`);if(i=o=>e(n(o)),nn(e.type)){const o=B3();o.addAll(e.domain()),i.indexer=o}i.constant=n.constant,i.accessor=n,i.scale=e}else throw new Error(`Missing value or accessor (field, expr, datum) on channel "${r}": ${JSON.stringify(t)}`);return i.invert=e?o=>e.invert(o):o=>{throw new Error("No scale available, cannot invert: "+JSON.stringify(t))},i.channelDef=t,i.applyMetadata=o=>{for(const a in i)a in i&&(o[a]=i[a]);return o},i}function ot(t){return t&&"value"in t}function Xn(t){return t&&"field"in t}function eo(t){return t&&"datum"in t}function qe(t){return Xn(t)||eo(t)||qu(t)||Vp(t)}function Zu(t,e){const n=t.mark.encoding[e];if(qe(n))return n;throw new Error("Not a channel def with scale!")}function Vp(t){return t&&"chrom"in t}function qu(t){return t&&"expr"in t}const to=["x","y"],P3=["x2","y2"],z3=[...to,...P3];function Yp(t){return to.includes(t)}function no(t){return z3.includes(t)}const Ku={x:"x2",y:"y2"},_p=Object.fromEntries(Object.entries(Ku).map(t=>[t[1],t[0]]));function ro(t){return t in _p}function R3(t){const e=Ku[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function Or(t){return _p[t]??t}function Zn(t){return["color","fill","stroke"].includes(Or(t))}function _a(t){return["shape","squeeze"].includes(t)}function Wp(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function Xp(t){if(!_a(t))throw new Error("Not a discrete channel: "+t);const e=new Map(Wp(t).map((n,r)=>[n,r]));return n=>{const r=e.get(n);if(r!==void 0)return r;throw new Error(`Invalid value for "${t}" channel: ${n}`)}}function q(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return R(n,[t],e)}else return $o(t)}class j3{constructor(){this.accessorCreators=[],this.register(e=>{if(Xn(e))try{const n=q(e.field);return n.constant=!1,n.fields=Sn(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>qu(e)?U3(e.expr):void 0),this.register(e=>{if(eo(e)){const r=p2(e.datum);return r.constant=!0,r.fields=[],r}})}register(e){this.accessorCreators.push(e)}createAccessor(e){for(const n of this.accessorCreators){const r=n(e);if(r)return r}}}function U3(t){const e=Xu(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.22.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
|
14
|
+
\f\r"'\`<>=]|("|')|))|$)`,"g"),xp=/'/g,wp=/"/g,Cp=/^(?:script|style|textarea|title)$/i,g4=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),E=g4(1),Ae=Symbol.for("lit-noChange"),z=Symbol.for("lit-nothing"),Sp=new WeakMap,Br=Lr.createTreeWalker(Lr,129,null,!1),Ep=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",a=Vi;for(let c=0;c<n;c++){const u=t[c];let f,l,d=-1,p=0;for(;p<u.length&&(a.lastIndex=p,l=a.exec(u),l!==null);)p=a.lastIndex,a===Vi?l[1]==="!--"?a=bp:l[1]!==void 0?a=Ap:l[2]!==void 0?(Cp.test(l[2])&&(i=RegExp("</"+l[2],"g")),a=Gn):l[3]!==void 0&&(a=Gn):a===Gn?l[0]===">"?(a=i??Vi,d=-1):l[1]===void 0?d=-2:(d=a.lastIndex-l[2].length,f=l[1],a=l[3]===void 0?Gn:l[3]==='"'?wp:xp):a===wp||a===xp?a=Gn:a===bp||a===Ap?a=Vi:(a=Gn,i=void 0);const h=a===Gn&&t[c+1].startsWith("/>")?" ":"";o+=a===Vi?u+m4:d>=0?(r.push(f),u.slice(0,d)+"$lit$"+u.slice(d)+It+h):u+It+(d===-2?(r.push(void 0),c):h)}const s=o+(t[n]||"<?>")+(e===2?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[gp!==void 0?gp.createHTML(s):s,r]};let ju=class Wb{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,a=0;const s=e.length-1,c=this.parts,[u,f]=Ep(e,n);if(this.el=Wb.createElement(u,r),Br.currentNode=this.el.content,n===2){const l=this.el.content,d=l.firstChild;d.remove(),l.append(...d.childNodes)}for(;(i=Br.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const d of i.getAttributeNames())if(d.endsWith("$lit$")||d.startsWith(It)){const p=f[a++];if(l.push(d),p!==void 0){const h=i.getAttribute(p.toLowerCase()+"$lit$").split(It),m=/([.?@])?(.*)/.exec(p);c.push({type:1,index:o,name:m[2],strings:h,ctor:m[1]==="."?Mp:m[1]==="?"?Tp:m[1]==="@"?Ip:Yi})}else c.push({type:6,index:o})}for(const d of l)i.removeAttribute(d)}if(Cp.test(i.tagName)){const l=i.textContent.split(It),d=l.length-1;if(d>0){i.textContent=Nr?Nr.emptyScript:"";for(let p=0;p<d;p++)i.append(l[p],Gi()),Br.nextNode(),c.push({type:2,index:++o});i.append(l[d],Gi())}}}else if(i.nodeType===8)if(i.data===Ru)c.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(It,l+1))!==-1;)c.push({type:7,index:o}),l+=It.length-1}o++}}static createElement(e,n){const r=Lr.createElement("template");return r.innerHTML=e,r}};function Qn(t,e,n=t,r){var i,o,a,s;if(e===Ae)return e;let c=r!==void 0?(i=n._$Co)===null||i===void 0?void 0:i[r]:n._$Cl;const u=Qi(e)?void 0:e._$litDirective$;return(c==null?void 0:c.constructor)!==u&&((o=c==null?void 0:c._$AO)===null||o===void 0||o.call(c,!1),u===void 0?c=void 0:(c=new u(t),c._$AT(t,n,r)),r!==void 0?((a=(s=n)._$Co)!==null&&a!==void 0?a:s._$Co=[])[r]=c:n._$Cl=c),c!==void 0&&(e=Qn(t,c._$AS(t,e.values),c,r)),e}class Dp{constructor(e,n){this.u=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(e){var n;const{el:{content:r},parts:i}=this._$AD,o=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:Lr).importNode(r,!0);Br.currentNode=o;let a=Br.nextNode(),s=0,c=0,u=i[0];for(;u!==void 0;){if(s===u.index){let f;u.type===2?f=new ja(a,a.nextSibling,this,e):u.type===1?f=new u.ctor(a,u.name,u.strings,this,e):u.type===6&&(f=new kp(a,this,e)),this.u.push(f),u=i[++c]}s!==(u==null?void 0:u.index)&&(a=Br.nextNode(),s++)}return o}p(e){let n=0;for(const r of this.u)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}let ja=class Xb{constructor(e,n,r,i){var o;this.type=2,this._$AH=z,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cm=(o=i==null?void 0:i.isConnected)===null||o===void 0||o}get _$AU(){var e,n;return(n=(e=this._$AM)===null||e===void 0?void 0:e._$AU)!==null&&n!==void 0?n:this._$Cm}get parentNode(){let e=this._$AA.parentNode;const n=this._$AM;return n!==void 0&&e.nodeType===11&&(e=n.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,n=this){e=Qn(this,e,n),Qi(e)?e===z||e==null||e===""?(this._$AH!==z&&this._$AR(),this._$AH=z):e!==this._$AH&&e!==Ae&&this.g(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):vp(e)?this.k(e):this.g(e)}O(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}g(e){this._$AH!==z&&Qi(this._$AH)?this._$AA.nextSibling.data=e:this.T(Lr.createTextNode(e)),this._$AH=e}$(e){var n;const{values:r,_$litType$:i}=e,o=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=ju.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===o)this._$AH.p(r);else{const a=new Dp(o,this),s=a.v(this.options);a.p(r),this.T(s),this._$AH=a}}_$AC(e){let n=Sp.get(e.strings);return n===void 0&&Sp.set(e.strings,n=new ju(e)),n}k(e){yp(this._$AH)||(this._$AH=[],this._$AR());const n=this._$AH;let r,i=0;for(const o of e)i===n.length?n.push(r=new Xb(this.O(Gi()),this.O(Gi()),this,this.options)):r=n[i],r._$AI(o),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,n){var r;for((r=this._$AP)===null||r===void 0||r.call(this,!1,!0,n);e&&e!==this._$AB;){const i=e.nextSibling;e.remove(),e=i}}setConnected(e){var n;this._$AM===void 0&&(this._$Cm=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}},Yi=class{constructor(e,n,r,i,o){this.type=1,this._$AH=z,this._$AN=void 0,this.element=e,this.name=n,this._$AM=i,this.options=o,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=z}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,n=this,r,i){const o=this.strings;let a=!1;if(o===void 0)e=Qn(this,e,n,0),a=!Qi(e)||e!==this._$AH&&e!==Ae,a&&(this._$AH=e);else{const s=e;let c,u;for(e=o[0],c=0;c<o.length-1;c++)u=Qn(this,s[r+c],n,c),u===Ae&&(u=this._$AH[c]),a||(a=!Qi(u)||u!==this._$AH[c]),u===z?e=z:e!==z&&(e+=(u??"")+o[c+1]),this._$AH[c]=u}a&&!i&&this.j(e)}j(e){e===z?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}},Mp=class extends Yi{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===z?void 0:e}};const y4=Nr?Nr.emptyScript:"";let Tp=class extends Yi{constructor(){super(...arguments),this.type=4}j(e){e&&e!==z?this.element.setAttribute(this.name,y4):this.element.removeAttribute(this.name)}},Ip=class extends Yi{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=Qn(this,e,n,0))!==null&&r!==void 0?r:z)===Ae)return;const i=this._$AH,o=e===z&&i!==z||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,a=e!==z&&(i===z||o);o&&this.element.removeEventListener(this.name,this,i),a&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){var n,r;typeof this._$AH=="function"?this._$AH.call((r=(n=this.options)===null||n===void 0?void 0:n.host)!==null&&r!==void 0?r:this.element,e):this._$AH.handleEvent(e)}},kp=class{constructor(e,n,r){this.element=e,this.type=6,this._$AN=void 0,this._$AM=n,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(e){Qn(this,e)}};const v4={P:"$lit$",A:It,M:Ru,C:1,L:Ep,R:Dp,D:vp,V:Qn,I:ja,H:Yi,N:Tp,U:Ip,B:Mp,F:kp},Np=Ra.litHtmlPolyfillSupport;Np==null||Np(ju,ja),((zu=Ra.litHtmlVersions)!==null&&zu!==void 0?zu:Ra.litHtmlVersions=[]).push("2.4.0");const Be=(t,e,n)=>{var r,i;const o=(r=n==null?void 0:n.renderBefore)!==null&&r!==void 0?r:e;let a=o._$litPart$;if(a===void 0){const s=(i=n==null?void 0:n.renderBefore)!==null&&i!==void 0?i:null;o._$litPart$=a=new ja(e.insertBefore(Gi(),s),s,void 0,n??{})}return a._$AI(t),a};function Lp(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function b4(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function Ze(t){return Array.isArray(t)?t:typeof t<"u"?[t]:[]}function Re(t){return t[t.length-1]}const Vn="gs-suppress-tooltip";class A4{constructor(e){this.container=e,this.element=document.createElement("div"),this.element.className="tooltip",this._visible=!0,this.container.appendChild(this.element),this._previousTooltipDatum=void 0,this.enabledStack=[!0],this._penaltyUntil=0,this._lastCoords=void 0,this._previousMove=0,this.clear()}set visible(e){e!=this._visible&&(this.element.style.display=e?null:"none",this._visible=e)}get visible(){return this._visible}get enabled(){return Re(this.enabledStack)??!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=mp(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&x4(this.mouseCoords,this._lastCoords)>20&&(this._penaltyUntil=n+400),this._lastCoords=this.mouseCoords,this.visible&&this.updatePlacement(),this._previousMove=n}updatePlacement(){const[n,r]=this.mouseCoords;let i=n+20;i>this.container.clientWidth-this.element.offsetWidth&&(i=n-20-this.element.offsetWidth),this.element.style.left=i+"px",this.element.style.top=Math.min(r+20,this.container.clientHeight-this.element.offsetHeight)+"px"}setContent(e){if(!e||!this.enabled||this._isPenalty()){this.visible&&(Be("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}Be(e,this.element),this.visible=!0,this.updatePlacement()}clear(){this._previousTooltipDatum=void 0,this.setContent(void 0)}updateWithDatum(e,n){e!==this._previousTooltipDatum&&(this._previousTooltipDatum=e,n||(n=r=>Promise.resolve(E`${JSON.stringify(r)}`)),n(e).then(r=>this.setContent(r)).catch(r=>{if(r!=="debounced")throw r}))}_isPenalty(){return this._penaltyUntil&&this._penaltyUntil>performance.now()}}function x4(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const w4="RawCode",C4="Literal",S4="Property",E4="Identifier",D4="ArrayExpression",M4="BinaryExpression",T4="CallExpression",I4="ConditionalExpression",k4="LogicalExpression",N4="MemberExpression",L4="ObjectExpression",B4="UnaryExpression";function it(t){this.type=t}it.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=O4(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function O4(t){switch(t.type){case D4:return t.elements;case M4:case k4:return[t.left,t.right];case T4:return[t.callee].concat(t.arguments);case I4:return[t.test,t.consequent,t.alternate];case N4:return[t.object,t.property];case L4:return t.properties;case S4:return[t.key,t.value];case B4:return[t.argument];case E4:case C4:case w4:default:return[]}}var pt,N,S,we,Z,Ua=1,_i=2,Yn=3,rn=4,Ha=5,_n=6,Oe=7,Wi=8,F4=9;pt={},pt[Ua]="Boolean",pt[_i]="<end>",pt[Yn]="Identifier",pt[rn]="Keyword",pt[Ha]="Null",pt[_n]="Numeric",pt[Oe]="Punctuator",pt[Wi]="String",pt[F4]="RegularExpression";var P4="ArrayExpression",z4="BinaryExpression",R4="CallExpression",j4="ConditionalExpression",Bp="Identifier",U4="Literal",H4="LogicalExpression",G4="MemberExpression",Q4="ObjectExpression",V4="Property",Y4="UnaryExpression",be="Unexpected token %0",_4="Unexpected number",W4="Unexpected string",X4="Unexpected identifier",Z4="Unexpected reserved word",q4="Unexpected end of input",Uu="Invalid regular expression",Hu="Invalid regular expression: missing /",Op="Octal literals are not allowed in strict mode.",K4="Duplicate data property in object literal not allowed in strict mode",xe="ILLEGAL",Xi="Disabled.",J4=new 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]"),$4=new 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 Ga(t,e){if(!t)throw new Error("ASSERT: "+e)}function kt(t){return t>=48&&t<=57}function Gu(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function Zi(t){return"01234567".indexOf(t)>=0}function e3(t){return t===32||t===9||t===11||t===12||t===160||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function qi(t){return t===10||t===13||t===8232||t===8233}function Ki(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&J4.test(String.fromCharCode(t))}function Qa(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&$4.test(String.fromCharCode(t))}const t3={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 Fp(){for(;S<we;){const t=N.charCodeAt(S);if(e3(t)||qi(t))++S;else break}}function Qu(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)S<we&&Gu(N[S])?(r=N[S++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):Y({},be,xe);return String.fromCharCode(i)}function n3(){var t,e,n,r;for(t=N[S],e=0,t==="}"&&Y({},be,xe);S<we&&(t=N[S++],!!Gu(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&Y({},be,xe),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function Pp(){var t,e;for(t=N.charCodeAt(S++),e=String.fromCharCode(t),t===92&&(N.charCodeAt(S)!==117&&Y({},be,xe),++S,t=Qu("u"),(!t||t==="\\"||!Ki(t.charCodeAt(0)))&&Y({},be,xe),e=t);S<we&&(t=N.charCodeAt(S),!!Qa(t));)++S,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),N.charCodeAt(S)!==117&&Y({},be,xe),++S,t=Qu("u"),(!t||t==="\\"||!Qa(t.charCodeAt(0)))&&Y({},be,xe),e+=t);return e}function r3(){var t,e;for(t=S++;S<we;){if(e=N.charCodeAt(S),e===92)return S=t,Pp();if(Qa(e))++S;else break}return N.slice(t,S)}function i3(){var t,e,n;return t=S,e=N.charCodeAt(S)===92?Pp():r3(),e.length===1?n=Yn:t3.hasOwnProperty(e)?n=rn:e==="null"?n=Ha:e==="true"||e==="false"?n=Ua:n=Yn,{type:n,value:e,start:t,end:S}}function Vu(){var t=S,e=N.charCodeAt(S),n,r=N[S],i,o,a;switch(e){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++S,{type:Oe,value:String.fromCharCode(e),start:t,end:S};default:if(n=N.charCodeAt(S+1),n===61)switch(e){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return S+=2,{type:Oe,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:S};case 33:case 61:return S+=2,N.charCodeAt(S)===61&&++S,{type:Oe,value:N.slice(t,S),start:t,end:S}}}if(a=N.substr(S,4),a===">>>=")return S+=4,{type:Oe,value:a,start:t,end:S};if(o=a.substr(0,3),o===">>>"||o==="<<="||o===">>=")return S+=3,{type:Oe,value:o,start:t,end:S};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return S+=2,{type:Oe,value:i,start:t,end:S};if(i==="//"&&Y({},be,xe),"<>=!+-*%&|^/".indexOf(r)>=0)return++S,{type:Oe,value:r,start:t,end:S};Y({},be,xe)}function o3(t){let e="";for(;S<we&&Gu(N[S]);)e+=N[S++];return e.length===0&&Y({},be,xe),Ki(N.charCodeAt(S))&&Y({},be,xe),{type:_n,value:parseInt("0x"+e,16),start:t,end:S}}function a3(t){let e="0"+N[S++];for(;S<we&&Zi(N[S]);)e+=N[S++];return(Ki(N.charCodeAt(S))||kt(N.charCodeAt(S)))&&Y({},be,xe),{type:_n,value:parseInt(e,8),octal:!0,start:t,end:S}}function zp(){var t,e,n;if(n=N[S],Ga(kt(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=S,t="",n!=="."){if(t=N[S++],n=N[S],t==="0"){if(n==="x"||n==="X")return++S,o3(e);if(Zi(n))return a3(e);n&&kt(n.charCodeAt(0))&&Y({},be,xe)}for(;kt(N.charCodeAt(S));)t+=N[S++];n=N[S]}if(n==="."){for(t+=N[S++];kt(N.charCodeAt(S));)t+=N[S++];n=N[S]}if(n==="e"||n==="E")if(t+=N[S++],n=N[S],(n==="+"||n==="-")&&(t+=N[S++]),kt(N.charCodeAt(S)))for(;kt(N.charCodeAt(S));)t+=N[S++];else Y({},be,xe);return Ki(N.charCodeAt(S))&&Y({},be,xe),{type:_n,value:parseFloat(t),start:e,end:S}}function s3(){var t="",e,n,r,i,o=!1;for(e=N[S],Ga(e==="'"||e==='"',"String literal must starts with a quote"),n=S,++S;S<we;)if(r=N[S++],r===e){e="";break}else if(r==="\\")if(r=N[S++],!r||!qi(r.charCodeAt(0)))switch(r){case"u":case"x":N[S]==="{"?(++S,t+=n3()):t+=Qu(r);break;case"n":t+=`
|
15
|
+
`;break;case"r":t+="\r";break;case"t":t+=" ";break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:Zi(r)?(i="01234567".indexOf(r),i!==0&&(o=!0),S<we&&Zi(N[S])&&(o=!0,i=i*8+"01234567".indexOf(N[S++]),"0123".indexOf(r)>=0&&S<we&&Zi(N[S])&&(i=i*8+"01234567".indexOf(N[S++]))),t+=String.fromCharCode(i)):t+=r;break}else r==="\r"&&N[S]===`
|
16
|
+
`&&++S;else{if(qi(r.charCodeAt(0)))break;t+=r}return e!==""&&Y({},be,xe),{type:Wi,value:t,octal:o,start:n,end:S}}function c3(t,e){let n=t;e.indexOf("u")>=0&&(n=n.replace(/\\u\{([0-9a-fA-F]+)\}/g,(r,i)=>{if(parseInt(i,16)<=1114111)return"x";Y({},Uu)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{Y({},Uu)}try{return new RegExp(t,e)}catch{return null}}function u3(){var t,e,n,r,i;for(t=N[S],Ga(t==="/","Regular expression literal must start with a slash"),e=N[S++],n=!1,r=!1;S<we;)if(t=N[S++],e+=t,t==="\\")t=N[S++],qi(t.charCodeAt(0))&&Y({},Hu),e+=t;else if(qi(t.charCodeAt(0)))Y({},Hu);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||Y({},Hu),i=e.substr(1,e.length-2),{value:i,literal:e}}function l3(){var t,e,n;for(e="",n="";S<we&&(t=N[S],!!Qa(t.charCodeAt(0)));)++S,t==="\\"&&S<we?Y({},be,xe):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&Y({},Uu,n),{value:n,literal:e}}function f3(){var t,e,n,r;return Z=null,Fp(),t=S,e=u3(),n=l3(),r=c3(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:S}}function d3(t){return t.type===Yn||t.type===rn||t.type===Ua||t.type===Ha}function Rp(){if(Fp(),S>=we)return{type:_i,start:S,end:S};const t=N.charCodeAt(S);return Ki(t)?i3():t===40||t===41||t===59?Vu():t===39||t===34?s3():t===46?kt(N.charCodeAt(S+1))?zp():Vu():kt(t)?zp():Vu()}function Fe(){const t=Z;return S=t.end,Z=Rp(),S=t.end,t}function jp(){const t=S;Z=Rp(),S=t}function h3(t){const e=new it(P4);return e.elements=t,e}function Up(t,e,n){const r=new it(t==="||"||t==="&&"?H4:z4);return r.operator=t,r.left=e,r.right=n,r}function p3(t,e){const n=new it(R4);return n.callee=t,n.arguments=e,n}function m3(t,e,n){const r=new it(j4);return r.test=t,r.consequent=e,r.alternate=n,r}function Yu(t){const e=new it(Bp);return e.name=t,e}function Ji(t){const e=new it(U4);return e.value=t.value,e.raw=N.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function Hp(t,e,n){const r=new it(G4);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function g3(t){const e=new it(Q4);return e.properties=t,e}function Gp(t,e,n){const r=new it(V4);return r.key=e,r.value=n,r.kind=t,r}function y3(t,e){const n=new it(Y4);return n.operator=t,n.argument=e,n.prefix=!0,n}function Y(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,a)=>(Ga(a<r.length,"Message reference must be in range"),r[a]));throw n=new Error(i),n.index=S,n.description=i,n}function Va(t){t.type===_i&&Y(t,q4),t.type===_n&&Y(t,_4),t.type===Wi&&Y(t,W4),t.type===Yn&&Y(t,X4),t.type===rn&&Y(t,Z4),Y(t,be,t.value)}function Ce(t){const e=Fe();(e.type!==Oe||e.value!==t)&&Va(e)}function ee(t){return Z.type===Oe&&Z.value===t}function _u(t){return Z.type===rn&&Z.value===t}function v3(){const t=[];for(S=Z.start,Ce("[");!ee("]");)ee(",")?(Fe(),t.push(null)):(t.push(Wn()),ee("]")||Ce(","));return Fe(),h3(t)}function Qp(){S=Z.start;const t=Fe();return t.type===Wi||t.type===_n?(t.octal&&Y(t,Op),Ji(t)):Yu(t.value)}function b3(){var t,e,n,r;if(S=Z.start,t=Z,t.type===Yn)return n=Qp(),Ce(":"),r=Wn(),Gp("init",n,r);if(t.type===_i||t.type===Oe)Va(t);else return e=Qp(),Ce(":"),r=Wn(),Gp("init",e,r)}function A3(){var t=[],e,n,r,i={},o=String;for(S=Z.start,Ce("{");!ee("}");)e=b3(),e.key.type===Bp?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?Y({},K4):i[r]=!0,t.push(e),ee("}")||Ce(",");return Ce("}"),g3(t)}function x3(){Ce("(");const t=Wu();return Ce(")"),t}const w3={if:1};function C3(){var t,e,n;if(ee("("))return x3();if(ee("["))return v3();if(ee("{"))return A3();if(t=Z.type,S=Z.start,t===Yn||w3[Z.value])n=Yu(Fe().value);else if(t===Wi||t===_n)Z.octal&&Y(Z,Op),n=Ji(Fe());else{if(t===rn)throw new Error(Xi);t===Ua?(e=Fe(),e.value=e.value==="true",n=Ji(e)):t===Ha?(e=Fe(),e.value=null,n=Ji(e)):ee("/")||ee("/=")?(n=Ji(f3()),jp()):Va(Fe())}return n}function S3(){const t=[];if(Ce("("),!ee(")"))for(;S<we&&(t.push(Wn()),!ee(")"));)Ce(",");return Ce(")"),t}function E3(){S=Z.start;const t=Fe();return d3(t)||Va(t),Yu(t.value)}function D3(){return Ce("."),E3()}function M3(){Ce("[");const t=Wu();return Ce("]"),t}function T3(){var t,e,n;for(t=C3();;)if(ee("."))n=D3(),t=Hp(".",t,n);else if(ee("("))e=S3(),t=p3(t,e);else if(ee("["))n=M3(),t=Hp("[",t,n);else break;return t}function Vp(){const t=T3();if(Z.type===Oe&&(ee("++")||ee("--")))throw new Error(Xi);return t}function Ya(){var t,e;if(Z.type!==Oe&&Z.type!==rn)e=Vp();else{if(ee("++")||ee("--"))throw new Error(Xi);if(ee("+")||ee("-")||ee("~")||ee("!"))t=Fe(),e=Ya(),e=y3(t.value,e);else{if(_u("delete")||_u("void")||_u("typeof"))throw new Error(Xi);e=Vp()}}return e}function Yp(t){let e=0;if(t.type!==Oe&&t.type!==rn)return 0;switch(t.value){case"||":e=1;break;case"&&":e=2;break;case"|":e=3;break;case"^":e=4;break;case"&":e=5;break;case"==":case"!=":case"===":case"!==":e=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":e=7;break;case"<<":case">>":case">>>":e=8;break;case"+":case"-":e=9;break;case"*":case"/":case"%":e=11;break}return e}function I3(){var t,e,n,r,i,o,a,s,c,u;if(t=Z,c=Ya(),r=Z,i=Yp(r),i===0)return c;for(r.prec=i,Fe(),e=[t,Z],a=Ya(),o=[c,r,a];(i=Yp(Z))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)a=o.pop(),s=o.pop().value,c=o.pop(),e.pop(),n=Up(s,c,a),o.push(n);r=Fe(),r.prec=i,o.push(r),e.push(Z),n=Ya(),o.push(n)}for(u=o.length-1,n=o[u],e.pop();u>1;)e.pop(),n=Up(o[u-1].value,o[u-2],n),u-=2;return n}function Wn(){var t,e,n;return t=I3(),ee("?")&&(Fe(),e=Wn(),Ce(":"),n=Wn(),t=m3(t,e,n)),t}function Wu(){const t=Wn();if(ee(","))throw new Error(Xi);return t}function k3(t){N=t,S=0,we=N.length,Z=null,jp();const e=Wu();if(Z.type!==_i)throw new Error("Unexpect token after expression.");return e}var N3={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 L3(t){function e(a,s,c,u){let f=t(s[0]);return c&&(f=c+"("+f+")",c.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+a+(u<0?"":u===0?"()":"("+s.slice(1).map(t).join(",")+")")}function n(a,s,c){return u=>e(a,u,s,c)}const r="new Date",i="String",o="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",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(a){a.length<3&&ae("Missing arguments to clamp function."),a.length>3&&ae("Too many arguments to clamp function.");const s=a.map(t);return"Math.max("+s[1]+", Math.min("+s[2]+","+s[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),regexp:o,test:n("test",o),if:function(a){a.length<3&&ae("Missing arguments to if function."),a.length>3&&ae("Too many arguments to if function.");const s=a.map(t);return"("+s[0]+"?"+s[1]+":"+s[2]+")"}}}function B3(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function O3(t){t=t||{};const e=t.allowed?aa(t.allowed):{},n=t.forbidden?aa(t.forbidden):{},r=t.constants||N3,i=(t.functions||L3)(l),o=t.globalvar,a=t.fieldvar,s=Ie(o)?o:h=>`${o}["${h}"]`;let c={},u={},f=0;function l(h){if(ne(h))return h;const m=d[h.type];return m==null&&ae("Unsupported type: "+h.type),m(h)}const d={Literal:h=>h.raw,Identifier:h=>{const m=h.name;return f>0?m:En(n,m)?ae("Illegal identifier: "+m):En(r,m)?r[m]:En(e,m)?m:(c[m]=1,s(m))},MemberExpression:h=>{const m=!h.computed,g=l(h.object);m&&(f+=1);const y=l(h.property);return g===a&&(u[B3(y)]=1),m&&(f-=1),g+(m?"."+y:"["+y+"]")},CallExpression:h=>{h.callee.type!=="Identifier"&&ae("Illegal callee type: "+h.callee.type);const m=h.callee.name,g=h.arguments,y=En(i,m)&&i[m];return y||ae("Unrecognized function: "+m),Ie(y)?y(g):y+"("+g.map(l).join(",")+")"},ArrayExpression:h=>"["+h.elements.map(l).join(",")+"]",BinaryExpression:h=>"("+l(h.left)+" "+h.operator+" "+l(h.right)+")",UnaryExpression:h=>"("+h.operator+l(h.argument)+")",ConditionalExpression:h=>"("+l(h.test)+"?"+l(h.consequent)+":"+l(h.alternate)+")",LogicalExpression:h=>"("+l(h.left)+h.operator+l(h.right)+")",ObjectExpression:h=>"{"+h.properties.map(l).join(",")+"}",Property:h=>{f+=1;const m=l(h.key);return f-=1,m+":"+l(h.value)}};function p(h){const m={code:l(h),globals:Object.keys(c),fields:Object.keys(u)};return c={},u={},m}return p.functions=i,p.constants=r,p}function Xu(t,e={}){const n=O3({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=k3(t),i=n(r),o=Function("datum","global",`"use strict"; return (${i.code});`),a=s=>o(s,e);return a.fields=i.fields,a}catch(r){throw new Error(`Invalid expression: ${t}, ${r.message}`)}}function F3(){let t=0;const e=new Map,n=r=>{let i=e.get(r);return i===void 0&&(i=t++,e.set(r,i)),i};return n.addAll=r=>{for(const i of r)n(i)},n.invert=r=>{for(const i of e.entries())if(i[1]==r)return i[0]},n.domain=()=>[...e.keys()],n}function P3(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(qe(i)&&i.resolutionChannel||r);n[r]=z3(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function z3(t,e,n,r){let i;if(ot(t)){const o=t.value;i=a=>o,i.constant=!0,i.constantValue=!0,i.accessor=void 0}else if(n)if(r=="text")i=o=>{},i.accessor=n,i.constant=n.constant;else{if(!e)throw new Error(`Missing scale! "${r}": ${JSON.stringify(t)}`);if(i=o=>e(n(o)),nn(e.type)){const o=F3();o.addAll(e.domain()),i.indexer=o}i.constant=n.constant,i.accessor=n,i.scale=e}else throw new Error(`Missing value or accessor (field, expr, datum) on channel "${r}": ${JSON.stringify(t)}`);return i.invert=e?o=>e.invert(o):o=>{throw new Error("No scale available, cannot invert: "+JSON.stringify(t))},i.channelDef=t,i.applyMetadata=o=>{for(const a in i)a in i&&(o[a]=i[a]);return o},i}function ot(t){return t&&"value"in t}function Xn(t){return t&&"field"in t}function $i(t){return t&&"datum"in t}function qe(t){return Xn(t)||$i(t)||qu(t)||_p(t)}function Zu(t,e){const n=t.mark.encoding[e];if(qe(n))return n;throw new Error("Not a channel def with scale!")}function _p(t){return t&&"chrom"in t}function qu(t){return t&&"expr"in t}const eo=["x","y"],R3=["x2","y2"],j3=[...eo,...R3];function Wp(t){return eo.includes(t)}function to(t){return j3.includes(t)}const Ku={x:"x2",y:"y2"},Xp=Object.fromEntries(Object.entries(Ku).map(t=>[t[1],t[0]]));function no(t){return t in Xp}function U3(t){const e=Ku[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function Or(t){return Xp[t]??t}function Zn(t){return["color","fill","stroke"].includes(Or(t))}function _a(t){return["shape","squeeze"].includes(t)}function Zp(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function qp(t){if(!_a(t))throw new Error("Not a discrete channel: "+t);const e=new Map(Zp(t).map((n,r)=>[n,r]));return n=>{const r=e.get(n);if(r!==void 0)return r;throw new Error(`Invalid value for "${t}" channel: ${n}`)}}function q(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return R(n,[t],e)}else return $o(t)}class H3{constructor(){this.accessorCreators=[],this.register(e=>{if(Xn(e))try{const n=q(e.field);return n.constant=!1,n.fields=Sn(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>qu(e)?G3(e.expr):void 0),this.register(e=>{if($i(e)){const r=g2(e.datum);return r.constant=!0,r.fields=[],r}})}register(e){this.accessorCreators.push(e)}createAccessor(e){for(const n of this.accessorCreators){const r=n(e);if(r)return r}}}function G3(t){const e=Xu(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.22.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
|
17
17
|
Available via the MIT license.
|
18
|
-
see: http://github.com/greggman/twgl.js for details */const Ju=5120,io=5121,$u=5122,el=5123,tl=5124,nl=5125,rl=5126,H3=32819,G3=32820,Q3=33635,V3=5131,Y3=33640,_3=35899,W3=35902,X3=36269,Z3=34042,Zp={};{const t=Zp;t[Ju]=Int8Array,t[io]=Uint8Array,t[$u]=Int16Array,t[el]=Uint16Array,t[tl]=Int32Array,t[nl]=Uint32Array,t[rl]=Float32Array,t[H3]=Uint16Array,t[G3]=Uint16Array,t[Q3]=Uint16Array,t[V3]=Uint16Array,t[Y3]=Uint32Array,t[_3]=Uint32Array,t[W3]=Uint32Array,t[X3]=Uint32Array,t[Z3]=Uint32Array}function il(t){if(t instanceof Int8Array)return Ju;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return io;if(t instanceof Int16Array)return $u;if(t instanceof Uint16Array)return el;if(t instanceof Int32Array)return tl;if(t instanceof Uint32Array)return nl;if(t instanceof Float32Array)return rl;throw new Error("unsupported typed array type")}function q3(t){if(t===Int8Array)return Ju;if(t===Uint8Array||t===Uint8ClampedArray)return io;if(t===Int16Array)return $u;if(t===Uint16Array)return el;if(t===Int32Array)return tl;if(t===Uint32Array)return nl;if(t===Float32Array)return rl;throw new Error("unsupported typed array type")}function K3(t){const e=Zp[t];if(!e)throw new Error("unknown gl type");return e}const Wa=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 J3(...t){console.error(...t)}function qp(...t){console.warn(...t)}function $3(t,e){return typeof WebGLBuffer<"u"&&e instanceof WebGLBuffer}function Kp(t,e){return typeof WebGLRenderbuffer<"u"&&e instanceof WebGLRenderbuffer}function Xa(t,e){return typeof WebGLTexture<"u"&&e instanceof WebGLTexture}function eC(t,e){return typeof WebGLSampler<"u"&&e instanceof WebGLSampler}const Jp=35044,mt=34962,tC=34963,nC=34660,rC=5120,iC=5121,oC=5122,aC=5123,sC=5124,cC=5125,uC=5126,$p={attribPrefix:""};function em(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||Jp)}function tm(t,e,n,r){if($3(t,e))return e;n=n||mt;const i=t.createBuffer();return em(t,n,i,e,r),i}function nm(t){return t==="indices"}function lC(t){return t instanceof Int8Array||t instanceof Uint8Array}function fC(t){return t===Int8Array||t===Uint8Array}function dC(t){return t.length?t:t.data}const hC=/coord|texture/i,pC=/color|colour/i;function rm(t,e){let n;if(hC.test(t)?n=2:pC.test(t)?n=4:n=3,e%n>0)throw new Error(`Can not guess numComponents for attribute '${t}'. Tried ${n} but ${e} values is not evenly divisible by ${n}. You should specify it.`);return n}function mC(t,e){return t.numComponents||t.size||rm(e,dC(t).length)}function ol(t,e){if(Wa(t))return t;if(Wa(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(nm(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function gC(t,e){const n={};return Object.keys(e).forEach(function(r){if(!nm(r)){const i=e[r],o=i.attrib||i.name||i.attribName||$p.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Wa(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let a,s,c,u;if(i.buffer&&i.buffer instanceof WebGLBuffer)a=i.buffer,u=i.numComponents||i.size,s=i.type,c=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const f=i.data||i,l=i.type||Float32Array,d=f*l.BYTES_PER_ELEMENT;s=q3(l),c=i.normalize!==void 0?i.normalize:fC(l),u=i.numComponents||i.size||rm(r,f),a=t.createBuffer(),t.bindBuffer(mt,a),t.bufferData(mt,d,i.drawType||Jp)}else{const f=ol(i,r);a=tm(t,f,void 0,i.drawType),s=il(f),c=i.normalize!==void 0?i.normalize:lC(f),u=mC(i,r)}n[o]={buffer:a,numComponents:u,type:s,normalize:c,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(mt,null),n}function yC(t,e,n,r){n=ol(n),r!==void 0?(t.bindBuffer(mt,e.buffer),t.bufferSubData(mt,r,n)):em(t,mt,e.buffer,n,e.drawType)}function vC(t,e){return e===rC||e===iC?1:e===oC||e===aC?2:e===sC||e===cC||e===uC?4:0}const al=["position","positions","a_position"];function bC(t,e){let n,r;for(r=0;r<al.length&&(n=al[r],!(n in e||(n=$p.attribPrefix+n,n in e)));++r);r===al.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(mt,i.buffer);const o=t.getBufferParameter(mt,nC);t.bindBuffer(mt,null);const a=vC(t,i.type),s=o/a,c=i.numComponents||i.size,u=s/c;if(u%1!==0)throw new Error(`numComponents ${c} not correct for length ${length}`);return u}function AC(t,e,n){const r=gC(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const a=ol(o,"indices");i.indices=tm(t,a,tC),i.numElements=a.length,i.elementType=il(a)}else i.numElements||(i.numElements=bC(t,i.attribs));return i}function Fr(t){return!!t.texStorage2D}const sl=function(){const t={},e={};function n(r){const i=r.constructor.name;if(!t[i]){for(const o in r)if(typeof r[o]=="number"){const a=e[r[o]];e[r[o]]=a?`${a} | ${o}`:o}t[i]=!0}}return function(i,o){return n(i),e[o]||(typeof o=="number"?`0x${o.toString(16)}`:o)}}(),on={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Pr=Wa,im=function(){let t;return function(){return t=t||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),om=6406,gt=6407,re=6408,am=6409,sm=6410,oo=6402,cm=34041,Za=33071,xC=9728,wC=9729,Nt=3553,Lt=34067,an=32879,sn=35866,qa=34069,CC=34070,SC=34071,EC=34072,DC=34073,MC=34074,cl=10241,ul=10240,Ka=10242,Ja=10243,um=32882,TC=33082,IC=33083,kC=33084,NC=33085,ll=3317,lm=3314,fm=32878,dm=3316,hm=3315,pm=32877,LC=37443,BC=37441,OC=37440,FC=33321,PC=36756,zC=33325,RC=33326,jC=33330,UC=33329,HC=33338,GC=33337,QC=33340,VC=33339,YC=33323,_C=36757,WC=33327,XC=33328,ZC=33336,qC=33335,KC=33332,JC=33331,$C=33334,eS=33333,tS=32849,nS=35905,rS=36194,iS=36758,oS=35898,aS=35901,sS=34843,cS=34837,uS=36221,lS=36239,fS=36215,dS=36233,hS=36209,pS=36227,mS=32856,gS=35907,yS=36759,vS=32855,bS=32854,AS=32857,xS=34842,wS=34836,CS=36220,SS=36238,ES=36975,DS=36214,MS=36232,TS=36226,IS=36208,kS=33189,NS=33190,LS=36012,BS=36013,OS=35056,cn=5120,ie=5121,$a=5122,zr=5123,es=5124,qn=5125,Se=5126,mm=32819,gm=32820,ym=33635,at=5131,ao=36193,fl=33640,FS=35899,PS=35902,zS=36269,RS=34042,ts=33319,Rr=33320,ns=6403,jr=36244,Ur=36248,Kn=36249;let dl;function rs(t){if(!dl){const e={};e[om]={textureFormat:om,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[ie,at,ao,Se]},e[am]={textureFormat:am,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[ie,at,ao,Se]},e[sm]={textureFormat:sm,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[ie,at,ao,Se]},e[gt]={textureFormat:gt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[ie,at,ao,Se,ym]},e[re]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[ie,at,ao,Se,mm,gm]},e[oo]={textureFormat:oo,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[qn,zr]},e[FC]={textureFormat:ns,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[ie]},e[PC]={textureFormat:ns,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[cn]},e[zC]={textureFormat:ns,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[Se,at]},e[RC]={textureFormat:ns,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[Se]},e[jC]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[ie]},e[UC]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[cn]},e[KC]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[zr]},e[JC]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[$a]},e[$C]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[qn]},e[eS]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[es]},e[YC]={textureFormat:ts,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[ie]},e[_C]={textureFormat:ts,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[cn]},e[WC]={textureFormat:ts,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[Se,at]},e[XC]={textureFormat:ts,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[Se]},e[ZC]={textureFormat:Rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ie]},e[qC]={textureFormat:Rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[cn]},e[HC]={textureFormat:Rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[zr]},e[GC]={textureFormat:Rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[$a]},e[QC]={textureFormat:Rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[qn]},e[VC]={textureFormat:Rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[es]},e[tS]={textureFormat:gt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[ie]},e[nS]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[ie]},e[rS]={textureFormat:gt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[ie,ym]},e[iS]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[cn]},e[oS]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Se,at,FS]},e[aS]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Se,at,PS]},e[sS]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[Se,at]},e[cS]={textureFormat:gt,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Se]},e[uS]={textureFormat:Ur,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[ie]},e[lS]={textureFormat:Ur,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[cn]},e[fS]={textureFormat:Ur,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[zr]},e[dS]={textureFormat:Ur,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[$a]},e[hS]={textureFormat:Ur,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[qn]},e[pS]={textureFormat:Ur,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[es]},e[mS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ie]},e[gS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ie]},e[yS]={textureFormat:re,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[cn]},e[vS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[ie,gm,fl]},e[bS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[ie,mm]},e[AS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[fl]},e[xS]={textureFormat:re,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[Se,at]},e[wS]={textureFormat:re,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[Se]},e[CS]={textureFormat:Kn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ie]},e[SS]={textureFormat:Kn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[cn]},e[ES]={textureFormat:Kn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[fl]},e[DS]={textureFormat:Kn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[zr]},e[MS]={textureFormat:Kn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[$a]},e[TS]={textureFormat:Kn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[es]},e[IS]={textureFormat:Kn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[qn]},e[kS]={textureFormat:oo,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[zr,qn]},e[NS]={textureFormat:oo,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[qn]},e[LS]={textureFormat:oo,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Se]},e[OS]={textureFormat:cm,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[RS]},e[BS]={textureFormat:cm,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[zS]},Object.keys(e).forEach(function(n){const r=e[n];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,o){const a=r.type[o];r.bytesPerElementMap[a]=i})}),dl=e}return dl[t]}function jS(t,e){const n=rs(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function Hr(t){const e=rs(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function vm(t){return(t&t-1)===0}function US(t,e,n,r){if(!Fr(t))return vm(e)&&vm(n);const i=rs(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function HS(t){const e=rs(t);if(!e)throw"unknown internal format";return e.textureFilterable}function bm(t,e,n){return Pr(e)?il(e):n||ie}function is(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===Lt?6:1));o%1===0?(n=o,r=o):(n=i,r=1)}else if(r){if(!n&&(n=i/r,n%1))throw"can't guess dimensions"}else if(r=i/n,r%1)throw"can't guess dimensions";return{width:n,height:r}}function Gr(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(LC,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(BC,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(OC,e.flipY)}function Am(t){t.pixelStorei(ll,4),Fr(t)&&(t.pixelStorei(lm,0),t.pixelStorei(fm,0),t.pixelStorei(dm,0),t.pixelStorei(hm,0),t.pixelStorei(pm,0))}function GS(t,e,n,r){r.minMag&&(n.call(t,e,cl,r.minMag),n.call(t,e,ul,r.minMag)),r.min&&n.call(t,e,cl,r.min),r.mag&&n.call(t,e,ul,r.mag),r.wrap&&(n.call(t,e,Ka,r.wrap),n.call(t,e,Ja,r.wrap),(e===an||eC(t,e))&&n.call(t,e,um,r.wrap)),r.wrapR&&n.call(t,e,um,r.wrapR),r.wrapS&&n.call(t,e,Ka,r.wrapS),r.wrapT&&n.call(t,e,Ja,r.wrapT),r.minLod&&n.call(t,e,TC,r.minLod),r.maxLod&&n.call(t,e,IC,r.maxLod),r.baseLevel&&n.call(t,e,kC,r.baseLevel),r.maxLevel&&n.call(t,e,NC,r.maxLevel)}function xm(t,e,n){const r=n.target||Nt;t.bindTexture(r,e),GS(t,r,t.texParameteri,n)}function QS(t){return t=t||on.textureColor,Pr(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function hl(t,e,n,r,i,o){n=n||on.textureOptions,o=o||re;const a=n.target||Nt;if(r=r||n.width,i=i||n.height,t.bindTexture(a,e),US(t,r,i,o))t.generateMipmap(a);else{const s=HS(o)?wC:xC;t.texParameteri(a,cl,s),t.texParameteri(a,ul,s),t.texParameteri(a,Ka,Za),t.texParameteri(a,Ja,Za)}}function so(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function pl(t,e){return e=e||{},e.cubeFaceOrder||[qa,CC,SC,EC,DC,MC]}function ml(t,e){const r=pl(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function wm(t,e,n,r){r=r||on.textureOptions;const i=r.target||Nt,o=r.level||0;let a=n.width,s=n.height;const c=r.internalFormat||r.format||re,u=Hr(c),f=r.format||u.format,l=r.type||u.type;if(Gr(t,r),t.bindTexture(i,e),i===Lt){const d=n.width,p=n.height;let h,m;if(d/6===p)h=p,m=[0,0,1,0,2,0,3,0,4,0,5,0];else if(p/6===d)h=d,m=[0,0,0,1,0,2,0,3,0,4,0,5];else if(d/3===p/2)h=d/3,m=[0,0,1,0,2,0,0,1,1,1,2,1];else if(d/2===p/3)h=d/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);const g=im();g?(g.canvas.width=h,g.canvas.height=h,a=h,s=h,ml(t,r).forEach(function(y){const b=m[y.ndx*2+0]*h,w=m[y.ndx*2+1]*h;g.drawImage(n,b,w,h,h,0,0,h,h),t.texImage2D(y.face,o,c,f,l,g.canvas)}),g.canvas.width=1,g.canvas.height=1):typeof createImageBitmap<"u"&&(a=h,s=h,ml(t,r).forEach(function(y){const b=m[y.ndx*2+0]*h,w=m[y.ndx*2+1]*h;t.texImage2D(y.face,o,c,h,h,0,f,l,null),createImageBitmap(n,b,w,h,h,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(C){Gr(t,r),t.bindTexture(i,e),t.texImage2D(y.face,o,c,f,l,C),so(r)&&hl(t,e,r,a,s,c)})}))}else if(i===an||i===sn){const d=Math.min(n.width,n.height),p=Math.max(n.width,n.height),h=p/d;if(h%1!==0)throw"can not compute 3D dimensions of element";const m=n.width===p?1:0,g=n.height===p?1:0;t.pixelStorei(ll,1),t.pixelStorei(lm,n.width),t.pixelStorei(fm,0),t.pixelStorei(pm,0),t.texImage3D(i,o,c,d,d,d,0,f,l,null);for(let y=0;y<h;++y){const b=y*d*m,w=y*d*g;t.pixelStorei(dm,b),t.pixelStorei(hm,w),t.texSubImage3D(i,o,0,0,y,d,d,1,f,l,n)}Am(t)}else t.texImage2D(i,o,c,f,l,n);so(r)&&hl(t,e,r,a,s,c),xm(t,e,r)}function co(){}function VS(t){if(typeof document<"u"){const e=document.createElement("a");return e.href=t,e.hostname===location.hostname&&e.port===location.port&&e.protocol===location.protocol}else{const e=new URL(location.href).origin;return new URL(t,location.href).origin===e}}function YS(t,e){return e===void 0&&!VS(t)?"anonymous":e}function _S(t,e,n){n=n||co;let r;if(e=e!==void 0?e:on.crossOrigin,e=YS(t,e),typeof Image<"u"){r=new Image,e!==void 0&&(r.crossOrigin=e);const i=function(){r.removeEventListener("error",o),r.removeEventListener("load",a),r=null},o=function(){const c="couldn't load image: "+t;J3(c),n(c,r),i()},a=function(){n(null,r),i()};return r.addEventListener("error",o),r.addEventListener("load",a),r.src=t,r}else if(typeof ImageBitmap<"u"){let i,o;const a=function(){n(i,o)},s={};e&&(s.mode="cors"),fetch(t,s).then(function(c){if(!c.ok)throw c;return c.blob()}).then(function(c){return createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(c){o=c,setTimeout(a)}).catch(function(c){i=c,setTimeout(a)}),r=null}return r}function Cm(t){return typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof ImageData<"u"&&t instanceof ImageData||typeof HTMLElement<"u"&&t instanceof HTMLElement}function gl(t,e,n){return Cm(t)?(setTimeout(function(){n(null,t)}),t):_S(t,e,n)}function yl(t,e,n){n=n||on.textureOptions;const r=n.target||Nt;if(t.bindTexture(r,e),n.color===!1)return;const i=QS(n.color);if(r===Lt)for(let o=0;o<6;++o)t.texImage2D(qa+o,0,re,1,1,0,re,ie,i);else r===an||r===sn?t.texImage3D(r,0,re,1,1,1,0,re,ie,i):t.texImage2D(r,0,re,1,1,0,re,ie,i)}function WS(t,e,n,r){return r=r||co,n=n||on.textureOptions,yl(t,e,n),n=Object.assign({},n),gl(n.src,n.crossOrigin,function(o,a){o?r(o,e,a):(wm(t,e,a,n),r(null,e,a))})}function XS(t,e,n,r){r=r||co;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const o=n.level||0,a=n.internalFormat||n.format||re,s=Hr(a),c=n.format||s.format,u=n.type||ie,f=n.target||Nt;if(f!==Lt)throw"target must be TEXTURE_CUBE_MAP";yl(t,e,n),n=Object.assign({},n);let l=6;const d=[],p=pl(t,n);let h;function m(g){return function(y,b){--l,y?d.push(y):b.width!==b.height?d.push("cubemap face img is not a square: "+b.src):(Gr(t,n),t.bindTexture(f,e),l===5?pl().forEach(function(w){t.texImage2D(w,o,a,c,u,b)}):t.texImage2D(g,o,a,c,u,b),so(n)&&t.generateMipmap(f)),l===0&&r(d.length?d:void 0,e,h)}}h=i.map(function(g,y){return gl(g,n.crossOrigin,m(p[y]))})}function ZS(t,e,n,r){r=r||co;const i=n.src,o=n.internalFormat||n.format||re,a=Hr(o),s=n.format||a.format,c=n.type||ie,u=n.target||sn;if(u!==an&&u!==sn)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";yl(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let d;const p=n.level||0;let h=n.width,m=n.height;const g=i.length;let y=!0;function b(w){return function(C,x){if(--f,C)l.push(C);else{if(Gr(t,n),t.bindTexture(u,e),y){y=!1,h=n.width||x.width,m=n.height||x.height,t.texImage3D(u,p,o,h,m,g,0,s,c,null);for(let v=0;v<g;++v)t.texSubImage3D(u,p,0,0,v,h,m,1,s,c,x)}else{let v=x,A;(x.width!==h||x.height!==m)&&(A=im(),v=A.canvas,A.canvas.width=h,A.canvas.height=m,A.drawImage(x,0,0,h,m)),t.texSubImage3D(u,p,0,0,w,h,m,1,s,c,v),A&&v===A.canvas&&(A.canvas.width=0,A.canvas.height=0)}so(n)&&t.generateMipmap(u)}f===0&&r(l.length?l:void 0,e,d)}}d=i.map(function(w,C){return gl(w,n.crossOrigin,b(C))})}function Sm(t,e,n,r){r=r||on.textureOptions;const i=r.target||Nt;t.bindTexture(i,e);let o=r.width,a=r.height,s=r.depth;const c=r.level||0,u=r.internalFormat||r.format||re,f=Hr(u),l=r.format||f.format,d=r.type||bm(t,n,f.type);if(Pr(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const g=K3(d);n=new g(n)}const p=jS(u,d),h=n.byteLength/p;if(h%1)throw"length wrong size for format: "+sl(t,l);let m;if(i===an||i===sn)if(!o&&!a&&!s){const g=Math.cbrt(h);if(g%1!==0)throw"can't guess cube size of array of numElements: "+h;o=g,a=g,s=g}else o&&(!a||!s)?(m=is(t,i,a,s,h/o),a=m.width,s=m.height):a&&(!o||!s)?(m=is(t,i,o,s,h/a),o=m.width,s=m.height):(m=is(t,i,o,a,h/s),o=m.width,a=m.height);else m=is(t,i,o,a,h),o=m.width,a=m.height;if(Am(t),t.pixelStorei(ll,r.unpackAlignment||1),Gr(t,r),i===Lt){const g=p/n.BYTES_PER_ELEMENT,y=h/6*g;ml(t,r).forEach(b=>{const w=y*b.ndx,C=n.subarray(w,w+y);t.texImage2D(b.face,c,u,o,a,0,l,d,C)})}else i===an||i===sn?t.texImage3D(i,c,u,o,a,s,0,l,d,n):t.texImage2D(i,c,u,o,a,0,l,d,n);return{width:o,height:a,depth:s,type:d}}function qS(t,e,n){const r=n.target||Nt;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||re,a=Hr(o),s=n.format||a.format,c=n.type||a.type;if(Gr(t,n),r===Lt)for(let u=0;u<6;++u)t.texImage2D(qa+u,i,o,n.width,n.height,0,s,c,null);else r===an||r===sn?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,s,c,null):t.texImage2D(r,i,o,n.width,n.height,0,s,c,null)}function uo(t,e,n){n=n||co,e=e||on.textureOptions;const r=t.createTexture(),i=e.target||Nt;let o=e.width||1,a=e.height||1;const s=e.internalFormat||re;t.bindTexture(i,r),i===Lt&&(t.texParameteri(i,Ka,Za),t.texParameteri(i,Ja,Za));let c=e.src;if(c)if(typeof c=="function"&&(c=c(t,e)),typeof c=="string")WS(t,r,e,n);else if(Pr(c)||Array.isArray(c)&&(typeof c[0]=="number"||Array.isArray(c[0])||Pr(c[0]))){const u=Sm(t,r,c,e);o=u.width,a=u.height}else Array.isArray(c)&&(typeof c[0]=="string"||Cm(c[0]))?i===Lt?XS(t,r,e,n):ZS(t,r,e,n):(wm(t,r,c,e),o=c.width,a=c.height);else qS(t,r,e);return so(e)&&hl(t,r,e,o,a,s),xm(t,r,e),r}function KS(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const a=n.target||Nt;t.bindTexture(a,e);const s=n.level||0,c=n.internalFormat||n.format||re,u=Hr(c),f=n.format||u.format;let l;const d=n.src;if(d&&(Pr(d)||Array.isArray(d)&&typeof d[0]=="number")?l=n.type||bm(t,d,u.type):l=n.type||u.type,a===Lt)for(let p=0;p<6;++p)t.texImage2D(qa+p,s,c,r,i,0,f,l,null);else a===an||a===sn?t.texImage3D(a,s,c,r,i,o,0,f,l,null):t.texImage2D(a,s,c,r,i,0,f,l,null)}const JS=qp,os=33984,$S=35048,as=34962,eE=34963,vl=35345,Em=35718,tE=35721,nE=35971,rE=35382,iE=35396,oE=35398,aE=35392,sE=35395,ss=5126,Dm=35664,Mm=35665,Tm=35666,bl=5124,Im=35667,km=35668,Nm=35669,Lm=35670,Bm=35671,Om=35672,Fm=35673,Pm=35674,zm=35675,Rm=35676,cE=35678,uE=35680,lE=35679,fE=35682,dE=35685,hE=35686,pE=35687,mE=35688,gE=35689,yE=35690,vE=36289,bE=36292,AE=36293,Al=5125,jm=36294,Um=36295,Hm=36296,xE=36298,wE=36299,CE=36300,SE=36303,EE=36306,DE=36307,ME=36308,TE=36311,cs=3553,us=34067,xl=32879,ls=35866,P={};function Gm(t,e){return P[e].bindPoint}function IE(t,e){return function(n){t.uniform1f(e,n)}}function kE(t,e){return function(n){t.uniform1fv(e,n)}}function NE(t,e){return function(n){t.uniform2fv(e,n)}}function LE(t,e){return function(n){t.uniform3fv(e,n)}}function BE(t,e){return function(n){t.uniform4fv(e,n)}}function Qm(t,e){return function(n){t.uniform1i(e,n)}}function Vm(t,e){return function(n){t.uniform1iv(e,n)}}function Ym(t,e){return function(n){t.uniform2iv(e,n)}}function _m(t,e){return function(n){t.uniform3iv(e,n)}}function Wm(t,e){return function(n){t.uniform4iv(e,n)}}function OE(t,e){return function(n){t.uniform1ui(e,n)}}function FE(t,e){return function(n){t.uniform1uiv(e,n)}}function PE(t,e){return function(n){t.uniform2uiv(e,n)}}function zE(t,e){return function(n){t.uniform3uiv(e,n)}}function RE(t,e){return function(n){t.uniform4uiv(e,n)}}function jE(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function UE(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function HE(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function GE(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function QE(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function VE(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function YE(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function _E(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function WE(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function Me(t,e,n,r){const i=Gm(t,e);return Fr(t)?function(o){let a,s;Xa(t,o)?(a=o,s=null):(a=o.texture,s=o.sampler),t.uniform1i(r,n),t.activeTexture(os+n),t.bindTexture(i,a),t.bindSampler(n,s)}:function(o){t.uniform1i(r,n),t.activeTexture(os+n),t.bindTexture(i,o)}}function Te(t,e,n,r,i){const o=Gm(t,e),a=new Int32Array(i);for(let s=0;s<i;++s)a[s]=n+s;return Fr(t)?function(s){t.uniform1iv(r,a),s.forEach(function(c,u){t.activeTexture(os+a[u]);let f,l;Xa(t,c)?(f=c,l=null):(f=c.texture,l=c.sampler),t.bindSampler(n,l),t.bindTexture(o,f)})}:function(s){t.uniform1iv(r,a),s.forEach(function(c,u){t.activeTexture(os+a[u]),t.bindTexture(o,c)})}}P[ss]={Type:Float32Array,size:4,setter:IE,arraySetter:kE},P[Dm]={Type:Float32Array,size:8,setter:NE,cols:2},P[Mm]={Type:Float32Array,size:12,setter:LE,cols:3},P[Tm]={Type:Float32Array,size:16,setter:BE,cols:4},P[bl]={Type:Int32Array,size:4,setter:Qm,arraySetter:Vm},P[Im]={Type:Int32Array,size:8,setter:Ym,cols:2},P[km]={Type:Int32Array,size:12,setter:_m,cols:3},P[Nm]={Type:Int32Array,size:16,setter:Wm,cols:4},P[Al]={Type:Uint32Array,size:4,setter:OE,arraySetter:FE},P[jm]={Type:Uint32Array,size:8,setter:PE,cols:2},P[Um]={Type:Uint32Array,size:12,setter:zE,cols:3},P[Hm]={Type:Uint32Array,size:16,setter:RE,cols:4},P[Lm]={Type:Uint32Array,size:4,setter:Qm,arraySetter:Vm},P[Bm]={Type:Uint32Array,size:8,setter:Ym,cols:2},P[Om]={Type:Uint32Array,size:12,setter:_m,cols:3},P[Fm]={Type:Uint32Array,size:16,setter:Wm,cols:4},P[Pm]={Type:Float32Array,size:32,setter:jE,rows:2,cols:2},P[zm]={Type:Float32Array,size:48,setter:UE,rows:3,cols:3},P[Rm]={Type:Float32Array,size:64,setter:HE,rows:4,cols:4},P[dE]={Type:Float32Array,size:32,setter:GE,rows:2,cols:3},P[hE]={Type:Float32Array,size:32,setter:VE,rows:2,cols:4},P[pE]={Type:Float32Array,size:48,setter:QE,rows:3,cols:2},P[mE]={Type:Float32Array,size:48,setter:_E,rows:3,cols:4},P[gE]={Type:Float32Array,size:64,setter:YE,rows:4,cols:2},P[yE]={Type:Float32Array,size:64,setter:WE,rows:4,cols:3},P[cE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:cs},P[uE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:us},P[lE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:xl},P[fE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:cs},P[vE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:ls},P[bE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:ls},P[AE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:us},P[xE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:cs},P[wE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:xl},P[CE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:us},P[SE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:ls},P[EE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:cs},P[DE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:xl},P[ME]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:us},P[TE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:ls};function fs(t,e){return function(n){if(n.value)switch(t.disableVertexAttribArray(e),n.value.length){case 4:t.vertexAttrib4fv(e,n.value);break;case 3:t.vertexAttrib3fv(e,n.value);break;case 2:t.vertexAttrib2fv(e,n.value);break;case 1:t.vertexAttrib1fv(e,n.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else t.bindBuffer(as,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||ss,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function un(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4iv(e,n.value);else throw new Error("The length of an integer constant value must be 4!");else t.bindBuffer(as,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||bl,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function ds(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4uiv(e,n.value);else throw new Error("The length of an unsigned integer constant value must be 4!");else t.bindBuffer(as,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Al,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function wl(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(as,o.buffer);const a=o.size||o.numComponents||r,s=a/i,c=o.type||ss,f=P[c].size*a,l=o.normalize||!1,d=o.offset||0,p=f/i;for(let h=0;h<i;++h)t.enableVertexAttribArray(e+h),t.vertexAttribPointer(e+h,s,c,l,f,d+p*h),o.divisor!==void 0&&t.vertexAttribDivisor(e+h,o.divisor)}}const fe={};fe[ss]={size:4,setter:fs},fe[Dm]={size:8,setter:fs},fe[Mm]={size:12,setter:fs},fe[Tm]={size:16,setter:fs},fe[bl]={size:4,setter:un},fe[Im]={size:8,setter:un},fe[km]={size:12,setter:un},fe[Nm]={size:16,setter:un},fe[Al]={size:4,setter:ds},fe[jm]={size:8,setter:ds},fe[Um]={size:12,setter:ds},fe[Hm]={size:16,setter:ds},fe[Lm]={size:4,setter:un},fe[Bm]={size:8,setter:un},fe[Om]={size:12,setter:un},fe[Fm]={size:16,setter:un},fe[Pm]={size:4,setter:wl,count:2},fe[zm]={size:9,setter:wl,count:3},fe[Rm]={size:16,setter:wl,count:4};function Xm(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const XE=/(\.|\[|]|\w+)/g,ZE=t=>t>="0"&&t<="9";function Zm(t,e,n,r){const i=t.split(XE).filter(s=>s!=="");let o=0,a="";for(;;){const s=i[o++];a+=s;const c=ZE(s[0]),u=c?parseInt(s):s;if(c&&(a+=i[o++]),o===i.length){n[u]=e;break}else{const l=i[o++],d=l==="[",p=n[u]||(d?[]:{});n[u]=p,n=p,r[a]=r[a]||function(h){return function(m){eg(h,m)}}(p),a+=l}}}function qE(t,e){let n=0;function r(s,c,u){const f=c.name.endsWith("[0]"),l=c.type,d=P[l];if(!d)throw new Error(`unknown type: 0x${l.toString(16)}`);let p;if(d.bindPoint){const h=n;n+=c.size,f?p=d.arraySetter(t,l,h,u,c.size):p=d.setter(t,l,h,u,c.size)}else d.arraySetter&&f?p=d.arraySetter(t,u):p=d.setter(t,u);return p.location=u,p}const i={},o={},a=t.getProgramParameter(e,Em);for(let s=0;s<a;++s){const c=t.getActiveUniform(e,s);if(Xm(c))continue;let u=c.name;u.endsWith("[0]")&&(u=u.substr(0,u.length-3));const f=t.getUniformLocation(e,c.name);if(f){const l=r(e,c,f);i[u]=l,Zm(u,l,o,i)}}return i}function KE(t,e){const n={},r=t.getProgramParameter(e,nE);for(let i=0;i<r;++i){const o=t.getTransformFeedbackVarying(e,i);n[o.name]={index:i,type:o.type,size:o.size}}return n}function JE(t,e){const n=t.getProgramParameter(e,Em),r=[],i=[];for(let s=0;s<n;++s){i.push(s),r.push({});const c=t.getActiveUniform(e,s);r[s].name=c.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(s){const c=s[0],u=s[1];t.getActiveUniforms(e,i,t[c]).forEach(function(f,l){r[l][u]=f})});const o={},a=t.getProgramParameter(e,rE);for(let s=0;s<a;++s){const c=t.getActiveUniformBlockName(e,s),u={index:t.getUniformBlockIndex(e,c),usedByVertexShader:t.getActiveUniformBlockParameter(e,s,iE),usedByFragmentShader:t.getActiveUniformBlockParameter(e,s,oE),size:t.getActiveUniformBlockParameter(e,s,aE),uniformIndices:t.getActiveUniformBlockParameter(e,s,sE)};u.used=u.usedByVertexShader||u.usedByFragmentShader,o[c]=u}return{blockSpecs:o,uniformData:r}}const qm=/\[\d+\]\.$/,$E=(t,e)=>((t+(e-1))/e|0)*e;function eD(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(a){let s=0,c=0;for(let u=0;u<o;++u){for(let f=0;f<r;++f)t[s++]=a[c++];s+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function tD(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,a=i[r];if(!a)return JS("no uniform block object named:",r),{name:r,uniforms:{}};const s=new ArrayBuffer(a.size),c=t.createBuffer(),u=a.index;t.bindBuffer(vl,c),t.uniformBlockBinding(e,a.index,u);let f=r+".";qm.test(f)&&(f=f.replace(qm,"."));const l={},d={},p={};return a.uniformIndices.forEach(function(h){const m=o[h];let g=m.name;g.startsWith(f)&&(g=g.substr(f.length));const y=g.endsWith("[0]");y&&(g=g.substr(0,g.length-3));const b=P[m.type],w=b.Type,C=y?$E(b.size,16)*m.size:b.size*m.size,x=new w(s,m.offset,C/w.BYTES_PER_ELEMENT);l[g]=x;const v=eD(x,y,b.rows,b.cols);d[g]=v,Zm(g,v,p,d)}),{name:r,array:s,asFloat:new Float32Array(s),buffer:c,uniforms:l,setters:d}}function Km(t,e,n){return tD(t,e.program,e.uniformBlockSpec,n)}function nD(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(vl,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function Jm(t,e,n){nD(t,e,n)&&t.bufferData(vl,n.array,$S)}function $m(t,e){const n=t.setters;for(const r in e){const i=n[r];if(i){const o=e[r];i(o)}}}function eg(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):eg(t[n],e[n])}}function je(t,...e){const n=t.uniformSetters||t,r=e.length;for(let i=0;i<r;++i){const o=e[i];if(Array.isArray(o)){const a=o.length;for(let s=0;s<a;++s)je(n,o[s])}else for(const a in o){const s=n[a];s&&s(o[a])}}}function rD(t,e){const n={},r=t.getProgramParameter(e,tE);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(Xm(o))continue;const a=t.getAttribLocation(e,o.name),s=fe[o.type],c=s.setter(t,a,s);c.location=a,n[o.name]=c}return n}function iD(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function Qr(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(iD(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(eE,n.indices))}function oD(t,e){const n=qE(t,e),r=rD(t,e),i={program:e,uniformSetters:n,attribSetters:r};return Fr(t)&&(i.uniformBlockSpec=JE(t,e),i.transformFeedbackInfo=KE(t,e)),i}const aD=4,tg=5123;function lo(t,e,n,r,i,o){n=n===void 0?aD:n;const a=e.indices,s=e.elementType,c=r===void 0?e.numElements:r;i=i===void 0?0:i,s||a?o!==void 0?t.drawElementsInstanced(n,c,s===void 0?tg:e.elementType,i,o):t.drawElements(n,c,s===void 0?tg:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,c,o):t.drawArrays(n,i,c)}const sD=36160,Jn=36161,cD=3553,uD=5121,lD=6402,fD=6408,dD=33190,hD=36012,pD=35056,mD=36013,gD=32854,yD=32855,vD=36194,ng=33189,rg=6401,ig=36168,Cl=34041,bD=36064,hs=36096,og=36128,Sl=33306,El=33071,Dl=9729,ag=[{format:fD,type:uD,min:Dl,wrap:El},{format:Cl}],st={};st[Cl]=Sl,st[rg]=og,st[ig]=og,st[lD]=hs,st[ng]=hs,st[dD]=hs,st[hD]=hs,st[pD]=Sl,st[mD]=Sl;function AD(t,e){return st[t]||st[e]}const ln={};ln[gD]=!0,ln[yD]=!0,ln[vD]=!0,ln[Cl]=!0,ln[ng]=!0,ln[rg]=!0,ln[ig]=!0;function xD(t){return ln[t]}function wD(t,e,n,r){const i=sD,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||ag;let a=0;const s={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(c){let u=c.attachment;const f=c.samples,l=c.format;let d=c.attachmentPoint||AD(l,c.internalFormat);if(d||(d=bD+a++),!u)if(f!==void 0||xD(l))u=t.createRenderbuffer(),t.bindRenderbuffer(Jn,u),f>1?t.renderbufferStorageMultisample(Jn,f,l,n,r):t.renderbufferStorage(Jn,l,n,r);else{const p=Object.assign({},c);p.width=n,p.height=r,p.auto===void 0&&(p.auto=!1,p.min=p.min||p.minMag||Dl,p.mag=p.mag||p.minMag||Dl,p.wrapS=p.wrapS||p.wrap||El,p.wrapT=p.wrapT||p.wrap||El),u=uo(t,p)}if(Kp(t,u))t.framebufferRenderbuffer(i,d,Jn,u);else if(Xa(t,u))c.layer!==void 0?t.framebufferTextureLayer(i,d,u,c.level||0,c.layer):t.framebufferTexture2D(i,d,c.target||cD,u,c.level||0);else throw new Error("unknown attachment type");s.attachments.push(u)}),s}function CD(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||ag,n.forEach(function(o,a){const s=e.attachments[a],c=o.format,u=o.samples;if(u!==void 0||Kp(t,s))t.bindRenderbuffer(Jn,s),u>1?t.renderbufferStorageMultisample(Jn,u,c,r,i):t.renderbufferStorage(Jn,c,r,i);else if(Xa(t,s))KS(t,s,o,r,i);else throw new Error("unknown attachment type")})}function SD(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Qr(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const ED=/^(.*?)_/;function DD(t,e){sl(t,0);const n=t.getExtension(e);if(n){const r={},i=ED.exec(e)[1],o="_"+i;for(const a in n){const s=n[a],c=typeof s=="function",u=c?i:o;let f=a;a.endsWith(u)&&(f=a.substring(0,a.length-u.length)),t[f]!==void 0?!c&&t[f]!==s&&qp(f,t[f],s,a):c?t[f]=function(l){return function(){return l.apply(n,arguments)}}(s):(t[f]=s,r[f]=s)}r.constructor={name:n.constructor.name},sl(r,0)}return n}const sg=["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 cg(t){for(let e=0;e<sg.length;++e)DD(t,sg[e])}function MD(t,e){const n=["webgl2","webgl","experimental-webgl"];let r=null;for(let i=0;i<n.length;++i)if(r=t.getContext(n[i],e),r){cg(r);break}return r}function TD(t,e){return MD(t,e)}const ID=`/**
|
18
|
+
see: http://github.com/greggman/twgl.js for details */const Ju=5120,ro=5121,$u=5122,el=5123,tl=5124,nl=5125,rl=5126,Q3=32819,V3=32820,Y3=33635,_3=5131,W3=33640,X3=35899,Z3=35902,q3=36269,K3=34042,Kp={};{const t=Kp;t[Ju]=Int8Array,t[ro]=Uint8Array,t[$u]=Int16Array,t[el]=Uint16Array,t[tl]=Int32Array,t[nl]=Uint32Array,t[rl]=Float32Array,t[Q3]=Uint16Array,t[V3]=Uint16Array,t[Y3]=Uint16Array,t[_3]=Uint16Array,t[W3]=Uint32Array,t[X3]=Uint32Array,t[Z3]=Uint32Array,t[q3]=Uint32Array,t[K3]=Uint32Array}function il(t){if(t instanceof Int8Array)return Ju;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return ro;if(t instanceof Int16Array)return $u;if(t instanceof Uint16Array)return el;if(t instanceof Int32Array)return tl;if(t instanceof Uint32Array)return nl;if(t instanceof Float32Array)return rl;throw new Error("unsupported typed array type")}function J3(t){if(t===Int8Array)return Ju;if(t===Uint8Array||t===Uint8ClampedArray)return ro;if(t===Int16Array)return $u;if(t===Uint16Array)return el;if(t===Int32Array)return tl;if(t===Uint32Array)return nl;if(t===Float32Array)return rl;throw new Error("unsupported typed array type")}function $3(t){const e=Kp[t];if(!e)throw new Error("unknown gl type");return e}const Wa=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 eC(...t){console.error(...t)}function Jp(...t){console.warn(...t)}function tC(t,e){return typeof WebGLBuffer<"u"&&e instanceof WebGLBuffer}function $p(t,e){return typeof WebGLRenderbuffer<"u"&&e instanceof WebGLRenderbuffer}function Xa(t,e){return typeof WebGLTexture<"u"&&e instanceof WebGLTexture}function nC(t,e){return typeof WebGLSampler<"u"&&e instanceof WebGLSampler}const em=35044,mt=34962,rC=34963,iC=34660,oC=5120,aC=5121,sC=5122,cC=5123,uC=5124,lC=5125,fC=5126,tm={attribPrefix:""};function nm(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||em)}function rm(t,e,n,r){if(tC(t,e))return e;n=n||mt;const i=t.createBuffer();return nm(t,n,i,e,r),i}function im(t){return t==="indices"}function dC(t){return t instanceof Int8Array||t instanceof Uint8Array}function hC(t){return t===Int8Array||t===Uint8Array}function pC(t){return t.length?t:t.data}const mC=/coord|texture/i,gC=/color|colour/i;function om(t,e){let n;if(mC.test(t)?n=2:gC.test(t)?n=4:n=3,e%n>0)throw new Error(`Can not guess numComponents for attribute '${t}'. Tried ${n} but ${e} values is not evenly divisible by ${n}. You should specify it.`);return n}function yC(t,e){return t.numComponents||t.size||om(e,pC(t).length)}function ol(t,e){if(Wa(t))return t;if(Wa(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(im(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function vC(t,e){const n={};return Object.keys(e).forEach(function(r){if(!im(r)){const i=e[r],o=i.attrib||i.name||i.attribName||tm.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Wa(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let a,s,c,u;if(i.buffer&&i.buffer instanceof WebGLBuffer)a=i.buffer,u=i.numComponents||i.size,s=i.type,c=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const f=i.data||i,l=i.type||Float32Array,d=f*l.BYTES_PER_ELEMENT;s=J3(l),c=i.normalize!==void 0?i.normalize:hC(l),u=i.numComponents||i.size||om(r,f),a=t.createBuffer(),t.bindBuffer(mt,a),t.bufferData(mt,d,i.drawType||em)}else{const f=ol(i,r);a=rm(t,f,void 0,i.drawType),s=il(f),c=i.normalize!==void 0?i.normalize:dC(f),u=yC(i,r)}n[o]={buffer:a,numComponents:u,type:s,normalize:c,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(mt,null),n}function bC(t,e,n,r){n=ol(n),r!==void 0?(t.bindBuffer(mt,e.buffer),t.bufferSubData(mt,r,n)):nm(t,mt,e.buffer,n,e.drawType)}function AC(t,e){return e===oC||e===aC?1:e===sC||e===cC?2:e===uC||e===lC||e===fC?4:0}const al=["position","positions","a_position"];function xC(t,e){let n,r;for(r=0;r<al.length&&(n=al[r],!(n in e||(n=tm.attribPrefix+n,n in e)));++r);r===al.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(mt,i.buffer);const o=t.getBufferParameter(mt,iC);t.bindBuffer(mt,null);const a=AC(t,i.type),s=o/a,c=i.numComponents||i.size,u=s/c;if(u%1!==0)throw new Error(`numComponents ${c} not correct for length ${length}`);return u}function wC(t,e,n){const r=vC(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const a=ol(o,"indices");i.indices=rm(t,a,rC),i.numElements=a.length,i.elementType=il(a)}else i.numElements||(i.numElements=xC(t,i.attribs));return i}function Fr(t){return!!t.texStorage2D}const sl=function(){const t={},e={};function n(r){const i=r.constructor.name;if(!t[i]){for(const o in r)if(typeof r[o]=="number"){const a=e[r[o]];e[r[o]]=a?`${a} | ${o}`:o}t[i]=!0}}return function(i,o){return n(i),e[o]||(typeof o=="number"?`0x${o.toString(16)}`:o)}}(),on={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Pr=Wa,am=function(){let t;return function(){return t=t||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),sm=6406,gt=6407,re=6408,cm=6409,um=6410,io=6402,lm=34041,Za=33071,CC=9728,SC=9729,Nt=3553,Lt=34067,an=32879,sn=35866,qa=34069,EC=34070,DC=34071,MC=34072,TC=34073,IC=34074,cl=10241,ul=10240,Ka=10242,Ja=10243,fm=32882,kC=33082,NC=33083,LC=33084,BC=33085,ll=3317,dm=3314,hm=32878,pm=3316,mm=3315,gm=32877,OC=37443,FC=37441,PC=37440,zC=33321,RC=36756,jC=33325,UC=33326,HC=33330,GC=33329,QC=33338,VC=33337,YC=33340,_C=33339,WC=33323,XC=36757,ZC=33327,qC=33328,KC=33336,JC=33335,$C=33332,eS=33331,tS=33334,nS=33333,rS=32849,iS=35905,oS=36194,aS=36758,sS=35898,cS=35901,uS=34843,lS=34837,fS=36221,dS=36239,hS=36215,pS=36233,mS=36209,gS=36227,yS=32856,vS=35907,bS=36759,AS=32855,xS=32854,wS=32857,CS=34842,SS=34836,ES=36220,DS=36238,MS=36975,TS=36214,IS=36232,kS=36226,NS=36208,LS=33189,BS=33190,OS=36012,FS=36013,PS=35056,cn=5120,ie=5121,$a=5122,zr=5123,es=5124,qn=5125,Se=5126,ym=32819,vm=32820,bm=33635,at=5131,oo=36193,fl=33640,zS=35899,RS=35902,jS=36269,US=34042,ts=33319,Rr=33320,ns=6403,jr=36244,Ur=36248,Kn=36249;let dl;function rs(t){if(!dl){const e={};e[sm]={textureFormat:sm,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[ie,at,oo,Se]},e[cm]={textureFormat:cm,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[ie,at,oo,Se]},e[um]={textureFormat:um,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[ie,at,oo,Se]},e[gt]={textureFormat:gt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[ie,at,oo,Se,bm]},e[re]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[ie,at,oo,Se,ym,vm]},e[io]={textureFormat:io,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[qn,zr]},e[zC]={textureFormat:ns,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[ie]},e[RC]={textureFormat:ns,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[cn]},e[jC]={textureFormat:ns,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[Se,at]},e[UC]={textureFormat:ns,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[Se]},e[HC]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[ie]},e[GC]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[cn]},e[$C]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[zr]},e[eS]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[$a]},e[tS]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[qn]},e[nS]={textureFormat:jr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[es]},e[WC]={textureFormat:ts,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[ie]},e[XC]={textureFormat:ts,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[cn]},e[ZC]={textureFormat:ts,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[Se,at]},e[qC]={textureFormat:ts,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[Se]},e[KC]={textureFormat:Rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ie]},e[JC]={textureFormat:Rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[cn]},e[QC]={textureFormat:Rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[zr]},e[VC]={textureFormat:Rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[$a]},e[YC]={textureFormat:Rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[qn]},e[_C]={textureFormat:Rr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[es]},e[rS]={textureFormat:gt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[ie]},e[iS]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[ie]},e[oS]={textureFormat:gt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[ie,bm]},e[aS]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[cn]},e[sS]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Se,at,zS]},e[cS]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Se,at,RS]},e[uS]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[Se,at]},e[lS]={textureFormat:gt,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Se]},e[fS]={textureFormat:Ur,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[ie]},e[dS]={textureFormat:Ur,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[cn]},e[hS]={textureFormat:Ur,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[zr]},e[pS]={textureFormat:Ur,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[$a]},e[mS]={textureFormat:Ur,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[qn]},e[gS]={textureFormat:Ur,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[es]},e[yS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ie]},e[vS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ie]},e[bS]={textureFormat:re,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[cn]},e[AS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[ie,vm,fl]},e[xS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[ie,ym]},e[wS]={textureFormat:re,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[fl]},e[CS]={textureFormat:re,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[Se,at]},e[SS]={textureFormat:re,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[Se]},e[ES]={textureFormat:Kn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ie]},e[DS]={textureFormat:Kn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[cn]},e[MS]={textureFormat:Kn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[fl]},e[TS]={textureFormat:Kn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[zr]},e[IS]={textureFormat:Kn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[$a]},e[kS]={textureFormat:Kn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[es]},e[NS]={textureFormat:Kn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[qn]},e[LS]={textureFormat:io,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[zr,qn]},e[BS]={textureFormat:io,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[qn]},e[OS]={textureFormat:io,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Se]},e[PS]={textureFormat:lm,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[US]},e[FS]={textureFormat:lm,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[jS]},Object.keys(e).forEach(function(n){const r=e[n];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,o){const a=r.type[o];r.bytesPerElementMap[a]=i})}),dl=e}return dl[t]}function HS(t,e){const n=rs(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function Hr(t){const e=rs(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function Am(t){return(t&t-1)===0}function GS(t,e,n,r){if(!Fr(t))return Am(e)&&Am(n);const i=rs(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function QS(t){const e=rs(t);if(!e)throw"unknown internal format";return e.textureFilterable}function xm(t,e,n){return Pr(e)?il(e):n||ie}function is(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===Lt?6:1));o%1===0?(n=o,r=o):(n=i,r=1)}else if(r){if(!n&&(n=i/r,n%1))throw"can't guess dimensions"}else if(r=i/n,r%1)throw"can't guess dimensions";return{width:n,height:r}}function Gr(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(OC,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(FC,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(PC,e.flipY)}function wm(t){t.pixelStorei(ll,4),Fr(t)&&(t.pixelStorei(dm,0),t.pixelStorei(hm,0),t.pixelStorei(pm,0),t.pixelStorei(mm,0),t.pixelStorei(gm,0))}function VS(t,e,n,r){r.minMag&&(n.call(t,e,cl,r.minMag),n.call(t,e,ul,r.minMag)),r.min&&n.call(t,e,cl,r.min),r.mag&&n.call(t,e,ul,r.mag),r.wrap&&(n.call(t,e,Ka,r.wrap),n.call(t,e,Ja,r.wrap),(e===an||nC(t,e))&&n.call(t,e,fm,r.wrap)),r.wrapR&&n.call(t,e,fm,r.wrapR),r.wrapS&&n.call(t,e,Ka,r.wrapS),r.wrapT&&n.call(t,e,Ja,r.wrapT),r.minLod&&n.call(t,e,kC,r.minLod),r.maxLod&&n.call(t,e,NC,r.maxLod),r.baseLevel&&n.call(t,e,LC,r.baseLevel),r.maxLevel&&n.call(t,e,BC,r.maxLevel)}function Cm(t,e,n){const r=n.target||Nt;t.bindTexture(r,e),VS(t,r,t.texParameteri,n)}function YS(t){return t=t||on.textureColor,Pr(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function hl(t,e,n,r,i,o){n=n||on.textureOptions,o=o||re;const a=n.target||Nt;if(r=r||n.width,i=i||n.height,t.bindTexture(a,e),GS(t,r,i,o))t.generateMipmap(a);else{const s=QS(o)?SC:CC;t.texParameteri(a,cl,s),t.texParameteri(a,ul,s),t.texParameteri(a,Ka,Za),t.texParameteri(a,Ja,Za)}}function ao(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function pl(t,e){return e=e||{},e.cubeFaceOrder||[qa,EC,DC,MC,TC,IC]}function ml(t,e){const r=pl(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function Sm(t,e,n,r){r=r||on.textureOptions;const i=r.target||Nt,o=r.level||0;let a=n.width,s=n.height;const c=r.internalFormat||r.format||re,u=Hr(c),f=r.format||u.format,l=r.type||u.type;if(Gr(t,r),t.bindTexture(i,e),i===Lt){const d=n.width,p=n.height;let h,m;if(d/6===p)h=p,m=[0,0,1,0,2,0,3,0,4,0,5,0];else if(p/6===d)h=d,m=[0,0,0,1,0,2,0,3,0,4,0,5];else if(d/3===p/2)h=d/3,m=[0,0,1,0,2,0,0,1,1,1,2,1];else if(d/2===p/3)h=d/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);const g=am();g?(g.canvas.width=h,g.canvas.height=h,a=h,s=h,ml(t,r).forEach(function(y){const b=m[y.ndx*2+0]*h,w=m[y.ndx*2+1]*h;g.drawImage(n,b,w,h,h,0,0,h,h),t.texImage2D(y.face,o,c,f,l,g.canvas)}),g.canvas.width=1,g.canvas.height=1):typeof createImageBitmap<"u"&&(a=h,s=h,ml(t,r).forEach(function(y){const b=m[y.ndx*2+0]*h,w=m[y.ndx*2+1]*h;t.texImage2D(y.face,o,c,h,h,0,f,l,null),createImageBitmap(n,b,w,h,h,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(C){Gr(t,r),t.bindTexture(i,e),t.texImage2D(y.face,o,c,f,l,C),ao(r)&&hl(t,e,r,a,s,c)})}))}else if(i===an||i===sn){const d=Math.min(n.width,n.height),p=Math.max(n.width,n.height),h=p/d;if(h%1!==0)throw"can not compute 3D dimensions of element";const m=n.width===p?1:0,g=n.height===p?1:0;t.pixelStorei(ll,1),t.pixelStorei(dm,n.width),t.pixelStorei(hm,0),t.pixelStorei(gm,0),t.texImage3D(i,o,c,d,d,d,0,f,l,null);for(let y=0;y<h;++y){const b=y*d*m,w=y*d*g;t.pixelStorei(pm,b),t.pixelStorei(mm,w),t.texSubImage3D(i,o,0,0,y,d,d,1,f,l,n)}wm(t)}else t.texImage2D(i,o,c,f,l,n);ao(r)&&hl(t,e,r,a,s,c),Cm(t,e,r)}function so(){}function _S(t){if(typeof document<"u"){const e=document.createElement("a");return e.href=t,e.hostname===location.hostname&&e.port===location.port&&e.protocol===location.protocol}else{const e=new URL(location.href).origin;return new URL(t,location.href).origin===e}}function WS(t,e){return e===void 0&&!_S(t)?"anonymous":e}function XS(t,e,n){n=n||so;let r;if(e=e!==void 0?e:on.crossOrigin,e=WS(t,e),typeof Image<"u"){r=new Image,e!==void 0&&(r.crossOrigin=e);const i=function(){r.removeEventListener("error",o),r.removeEventListener("load",a),r=null},o=function(){const c="couldn't load image: "+t;eC(c),n(c,r),i()},a=function(){n(null,r),i()};return r.addEventListener("error",o),r.addEventListener("load",a),r.src=t,r}else if(typeof ImageBitmap<"u"){let i,o;const a=function(){n(i,o)},s={};e&&(s.mode="cors"),fetch(t,s).then(function(c){if(!c.ok)throw c;return c.blob()}).then(function(c){return createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(c){o=c,setTimeout(a)}).catch(function(c){i=c,setTimeout(a)}),r=null}return r}function Em(t){return typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof ImageData<"u"&&t instanceof ImageData||typeof HTMLElement<"u"&&t instanceof HTMLElement}function gl(t,e,n){return Em(t)?(setTimeout(function(){n(null,t)}),t):XS(t,e,n)}function yl(t,e,n){n=n||on.textureOptions;const r=n.target||Nt;if(t.bindTexture(r,e),n.color===!1)return;const i=YS(n.color);if(r===Lt)for(let o=0;o<6;++o)t.texImage2D(qa+o,0,re,1,1,0,re,ie,i);else r===an||r===sn?t.texImage3D(r,0,re,1,1,1,0,re,ie,i):t.texImage2D(r,0,re,1,1,0,re,ie,i)}function ZS(t,e,n,r){return r=r||so,n=n||on.textureOptions,yl(t,e,n),n=Object.assign({},n),gl(n.src,n.crossOrigin,function(o,a){o?r(o,e,a):(Sm(t,e,a,n),r(null,e,a))})}function qS(t,e,n,r){r=r||so;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const o=n.level||0,a=n.internalFormat||n.format||re,s=Hr(a),c=n.format||s.format,u=n.type||ie,f=n.target||Nt;if(f!==Lt)throw"target must be TEXTURE_CUBE_MAP";yl(t,e,n),n=Object.assign({},n);let l=6;const d=[],p=pl(t,n);let h;function m(g){return function(y,b){--l,y?d.push(y):b.width!==b.height?d.push("cubemap face img is not a square: "+b.src):(Gr(t,n),t.bindTexture(f,e),l===5?pl().forEach(function(w){t.texImage2D(w,o,a,c,u,b)}):t.texImage2D(g,o,a,c,u,b),ao(n)&&t.generateMipmap(f)),l===0&&r(d.length?d:void 0,e,h)}}h=i.map(function(g,y){return gl(g,n.crossOrigin,m(p[y]))})}function KS(t,e,n,r){r=r||so;const i=n.src,o=n.internalFormat||n.format||re,a=Hr(o),s=n.format||a.format,c=n.type||ie,u=n.target||sn;if(u!==an&&u!==sn)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";yl(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let d;const p=n.level||0;let h=n.width,m=n.height;const g=i.length;let y=!0;function b(w){return function(C,x){if(--f,C)l.push(C);else{if(Gr(t,n),t.bindTexture(u,e),y){y=!1,h=n.width||x.width,m=n.height||x.height,t.texImage3D(u,p,o,h,m,g,0,s,c,null);for(let v=0;v<g;++v)t.texSubImage3D(u,p,0,0,v,h,m,1,s,c,x)}else{let v=x,A;(x.width!==h||x.height!==m)&&(A=am(),v=A.canvas,A.canvas.width=h,A.canvas.height=m,A.drawImage(x,0,0,h,m)),t.texSubImage3D(u,p,0,0,w,h,m,1,s,c,v),A&&v===A.canvas&&(A.canvas.width=0,A.canvas.height=0)}ao(n)&&t.generateMipmap(u)}f===0&&r(l.length?l:void 0,e,d)}}d=i.map(function(w,C){return gl(w,n.crossOrigin,b(C))})}function Dm(t,e,n,r){r=r||on.textureOptions;const i=r.target||Nt;t.bindTexture(i,e);let o=r.width,a=r.height,s=r.depth;const c=r.level||0,u=r.internalFormat||r.format||re,f=Hr(u),l=r.format||f.format,d=r.type||xm(t,n,f.type);if(Pr(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const g=$3(d);n=new g(n)}const p=HS(u,d),h=n.byteLength/p;if(h%1)throw"length wrong size for format: "+sl(t,l);let m;if(i===an||i===sn)if(!o&&!a&&!s){const g=Math.cbrt(h);if(g%1!==0)throw"can't guess cube size of array of numElements: "+h;o=g,a=g,s=g}else o&&(!a||!s)?(m=is(t,i,a,s,h/o),a=m.width,s=m.height):a&&(!o||!s)?(m=is(t,i,o,s,h/a),o=m.width,s=m.height):(m=is(t,i,o,a,h/s),o=m.width,a=m.height);else m=is(t,i,o,a,h),o=m.width,a=m.height;if(wm(t),t.pixelStorei(ll,r.unpackAlignment||1),Gr(t,r),i===Lt){const g=p/n.BYTES_PER_ELEMENT,y=h/6*g;ml(t,r).forEach(b=>{const w=y*b.ndx,C=n.subarray(w,w+y);t.texImage2D(b.face,c,u,o,a,0,l,d,C)})}else i===an||i===sn?t.texImage3D(i,c,u,o,a,s,0,l,d,n):t.texImage2D(i,c,u,o,a,0,l,d,n);return{width:o,height:a,depth:s,type:d}}function JS(t,e,n){const r=n.target||Nt;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||re,a=Hr(o),s=n.format||a.format,c=n.type||a.type;if(Gr(t,n),r===Lt)for(let u=0;u<6;++u)t.texImage2D(qa+u,i,o,n.width,n.height,0,s,c,null);else r===an||r===sn?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,s,c,null):t.texImage2D(r,i,o,n.width,n.height,0,s,c,null)}function co(t,e,n){n=n||so,e=e||on.textureOptions;const r=t.createTexture(),i=e.target||Nt;let o=e.width||1,a=e.height||1;const s=e.internalFormat||re;t.bindTexture(i,r),i===Lt&&(t.texParameteri(i,Ka,Za),t.texParameteri(i,Ja,Za));let c=e.src;if(c)if(typeof c=="function"&&(c=c(t,e)),typeof c=="string")ZS(t,r,e,n);else if(Pr(c)||Array.isArray(c)&&(typeof c[0]=="number"||Array.isArray(c[0])||Pr(c[0]))){const u=Dm(t,r,c,e);o=u.width,a=u.height}else Array.isArray(c)&&(typeof c[0]=="string"||Em(c[0]))?i===Lt?qS(t,r,e,n):KS(t,r,e,n):(Sm(t,r,c,e),o=c.width,a=c.height);else JS(t,r,e);return ao(e)&&hl(t,r,e,o,a,s),Cm(t,r,e),r}function $S(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const a=n.target||Nt;t.bindTexture(a,e);const s=n.level||0,c=n.internalFormat||n.format||re,u=Hr(c),f=n.format||u.format;let l;const d=n.src;if(d&&(Pr(d)||Array.isArray(d)&&typeof d[0]=="number")?l=n.type||xm(t,d,u.type):l=n.type||u.type,a===Lt)for(let p=0;p<6;++p)t.texImage2D(qa+p,s,c,r,i,0,f,l,null);else a===an||a===sn?t.texImage3D(a,s,c,r,i,o,0,f,l,null):t.texImage2D(a,s,c,r,i,0,f,l,null)}const eE=Jp,os=33984,tE=35048,as=34962,nE=34963,vl=35345,Mm=35718,rE=35721,iE=35971,oE=35382,aE=35396,sE=35398,cE=35392,uE=35395,ss=5126,Tm=35664,Im=35665,km=35666,bl=5124,Nm=35667,Lm=35668,Bm=35669,Om=35670,Fm=35671,Pm=35672,zm=35673,Rm=35674,jm=35675,Um=35676,lE=35678,fE=35680,dE=35679,hE=35682,pE=35685,mE=35686,gE=35687,yE=35688,vE=35689,bE=35690,AE=36289,xE=36292,wE=36293,Al=5125,Hm=36294,Gm=36295,Qm=36296,CE=36298,SE=36299,EE=36300,DE=36303,ME=36306,TE=36307,IE=36308,kE=36311,cs=3553,us=34067,xl=32879,ls=35866,P={};function Vm(t,e){return P[e].bindPoint}function NE(t,e){return function(n){t.uniform1f(e,n)}}function LE(t,e){return function(n){t.uniform1fv(e,n)}}function BE(t,e){return function(n){t.uniform2fv(e,n)}}function OE(t,e){return function(n){t.uniform3fv(e,n)}}function FE(t,e){return function(n){t.uniform4fv(e,n)}}function Ym(t,e){return function(n){t.uniform1i(e,n)}}function _m(t,e){return function(n){t.uniform1iv(e,n)}}function Wm(t,e){return function(n){t.uniform2iv(e,n)}}function Xm(t,e){return function(n){t.uniform3iv(e,n)}}function Zm(t,e){return function(n){t.uniform4iv(e,n)}}function PE(t,e){return function(n){t.uniform1ui(e,n)}}function zE(t,e){return function(n){t.uniform1uiv(e,n)}}function RE(t,e){return function(n){t.uniform2uiv(e,n)}}function jE(t,e){return function(n){t.uniform3uiv(e,n)}}function UE(t,e){return function(n){t.uniform4uiv(e,n)}}function HE(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function GE(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function QE(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function VE(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function YE(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function _E(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function WE(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function XE(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function ZE(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function Me(t,e,n,r){const i=Vm(t,e);return Fr(t)?function(o){let a,s;Xa(t,o)?(a=o,s=null):(a=o.texture,s=o.sampler),t.uniform1i(r,n),t.activeTexture(os+n),t.bindTexture(i,a),t.bindSampler(n,s)}:function(o){t.uniform1i(r,n),t.activeTexture(os+n),t.bindTexture(i,o)}}function Te(t,e,n,r,i){const o=Vm(t,e),a=new Int32Array(i);for(let s=0;s<i;++s)a[s]=n+s;return Fr(t)?function(s){t.uniform1iv(r,a),s.forEach(function(c,u){t.activeTexture(os+a[u]);let f,l;Xa(t,c)?(f=c,l=null):(f=c.texture,l=c.sampler),t.bindSampler(n,l),t.bindTexture(o,f)})}:function(s){t.uniform1iv(r,a),s.forEach(function(c,u){t.activeTexture(os+a[u]),t.bindTexture(o,c)})}}P[ss]={Type:Float32Array,size:4,setter:NE,arraySetter:LE},P[Tm]={Type:Float32Array,size:8,setter:BE,cols:2},P[Im]={Type:Float32Array,size:12,setter:OE,cols:3},P[km]={Type:Float32Array,size:16,setter:FE,cols:4},P[bl]={Type:Int32Array,size:4,setter:Ym,arraySetter:_m},P[Nm]={Type:Int32Array,size:8,setter:Wm,cols:2},P[Lm]={Type:Int32Array,size:12,setter:Xm,cols:3},P[Bm]={Type:Int32Array,size:16,setter:Zm,cols:4},P[Al]={Type:Uint32Array,size:4,setter:PE,arraySetter:zE},P[Hm]={Type:Uint32Array,size:8,setter:RE,cols:2},P[Gm]={Type:Uint32Array,size:12,setter:jE,cols:3},P[Qm]={Type:Uint32Array,size:16,setter:UE,cols:4},P[Om]={Type:Uint32Array,size:4,setter:Ym,arraySetter:_m},P[Fm]={Type:Uint32Array,size:8,setter:Wm,cols:2},P[Pm]={Type:Uint32Array,size:12,setter:Xm,cols:3},P[zm]={Type:Uint32Array,size:16,setter:Zm,cols:4},P[Rm]={Type:Float32Array,size:32,setter:HE,rows:2,cols:2},P[jm]={Type:Float32Array,size:48,setter:GE,rows:3,cols:3},P[Um]={Type:Float32Array,size:64,setter:QE,rows:4,cols:4},P[pE]={Type:Float32Array,size:32,setter:VE,rows:2,cols:3},P[mE]={Type:Float32Array,size:32,setter:_E,rows:2,cols:4},P[gE]={Type:Float32Array,size:48,setter:YE,rows:3,cols:2},P[yE]={Type:Float32Array,size:48,setter:XE,rows:3,cols:4},P[vE]={Type:Float32Array,size:64,setter:WE,rows:4,cols:2},P[bE]={Type:Float32Array,size:64,setter:ZE,rows:4,cols:3},P[lE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:cs},P[fE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:us},P[dE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:xl},P[hE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:cs},P[AE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:ls},P[xE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:ls},P[wE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:us},P[CE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:cs},P[SE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:xl},P[EE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:us},P[DE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:ls},P[ME]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:cs},P[TE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:xl},P[IE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:us},P[kE]={Type:null,size:0,setter:Me,arraySetter:Te,bindPoint:ls};function fs(t,e){return function(n){if(n.value)switch(t.disableVertexAttribArray(e),n.value.length){case 4:t.vertexAttrib4fv(e,n.value);break;case 3:t.vertexAttrib3fv(e,n.value);break;case 2:t.vertexAttrib2fv(e,n.value);break;case 1:t.vertexAttrib1fv(e,n.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else t.bindBuffer(as,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||ss,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function un(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4iv(e,n.value);else throw new Error("The length of an integer constant value must be 4!");else t.bindBuffer(as,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||bl,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function ds(t,e){return function(n){if(n.value)if(t.disableVertexAttribArray(e),n.value.length===4)t.vertexAttrib4uiv(e,n.value);else throw new Error("The length of an unsigned integer constant value must be 4!");else t.bindBuffer(as,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Al,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function wl(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(as,o.buffer);const a=o.size||o.numComponents||r,s=a/i,c=o.type||ss,f=P[c].size*a,l=o.normalize||!1,d=o.offset||0,p=f/i;for(let h=0;h<i;++h)t.enableVertexAttribArray(e+h),t.vertexAttribPointer(e+h,s,c,l,f,d+p*h),o.divisor!==void 0&&t.vertexAttribDivisor(e+h,o.divisor)}}const fe={};fe[ss]={size:4,setter:fs},fe[Tm]={size:8,setter:fs},fe[Im]={size:12,setter:fs},fe[km]={size:16,setter:fs},fe[bl]={size:4,setter:un},fe[Nm]={size:8,setter:un},fe[Lm]={size:12,setter:un},fe[Bm]={size:16,setter:un},fe[Al]={size:4,setter:ds},fe[Hm]={size:8,setter:ds},fe[Gm]={size:12,setter:ds},fe[Qm]={size:16,setter:ds},fe[Om]={size:4,setter:un},fe[Fm]={size:8,setter:un},fe[Pm]={size:12,setter:un},fe[zm]={size:16,setter:un},fe[Rm]={size:4,setter:wl,count:2},fe[jm]={size:9,setter:wl,count:3},fe[Um]={size:16,setter:wl,count:4};function qm(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const qE=/(\.|\[|]|\w+)/g,KE=t=>t>="0"&&t<="9";function Km(t,e,n,r){const i=t.split(qE).filter(s=>s!=="");let o=0,a="";for(;;){const s=i[o++];a+=s;const c=KE(s[0]),u=c?parseInt(s):s;if(c&&(a+=i[o++]),o===i.length){n[u]=e;break}else{const l=i[o++],d=l==="[",p=n[u]||(d?[]:{});n[u]=p,n=p,r[a]=r[a]||function(h){return function(m){ng(h,m)}}(p),a+=l}}}function JE(t,e){let n=0;function r(s,c,u){const f=c.name.endsWith("[0]"),l=c.type,d=P[l];if(!d)throw new Error(`unknown type: 0x${l.toString(16)}`);let p;if(d.bindPoint){const h=n;n+=c.size,f?p=d.arraySetter(t,l,h,u,c.size):p=d.setter(t,l,h,u,c.size)}else d.arraySetter&&f?p=d.arraySetter(t,u):p=d.setter(t,u);return p.location=u,p}const i={},o={},a=t.getProgramParameter(e,Mm);for(let s=0;s<a;++s){const c=t.getActiveUniform(e,s);if(qm(c))continue;let u=c.name;u.endsWith("[0]")&&(u=u.substr(0,u.length-3));const f=t.getUniformLocation(e,c.name);if(f){const l=r(e,c,f);i[u]=l,Km(u,l,o,i)}}return i}function $E(t,e){const n={},r=t.getProgramParameter(e,iE);for(let i=0;i<r;++i){const o=t.getTransformFeedbackVarying(e,i);n[o.name]={index:i,type:o.type,size:o.size}}return n}function eD(t,e){const n=t.getProgramParameter(e,Mm),r=[],i=[];for(let s=0;s<n;++s){i.push(s),r.push({});const c=t.getActiveUniform(e,s);r[s].name=c.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(s){const c=s[0],u=s[1];t.getActiveUniforms(e,i,t[c]).forEach(function(f,l){r[l][u]=f})});const o={},a=t.getProgramParameter(e,oE);for(let s=0;s<a;++s){const c=t.getActiveUniformBlockName(e,s),u={index:t.getUniformBlockIndex(e,c),usedByVertexShader:t.getActiveUniformBlockParameter(e,s,aE),usedByFragmentShader:t.getActiveUniformBlockParameter(e,s,sE),size:t.getActiveUniformBlockParameter(e,s,cE),uniformIndices:t.getActiveUniformBlockParameter(e,s,uE)};u.used=u.usedByVertexShader||u.usedByFragmentShader,o[c]=u}return{blockSpecs:o,uniformData:r}}const Jm=/\[\d+\]\.$/,tD=(t,e)=>((t+(e-1))/e|0)*e;function nD(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(a){let s=0,c=0;for(let u=0;u<o;++u){for(let f=0;f<r;++f)t[s++]=a[c++];s+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function rD(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,a=i[r];if(!a)return eE("no uniform block object named:",r),{name:r,uniforms:{}};const s=new ArrayBuffer(a.size),c=t.createBuffer(),u=a.index;t.bindBuffer(vl,c),t.uniformBlockBinding(e,a.index,u);let f=r+".";Jm.test(f)&&(f=f.replace(Jm,"."));const l={},d={},p={};return a.uniformIndices.forEach(function(h){const m=o[h];let g=m.name;g.startsWith(f)&&(g=g.substr(f.length));const y=g.endsWith("[0]");y&&(g=g.substr(0,g.length-3));const b=P[m.type],w=b.Type,C=y?tD(b.size,16)*m.size:b.size*m.size,x=new w(s,m.offset,C/w.BYTES_PER_ELEMENT);l[g]=x;const v=nD(x,y,b.rows,b.cols);d[g]=v,Km(g,v,p,d)}),{name:r,array:s,asFloat:new Float32Array(s),buffer:c,uniforms:l,setters:d}}function $m(t,e,n){return rD(t,e.program,e.uniformBlockSpec,n)}function iD(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(vl,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function eg(t,e,n){iD(t,e,n)&&t.bufferData(vl,n.array,tE)}function tg(t,e){const n=t.setters;for(const r in e){const i=n[r];if(i){const o=e[r];i(o)}}}function ng(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):ng(t[n],e[n])}}function je(t,...e){const n=t.uniformSetters||t,r=e.length;for(let i=0;i<r;++i){const o=e[i];if(Array.isArray(o)){const a=o.length;for(let s=0;s<a;++s)je(n,o[s])}else for(const a in o){const s=n[a];s&&s(o[a])}}}function oD(t,e){const n={},r=t.getProgramParameter(e,rE);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(qm(o))continue;const a=t.getAttribLocation(e,o.name),s=fe[o.type],c=s.setter(t,a,s);c.location=a,n[o.name]=c}return n}function aD(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function Qr(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(aD(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(nE,n.indices))}function sD(t,e){const n=JE(t,e),r=oD(t,e),i={program:e,uniformSetters:n,attribSetters:r};return Fr(t)&&(i.uniformBlockSpec=eD(t,e),i.transformFeedbackInfo=$E(t,e)),i}const cD=4,rg=5123;function uo(t,e,n,r,i,o){n=n===void 0?cD:n;const a=e.indices,s=e.elementType,c=r===void 0?e.numElements:r;i=i===void 0?0:i,s||a?o!==void 0?t.drawElementsInstanced(n,c,s===void 0?rg:e.elementType,i,o):t.drawElements(n,c,s===void 0?rg:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,c,o):t.drawArrays(n,i,c)}const uD=36160,Jn=36161,lD=3553,fD=5121,dD=6402,hD=6408,pD=33190,mD=36012,gD=35056,yD=36013,vD=32854,bD=32855,AD=36194,ig=33189,og=6401,ag=36168,Cl=34041,xD=36064,hs=36096,sg=36128,Sl=33306,El=33071,Dl=9729,cg=[{format:hD,type:fD,min:Dl,wrap:El},{format:Cl}],st={};st[Cl]=Sl,st[og]=sg,st[ag]=sg,st[dD]=hs,st[ig]=hs,st[pD]=hs,st[mD]=hs,st[gD]=Sl,st[yD]=Sl;function wD(t,e){return st[t]||st[e]}const ln={};ln[vD]=!0,ln[bD]=!0,ln[AD]=!0,ln[Cl]=!0,ln[ig]=!0,ln[og]=!0,ln[ag]=!0;function CD(t){return ln[t]}function SD(t,e,n,r){const i=uD,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||cg;let a=0;const s={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(c){let u=c.attachment;const f=c.samples,l=c.format;let d=c.attachmentPoint||wD(l,c.internalFormat);if(d||(d=xD+a++),!u)if(f!==void 0||CD(l))u=t.createRenderbuffer(),t.bindRenderbuffer(Jn,u),f>1?t.renderbufferStorageMultisample(Jn,f,l,n,r):t.renderbufferStorage(Jn,l,n,r);else{const p=Object.assign({},c);p.width=n,p.height=r,p.auto===void 0&&(p.auto=!1,p.min=p.min||p.minMag||Dl,p.mag=p.mag||p.minMag||Dl,p.wrapS=p.wrapS||p.wrap||El,p.wrapT=p.wrapT||p.wrap||El),u=co(t,p)}if($p(t,u))t.framebufferRenderbuffer(i,d,Jn,u);else if(Xa(t,u))c.layer!==void 0?t.framebufferTextureLayer(i,d,u,c.level||0,c.layer):t.framebufferTexture2D(i,d,c.target||lD,u,c.level||0);else throw new Error("unknown attachment type");s.attachments.push(u)}),s}function ED(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||cg,n.forEach(function(o,a){const s=e.attachments[a],c=o.format,u=o.samples;if(u!==void 0||$p(t,s))t.bindRenderbuffer(Jn,s),u>1?t.renderbufferStorageMultisample(Jn,u,c,r,i):t.renderbufferStorage(Jn,c,r,i);else if(Xa(t,s))$S(t,s,o,r,i);else throw new Error("unknown attachment type")})}function DD(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Qr(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const MD=/^(.*?)_/;function TD(t,e){sl(t,0);const n=t.getExtension(e);if(n){const r={},i=MD.exec(e)[1],o="_"+i;for(const a in n){const s=n[a],c=typeof s=="function",u=c?i:o;let f=a;a.endsWith(u)&&(f=a.substring(0,a.length-u.length)),t[f]!==void 0?!c&&t[f]!==s&&Jp(f,t[f],s,a):c?t[f]=function(l){return function(){return l.apply(n,arguments)}}(s):(t[f]=s,r[f]=s)}r.constructor={name:n.constructor.name},sl(r,0)}return n}const ug=["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 lg(t){for(let e=0;e<ug.length;++e)TD(t,ug[e])}function ID(t,e){const n=["webgl2","webgl","experimental-webgl"];let r=null;for(let i=0;i<n.length;++i)if(r=t.getContext(n[i],e),r){lg(r);break}return r}function kD(t,e){return ID(t,e)}const ND=`/**
|
19
19
|
* The vertex position wrt the rectangle specified by (x, x2, y, y2).
|
20
20
|
* [0, 0] = [x, y], [1, 1] = [x2, y2].
|
21
21
|
* The x or y component may contain fractional values if the rectangle
|
@@ -129,7 +129,7 @@ void main(void) {
|
|
129
129
|
|
130
130
|
setupPicking();
|
131
131
|
}
|
132
|
-
`,
|
132
|
+
`,LD=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
|
133
133
|
in vec2 vPosInPixels;
|
134
134
|
#endif
|
135
135
|
|
@@ -180,20 +180,20 @@ void main(void) {
|
|
180
180
|
fragColor = vPickingColor;
|
181
181
|
}
|
182
182
|
}
|
183
|
-
`,Ml="attr_",
|
183
|
+
`,Ml="attr_",fg="uDomain_",BD="range_",dg="scale_",hg="getScaled_",Tl="uRangeTexture_",pg=3402823466e29;function OD(t){const e=t.match(/^(?:(\w+)-)?(\w+)$/);if(!e)throw new Error("Not a scale type: "+t);return{family:e[1]||"continuous",transform:e[2]}}function FD(t,e){let n;if(_a(t))n=$n(qp(t)(e));else if(ne(e))if(Zn(t))n=zD(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(ra(e))n=$n(e?1:0);else if(e===null)if(Zn(t))n=$n([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=$n(e);return`
|
184
184
|
#define ${t}_DEFINED
|
185
|
-
${n.type} ${
|
185
|
+
${n.type} ${hg}${t}() {
|
186
186
|
// Constant value
|
187
187
|
return ${n};
|
188
|
-
}`}function
|
189
|
-
${g} ${
|
188
|
+
}`}function PD(t,e,n){if(ot(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=Or(t),i=Ml+t,o=fg+r,a=BD+r,s=ps(e.type),c=s?"vec2":"float",u=e.domain?e.domain().length:void 0;let f;const l=[];l.push(""),l.push("/".repeat(70)),l.push(`// Channel: ${t}`),l.push(""),l.push(`#define ${t}_DEFINED`);const{transform:d}=OD(e.type),p=(A,...D)=>RD.apply(null,[A,"value",...D]);let h;switch(d){case"linear":h=p("scaleLinear","domain",a);break;case"log":h=p("scaleLog","domain",a,e.base());break;case"symlog":h=p("scaleSymlog","domain",a,e.constant());break;case"pow":case"sqrt":h=p("scalePow","domain",a,e.exponent());break;case"index":case"locus":h=p("scaleBandHp","domain",a,e.paddingInner(),e.paddingOuter(),e.align(),n.band??.5);break;case"point":case"band":h=p("scaleBand","domain",a,e.paddingInner(),e.paddingOuter(),e.align(),n.band??.5);break;case"ordinal":case"null":case"identity":h=p("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${e.type}! ${t}: ${JSON.stringify(n)}`)}const m=Pa(e.type)||Le(e.type)&&Zn(t)?[0,1]:e.range?e.range():void 0;if(m&&t==r&&m.length&&m.every(le)){const A=mg(m);l.push(`const ${A.type} ${a} = ${A};`)}const g=Zn(t)?"vec3":"float";let y;if(Zn(t)){const A=Tl+r;if(t==r&&l.push(`uniform sampler2D ${A};`),Le(e.type))y=`getInterpolatedColor(${A}, transformed)`;else if(nn(e.type)||Hn(e.type))y=`getDiscreteColor(${A}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||Hn(e.type)){const A=Tl+r;t==r&&l.push(`uniform sampler2D ${A};`),y=`getDiscreteColor(${A}, int(transformed)).r`}$i(n)?l.push(`uniform highp ${c} ${i};`):l.push(`in highp ${c} ${i};`);const b=[],w=Le(e.type)&&u>2,C=Hn(e.type)||w;if(b.push("int slot = 0;"),C){const A=o;b.push(w?`while (slot < ${A}.length() - 2 && value >= ${A}[slot + 1]) { slot++; }`:`while (slot < ${A}.length() && value >= ${A}[slot]) { slot++; }`)}const x=Le(e.type)||Hn(e.type)||["band","point"].includes(e.type);if(h){const A=o;x&&(s?b.push(`vec3 domain = ${A};`):b.push(`vec2 domain = vec2(${A}[slot], ${A}[slot + 1]);`)),b.push(`float transformed = ${h};`),w&&b.push(`transformed = (float(slot) + transformed) / (float(${A}.length() - 1));`)}else b.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&b.push(`transformed = clampToRange(transformed, ${mg(m)});`),b.push(`return ${y??"transformed"};`),l.push(`
|
189
|
+
${g} ${dg}${t}(${c} value) {
|
190
190
|
${b.map(A=>` ${A}
|
191
191
|
`).join("")}
|
192
192
|
}`),l.push(`
|
193
|
-
${g} ${
|
194
|
-
return ${
|
193
|
+
${g} ${hg}${t}() {
|
194
|
+
return ${dg}${t}(${i});
|
195
195
|
}`);const v=l.join(`
|
196
|
-
`);if(x&&t==r){const A=Le(e.type)||Hn(e.type)?u:2;f=s?`highp vec3 ${o};`:`mediump float ${o}[${A}];`}return{glsl:v,domainUniform:f}}function Il(t){if(!le(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+
|
196
|
+
`);if(x&&t==r){const A=Le(e.type)||Hn(e.type)?u:2;f=s?`highp vec3 ${o};`:`mediump float ${o}[${A}];`}return{glsl:v,domainUniform:f}}function Il(t){if(!le(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+pg;if(t==-1/0)return""+-pg;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function $n(t){typeof t=="number"&&(t=[t]);const e=t.length;if(e<1||e>4)throw new Error("Invalid number of components: "+e);let n,r;return e>1?(n=`vec${e}`,r=`${n}(${t.map(Il).join(", ")})`):(n="float",r=Il(t[0])),Object.assign(r,{type:n,numComponents:e})}function zD(t){const e=Pn(t).rgb();return $n([e.r,e.g,e.b].map(n=>n/255))}function mg(t){return $n([t[0],Re(t)])}function RD(t,...e){const n=[];for(const r of e)le(r)?n.push(Il(r)):_e(r)?n.push($n(r)):n.push(r);return`${t}(${n.join(", ")})`}function ps(t){return t=="index"||t=="locus"}const gg=2**11,jD=gg-1;function yg(t,e=[]){const n=t&jD,r=t-n;return e[0]=r,e[1]=n,e}function UD(t){const e=t%gg;return[t-e,e]}function HD(t){return[...UD(t[0]),t[1]-t[0]]}class GD{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(Ml+e,n.numComponents||1,n.arrayReference),i=n.f;this.dataUpdaters.push(n.arrayReference?o=>r(i(o)):o=>r(i(o)))}createUpdater(e,n,r){if(!le(this.size))throw new Error("The number of vertices must be defined!");let i,o,a=0;const s=new Float32Array(this.size*n);if(this.arrays[e]={data:s,numComponents:n},n==1){let c=0;const u=f=>{c=+f};i=()=>{s[a++]=c},o=u}else{let c=r??[0];const u=r?f=>{}:f=>{c=f};switch(n){case 1:break;case 2:i=()=>{s[a++]=c[0],s[a++]=c[1]},o=u;break;case 3:i=()=>{s[a++]=c[0],s[a++]=c[1],s[a++]=c[2]},o=u;break;case 4:i=()=>{s[a++]=c[0],s[a++]=c[1],s[a++]=c[2],s[a++]=c[3]},o=u;break;default:throw new Error("Invalid numComponents: "+n)}}return this.pushers.push(i),o}_unrollPushAll(){let e="",n="";for(let i=0;i<this.pushers.length;i++)e+=`const p${i} = that.pushers[${i}];
|
197
197
|
`,n+=`p${i}();
|
198
198
|
`;const r=new Function("that",`${e}
|
199
199
|
|
@@ -201,7 +201,7 @@ ${g} ${fg}${t}() {
|
|
201
201
|
${n}
|
202
202
|
that.vertexCount++;
|
203
203
|
};
|
204
|
-
`);this.pushAll=r(this)}pushAll(){this.size>1e5?this._unrollPushAll():this.pushAll=()=>{for(let n=0;n<this.pushers.length;n++)this.pushers[n]();this.vertexCount++},this.pushAll()}updateFromDatum(e){for(let n=0;n<this.dataUpdaters.length;n++)this.dataUpdaters[n](e)}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}}const Vr=5,kl=127;function Nl(t){const e=[];for(let h=0;h<=kl;h++)e.push(void 0);const n=new Map;for(const h of t.chars)h.id<=kl?e[h.id]=h:n.set(h.id,h);const r=8722;n.has(r)||n.set(r,e["-".charCodeAt(0)]);function i(h){return(h<=kl?e[h]:n.get(h))||e[63]}function o(h){return i(h.charCodeAt(0))}const a=t.common.base,s=o("x"),c=o("X"),u=o("q"),f=s.height-Vr*2,l=c.height-Vr*2,d=u.height-s.height+u.yoffset-s.yoffset;function p(h,m=1){let g=0;for(let y=0;y<h.length;y++)g+=i(h.charCodeAt(y)).xadvance;return g/a*m}return{measureWidth:p,getCharByCode:i,getChar:o,xHeight:f,capHeight:l,descent:d,common:t.common}}function ms(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const
|
204
|
+
`);this.pushAll=r(this)}pushAll(){this.size>1e5?this._unrollPushAll():this.pushAll=()=>{for(let n=0;n<this.pushers.length;n++)this.pushers[n]();this.vertexCount++},this.pushAll()}updateFromDatum(e){for(let n=0;n<this.dataUpdaters.length;n++)this.dataUpdaters[n](e)}pushFromDatum(e){this.updateFromDatum(e),this.pushAll()}}const Vr=5,kl=127;function Nl(t){const e=[];for(let h=0;h<=kl;h++)e.push(void 0);const n=new Map;for(const h of t.chars)h.id<=kl?e[h.id]=h:n.set(h.id,h);const r=8722;n.has(r)||n.set(r,e["-".charCodeAt(0)]);function i(h){return(h<=kl?e[h]:n.get(h))||e[63]}function o(h){return i(h.charCodeAt(0))}const a=t.common.base,s=o("x"),c=o("X"),u=o("q"),f=s.height-Vr*2,l=c.height-Vr*2,d=u.height-s.height+u.yoffset-s.yoffset;function p(h,m=1){let g=0;for(let y=0;y<h.length;y++)g+=i(h.charCodeAt(y)).xadvance;return g/a*m}return{measureWidth:p,getCharByCode:i,getChar:o,xHeight:f,capHeight:l,descent:d,common:t.common}}function ms(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const vg=2**31-1,QD=-(2**31);function VD(t,e,n,r=n){const i=new Int32Array(t);i.fill(vg);let o=QD,a=!1;const s=new Int32Array(t),c=e[0],f=(e[1]-e[0])/t,l=(g,y)=>{const b=(g-c)/f,w=Math.floor(b);return ms(y&&w==b?w-1:w,0,t-1)};function d(g,y,b){y>o?o=y:a||(a=!0,console.debug("Items are not ordered properly. Disabling binned index."));const w=n(g),C=l(w,!1);i[C]>y&&(i[C]=y),s[C]<b&&(s[C]=b)}function p(g,y,b){y>o?o=y:a||(a=!0,console.debug("Items are not ordered properly. Disabling binned index."));const w=n(g),C=r(g),x=l(w,!1),v=l(C,!0);for(let A=x;A<=v;A++)i[A]>y&&(i[A]=y),s[A]<b&&(s[A]=b)}const h=(g,y,b=[0,0])=>{const w=l(g,!1),C=l(y,!0),x=i[w],v=Math.max(s[C],x);return b[0]=x,b[1]=v,b},m=()=>{for(let y=1;y<s.length;y++)s[y]<s[y-1]&&(s[y]=s[y-1]);let g=!0;for(let y=i.length-1;y>0;y--)g&&i[y]==vg?(i[y]=s[y],g=!1):i[y-1]>i[y]&&(i[y-1]=i[y]);return h};if(d.getIndex=m,p.getIndex=m,!a)return n==r?d:p}class lo{constructor({encoders:e,numVertices:n=void 0,attributes:r=[]}){this.encoders=e,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([i,o])=>r.includes(i)&&o&&o.scale&&!o.constant)),this.allocatedVertices=n,this.variableBuilder=new GD(n);for(const[i,o]of Object.entries(this.variableEncoders)){const a=o.accessor,s=[0,0],c=ps(o.scale.type),u=o.indexer,f=u?l=>u(a(l)):c?l=>yg(a(l),s):a;this.variableBuilder.addConverter(i,{f,numComponents:c?2:1,arrayReference:c?s:void 0})}this.lastOffset=0,this.rangeMap=new Tn([],JSON.stringify)}registerBatch(e){var o;const n=this.lastOffset,r=this.variableBuilder.vertexCount,i=r-n;i&&this.rangeMap.set(e,{offset:n,count:i,xIndex:(o=this.xIndexer)==null?void 0:o.getIndex()}),this.lastOffset=r}addBatches(e){for(const[n,r]of e)this.addBatch(n,r)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let o=r;o<i;o++){const a=n[o];this.variableBuilder.pushFromDatum(a),this.addToXIndex(a)}this.registerBatch(e)}prepareXIndexer(e,n=0,r=n+e.length){const i=()=>{this.addToXIndex=c=>{},this.xIndexer=void 0};if(!e.length||r-n<0){i();return}const o=c=>{var u;return c&&Le((u=c.scale)==null?void 0:u.type)&&c},a=o(this.variableEncoders.x),s=o(this.variableEncoders.x2);if(a){const c=a.accessor,u=s?s.accessor:c,f=[c(e[n]),u(e[r-1])];if(f[1]>f[0]){this.xIndexer=VD(50,f,c,u);let l=this.variableBuilder.vertexCount;this.addToXIndex=d=>{let p=this.variableBuilder.vertexCount;this.xIndexer(d,l,p),l=p}}else i()}else i()}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class YD extends lo{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateFrac=this.variableBuilder.createUpdater("frac",2)}addBatch(e,n,r=0,i=n.length){if(i<=r)return;const o=this.encoders,[a,s]=this.visibleRange,c=d=>d.accessor||(p=>0),u=c(o.x),f=c(o.x2);this.prepareXIndexer(n,r,i);const l=[0,0];this.updateFrac(l);for(let d=r;d<i;d++){const p=n[d];let h=u(p),m=f(p);if(h>m&&([h,m]=[m,h]),m<a||h>s)continue;h<a&&(h=a),m>s&&(m=s),this.variableBuilder.updateFromDatum(p),l[0]=0,l[1]=0;const g=1;this.variableBuilder.pushAll();for(let y=0;y<=g;y++)l[0]=y/g,l[1]=0,this.variableBuilder.pushAll(),l[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(p)}this.registerBatch(e)}}class _D extends lo{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0}),this.visibleRange=i,this.tessellationThreshold=r||1/0,this.updateSide=this.variableBuilder.createUpdater("side",1),this.updatePos=this.variableBuilder.createUpdater("pos",1)}addBatch(e,n,r=0,i=n.length){this.prepareXIndexer(n,r,i);for(let o=r;o<i;o++){const a=n[o];this.variableBuilder.updateFromDatum(a),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();const s=1;for(let c=0;c<=s;c++)this.updatePos(c/s),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(a)}this.registerBatch(e)}}class WD extends lo{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class XD extends lo{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}toArrays(){const e=this.variableBuilder.arrays;for(let n of Object.values(e))n.divisor=1;return super.toArrays()}}class ZD extends lo{constructor({encoders:e,attributes:n,fontMetrics:r,properties:i,numCharacters:o=void 0}){super({encoders:e,attributes:n,numVertices:o*6}),this.metadata=r,this.metrics=r,this.properties=i;const s=e.text.channelDef;this.numberFormat=!ot(s)&&s.format?de(s.format):c=>c,this.updateVertexCoord=this.variableBuilder.createUpdater("vertexCoord",2),this.updateTextureCoord=this.variableBuilder.createUpdater("textureCoord",2),this.updateWidth=this.variableBuilder.createUpdater("width",1)}addBatch(e,n,r=0,i=n.length){const o=this.properties.align||"left",a=this.properties.logoLetters??!1,s=this.metadata.common.base,c=this.metadata.common.scaleH;let u=-Vr;switch(this.properties.baseline){case"top":u+=this.metrics.capHeight;break;case"middle":u+=this.metrics.capHeight/2;break;case"bottom":u-=this.metrics.descent;break}const f=this.encoders.text.accessor||this.encoders.text,l=[0,0];this.updateVertexCoord(l);const d=[0,0];this.updateTextureCoord(d),this.prepareXIndexer(n,r,i);for(let p=r;p<i;p++){const h=n[p],m=this.numberFormat(f(h)),g=ne(m)?m:m===null?"":""+m;if(g.length==0)continue;this.variableBuilder.updateFromDatum(h);const y=a?g.length:this.metrics.measureWidth(g);this.updateWidth(y);let b=o=="right"?-y:o=="center"?-y/2:0;if(!a){const v=this.metrics.getCharByCode(g.charCodeAt(0));b-=(v.width-v.xadvance)/s/2}let w=-.5,C=1,x=1;for(let v=0;v<g.length;v++){const A=this.metrics.getCharByCode(g.charCodeAt(v)),D=a?1:A.xadvance/s;if(A.id==32){b+=D;continue}a?(x=(A.width+Vr*2)/A.width,b=-x/2,C=(A.height+Vr*2)/A.height,w=-.5-Vr/A.height):(C=A.height/s,w=-(A.height+A.yoffset+u)/s,x=A.width/s);const k=A.x,O=A.y;l[0]=b,l[1]=w+C,d[0]=k/c,d[1]=O/c,this.variableBuilder.pushAll(),l[0]=b+x,l[1]=w+C,d[0]=(k+A.width)/c,d[1]=O/c,this.variableBuilder.pushAll(),l[0]=b,l[1]=w,d[0]=k/c,d[1]=(O+A.height)/c,this.variableBuilder.pushAll(),l[0]=b+x,l[1]=w+C,d[0]=(k+A.width)/c,d[1]=O/c,this.variableBuilder.pushAll(),l[0]=b,l[1]=w,d[0]=k/c,d[1]=(O+A.height)/c,this.variableBuilder.pushAll(),l[0]=b+x,l[1]=w,d[0]=(k+A.width)/c,d[1]=(O+A.height)/c,this.variableBuilder.pushAll(),b+=D}this.addToXIndex(h)}this.registerBatch(e)}}const bg=`#define PI 3.141593
|
205
205
|
|
206
206
|
uniform View {
|
207
207
|
/** Offset in "unit" units */
|
@@ -264,7 +264,7 @@ vec4 distanceToColor(float d, vec4 fill, vec4 stroke, float halfStrokeWidth) {
|
|
264
264
|
return fill * distanceToRatio(-d);
|
265
265
|
}
|
266
266
|
}
|
267
|
-
`,
|
267
|
+
`,qD=`const float inf = 1.0 / 0.0;
|
268
268
|
|
269
269
|
// Utils ------------
|
270
270
|
|
@@ -376,7 +376,7 @@ float scaleBandHp(vec2 value, vec3 domainExtent, vec2 range,
|
|
376
376
|
|
377
377
|
return dot(vec4(start, hi, lo, bandwidth), vec4(1.0, step, step, band));
|
378
378
|
}
|
379
|
-
`,
|
379
|
+
`,KD=`
|
380
380
|
/**
|
381
381
|
* Describes where a sample facet should be shown. Interpolating between the
|
382
382
|
* current and target positions/heights allows for transitioning between facet
|
@@ -483,7 +483,7 @@ float getSampleFacetHeight(vec2 pos) {
|
|
483
483
|
return facetPos.height;
|
484
484
|
}
|
485
485
|
}
|
486
|
-
`,
|
486
|
+
`,JD=`/*
|
487
487
|
* Based on concepts presented at:
|
488
488
|
* https://webglfundamentals.org/webgl/lessons/webgl-picking.html
|
489
489
|
* https://deck.gl/docs/developer-guide/custom-layers/picking
|
@@ -510,22 +510,22 @@ bool setupPicking() {
|
|
510
510
|
}
|
511
511
|
return false;
|
512
512
|
}
|
513
|
-
|
514
|
-
`,gs=Symbol("cacheMap");function Yr(t,e,n){let r=
|
513
|
+
`,$D=`in highp vec4 vPickingColor;
|
514
|
+
`,gs=Symbol("cacheMap");function Yr(t,e,n){let r=ho(t).get(e);return r===void 0&&(r=n(e),ho(t).set(e,r)),r}function Ag(t,e){ho(t).delete(e)}function fo(t,e){const n=ho(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);ho(t).delete(e)}function xg(t){t[gs]=new Map}function ho(t){return t[gs]||xg(t),t[gs]}function eM(t,e,n,r){const i=ne(t)?t:t.name,o=!ne(t)&&t.extent||[0,1];if(n===void 0&&!ne(t)&&(n=t.count),i){const a=Pu(i);if(Ie(a)){const s=wg(a,{extent:o,count:n});return po(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},s,r)}else{if(_e(a))return Ll(a,e);throw new Error("Unknown scheme: "+i)}}}function tM(t,e="rgb",n,r){const i=za(t,ne(e)?e:e.type,ne(e)?void 0:e.gamma),o=wg(i);return po(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function nM(t,e,n,r){const i=Math.max(t.length,n||0),o=new Float32Array(i);for(let a=0;a<i;a++)o[a]=t[a%t.length];return po(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function Ll(t,e,n,r){const i=Cg(t,n);return po(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function wg(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=Re(e)-i,a=_t(r).map(s=>s/(r-1)).map(s=>i+s/o).map(t);return n&&a.reverse(),Cg(a)}function Cg(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const o=Pn(t[i%t.length]).rgb();r[i*3+0]=o.r,r[i*3+1]=o.g,r[i*3+2]=o.b}return r}class rM{constructor(e,n){this._container=e,this._sizeSource=n,this._shaderCache=new Map,this._listeners=[],this.rangeTextures=new WeakMap;const r=document.createElement("canvas");e.appendChild(r);const i=kD(r,{antialias:!0,depth:!1,premultipliedAlpha:!0});if(!i)throw new Error("Unable to initialize WebGL. Your browser or machine may not support it.");if(!Fr(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");lg(i),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),this.canvas=r,this.gl=i,this._pickingAttachmentOptions=[{format:i.RGBA,type:i.UNSIGNED_BYTE,minMag:i.LINEAR,wrap:i.CLAMP_TO_EDGE}],this._pickingBufferInfo=SD(i,this._pickingAttachmentOptions),i.bindFramebuffer(i.FRAMEBUFFER,null),this.adjustGl(),this._resizeObserver=new ResizeObserver(o=>{this.invalidateSize(),this._emit("resize")}),this._resizeObserver.observe(this._container),this._updateDpr()}invalidateSize(){this._logicalCanvasSize=void 0,this._updateDpr(),this.adjustGl()}_updateDpr(){this.dpr=window.devicePixelRatio}compileShader(e,n){const r="#version 300 es",i="precision mediump float;";_e(n)&&(n=n.join(`
|
515
515
|
|
516
516
|
`));const o=this.gl,a=n.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let s=this._shaderCache.get(a);if(!s){const c=[r,i,n].join(`
|
517
517
|
|
518
|
-
`);s=o.createShader(e),o.shaderSource(s,c),o.compileShader(s),this._shaderCache.set(a,s)}return s}adjustGl(){const e=this.getLogicalCanvasSize();this.canvas.style.width=`${e.width}px`,this.canvas.style.height=`${e.height}px`;const n=this.getPhysicalCanvasSize(e);this.canvas.width=n.width,this.canvas.height=n.height,
|
518
|
+
`);s=o.createShader(e),o.shaderSource(s,c),o.compileShader(s),this._shaderCache.set(a,s)}return s}adjustGl(){const e=this.getLogicalCanvasSize();this.canvas.style.width=`${e.width}px`,this.canvas.style.height=`${e.height}px`;const n=this.getPhysicalCanvasSize(e);this.canvas.width=n.width,this.canvas.height=n.height,ED(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions)}finalize(){this._resizeObserver.unobserve(this._container),this.canvas.remove()}getPhysicalCanvasSize(e){return e=e||this.getLogicalCanvasSize(),{width:e.width*this.dpr,height:e.height*this.dpr}}getLogicalCanvasSize(){var o;if(this._logicalCanvasSize)return this._logicalCanvasSize;const e=((o=this._sizeSource)==null?void 0:o.call(this))??{width:void 0,height:void 0},n=window.getComputedStyle(this._container,null),r=e.width??this._container.clientWidth-parseFloat(n.paddingLeft)-parseFloat(n.paddingRight),i=e.height??this._container.clientHeight-parseFloat(n.paddingTop)-parseFloat(n.paddingBottom);return this._logicalCanvasSize={width:r,height:i},this._logicalCanvasSize}addEventListener(e,n){this._listeners.push({type:e,listener:n})}_emit(e){for(const n of this._listeners)n.type===e&&n.listener()}readPickingPixel(e,n){const r=this.gl;e*=this.dpr,n*=this.dpr;const i=this.getPhysicalCanvasSize().height,o=new Uint8Array(4);return r.bindFramebuffer(r.FRAMEBUFFER,this._pickingBufferInfo.framebuffer),r.readPixels(e,i-n-1,1,1,r.RGBA,r.UNSIGNED_BYTE,o),r.bindFramebuffer(r.FRAMEBUFFER,null),o}clearAll(){const e=this.gl,{width:n,height:r}=this.getPhysicalCanvasSize();e.viewport(0,0,n,r),e.disable(e.SCISSOR_TEST),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT)}createRangeTexture(e,n=!1){const r=this.rangeTextures.get(e);if(!n&&r)return;function i(a,s){return nn(s.type)?s.domain().length:s.type=="threshold"?s.domain().length+1:s.type=="quantize"||s.type=="quantile"?a??4:a}const o=e.channel;if(Zn(o)){const a=e.getScaleProps(),s=e.getScale(),c=s.range();let u;if(a.scheme)if(s.type=="threshold"&&c)u=Ll(c,this.gl,s.domain().length,r);else{let f=ne(a.scheme)?void 0:a.scheme.count;f=i(f,s),u=eM(a.scheme,this.gl,f,r)}else Pa(s.type)||Le(s.type)&&c.length>2?u=tM(c,a.interpolate,this.gl,r):u=Ll(c,this.gl,s.domain().length,r);this.rangeTextures.set(e,u)}else{const a=e.getScale();if(a.type==="ordinal"||Hn(a.type)){const s=_a(o)?qp(o):u=>u,c=e.getScale().range();this.rangeTextures.set(e,nM(c.map(s),this.gl,a.domain().length,r))}}}}function iM(t,e="",n=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...e.matchAll(r)],o=new Map(i.map((a,s)=>{const c=parseInt(a[1]),u=i[s+1],f=u?u.index:e.length,l=e.substring(a.index,f);return[c-1,l]}));return t.split(`
|
519
519
|
`).map((a,s)=>{const c=o.get(s);return`${s+1+n}: ${a}${c?`
|
520
520
|
|
521
521
|
^^^ ${c}`:""}`}).join(`
|
522
|
-
`)}function
|
523
|
-
Error compiling: ${o}`,t.deleteShader(c));t.deleteProgram(r)}if(o)return{message:o,detail:a}}return{program:r,getProgramErrors:i}}function
|
522
|
+
`)}function oM(t,e,n){const r=t.createProgram();t.attachShader(r,e),t.attachShader(r,n),t.linkProgram(r);function i(){let o,a;if(!t.getProgramParameter(r,t.LINK_STATUS)){o=t.getProgramInfoLog(r);for(const c of[e,n])t.getShaderParameter(c,t.COMPILE_STATUS)||(o=t.getShaderInfoLog(c),a=iM(t.getShaderSource(c),o,0)+`
|
523
|
+
Error compiling: ${o}`,t.deleteShader(c));t.deleteProgram(r)}if(o)return{message:o,detail:a}}return{program:r,getProgramErrors:i}}function po(t,e,n,r){return r?Dm(t,r,n,e):r=co(t,{...e,src:n}),r}function aM(...t){const e={get(n,r,i){for(const o of t){const s=o()[r];if(s!==void 0)return s}},has(n,r,i){for(const o of t){const a=o();if(r in a)return!0}return!1}};return new Proxy({},e)}function sM(t){return ne(t)||le(t)||ra(t)}const cM="SAMPLE_FACET_UNIFORM",Sg="SAMPLE_FACET_TEXTURE";class mo{constructor(e){this.unitView=e,this.encoders=void 0,this.bufferInfo=void 0,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.domainUniformInfo=void 0,this.viewUniformInfo=void 0,this.rangeMap=new uM,this.defaultProperties={get clip(){return["x","y"].map(n=>e.getScaleResolution(n)).some(n=>(n==null?void 0:n.isZoomable())??!1)},xOffset:0,yOffset:0,minBufferSize:0},this.properties=aM(typeof this.unitView.spec.mark=="object"?()=>this.unitView.spec.mark:()=>({}),()=>this.defaultProperties)}get opaque(){return!1}getAttributes(){throw new Error("Not implemented!")}getSupportedChannels(){return["sample","facetIndex","x","y","color","opacity","search","uniqueId"]}getDefaultEncoding(){const e={sample:void 0,uniqueId:void 0};return this.isPickingParticipant()&&(e.uniqueId={field:"_uniqueId"}),e}fixEncoding(e){return e}get encoding(){return Yr(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=a=>{const s=this.properties[a];return sM(s)&&{value:s}},i=Object.fromEntries(this.getSupportedChannels().map(a=>[a,r(a)]).filter(a=>a[1].value!==void 0)),o=this.fixEncoding({...e,...i,...n});for(const a of Object.keys(o))this.getSupportedChannels().includes(a)||delete o[a];return o})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=P3(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return Sg;if([...this.unitView.getAncestors()].find(e=>"samples"in e.spec))return cM}createAndLinkShaders(e,n,r=[]){const i=this.getAttributes();r.push("// view: "+this.unitView.getPathString()),this.domainUniforms=[];let o=[];const a=this.getSampleFacetMode();a&&r.push(`#define ${a}`);for(const d of i){let p;if(d in this.encoding)p=d;else continue;const h=this.encoding[p];if(h)if(ot(h))o.push(FD(p,h.value));else{const m=qe(h)&&h.resolutionChannel||p,g=this.unitView.getScaleResolution(m).getScale(),y=PD(p,g,h);o.push(y.glsl),y.domainUniform&&this.domainUniforms.push(y.domainUniform)}}const s=this.domainUniforms.length?`layout(std140) uniform Domains {
|
524
524
|
`+this.domainUniforms.map(d=>` ${d}
|
525
525
|
`).join("")+`};
|
526
526
|
|
527
527
|
`:"",u=[`precision highp float;
|
528
|
-
`,...r,
|
528
|
+
`,...r,bg,qD,s,...o,KD,JD,e],f=[...r,bg,$D,n],l=this.gl;this.programStatus=oM(l,this.glHelper.compileShader(l.VERTEX_SHADER,u),this.glHelper.compileShader(l.FRAGMENT_SHADER,f))}finalizeGraphicsInitialization(){const e=this.programStatus.getProgramErrors();if(e){e.detail&&console.warn(e.detail);const n=new Error("Cannot create shader program: "+e.message);throw n.view=this.unitView,n}this.programInfo=sD(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=$m(this.gl,this.programInfo,"Domains")),this.viewUniformInfo=$m(this.gl,this.programInfo,"View"),this.gl.useProgram(this.programInfo.program),this._setDatums(),je(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0})}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if($i(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):ps(r.scale.type)?yg(+n.datum):+n.datum;je(this.programInfo,{[Ml+e]:i})}}deleteGraphicsData(){if(this.bufferInfo){const e=this.gl;for(let n=0;n<8;n++)e.disableVertexAttribArray(n);Object.values(this.bufferInfo.attribs).forEach(n=>this.gl.deleteBuffer(n.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),this.bufferInfo=void 0}}updateBufferInfo(e){if(this.gl.bindVertexArray(null),this.bufferInfo&&e.vertexCount<=this.bufferInfo.allocatedVertices)for(const[n,r]of Object.entries(e.arrays))r.data&&bC(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=wC(this.gl,e.arrays,{numElements:e.vertexCount}),this.bufferInfo.allocatedVertices=e.allocatedVertices,this.vertexArrayInfo=void 0}get glHelper(){return this.getContext().glHelper}get gl(){return this.glHelper.gl}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}isReady(){return this.bufferInfo&&this.programInfo}isPickingParticipant(){if(this.properties.tooltip===null)return!1;for(const e of this.unitView.getAncestors())if(!e.isPickingSupported())return!1;return!0}prepareRender(e){const n=this.glHelper,r=this.gl,i=[];if(i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=DD(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)}),this.domainUniformInfo){for(const[a,s]of Object.entries(this.domainUniformInfo.setters)){const c=a.substring(fg.length),u=this.encoding[c],f=qe(u)&&u.resolutionChannel||c,l=this.unitView.getScaleResolution(f);if(l){const d=l.getScale();i.push(()=>{const p=nn(d.type)?[0,d.domain().length]:d.domain();s(ps(d.type)?HD(p):p)})}}i.push(()=>eg(r,this.programInfo,this.domainUniformInfo))}for(const[a,s]of Object.entries(this.encoding))if(qe(s)){const c=qe(s)&&s.resolutionChannel||a,u=this.unitView.getScaleResolution(c),f=n.rangeTextures.get(u);f&&i.push(()=>je(this.programInfo,{[Tl+a]:f}))}this.getSampleFacetMode()==Sg&&i.push(()=>{let a;for(const s of this.unitView.getAncestors())if(a=s.getSampleFacetTexture(),a)break;if(!a)throw new Error("No facet texture available. This is bug.");je(this.programInfo,{uSampleFacetTexture:a})});const o=(e.picking??!1)&&this.isPickingParticipant();return i.push(()=>tg(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:o})),this.opaque||e.picking?i.push(()=>r.disable(r.BLEND)):i.push(()=>r.enable(r.BLEND)),i}prepareSampleFacetRendering(e){const n=e.sampleFacetRenderingOptions,r=this.programInfo.uniformSetters.uSampleFacet;if(n&&r){const i=n.locSize?n.locSize.location:0,o=n.locSize?n.locSize.size:1;if(i>1||i+o<0)return!1;const a=n.targetLocSize?n.targetLocSize.location:i,s=n.targetLocSize?n.targetLocSize.size:o;this.gl.uniform4f(r.location,i,o,a,s)}return!0}render(e){}createRenderCallback(e,n){var l;const r=this;let i;const o=(l=this.unitView.getScaleResolution("x"))==null?void 0:l.getScale(),a=o&&Le(o.type),s=["index","locus"].includes(o==null?void 0:o.type)?-1:0,c=[0,0];i=d=>{if(a&&d.xIndex){const p=o.domain(),h=d.xIndex(p[0]+s,p[1],c),m=h[0],g=h[1]-m;g>0&&e(m,g)}else e(d.offset,d.count)};const u=this.rangeMap.get(void 0).count==0?n.facetId:void 0,f=this.rangeMap.get(u);return n.sampleFacetRenderingOptions?function(){f.count&&r.prepareSampleFacetRendering(n)&&i(f)}:function(){f.count&&i(f)}}setViewport(e,n){const r=this.glHelper.dpr,i=this.gl,o=this.properties,a=this.glHelper.getLogicalCanvasSize(),s=.5,c=(o.xOffset||0)+s,u=(o.yOffset||0)+s;let f,l=e;if(o.clip||n){let d=0,p=0,h;n?(l=o.clip?e.intersect(n):n,h=[e.width/l.width,e.height/l.height],p=Math.max(0,e.y2-n.y2),d=Math.max(0,e.x2-n.x2)):h=[1,1];const m=[e.x,a.height-l.y2,Math.max(0,l.width),Math.max(0,l.height)].map(w=>w*r),g=m.map(w=>Math.floor(w)),[y,b]=m.map((w,C)=>w-g[C]);i.viewport(...g),i.scissor(...g),i.enable(i.SCISSOR_TEST),f={uViewOffset:[(c+d+y)/l.width,-(u+p-b)/l.height],uViewScale:h}}else i.viewport(0,0,a.width*r,a.height*r),i.disable(i.SCISSOR_TEST),f={uViewOffset:[(e.x+c)/a.width,(a.height-e.y-u-e.height)/a.height],uViewScale:[e.width/a.width,e.height/a.height]};return tg(this.viewUniformInfo,{...f,uViewportSize:[e.width,e.height],uDevicePixelRatio:this.glHelper.dpr}),eg(this.gl,this.programInfo,this.viewUniformInfo),l.height>0&&l.width>0}findDatumAt(e,n){}}class uM extends Tn{constructor(){super([],JSON.stringify)}get(e){let n=super.get(e);return n===void 0&&(n={offset:0,count:0,xIndex:void 0},super.set(e,n)),n}migrateEntries(e){for(const[n,r]of e.entries())Object.assign(this.get(n),r)}}function Bl(t,e){const n=U3(e);let r=t[e]&&{...t[e]},i=t[n]&&{...t[n]};if(!(ot(r)||ot(i))){if(r){if(!qe(t[e]))return;if(i){if(r.type!="quantitative"){const o=(1-(r.band||1))/2;r.band=o,i.band=-o}}else if(r.type=="quantitative")i={datum:0};else{i={...r};const o=(1-(r.band??1))/2;r.band=0+o,i.band=1-o}}else r={value:0},i={value:1};t[e]=r,t[n]=i}}function Eg(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke={resolutionChannel:"color",...t.color}),ot(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity={resolutionChannel:"opacity",...t.opacity})}function Dg(t,e){ot(t.fill)&&t.fill.value===null?t.fillOpacity={value:0}:t.fill||(t.fill={resolutionChannel:"color",...t.color},!e&&!t.fillOpacity&&(t.fillOpacity={value:0})),t.fillOpacity||(e?t.fillOpacity={resolutionChannel:"opacity",...t.opacity}:t.fillOpacity={value:0})}class lM extends mo{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,filled:!0,color:"#4c78a8",opacity:1,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1,tessellationZoomThreshold:10,tessellationTiles:35}))}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 Yr(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&ot(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return Bl(e,"x"),Bl(e,"y"),Eg(e,this.properties.filled),Dg(e,this.properties.filled),delete e.color,delete e.opacity,e}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}_isRoundedCorners(){return["","TopLeft","TopRight","BottomLeft","BottomRight"].map(e=>"cornerRadius"+e).some(e=>this.properties[e]>0)}_isStroked(){const e=this.encoding.strokeWidth;return!(ot(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(ND,LD,e.map(n=>"#define "+n))}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;je(this.programInfo,{uMinSize:[e.minWidth,e.minHeight],uMinOpacity:e.minOpacity,uCornerRadii:[e.cornerRadiusTopRight??e.cornerRadius,e.cornerRadiusBottomRight??e.cornerRadius,e.cornerRadiusTopLeft??e.cornerRadius,e.cornerRadiusBottomLeft??e.cornerRadius]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new YD({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Qr(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{uo(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e)}findDatumAt(e,n){e=Ze(e);const r=this.encoders,i=this.unitView.getCollector().facetBatches.get(e),o=r.x.accessor,a=r.x2.accessor;if(i)return i.find(s=>n>=o(s)&&n<a(s))}}const fM=`/**
|
529
529
|
* The stroke should only grow inwards, e.g, the diameter/outline is not affected by the stroke width.
|
530
530
|
* Thus, a point that has a zero size has no visible stroke. This allows strokes to be used with
|
531
531
|
* geometric zoom, etc.
|
@@ -654,7 +654,7 @@ void main(void) {
|
|
654
654
|
|
655
655
|
setupPicking();
|
656
656
|
}
|
657
|
-
`,
|
657
|
+
`,dM=`const lowp vec4 white = vec4(1.0);
|
658
658
|
const lowp vec4 black = vec4(0.0, 0.0, 0.0, 1.0);
|
659
659
|
|
660
660
|
uniform bool uInwardStroke;
|
@@ -777,10 +777,10 @@ void main() {
|
|
777
777
|
}
|
778
778
|
}
|
779
779
|
|
780
|
-
`,Bt=1<<0,fn=1<<1,
|
780
|
+
`,Bt=1<<0,fn=1<<1,Ol=1<<2,hM={};class ue{get behavior(){return 0}constructor(){this.children=[],this.parent=void 0,this.completed=!1}reset(){this.completed=!1;for(const e of this.children)e.reset()}initialize(){}_updatePropagator(){this._propagate=Function("children",_t(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
|
781
781
|
`)+`return function propagate(datum) {${_t(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
|
782
782
|
`)}}`)(this.children)}setParent(e){this.parent=e}addChild(e){if(e.parent)throw new Error("Cannot add the child! It already has a parent.");return this.children.push(e),e.setParent(this),this._updatePropagator(),this}adopt(e){e.parent&&e.parent.removeChild(e),this.addChild(e)}adoptChildrenOf(e){for(const n of e.children)this.adopt(n)}insertAsParent(e){if(this.isRoot())throw new 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._updatePropagator(),this.parent=void 0,e.addChild(this)}removeChild(e){const n=this.children.indexOf(e);if(n>-1)this.children.splice(n,1),e.parent=void 0,this._updatePropagator();else throw new Error("Trying to remove an unknown child node!")}excise(){if(this.isRoot())throw new Error("Cannot excise root node!");if(this.isTerminal())this.parent.removeChild(this);else if(this.children.length==1){const e=this.children[0];e.setParent(this.parent),this.parent.children[this.parent.children.indexOf(this)]=e,this.parent._updatePropagator(),this.setParent(void 0),this.children.length=0}else throw new 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(const n of this.children)n.visit(e);e.afterChildren&&e.afterChildren(this)}subtreeToString(e=0){var r;const n=this.children.map(i=>i.subtreeToString(e+1)).join("");return" ".repeat(e*2)+"* "+((r=/^class ([A-Za-z0-9_]+)/.exec(""+this.constructor))==null?void 0:r[1])+`
|
783
|
-
`+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():
|
783
|
+
`+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():hM}handle(e){this._propagate(e)}complete(){this.completed=!0;for(const e of this.children)e.complete()}beginBatch(e){for(const n of this.children)n.beginBatch(e)}_propagate(e){}}function Mg(t){return t.type=="file"}function pM(t){return t.type=="facet"}class Tg extends ue{constructor(e){super(),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(const e of this.reservoir)this._propagate(e);super.complete()}}function Ig(t,e,n){const r=new Tg({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const mM={};class gM extends mo{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({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}))}getAttributes(){return["inwardStroke","uniqueId","facetIndex","x","y","size","semanticScore","shape","strokeWidth","gradientStrength","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(),...mM}}fixEncoding(e){return Eg(e,this.properties.filled),Dg(e,this.properties.filled),delete e.color,delete e.opacity,e}initializeData(){super.initializeData();const e=this.unitView.getAccessor("semanticScore");e&&(this.sampledSemanticScores=Float32Array.from(Ig(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(fM,dM)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;je(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new WD({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}_getGeometricScaleFactor(){const e=Math.pow(2,this.properties.geometricZoomBound||0);return Math.pow(Math.min(1,this.unitView.getZoomLevel()/e),1/3)}_getMaxPointSize(){const e=this.encoders.size;return e.constant?e(null):e.scale.range().reduce((n,r)=>Math.max(n,r))}getSemanticThreshold(){if(this.sampledSemanticScores){const e=Math.max(0,1-this.properties.semanticZoomFraction*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{const n=this.sampledSemanticScores;return Ic(n,e)}}else return-1}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>je(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()})),n.push(()=>Qr(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{i&&uo(n,this.vertexArrayInfo,n.POINTS,i,r)},e)}}const yM=`// Line caps
|
784
784
|
const int BUTT = 0;
|
785
785
|
const int SQUARE = 1;
|
786
786
|
const int ROUND = 2;
|
@@ -869,7 +869,7 @@ void main(void) {
|
|
869
869
|
|
870
870
|
setupPicking();
|
871
871
|
}
|
872
|
-
`,
|
872
|
+
`,vM=`// Line ending
|
873
873
|
const int BUTT = 0;
|
874
874
|
const int SQUARE = 1;
|
875
875
|
const int ROUND = 2;
|
@@ -921,7 +921,7 @@ void main(void) {
|
|
921
921
|
fragColor = vPickingColor;
|
922
922
|
}
|
923
923
|
}
|
924
|
-
`;class
|
924
|
+
`;class bM extends mo{constructor(e){super(e),this.dashTextureSize=0,Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x2:void 0,y2:void 0,size:1,color:"black",opacity:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:"butt"}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(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&&qe(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&qe(e.x)&&e.x.type=="quantitative")e.y2=e.y,e.x2={datum:0};else throw new Error("A bug!");else throw new Error("Invalid x and y encodings for rule mark: "+JSON.stringify(e));return e}async initializeGraphics(){if(await super.initializeGraphics(),this.properties.strokeDash){const e=this.gl,n=AM(this.properties.strokeDash);this.dashTexture=co(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(yM,vM)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;je(this.programInfo,{uMinLength:e.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(e.strokeCap)})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new _D({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(e){const n=super.prepareRender(e);return this.dashTexture&&n.push(()=>je(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset})),n.push(()=>Qr(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>uo(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e)}}function AM(t){if(t.length==0||t.length%2||t.findIndex(o=>Math.round(o)!=o||o<1||o>1e3)>=0)throw new Error("Invalid stroke dash pattern: "+JSON.stringify(t));const e=t.reduce((o,a)=>o+a),n=new Uint8Array(e);let r=!0,i=0;for(let o of t){for(;o;)n[i++]=r&&255||0,o--;r=!r}return n}const xM=`uniform float uSagittaScaleFactor;
|
925
925
|
|
926
926
|
/** Make very small arcs visible */
|
927
927
|
uniform float uMinSagittaLength;
|
@@ -1032,7 +1032,7 @@ void main(void) {
|
|
1032
1032
|
|
1033
1033
|
setupPicking();
|
1034
1034
|
}
|
1035
|
-
`,
|
1035
|
+
`,wM=`in lowp vec4 vColor;
|
1036
1036
|
in float vSize;
|
1037
1037
|
in float vNormalLengthInPixels;
|
1038
1038
|
|
@@ -1050,7 +1050,7 @@ void main(void) {
|
|
1050
1050
|
fragColor = vPickingColor;
|
1051
1051
|
}
|
1052
1052
|
}
|
1053
|
-
`;class
|
1053
|
+
`;class CM extends mo{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({x:0,x2:void 0,y:0,y2:void 0,size:1,color:"black",opacity:1,segments:101,sagittaScaleFactor:1,minSagittaLength:1.5}))}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","height","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(e){return e.x||(e.x2=e.x),e.y2||(e.y2=e.y),e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(xM,wM)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;je(this.programInfo,{uSagittaScaleFactor:e.sagittaScaleFactor,uMinSagittaLength:e.minSagittaLength})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new XD({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:SM(this.properties.segments),numComponents:2},this.rangeMap.migrateEntries(i.rangeMap),this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([o,a])=>[o,{...a,data:void 0}])),this.updateBufferInfo(i)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{this.gl.bindVertexArray(this.vertexArrayInfo.vertexArrayObject);for(const o of Object.entries(this.bufferInfo.attribs)){const[a,s]=o;s.buffer&&s.numComponents&&s.divisor&&(s.offset=r*this.arrays[a].numComponents*4)}Qr(n,this.programInfo,this.bufferInfo),uo(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e)}}function SM(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}const EM=`uniform float uSdfNumerator;
|
1054
1054
|
|
1055
1055
|
uniform vec2 uD; // dx & dy
|
1056
1056
|
|
@@ -1296,7 +1296,8 @@ void main(void) {
|
|
1296
1296
|
|
1297
1297
|
setupPicking();
|
1298
1298
|
}
|
1299
|
-
`,
|
1299
|
+
`,DM=`uniform sampler2D uTexture;
|
1300
|
+
uniform bool uLogoLetter;
|
1300
1301
|
|
1301
1302
|
in vec2 vTexCoord;
|
1302
1303
|
in float vEdgeFadeOpacity;
|
@@ -1316,7 +1317,15 @@ void main() {
|
|
1316
1317
|
vec3 c = texture(uTexture, vTexCoord).rgb;
|
1317
1318
|
|
1318
1319
|
float sigDist = 1.0 - median(c.r, c.g, c.b);
|
1319
|
-
|
1320
|
+
|
1321
|
+
// Using screen-space derivatives for logo letters because skewed aspect ratios
|
1322
|
+
// result in blurry edges otherwise. However, use of screen-space derivatives
|
1323
|
+
// results in crappy looking text with regular letters text.
|
1324
|
+
float slope = uLogoLetter
|
1325
|
+
? 0.7 / length(vec2(dFdy(sigDist), dFdx(sigDist)))
|
1326
|
+
: vSlope;
|
1327
|
+
|
1328
|
+
float opa = clamp((sigDist - 0.5) * slope + 0.5, 0.0, 1.0);
|
1320
1329
|
|
1321
1330
|
// Raise to the power of 2.2 to do some cheap gamma correction
|
1322
1331
|
opa *= pow(clamp(vEdgeFadeOpacity, 0.0, 1.0), 2.2);
|
@@ -1327,7 +1336,7 @@ void main() {
|
|
1327
1336
|
fragColor = vPickingColor;
|
1328
1337
|
}
|
1329
1338
|
}
|
1330
|
-
`,EM={left:-1,center:0,right:1},DM={top:-1,middle:0,bottom:1,alphabetic:1};class MM extends go{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({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})),this.font=this.properties.font?e.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):e.context.fontManager.getDefaultFont()}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","color","size","opacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size","text","angle"]}fixEncoding(e){for(const n of to)this.properties.fitToBand&&Bl(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(CM,SM)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;je(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[EM[e.align],DM[e.baseline]],uD:[e.dx,-e.dy],uLogoLetter:!!e.logoLetters,uSqueeze:!!e.squeeze,uViewportEdgeFadeWidth:[e.viewportEdgeFadeWidthTop,e.viewportEdgeFadeWidthRight,e.viewportEdgeFadeWidthBottom,e.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[e.viewportEdgeFadeDistanceTop,e.viewportEdgeFadeDistanceRight,e.viewportEdgeFadeDistanceBottom,e.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getData(),r=this.encoding,i=this.encoders.text.accessor||this.encoders.text;let o=0;const a=r.text.format?de(r.text.format):u=>u;for(const u of n){const f=a(i(u)),l=ne(f)?f:f===null?"":""+f;o+=l&&l.length||0}const s=new WD({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0)});s.addBatches(e.facetBatches);const c=s.toArrays();this.rangeMap.migrateEntries(c.rangeMap),this.updateBufferInfo(c)}prepareRender(e){const n=super.prepareRender(e);let r=.35;return this.properties.logoLetters&&(r/=2),n.push(()=>je(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/r)})),n.push(()=>Qr(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>lo(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e)}}function yo(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let a=0,s=0;for(const h of t)a+=ys(h.px)+(Ol(h)?0:n),s+=ys(h.grow);a-=n;const c=Math.max(0,e-a),u=r!==void 0?h=>Math.round(h*r)/r:h=>h,f=[],l=[],d=h=>{const m=f.length;if(!m)return;const g=(h?n:0)*(o?-1:1);p-=g;for(let y=0;y<m;y++)l.push({location:p+(y+1)/(m+1)*g,size:0});p+=g,f.length=0};let p=o?Math.max(e,a):0+i;if(t.length==1&&Ol(t[0]))return[{location:p,size:0}];for(let h=0;h<t.length;h++){const m=t[h];if(Ol(m))f.push(m);else{d(l.length>0);const g=ys(m.px)+(s?ys(m.grow)/s*c:0);o&&(p-=g),l.push({location:u(p),size:u(g)}),o?p-=n:p+=g+n}}return p+=o?n:-n,d(!1),l}function TM(t){let e=0,n=0;for(const r of t)e=Math.max(e,r.px??0),n=Math.max(n,r.grow??0);return{px:e,grow:n}}const kd=class{constructor(e,n){$(this,Ho);this.width=e,this.height=n}addPadding(e){return se(this,Ho,Bd).call(this,e.width,e.height)}subtractPadding(e){return se(this,Ho,Bd).call(this,-e.width,-e.height)}};let er=kd;Ho=new WeakSet,Bd=function(e,n){return new kd({px:(this.width.px??0)+e,grow:this.width.grow},{px:(this.height.px??0)+n,grow:this.height.grow})};const vo=Object.freeze({px:0,grow:0}),IM=new er(vo,vo);function Ol(t){return!t.px&&!t.grow}function ys(t){return t||0}function kM(t){return t&&(le(t.px)||le(t.grow))}function Tg(t){if(Lg(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(kM(t))return t;if(le(t))return{px:t,grow:0};if(t==="container")return{px:0,grow:1};if(!t)return{px:0,grow:1};throw new Error(`Invalid sizeDef: ${t}`)}function NM(t,e,n){return{get location(){const r=n();switch(r){case 0:return t.location;case 1:return e.location;default:return r*e.location+(1-r)*t.location}},get size(){const r=n();switch(r){case 0:return t.size;case 1:return e.size;default:return r*e.size+(1-r)*t.size}}}}function LM(t,e){const n=le(e)?()=>e:e;return{get location(){return t.location+n()},get size(){return t.size}}}function BM(t,e){const n=le(e)?()=>e:e;return{get location(){return t.location*n()},get size(){return t.size*n()}}}function Ig(t,e){return e>=t.location&&e<t.location+t.size}class Ke{constructor(e,n,r,i){this.top=e||0,this.right=n||0,this.bottom=r||0,this.left=i||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(e){return e<=0?this:new Ke(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new Ke(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new Ke(this.top-e.top,this.right-e.right,this.bottom-e.bottom,this.left-e.left)}static createFromConfig(e){return typeof e=="number"?this.createUniformPadding(e):e?this.createFromRecord(e):Fl}static createFromRecord(e){return new Ke(e.top,e.right,e.bottom,e.left)}static zero(){return Fl}static createUniformPadding(e){return new Ke(e,e,e,e)}}const Fl=Ke.createUniformPadding(0);Object.freeze(Fl);const OM=/^([A-Za-z]+:)?\/\//;function FM(t,e){if(e&&OM.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n??e}const vs="VISIT_SKIP",tr="VISIT_STOP",kg=t=>t;class Ng{constructor(e,n,r,i){this.context=n,this.parent=r,this.name=e.name||i,this.spec=e,this.resolutions={scale:{},axis:{}},this._broadcastHandlers={},this._capturingInteractionEventListeners={},this._nonCapturingInteractionEventListeners={},bg(this),this.opacityFunction=kg,this.blockEncodingInheritance=!1}getPadding(){return this._cache("size/padding",()=>Ke.createFromConfig(this.spec.padding))}getOverhang(){return Ke.zero()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):IM)}getSizeFromSpec(){const e=n=>{var i;let r=this.spec[n];if(Lg(r)){const o=r.step,a=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(a){let s=0;if(nn(a.type))s=a.domain().length;else if(["locus","index"].includes(a.type)){const u=a.domain();s=Re(u)-u[0]}else throw new Error(`Cannot use step-based size with "${a.type}" scale!`);const c=a;return s=ku(s,c.paddingInner(),c.paddingOuter()),{px:s*o,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(r&&Tg(r))??{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new er(e("width"),e("height")))}isVisible(){return this.context.isViewVisible(this)}isVisibleInSpec(){return this.spec.visible??!0}getEffectiveOpacity(){var e;return this.opacityFunction(((e=this.parent)==null?void 0:e.getEffectiveOpacity())??1)}getPathString(){return[...this.getAncestors()].map(e=>e.name).reverse().join("/")}*getAncestors(){let e=this;do yield e,e=e.parent;while(e)}handleBroadcast(e){for(const n of this._broadcastHandlers[e.type]||[])n(e)}_addBroadcastHandler(e,n){let r=this._broadcastHandlers[e];r||(r=[],this._broadcastHandlers[e]=r),r.push(n)}handleInteractionEvent(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;for(const o of i[n.type]||[])o(e,n)}addInteractionEventListener(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;let o=i[e];o||(o=[],i[e]=o),o.push(n)}visit(e){try{const n=e(this);if(e.postOrder&&e.postOrder(this),n!==tr)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===kg)&&(this.opacityFunction=zM(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(){const e=this.parent&&!this.blockEncodingInheritance?this.parent.getEncoding():{},n=this.spec.encoding||{},r={...e,...n};for(const[i,o]of Object.entries(r))o===null&&delete r[i];return r}getFacetAccessor(e){if(this.parent)return this.parent.getFacetAccessor(this)}getFacetFields(e){var r;const n=this.getEncoding().sample;return Xn(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=Or(e);let r=this;do{const i=r.resolutions[n][e];if(i)return i;r=r.parent}while(r)}getScaleResolution(e){return this._getResolution(e,"scale")}getAxisResolution(e){return this._getResolution(e,"axis")}getBaseUrl(){return FM(()=>{var e;return(e=this.parent)==null?void 0:e.getBaseUrl()},this.spec.baseUrl)}getDynamicDataSource(){throw new Error("The view does not provide dynamic data!")}isPickingSupported(){return!0}getTitleText(){const e=this.spec.title;if(e)return ne(e)?e:e.text}_cache(e,n){return Yr(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":ho(this,e);break;case"ancestors":for(const r of this.getAncestors())ho(r,e);break;case"progeny":this.visit(r=>ho(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(e){}}function PM(t){return"unitsPerPixel"in t}function zM(t){const e=t.spec.opacity;if(e!==void 0){if(le(e))return n=>n*e;if(PM(e)){const n=o=>{var s;const a=(s=t.getScaleResolution(o))==null?void 0:s.getScale();if(["linear","index","locus"].includes(a==null?void 0:a.type))return a},r=e.channel?n(e.channel):n("x")||n("y");if(!r)throw new Error("Cannot find a resolved quantitative scale for dynamic opacity!");const i=wu().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const s=ia(r.domain())/1e3;return i(s)*o}}}return n=>n}const Lg=t=>!!(t!=null&&t.step);class nr extends Ng{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}*[Symbol.iterator](){}replaceChild(e,n){throw new Error("Not implemented")}visit(e){let n;try{n=e(this)}catch(r){throw r.view=this,r}if(n===tr)return n;if(n!==vs){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===tr)return i}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(e){for(const n of this)if(n.name===e[0]){if(e.length==1)return n;if(n instanceof nr)return n.findDescendantByPath(e.slice(1))}}findChildByName(e){for(const n of this)if(n.name===e)return n}findDescendantByName(e){let n;return this.visit(r=>{if(r.name==e)return n=r,tr}),n}getConfiguredResolution(e,n){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[n])==null?void 0:i[e]}getDefaultResolution(e,n){return"shared"}getConfiguredOrDefaultResolution(e,n){return this.getConfiguredResolution(e,n)??this.getConfiguredResolution("default",n)??this.getDefaultResolution(e,n)}}function bs(t,e,n){if(n=n||[],t.some(a=>a===null)){if(t.every(a=>a===null))return null;throw console.warn(t),new Error("Cannot merge objects with nulls!")}const r={},i=(a,s)=>a===s||_r(a)&&_r(s)||_r(a)&&s===!0||a===!0&&ze(s),o=a=>{for(let s in a){const c=a[s];if(!n.includes(s)&&c!==void 0)if(r[s]!==void 0&&!i(r[s],c))console.warn(`Conflicting property ${s} of ${e}: (${JSON.stringify(r[s])} and ${JSON.stringify(a[s])}). Using ${JSON.stringify(r[s])}.`);else{const u=r[s];if(_r(u))_r(c)&&(r[s]=bs([u,c],s));else if(_r(c)){if(!(u===!0||u===void 0))throw new Error("Bug in merge! Target is: "+u);r[s]=bs([{},c],s)}else r[s]=c}}};for(const a of t)o(a);return r}function _r(t){return ze(t)&&!Array.isArray(t)}/*!
|
1339
|
+
`,MM={left:-1,center:0,right:1},TM={top:-1,middle:0,bottom:1,alphabetic:1};class IM extends mo{constructor(e){super(e),Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors({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})),this.font=this.properties.font?e.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):e.context.fontManager.getDefaultFont()}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","color","size","opacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size","text","angle"]}fixEncoding(e){for(const n of eo)this.properties.fitToBand&&Bl(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(EM,DM)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;je(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[MM[e.align],TM[e.baseline]],uD:[e.dx,-e.dy],uLogoLetter:!!e.logoLetters,uSqueeze:!!e.squeeze,uViewportEdgeFadeWidth:[e.viewportEdgeFadeWidthTop,e.viewportEdgeFadeWidthRight,e.viewportEdgeFadeWidthBottom,e.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[e.viewportEdgeFadeDistanceTop,e.viewportEdgeFadeDistanceRight,e.viewportEdgeFadeDistanceBottom,e.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getData(),r=this.encoding,i=this.encoders.text.accessor||this.encoders.text;let o=0;const a=r.text.format?de(r.text.format):u=>u;for(const u of n){const f=a(i(u)),l=ne(f)?f:f===null?"":""+f;o+=l&&l.length||0}const s=new ZD({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0)});s.addBatches(e.facetBatches);const c=s.toArrays();this.rangeMap.migrateEntries(c.rangeMap),this.updateBufferInfo(c)}prepareRender(e){const n=super.prepareRender(e);let r=.35;return this.properties.logoLetters&&(r/=2),n.push(()=>je(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/r)})),n.push(()=>Qr(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>uo(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e)}}function go(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let a=0,s=0;for(const h of t)a+=ys(h.px)+(Fl(h)?0:n),s+=ys(h.grow);a-=n;const c=Math.max(0,e-a),u=r!==void 0?h=>Math.round(h*r)/r:h=>h,f=[],l=[],d=h=>{const m=f.length;if(!m)return;const g=(h?n:0)*(o?-1:1);p-=g;for(let y=0;y<m;y++)l.push({location:p+(y+1)/(m+1)*g,size:0});p+=g,f.length=0};let p=o?Math.max(e,a):0+i;if(t.length==1&&Fl(t[0]))return[{location:p,size:0}];for(let h=0;h<t.length;h++){const m=t[h];if(Fl(m))f.push(m);else{d(l.length>0);const g=ys(m.px)+(s?ys(m.grow)/s*c:0);o&&(p-=g),l.push({location:u(p),size:u(g)}),o?p-=n:p+=g+n}}return p+=o?n:-n,d(!1),l}function kM(t){let e=0,n=0;for(const r of t)e=Math.max(e,r.px??0),n=Math.max(n,r.grow??0);return{px:e,grow:n}}const Ld=class{constructor(e,n){$(this,Ho);this.width=e,this.height=n}addPadding(e){return se(this,Ho,Fd).call(this,e.width,e.height)}subtractPadding(e){return se(this,Ho,Fd).call(this,-e.width,-e.height)}};let er=Ld;Ho=new WeakSet,Fd=function(e,n){return new Ld({px:(this.width.px??0)+e,grow:this.width.grow},{px:(this.height.px??0)+n,grow:this.height.grow})};const yo=Object.freeze({px:0,grow:0}),NM=new er(yo,yo);function Fl(t){return!t.px&&!t.grow}function ys(t){return t||0}function LM(t){return t&&(le(t.px)||le(t.grow))}function kg(t){if(Og(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(LM(t))return t;if(le(t))return{px:t,grow:0};if(t==="container")return{px:0,grow:1};if(!t)return{px:0,grow:1};throw new Error(`Invalid sizeDef: ${t}`)}function BM(t,e,n){return{get location(){const r=n();switch(r){case 0:return t.location;case 1:return e.location;default:return r*e.location+(1-r)*t.location}},get size(){const r=n();switch(r){case 0:return t.size;case 1:return e.size;default:return r*e.size+(1-r)*t.size}}}}function OM(t,e){const n=le(e)?()=>e:e;return{get location(){return t.location+n()},get size(){return t.size}}}function FM(t,e){const n=le(e)?()=>e:e;return{get location(){return t.location*n()},get size(){return t.size*n()}}}function Ng(t,e){return e>=t.location&&e<t.location+t.size}class Ke{constructor(e,n,r,i){this.top=e||0,this.right=n||0,this.bottom=r||0,this.left=i||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(e){return e<=0?this:new Ke(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new Ke(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new Ke(this.top-e.top,this.right-e.right,this.bottom-e.bottom,this.left-e.left)}static createFromConfig(e){return typeof e=="number"?this.createUniformPadding(e):e?this.createFromRecord(e):Pl}static createFromRecord(e){return new Ke(e.top,e.right,e.bottom,e.left)}static zero(){return Pl}static createUniformPadding(e){return new Ke(e,e,e,e)}}const Pl=Ke.createUniformPadding(0);Object.freeze(Pl);const PM=/^([A-Za-z]+:)?\/\//;function zM(t,e){if(e&&PM.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n??e}const vs="VISIT_SKIP",tr="VISIT_STOP",Lg=t=>t;class Bg{constructor(e,n,r,i){this.context=n,this.parent=r,this.name=e.name||i,this.spec=e,this.resolutions={scale:{},axis:{}},this._broadcastHandlers={},this._capturingInteractionEventListeners={},this._nonCapturingInteractionEventListeners={},xg(this),this.opacityFunction=Lg,this.blockEncodingInheritance=!1}getPadding(){return this._cache("size/padding",()=>Ke.createFromConfig(this.spec.padding))}getOverhang(){return Ke.zero()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):NM)}getSizeFromSpec(){const e=n=>{var i;let r=this.spec[n];if(Og(r)){const o=r.step,a=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(a){let s=0;if(nn(a.type))s=a.domain().length;else if(["locus","index"].includes(a.type)){const u=a.domain();s=Re(u)-u[0]}else throw new Error(`Cannot use step-based size with "${a.type}" scale!`);const c=a;return s=ku(s,c.paddingInner(),c.paddingOuter()),{px:s*o,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(r&&kg(r))??{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new er(e("width"),e("height")))}isVisible(){return this.context.isViewVisible(this)}isVisibleInSpec(){return this.spec.visible??!0}getEffectiveOpacity(){var e;return this.opacityFunction(((e=this.parent)==null?void 0:e.getEffectiveOpacity())??1)}getPathString(){return[...this.getAncestors()].map(e=>e.name).reverse().join("/")}*getAncestors(){let e=this;do yield e,e=e.parent;while(e)}handleBroadcast(e){for(const n of this._broadcastHandlers[e.type]||[])n(e)}_addBroadcastHandler(e,n){let r=this._broadcastHandlers[e];r||(r=[],this._broadcastHandlers[e]=r),r.push(n)}handleInteractionEvent(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;for(const o of i[n.type]||[])o(e,n)}addInteractionEventListener(e,n,r){const i=r?this._capturingInteractionEventListeners:this._nonCapturingInteractionEventListeners;let o=i[e];o||(o=[],i[e]=o),o.push(n)}visit(e){try{const n=e(this);if(e.postOrder&&e.postOrder(this),n!==tr)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===Lg)&&(this.opacityFunction=jM(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(){const e=this.parent&&!this.blockEncodingInheritance?this.parent.getEncoding():{},n=this.spec.encoding||{},r={...e,...n};for(const[i,o]of Object.entries(r))o===null&&delete r[i];return r}getFacetAccessor(e){if(this.parent)return this.parent.getFacetAccessor(this)}getFacetFields(e){var r;const n=this.getEncoding().sample;return Xn(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=Or(e);let r=this;do{const i=r.resolutions[n][e];if(i)return i;r=r.parent}while(r)}getScaleResolution(e){return this._getResolution(e,"scale")}getAxisResolution(e){return this._getResolution(e,"axis")}getBaseUrl(){return zM(()=>{var e;return(e=this.parent)==null?void 0:e.getBaseUrl()},this.spec.baseUrl)}getDynamicDataSource(){throw new Error("The view does not provide dynamic data!")}isPickingSupported(){return!0}getTitleText(){const e=this.spec.title;if(e)return ne(e)?e:e.text}_cache(e,n){return Yr(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":fo(this,e);break;case"ancestors":for(const r of this.getAncestors())fo(r,e);break;case"progeny":this.visit(r=>fo(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(e){}}function RM(t){return"unitsPerPixel"in t}function jM(t){const e=t.spec.opacity;if(e!==void 0){if(le(e))return n=>n*e;if(RM(e)){const n=o=>{var s;const a=(s=t.getScaleResolution(o))==null?void 0:s.getScale();if(["linear","index","locus"].includes(a==null?void 0:a.type))return a},r=e.channel?n(e.channel):n("x")||n("y");if(!r)throw new Error("Cannot find a resolved quantitative scale for dynamic opacity!");const i=wu().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const s=ia(r.domain())/1e3;return i(s)*o}}}return n=>n}const Og=t=>!!(t!=null&&t.step);class nr extends Bg{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}*[Symbol.iterator](){}replaceChild(e,n){throw new Error("Not implemented")}visit(e){let n;try{n=e(this)}catch(r){throw r.view=this,r}if(n===tr)return n;if(n!==vs){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===tr)return i}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(e){for(const n of this)if(n.name===e[0]){if(e.length==1)return n;if(n instanceof nr)return n.findDescendantByPath(e.slice(1))}}findChildByName(e){for(const n of this)if(n.name===e)return n}findDescendantByName(e){let n;return this.visit(r=>{if(r.name==e)return n=r,tr}),n}getConfiguredResolution(e,n){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[n])==null?void 0:i[e]}getDefaultResolution(e,n){return"shared"}getConfiguredOrDefaultResolution(e,n){return this.getConfiguredResolution(e,n)??this.getConfiguredResolution("default",n)??this.getDefaultResolution(e,n)}}function bs(t,e,n){if(n=n||[],t.some(a=>a===null)){if(t.every(a=>a===null))return null;throw console.warn(t),new Error("Cannot merge objects with nulls!")}const r={},i=(a,s)=>a===s||_r(a)&&_r(s)||_r(a)&&s===!0||a===!0&&ze(s),o=a=>{for(let s in a){const c=a[s];if(!n.includes(s)&&c!==void 0)if(r[s]!==void 0&&!i(r[s],c))console.warn(`Conflicting property ${s} of ${e}: (${JSON.stringify(r[s])} and ${JSON.stringify(a[s])}). Using ${JSON.stringify(r[s])}.`);else{const u=r[s];if(_r(u))_r(c)&&(r[s]=bs([u,c],s));else if(_r(c)){if(!(u===!0||u===void 0))throw new Error("Bug in merge! Target is: "+u);r[s]=bs([{},c],s)}else r[s]=c}}};for(const a of t)o(a);return r}function _r(t){return ze(t)&&!Array.isArray(t)}/*!
|
1331
1340
|
* Adapted from vega-encode:
|
1332
1341
|
* https://github.com/vega/vega/blob/master/packages/vega-encode/src/ticks.js
|
1333
1342
|
*
|
@@ -1335,7 +1344,7 @@ void main() {
|
|
1335
1344
|
* All rights reserved.
|
1336
1345
|
*
|
1337
1346
|
* BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
|
1338
|
-
*/function
|
1347
|
+
*/function Fg(t,e,n){return le(e)&&n!=null&&(e=Math.min(e,~~(ia(t.domain())/n)||1)),ze(e)&&(e.step,e=e.interval),e}function Pg(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(tt(r));if(i>o&&(r=o,o=i,i=r),e=e.filter(function(s){return s=t(s),i<=s&&s<=o}),n>0&&e.length>1){for(var a=[e[0],tt(e)];e.length>n&&e.length>=3;)e=e.filter(function(s,c){return!(c%2)});e.length<3&&(e=a)}return e}function UM(t,e){return t.bins?Pg(t,HM(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function HM(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function GM(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?de(n):String;if(lp(t.type)){var i=VM(n);r=t.bins?i:QM(r,i)}return r}function QM(t,e){return function(n){return t(n)?e(n):""}}function VM(t){var e=Wt(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return YM(de(e),de(".1f")(1)[1])}else return de(e)}function YM(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,a;if(i<0)return r;for(o=_M(r,i),a=o<r.length?r.slice(o):"";--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+a}}function _M(t,e){var n=t.lastIndexOf("e"),r;if(n>0)return n;for(n=t.length;--n>e;)if(r=t.charCodeAt(n),r>=48&&r<=57)return n+1}/*!
|
1339
1348
|
* Adapted from vega-encode:
|
1340
1349
|
* https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js
|
1341
1350
|
*
|
@@ -1343,45 +1352,45 @@ void main() {
|
|
1343
1352
|
* All rights reserved.
|
1344
1353
|
*
|
1345
1354
|
* BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
|
1346
|
-
*/const YM="locus",_M="index";var WM=5;function XM(t){const e=t.type;return!t.bins&&(e===Ir||e===Ri||e===ji)}function Fg(t){return Le(t)&&![ht,_M,YM].includes(t)}function Pg(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var ZM=aa(["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 zg(t,e,n){n=Pg(n);for(const r in t)if(!ZM[r]){if(r==="padding"&&Fg(e.type))continue;Ie(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}r8(e,t,n8(e,t,$M(e,t,n)))}function qM(t,e){const n=KM(t),r=X(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return zg(t,i,e),i}function KM(t){var e=t.type,n="",r;return e===ht?ht+"-"+Ir:(JM(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?ht+"-":r===3?kr+"-":""),(n+e||Ir).toLowerCase())}function JM(t){const e=t.type;return Le(e)&&e!==ep&&e!==tp&&(t.scheme||t.range&&t.range.length&&t.range.every(ne))}function $M(t,e,n){if(!t.domain)return 0;n=Pg(n);var r=e8(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,a=e.zero||e.zero===void 0&&XM(t),s,c;return i?(Fg(o)&&e.padding&&i[0]!==tt(i)&&(i=t8(o,i,e.range,e.padding,e.exponent,e.constant)),(a||e.domainMin!=null||e.domainMax!=null||e.domainMid!=null)&&(s=(i=i.slice()).length-1||1,a&&(i[0]>0&&(i[0]=0),i[s]<0&&(i[s]=0)),e.domainMin!=null&&(i[0]=e.domainMin),e.domainMax!=null&&(i[s]=e.domainMax),e.domainMid!=null&&(c=e.domainMid,(c<i[0]||c>i[s])&&n.warn("Scale domainMid exceeds domain min or max.",c),i.splice(s,0,c))),t.domain(Rg(o,i,n)),o===Lu&&t.unknown(e.domainImplicit?$c:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&Bg(t,e.nice)||null),i.length):0}function e8(t,e,n){return e?(t.domain(Rg(t.type,e,n)),e.length):-1}function t8(t,e,n,r,i,o){var a=Math.abs(tt(n)-n[0]),s=a/(a-2*r),c=t===tn?Gd(e,null,s):t===ji?yc(e,null,s,.5):t===Ri?yc(e,null,s,i||1):t===Oa?c2(e,null,s,o||1):gc(e,null,s);return e=e.slice(),e[0]=c[0],e[e.length-1]=c[1],e}function Rg(t,e,n){if(cp(t)){var r=Math.abs(e.reduce(function(i,o){return i+(o<0?-1:o>0?1:0)},0));r!==e.length&&n.warn("Log scale domain includes zero: "+oa(e))}return e}function n8(t,e,n){let r=e.bins;if(r&&!_e(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,a=r.stop==null?tt(i):r.stop,s=r.step;s||ae("Scale bins parameter missing step property."),r=_t(o,a+s,s)}return r?t.bins=r:t.bins&&delete t.bins,t.type===Ou&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function r8(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=i8(r,e,n);else if(e.scheme&&(o=o8(r,e,n),Ie(o))){if(t.interpolator)return t.interpolator(o);ae(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&Pa(r))return t.interpolator(za(Pl(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(up(e.interpolate,e.interpolateGamma)):Ie(t.round)?t.round(i):Ie(t.rangeRound)&&t.interpolate(i?Pi:$t),o&&t.range(Pl(o,e.reverse))}function i8(t,e,n){t!==ip&&t!==Bu&&ae("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===Bu?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*ku(n,i,r)]}function o8(t,e,n){var r=e.schemeExtent,i,o;return _e(e.scheme)?o=za(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=Pu(i),o||ae(`Unrecognized scheme name: ${e.scheme}`)),n=t===rp?n+1:t===Ou?n-1:t===Nu||t===np?+e.schemeCount||WM:n,Pa(t)?jg(o,r,e.reverse):Ie(o)?u4(jg(o,r),n):t===Lu?o:o.slice(0,n)}function jg(t,e,n){return Ie(t)&&(e||n)?c4(t,Pl(e||[0,1],n)):t}function Pl(t,e){return e?t.slice().reverse():t}const zl=de(",d");function a8(t){return t.chrom+":"+zl(Math.floor(t.pos+1))}function s8(t,e){return t.chrom+":"+zl(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+zl(Math.ceil(e.pos))}const c8="https://genomespy.app/data/genomes/";class u8{constructor(e){if(this.config=e,!this.config.contigs&&typeof this.config.name!="string")throw new Error("No name has been defined for the genome assembly!");this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,this.config.contigs&&this.setChromSizes(this.config.contigs)}get name(){return this.config.name}async load(e){if(!this.config.contigs){this.config.baseUrl?this.baseUrl=/^http(s)?/.test(this.config.baseUrl)?this.config.baseUrl:e+"/"+this.config.baseUrl:this.baseUrl=c8;try{this.setChromSizes(l8(await Li({baseURL:this.baseUrl}).load(`${this.config.name}/${this.name}.chrom.sizes`)))}catch(n){throw new Error(`Could not load chrom sizes: ${n.message}`)}}}setChromSizes(e){let n=0;this.startByIndex=[0];for(let r=0;r<e.length;r++){this.startByIndex.push(n);const i=e[r].size,o={...e[r],continuousStart:n,continuousEnd:n+i,continuousInterval:[n,n+i],index:r,number:r+1,odd:!(r&1)};this.chromosomes.push(o);const a=o.name.replace(/^chr/i,"");for(const s of["chr"+a,"CHR"+a,"Chr"+a,o.number,""+o.number,a,o.name])this.cumulativeChromPositions.set(s,n),this.chromosomesByName.set(s,o);n+=o.size}this.totalSize=n}getExtent(){return[0,this.totalSize]}toContinuous(e,n){let r=this.cumulativeChromPositions.get(e);if(r===void 0)throw new Error("Unknown chromosome/contig: "+e);return r+ +n}toChromosome(e){if(e>=this.totalSize)return;e=Math.floor(e);const n=Mn(this.startByIndex,e)-1;if(n>0&&n<=this.chromosomes.length)return this.chromosomes[n-1]}toChromosomal(e){const n=this.toChromosome(e);if(n)return{chrom:n.name,pos:Math.floor(e)-n.continuousStart}}getChromosome(e){return this.chromosomesByName.get(e)}formatInterval(e){return s8(...this.toChromosomalInterval(e))}toChromosomalInterval(e){const n=this.toChromosomal(e[0]+.5),r=this.toChromosomal(e[1]-.5);return r.pos+=1,[n,r]}toContinuousInterval(e){var i;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,n.pos??0),this.toContinuous(r.chrom,r.pos??((i=this.chromosomesByName.get(r.chrom))==null?void 0:i.size))]}parseInterval(e){const n=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(n){const r=n[1];if(n.slice(2).every(s=>s===void 0)){const s=this.getChromosome(r);return s?[s.continuousStart,s.continuousEnd]:void 0}const i=n[3]||r,o=parseInt(n[2].replace(/,/g,"")),a=n[4]!==void 0?parseInt(n[4].replace(/,/g,"")):o;return[this.toContinuous(r,o-1),this.toContinuous(i,a)]}}}function l8(t){return M2(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function Ug(t){return ze(t)&&"chrom"in t}function f8(t){return t.every(Ug)}class bo extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof bo&&e.type!=this.type)throw new Error(`Cannot combine different types of domains: ${this.type} and ${e.type}`);for(const n of e)this.extend(n);return this}extendAllWithAccessor(e,n){for(const r of e)this.extend(n(r));return this}}class Rl extends bo{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)}}class Hg extends bo{constructor(){super(),this.type="ordinal",this.uniqueValues=new Set}extend(e){return e==null||Number.isNaN(e)?this:(this.uniqueValues.has(e)||(this.uniqueValues.add(e),this.push(e)),this)}}class Gg extends Hg{constructor(){super(),this.type="nominal"}}class d8 extends bo{constructor(e){super();let n=0;for(let r=1;r<e.length;r++)n+=Math.sign(e[r]-e[r-1]);if(Math.abs(n)!=e.length-1)throw new Error("Piecewise domain must be strictly increasing or decreasing: "+JSON.stringify(e));e.forEach(r=>this.push(r))}extend(e){if(this.includes(e))return this;throw new Error("Piecewise domains are immutable and cannot be unioned!")}}const Qg={quantitative:Rl,index:Rl,locus:Rl,nominal:Gg,ordinal:Hg};function Vg(t,e){if(t=="quantitative"&&h8(e)){const n=new d8(e);return n.type=t,n}else if(Qg[t]){const n=new Qg[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function h8(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function Yg(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function p8(t){return--t*t*t+1}function m8(t){return(Math.pow(2,-10*t)-.0009765625)*1.0009775171065494}function g8(t){return 1-m8(t)}const _g="quantitative",jl="ordinal",Ul="nominal",Wg="locus",y8="index";class v8{constructor(e){this.channel=e,this.members=[],this.type=null,this._zoomExtent=void 0,this._domainListeners=new Set,this.name=void 0,this._scale=void 0}addEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.add(n)}removeEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.delete(n)}_notifyDomainListeners(){for(const e of this._domainListeners.values())e({type:"domain",scaleResolution:this})}pushUnitView(e,n){var a;const r=Zu(e,n),i=r.type,o=(a=r==null?void 0:r.scale)==null?void 0:a.name;if(o){if(this.name!==void 0&&o!=this.name)throw new Error(`Shared scales have conflicting names: "${o}" vs. "${this.name}"!`);this.name=o}if(!this.type)this.type=i;else if(i!==this.type&&!ro(n))throw new Error(`Can not use shared scale for different data types: ${this.type} vs. ${i}. Use "resolve: independent" for channel ${this.channel}`);this.members.push({view:e,channel:n})}isExplicitDomain(){return!!this.getConfiguredDomain()}_getMergedScaleProps(){return Yr(this,"mergedScaleProps",()=>{const e=this.members.map(n=>Zu(n.view,n.channel).scale).filter(n=>n!==void 0);return bs(e,"scale",["domain"])})}getScaleProps(){return Yr(this,"scaleProps",()=>{const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n={...this._getDefaultScaleProperties(this.type),...e};n.type||(n.type=b8(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:nn(n.type)?n.domain=new Gg:n.scheme&&(n.domain=[0,1]),!n.domain&&n.domainMid!==void 0&&(n.domain=[n.domainMin??0,n.domainMax??1]),this.channel=="y"&&nn(n.type)&&n.reverse==null&&(n.reverse=!0),n.range&&n.scheme&&delete n.scheme,!("zoom"in n)&&["index","locus"].includes(n.type)&&(n.zoom=!0),A8(n,this.channel),n})}getInitialDomain(){return this.getConfiguredDomain()??(this.type==Wg?this.getGenome().getExtent():this.getDataDomain())}getConfiguredDomain(){return this._reduceDomains(e=>ro(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>ro(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){vg(this,"scaleProps");const e=this.getScaleProps();zg(e,this._scale),Le(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=qM(e);return this._scale=n,qx(n)&&n.genome(this.getGenome()),Le(n.type)&&(this._zoomExtent=this._getZoomExtent()),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var e;return((e=this.getGenome())==null?void 0:e.toChromosomalInterval(this.getDomain()))??this.getDomain()}isZoomed(){return this.isZoomable()&&kp(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!Yp(this.channel))return!1;const e=this.getScale().type;return["linear","locus","index","log","pow","sqrt"].includes(e)?!!this.getScaleProps().zoom:!1}zoom(e,n,r){if(!this.isZoomable())return!1;const i=this.getScale(),o=i.domain();let a=[...o],s=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),"align"in i&&(s+=i.align()),i.type){case"linear":case"index":case"locus":a=o2(a,r||0),a=gc(a,s,e);break;case"log":a=a2(a,r||0),a=Gd(a,s,e);break;case"pow":case"sqrt":{const c=i;a=s2(a,r||0,c.exponent()),a=yc(a,s,e,c.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(a=u2(a,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(c=>a[c]!=o[c])?(i.domain(a),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var s;if(ra(n)&&(n=n?700:0),!this.isZoomable())throw new Error("Not a zoomable scale!");const r=this.fromComplexInterval(e),i=(s=this.members[0])==null?void 0:s.view.context.animator,o=this.getScale(),a=o.domain();if(n>0&&a.length==2){const c=a[1]-a[0],u=a[0]+c/2,f=r[1]-r[0],l=r[0]+f/2,d=k0([u,0,c],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*d.duration,easingFunction:Yg,onUpdate:p=>{const[h,,m]=d(p);o.domain([h-m/2,h+m/2]),this._notifyDomainListeners()}}),o.domain(r),this._notifyDomainListeners()}else o.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}resetZoom(){if(!this.isZoomable())throw new Error("Not a zoomable scale!");const e=this.getDomain(),n=this.getInitialDomain();return[0,1].some(r=>n[r]!=e[r])?(this._scale.domain(n),this._notifyDomainListeners(),!0):!1}getZoomLevel(){return this.isZoomable()?ia(this._zoomExtent)/ia(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(x8(n)&&_e(n.extent))return this.fromComplexInterval(n.extent);if(n)return e.type=="locus"?this.getGenome().getExtent():this._scale.domain()}_getDefaultScaleProperties(e){const n=this.channel,r={};return this.isExplicitDomain()&&(r.zero=!1),no(n)?r.nice=!this.isExplicitDomain():Zn(n)?r.scheme=e==Ul?"tableau10":e==jl?"blues":"viridis":_a(n)?r.range=Wp(n):n=="size"?r.range=[0,400]:n=="angle"&&(r.range=[0,360]),r}getGenome(){var n;if(this.type!=="locus")return;const e=(n=this.members[0].view.context.genomeStore)==null?void 0:n.getGenome();if(!e)throw new Error("No genome has been defined!");return e}invertToComplex(e){const n=this.getScale();if("invert"in n){const r=n.invert(e);return this.toComplex(r)}else throw new Error("The scale does not support inverting!")}toComplex(e){const n=this.getGenome();return n?n.toChromosomal(e):e}fromComplex(e){return Ug(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&f8(e)?this.getGenome().toContinuousInterval(e):e}_getViewPaths(){return this.members.map(e=>e.view.getPathString()).join(", ")}_reduceDomains(e){const n=this.members.map(e).filter(r=>!!r);if(n.length)return n.reduce((r,i)=>r.extendAll(i))}}function b8(t,e){if(e==y8||e==Wg){if(Yp(t))return e;throw new Error(`${t} does not support ${e} data type. Only positional channels do.`)}const 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"]},i=["uniqueId","facetIndex","semanticScore","search","text","sample"].includes(t)?"null":n[t]?n[t][[Ul,jl,_g].indexOf(e)]:e==_g?"linear":"ordinal";if(i===void 0)throw new Error(`Channel "${t}" is not compatible with "${e}" data type. Use of a proper scale may be needed.`);return i}function A8(t,e){no(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&Le(t.type)&&(t.clamp=!0)}function x8(t){return ze(t)}function Hl(...t){for(const e of t)if(e!==void 0)return e}class w8{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=Re(this.members))==null?void 0:e.view.getScaleResolution(this.channel)}pushUnitView(e,n){const r=e.getScaleResolution(this.channel);if(!r)throw new Error("Cannot find a scale resolution!");if(this.scaleResolution&&r!==this.scaleResolution)throw new Error("Shared axes must have a shared scale!");this.members.push({view:e,channel:n})}getAxisProps(){return Yr(this,"axisProps",()=>{const e=this.members.map(n=>{const r=n.view.mark.encoding[n.channel];return"axis"in r&&r.axis});return e.length>0&&e.some(n=>n===null)?null:bs(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var s;const a=Zu(o.view,o.channel);if(!ot(a))return{member:o,explicitTitle:Hl((s=a.axis)==null?void 0:s.title,a.title),implicitTitle:Hl(Xn(a)?a.field:void 0,qu(a)?a.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var a;if(ro(o.member.channel)&&!o.explicitTitle){const s=Or(o.member.channel);return((a=n.find(c=>c.member.view==o.member.view&&c.member.channel==s))==null?void 0:a.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>Hl(o.explicitTitle,o.implicitTitle)).filter(ne));return i.size?[...i].join(", "):null}}class Xg extends Ng{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class Ot extends nr{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,this.children=(e.layer||[]).map((o,a)=>{if(_l(o)||Yl(o))return n.createView(o,this,"layer"+a);throw new Error("LayerView accepts only unit or layer specs as children!")})}*[Symbol.iterator](){for(const e of this.children)yield e}render(e,n,r={}){if(this.isVisible()){e.pushView(this,n);for(const i of this.children)i.render(e,n,r);e.popView(this)}}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0),this.children.length&&this.children.at(-1).propagateInteractionEvent(e),!e.stopped&&this.handleInteractionEvent(void 0,e,!1)}}class Zg{constructor(e,n){this.n=e,this.maxCols=n??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(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<r;i++){const o=[];e.push(o);for(let a=0;a<n;a++){const s=i*n+a;s<this.n&&o.push(s)}}return e}get colIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<n;i++){const o=[];e.push(o);for(let a=0;a<r;a++){const s=a*n+i;s<this.n&&o.push(s)}}return e}getCellIndex(e,n){let r=0;if(this.maxCols==1/0)r=n==0?e:void 0;else{if(e>=this.maxCols)return;r=n*this.nCols+e}return r<this.n?r:void 0}getCellCoords(e){if(!(e<0||e>=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}}function Ft(t){return()=>t}const Vt=class{static create(e,n,r,i){return new Vt(Ft(e),Ft(n),Ft(r),Ft(i))}_offset(e,n){const r=this["_"+e];if(n===0)return r;switch(typeof n){case"number":return()=>r()+n;case"function":return()=>r()+n();default:throw new Error("Not a number of function")}}_passThrough(e){return this._offset(e,0)}constructor(e,n,r,i){this._x=e,this._y=n,this._width=r,this._height=i}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(e){if(!Object.keys(e).length)return this;const n=r=>{const i=e[r];return typeof i=="number"?Ft(i):typeof i=="function"?i:this._passThrough(r)};return new Vt(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new Vt(this._offset("x",e),this._offset("y",n),this._passThrough("width"),this._passThrough("height"))}translateBy(e){return this.translate(e.x,e.y)}expand(e,n=1){return e.left==0&&e.top==0&&e.right==0&&e.bottom==0?this:new Vt(e.left?this._offset("x",-e.left*n):this._passThrough("x"),e.top?this._offset("y",-e.top*n):this._passThrough("y"),e.width?this._offset("width",e.width*n):this._passThrough("width"),e.height?this._offset("height",e.height*n):this._passThrough("height"))}shrink(e){return this.expand(e,-1)}intersect(e){return this===e?this:new Vt(()=>Math.max(this.x,e.x),()=>Math.max(this.y,e.y),()=>Math.min(this.x2,e.x2)-Math.max(this.x,e.x),()=>Math.min(this.y2,e.y2)-Math.max(this.y,e.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new Vt(Ft(this.x),Ft(this.y),Ft(this.width),Ft(this.height))}containsPoint(e,n){return e>=this.x&&e<this.x2&&n>=this.y&&n<this.y2}normalizePoint(e,n){return{x:(e-this.x)/this.width,y:(n-this.y)/this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}};let dn=Vt;hc(dn,"ZERO",Vt.create(0,0,0,0));function qg(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class rr extends ue{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function Kg(t){const e={...t.format};if(e.type??(e.type=D8(t)&&C8(t.url)),e.parse??(e.parse="auto"),!e.type)throw new Error("Format for the data source was not defined and it could not be inferred: "+JSON.stringify(t));return e}function C8(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const As=t=>typeof t!="object"?S8:E8,S8=t=>({data:t}),E8=t=>t;function D8(t){return"url"in t}function M8(t){return"dynamicCallbackSource"in t}class Jg extends rr{constructor(e){super(),this.callback=e}loadSynchronously(){if(!this.callback)return;const e=this.callback();if(!e||typeof e[Symbol.iterator]!="function")throw new Error("Dynamic data callback didn't return iterable data!");this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=As(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const $g="chromosome_ticks_and_labels",e1={x:"width",y:"height"};function Gl(t){return t=="x"?"y":"x"}const Ql={x:["bottom","top"],y:["left","right"]},t1=Object.fromEntries(Object.entries(Ql).map(([t,e])=>e.map(n=>[n,t])).flat(1));function ir(t){return t1[t]}class n1 extends Ot{constructor(e,n,r,i){const o=n=="locus",a={...o?k8:r1,...I8(n,e),...e};if(super(o?N8(a):i1(a),r,i,`axis_${e.orient}`),this.axisProps=a,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new Jg(()=>this.ticks),o){const s=ir(this.axisProps.orient),c=this.getScaleResolution(s).getGenome();this.findChildByName($g).getDynamicDataSource=()=>new Jg(()=>c.chromosomes)}this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return t1[this.axisProps.orient]=="x"?new er(n,e):new er(e,n)}getPerpendicularSize(){return Vl(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=ir(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(kp(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=T8(this.axisProps,n,this.axisLength,i);o!==i&&(this.ticks=o,this.tickSource.loadSynchronously()),this.axisUpdateRequested=!1}onBeforeRender(){super.onBeforeRender(),this._updateAxisData()}render(e,n,r={}){this.isVisible()&&(this.axisLength=n[e1[ir(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function Vl(t){const e=ir(t.orient);let n=t.ticks&&t.tickSize||0;return t.labels&&(n+=t.labelPadding,e=="x"?n+=t.labelFontSize:n+=30),t.title&&(n+=t.titlePadding+t.titleFontSize),n=Math.min(t.maxExtent||1/0,Math.max(t.minExtent||0,n)),n}function T8(t,e,n,r=[]){const i=s=>25+60*qg(100,700,s);let o=le(t.tickCount)?t.tickCount:Math.round(n/i(n));o=Bg(e,o,t.tickMinStep);const a=t.values?Og(e,t.values,o):RM(e,o);if(y4(a,r,s=>s,s=>s.value))return r;{const s=UM(e,o,t.format);return a.map(c=>({value:c,label:s(c)}))}}const r1={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};function I8(t,e){const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",a=e.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(a)>30?(i=a>0==(n=="bottom")?"left":"right",o="middle"):o=n=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:a,labelBaseline:o}}function i1(t){const e={...t,extent:Vl(t)},n=ir(e.orient),r=Gl(n),i=e.orient=="bottom"||e.orient=="right"?1:-1,o=e.orient=="bottom"||e.orient=="left"?1:0,a=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[r]:o,size:e.domainWidth}}),s=()=>({name:"labels",mark:{type:"text",clip:!1,align:e.labelAlign,angle:e.labelAngle,baseline:e.labelBaseline,[r+"Offset"]:(e.tickSize+e.labelPadding)*i,[r]:o,size:e.labelFontSize,color:e.labelColor,minBufferSize:1500},encoding:{[n]:{field:"value",type:"quantitative"},text:{field:"label"}}}),c=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:e.tickDash,strokeCap:e.tickCap,color:e.tickColor,size:e.tickWidth,minBufferSize:300},encoding:{[r]:{value:o},[r+"2"]:{value:o-e.tickSize/e.extent*(o?1:-1)}}}),u=()=>({name:"title",data:{values:[0]},mark:{type:"text",clip:!1,align:"center",baseline:e.orient=="bottom"?"bottom":"top",angle:[0,90,0,-90][["top","right","bottom","left"].indexOf(e.orient)],text:e.title,color:e.titleColor,[n]:.5,[r]:1-o}}),f=()=>{const d={name:"ticks_and_labels",encoding:{[n]:{field:"value",type:"quantitative"}},layer:[]};return e.ticks&&d.layer.push(c()),e.labels&&d.layer.push(s()),d},l={[e1[Gl(ir(e.orient))]]:e.extent,data:{dynamicCallbackSource:!0},layer:[]};return e.domain&&l.layer.push(a()),(e.ticks||e.labels)&&l.layer.push(f()),e.title&&l.layer.push(u()),l}const k8={...r1,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};function N8(t){const e={...t,extent:Vl(t)},n=ir(e.orient),r=Gl(n),i=e.orient=="bottom"||e.orient=="left"?1:0,o=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:t.chromTickDash,strokeDashOffset:t.chromTickDashOffset,[r]:i,[r+"2"]:i-e.chromTickSize/e.extent*(i?1:-1),color:t.chromTickColor,size:e.chromTickWidth}}),a=()=>{let u;switch(e.orient){case"top":u={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":u={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":u={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":u={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:u={}}return{name:"chromosome_labels",mark:{type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1,...u},encoding:{[n+"2"]:{field:"continuousEnd",type:"locus"},text:{field:"name"}}}};let s;switch(e.orient){case"bottom":case"top":s={};break;case"left":s={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":s={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:s={}}const c=i1({...t,...s});if(t.chromTicks||t.chromLabels){const u={name:$g,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&u.layer.push(o()),t.chromLabels){u.layer.push(a());let f;c.layer.filter(l=>l.name=="ticks_and_labels").forEach(l=>l.layer.filter(d=>d.name=="labels").forEach(d=>{f=d.mark})),f&&(e.orient=="top"||e.orient=="bottom"?(f.viewportEdgeFadeWidthLeft=30,f.viewportEdgeFadeDistanceLeft=40):(f.viewportEdgeFadeWidthBottom=30,f.viewportEdgeFadeDistanceBottom=40))}c.layer.push(u)}return c}const o1={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"},L8={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},B8={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},O8={start:0,middle:.5,end:1},F8={start:"left",middle:"center",end:"right"};function P8(t){if(!t)return;const e=ne(t)?{text:t}:t;if(!e.text||e.orient=="none")return;const n={"track-title":L8,overlay:B8}[e.style]??{},r={...o1,...n,...e};let i={},o={x:0,y:0};const a=O8[r.anchor??"middle"];switch(r.orient){case"top":o={x:a,y:1},i={baseline:"alphabetic",angle:0};break;case"right":o={x:1,y:1-a},i={baseline:"alphabetic",angle:90};break;case"bottom":o={x:a,y:0},i={baseline:"top",angle:0};break;case"left":o={x:0,y:a},i={baseline:"alphabetic",angle:-90};break}const s={...o1,...i,...n,...e},c={xOffset:0,yOffset:0};switch(r.orient){case"top":c.yOffset=-s.offset;break;case"right":c.xOffset=s.offset;break;case"bottom":c.yOffset=s.offset;break;case"left":c.xOffset=-s.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...o,...c,text:s.text,align:s.align??F8[s.anchor],angle:s.angle,baseline:s.baseline,dx:s.dx,dy:s.dy,color:s.color,font:s.font,size:s.fontSize,fontStyle:s.fontStyle,fontWeight:s.fontWeight}}}function a1(t,e,n,r){if(t.type=="wheel"){t.uiEvent.preventDefault();const i=t.uiEvent,o=i.deltaMode?120:1;let{x:a,y:s}=t.point;if(r){const c=r.mark.encoders;c.x&&!c.x2&&!c.x.constantValue&&(a=+c.x(r.datum)*e.width+e.x),c.y&&!c.y2&&!c.y.constantValue&&(s=(1-+c.y(r.datum))*e.height+e.y)}Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:a,y:s,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300}):n({x:a,y:s,xDelta:-i.deltaX*o,yDelta:0,zDelta:0})}else if(t.type=="mousedown"&&t.uiEvent.button===0){const i=t.uiEvent;i.preventDefault();let o=i;const a=c=>{n({x:o.clientX,y:o.clientY,xDelta:c.clientX-o.clientX,yDelta:c.clientY-o.clientY,zDelta:0}),o=c},s=c=>{document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",s)};document.addEventListener("mouseup",s,!1),document.addEventListener("mousemove",a,!1)}}class s1 extends nr{constructor(n,r,i,o,a){super(n,r,i,o);$(this,Go);$(this,Et);$(this,oc);$(this,ac);$(this,br);$(this,Qo);$(this,Vo);$(this,Yo);$(this,sc);$(this,ci,1/0);$(this,ui,10);$(this,$e,[]);$(this,li,0);this.spec=n,et(this,ui,n.spacing??10),et(this,ci,a),et(this,$e,[]),this.wrappingFacet=!1,this._createChildren()}_createChildren(){}appendChild(n){n.parent??(n.parent=this),j(this,$e).push(se(this,Go,Od).call(this,n)),Vb(this,li)._++}setChildren(n){for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=j(this,$e).findIndex(o=>o.view==n);if(i>=0)j(this,$e)[i]=se(this,Go,Od).call(this,r);else throw new Error("Not my child view!")}get children(){return j(this,$e).map(n=>n.view)}get childCount(){return j(this,$e).length}onScalesResolved(){super.onScalesResolved(),se(this,ac,Xb).call(this)}*[Symbol.iterator](){for(const n of j(this,$e)){n.background&&(yield n.background);for(const r of Object.values(n.axes))r&&(yield r);yield n.view,n.title&&(yield n.title)}}getOverhang(){const n=se(this,br,Jo).call(this,"column"),r=se(this,br,Jo).call(this,"row");return!n.length||!r.length?Ke.zero():new Ke(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)}getSize(){return this._cache("size",()=>new er(se(this,Vo,Pd).call(this,"column"),se(this,Vo,Pd).call(this,"row")).subtractPadding(this.getOverhang()).addPadding(this.getPadding()))}render(n,r,i={}){if(!this.isVisible())return;this.parent||(r=r.shrink(this.getPadding())),n.pushView(this,r);const o={devicePixelRatio:this.context.glHelper.dpr},a=yo(se(this,Qo,Fd).call(this,"column"),r.width,o),s=yo(se(this,Qo,Fd).call(this,"row"),r.height,o),c=new Zg(j(this,Et,Cn).length,j(this,ci)??1/0);for(const[u,f]of j(this,Et,Cn).entries()){const{view:l,axes:d,background:p,title:h}=f,[m,g]=c.getCellCoords(u),y=a[se(this,Yo,zd).call(this,"column",m)],b=s[se(this,Yo,zd).call(this,"row",g)],w=l.getSize(),C=l.getPadding().subtract(l.getOverhang()),x=y.location+C.left,v=b.location+C.top,A=(w.width.grow?y.size:w.width.px)-C.width,D=(w.height.grow?b.size:w.height.px)-C.height,k=new dn(()=>r.x+x,()=>r.y+v,()=>A,()=>D);f.coords=k,p==null||p.render(n,k,i);const O=R8(l);O&&l.render(n,k,i);for(const[T,B]of Object.entries(d)){const G=B.axisProps;let Q;const De=B.getPerpendicularSize();T=="bottom"?Q=k.translate(0,k.height+G.offset).modify({height:De}):T=="top"?Q=k.translate(0,-De-G.offset).modify({height:De}):T=="left"?Q=k.translate(-De-G.offset,0).modify({width:De}):T=="right"&&(Q=k.translate(k.width+G.offset,0).modify({width:De})),B.render(n,Q)}O||l.render(n,k,i),h==null||h.render(n,k,{...i,clipRect:void 0})}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=j(this,Et,Cn).find(o=>o.coords.containsPoint(n.point.x,n.point.y)),i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof pe||i instanceof Ot)&&a1(n,r.coords,o=>se(this,sc,Zb).call(this,r.coords,r.view,o),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}ci=new WeakMap,ui=new WeakMap,$e=new WeakMap,li=new WeakMap,Go=new WeakSet,Od=function(n){var i;const r={view:n,background:void 0,axes:{},coords:dn.ZERO};if(n instanceof pe||n instanceof Ot){const o=(i=n.spec)==null?void 0:i.view;if(o!=null&&o.fill||o!=null&&o.stroke){const s=new pe(c1(o),this.context,n,"background"+j(this,li));s.blockEncodingInheritance=!0,r.background=s}const a=P8(n.spec.title);if(a){const s=new pe(a,this.context,n,"title"+j(this,li));s.blockEncodingInheritance=!0,r.title=s}}return r},Et=new WeakSet,Cn=function(){return j(this,$e).filter(n=>n.view.isVisible())},oc=new WeakSet,Wb=function(){return new Zg(j(this,Et,Cn).length,j(this,ci)??1/0)},ac=new WeakSet,Xb=function(){if(Object.keys(this.resolutions.axis).length)throw new Error("ConcatView does not (currently) support shared axes!");for(const n of j(this,$e)){const{view:r,axes:i}=n,o=(a,s,c)=>{const u=a.getAxisProps();if(u!==null){if(!u.orient){for(const f of Ql[s])if(!i[f]){u.orient=f;break}if(!u.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if(u.title??(u.title=a.getTitle()),!Ql[s].includes(u.orient))throw new Error(`Invalid axis orientation "${u.orient}" on channel "${s}"!`);if(i[u.orient])throw new Error(`An axis with the orient "${u.orient}" already exists!`);i[u.orient]=new n1(u,a.scaleResolution.type,this.context,c)}};if(r instanceof pe||r instanceof Ot)for(const a of["x","y"]){const s=r.resolutions.axis[a];s&&o(s,a,r)}if(r instanceof Ot){for(const a of r.children)for(const[s,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&u.orient&&o(c,s,a)}for(const a of r.children)for(const[s,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&!u.orient&&o(c,s,a)}}}},br=new WeakSet,Jo=function(n){const r=n=="column"?["left","right"]:["top","bottom"],i=n=="column"?"width":"height",o=(a,s)=>a.map(c=>{const u=j(this,Et,Cn)[c].axes[r[s]];if(u)return Math.max(u.getPerpendicularSize()+u.axisProps.offset,0);const f=j(this,Et,Cn)[c].view.getOverhang();return n=="column"?s?f.right:f.left:s?f.bottom:f.top}).reduce((c,u)=>Math.max(c,u),0);return j(this,oc,Wb)[n=="column"?"colIndices":"rowIndices"].map(a=>({axisBefore:o(a,0),axisAfter:o(a,1),view:TM(a.map(s=>j(this,Et,Cn)[s].view.getSize()[i]))}))},Qo=new WeakSet,Fd=function(n){const r=se(this,br,Jo).call(this,n),i=[];i.push(vo);for(const[o,a]of r.entries())o>0&&i.push({px:j(this,ui),grow:0}),(o==0||this.wrappingFacet)&&i.push(vo),i.push({px:a.axisBefore,grow:0}),i.push(a.view),i.push({px:a.axisAfter,grow:0}),(o==r.length-1||this.wrappingFacet)&&i.push(vo);return i},Vo=new WeakSet,Pd=function(n){let r=0,i=0;const o=(n=="row"&&this.spec.height)??(n=="column"&&this.spec.width);if(o||o===0)return Tg(o);const a=se(this,br,Jo).call(this,n);for(const[s,c]of a.entries())s>0&&(i+=j(this,ui)),(s==0||this.wrappingFacet)&&(i+=0),i+=c.axisBefore,i+=c.view.px??0,r+=c.view.grow??0,i+=c.axisAfter,(s==a.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},Yo=new WeakSet,zd=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},sc=new WeakSet,Zb=function(n,r,i){for(const[o,a]of Object.entries(z8(r))){if(a.size<=0)continue;const s=n.normalizePoint(i.x,i.y),c=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),u={x:c.x-s.x,y:c.y-s.y};for(const f of a)f.zoom(2**i.zDelta,o=="y"?1-s[o]:s[o],o=="x"?u.x:-u.y)}this.context.animator.requestRender()};function c1(t){return{configurableVisibility:!1,data:{values:[{}]},mark:{fill:null,strokeWidth:1,fillOpacity:t.fill?1:0,...t,type:"rect",clip:!1,tooltip:null}}}function z8(t){const e={x:new Set,y:new Set};return t.visit(n=>{for(const[r,i]of Object.entries(e)){const o=n.getScaleResolution(r);o&&o.isZoomable()&&i.add(o)}}),e}function R8(t){let e=!0;return t.visit(n=>{n instanceof pe&&e&&(e=n.mark.properties.clip)}),e}class Wr extends s1{constructor(e,n,r,i){super(e,n,r,i,Xl(e)?e.columns:Wl(e)?1:1/0),this.spec=e}_createChildren(){const e=this.spec,n=Xl(e)?e.concat:Wl(e)?e.vconcat:e.hconcat;this.setChildren(n.map((r,i)=>this.context.createView(r,this,"grid"+i)))}}class j8{constructor(){this.types=[];const e=n=>(r,i,o,a)=>new n(r,i,o,r.name??a);this.addViewType(U8,e(Xg)),this.addViewType(_l,e(Ot)),this.addViewType(Yl,e(pe)),this.addViewType(Wl,e(Wr)),this.addViewType(H8,e(Wr)),this.addViewType(Xl,e(Wr))}addViewType(e,n){this.types.push({specGuard:e,factory:n})}createView(e,n,r,i){const o=this.types.find(a=>a.specGuard(e));if(o)return o.factory(e,n,r,i??"unnamed");throw new Error("Invalid spec, cannot figure out the view type from the properties: "+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){const n=this.types.filter(r=>r.specGuard(e));if(n.length>1)throw new Error("Ambiguous spec. Cannot create a view!");return n.length==1}}function Yl(t){return"mark"in t&&(ne(t.mark)||ze(t.mark))}function _l(t){return"layer"in t&&ze(t.layer)}function u1(t){return t&&(Yl(t)||_l(t))&&"aggregateSamples"in t}function U8(t){return"import"in t}function Wl(t){return"vconcat"in t&&_e(t.vconcat)}function H8(t){return"hconcat"in t&&_e(t.hconcat)}function Xl(t){return"concat"in t&&_e(t.concat)}const G8={point:pM,rect:cM,rule:yM,link:xM,text:MM};class pe extends nr{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const o=G8[this.getMarkType()];if(o)this.mark=new o(this);else throw new Error(`No such mark: ${this.getMarkType()}`);this.sampleAggregateViews=[],this._initializeAggregateViews(),this.coords=void 0}*[Symbol.iterator](){for(const e of this.sampleAggregateViews)yield e}replaceChild(e,n){const r=this.sampleAggregateViews.indexOf(e);if(r>=0)this.sampleAggregateViews[r]=n;else throw new Error("Not my child view!")}render(e,n,r={}){this.isVisible()&&(this.coords=n,e.pushView(this,n),e.renderMark(this.mark,r),e.popView(this))}getMarkType(){return typeof this.spec.mark=="object"?this.spec.mark.type:this.spec.mark}resolve(e){const n=this.mark.encoding;for(const[r,i]of Object.entries(n)){if(!qe(i))continue;let o=Or(i.resolutionChannel??r);if(e=="axis"&&!no(o))continue;let a=this;for(;a.parent instanceof nr&&["shared","excluded"].includes(a.parent.getConfiguredOrDefaultResolution(o,e))&&a.getConfiguredOrDefaultResolution(o,e)!="excluded";)a=a.parent;a.resolutions[e][o]||(a.resolutions[e][o]=e=="scale"?new v8(o):new w8(o)),no(r)?a.resolutions[e][o].pushUnitView(this,r):e=="scale"&&a.resolutions[e][o].pushUnitView(this,r)}}getAccessor(e){return this._cache("accessor/"+e,()=>{const n=this.mark.encoding;if(n&&n[e])return this.context.accessorFactory.createAccessor(n[e])})}getFacetAccessor(e){const n=this.getAccessor("sample");return n||super.getFacetAccessor(this)}getCollector(){return this.context.dataFlow.findCollectorByKey(this)}_validateDomainQuery(e){if(ro(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!qe(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(e){const n=this._validateDomainQuery(e),r=n&&n.scale&&n.scale.domain;if(r){const i=this.getScaleResolution(n.resolutionChannel??e);return Vg(n.type??"nominal",i.fromComplexInterval(r))}}extractDataDomain(e){const r=this._validateDomainQuery(e).type??"nominal",i=s=>{let c;const u=this.mark.encoding[s];if(u){const f=this.context.accessorFactory.createAccessor(u);if(f)if(c=Vg(r),f.constant)c.extend(f({}));else{const l=this.getCollector();l!=null&&l.completed&&l.visitData(d=>c.extend(f(d)))}}return c};let o=i(e);const a=Ku[e];if(a){const s=i(a);s&&o.extendAll(s)}return o}getZoomLevel(){const e=n=>{var r;return((r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())??1};return to.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){if(u1(this.spec))for(const e of this.spec.aggregateSamples){const n=e.transform??[];n.length&&Re(n).type!="collect"&&n.push({type:"collect"}),n.push({type:"mergeFacets"}),e.transform=n,e.encoding={...e.encoding??{},sample:null};const r=this.context.createView(e,this,"summaryView");r.getFacetFields=i=>{},this.sampleAggregateViews.push(r)}}propagateInteractionEvent(e){e.target=this}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function*Zl(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of Zl(r,[...e,n]))yield i;else yield[[...e,n],r]}class Xr extends ue{constructor(e){super(),this.params=e??{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new Tn([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){dM(e)&&(this._data=[],this.facetBatches.set(Ze(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?Qd(e.field,e.order):void 0,r=a=>{n&&a.sort(n)};if((o=this.params.groupby)!=null&&o.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const a=this.params.groupby.map(c=>q(c)),s=mi(this._data,...a);this.facetBatches.clear();for(const[c,u]of Zl(s))this.facetBatches.set(c,u)}for(const a of this.facetBatches.values())r(a);if(this.children.length)for(const[a,s]of this.facetBatches.entries()){if(a){const c={type:"facet",facetId:a};for(const u of this.children)u.beginBatch(c)}for(const c of s)this._propagate(c)}super.complete();for(const a of this.observers)a(this)}getData(){switch(this._checkStatus(),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{const e=this.facetBatches;return{[Symbol.iterator]:function*(){for(const r of e.values())for(let i=0;i<r.length;i++)yield r[i]}}}}}visitData(e){this._checkStatus();for(const n of this.facetBatches.values())for(let r=0;r<n.length;r++)e(n[r])}getItemCount(){let e=0;for(const n of this.facetBatches.values())e+=n.length;return e}_checkStatus(){if(!this.completed)throw new Error("Data propagation is not completed! No data are available.")}}class Ao{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,n){let r=this.length++;for(;r>0;){const i=r-1>>1,o=this.values[i];if(n>=o)break;this.ids[r]=this.ids[i],this.values[r]=o,r=i}this.ids[r]=e,this.values[r]=n}pop(){if(this.length===0)return;const e=this.ids[0];if(this.length--,this.length>0){const n=this.ids[0]=this.ids[this.length],r=this.values[0]=this.values[this.length],i=this.length>>1;let o=0;for(;o<i;){let a=(o<<1)+1;const s=a+1;let c=this.ids[a],u=this.values[a];const f=this.values[s];if(s<this.length&&f<u&&(a=s,c=this.ids[s],u=f),u>=r)break;this.ids[o]=c,this.values[o]=u,o=a}this.ids[o]=n,this.values[o]=r}return e}peek(){if(this.length!==0)return this.ids[0]}peekValue(){if(this.length!==0)return this.values[0]}shrink(){this.ids.length=this.values.length=this.length}}class Q8 extends ue{get behavior(){return Bt}constructor(e){super(),this.params=e,this.startAccessor=q(e.start),this.endAccessor=q(e.end),this.chromAccessor=e.chrom?q(e.chrom):n=>{},this.weightAccessor=e.weight?q(e.weight):n=>1,this.as={coverage:e.as||"coverage",start:e.asStart||e.start,end:e.asEnd||e.end,chrom:e.asChrom||e.chrom},this.createSegment=new Function("start","end","coverage","chrom","return {"+Object.entries(this.as).filter(([n,r])=>r).map(([n,r])=>`${JSON.stringify(r)}: ${n}`).join(", ")+"};"),this.ends=new Ao}reset(){super.reset(),this.initialize()}initialize(){const e=this.as.coverage,n=this.as.end,r=this.as.chrom,i=this.startAccessor,o=this.endAccessor,a=this.chromAccessor,s=this.weightAccessor;let c,u,f,l=0,d;const p=this.ends;p.clear();const h=(g,y,b)=>{if(g==y)return;let w=!1;c&&(c[e]===b?(c[n]=y,w=!0):c[e]!=0&&this._propagate(c)),w||(c=this.createSegment(g,y,b,f))},m=()=>{let g;for(;(g=p.peekValue())!==void 0;)h(d,g,l),d=g,l-=p.pop();d=void 0,c&&(this._propagate(c),c=void 0)};this.handle=g=>{const y=i(g);let b;for(;(b=p.peekValue())!==void 0&&b<y;)h(d,b,l),d=b,l-=p.pop();if(r){let C=a(g);C!==u&&(m(),f=C,u=f)}d!==void 0&&h(d,y,l),d=y;const w=s(g);l+=w,p.push(w,o(g))},this.complete=()=>{m(),super.complete()}}}function V8(t,e,n=0,r=t.length){const i=new Ao,o=r-n;let a;for(a=0;a<e&&a<o;a++)i.push(a,t[n+a]);for(;a<o;a++){const u=t[n+a];u>=i.peekValue()&&(i.push(a,u),i.pop())}const s=[];let c;for(;(c=i.pop())!==void 0;)s.push(n+c);return s.reverse()}class Y8{constructor(e,n=-1/0,r=1/0){this.maxSize=e,this.lowerLimit=n,this.upperLimit=r;const i=this.maxSize*2+1;this.lowerLimits=new Float64Array(i),this.upperLimits=new Float64Array(i),this.lowerChildren=new Int32Array(i),this.upperChildren=new Int32Array(i),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,n,r=0){if(e>=this.lowerLimits[r]&&n<=this.upperLimits[r]){const i=this.lowerChildren[r];if(i){const o=this._findSlot(e,n,i);return o>=0?o:this._findSlot(e,n,this.upperChildren[r])}else return r}else return-1}reserve(e,n){if(n-e<=0)throw new Error("Cannot reserve an empty or negative-size slot!");if(this.n+1>this.lowerLimits.length)return!1;const r=this._findSlot(e,n);if(r<0)return!1;const i=this.n++,o=this.n++;return this.lowerLimits[i]=this.lowerLimits[r],this.upperLimits[i]=e,this.lowerLimits[o]=n,this.upperLimits[o]=this.upperLimits[r],this.lowerChildren[r]=i,this.upperChildren[r]=o,!0}}class _8 extends ue{constructor(e,n){if(super(),this.params=e,this._data=[],this.channel=e.channel??"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=q(this.params.pos),this.posBisector=sa(this.posAccessor),this.scoreAccessor=q(this.params.score),this.widthAccessor=q(this.params.width),this.laneAccessor=this.params.lane?q(this.params.lane):i=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=n.getScaleResolution(this.channel);const r=()=>this._filterAndPropagate();this.schedule=()=>n.context.animator.requestTransition(r),this.resolution.addEventListener("domain",i=>this.schedule()),n._addBroadcastHandler("layoutComputed",()=>this.schedule())}complete(){const e=this.posAccessor;this._data.sort((n,r)=>e(n)-e(r)),this._scores=this._data.map(this.scoreAccessor);for(const n of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(n,new Y8(200));this.schedule(),super.complete()}_filterAndPropagate(){var a;super.reset();const e=this.resolution.getScale(),n=(a=this.resolution.members[0].view.coords)==null?void 0:a[this.channel=="x"?"width":"height"];if(!n)return;for(const s of this.reservationMaps.values())s.reset();const r=e.domain(),i=70,o=V8(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const s of o){const c=this._data[s],u=e(this.posAccessor(c))*n,f=this.widthAccessor(c)/2+this.padding;this.reservationMaps.get(this.laneAccessor(c)).reserve(u-f,u+f)&&this._propagate(c)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class W8 extends ue{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=Xu(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const X8="0".charCodeAt(0);function*Z8(t,e=","){const n=e.charCodeAt(0);let r=0;for(let i=0;i<t.length;i++){const o=t.charCodeAt(i);o==n?(yield r,r=0):r=r*10+o-X8}yield r}class q8 extends ue{get behavior(){return Bt}constructor(e){super();const n=q(e.exons??"exons"),r=q(e.start??"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=a=>{let s=r(a),c=s,u=!0;const f=n(a);for(const l of Z8(f)){if(u)c=s+l;else{s=c+l;const d=Object.assign({},a);d[i]=c,d[o]=s,this._propagate(d)}u=!u}}}}class K8 extends ue{get behavior(){return Bt}constructor(e){super();const n=Ze(e.field).map(o=>q(o)),r=Ze(e.separator),i=Ze(e.as||e.field);if(n.length!==r.length||n.length!==i.length)throw new Error(`Lengths of "separator" (${r.length}), "fields" (${n.length}), and "as" (${i.length}) do not match!`);this.handle=o=>{if(n.some(c=>!c(o)))return;const a=n.map((c,u)=>c(o).split(r[u]));J8(a,o);const s=a[0].length;for(let c=0;c<s;c++){const u=Object.assign({},o);for(let f=0;f<n.length;f++)u[i[f]]=a[f][c];this._propagate(u)}}}}function J8(t,e){const n=t.map(r=>r.length);if(!n.every(r=>r==n[0]))throw new Error("Mismatching number of elements in the fields to be split: "+JSON.stringify(e))}class $8 extends ue{get behavior(){return fn}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=Xu(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class l1 extends ue{get behavior(){return fn}constructor(e,n){super();const r=e.channel??"x";if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=n.getScaleResolution(r).getGenome();if(!i)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const o=q(e.chrom),a=Ze(e.pos).map(h=>q(h)),s=Ze(e.as);if(a.length!=s.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=Ze(e.offset);let u;if(c.length==0)u=new Array(a.length).fill(0);else if(c.length==1)u=new Array(a.length).fill(c[0]);else if(c.length==a.length)u=c;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",s.map((h,m)=>`datum[${JSON.stringify(h)}] = chromOffset + +posAccessors[${m}](datum) - ${u[m]};`).join(`
|
1347
|
-
`));let l,d=0;const p=h=>{if(h!==l){if(d=i.cumulativeChromPositions.get(h),d===void 0)throw new Error("Unknown chromosome/contig: "+h);l=h}return d};this.handle=h=>{f(h,p(o(h)),a),this._propagate(h)}}}const f1={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.642000000000001,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.642000000000001,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.429000000000002,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.429000000000002,xadvance:33.621,chnl:15,x:199,y:397,page:0},{id:102,width:24,height:41,xoffset:0,yoffset:-30.534000000000002,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.429000000000002,xadvance:24.360000000000003,chnl:15,x:336,y:397,page:0},{id:38,width:40,height:41,xoffset:0,yoffset:-30.429000000000002,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.336000000000002,chnl:15,x:431,y:397,page:0},{id:48,width:33,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:464,y:397,page:0},{id:71,width:38,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:30.681,chnl:15,x:21,y:347,page:0},{id:83,width:31,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:22.785,chnl:15,x:61,y:347,page:0},{id:63,width:27,height:41,xoffset:0,yoffset:-30.429000000000002,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.429000000000002,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.429000000000002,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.153000000000002,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.313000000000002,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.801000000000002,chnl:15,x:310,y:297,page:0},{id:85,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:30.891000000000002,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.208000000000002,chnl:15,x:23,y:247,page:0},{id:90,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.284000000000002,chnl:15,x:477,y:297,page:0},{id:49,width:31,height:40,xoffset:0,yoffset:-30.156000000000002,xadvance:24.360000000000003,chnl:15,x:61,y:247,page:0},{id:50,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:94,y:247,page:0},{id:57,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,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.429000000000002,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.182000000000002,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.176000000000002,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.874000000000002,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.089000000000002,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.278000000000002,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:[" ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"],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:[]};class e5 extends ue{get behavior(){return fn}constructor(e){super();const n=Nl(f1),r=q(e.field),i=e.as,o=e.fontSize;this.handle=a=>{const s=r(a);s!==void 0?a[i]=n.measureWidth(s,o):a[i]=0,this._propagate(a)}}}const t5=65536;class n5 extends ue{get behavior(){return fn}constructor(e){super(),this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=le(e.spacing)?e.spacing:1,i=q(e.start),o=q(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const a=new Float64Array(t5),s=q(e.preference),c=e.preferredOrder;let u=1/0;this.handle=f=>{const l=i(f);l<u&&a.fill(-1/0),u=l;const d=c.indexOf(s(f));let p=-1;if(d>=0&&a[d]<l)p=d;else{const h=i(f);for(p=0;p<a.length&&!(a[p]<h);p++);if(p>=a.length)throw new Error("Out of lanes!")}a[p]=o(f)+r,f[n]=p,this._propagate(f)}}else{const a=new Ao,s=new Ao;let c=-1/0,u=0;this.handle=f=>{const l=i(f);for(;a.length&&(a.peekValue()<=l||l<c);){const p=a.pop();s.push(p,p)}c=l;let d=s.pop();d===void 0&&(d=u++),f[n]=d,this._propagate(f),a.push(d,o(f)+r)}}}}class r5 extends ue{get behavior(){return Bt}constructor(e){if(super(),e.as&&e.as.length!=e.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const n=e.fields.map(i=>q(i)),r=e.as?e.as:n.map(ce);this.handle=i=>{const o={};for(let a=0;a<n.length;a++)o[r[a]]=n[a](i);this._propagate(o)}}}class i5 extends ue{get behavior(){return fn}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=q(e.field);this.handle=o=>{const a=i(o);if(ne(a)){const s=a.match(n);if(s){if(s.length-1!=r.length)throw new Error('The number of RegEx groups and the length of "as" do not match!');for(let c=0;c<r.length;c++)o[r[c]]=s[c+1]}else if(e.skipInvalidInput)for(let c=0;c<r.length;c++)o[r[c]]=void 0;else throw new Error(`"${a}" does not match the given regex: ${n.toString()}`)}else if(!e.skipInvalidInput)throw new Error(`Trying to match a non-string field. Encountered type: ${typeof a}, field content: "${a}".`);this._propagate(o)}}}class o5 extends ue{get behavior(){return Bt}constructor(e){super();const n=Ze(e.columnRegex).map(d=>new RegExp(d)),r=Ze(e.asValue);if(n.length!=r.length)throw new Error('Lengths of "columnRegex" and "as" are not equal!');const i=e.skipRegex?new RegExp(e.skipRegex):void 0,o=e.asKey||"sample";let a,s,c;const u=d=>{var g;const p=Object.keys(d),h=new Map;for(const[y,b]of n.entries())for(const w of p){const C=(g=b.exec(w))==null?void 0:g[1];if(C!==void 0){let x=h.get(C);x||(x=[],h.set(C,x)),x[y]=w}}a=[...h.entries()],s=p.filter(y=>!n.some(b=>b.test(y))&&!(i&&i.test(y)));const m=[...s.map(y=>JSON.stringify(y)+": datum["+JSON.stringify(y)+"]"),JSON.stringify(o)+": sampleId",...r.map(y=>JSON.stringify(y)+": null")];c=new Function("datum","sampleId",`return {
|
1355
|
+
*/const WM="locus",XM="index";var ZM=5;function qM(t){const e=t.type;return!t.bins&&(e===Ir||e===zi||e===Ri)}function zg(t){return Le(t)&&![ht,XM,WM].includes(t)}function Rg(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var KM=aa(["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 jg(t,e,n){n=Rg(n);for(const r in t)if(!KM[r]){if(r==="padding"&&zg(e.type))continue;Ie(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}o8(e,t,i8(e,t,t8(e,t,n)))}function JM(t,e){const n=$M(t),r=X(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return jg(t,i,e),i}function $M(t){var e=t.type,n="",r;return e===ht?ht+"-"+Ir:(e8(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?ht+"-":r===3?kr+"-":""),(n+e||Ir).toLowerCase())}function e8(t){const e=t.type;return Le(e)&&e!==np&&e!==rp&&(t.scheme||t.range&&t.range.length&&t.range.every(ne))}function t8(t,e,n){if(!t.domain)return 0;n=Rg(n);var r=n8(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,a=e.zero||e.zero===void 0&&qM(t),s,c;return i?(zg(o)&&e.padding&&i[0]!==tt(i)&&(i=r8(o,i,e.range,e.padding,e.exponent,e.constant)),(a||e.domainMin!=null||e.domainMax!=null||e.domainMid!=null)&&(s=(i=i.slice()).length-1||1,a&&(i[0]>0&&(i[0]=0),i[s]<0&&(i[s]=0)),e.domainMin!=null&&(i[0]=e.domainMin),e.domainMax!=null&&(i[s]=e.domainMax),e.domainMid!=null&&(c=e.domainMid,(c<i[0]||c>i[s])&&n.warn("Scale domainMid exceeds domain min or max.",c),i.splice(s,0,c))),t.domain(Ug(o,i,n)),o===Lu&&t.unknown(e.domainImplicit?$c:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&Fg(t,e.nice)||null),i.length):0}function n8(t,e,n){return e?(t.domain(Ug(t.type,e,n)),e.length):-1}function r8(t,e,n,r,i,o){var a=Math.abs(tt(n)-n[0]),s=a/(a-2*r),c=t===tn?Vd(e,null,s):t===Ri?yc(e,null,s,.5):t===zi?yc(e,null,s,i||1):t===Oa?l2(e,null,s,o||1):gc(e,null,s);return e=e.slice(),e[0]=c[0],e[e.length-1]=c[1],e}function Ug(t,e,n){if(lp(t)){var r=Math.abs(e.reduce(function(i,o){return i+(o<0?-1:o>0?1:0)},0));r!==e.length&&n.warn("Log scale domain includes zero: "+oa(e))}return e}function i8(t,e,n){let r=e.bins;if(r&&!_e(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,a=r.stop==null?tt(i):r.stop,s=r.step;s||ae("Scale bins parameter missing step property."),r=_t(o,a+s,s)}return r?t.bins=r:t.bins&&delete t.bins,t.type===Ou&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function o8(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=a8(r,e,n);else if(e.scheme&&(o=s8(r,e,n),Ie(o))){if(t.interpolator)return t.interpolator(o);ae(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&Pa(r))return t.interpolator(za(zl(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(fp(e.interpolate,e.interpolateGamma)):Ie(t.round)?t.round(i):Ie(t.rangeRound)&&t.interpolate(i?Fi:$t),o&&t.range(zl(o,e.reverse))}function a8(t,e,n){t!==ap&&t!==Bu&&ae("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===Bu?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*ku(n,i,r)]}function s8(t,e,n){var r=e.schemeExtent,i,o;return _e(e.scheme)?o=za(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=Pu(i),o||ae(`Unrecognized scheme name: ${e.scheme}`)),n=t===op?n+1:t===Ou?n-1:t===Nu||t===ip?+e.schemeCount||ZM:n,Pa(t)?Hg(o,r,e.reverse):Ie(o)?f4(Hg(o,r),n):t===Lu?o:o.slice(0,n)}function Hg(t,e,n){return Ie(t)&&(e||n)?l4(t,zl(e||[0,1],n)):t}function zl(t,e){return e?t.slice().reverse():t}const Rl=de(",d");function c8(t){return t.chrom+":"+Rl(Math.floor(t.pos+1))}function u8(t,e){return t.chrom+":"+Rl(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+Rl(Math.ceil(e.pos))}const l8="https://genomespy.app/data/genomes/";class f8{constructor(e){if(this.config=e,!this.config.contigs&&typeof this.config.name!="string")throw new Error("No name has been defined for the genome assembly!");this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,this.config.contigs&&this.setChromSizes(this.config.contigs)}get name(){return this.config.name}async load(e){if(!this.config.contigs){this.config.baseUrl?this.baseUrl=/^http(s)?/.test(this.config.baseUrl)?this.config.baseUrl:e+"/"+this.config.baseUrl:this.baseUrl=l8;try{this.setChromSizes(d8(await Ni({baseURL:this.baseUrl}).load(`${this.config.name}/${this.name}.chrom.sizes`)))}catch(n){throw new Error(`Could not load chrom sizes: ${n.message}`)}}}setChromSizes(e){let n=0;this.startByIndex=[0];for(let r=0;r<e.length;r++){this.startByIndex.push(n);const i=e[r].size,o={...e[r],continuousStart:n,continuousEnd:n+i,continuousInterval:[n,n+i],index:r,number:r+1,odd:!(r&1)};this.chromosomes.push(o);const a=o.name.replace(/^chr/i,"");for(const s of["chr"+a,"CHR"+a,"Chr"+a,o.number,""+o.number,a,o.name])this.cumulativeChromPositions.set(s,n),this.chromosomesByName.set(s,o);n+=o.size}this.totalSize=n}getExtent(){return[0,this.totalSize]}toContinuous(e,n){let r=this.cumulativeChromPositions.get(e);if(r===void 0)throw new Error("Unknown chromosome/contig: "+e);return r+ +n}toChromosome(e){if(e>=this.totalSize)return;e=Math.floor(e);const n=Mn(this.startByIndex,e)-1;if(n>0&&n<=this.chromosomes.length)return this.chromosomes[n-1]}toChromosomal(e){const n=this.toChromosome(e);if(n)return{chrom:n.name,pos:Math.floor(e)-n.continuousStart}}getChromosome(e){return this.chromosomesByName.get(e)}formatInterval(e){return u8(...this.toChromosomalInterval(e))}toChromosomalInterval(e){const n=this.toChromosomal(e[0]+.5),r=this.toChromosomal(e[1]-.5);return r.pos+=1,[n,r]}toContinuousInterval(e){var i;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,n.pos??0),this.toContinuous(r.chrom,r.pos??((i=this.chromosomesByName.get(r.chrom))==null?void 0:i.size))]}parseInterval(e){const n=e.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(n){const r=n[1];if(n.slice(2).every(s=>s===void 0)){const s=this.getChromosome(r);return s?[s.continuousStart,s.continuousEnd]:void 0}const i=n[3]||r,o=parseInt(n[2].replace(/,/g,"")),a=n[4]!==void 0?parseInt(n[4].replace(/,/g,"")):o;return[this.toContinuous(r,o-1),this.toContinuous(i,a)]}}}function d8(t){return I2(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function Gg(t){return ze(t)&&"chrom"in t}function h8(t){return t.every(Gg)}class vo extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof vo&&e.type!=this.type)throw new Error(`Cannot combine different types of domains: ${this.type} and ${e.type}`);for(const n of e)this.extend(n);return this}extendAllWithAccessor(e,n){for(const r of e)this.extend(n(r));return this}}class jl extends vo{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)}}class Qg extends vo{constructor(){super(),this.type="ordinal",this.uniqueValues=new Set}extend(e){return e==null||Number.isNaN(e)?this:(this.uniqueValues.has(e)||(this.uniqueValues.add(e),this.push(e)),this)}}class Vg extends Qg{constructor(){super(),this.type="nominal"}}class p8 extends vo{constructor(e){super();let n=0;for(let r=1;r<e.length;r++)n+=Math.sign(e[r]-e[r-1]);if(Math.abs(n)!=e.length-1)throw new Error("Piecewise domain must be strictly increasing or decreasing: "+JSON.stringify(e));e.forEach(r=>this.push(r))}extend(e){if(this.includes(e))return this;throw new Error("Piecewise domains are immutable and cannot be unioned!")}}const Yg={quantitative:jl,index:jl,locus:jl,nominal:Vg,ordinal:Qg};function _g(t,e){if(t=="quantitative"&&m8(e)){const n=new p8(e);return n.type=t,n}else if(Yg[t]){const n=new Yg[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function m8(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function Wg(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function g8(t){return--t*t*t+1}function y8(t){return(Math.pow(2,-10*t)-.0009765625)*1.0009775171065494}function v8(t){return 1-y8(t)}const Xg="quantitative",Ul="ordinal",Hl="nominal",Zg="locus",b8="index";class A8{constructor(e){this.channel=e,this.members=[],this.type=null,this._zoomExtent=void 0,this._domainListeners=new Set,this.name=void 0,this._scale=void 0}addEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.add(n)}removeEventListener(e,n){if(e!="domain")throw new Error("Unsupported event type: "+e);this._domainListeners.delete(n)}_notifyDomainListeners(){for(const e of this._domainListeners.values())e({type:"domain",scaleResolution:this})}pushUnitView(e,n){var a;const r=Zu(e,n),i=r.type,o=(a=r==null?void 0:r.scale)==null?void 0:a.name;if(o){if(this.name!==void 0&&o!=this.name)throw new Error(`Shared scales have conflicting names: "${o}" vs. "${this.name}"!`);this.name=o}if(!this.type)this.type=i;else if(i!==this.type&&!no(n))throw new Error(`Can not use shared scale for different data types: ${this.type} vs. ${i}. Use "resolve: independent" for channel ${this.channel}`);this.members.push({view:e,channel:n})}isExplicitDomain(){return!!this.getConfiguredDomain()}_getMergedScaleProps(){return Yr(this,"mergedScaleProps",()=>{const e=this.members.map(n=>Zu(n.view,n.channel).scale).filter(n=>n!==void 0);return bs(e,"scale",["domain"])})}getScaleProps(){return Yr(this,"scaleProps",()=>{const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n={...this._getDefaultScaleProperties(this.type),...e};n.type||(n.type=x8(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:nn(n.type)?n.domain=new Vg:n.scheme&&(n.domain=[0,1]),!n.domain&&n.domainMid!==void 0&&(n.domain=[n.domainMin??0,n.domainMax??1]),this.channel=="y"&&nn(n.type)&&n.reverse==null&&(n.reverse=!0),n.range&&n.scheme&&delete n.scheme,!("zoom"in n)&&["index","locus"].includes(n.type)&&(n.zoom=!0),w8(n,this.channel),n})}getInitialDomain(){return this.getConfiguredDomain()??(this.type==Zg?this.getGenome().getExtent():this.getDataDomain())}getConfiguredDomain(){return this._reduceDomains(e=>no(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>no(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){Ag(this,"scaleProps");const e=this.getScaleProps();jg(e,this._scale),Le(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=JM(e);return this._scale=n,Jx(n)&&n.genome(this.getGenome()),Le(n.type)&&(this._zoomExtent=this._getZoomExtent()),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var e;return((e=this.getGenome())==null?void 0:e.toChromosomalInterval(this.getDomain()))??this.getDomain()}isZoomed(){return this.isZoomable()&&Lp(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!Wp(this.channel))return!1;const e=this.getScale().type;return["linear","locus","index","log","pow","sqrt"].includes(e)?!!this.getScaleProps().zoom:!1}zoom(e,n,r){if(!this.isZoomable())return!1;const i=this.getScale(),o=i.domain();let a=[...o],s=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),"align"in i&&(s+=i.align()),i.type){case"linear":case"index":case"locus":a=s2(a,r||0),a=gc(a,s,e);break;case"log":a=c2(a,r||0),a=Vd(a,s,e);break;case"pow":case"sqrt":{const c=i;a=u2(a,r||0,c.exponent()),a=yc(a,s,e,c.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(a=f2(a,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(c=>a[c]!=o[c])?(i.domain(a),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var s;if(ra(n)&&(n=n?700:0),!this.isZoomable())throw new Error("Not a zoomable scale!");const r=this.fromComplexInterval(e),i=(s=this.members[0])==null?void 0:s.view.context.animator,o=this.getScale(),a=o.domain();if(n>0&&a.length==2){const c=a[1]-a[0],u=a[0]+c/2,f=r[1]-r[0],l=r[0]+f/2,d=L0([u,0,c],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*d.duration,easingFunction:Wg,onUpdate:p=>{const[h,,m]=d(p);o.domain([h-m/2,h+m/2]),this._notifyDomainListeners()}}),o.domain(r),this._notifyDomainListeners()}else o.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}resetZoom(){if(!this.isZoomable())throw new Error("Not a zoomable scale!");const e=this.getDomain(),n=this.getInitialDomain();return[0,1].some(r=>n[r]!=e[r])?(this._scale.domain(n),this._notifyDomainListeners(),!0):!1}getZoomLevel(){return this.isZoomable()?ia(this._zoomExtent)/ia(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(C8(n)&&_e(n.extent))return this.fromComplexInterval(n.extent);if(n)return e.type=="locus"?this.getGenome().getExtent():this._scale.domain()}_getDefaultScaleProperties(e){const n=this.channel,r={};return this.isExplicitDomain()&&(r.zero=!1),to(n)?r.nice=!this.isExplicitDomain():Zn(n)?r.scheme=e==Hl?"tableau10":e==Ul?"blues":"viridis":_a(n)?r.range=Zp(n):n=="size"?r.range=[0,400]:n=="angle"&&(r.range=[0,360]),r}getGenome(){var n;if(this.type!=="locus")return;const e=(n=this.members[0].view.context.genomeStore)==null?void 0:n.getGenome();if(!e)throw new Error("No genome has been defined!");return e}invertToComplex(e){const n=this.getScale();if("invert"in n){const r=n.invert(e);return this.toComplex(r)}else throw new Error("The scale does not support inverting!")}toComplex(e){const n=this.getGenome();return n?n.toChromosomal(e):e}fromComplex(e){return Gg(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&h8(e)?this.getGenome().toContinuousInterval(e):e}_getViewPaths(){return this.members.map(e=>e.view.getPathString()).join(", ")}_reduceDomains(e){const n=this.members.map(e).filter(r=>!!r);if(n.length)return n.reduce((r,i)=>r.extendAll(i))}}function x8(t,e){if(e==b8||e==Zg){if(Wp(t))return e;throw new Error(`${t} does not support ${e} data type. Only positional channels do.`)}const 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"]},i=["uniqueId","facetIndex","semanticScore","search","text","sample"].includes(t)?"null":n[t]?n[t][[Hl,Ul,Xg].indexOf(e)]:e==Xg?"linear":"ordinal";if(i===void 0)throw new Error(`Channel "${t}" is not compatible with "${e}" data type. Use of a proper scale may be needed.`);return i}function w8(t,e){to(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&Le(t.type)&&(t.clamp=!0)}function C8(t){return ze(t)}function Gl(...t){for(const e of t)if(e!==void 0)return e}class S8{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=Re(this.members))==null?void 0:e.view.getScaleResolution(this.channel)}pushUnitView(e,n){const r=e.getScaleResolution(this.channel);if(!r)throw new Error("Cannot find a scale resolution!");if(this.scaleResolution&&r!==this.scaleResolution)throw new Error("Shared axes must have a shared scale!");this.members.push({view:e,channel:n})}getAxisProps(){return Yr(this,"axisProps",()=>{const e=this.members.map(n=>{const r=n.view.mark.encoding[n.channel];return"axis"in r&&r.axis});return e.length>0&&e.some(n=>n===null)?null:bs(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var s;const a=Zu(o.view,o.channel);if(!ot(a))return{member:o,explicitTitle:Gl((s=a.axis)==null?void 0:s.title,a.title),implicitTitle:Gl(Xn(a)?a.field:void 0,qu(a)?a.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var a;if(no(o.member.channel)&&!o.explicitTitle){const s=Or(o.member.channel);return((a=n.find(c=>c.member.view==o.member.view&&c.member.channel==s))==null?void 0:a.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>Gl(o.explicitTitle,o.implicitTitle)).filter(ne));return i.size?[...i].join(", "):null}}class qg extends Bg{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class Ot extends nr{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,this.children=(e.layer||[]).map((o,a)=>{if(Wl(o)||_l(o))return n.createView(o,this,"layer"+a);throw new Error("LayerView accepts only unit or layer specs as children!")})}*[Symbol.iterator](){for(const e of this.children)yield e}render(e,n,r={}){if(this.isVisible()){e.pushView(this,n);for(const i of this.children)i.render(e,n,r);e.popView(this)}}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0),this.children.length&&this.children.at(-1).propagateInteractionEvent(e),!e.stopped&&this.handleInteractionEvent(void 0,e,!1)}}class Kg{constructor(e,n){this.n=e,this.maxCols=n??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(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<r;i++){const o=[];e.push(o);for(let a=0;a<n;a++){const s=i*n+a;s<this.n&&o.push(s)}}return e}get colIndices(){const e=[],n=this.nCols,r=this.nRows;for(let i=0;i<n;i++){const o=[];e.push(o);for(let a=0;a<r;a++){const s=a*n+i;s<this.n&&o.push(s)}}return e}getCellIndex(e,n){let r=0;if(this.maxCols==1/0)r=n==0?e:void 0;else{if(e>=this.maxCols)return;r=n*this.nCols+e}return r<this.n?r:void 0}getCellCoords(e){if(!(e<0||e>=this.n))return[e%this.nCols,Math.floor(e/this.nCols)]}}function Ft(t){return()=>t}const Vt=class{static create(e,n,r,i){return new Vt(Ft(e),Ft(n),Ft(r),Ft(i))}_offset(e,n){const r=this["_"+e];if(n===0)return r;switch(typeof n){case"number":return()=>r()+n;case"function":return()=>r()+n();default:throw new Error("Not a number of function")}}_passThrough(e){return this._offset(e,0)}constructor(e,n,r,i){this._x=e,this._y=n,this._width=r,this._height=i}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(e){if(!Object.keys(e).length)return this;const n=r=>{const i=e[r];return typeof i=="number"?Ft(i):typeof i=="function"?i:this._passThrough(r)};return new Vt(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new Vt(this._offset("x",e),this._offset("y",n),this._passThrough("width"),this._passThrough("height"))}translateBy(e){return this.translate(e.x,e.y)}expand(e,n=1){return e.left==0&&e.top==0&&e.right==0&&e.bottom==0?this:new Vt(e.left?this._offset("x",-e.left*n):this._passThrough("x"),e.top?this._offset("y",-e.top*n):this._passThrough("y"),e.width?this._offset("width",e.width*n):this._passThrough("width"),e.height?this._offset("height",e.height*n):this._passThrough("height"))}shrink(e){return this.expand(e,-1)}intersect(e){return this===e?this:new Vt(()=>Math.max(this.x,e.x),()=>Math.max(this.y,e.y),()=>Math.min(this.x2,e.x2)-Math.max(this.x,e.x),()=>Math.min(this.y2,e.y2)-Math.max(this.y,e.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new Vt(Ft(this.x),Ft(this.y),Ft(this.width),Ft(this.height))}containsPoint(e,n){return e>=this.x&&e<this.x2&&n>=this.y&&n<this.y2}normalizePoint(e,n){return{x:(e-this.x)/this.width,y:(n-this.y)/this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}};let dn=Vt;hc(dn,"ZERO",Vt.create(0,0,0,0));function Jg(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class rr extends ue{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function $g(t){const e={...t.format};if(e.type??(e.type=T8(t)&&E8(t.url)),e.parse??(e.parse="auto"),!e.type)throw new Error("Format for the data source was not defined and it could not be inferred: "+JSON.stringify(t));return e}function E8(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const As=t=>typeof t!="object"?D8:M8,D8=t=>({data:t}),M8=t=>t;function T8(t){return"url"in t}function I8(t){return"dynamicCallbackSource"in t}class e1 extends rr{constructor(e){super(),this.callback=e}loadSynchronously(){if(!this.callback)return;const e=this.callback();if(!e||typeof e[Symbol.iterator]!="function")throw new Error("Dynamic data callback didn't return iterable data!");this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=As(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const t1="chromosome_ticks_and_labels",n1={x:"width",y:"height"};function Ql(t){return t=="x"?"y":"x"}const Vl={x:["bottom","top"],y:["left","right"]},r1=Object.fromEntries(Object.entries(Vl).map(([t,e])=>e.map(n=>[n,t])).flat(1));function ir(t){return r1[t]}class i1 extends Ot{constructor(e,n,r,i){const o=n=="locus",a={...o?L8:o1,...N8(n,e),...e};if(super(o?B8(a):a1(a),r,i,`axis_${e.orient}`),this.axisProps=a,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new e1(()=>this.ticks),o){const s=ir(this.axisProps.orient),c=this.getScaleResolution(s).getGenome();this.findChildByName(t1).getDynamicDataSource=()=>new e1(()=>c.chromosomes)}this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return r1[this.axisProps.orient]=="x"?new er(n,e):new er(e,n)}getPerpendicularSize(){return Yl(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=ir(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(Lp(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=k8(this.axisProps,n,this.axisLength,i);o!==i&&(this.ticks=o,this.tickSource.loadSynchronously()),this.axisUpdateRequested=!1}onBeforeRender(){super.onBeforeRender(),this._updateAxisData()}render(e,n,r={}){this.isVisible()&&(this.axisLength=n[n1[ir(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function Yl(t){const e=ir(t.orient);let n=t.ticks&&t.tickSize||0;return t.labels&&(n+=t.labelPadding,e=="x"?n+=t.labelFontSize:n+=30),t.title&&(n+=t.titlePadding+t.titleFontSize),n=Math.min(t.maxExtent||1/0,Math.max(t.minExtent||0,n)),n}function k8(t,e,n,r=[]){const i=s=>25+60*Jg(100,700,s);let o=le(t.tickCount)?t.tickCount:Math.round(n/i(n));o=Fg(e,o,t.tickMinStep);const a=t.values?Pg(e,t.values,o):UM(e,o);if(b4(a,r,s=>s,s=>s.value))return r;{const s=GM(e,o,t.format);return a.map(c=>({value:c,label:s(c)}))}}const o1={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};function N8(t,e){const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",a=e.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(a)>30?(i=a>0==(n=="bottom")?"left":"right",o="middle"):o=n=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:a,labelBaseline:o}}function a1(t){const e={...t,extent:Yl(t)},n=ir(e.orient),r=Ql(n),i=e.orient=="bottom"||e.orient=="right"?1:-1,o=e.orient=="bottom"||e.orient=="left"?1:0,a=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[r]:o,size:e.domainWidth}}),s=()=>({name:"labels",mark:{type:"text",clip:!1,align:e.labelAlign,angle:e.labelAngle,baseline:e.labelBaseline,[r+"Offset"]:(e.tickSize+e.labelPadding)*i,[r]:o,size:e.labelFontSize,color:e.labelColor,minBufferSize:1500},encoding:{[n]:{field:"value",type:"quantitative"},text:{field:"label"}}}),c=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:e.tickDash,strokeCap:e.tickCap,color:e.tickColor,size:e.tickWidth,minBufferSize:300},encoding:{[r]:{value:o},[r+"2"]:{value:o-e.tickSize/e.extent*(o?1:-1)}}}),u=()=>({name:"title",data:{values:[0]},mark:{type:"text",clip:!1,align:"center",baseline:e.orient=="bottom"?"bottom":"top",angle:[0,90,0,-90][["top","right","bottom","left"].indexOf(e.orient)],text:e.title,color:e.titleColor,[n]:.5,[r]:1-o}}),f=()=>{const d={name:"ticks_and_labels",encoding:{[n]:{field:"value",type:"quantitative"}},layer:[]};return e.ticks&&d.layer.push(c()),e.labels&&d.layer.push(s()),d},l={[n1[Ql(ir(e.orient))]]:e.extent,data:{dynamicCallbackSource:!0},layer:[]};return e.domain&&l.layer.push(a()),(e.ticks||e.labels)&&l.layer.push(f()),e.title&&l.layer.push(u()),l}const L8={...o1,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};function B8(t){const e={...t,extent:Yl(t)},n=ir(e.orient),r=Ql(n),i=e.orient=="bottom"||e.orient=="left"?1:0,o=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:t.chromTickDash,strokeDashOffset:t.chromTickDashOffset,[r]:i,[r+"2"]:i-e.chromTickSize/e.extent*(i?1:-1),color:t.chromTickColor,size:e.chromTickWidth}}),a=()=>{let u;switch(e.orient){case"top":u={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":u={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":u={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":u={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:u={}}return{name:"chromosome_labels",mark:{type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1,...u},encoding:{[n+"2"]:{field:"continuousEnd",type:"locus"},text:{field:"name"}}}};let s;switch(e.orient){case"bottom":case"top":s={};break;case"left":s={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":s={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:s={}}const c=a1({...t,...s});if(t.chromTicks||t.chromLabels){const u={name:t1,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&u.layer.push(o()),t.chromLabels){u.layer.push(a());let f;c.layer.filter(l=>l.name=="ticks_and_labels").forEach(l=>l.layer.filter(d=>d.name=="labels").forEach(d=>{f=d.mark})),f&&(e.orient=="top"||e.orient=="bottom"?(f.viewportEdgeFadeWidthLeft=30,f.viewportEdgeFadeDistanceLeft=40):(f.viewportEdgeFadeWidthBottom=30,f.viewportEdgeFadeDistanceBottom=40))}c.layer.push(u)}return c}const s1={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"},O8={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},F8={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},P8={start:0,middle:.5,end:1},z8={start:"left",middle:"center",end:"right"};function R8(t){if(!t)return;const e=ne(t)?{text:t}:t;if(!e.text||e.orient=="none")return;const n={"track-title":O8,overlay:F8}[e.style]??{},r={...s1,...n,...e};let i={},o={x:0,y:0};const a=P8[r.anchor??"middle"];switch(r.orient){case"top":o={x:a,y:1},i={baseline:"alphabetic",angle:0};break;case"right":o={x:1,y:1-a},i={baseline:"alphabetic",angle:90};break;case"bottom":o={x:a,y:0},i={baseline:"top",angle:0};break;case"left":o={x:0,y:a},i={baseline:"alphabetic",angle:-90};break}const s={...s1,...i,...n,...e},c={xOffset:0,yOffset:0};switch(r.orient){case"top":c.yOffset=-s.offset;break;case"right":c.xOffset=s.offset;break;case"bottom":c.yOffset=s.offset;break;case"left":c.xOffset=-s.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...o,...c,text:s.text,align:s.align??z8[s.anchor],angle:s.angle,baseline:s.baseline,dx:s.dx,dy:s.dy,color:s.color,font:s.font,size:s.fontSize,fontStyle:s.fontStyle,fontWeight:s.fontWeight}}}function c1(t,e,n,r){if(t.type=="wheel"){t.uiEvent.preventDefault();const i=t.uiEvent,o=i.deltaMode?120:1;let{x:a,y:s}=t.point;if(r){const c=r.mark.encoders;c.x&&!c.x2&&!c.x.constantValue&&(a=+c.x(r.datum)*e.width+e.x),c.y&&!c.y2&&!c.y.constantValue&&(s=(1-+c.y(r.datum))*e.height+e.y)}Math.abs(i.deltaX)<Math.abs(i.deltaY)?n({x:a,y:s,xDelta:0,yDelta:0,zDelta:i.deltaY*o/300}):n({x:a,y:s,xDelta:-i.deltaX*o,yDelta:0,zDelta:0})}else if(t.type=="mousedown"&&t.uiEvent.button===0){const i=t.uiEvent;i.preventDefault();let o=i;const a=c=>{n({x:o.clientX,y:o.clientY,xDelta:c.clientX-o.clientX,yDelta:c.clientY-o.clientY,zDelta:0}),o=c},s=c=>{document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",s)};document.addEventListener("mouseup",s,!1),document.addEventListener("mousemove",a,!1)}}class u1 extends nr{constructor(n,r,i,o,a){super(n,r,i,o);$(this,Go);$(this,Et);$(this,oc);$(this,ac);$(this,br);$(this,Qo);$(this,Vo);$(this,Yo);$(this,sc);$(this,si,1/0);$(this,ci,10);$(this,$e,[]);$(this,ui,0);this.spec=n,et(this,ci,n.spacing??10),et(this,si,a),et(this,$e,[]),this.wrappingFacet=!1,this._createChildren()}_createChildren(){}appendChild(n){n.parent??(n.parent=this),j(this,$e).push(se(this,Go,Pd).call(this,n)),_b(this,ui)._++}setChildren(n){for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=j(this,$e).findIndex(o=>o.view==n);if(i>=0)j(this,$e)[i]=se(this,Go,Pd).call(this,r);else throw new Error("Not my child view!")}get children(){return j(this,$e).map(n=>n.view)}get childCount(){return j(this,$e).length}onScalesResolved(){super.onScalesResolved(),se(this,ac,qb).call(this)}*[Symbol.iterator](){for(const n of j(this,$e)){n.background&&(yield n.background);for(const r of Object.values(n.axes))r&&(yield r);yield n.view,n.title&&(yield n.title)}}getOverhang(){const n=se(this,br,Jo).call(this,"column"),r=se(this,br,Jo).call(this,"row");return!n.length||!r.length?Ke.zero():new Ke(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)}getSize(){return this._cache("size",()=>new er(se(this,Vo,Rd).call(this,"column"),se(this,Vo,Rd).call(this,"row")).subtractPadding(this.getOverhang()).addPadding(this.getPadding()))}render(n,r,i={}){if(!this.isVisible())return;this.parent||(r=r.shrink(this.getPadding())),n.pushView(this,r);const o={devicePixelRatio:this.context.glHelper.dpr},a=go(se(this,Qo,zd).call(this,"column"),r.width,o),s=go(se(this,Qo,zd).call(this,"row"),r.height,o),c=new Kg(j(this,Et,Cn).length,j(this,si)??1/0);for(const[u,f]of j(this,Et,Cn).entries()){const{view:l,axes:d,background:p,title:h}=f,[m,g]=c.getCellCoords(u),y=a[se(this,Yo,jd).call(this,"column",m)],b=s[se(this,Yo,jd).call(this,"row",g)],w=l.getSize(),C=l.getPadding().subtract(l.getOverhang()),x=y.location+C.left,v=b.location+C.top,A=(w.width.grow?y.size:w.width.px)-C.width,D=(w.height.grow?b.size:w.height.px)-C.height,k=new dn(()=>r.x+x,()=>r.y+v,()=>A,()=>D);f.coords=k,p==null||p.render(n,k,i);const O=U8(l);O&&l.render(n,k,i);for(const[T,B]of Object.entries(d)){const G=B.axisProps;let Q;const De=B.getPerpendicularSize();T=="bottom"?Q=k.translate(0,k.height+G.offset).modify({height:De}):T=="top"?Q=k.translate(0,-De-G.offset).modify({height:De}):T=="left"?Q=k.translate(-De-G.offset,0).modify({width:De}):T=="right"&&(Q=k.translate(k.width+G.offset,0).modify({width:De})),B.render(n,Q)}O||l.render(n,k,i),h==null||h.render(n,k,{...i,clipRect:void 0})}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=j(this,Et,Cn).find(o=>o.coords.containsPoint(n.point.x,n.point.y)),i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof pe||i instanceof Ot)&&c1(n,r.coords,o=>se(this,sc,Kb).call(this,r.coords,r.view,o),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}si=new WeakMap,ci=new WeakMap,$e=new WeakMap,ui=new WeakMap,Go=new WeakSet,Pd=function(n){var i;const r={view:n,background:void 0,axes:{},coords:dn.ZERO};if(n instanceof pe||n instanceof Ot){const o=(i=n.spec)==null?void 0:i.view;if(o!=null&&o.fill||o!=null&&o.stroke){const s=new pe(l1(o),this.context,n,"background"+j(this,ui));s.blockEncodingInheritance=!0,r.background=s}const a=R8(n.spec.title);if(a){const s=new pe(a,this.context,n,"title"+j(this,ui));s.blockEncodingInheritance=!0,r.title=s}}return r},Et=new WeakSet,Cn=function(){return j(this,$e).filter(n=>n.view.isVisible())},oc=new WeakSet,Zb=function(){return new Kg(j(this,Et,Cn).length,j(this,si)??1/0)},ac=new WeakSet,qb=function(){if(Object.keys(this.resolutions.axis).length)throw new Error("ConcatView does not (currently) support shared axes!");for(const n of j(this,$e)){const{view:r,axes:i}=n,o=(a,s,c)=>{const u=a.getAxisProps();if(u!==null){if(!u.orient){for(const f of Vl[s])if(!i[f]){u.orient=f;break}if(!u.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if(u.title??(u.title=a.getTitle()),!Vl[s].includes(u.orient))throw new Error(`Invalid axis orientation "${u.orient}" on channel "${s}"!`);if(i[u.orient])throw new Error(`An axis with the orient "${u.orient}" already exists!`);i[u.orient]=new i1(u,a.scaleResolution.type,this.context,c)}};if(r instanceof pe||r instanceof Ot)for(const a of["x","y"]){const s=r.resolutions.axis[a];s&&o(s,a,r)}if(r instanceof Ot){for(const a of r.children)for(const[s,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&u.orient&&o(c,s,a)}for(const a of r.children)for(const[s,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&!u.orient&&o(c,s,a)}}}},br=new WeakSet,Jo=function(n){const r=n=="column"?["left","right"]:["top","bottom"],i=n=="column"?"width":"height",o=(a,s)=>a.map(c=>{const u=j(this,Et,Cn)[c].axes[r[s]];if(u)return Math.max(u.getPerpendicularSize()+u.axisProps.offset,0);const f=j(this,Et,Cn)[c].view.getOverhang();return n=="column"?s?f.right:f.left:s?f.bottom:f.top}).reduce((c,u)=>Math.max(c,u),0);return j(this,oc,Zb)[n=="column"?"colIndices":"rowIndices"].map(a=>({axisBefore:o(a,0),axisAfter:o(a,1),view:kM(a.map(s=>j(this,Et,Cn)[s].view.getSize()[i]))}))},Qo=new WeakSet,zd=function(n){const r=se(this,br,Jo).call(this,n),i=[];i.push(yo);for(const[o,a]of r.entries())o>0&&i.push({px:j(this,ci),grow:0}),(o==0||this.wrappingFacet)&&i.push(yo),i.push({px:a.axisBefore,grow:0}),i.push(a.view),i.push({px:a.axisAfter,grow:0}),(o==r.length-1||this.wrappingFacet)&&i.push(yo);return i},Vo=new WeakSet,Rd=function(n){let r=0,i=0;const o=(n=="row"&&this.spec.height)??(n=="column"&&this.spec.width);if(o||o===0)return kg(o);const a=se(this,br,Jo).call(this,n);for(const[s,c]of a.entries())s>0&&(i+=j(this,ci)),(s==0||this.wrappingFacet)&&(i+=0),i+=c.axisBefore,i+=c.view.px??0,r+=c.view.grow??0,i+=c.axisAfter,(s==a.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},Yo=new WeakSet,jd=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},sc=new WeakSet,Kb=function(n,r,i){for(const[o,a]of Object.entries(j8(r))){if(a.size<=0)continue;const s=n.normalizePoint(i.x,i.y),c=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),u={x:c.x-s.x,y:c.y-s.y};for(const f of a)f.zoom(2**i.zDelta,o=="y"?1-s[o]:s[o],o=="x"?u.x:-u.y)}this.context.animator.requestRender()};function l1(t){return{configurableVisibility:!1,data:{values:[{}]},mark:{fill:null,strokeWidth:1,fillOpacity:t.fill?1:0,...t,type:"rect",clip:!1,tooltip:null}}}function j8(t){const e={x:new Set,y:new Set};return t.visit(n=>{for(const[r,i]of Object.entries(e)){const o=n.getScaleResolution(r);o&&o.isZoomable()&&i.add(o)}}),e}function U8(t){let e=!0;return t.visit(n=>{n instanceof pe&&e&&(e=n.mark.properties.clip)}),e}class Wr extends u1{constructor(e,n,r,i){super(e,n,r,i,Zl(e)?e.columns:Xl(e)?1:1/0),this.spec=e}_createChildren(){const e=this.spec,n=Zl(e)?e.concat:Xl(e)?e.vconcat:e.hconcat;this.setChildren(n.map((r,i)=>this.context.createView(r,this,"grid"+i)))}}class H8{constructor(){this.types=[];const e=n=>(r,i,o,a)=>new n(r,i,o,r.name??a);this.addViewType(G8,e(qg)),this.addViewType(Wl,e(Ot)),this.addViewType(_l,e(pe)),this.addViewType(Xl,e(Wr)),this.addViewType(Q8,e(Wr)),this.addViewType(Zl,e(Wr))}addViewType(e,n){this.types.push({specGuard:e,factory:n})}createView(e,n,r,i){const o=this.types.find(a=>a.specGuard(e));if(o)return o.factory(e,n,r,i??"unnamed");throw new Error("Invalid spec, cannot figure out the view type from the properties: "+JSON.stringify([...Object.keys(e)]))}isViewSpec(e){const n=this.types.filter(r=>r.specGuard(e));if(n.length>1)throw new Error("Ambiguous spec. Cannot create a view!");return n.length==1}}function _l(t){return"mark"in t&&(ne(t.mark)||ze(t.mark))}function Wl(t){return"layer"in t&&ze(t.layer)}function f1(t){return t&&(_l(t)||Wl(t))&&"aggregateSamples"in t}function G8(t){return"import"in t}function Xl(t){return"vconcat"in t&&_e(t.vconcat)}function Q8(t){return"hconcat"in t&&_e(t.hconcat)}function Zl(t){return"concat"in t&&_e(t.concat)}const V8={point:gM,rect:lM,rule:bM,link:CM,text:IM};class pe extends nr{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const o=V8[this.getMarkType()];if(o)this.mark=new o(this);else throw new Error(`No such mark: ${this.getMarkType()}`);this.sampleAggregateViews=[],this._initializeAggregateViews(),this.coords=void 0}*[Symbol.iterator](){for(const e of this.sampleAggregateViews)yield e}replaceChild(e,n){const r=this.sampleAggregateViews.indexOf(e);if(r>=0)this.sampleAggregateViews[r]=n;else throw new Error("Not my child view!")}render(e,n,r={}){this.isVisible()&&(this.coords=n,e.pushView(this,n),e.renderMark(this.mark,r),e.popView(this))}getMarkType(){return typeof this.spec.mark=="object"?this.spec.mark.type:this.spec.mark}resolve(e){const n=this.mark.encoding;for(const[r,i]of Object.entries(n)){if(!qe(i))continue;let o=Or(i.resolutionChannel??r);if(e=="axis"&&!to(o))continue;let a=this;for(;a.parent instanceof nr&&["shared","excluded"].includes(a.parent.getConfiguredOrDefaultResolution(o,e))&&a.getConfiguredOrDefaultResolution(o,e)!="excluded";)a=a.parent;a.resolutions[e][o]||(a.resolutions[e][o]=e=="scale"?new A8(o):new S8(o)),to(r)?a.resolutions[e][o].pushUnitView(this,r):e=="scale"&&a.resolutions[e][o].pushUnitView(this,r)}}getAccessor(e){return this._cache("accessor/"+e,()=>{const n=this.mark.encoding;if(n&&n[e])return this.context.accessorFactory.createAccessor(n[e])})}getFacetAccessor(e){const n=this.getAccessor("sample");return n||super.getFacetAccessor(this)}getCollector(){return this.context.dataFlow.findCollectorByKey(this)}_validateDomainQuery(e){if(no(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!qe(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(e){const n=this._validateDomainQuery(e),r=n&&n.scale&&n.scale.domain;if(r){const i=this.getScaleResolution(n.resolutionChannel??e);return _g(n.type??"nominal",i.fromComplexInterval(r))}}extractDataDomain(e){const r=this._validateDomainQuery(e).type??"nominal",i=s=>{let c;const u=this.mark.encoding[s];if(u){const f=this.context.accessorFactory.createAccessor(u);if(f)if(c=_g(r),f.constant)c.extend(f({}));else{const l=this.getCollector();l!=null&&l.completed&&l.visitData(d=>c.extend(f(d)))}}return c};let o=i(e);const a=Ku[e];if(a){const s=i(a);s&&o.extendAll(s)}return o}getZoomLevel(){const e=n=>{var r;return((r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())??1};return eo.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){if(f1(this.spec))for(const e of this.spec.aggregateSamples){const n=e.transform??[];n.length&&Re(n).type!="collect"&&n.push({type:"collect"}),n.push({type:"mergeFacets"}),e.transform=n,e.encoding={...e.encoding??{},sample:null};const r=this.context.createView(e,this,"summaryView");r.getFacetFields=i=>{},this.sampleAggregateViews.push(r)}}propagateInteractionEvent(e){e.target=this}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function*ql(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of ql(r,[...e,n]))yield i;else yield[[...e,n],r]}class bo extends ue{get behavior(){return Ol}constructor(e){super(),this.params=e??{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new Tn([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){pM(e)&&(this._data=[],this.facetBatches.set(Ze(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?Yd(e.field,e.order):void 0,r=a=>{n&&a.sort(n)};if((o=this.params.groupby)!=null&&o.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const a=this.params.groupby.map(c=>q(c)),s=pi(this._data,...a);this.facetBatches.clear();for(const[c,u]of ql(s))this.facetBatches.set(c,u)}for(const a of this.facetBatches.values())r(a);if(this.children.length)for(const[a,s]of this.facetBatches.entries()){if(a){const c={type:"facet",facetId:a};for(const u of this.children)u.beginBatch(c)}for(const c of s)this._propagate(c)}super.complete();for(const a of this.observers)a(this)}getData(){switch(this._checkStatus(),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{const e=this.facetBatches;return{[Symbol.iterator]:function*(){for(const r of e.values())for(let i=0;i<r.length;i++)yield r[i]}}}}}visitData(e){this._checkStatus();for(const n of this.facetBatches.values())for(let r=0;r<n.length;r++)e(n[r])}getItemCount(){let e=0;for(const n of this.facetBatches.values())e+=n.length;return e}_checkStatus(){if(!this.completed)throw new Error("Data propagation is not completed! No data are available.")}}class Ao{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,n){let r=this.length++;for(;r>0;){const i=r-1>>1,o=this.values[i];if(n>=o)break;this.ids[r]=this.ids[i],this.values[r]=o,r=i}this.ids[r]=e,this.values[r]=n}pop(){if(this.length===0)return;const e=this.ids[0];if(this.length--,this.length>0){const n=this.ids[0]=this.ids[this.length],r=this.values[0]=this.values[this.length],i=this.length>>1;let o=0;for(;o<i;){let a=(o<<1)+1;const s=a+1;let c=this.ids[a],u=this.values[a];const f=this.values[s];if(s<this.length&&f<u&&(a=s,c=this.ids[s],u=f),u>=r)break;this.ids[o]=c,this.values[o]=u,o=a}this.ids[o]=n,this.values[o]=r}return e}peek(){if(this.length!==0)return this.ids[0]}peekValue(){if(this.length!==0)return this.values[0]}shrink(){this.ids.length=this.values.length=this.length}}class Y8 extends ue{get behavior(){return Bt}constructor(e){super(),this.params=e,this.startAccessor=q(e.start),this.endAccessor=q(e.end),this.chromAccessor=e.chrom?q(e.chrom):n=>{},this.weightAccessor=e.weight?q(e.weight):n=>1,this.as={coverage:e.as||"coverage",start:e.asStart||e.start,end:e.asEnd||e.end,chrom:e.asChrom||e.chrom},this.createSegment=new Function("start","end","coverage","chrom","return {"+Object.entries(this.as).filter(([n,r])=>r).map(([n,r])=>`${JSON.stringify(r)}: ${n}`).join(", ")+"};"),this.ends=new Ao}reset(){super.reset(),this.initialize()}initialize(){const e=this.as.coverage,n=this.as.end,r=this.as.chrom,i=this.startAccessor,o=this.endAccessor,a=this.chromAccessor,s=this.weightAccessor;let c,u,f,l=0,d;const p=this.ends;p.clear();const h=(g,y,b)=>{if(g==y)return;let w=!1;c&&(c[e]===b?(c[n]=y,w=!0):c[e]!=0&&this._propagate(c)),w||(c=this.createSegment(g,y,b,f))},m=()=>{let g;for(;(g=p.peekValue())!==void 0;)h(d,g,l),d=g,l-=p.pop();d=void 0,c&&(this._propagate(c),c=void 0)};this.handle=g=>{const y=i(g);let b;for(;(b=p.peekValue())!==void 0&&b<y;)h(d,b,l),d=b,l-=p.pop();if(r){let C=a(g);C!==u&&(m(),f=C,u=f)}d!==void 0&&h(d,y,l),d=y;const w=s(g);l+=w,p.push(w,o(g))},this.complete=()=>{m(),super.complete()}}}function _8(t,e,n=0,r=t.length){const i=new Ao,o=r-n;let a;for(a=0;a<e&&a<o;a++)i.push(a,t[n+a]);for(;a<o;a++){const u=t[n+a];u>=i.peekValue()&&(i.push(a,u),i.pop())}const s=[];let c;for(;(c=i.pop())!==void 0;)s.push(n+c);return s.reverse()}class W8{constructor(e,n=-1/0,r=1/0){this.maxSize=e,this.lowerLimit=n,this.upperLimit=r;const i=this.maxSize*2+1;this.lowerLimits=new Float64Array(i),this.upperLimits=new Float64Array(i),this.lowerChildren=new Int32Array(i),this.upperChildren=new Int32Array(i),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,n,r=0){if(e>=this.lowerLimits[r]&&n<=this.upperLimits[r]){const i=this.lowerChildren[r];if(i){const o=this._findSlot(e,n,i);return o>=0?o:this._findSlot(e,n,this.upperChildren[r])}else return r}else return-1}reserve(e,n){if(n-e<=0)throw new Error("Cannot reserve an empty or negative-size slot!");if(this.n+1>this.lowerLimits.length)return!1;const r=this._findSlot(e,n);if(r<0)return!1;const i=this.n++,o=this.n++;return this.lowerLimits[i]=this.lowerLimits[r],this.upperLimits[i]=e,this.lowerLimits[o]=n,this.upperLimits[o]=this.upperLimits[r],this.lowerChildren[r]=i,this.upperChildren[r]=o,!0}}class X8 extends ue{get behavior(){return Ol}constructor(e,n){if(super(),this.params=e,this._data=[],this.channel=e.channel??"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=q(this.params.pos),this.posBisector=sa(this.posAccessor),this.scoreAccessor=q(this.params.score),this.widthAccessor=q(this.params.width),this.laneAccessor=this.params.lane?q(this.params.lane):i=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=n.getScaleResolution(this.channel);const r=()=>this._filterAndPropagate();this.schedule=()=>n.context.animator.requestTransition(r),this.resolution.addEventListener("domain",i=>this.schedule()),n._addBroadcastHandler("layoutComputed",()=>this.schedule())}complete(){const e=this.posAccessor;this._data.sort((n,r)=>e(n)-e(r)),this._scores=this._data.map(this.scoreAccessor);for(const n of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(n,new W8(200));this.schedule(),super.complete()}_filterAndPropagate(){var a;super.reset();const e=this.resolution.getScale(),n=(a=this.resolution.members[0].view.coords)==null?void 0:a[this.channel=="x"?"width":"height"];if(!n)return;for(const s of this.reservationMaps.values())s.reset();const r=e.domain(),i=70,o=_8(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const s of o){const c=this._data[s],u=e(this.posAccessor(c))*n,f=this.widthAccessor(c)/2+this.padding;this.reservationMaps.get(this.laneAccessor(c)).reserve(u-f,u+f)&&this._propagate(c)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(e){this._data.push(e)}}class Z8 extends ue{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=Xu(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const q8="0".charCodeAt(0);function*K8(t,e=","){const n=e.charCodeAt(0);let r=0;for(let i=0;i<t.length;i++){const o=t.charCodeAt(i);o==n?(yield r,r=0):r=r*10+o-q8}yield r}class J8 extends ue{get behavior(){return Bt}constructor(e){super();const n=q(e.exons??"exons"),r=q(e.start??"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=a=>{let s=r(a),c=s,u=!0;const f=n(a);for(const l of K8(f)){if(u)c=s+l;else{s=c+l;const d=Object.assign({},a);d[i]=c,d[o]=s,this._propagate(d)}u=!u}}}}class $8 extends ue{get behavior(){return Bt}constructor(e){super();const n=Ze(e.field).map(o=>q(o)),r=Ze(e.separator),i=Ze(e.as||e.field);if(n.length!==r.length||n.length!==i.length)throw new Error(`Lengths of "separator" (${r.length}), "fields" (${n.length}), and "as" (${i.length}) do not match!`);this.handle=o=>{if(n.some(c=>!c(o)))return;const a=n.map((c,u)=>c(o).split(r[u]));e5(a,o);const s=a[0].length;for(let c=0;c<s;c++){const u=Object.assign({},o);for(let f=0;f<n.length;f++)u[i[f]]=a[f][c];this._propagate(u)}}}}function e5(t,e){const n=t.map(r=>r.length);if(!n.every(r=>r==n[0]))throw new Error("Mismatching number of elements in the fields to be split: "+JSON.stringify(e))}class t5 extends ue{get behavior(){return fn}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=Xu(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class d1 extends ue{get behavior(){return fn}constructor(e,n){super();const r=e.channel??"x";if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=n.getScaleResolution(r).getGenome();if(!i)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const o=q(e.chrom),a=Ze(e.pos).map(h=>q(h)),s=Ze(e.as);if(a.length!=s.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=Ze(e.offset);let u;if(c.length==0)u=new Array(a.length).fill(0);else if(c.length==1)u=new Array(a.length).fill(c[0]);else if(c.length==a.length)u=c;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",s.map((h,m)=>`datum[${JSON.stringify(h)}] = chromOffset + +posAccessors[${m}](datum) - ${u[m]};`).join(`
|
1356
|
+
`));let l,d=0;const p=h=>{if(h!==l){if(d=i.cumulativeChromPositions.get(h),d===void 0)throw new Error("Unknown chromosome/contig: "+h);l=h}return d};this.handle=h=>{f(h,p(o(h)),a),this._propagate(h)}}}const h1={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.642000000000001,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.642000000000001,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.429000000000002,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.429000000000002,xadvance:33.621,chnl:15,x:199,y:397,page:0},{id:102,width:24,height:41,xoffset:0,yoffset:-30.534000000000002,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.429000000000002,xadvance:24.360000000000003,chnl:15,x:336,y:397,page:0},{id:38,width:40,height:41,xoffset:0,yoffset:-30.429000000000002,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.336000000000002,chnl:15,x:431,y:397,page:0},{id:48,width:33,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:464,y:397,page:0},{id:71,width:38,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:30.681,chnl:15,x:21,y:347,page:0},{id:83,width:31,height:41,xoffset:0,yoffset:-30.429000000000002,xadvance:22.785,chnl:15,x:61,y:347,page:0},{id:63,width:27,height:41,xoffset:0,yoffset:-30.429000000000002,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.429000000000002,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.429000000000002,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.153000000000002,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.313000000000002,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.801000000000002,chnl:15,x:310,y:297,page:0},{id:85,width:37,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:30.891000000000002,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.208000000000002,chnl:15,x:23,y:247,page:0},{id:90,width:34,height:40,xoffset:0,yoffset:-30.093000000000004,xadvance:25.284000000000002,chnl:15,x:477,y:297,page:0},{id:49,width:31,height:40,xoffset:0,yoffset:-30.156000000000002,xadvance:24.360000000000003,chnl:15,x:61,y:247,page:0},{id:50,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,xadvance:24.360000000000003,chnl:15,x:94,y:247,page:0},{id:57,width:32,height:40,xoffset:0,yoffset:-30.429000000000002,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.429000000000002,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.182000000000002,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.176000000000002,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.874000000000002,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.089000000000002,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.278000000000002,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:[" ","!",'"',"#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"],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:[]};class n5 extends ue{get behavior(){return fn}constructor(e){super();const n=Nl(h1),r=q(e.field),i=e.as,o=e.fontSize;this.handle=a=>{const s=r(a);s!==void 0?a[i]=n.measureWidth(s,o):a[i]=0,this._propagate(a)}}}const r5=65536;class i5 extends ue{get behavior(){return fn}constructor(e){super(),this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=le(e.spacing)?e.spacing:1,i=q(e.start),o=q(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const a=new Float64Array(r5),s=q(e.preference),c=e.preferredOrder;let u=1/0;this.handle=f=>{const l=i(f);l<u&&a.fill(-1/0),u=l;const d=c.indexOf(s(f));let p=-1;if(d>=0&&a[d]<l)p=d;else{const h=i(f);for(p=0;p<a.length&&!(a[p]<h);p++);if(p>=a.length)throw new Error("Out of lanes!")}a[p]=o(f)+r,f[n]=p,this._propagate(f)}}else{const a=new Ao,s=new Ao;let c=-1/0,u=0;this.handle=f=>{const l=i(f);for(;a.length&&(a.peekValue()<=l||l<c);){const p=a.pop();s.push(p,p)}c=l;let d=s.pop();d===void 0&&(d=u++),f[n]=d,this._propagate(f),a.push(d,o(f)+r)}}}}class o5 extends ue{get behavior(){return Bt}constructor(e){if(super(),e.as&&e.as.length!=e.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const n=e.fields.map(i=>q(i)),r=e.as?e.as:n.map(ce);this.handle=i=>{const o={};for(let a=0;a<n.length;a++)o[r[a]]=n[a](i);this._propagate(o)}}}class a5 extends ue{get behavior(){return fn}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=q(e.field);this.handle=o=>{const a=i(o);if(ne(a)){const s=a.match(n);if(s){if(s.length-1!=r.length)throw new Error('The number of RegEx groups and the length of "as" do not match!');for(let c=0;c<r.length;c++)o[r[c]]=s[c+1]}else if(e.skipInvalidInput)for(let c=0;c<r.length;c++)o[r[c]]=void 0;else throw new Error(`"${a}" does not match the given regex: ${n.toString()}`)}else if(!e.skipInvalidInput)throw new Error(`Trying to match a non-string field. Encountered type: ${typeof a}, field content: "${a}".`);this._propagate(o)}}}class s5 extends ue{get behavior(){return Bt}constructor(e){super();const n=Ze(e.columnRegex).map(d=>new RegExp(d)),r=Ze(e.asValue);if(n.length!=r.length)throw new Error('Lengths of "columnRegex" and "as" are not equal!');const i=e.skipRegex?new RegExp(e.skipRegex):void 0,o=e.asKey||"sample";let a,s,c;const u=d=>{var g;const p=Object.keys(d),h=new Map;for(const[y,b]of n.entries())for(const w of p){const C=(g=b.exec(w))==null?void 0:g[1];if(C!==void 0){let x=h.get(C);x||(x=[],h.set(C,x)),x[y]=w}}a=[...h.entries()],s=p.filter(y=>!n.some(b=>b.test(y))&&!(i&&i.test(y)));const m=[...s.map(y=>JSON.stringify(y)+": datum["+JSON.stringify(y)+"]"),JSON.stringify(o)+": sampleId",...r.map(y=>JSON.stringify(y)+": null")];c=new Function("datum","sampleId",`return {
|
1348
1357
|
`+m.join(`,
|
1349
1358
|
`)+`
|
1350
|
-
};`)},f=d=>{a||u(d);for(const[p,h]of a){const m=c(d,p);for(let g=0;g<h.length;g++)m[r[g]]=d[h[g]];this._propagate(m)}},l=d=>{u(d),f(d),this.handle=f};this.handle=l,this.beginBatch=d=>{
|
1351
|
-
`)+" };");return n.properties=e,n}class
|
1352
|
-
Reason: ${s.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(a=i.match(/^[^?#]*\//))==null?void 0:a[0],o;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(t)}`)}async function C1(t){const e=[];t.visit(n=>{if(n instanceof Xg)return e.push(n),vs});for(const n of e){const r=n.context,i=await I5(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await C1(o)}}function S1(t){const e=[];return t.visit(n=>{e.push(n)}),new Set([...Q2(e,n=>n.length,n=>n.name)].filter(([n,r])=>r==1&&n!==void 0).map(([n,r])=>n))}const k5=t=>!/^(layer|concat)\d+$/.test(t);class E1{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class D1 extends E1{constructor(e,n){super(e),this.webGLHelper=n,this.buffer=[],this.coords=void 0,this.views=new Set}pushView(e,n){this.views.add(e),this.coords=n}renderMark(e,n){if(this.globalOptions.picking&&!e.isPickingParticipant())return;const r=e.render(n);r&&this.buffer.push({mark:e,callback:r,coords:this.coords,clipRect:n.clipRect})}renderDeferred(){if(this.batch||this._buildBatch(),this.batch.length==0)return;const e=this.webGLHelper.gl,n=this.globalOptions.picking;e.bindFramebuffer(e.FRAMEBUFFER,n?this.webGLHelper._pickingBufferInfo.framebuffer:null),this.webGLHelper.clearAll();for(const r of this.views)r.onBeforeRender();for(const r of this.batch)r();n&&e.bindFramebuffer(e.FRAMEBUFFER,null)}_buildBatch(){this.batch=[];let e=!0,n=!0;const r=a=>()=>{e&&a()},i=a=>()=>{e&&n&&a()},o=mi(this.buffer,a=>a.mark);for(const[a,s]of o.entries()){if(!a.isReady())continue;this.batch.push(()=>{e=a.unitView.getEffectiveOpacity()>0}),this.batch.push(...a.prepareRender(this.globalOptions).map(u=>r(u)));let c;for(const u of s){const f=u.coords;f.equals(c)||this.batch.push(r(()=>{n=a.setViewport(f,u.clipRect)})),this.batch.push(i(u.callback)),c=u.coords}}}}class N5 extends E1{constructor(...e){super({}),this.contexts=e}pushView(e,n){for(const r of this.contexts)r.pushView(e,n)}popView(e){for(const n of this.contexts)n.popView(e)}renderMark(e,n){for(const r of this.contexts)r.renderMark(e,n)}}class L5{constructor(e,n){this.point=e,this.uiEvent=n,this.stopped=!1,this.target=void 0}stopPropagation(){this.stopped=!0}get type(){return this.uiEvent.type}}class B5{constructor(e,n){this.x=e,this.y=n}equals(e){return e?e===this||e.x===this.x&&e.y===this.y:!1}}const O5=t=>new Promise(e=>setTimeout(e,t));function xs(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,o)=>{if(n!=null&&n.aborted)return o("aborted");const a=performance.now(),s=a+(t.duration||1e3),c=typeof t.from=="number"?t.from:0,u=typeof t.to=="number"?t.to:1,f=t.easingFunction||(m=>m),l=m=>(m-a)/(s-a),d=m=>m*(u-c)+c,p=m=>Math.max(0,Math.min(1,m)),h=m=>{n!=null&&n.aborted?o("aborted"):(t.onUpdate(d(f(p(l(m))))),m<s?e(h):(t.onUpdate(d(f(1))),i()))};e(h)});return t.delay?n!=null&&n.aborted?Promise.reject("aborted"):O5(t.delay).then(r):r()}class F5{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){const n=this.transitions.indexOf(e);n>=0&&this.transitions.splice(n,1)}requestRender(){this._renderRequested?this._warn&&console.warn("Render already requested!"):(this._renderRequested=!0,window.requestAnimationFrame(e=>{this._renderRequested=!1;const n=this.transitions;this.transitions=[];let r;for(;r=n.shift();)r(e);this._renderCallback(e)}))}transition(e){return xs({requestAnimationFrame:n=>this.requestTransition(n),...e})}}function M1(){const t=e=>e;return t.invert=e=>e,t.copy=M1,t.invertRange=()=>{},t}class P5{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new u8(e);return this.genomes.set(n.name,n),Promise.all([...this.genomes.values()].map(r=>r.load(this.genomeSpy.spec.baseUrl)))}getGenome(e){if(!this.genomes.size)throw new Error("No genomes have been configured!");if(e){const n=this.genomes.get(e);if(!n)throw new Error(`No genome with the name ${e} has been configured!`);return n}else{if(this.genomes.size>1)throw new Error("Cannot pick a default genome! More than one have been configured!");return this.genomes.values().next().value}}}const z5="data:image/png;base64,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",R5={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class j5{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Tn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Nl(f1),texture:this._createTextureNow(z5)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(ne(r)&&(r=R5[r.toLowerCase()],!r))throw new Error("Unknown font weight: "+r);const i={family:e,style:n,weight:r};let o=this._fonts.get(i);return o||(o={metrics:void 0,texture:void 0},this._fonts.set(i,o),this._promises.push(this._loadFontEntry(o,i))),o}async _loadFontEntry(e,n){try{const r=await this._loadMetadata(n.family),i=H5(r,n),o=this.fontRepository+T1(n.family)+"/"+i.replace(/\.\w+/,""),a=this._createTexture(o+".png"),s=this._loadFont(o+".json");e.texture=await a,e.metrics=await s}catch(r){console.log("Cannot load font. Using default.",r),e.metrics=this._defaultFontEntry.metrics,e.texture=this._defaultFontEntry.texture}}_loadFont(e){let n=this._fontPromises.get(e);return n||(n=fetch(e).then(r=>{if(!r.ok)throw new Error("Could not load font: "+r.status);return r}).then(r=>r.json()).then(r=>Nl(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=T1(e);let r=this._metadataPromises.get(n);return r||(r=fetch(this.fontRepository+n+"/METADATA.pb").then(i=>{if(!i.ok)throw new Error("Could not load font metadata: "+i.status);return i}).then(i=>i.text()).then(i=>U5(i)).catch(i=>{console.warn(i)}),this._metadataPromises.set(n,r)),r}getDefaultFont(){return this._defaultFontEntry}_createTexture(e){const n=this._webGLHelper.gl;return new Promise((r,i)=>{uo(n,{src:e,min:n.LINEAR},(o,a,s)=>{o?i(o):r(a)})})}_createTextureNow(e){const n=this._webGLHelper.gl;let r;const i=new Promise((o,a)=>{r=uo(n,{src:e,min:n.LINEAR},(s,c,u)=>{s?a(s):o(c)})});return this._promises.push(i),r}}function T1(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function U5(t){const e=t.split(`
|
1353
|
-
`),n=[];let r;for(const i of e)if(i.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}),i.startsWith("}")&&(n.push(r),r=void 0),r){let o=i.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(o){const a=o[1];r[a]=o[2]}if(o=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),o){const a=o[1];r[a]=+o[2]}}return n}function
|
1354
|
-
`))if(i.startsWith(">"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},n.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return n}class Q5{constructor(e,n){this.animator=e,this.disabled=!!n,this.damping=.015,this.acceleration=.3,this.accelerationThreshold=100,this.lowerLimit=.5,this.loop=!1,this.momentum=0,this.timestamp=0,this.callback=null,this._transitionCallback=this.animate.bind(this),this.clear()}clear(){this.momentum=0,this.timestamp=null,this.loop=null,this.callback=null}cancel(){this.loop&&(this.animator.cancelTransition(this._transitionCallback),this.clear())}setMomentum(e,n){if(this.disabled){n(e);return}e*this.momentum<0?this.momentum=0:Math.abs(e)>this.accelerationThreshold?this.momentum=v2([this.momentum,e],this.acceleration):this.momentum=e,this.callback=n,this.loop||this.animate()}animate(e){this.callback(this.momentum);const n=e-this.timestamp||0;this.timestamp=e;const r=Math.abs(this.momentum);this.momentum=Math.sign(this.momentum)*Math.max(0,r-((r*this.damping)**1.5+.04)*n),Math.abs(this.momentum)>this.lowerLimit?(this.loop=!0,this.animator.requestTransition(this._transitionCallback)):this.clear()}}function V5(t){const e={},n=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in t){const o=i;!r.includes(i)&&n.includes(typeof t[o])&&(e[o]=t[o])}return e}function ws(t,e,n=!0){let r,i=a=>{};return function(...s){return new Promise((c,u)=>{const f=()=>{clearTimeout(r),i=l=>{},c(t(...s))};n&&i("debounced"),clearTimeout(r),i=u,r=setTimeout(f,e)})}}const I1=new Map;async function Y5(t,e,n){const r=t.symbol;let i=I1.get(r)??await X5(t.symbol);return i?(I1.set(r,i),E`<div class="title"><strong>${i.name}</strong> ${i.description}</div><p class="summary">${i.summary}</p><p class="source">Source: NCBI RefSeq Gene</p>`):null}async function _5(t){console.log("Searching: "+t);const e={mode:"cors"},r=(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gene&term=${t}[GENE]&sort=relevance&retmode=json`,e).then(i=>i.json())).esearchresult.idlist[0];return r?(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gene&id=${r}&retmode=json`,e).then(a=>a.json())).result[r]:null}const W5=ws(_5,500);function X5(t){return W5(t)}const Z5=de(".4~r"),q5=de(".4~e");function k1(t){return t===null?E`<span class="na">NA</span>`:ne(t)?t.substring(0,30):Number.isInteger(t)?""+t:le(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?q5(t):Z5(t):ra(t)?t?"True":"False":"?"+typeof t+" "+t}async function K5(t,e,n){const r=(c,u)=>{var f;for(const[l,d]of Object.entries(e.encoders))if((f=d==null?void 0:d.accessor)!=null&&f.fields.includes(c))switch(l){case"color":case"fill":case"stroke":return E`<span class="color-legend" style="${`background-color: ${d(u)}`}"></span>`}return""},i=Object.entries(t).filter(([c,u])=>!c.startsWith("_"));if(i.length===0)return;const o=E`<table class="attributes">${i.map(([c,u])=>E`<tr><th>${c}</th><td>${k1(u)} ${r(c,t)}</td></tr>`)}</table>`,a=e.unitView.getTitleText(),s=a?E`<div class="title"><strong>${a}</strong></div>`:"";return E`${s}${o}`}class J5 extends s1{constructor(e,n){super({vconcat:[]},e,void 0,"implicitRoot",1),n.parent=this,this.appendChild(n)}}X("index",Jc,["continuous"]),X("locus",Zx,["continuous"]),X("null",M1,[]),Yh("fasta",G5);class N1{constructor(e,n,r={}){this.container=e,this.spec=n,this.accessorFactory=new j3,this.viewFactory=new j8,this.namedDataProviders=[],this.animator=new F5(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=i=>i.isVisibleInSpec(),this._renderingContext=void 0,this._pickingContext=void 0,this._dirtyPickingBuffer=!1,this._currentHover=void 0,this._wheelInertia=new Q5(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers={default:K5,refseqgene:Y5,...r.tooltipHandlers??{}},this.viewRoot=void 0}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedDataFromProvider(e){for(const n of this.namedDataProviders){const r=n(e);if(r)return r}}updateNamedData(e,n){const r=this.viewRoot.context.dataFlow.findNamedDataSource(e);if(!r)throw new Error("No such named data source: "+e);r.dataSource.updateDynamicData(n);for(const i of r.hosts)i.visit(o=>{for(const a of Object.values(o.resolutions.scale))a.reconfigure()});this.animator.requestRender()}broadcast(e,n){const r={type:e,payload:n};this.viewRoot.visit(i=>i.handleBroadcast(r))}_prepareContainer(){this.container.classList.add("genome-spy"),this.container.classList.add("loading"),this._glHelper=new tM(this.container,()=>{if(this.viewRoot){const e=this.viewRoot.getSize().addPadding(this.viewRoot.getOverhang()),n=r=>r.grow>0?void 0:r.px;return{width:n(e.width),height:n(e.height)}}}),this.loadingMessageElement=document.createElement("div"),this.loadingMessageElement.className="loading-message",this.loadingMessageElement.innerHTML='<div class="message">Loading<span class="ellipsis">...</span></div>',this.container.appendChild(this.loadingMessageElement),this.tooltip=new v4(this.container),this.loadingMessageElement.querySelector(".message").addEventListener("transitionend",()=>{this.loadingMessageElement.style.display="none"})}destroy(){this.container.classList.remove("genome-spy"),this.container.classList.remove("loading");for(const[e,n]of this._keyboardListeners)for(const r of n)document.removeEventListener(e,r);for(this._glHelper.finalize();this.container.firstChild;)this.container.firstChild.remove()}async _prepareViewsAndData(){this.spec.genome&&(this.genomeStore=new P5(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new b1,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new j5(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(s,c)=>{document.addEventListener(s,c);let u=this._keyboardListeners.get(s);u||(u=[],this._keyboardListeners.set(s,u)),u.push(c)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:s=>e.viewFactory.isViewSpec(s),createView:function(s,c,u){return e.viewFactory.createView(s,n,c,u)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(s=>r.datasets[s]),this.viewRoot=n.createView(r,null,"viewRoot"),await C1(this.viewRoot),(this.viewRoot instanceof pe||this.viewRoot instanceof Ot)&&(this.viewRoot=new J5(n,this.viewRoot)),w1(this.viewRoot),M5(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(s=>{s instanceof pe&&i.push(s)});const o=A1(this.viewRoot,n.dataFlow);D5(o),this.broadcast("dataFlowBuilt",o),o.dataSources.forEach(s=>console.log(s.subtreeToString())),i.forEach(s=>s.mark.initializeEncoders());const a=Promise.all(i.map(s=>s.mark.initializeGraphics()));for(const s of i)o.addObserver(c=>{s.mark.initializeData(),s.mark.updateGraphicsData()},s);await n.fontManager.waitUntilReady(),o.initialize(),await Promise.all(o.dataSources.map(s=>s.load())),this.viewRoot.visit(s=>{for(const c of Object.values(s.resolutions.scale))c.reconfigure()}),this.broadcast("dataLoaded"),await a,this.viewRoot.visit(s=>{for(const c of Object.values(s.resolutions.scale))this._glHelper.createRangeTexture(c)});for(const s of i)s.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(s=>ho(s,"size")),this._glHelper.invalidateSize()}async launch(){try{return this._prepareContainer(),await this._prepareViewsAndData(),this.registerMouseEvents(),this.computeLayout(),this.animator.requestRender(),this._glHelper.addEventListener("resize",()=>{this.computeLayout(),this.renderAll()}),!0}catch(e){const n=`${e.view?`At "${e.view.getPathString()}": `:""}${e.toString()}`;return console.error(e.stack),$5(this.container,n),!1}finally{this.container.classList.remove("loading"),window.setTimeout(()=>{this.loadingMessageElement.style.display="none"},2e3)}}registerMouseEvents(){const e=this._glHelper.canvas,n=r=>{var i;if(r instanceof MouseEvent){r.type=="mousemove"&&(this.tooltip.handleMouseMove(r),this._tooltipUpdateRequested=!1,r.buttons==0&&this.renderPickingFramebuffer());const o=e.getBoundingClientRect(),a=new B5(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),s=c=>{this.viewRoot.propagateInteractionEvent(new L5(a,c)),this._tooltipUpdateRequested||this.tooltip.clear()};if(r.type!="wheel"&&this._wheelInertia.cancel(),r.type=="mousemove")this._handlePicking(a.x,a.y);else if(r.type=="mousedown"||r.type=="mouseup")this.renderPickingFramebuffer();else if(r.type=="wheel"){this._tooltipUpdateRequested=!1;const c=r;if(Math.abs(c.deltaX)>Math.abs(c.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const u=V5(c);this._wheelInertia.setMomentum(c.deltaY*(c.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",{...u,deltaMode:0,deltaX:0,deltaY:f});s(l)}),c.preventDefault();return}}if(r.type=="click"){const c=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(u=>u.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(u=>u(c))}s(r)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu"].forEach(r=>e.addEventListener(r,n)),e.addEventListener("mousedown",()=>{document.addEventListener("mouseup",()=>this.tooltip.popEnabledState(),{once:!0}),this.tooltip.pushEnabledState(!1)}),e.addEventListener("dragstart",r=>r.stopPropagation())}_handlePicking(e,n){var o;const r=this._glHelper.readPickingPixel(e,n),i=r[0]|r[1]<<8|r[2]<<16;if(i==0){this._currentHover=null;return}if(i!==((o=this._currentHover)==null?void 0:o.uniqueId)&&(this._currentHover=null),this._currentHover||this.viewRoot.visit(a=>{if(a instanceof pe){if(a.mark.isPickingParticipant()){const s=a.mark.encoders.uniqueId.accessor;a.getCollector().visitData(c=>{s(c)==i&&(this._currentHover={mark:a.mark,datum:c,uniqueId:i})})}if(this._currentHover)return tr}}),this._currentHover){const a=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async s=>{if(!a.isPickingParticipant())return;const c=a.properties.tooltip;if(c!==null){const u=(c==null?void 0:c.handler)??"default",f=this.tooltipHandlers[u];if(!f)throw new Error("No such tooltip handler: "+u);return f(s,a,c==null?void 0:c.params)}})}}updateTooltip(e,n){if(!this._tooltipUpdateRequested||!e)this.tooltip.updateWithDatum(e,n),this._tooltipUpdateRequested=!0;else throw new Error("Tooltip has already been updated! Duplicate event handler?")}computeLayout(){const e=this.viewRoot;if(!e)return;this.broadcast("layout");const n=this._glHelper.getLogicalCanvasSize();if(isNaN(n.width)||isNaN(n.height)){console.log(`NaN in canvas size: ${n.width}x${n.height}. Skipping computeLayout().`);return}this._renderingContext=new D1({picking:!1},this._glHelper),this._pickingContext=new D1({picking:!0},this._glHelper),e.render(new N5(this._renderingContext,this._pickingContext),dn.create(0,0,n.width,n.height)),this.broadcast("layoutComputed")}renderAll(){var e;(e=this._renderingContext)==null||e.renderDeferred(),this._dirtyPickingBuffer=!0}renderPickingFramebuffer(){this._dirtyPickingBuffer&&(this._pickingContext.renderDeferred(),this._dirtyPickingBuffer=!1)}getSearchableViews(){const e=[];return this.viewRoot.visit(n=>{n instanceof pe&&n.getAccessor("search")&&e.push(n)}),e}getNamedScaleResolutions(){const e=new Map;return this.viewRoot.visit(n=>{for(const r of Object.values(n.resolutions.scale))r.name&&e.set(r.name,r)}),e}}function $5(t,e){const n=document.createElement("div");n.className="message-box";const r=document.createElement("div");r.textContent=e,n.appendChild(r),t.appendChild(n)}const YN="",e6="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";/**
|
1359
|
+
};`)},f=d=>{a||u(d);for(const[p,h]of a){const m=c(d,p);for(let g=0;g<h.length;g++)m[r[g]]=d[h[g]];this._propagate(m)}},l=d=>{u(d),f(d),this.handle=f};this.handle=l,this.beginBatch=d=>{Mg(d)&&(this.handle=l),super.beginBatch(d)}}}class c5 extends ue{get behavior(){return fn}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){const e=this.params,n=e.as||["y0","y1"],r=e.sort?Yd(e.sort.field,e.sort.order):void 0,i=e.field?q(e.field):()=>1,o=e.groupby.map(f=>q(f)),a=V2(this.buffer,f=>o.map(l=>l(f)).join()).map(f=>f[1]);let s=f=>!0;if(e.baseField){const f=q(e.baseField);s=l=>f(l)!==null}let c,u;switch(e.offset){case"normalize":c=(f,l)=>f/l,u=(f,l)=>la(f,l);break;case"center":c=(f,l)=>f-l/2,u=(f,l)=>la(f,l);break;case"information":{const f=Math.log2(e.cardinality??4);c=(l,d)=>l/d,u=(l,d)=>{const h=la(l,b=>+!s(b)),m=la(l,d),g=m-h;let y=0;for(let b=0;b<l.length;b++){const w=l[b];if(s(w)){const C=d(w)/g;y-=C*Math.log2(C)}}return g/(f-(y+0))*(g/m)}}break;default:c=(f,l)=>f,u=(f,l)=>1}for(const f of a){r&&f.sort(r);const l=u(f,i);let d=0;for(const p of f){const h=d+i(p);s(p)&&(p[n[0]]=c(d,l),p[n[1]]=c(h,l),this._propagate(p),d=h)}}super.complete()}}class u5 extends ue{get behavior(){return Bt}constructor(e){super();const n=q(e.field??"sequence"),[r,i]=e.as??["pos","sequence"];this.handle=o=>{const a=Object.assign({},o,{[i]:"",[r]:0}),s=n(o);for(let c=0;c<s.length;c++){const u=Object.assign({},a);u[r]=c,u[i]=s.charAt(c),this._propagate(u)}}}}class l5 extends ue{get behavior(){return Bt}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){const n=this.params.groupby,r=n.map(o=>q(o)),i=pi(this.buffer,...r);for(const[o,a]of ql(i)){const s={count:a.length};for(let c=0;c<n.length;c++)s[n[c]]=o[c];this._propagate(s)}super.complete()}}const f5="_uniqueId",p1=1e4,m1=[null];class g1 extends ue{get behavior(){return fn}constructor(e){super(),this.params=e,this.as=e.as??f5,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%p1==0&&(this._id=this._getBlock()*p1),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=m1.length;return m1[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const y1={aggregate:l5,collect:bo,coverage:Y8,filterScoredLabels:X8,filter:Z8,flattenCompressedExons:J8,flattenDelimited:$8,flattenSequence:u5,formula:t5,identifier:g1,linearizeGenomicCoordinate:d1,measureText:n5,pileup:i5,project:o5,regexExtract:a5,regexFold:s5,sample:Tg,stack:c5};function d5(t,e){const n=y1[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function h5(t){return"values"in t}class p5 extends rr{constructor(e){var n;if(super(),this.params=e,typeof e.values=="string"&&!((n=e==null?void 0:e.format)!=null&&n.type))throw new Error("Data format type (csv, dsv, ...) must be specified if a string is provided!")}loadSynchronously(){const e=this.params.values;let n=[],r=i=>i;if(Array.isArray(e))e.length>0&&(n=e,r=As(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=Xh(e,$g(this.params));else throw new Error('"values" in data configuration is not an array, object, or a string!');this.reset(),this.beginBatch({type:"file"});for(const i of n)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}function m5(t){return"url"in t}class g5 extends rr{constructor(e,n){super(),this.params=e,this.baseUrl=n}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}async load(){const e=this.params.url,n=Array.isArray(e)?e:[e],r=async o=>Ni({baseURL:this.baseUrl}).load(o).catch(a=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${a.message}`)}),i=(o,a)=>{try{const s=Xh(o,$g(this.params));this.beginBatch({type:"file",url:a});for(const c of s)this._propagate(c)}catch(s){throw new Error(`Cannot parse: ${a}: ${s.message}`)}};this.reset(),await Promise.all(n.map(o=>r(o).then(i))),this.complete()}}function y5(t){return"sequence"in t}class v5 extends rr{constructor(e){if(super(),this.sequence=e.sequence,!("start"in this.sequence))throw new Error("'start' is missing from sequence parameters!");if(!("stop"in this.sequence))throw new Error("'stop' is missing from sequence parameters!")}loadSynchronously(){const e=this.sequence.as||"data",n=this.sequence.step||1,r=this.sequence.stop;this.reset(),this.beginBatch({type:"file"});for(let i=this.sequence.start;i<r;i+=n)this._propagate({[e]:i});this.complete()}async load(){this.loadSynchronously()}}function b5(t){return"dynamicSource"in t}class A5 extends rr{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=As(r)),this._propagate(n(r));this.complete()}async load(){}}function v1(t,e){if(h5(t))return new p5(t);if(m5(t))return new g5(t,e);if(y5(t))return new v5(t);if(b5(t))return new A5;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function x5(t){const e=Object.keys(t).filter(r=>typeof r=="string"),n=new Function("source","return { "+e.map(r=>JSON.stringify(r)).map(r=>`${r}: source[${r}]`).join(`,
|
1360
|
+
`)+" };");return n.properties=e,n}class xs extends ue{get behavior(){return Bt}constructor(){super();const e=n=>{const r=x5(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{Mg(n)&&(this.handle=e),super.beginBatch(n)}}}function w5(t){return"name"in t}class b1 extends rr{constructor(n,r){super();$(this,_o,void 0);this.provider=r,this.params=n}get identifier(){return this.params.name}updateDynamicData(n){et(this,_o,n),this.loadSynchronously()}loadSynchronously(){const n=j(this,_o)??this.provider(this.params.name)??[];let r=i=>i;if(Array.isArray(n))n.length>0&&(r=As(n[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const i of n)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}_o=new WeakMap;class A1{constructor(){this._dataSourcesByHost=new Map,this._collectorsByHost=new Map,this._observers=new Map}get dataSources(){return[...new Set(this._dataSourcesByHost.values()).values()]}get collectors(){return[...this._collectorsByHost.values()]}addObserver(e,n){let r=this._observers.get(n);r||(r=[],this._observers.set(n,r)),r.push(e)}_relayObserverCallback(e,n){const r=this._observers.get(n);if(r)for(const i of r)i(e)}addDataSource(e,n){this._dataSourcesByHost.set(n,e)}findDataSourceByKey(e){return this._dataSourcesByHost.get(e)}findNamedDataSource(e){let n,r=[];for(const[i,o]of this._dataSourcesByHost.entries())if(o instanceof b1&&e==o.identifier){if(n&&n!==o)throw new Error(`Found multiple instances of named data: ${e}. Data flow optimization is broken (it's a bug).`);n=o,r.push(i)}if(n)return{dataSource:n,hosts:r}}addCollector(e,n){this._collectorsByHost.set(n,e),e.observers.push(r=>this._relayObserverCallback(r,n))}findCollectorByKey(e){return this._collectorsByHost.get(e)}initialize(){for(const e of this.dataSources)e.visit(n=>n.initialize())}}function x1(t,e){const n=[];let r;const i=e??new A1,o=[];function a(f,l=()=>{}){if(!r)throw l()||new Error("Cannot append data flow node, no parent exist!");return r.addChild(f),r=f,f}function s(f,l){return a(f,()=>new Error(`Cannot append a transform because no (inherited) data are available! ${l?JSON.stringify(l):""}`))}function c(f,l){for(const d of f){let p;try{p=d5(d,l)}catch(h){throw console.warn(h),new Error(`Cannot initialize "${d.type}" transform: ${h}`)}p.behavior&fn&&s(new xs),s(p)}}const u=f=>{if(n.push(r),f.spec.data){const l=I8(f.spec.data)?f.getDynamicDataSource():w5(f.spec.data)?new b1(f.spec.data,f.context.getNamedDataFromProvider):v1(f.spec.data,f.getBaseUrl());r=l,i.addDataSource(l,f)}if(f.spec.transform&&c(f.spec.transform,f),f instanceof pe){if(!r)throw new Error("A unit view has no (inherited) data source");const l=C5(f);if(l){o.push(l.rewrite);for(const p of l.transforms)s(p)}f.mark.isPickingParticipant()&&(s(new xs),s(new g1({type:"identifier"})));const d=new bo({type:"collect",groupby:f.getFacetFields(),sort:S5(f,l==null?void 0:l.rewrittenEncoding)});a(d),i.addCollector(d,f)}f1(f.spec)};return u.postOrder=f=>{r=n.pop()},t.visit(u),o.forEach(f=>f()),i}function C5(t){var o;const e=[],n={},r=[];for(const[a,s]of Object.entries(t.getEncoding())){const c=a;to(c)&&_p(s)&&r.push({channel:c,chromPosDef:s})}const i=pi(r,a=>Or(a.channel),a=>a.chromPosDef.chrom);for(const[a,s]of i.entries())for(const[c,u]of s.entries()){const f=[],l=[],d=[];for(const{channel:p,chromPosDef:h}of u){const m=b=>b.replace(/[^A-Za-z0-9_]/g,""),g=["_linearized_",m(h.chrom),"_",m(h.pos)].join(""),y={...((o=t.spec.encoding)==null?void 0:o[p])??t.getEncoding()[p]??{},field:g};delete y.chrom,delete y.pos,!y.type&&h.type&&(y.type=h.type),n[p]=y,f.push(h.pos),d.push(h.offset??0),l.push(g)}e.push(new xs),e.push(new d1({type:"linearizeGenomicCoordinate",channel:a,chrom:c,pos:f,offset:d,as:l},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding={...t.spec.encoding,...n},Ag(t.mark,"encoding")}}:void 0}function S5(t,e){var r;const n={...t.getEncoding(),...e}.x;if(qe(n)&&(r=t.getScaleResolution("x"))!=null&&r.isZoomable()){if(Xn(n))return{field:n.field};if(!$i(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function E5(t,...e){let n=t;for(const o of e)n.addChild(o),n=o;let r;n instanceof bo?r=n:(r=new bo,n.addChild(r));let i;return t instanceof rr?i=async()=>(await t.load(),r.getData()):i=async()=>{throw new Error("The root node is not derived from DataSource!")},{dataSource:t,collector:r,loadAndCollect:i}}function w1(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!w1(n,t))return!1;return!0}function Kl(t,e=!1){if(t.behavior&Ol&&(e=!0),t instanceof xs)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&Kl(n,e);return}t.behavior&Bt&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)Kl(t.children[n],e||r>1)}function D5(t){const e=[...t._dataSourcesByHost.entries()],n=new Map;for(const r of e){const i=r[1];i.identifier&&!n.has(i.identifier)&&n.set(i.identifier,i)}t._dataSourcesByHost.clear();for(let[r,i]of e){const o=n.get(i.identifier);o&&(o.adoptChildrenOf(i),i=o),t.addDataSource(i,r)}}function M5(t){if(Kl(t),!w1(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function T5(t){for(const e of t.dataSources)M5(e);D5(t)}function C1(t){t.visit(n=>{n instanceof pe&&n.resolve("scale")});const e=new Set;t.visit(n=>{for(const r of Object.values(n.resolutions.scale)){const i=r.name;if(i&&e.has(i))throw new Error(`The same scale name "${i}" occurs in multiple scale resolutions!`);e.add(i)}}),t.visit(n=>{n instanceof pe&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function I5(t){for(const e of eo){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}function k5(t){const e=[];return t.visit(n=>{if(n instanceof pe){const r=n.getEncoding();for(const[i,o]of Object.entries(r))Xn(o)&&"type"in o&&e.push({view:n,channel:i,field:o.field,type:o.type});return vs}}),e}async function N5(t,e,n){var a;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=Ni({baseURL:e}),i=t.import.url,o=JSON.parse(await r.load(i).catch(s=>{throw new Error(`Could not load imported view spec: ${i}
|
1361
|
+
Reason: ${s.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(a=i.match(/^[^?#]*\//))==null?void 0:a[0],o;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(t)}`)}async function S1(t){const e=[];t.visit(n=>{if(n instanceof qg)return e.push(n),vs});for(const n of e){const r=n.context,i=await N5(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await S1(o)}}function E1(t){const e=[];return t.visit(n=>{e.push(n)}),new Set([...Y2(e,n=>n.length,n=>n.name)].filter(([n,r])=>r==1&&n!==void 0).map(([n,r])=>n))}const L5=t=>!/^(layer|concat)\d+$/.test(t);class D1{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class M1 extends D1{constructor(e,n){super(e),this.webGLHelper=n,this.buffer=[],this.coords=void 0,this.views=new Set}pushView(e,n){this.views.add(e),this.coords=n}renderMark(e,n){if(this.globalOptions.picking&&!e.isPickingParticipant())return;const r=e.render(n);r&&this.buffer.push({mark:e,callback:r,coords:this.coords,clipRect:n.clipRect})}renderDeferred(){if(this.batch||this._buildBatch(),this.batch.length==0)return;const e=this.webGLHelper.gl,n=this.globalOptions.picking;e.bindFramebuffer(e.FRAMEBUFFER,n?this.webGLHelper._pickingBufferInfo.framebuffer:null),this.webGLHelper.clearAll();for(const r of this.views)r.onBeforeRender();for(const r of this.batch)r();n&&e.bindFramebuffer(e.FRAMEBUFFER,null)}_buildBatch(){this.batch=[];let e=!0,n=!0;const r=a=>()=>{e&&a()},i=a=>()=>{e&&n&&a()},o=pi(this.buffer,a=>a.mark);for(const[a,s]of o.entries()){if(!a.isReady())continue;this.batch.push(()=>{e=a.unitView.getEffectiveOpacity()>0}),this.batch.push(...a.prepareRender(this.globalOptions).map(u=>r(u)));let c;for(const u of s){const f=u.coords;f.equals(c)||this.batch.push(r(()=>{n=a.setViewport(f,u.clipRect)})),this.batch.push(i(u.callback)),c=u.coords}}}}class B5 extends D1{constructor(...e){super({}),this.contexts=e}pushView(e,n){for(const r of this.contexts)r.pushView(e,n)}popView(e){for(const n of this.contexts)n.popView(e)}renderMark(e,n){for(const r of this.contexts)r.renderMark(e,n)}}class O5{constructor(e,n){this.point=e,this.uiEvent=n,this.stopped=!1,this.target=void 0}stopPropagation(){this.stopped=!0}get type(){return this.uiEvent.type}}class F5{constructor(e,n){this.x=e,this.y=n}equals(e){return e?e===this||e.x===this.x&&e.y===this.y:!1}}const P5=t=>new Promise(e=>setTimeout(e,t));function ws(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,o)=>{if(n!=null&&n.aborted)return o("aborted");const a=performance.now(),s=a+(t.duration||1e3),c=typeof t.from=="number"?t.from:0,u=typeof t.to=="number"?t.to:1,f=t.easingFunction||(m=>m),l=m=>(m-a)/(s-a),d=m=>m*(u-c)+c,p=m=>Math.max(0,Math.min(1,m)),h=m=>{n!=null&&n.aborted?o("aborted"):(t.onUpdate(d(f(p(l(m))))),m<s?e(h):(t.onUpdate(d(f(1))),i()))};e(h)});return t.delay?n!=null&&n.aborted?Promise.reject("aborted"):P5(t.delay).then(r):r()}class z5{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){const n=this.transitions.indexOf(e);n>=0&&this.transitions.splice(n,1)}requestRender(){this._renderRequested?this._warn&&console.warn("Render already requested!"):(this._renderRequested=!0,window.requestAnimationFrame(e=>{this._renderRequested=!1;const n=this.transitions;this.transitions=[];let r;for(;r=n.shift();)r(e);this._renderCallback(e)}))}transition(e){return ws({requestAnimationFrame:n=>this.requestTransition(n),...e})}}function T1(){const t=e=>e;return t.invert=e=>e,t.copy=T1,t.invertRange=()=>{},t}class R5{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new f8(e);return this.genomes.set(n.name,n),Promise.all([...this.genomes.values()].map(r=>r.load(this.genomeSpy.spec.baseUrl)))}getGenome(e){if(!this.genomes.size)throw new Error("No genomes have been configured!");if(e){const n=this.genomes.get(e);if(!n)throw new Error(`No genome with the name ${e} has been configured!`);return n}else{if(this.genomes.size>1)throw new Error("Cannot pick a default genome! More than one have been configured!");return this.genomes.values().next().value}}}const j5="data:image/png;base64,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",U5={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class H5{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Tn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Nl(h1),texture:this._createTextureNow(j5)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(ne(r)&&(r=U5[r.toLowerCase()],!r))throw new Error("Unknown font weight: "+r);const i={family:e,style:n,weight:r};let o=this._fonts.get(i);return o||(o={metrics:void 0,texture:void 0},this._fonts.set(i,o),this._promises.push(this._loadFontEntry(o,i))),o}async _loadFontEntry(e,n){try{const r=await this._loadMetadata(n.family),i=Q5(r,n),o=this.fontRepository+I1(n.family)+"/"+i.replace(/\.\w+/,""),a=this._createTexture(o+".png"),s=this._loadFont(o+".json");e.texture=await a,e.metrics=await s}catch(r){console.log("Cannot load font. Using default.",r),e.metrics=this._defaultFontEntry.metrics,e.texture=this._defaultFontEntry.texture}}_loadFont(e){let n=this._fontPromises.get(e);return n||(n=fetch(e).then(r=>{if(!r.ok)throw new Error("Could not load font: "+r.status);return r}).then(r=>r.json()).then(r=>Nl(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=I1(e);let r=this._metadataPromises.get(n);return r||(r=fetch(this.fontRepository+n+"/METADATA.pb").then(i=>{if(!i.ok)throw new Error("Could not load font metadata: "+i.status);return i}).then(i=>i.text()).then(i=>G5(i)).catch(i=>{console.warn(i)}),this._metadataPromises.set(n,r)),r}getDefaultFont(){return this._defaultFontEntry}_createTexture(e){const n=this._webGLHelper.gl;return new Promise((r,i)=>{co(n,{src:e,min:n.LINEAR},(o,a,s)=>{o?i(o):r(a)})})}_createTextureNow(e){const n=this._webGLHelper.gl;let r;const i=new Promise((o,a)=>{r=co(n,{src:e,min:n.LINEAR},(s,c,u)=>{s?a(s):o(c)})});return this._promises.push(i),r}}function I1(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function G5(t){const e=t.split(`
|
1362
|
+
`),n=[];let r;for(const i of e)if(i.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}),i.startsWith("}")&&(n.push(r),r=void 0),r){let o=i.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(o){const a=o[1];r[a]=o[2]}if(o=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),o){const a=o[1];r[a]=+o[2]}}return n}function Q5(t,e){let n,r=Number.POSITIVE_INFINITY;for(const i of t)if(e.family.localeCompare(i.name,void 0,{sensitivity:"accent"})==0&&e.style==i.style){const o=Math.abs(e.weight-i.weight);o<r&&(r=o,n=i)}return n==null?void 0:n.filename}function V5(t,e){const n=[];let r;for(const i of t.split(`
|
1363
|
+
`))if(i.startsWith(">"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},n.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return n}class Y5{constructor(e,n){this.animator=e,this.disabled=!!n,this.damping=.015,this.acceleration=.3,this.accelerationThreshold=100,this.lowerLimit=.5,this.loop=!1,this.momentum=0,this.timestamp=0,this.callback=null,this._transitionCallback=this.animate.bind(this),this.clear()}clear(){this.momentum=0,this.timestamp=null,this.loop=null,this.callback=null}cancel(){this.loop&&(this.animator.cancelTransition(this._transitionCallback),this.clear())}setMomentum(e,n){if(this.disabled){n(e);return}e*this.momentum<0?this.momentum=0:Math.abs(e)>this.accelerationThreshold?this.momentum=A2([this.momentum,e],this.acceleration):this.momentum=e,this.callback=n,this.loop||this.animate()}animate(e){this.callback(this.momentum);const n=e-this.timestamp||0;this.timestamp=e;const r=Math.abs(this.momentum);this.momentum=Math.sign(this.momentum)*Math.max(0,r-((r*this.damping)**1.5+.04)*n),Math.abs(this.momentum)>this.lowerLimit?(this.loop=!0,this.animator.requestTransition(this._transitionCallback)):this.clear()}}function _5(t){const e={},n=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in t){const o=i;!r.includes(i)&&n.includes(typeof t[o])&&(e[o]=t[o])}return e}function Cs(t,e,n=!0){let r,i=a=>{};return function(...s){return new Promise((c,u)=>{const f=()=>{clearTimeout(r),i=l=>{},c(t(...s))};n&&i("debounced"),clearTimeout(r),i=u,r=setTimeout(f,e)})}}const k1=new Map;async function W5(t,e,n){const r=t.symbol;let i=k1.get(r)??await q5(t.symbol);return i?(k1.set(r,i),E`<div class="title"><strong>${i.name}</strong> ${i.description}</div><p class="summary">${i.summary}</p><p class="source">Source: NCBI RefSeq Gene</p>`):null}async function X5(t){console.log("Searching: "+t);const e={mode:"cors"},r=(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gene&term=${t}[GENE]&sort=relevance&retmode=json`,e).then(i=>i.json())).esearchresult.idlist[0];return r?(await fetch(`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gene&id=${r}&retmode=json`,e).then(a=>a.json())).result[r]:null}const Z5=Cs(X5,500);function q5(t){return Z5(t)}const K5=de(".4~r"),J5=de(".4~e");function N1(t){return t===null?E`<span class="na">NA</span>`:ne(t)?t.substring(0,30):Number.isInteger(t)?""+t:le(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?J5(t):K5(t):ra(t)?t?"True":"False":"?"+typeof t+" "+t}async function $5(t,e,n){const r=(c,u)=>{var f;for(const[l,d]of Object.entries(e.encoders))if((f=d==null?void 0:d.accessor)!=null&&f.fields.includes(c))switch(l){case"color":case"fill":case"stroke":return E`<span class="color-legend" style="${`background-color: ${d(u)}`}"></span>`}return""},i=Object.entries(t).filter(([c,u])=>!c.startsWith("_"));if(i.length===0)return;const o=E`<table class="attributes">${i.map(([c,u])=>E`<tr><th>${c}</th><td>${N1(u)} ${r(c,t)}</td></tr>`)}</table>`,a=e.unitView.getTitleText(),s=a?E`<div class="title"><strong>${a}</strong></div>`:"";return E`${s}${o}`}class e6 extends u1{constructor(e,n){super({vconcat:[]},e,void 0,"implicitRoot",1),n.parent=this,this.appendChild(n)}}X("index",Jc,["continuous"]),X("locus",Kx,["continuous"]),X("null",T1,[]),Wh("fasta",V5);class L1{constructor(e,n,r={}){this.container=e,this.spec=n,this.accessorFactory=new H3,this.viewFactory=new H8,this.namedDataProviders=[],this.animator=new z5(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=i=>i.isVisibleInSpec(),this._renderingContext=void 0,this._pickingContext=void 0,this._dirtyPickingBuffer=!1,this._currentHover=void 0,this._wheelInertia=new Y5(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers={default:$5,refseqgene:W5,...r.tooltipHandlers??{}},this.viewRoot=void 0}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedDataFromProvider(e){for(const n of this.namedDataProviders){const r=n(e);if(r)return r}}updateNamedData(e,n){const r=this.viewRoot.context.dataFlow.findNamedDataSource(e);if(!r)throw new Error("No such named data source: "+e);r.dataSource.updateDynamicData(n);for(const i of r.hosts)i.visit(o=>{for(const a of Object.values(o.resolutions.scale))a.reconfigure()});this.animator.requestRender()}broadcast(e,n){const r={type:e,payload:n};this.viewRoot.visit(i=>i.handleBroadcast(r))}_prepareContainer(){this.container.classList.add("genome-spy"),this.container.classList.add("loading"),this._glHelper=new rM(this.container,()=>{if(this.viewRoot){const e=this.viewRoot.getSize().addPadding(this.viewRoot.getOverhang()),n=r=>r.grow>0?void 0:r.px;return{width:n(e.width),height:n(e.height)}}}),this.loadingMessageElement=document.createElement("div"),this.loadingMessageElement.className="loading-message",this.loadingMessageElement.innerHTML='<div class="message">Loading<span class="ellipsis">...</span></div>',this.container.appendChild(this.loadingMessageElement),this.tooltip=new A4(this.container),this.loadingMessageElement.querySelector(".message").addEventListener("transitionend",()=>{this.loadingMessageElement.style.display="none"})}destroy(){this.container.classList.remove("genome-spy"),this.container.classList.remove("loading");for(const[e,n]of this._keyboardListeners)for(const r of n)document.removeEventListener(e,r);for(this._glHelper.finalize();this.container.firstChild;)this.container.firstChild.remove()}async _prepareViewsAndData(){this.spec.genome&&(this.genomeStore=new R5(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new A1,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new H5(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(s,c)=>{document.addEventListener(s,c);let u=this._keyboardListeners.get(s);u||(u=[],this._keyboardListeners.set(s,u)),u.push(c)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:s=>e.viewFactory.isViewSpec(s),createView:function(s,c,u){return e.viewFactory.createView(s,n,c,u)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(s=>r.datasets[s]),this.viewRoot=n.createView(r,null,"viewRoot"),await S1(this.viewRoot),(this.viewRoot instanceof pe||this.viewRoot instanceof Ot)&&(this.viewRoot=new e6(n,this.viewRoot)),C1(this.viewRoot),I5(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(s=>{s instanceof pe&&i.push(s)});const o=x1(this.viewRoot,n.dataFlow);T5(o),this.broadcast("dataFlowBuilt",o),o.dataSources.forEach(s=>console.log(s.subtreeToString())),i.forEach(s=>s.mark.initializeEncoders());const a=Promise.all(i.map(s=>s.mark.initializeGraphics()));for(const s of i)o.addObserver(c=>{s.mark.initializeData(),s.mark.updateGraphicsData()},s);await n.fontManager.waitUntilReady(),o.initialize(),await Promise.all(o.dataSources.map(s=>s.load())),this.viewRoot.visit(s=>{for(const c of Object.values(s.resolutions.scale))c.reconfigure()}),this.broadcast("dataLoaded"),await a,this.viewRoot.visit(s=>{for(const c of Object.values(s.resolutions.scale))this._glHelper.createRangeTexture(c)});for(const s of i)s.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(s=>fo(s,"size")),this._glHelper.invalidateSize()}async launch(){try{return this._prepareContainer(),await this._prepareViewsAndData(),this.registerMouseEvents(),this.computeLayout(),this.animator.requestRender(),this._glHelper.addEventListener("resize",()=>{this.computeLayout(),this.renderAll()}),!0}catch(e){const n=`${e.view?`At "${e.view.getPathString()}": `:""}${e.toString()}`;return console.error(e.stack),t6(this.container,n),!1}finally{this.container.classList.remove("loading"),window.setTimeout(()=>{this.loadingMessageElement.style.display="none"},2e3)}}registerMouseEvents(){const e=this._glHelper.canvas,n=r=>{var i;if(r instanceof MouseEvent){r.type=="mousemove"&&(this.tooltip.handleMouseMove(r),this._tooltipUpdateRequested=!1,r.buttons==0&&this.renderPickingFramebuffer());const o=e.getBoundingClientRect(),a=new F5(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),s=c=>{this.viewRoot.propagateInteractionEvent(new O5(a,c)),this._tooltipUpdateRequested||this.tooltip.clear()};if(r.type!="wheel"&&this._wheelInertia.cancel(),r.type=="mousemove")this._handlePicking(a.x,a.y);else if(r.type=="mousedown"||r.type=="mouseup")this.renderPickingFramebuffer();else if(r.type=="wheel"){this._tooltipUpdateRequested=!1;const c=r;if(Math.abs(c.deltaX)>Math.abs(c.deltaY))this._currentHover=null,this._wheelInertia.cancel();else{const u=_5(c);this._wheelInertia.setMomentum(c.deltaY*(c.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",{...u,deltaMode:0,deltaX:0,deltaY:f});s(l)}),c.preventDefault();return}}if(r.type=="click"){const c=this._currentHover?{type:r.type,viewPath:[...this._currentHover.mark.unitView.getAncestors()].map(u=>u.name).reverse(),datum:this._currentHover.datum}:{type:r.type,viewPath:null,datum:null};(i=this._eventListeners.get("click"))==null||i.forEach(u=>u(c))}s(r)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu"].forEach(r=>e.addEventListener(r,n)),e.addEventListener("mousedown",()=>{document.addEventListener("mouseup",()=>this.tooltip.popEnabledState(),{once:!0}),this.tooltip.pushEnabledState(!1)}),e.addEventListener("dragstart",r=>r.stopPropagation())}_handlePicking(e,n){var o;const r=this._glHelper.readPickingPixel(e,n),i=r[0]|r[1]<<8|r[2]<<16;if(i==0){this._currentHover=null;return}if(i!==((o=this._currentHover)==null?void 0:o.uniqueId)&&(this._currentHover=null),this._currentHover||this.viewRoot.visit(a=>{if(a instanceof pe){if(a.mark.isPickingParticipant()){const s=a.mark.encoders.uniqueId.accessor;a.getCollector().visitData(c=>{s(c)==i&&(this._currentHover={mark:a.mark,datum:c,uniqueId:i})})}if(this._currentHover)return tr}}),this._currentHover){const a=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async s=>{if(!a.isPickingParticipant())return;const c=a.properties.tooltip;if(c!==null){const u=(c==null?void 0:c.handler)??"default",f=this.tooltipHandlers[u];if(!f)throw new Error("No such tooltip handler: "+u);return f(s,a,c==null?void 0:c.params)}})}}updateTooltip(e,n){if(!this._tooltipUpdateRequested||!e)this.tooltip.updateWithDatum(e,n),this._tooltipUpdateRequested=!0;else throw new Error("Tooltip has already been updated! Duplicate event handler?")}computeLayout(){const e=this.viewRoot;if(!e)return;this.broadcast("layout");const n=this._glHelper.getLogicalCanvasSize();if(isNaN(n.width)||isNaN(n.height)){console.log(`NaN in canvas size: ${n.width}x${n.height}. Skipping computeLayout().`);return}this._renderingContext=new M1({picking:!1},this._glHelper),this._pickingContext=new M1({picking:!0},this._glHelper),e.render(new B5(this._renderingContext,this._pickingContext),dn.create(0,0,n.width,n.height)),this.broadcast("layoutComputed")}renderAll(){var e;(e=this._renderingContext)==null||e.renderDeferred(),this._dirtyPickingBuffer=!0}renderPickingFramebuffer(){this._dirtyPickingBuffer&&(this._pickingContext.renderDeferred(),this._dirtyPickingBuffer=!1)}getSearchableViews(){const e=[];return this.viewRoot.visit(n=>{n instanceof pe&&n.getAccessor("search")&&e.push(n)}),e}getNamedScaleResolutions(){const e=new Map;return this.viewRoot.visit(n=>{for(const r of Object.values(n.resolutions.scale))r.name&&e.set(r.name,r)}),e}}function t6(t,e){const n=document.createElement("div");n.className="message-box";const r=document.createElement("div");r.textContent=e,n.appendChild(r),t.appendChild(n)}const _N="",n6="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";/**
|
1355
1364
|
* @license
|
1356
1365
|
* Copyright 2019 Google LLC
|
1357
1366
|
* SPDX-License-Identifier: BSD-3-Clause
|
1358
|
-
*/const
|
1367
|
+
*/const Ss=window,Jl=Ss.ShadowRoot&&(Ss.ShadyCSS===void 0||Ss.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,B1=Symbol(),O1=new WeakMap;let r6=class{constructor(e,n,r){if(this._$cssResult$=!0,r!==B1)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=n}get styleSheet(){let e=this.o;const n=this.t;if(Jl&&e===void 0){const r=n!==void 0&&n.length===1;r&&(e=O1.get(n)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),r&&O1.set(n,e))}return e}toString(){return this.cssText}};const i6=t=>new r6(typeof t=="string"?t:t+"",void 0,B1),o6=(t,e)=>{Jl?t.adoptedStyleSheets=e.map(n=>n instanceof CSSStyleSheet?n:n.styleSheet):e.forEach(n=>{const r=document.createElement("style"),i=Ss.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=n.cssText,t.appendChild(r)})},F1=Jl?t=>t:t=>t instanceof CSSStyleSheet?(e=>{let n="";for(const r of e.cssRules)n+=r.cssText;return i6(n)})(t):t;/**
|
1359
1368
|
* @license
|
1360
1369
|
* Copyright 2017 Google LLC
|
1361
1370
|
* SPDX-License-Identifier: BSD-3-Clause
|
1362
|
-
*/var
|
1371
|
+
*/var $l;const Es=window,P1=Es.trustedTypes,a6=P1?P1.emptyScript:"",z1=Es.reactiveElementPolyfillSupport,ef={toAttribute(t,e){switch(e){case Boolean:t=t?a6:null;break;case Object:case Array:t=t==null?t:JSON.stringify(t)}return t},fromAttribute(t,e){let n=t;switch(e){case Boolean:n=t!==null;break;case Number:n=t===null?null:Number(t);break;case Object:case Array:try{n=JSON.parse(t)}catch{n=null}}return n}},R1=(t,e)=>e!==t&&(e==e||t==t),tf={attribute:!0,type:String,converter:ef,reflect:!1,hasChanged:R1};let Xr=class extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(e){var n;(n=this.h)!==null&&n!==void 0||(this.h=[]),this.h.push(e)}static get observedAttributes(){this.finalize();const e=[];return this.elementProperties.forEach((n,r)=>{const i=this._$Ep(r,n);i!==void 0&&(this._$Ev.set(i,r),e.push(i))}),e}static createProperty(e,n=tf){if(n.state&&(n.attribute=!1),this.finalize(),this.elementProperties.set(e,n),!n.noAccessor&&!this.prototype.hasOwnProperty(e)){const r=typeof e=="symbol"?Symbol():"__"+e,i=this.getPropertyDescriptor(e,r,n);i!==void 0&&Object.defineProperty(this.prototype,e,i)}}static getPropertyDescriptor(e,n,r){return{get(){return this[n]},set(i){const o=this[e];this[n]=i,this.requestUpdate(e,o,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)||tf}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const e=Object.getPrototypeOf(this);if(e.finalize(),this.elementProperties=new Map(e.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const n=this.properties,r=[...Object.getOwnPropertyNames(n),...Object.getOwnPropertySymbols(n)];for(const i of r)this.createProperty(i,n[i])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(e){const n=[];if(Array.isArray(e)){const r=new Set(e.flat(1/0).reverse());for(const i of r)n.unshift(F1(i))}else e!==void 0&&n.push(F1(e));return n}static _$Ep(e,n){const r=n.attribute;return r===!1?void 0:typeof r=="string"?r:typeof e=="string"?e.toLowerCase():void 0}u(){var e;this._$E_=new Promise(n=>this.enableUpdating=n),this._$AL=new Map,this._$Eg(),this.requestUpdate(),(e=this.constructor.h)===null||e===void 0||e.forEach(n=>n(this))}addController(e){var n,r;((n=this._$ES)!==null&&n!==void 0?n:this._$ES=[]).push(e),this.renderRoot!==void 0&&this.isConnected&&((r=e.hostConnected)===null||r===void 0||r.call(e))}removeController(e){var n;(n=this._$ES)===null||n===void 0||n.splice(this._$ES.indexOf(e)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach((e,n)=>{this.hasOwnProperty(n)&&(this._$Ei.set(n,this[n]),delete this[n])})}createRenderRoot(){var e;const n=(e=this.shadowRoot)!==null&&e!==void 0?e:this.attachShadow(this.constructor.shadowRootOptions);return o6(n,this.constructor.elementStyles),n}connectedCallback(){var e;this.renderRoot===void 0&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(e=this._$ES)===null||e===void 0||e.forEach(n=>{var r;return(r=n.hostConnected)===null||r===void 0?void 0:r.call(n)})}enableUpdating(e){}disconnectedCallback(){var e;(e=this._$ES)===null||e===void 0||e.forEach(n=>{var r;return(r=n.hostDisconnected)===null||r===void 0?void 0:r.call(n)})}attributeChangedCallback(e,n,r){this._$AK(e,r)}_$EO(e,n,r=tf){var i;const o=this.constructor._$Ep(e,r);if(o!==void 0&&r.reflect===!0){const a=(((i=r.converter)===null||i===void 0?void 0:i.toAttribute)!==void 0?r.converter:ef).toAttribute(n,r.type);this._$El=e,a==null?this.removeAttribute(o):this.setAttribute(o,a),this._$El=null}}_$AK(e,n){var r;const i=this.constructor,o=i._$Ev.get(e);if(o!==void 0&&this._$El!==o){const a=i.getPropertyOptions(o),s=typeof a.converter=="function"?{fromAttribute:a.converter}:((r=a.converter)===null||r===void 0?void 0:r.fromAttribute)!==void 0?a.converter:ef;this._$El=o,this[o]=s.fromAttribute(n,a.type),this._$El=null}}requestUpdate(e,n,r){let i=!0;e!==void 0&&(((r=r||this.constructor.getPropertyOptions(e)).hasChanged||R1)(this[e],n)?(this._$AL.has(e)||this._$AL.set(e,n),r.reflect===!0&&this._$El!==e&&(this._$EC===void 0&&(this._$EC=new Map),this._$EC.set(e,r))):i=!1),!this.isUpdatePending&&i&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(n){Promise.reject(n)}const e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var e;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach((i,o)=>this[o]=i),this._$Ei=void 0);let n=!1;const r=this._$AL;try{n=this.shouldUpdate(r),n?(this.willUpdate(r),(e=this._$ES)===null||e===void 0||e.forEach(i=>{var o;return(o=i.hostUpdate)===null||o===void 0?void 0:o.call(i)}),this.update(r)):this._$Ek()}catch(i){throw n=!1,this._$Ek(),i}n&&this._$AE(r)}willUpdate(e){}_$AE(e){var n;(n=this._$ES)===null||n===void 0||n.forEach(r=>{var i;return(i=r.hostUpdated)===null||i===void 0?void 0:i.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(e){return!0}update(e){this._$EC!==void 0&&(this._$EC.forEach((n,r)=>this._$EO(r,this[r],n)),this._$EC=void 0),this._$Ek()}updated(e){}firstUpdated(e){}};Xr.finalized=!0,Xr.elementProperties=new Map,Xr.elementStyles=[],Xr.shadowRootOptions={mode:"open"},z1==null||z1({ReactiveElement:Xr}),(($l=Es.reactiveElementVersions)!==null&&$l!==void 0?$l:Es.reactiveElementVersions=[]).push("1.4.1");/**
|
1363
1372
|
* @license
|
1364
1373
|
* Copyright 2017 Google LLC
|
1365
1374
|
* SPDX-License-Identifier: BSD-3-Clause
|
1366
|
-
*/var
|
1375
|
+
*/var nf,rf;let yt=class extends Xr{constructor(){super(...arguments),this.renderOptions={host:this},this._$Dt=void 0}createRenderRoot(){var e,n;const r=super.createRenderRoot();return(e=(n=this.renderOptions).renderBefore)!==null&&e!==void 0||(n.renderBefore=r.firstChild),r}update(e){const n=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Dt=Be(n,this.renderRoot,this.renderOptions)}connectedCallback(){var e;super.connectedCallback(),(e=this._$Dt)===null||e===void 0||e.setConnected(!0)}disconnectedCallback(){var e;super.disconnectedCallback(),(e=this._$Dt)===null||e===void 0||e.setConnected(!1)}render(){return Ae}};yt.finalized=!0,yt._$litElement$=!0,(nf=globalThis.litElementHydrateSupport)===null||nf===void 0||nf.call(globalThis,{LitElement:yt});const j1=globalThis.litElementPolyfillSupport;j1==null||j1({LitElement:yt}),((rf=globalThis.litElementVersions)!==null&&rf!==void 0?rf:globalThis.litElementVersions=[]).push("3.2.0");/**
|
1367
1376
|
* @license
|
1368
1377
|
* Copyright 2017 Google LLC
|
1369
1378
|
* SPDX-License-Identifier: BSD-3-Clause
|
1370
|
-
*/const vt={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},or=t=>(...e)=>({_$litDirective$:t,values:e});let
|
1379
|
+
*/const vt={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},or=t=>(...e)=>({_$litDirective$:t,values:e});let Zr=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,n,r){this._$Ct=e,this._$AM=n,this._$Ci=r}_$AS(e,n){return this.update(e,n)}update(e,n){return this.render(...n)}};/**
|
1371
1380
|
* @license
|
1372
1381
|
* Copyright 2018 Google LLC
|
1373
1382
|
* SPDX-License-Identifier: BSD-3-Clause
|
1374
|
-
*/const
|
1383
|
+
*/const of=or(class extends Zr{constructor(t){var e;if(super(t),t.type!==vt.ATTRIBUTE||t.name!=="class"||((e=t.strings)===null||e===void 0?void 0:e.length)>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(t){return" "+Object.keys(t).filter(e=>t[e]).join(" ")+" "}update(t,[e]){var n,r;if(this.nt===void 0){this.nt=new Set,t.strings!==void 0&&(this.st=new Set(t.strings.join(" ").split(/\s/).filter(o=>o!=="")));for(const o in e)e[o]&&!(!((n=this.st)===null||n===void 0)&&n.has(o))&&this.nt.add(o);return this.render(e)}const i=t.element.classList;this.nt.forEach(o=>{o in e||(i.remove(o),this.nt.delete(o))});for(const o in e){const a=!!e[o];a===this.nt.has(o)||!((r=this.st)===null||r===void 0)&&r.has(o)||(a?(i.add(o),this.nt.add(o)):(i.remove(o),this.nt.delete(o)))}return Ae}});/*!
|
1375
1384
|
* Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com
|
1376
1385
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
1377
1386
|
* Copyright 2022 Fonticons, Inc.
|
1378
|
-
*/var o6={prefix:"fas",iconName:"arrow-down-wide-short",icon:[576,512,["sort-amount-asc","sort-amount-down"],"f160","M416 288h-95.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H416c17.67 0 32-14.33 32-32S433.7 288 416 288zM544 32h-223.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H544c17.67 0 32-14.33 32-32S561.7 32 544 32zM352 416h-32c-17.67 0-32 14.33-32 32s14.33 32 32 32h32c17.67 0 31.1-14.33 31.1-32S369.7 416 352 416zM480 160h-159.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H480c17.67 0 32-14.33 32-32S497.7 160 480 160zM192.4 330.7L160 366.1V64.03C160 46.33 145.7 32 128 32S96 46.33 96 64.03v302L63.6 330.7c-6.312-6.883-14.94-10.38-23.61-10.38c-7.719 0-15.47 2.781-21.61 8.414c-13.03 11.95-13.9 32.22-1.969 45.27l87.1 96.09c12.12 13.26 35.06 13.26 47.19 0l87.1-96.09c11.94-13.05 11.06-33.31-1.969-45.27C224.6 316.8 204.4 317.7 192.4 330.7z"]},a6=o6,s6={prefix:"fas",iconName:"arrow-rotate-left",icon:[512,512,[8634,"arrow-left-rotate","arrow-rotate-back","arrow-rotate-backward","undo"],"f0e2","M480 256c0 123.4-100.5 223.9-223.9 223.9c-48.86 0-95.19-15.58-134.2-44.86c-14.14-10.59-17-30.66-6.391-44.81c10.61-14.09 30.69-16.97 44.8-6.375c27.84 20.91 61 31.94 95.89 31.94C344.3 415.8 416 344.1 416 256s-71.67-159.8-159.8-159.8C205.9 96.22 158.6 120.3 128.6 160H192c17.67 0 32 14.31 32 32S209.7 224 192 224H48c-17.67 0-32-14.31-32-32V48c0-17.69 14.33-32 32-32s32 14.31 32 32v70.23C122.1 64.58 186.1 32.11 256.1 32.11C379.5 32.11 480 132.6 480 256z"]},c6=s6,u6={prefix:"fas",iconName:"arrow-rotate-right",icon:[512,512,[8635,"arrow-right-rotate","arrow-rotate-forward","redo"],"f01e","M496 48V192c0 17.69-14.31 32-32 32H320c-17.69 0-32-14.31-32-32s14.31-32 32-32h63.39c-29.97-39.7-77.25-63.78-127.6-63.78C167.7 96.22 96 167.9 96 256s71.69 159.8 159.8 159.8c34.88 0 68.03-11.03 95.88-31.94c14.22-10.53 34.22-7.75 44.81 6.375c10.59 14.16 7.75 34.22-6.375 44.81c-39.03 29.28-85.36 44.86-134.2 44.86C132.5 479.9 32 379.4 32 256s100.5-223.9 223.9-223.9c69.15 0 134 32.47 176.1 86.12V48c0-17.69 14.31-32 32-32S496 30.31 496 48z"]},l6=u6,f6={prefix:"fas",iconName:"arrow-up",icon:[384,512,[8593],"f062","M374.6 246.6C368.4 252.9 360.2 256 352 256s-16.38-3.125-22.62-9.375L224 141.3V448c0 17.69-14.33 31.1-31.1 31.1S160 465.7 160 448V141.3L54.63 246.6c-12.5 12.5-32.75 12.5-45.25 0s-12.5-32.75 0-45.25l160-160c12.5-12.5 32.75-12.5 45.25 0l160 160C387.1 213.9 387.1 234.1 374.6 246.6z"]},d6={prefix:"fas",iconName:"backward-step",icon:[320,512,["step-backward"],"f048","M31.1 64.03c-17.67 0-31.1 14.33-31.1 32v319.9c0 17.67 14.33 32 32 32C49.67 447.1 64 433.6 64 415.1V96.03C64 78.36 49.67 64.03 31.1 64.03zM267.5 71.41l-192 159.1C67.82 237.8 64 246.9 64 256c0 9.094 3.82 18.18 11.44 24.62l192 159.1c20.63 17.12 52.51 2.75 52.51-24.62v-319.9C319.1 68.66 288.1 54.28 267.5 71.41z"]},h6=d6,j1={prefix:"fas",iconName:"bookmark",icon:[384,512,[61591,128278],"f02e","M384 48V512l-192-112L0 512V48C0 21.5 21.5 0 48 0h288C362.5 0 384 21.5 384 48z"]},p6={prefix:"fas",iconName:"check",icon:[448,512,[10004,10003],"f00c","M438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L182.6 406.6C170.1 419.1 149.9 419.1 137.4 406.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4C21.87 220.9 42.13 220.9 54.63 233.4L159.1 338.7L393.4 105.4C405.9 92.88 426.1 92.88 438.6 105.4H438.6z"]},m6={prefix:"fas",iconName:"chevron-down",icon:[448,512,[],"f078","M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"]},U1={prefix:"fas",iconName:"circle",icon:[512,512,[128308,128309,128992,128993,128994,128995,128996,9898,9899,11044,61708,61915,9679],"f111","M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256z"]},g6={prefix:"fas",iconName:"circle-exclamation",icon:[512,512,["exclamation-circle"],"f06a","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM232 152C232 138.8 242.8 128 256 128s24 10.75 24 24v128c0 13.25-10.75 24-24 24S232 293.3 232 280V152zM256 400c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 385.9 273.4 400 256 400z"]},y6=g6,v6={prefix:"fas",iconName:"circle-info",icon:[512,512,["info-circle"],"f05a","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"]},H1=v6,b6={prefix:"fas",iconName:"circle-question",icon:[512,512,[62108,"question-circle"],"f059","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 400c-18 0-32-14-32-32s13.1-32 32-32c17.1 0 32 14 32 32S273.1 400 256 400zM325.1 258L280 286V288c0 13-11 24-24 24S232 301 232 288V272c0-8 4-16 12-21l57-34C308 213 312 206 312 198C312 186 301.1 176 289.1 176h-51.1C225.1 176 216 186 216 198c0 13-11 24-24 24s-24-11-24-24C168 159 199 128 237.1 128h51.1C329 128 360 159 360 198C360 222 347 245 325.1 258z"]},A6=b6,x6={prefix:"fas",iconName:"ellipsis",icon:[448,512,["ellipsis-h"],"f141","M120 256C120 286.9 94.93 312 64 312C33.07 312 8 286.9 8 256C8 225.1 33.07 200 64 200C94.93 200 120 225.1 120 256zM280 256C280 286.9 254.9 312 224 312C193.1 312 168 286.9 168 256C168 225.1 193.1 200 224 200C254.9 200 280 225.1 280 256zM328 256C328 225.1 353.1 200 384 200C414.9 200 440 225.1 440 256C440 286.9 414.9 312 384 312C353.1 312 328 286.9 328 256z"]},w6=x6,C6={prefix:"fas",iconName:"ellipsis-vertical",icon:[128,512,["ellipsis-v"],"f142","M64 360C94.93 360 120 385.1 120 416C120 446.9 94.93 472 64 472C33.07 472 8 446.9 8 416C8 385.1 33.07 360 64 360zM64 200C94.93 200 120 225.1 120 256C120 286.9 94.93 312 64 312C33.07 312 8 286.9 8 256C8 225.1 33.07 200 64 200zM64 152C33.07 152 8 126.9 8 96C8 65.07 33.07 40 64 40C94.93 40 120 65.07 120 96C120 126.9 94.93 152 64 152z"]},S6=C6,ar={prefix:"fas",iconName:"filter",icon:[512,512,[],"f0b0","M3.853 54.87C10.47 40.9 24.54 32 40 32H472C487.5 32 501.5 40.9 508.1 54.87C514.8 68.84 512.7 85.37 502.1 97.33L320 320.9V448C320 460.1 313.2 471.2 302.3 476.6C291.5 482 278.5 480.9 268.8 473.6L204.8 425.6C196.7 419.6 192 410.1 192 400V320.9L9.042 97.33C-.745 85.37-2.765 68.84 3.854 54.87L3.853 54.87z"]},E6={prefix:"fas",iconName:"forward-step",icon:[320,512,["step-forward"],"f051","M287.1 447.1c17.67 0 31.1-14.33 31.1-32V96.03c0-17.67-14.33-32-32-32c-17.67 0-31.1 14.33-31.1 31.1v319.9C255.1 433.6 270.3 447.1 287.1 447.1zM52.51 440.6l192-159.1c7.625-6.436 11.43-15.53 11.43-24.62c0-9.094-3.809-18.18-11.43-24.62l-192-159.1C31.88 54.28 0 68.66 0 96.03v319.9C0 443.3 31.88 457.7 52.51 440.6z"]},D6=E6,M6={prefix:"fas",iconName:"maximize",icon:[448,512,["expand-arrows-alt"],"f31e","M447.1 319.1v135.1c0 13.26-10.75 23.1-23.1 23.1h-135.1c-12.94 0-24.61-7.781-29.56-19.75c-4.906-11.1-2.203-25.72 6.937-34.87l30.06-30.06L224 323.9l-71.43 71.44l30.06 30.06c9.156 9.156 11.91 22.91 6.937 34.87C184.6 472.2 172.9 479.1 160 479.1H24c-13.25 0-23.1-10.74-23.1-23.1v-135.1c0-12.94 7.781-24.61 19.75-29.56C23.72 288.8 27.88 288 32 288c8.312 0 16.5 3.242 22.63 9.367l30.06 30.06l71.44-71.44L84.69 184.6L54.63 214.6c-9.156 9.156-22.91 11.91-34.87 6.937C7.798 216.6 .0013 204.9 .0013 191.1v-135.1c0-13.26 10.75-23.1 23.1-23.1h135.1c12.94 0 24.61 7.781 29.56 19.75C191.2 55.72 191.1 59.87 191.1 63.1c0 8.312-3.237 16.5-9.362 22.63L152.6 116.7l71.44 71.44l71.43-71.44l-30.06-30.06c-9.156-9.156-11.91-22.91-6.937-34.87c4.937-11.95 16.62-19.75 29.56-19.75h135.1c13.26 0 23.1 10.75 23.1 23.1v135.1c0 12.94-7.781 24.61-19.75 29.56c-11.1 4.906-25.72 2.203-34.87-6.937l-30.06-30.06l-71.43 71.43l71.44 71.44l30.06-30.06c9.156-9.156 22.91-11.91 34.87-6.937C440.2 295.4 447.1 307.1 447.1 319.1z"]},T6=M6,G1={prefix:"fas",iconName:"medal",icon:[512,512,[127941],"f5a2","M223.7 130.8L149.1 7.77C147.1 2.949 141.9 0 136.3 0H16.03c-12.95 0-20.53 14.58-13.1 25.18l111.3 158.9C143.9 156.4 181.7 137.3 223.7 130.8zM256 160c-97.25 0-176 78.75-176 176S158.8 512 256 512s176-78.75 176-176S353.3 160 256 160zM348.5 317.3l-37.88 37l8.875 52.25c1.625 9.25-8.25 16.5-16.63 12l-46.88-24.62L209.1 418.5c-8.375 4.5-18.25-2.75-16.63-12l8.875-52.25l-37.88-37C156.6 310.6 160.5 299 169.9 297.6l52.38-7.625L245.7 242.5c2-4.25 6.125-6.375 10.25-6.375S264.2 238.3 266.2 242.5l23.5 47.5l52.38 7.625C351.6 299 355.4 310.6 348.5 317.3zM495.1 0H375.7c-5.621 0-10.83 2.949-13.72 7.77l-73.76 122.1c42 6.5 79.88 25.62 109.5 53.38l111.3-158.9C516.5 14.58 508.9 0 495.1 0z"]},xo={prefix:"fas",iconName:"object-group",icon:[576,512,[],"f247","M128 160C128 142.3 142.3 128 160 128H288C305.7 128 320 142.3 320 160V256C320 273.7 305.7 288 288 288H160C142.3 288 128 273.7 128 256V160zM288 320C323.3 320 352 291.3 352 256V224H416C433.7 224 448 238.3 448 256V352C448 369.7 433.7 384 416 384H288C270.3 384 256 369.7 256 352V320H288zM32 119.4C12.87 108.4 0 87.69 0 64C0 28.65 28.65 0 64 0C87.69 0 108.4 12.87 119.4 32H456.6C467.6 12.87 488.3 0 512 0C547.3 0 576 28.65 576 64C576 87.69 563.1 108.4 544 119.4V392.6C563.1 403.6 576 424.3 576 448C576 483.3 547.3 512 512 512C488.3 512 467.6 499.1 456.6 480H119.4C108.4 499.1 87.69 512 64 512C28.65 512 0 483.3 0 448C0 424.3 12.87 403.6 32 392.6V119.4zM119.4 96C113.8 105.7 105.7 113.8 96 119.4V392.6C105.7 398.2 113.8 406.3 119.4 416H456.6C462.2 406.3 470.3 398.2 480 392.6V119.4C470.3 113.8 462.2 105.7 456.6 96H119.4z"]},I6={prefix:"fas",iconName:"pen",icon:[512,512,[128394],"f304","M362.7 19.32C387.7-5.678 428.3-5.678 453.3 19.32L492.7 58.75C517.7 83.74 517.7 124.3 492.7 149.3L444.3 197.7L314.3 67.72L362.7 19.32zM421.7 220.3L188.5 453.4C178.1 463.8 165.2 471.5 151.1 475.6L30.77 511C22.35 513.5 13.24 511.2 7.03 504.1C.8198 498.8-1.502 489.7 .976 481.2L36.37 360.9C40.53 346.8 48.16 333.9 58.57 323.5L291.7 90.34L421.7 220.3z"]},of={prefix:"fas",iconName:"share",icon:[512,512,["arrow-turn-right","mail-forward"],"f064","M503.7 226.2l-176 151.1c-15.38 13.3-39.69 2.545-39.69-18.16V272.1C132.9 274.3 66.06 312.8 111.4 457.8c5.031 16.09-14.41 28.56-28.06 18.62C39.59 444.6 0 383.8 0 322.3c0-152.2 127.4-184.4 288-186.3V56.02c0-20.67 24.28-31.46 39.69-18.16l176 151.1C514.8 199.4 514.8 216.6 503.7 226.2z"]},k6={prefix:"fas",iconName:"sliders",icon:[512,512,["sliders-h"],"f1de","M0 416C0 398.3 14.33 384 32 384H86.66C99 355.7 127.2 336 160 336C192.8 336 220.1 355.7 233.3 384H480C497.7 384 512 398.3 512 416C512 433.7 497.7 448 480 448H233.3C220.1 476.3 192.8 496 160 496C127.2 496 99 476.3 86.66 448H32C14.33 448 0 433.7 0 416V416zM192 416C192 398.3 177.7 384 160 384C142.3 384 128 398.3 128 416C128 433.7 142.3 448 160 448C177.7 448 192 433.7 192 416zM352 176C384.8 176 412.1 195.7 425.3 224H480C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H425.3C412.1 316.3 384.8 336 352 336C319.2 336 291 316.3 278.7 288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H278.7C291 195.7 319.2 176 352 176zM384 256C384 238.3 369.7 224 352 224C334.3 224 320 238.3 320 256C320 273.7 334.3 288 352 288C369.7 288 384 273.7 384 256zM480 64C497.7 64 512 78.33 512 96C512 113.7 497.7 128 480 128H265.3C252.1 156.3 224.8 176 192 176C159.2 176 131 156.3 118.7 128H32C14.33 128 0 113.7 0 96C0 78.33 14.33 64 32 64H118.7C131 35.75 159.2 16 192 16C224.8 16 252.1 35.75 265.3 64H480zM160 96C160 113.7 174.3 128 192 128C209.7 128 224 113.7 224 96C224 78.33 209.7 64 192 64C174.3 64 160 78.33 160 96z"]},N6=k6,Q1={prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69zM394.8 466.1C393.2 492.3 372.3 512 346.9 512H101.1C75.75 512 54.77 492.3 53.19 466.1L31.1 128H416L394.8 466.1z"]},L6={prefix:"fas",iconName:"trash-can",icon:[448,512,[61460,"trash-alt"],"f2ed","M135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69zM31.1 128H416V448C416 483.3 387.3 512 352 512H95.1C60.65 512 31.1 483.3 31.1 448V128zM111.1 208V432C111.1 440.8 119.2 448 127.1 448C136.8 448 143.1 440.8 143.1 432V208C143.1 199.2 136.8 192 127.1 192C119.2 192 111.1 199.2 111.1 208zM207.1 208V432C207.1 440.8 215.2 448 223.1 448C232.8 448 240 440.8 240 432V208C240 199.2 232.8 192 223.1 192C215.2 192 207.1 199.2 207.1 208zM304 208V432C304 440.8 311.2 448 320 448C328.8 448 336 440.8 336 432V208C336 199.2 328.8 192 320 192C311.2 192 304 199.2 304 208z"]},Es=L6,B6={prefix:"fas",iconName:"up-down",icon:[256,512,[11021,8597,"arrows-alt-v"],"f338","M249.6 392.3l-104 112c-9.094 9.781-26.09 9.781-35.19 0l-103.1-112c-6.484-6.984-8.219-17.17-4.406-25.92S14.45 352 24 352H80V160H24C14.45 160 5.812 154.3 1.999 145.6C-1.813 136.8-.0781 126.7 6.406 119.7l104-112c9.094-9.781 26.09-9.781 35.19 0l104 112c6.484 6.984 8.219 17.17 4.406 25.92C250.2 154.3 241.5 160 232 160H176v192h56c9.547 0 18.19 5.656 22 14.41S256.1 385.3 249.6 392.3z"]},O6=B6,F6={prefix:"fas",iconName:"xmark",icon:[320,512,[128473,10005,10006,10060,215,"close","multiply","remove","times"],"f00d","M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"]};/*!
|
1387
|
+
*/var s6={prefix:"fas",iconName:"arrow-down-wide-short",icon:[576,512,["sort-amount-asc","sort-amount-down"],"f160","M416 288h-95.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H416c17.67 0 32-14.33 32-32S433.7 288 416 288zM544 32h-223.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H544c17.67 0 32-14.33 32-32S561.7 32 544 32zM352 416h-32c-17.67 0-32 14.33-32 32s14.33 32 32 32h32c17.67 0 31.1-14.33 31.1-32S369.7 416 352 416zM480 160h-159.1c-17.67 0-32 14.33-32 32s14.33 32 32 32H480c17.67 0 32-14.33 32-32S497.7 160 480 160zM192.4 330.7L160 366.1V64.03C160 46.33 145.7 32 128 32S96 46.33 96 64.03v302L63.6 330.7c-6.312-6.883-14.94-10.38-23.61-10.38c-7.719 0-15.47 2.781-21.61 8.414c-13.03 11.95-13.9 32.22-1.969 45.27l87.1 96.09c12.12 13.26 35.06 13.26 47.19 0l87.1-96.09c11.94-13.05 11.06-33.31-1.969-45.27C224.6 316.8 204.4 317.7 192.4 330.7z"]},c6=s6,u6={prefix:"fas",iconName:"arrow-rotate-left",icon:[512,512,[8634,"arrow-left-rotate","arrow-rotate-back","arrow-rotate-backward","undo"],"f0e2","M480 256c0 123.4-100.5 223.9-223.9 223.9c-48.86 0-95.19-15.58-134.2-44.86c-14.14-10.59-17-30.66-6.391-44.81c10.61-14.09 30.69-16.97 44.8-6.375c27.84 20.91 61 31.94 95.89 31.94C344.3 415.8 416 344.1 416 256s-71.67-159.8-159.8-159.8C205.9 96.22 158.6 120.3 128.6 160H192c17.67 0 32 14.31 32 32S209.7 224 192 224H48c-17.67 0-32-14.31-32-32V48c0-17.69 14.33-32 32-32s32 14.31 32 32v70.23C122.1 64.58 186.1 32.11 256.1 32.11C379.5 32.11 480 132.6 480 256z"]},l6=u6,f6={prefix:"fas",iconName:"arrow-rotate-right",icon:[512,512,[8635,"arrow-right-rotate","arrow-rotate-forward","redo"],"f01e","M496 48V192c0 17.69-14.31 32-32 32H320c-17.69 0-32-14.31-32-32s14.31-32 32-32h63.39c-29.97-39.7-77.25-63.78-127.6-63.78C167.7 96.22 96 167.9 96 256s71.69 159.8 159.8 159.8c34.88 0 68.03-11.03 95.88-31.94c14.22-10.53 34.22-7.75 44.81 6.375c10.59 14.16 7.75 34.22-6.375 44.81c-39.03 29.28-85.36 44.86-134.2 44.86C132.5 479.9 32 379.4 32 256s100.5-223.9 223.9-223.9c69.15 0 134 32.47 176.1 86.12V48c0-17.69 14.31-32 32-32S496 30.31 496 48z"]},d6=f6,h6={prefix:"fas",iconName:"arrow-up",icon:[384,512,[8593],"f062","M374.6 246.6C368.4 252.9 360.2 256 352 256s-16.38-3.125-22.62-9.375L224 141.3V448c0 17.69-14.33 31.1-31.1 31.1S160 465.7 160 448V141.3L54.63 246.6c-12.5 12.5-32.75 12.5-45.25 0s-12.5-32.75 0-45.25l160-160c12.5-12.5 32.75-12.5 45.25 0l160 160C387.1 213.9 387.1 234.1 374.6 246.6z"]},p6={prefix:"fas",iconName:"backward-step",icon:[320,512,["step-backward"],"f048","M31.1 64.03c-17.67 0-31.1 14.33-31.1 32v319.9c0 17.67 14.33 32 32 32C49.67 447.1 64 433.6 64 415.1V96.03C64 78.36 49.67 64.03 31.1 64.03zM267.5 71.41l-192 159.1C67.82 237.8 64 246.9 64 256c0 9.094 3.82 18.18 11.44 24.62l192 159.1c20.63 17.12 52.51 2.75 52.51-24.62v-319.9C319.1 68.66 288.1 54.28 267.5 71.41z"]},m6=p6,U1={prefix:"fas",iconName:"bookmark",icon:[384,512,[61591,128278],"f02e","M384 48V512l-192-112L0 512V48C0 21.5 21.5 0 48 0h288C362.5 0 384 21.5 384 48z"]},g6={prefix:"fas",iconName:"check",icon:[448,512,[10004,10003],"f00c","M438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L182.6 406.6C170.1 419.1 149.9 419.1 137.4 406.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4C21.87 220.9 42.13 220.9 54.63 233.4L159.1 338.7L393.4 105.4C405.9 92.88 426.1 92.88 438.6 105.4H438.6z"]},y6={prefix:"fas",iconName:"chevron-down",icon:[448,512,[],"f078","M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"]},H1={prefix:"fas",iconName:"circle",icon:[512,512,[128308,128309,128992,128993,128994,128995,128996,9898,9899,11044,61708,61915,9679],"f111","M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256z"]},v6={prefix:"fas",iconName:"circle-exclamation",icon:[512,512,["exclamation-circle"],"f06a","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM232 152C232 138.8 242.8 128 256 128s24 10.75 24 24v128c0 13.25-10.75 24-24 24S232 293.3 232 280V152zM256 400c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 385.9 273.4 400 256 400z"]},b6=v6,A6={prefix:"fas",iconName:"circle-info",icon:[512,512,["info-circle"],"f05a","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"]},G1=A6,x6={prefix:"fas",iconName:"circle-question",icon:[512,512,[62108,"question-circle"],"f059","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 400c-18 0-32-14-32-32s13.1-32 32-32c17.1 0 32 14 32 32S273.1 400 256 400zM325.1 258L280 286V288c0 13-11 24-24 24S232 301 232 288V272c0-8 4-16 12-21l57-34C308 213 312 206 312 198C312 186 301.1 176 289.1 176h-51.1C225.1 176 216 186 216 198c0 13-11 24-24 24s-24-11-24-24C168 159 199 128 237.1 128h51.1C329 128 360 159 360 198C360 222 347 245 325.1 258z"]},w6=x6,C6={prefix:"fas",iconName:"ellipsis",icon:[448,512,["ellipsis-h"],"f141","M120 256C120 286.9 94.93 312 64 312C33.07 312 8 286.9 8 256C8 225.1 33.07 200 64 200C94.93 200 120 225.1 120 256zM280 256C280 286.9 254.9 312 224 312C193.1 312 168 286.9 168 256C168 225.1 193.1 200 224 200C254.9 200 280 225.1 280 256zM328 256C328 225.1 353.1 200 384 200C414.9 200 440 225.1 440 256C440 286.9 414.9 312 384 312C353.1 312 328 286.9 328 256z"]},S6=C6,E6={prefix:"fas",iconName:"ellipsis-vertical",icon:[128,512,["ellipsis-v"],"f142","M64 360C94.93 360 120 385.1 120 416C120 446.9 94.93 472 64 472C33.07 472 8 446.9 8 416C8 385.1 33.07 360 64 360zM64 200C94.93 200 120 225.1 120 256C120 286.9 94.93 312 64 312C33.07 312 8 286.9 8 256C8 225.1 33.07 200 64 200zM64 152C33.07 152 8 126.9 8 96C8 65.07 33.07 40 64 40C94.93 40 120 65.07 120 96C120 126.9 94.93 152 64 152z"]},D6=E6,ar={prefix:"fas",iconName:"filter",icon:[512,512,[],"f0b0","M3.853 54.87C10.47 40.9 24.54 32 40 32H472C487.5 32 501.5 40.9 508.1 54.87C514.8 68.84 512.7 85.37 502.1 97.33L320 320.9V448C320 460.1 313.2 471.2 302.3 476.6C291.5 482 278.5 480.9 268.8 473.6L204.8 425.6C196.7 419.6 192 410.1 192 400V320.9L9.042 97.33C-.745 85.37-2.765 68.84 3.854 54.87L3.853 54.87z"]},M6={prefix:"fas",iconName:"forward-step",icon:[320,512,["step-forward"],"f051","M287.1 447.1c17.67 0 31.1-14.33 31.1-32V96.03c0-17.67-14.33-32-32-32c-17.67 0-31.1 14.33-31.1 31.1v319.9C255.1 433.6 270.3 447.1 287.1 447.1zM52.51 440.6l192-159.1c7.625-6.436 11.43-15.53 11.43-24.62c0-9.094-3.809-18.18-11.43-24.62l-192-159.1C31.88 54.28 0 68.66 0 96.03v319.9C0 443.3 31.88 457.7 52.51 440.6z"]},T6=M6,I6={prefix:"fas",iconName:"maximize",icon:[448,512,["expand-arrows-alt"],"f31e","M447.1 319.1v135.1c0 13.26-10.75 23.1-23.1 23.1h-135.1c-12.94 0-24.61-7.781-29.56-19.75c-4.906-11.1-2.203-25.72 6.937-34.87l30.06-30.06L224 323.9l-71.43 71.44l30.06 30.06c9.156 9.156 11.91 22.91 6.937 34.87C184.6 472.2 172.9 479.1 160 479.1H24c-13.25 0-23.1-10.74-23.1-23.1v-135.1c0-12.94 7.781-24.61 19.75-29.56C23.72 288.8 27.88 288 32 288c8.312 0 16.5 3.242 22.63 9.367l30.06 30.06l71.44-71.44L84.69 184.6L54.63 214.6c-9.156 9.156-22.91 11.91-34.87 6.937C7.798 216.6 .0013 204.9 .0013 191.1v-135.1c0-13.26 10.75-23.1 23.1-23.1h135.1c12.94 0 24.61 7.781 29.56 19.75C191.2 55.72 191.1 59.87 191.1 63.1c0 8.312-3.237 16.5-9.362 22.63L152.6 116.7l71.44 71.44l71.43-71.44l-30.06-30.06c-9.156-9.156-11.91-22.91-6.937-34.87c4.937-11.95 16.62-19.75 29.56-19.75h135.1c13.26 0 23.1 10.75 23.1 23.1v135.1c0 12.94-7.781 24.61-19.75 29.56c-11.1 4.906-25.72 2.203-34.87-6.937l-30.06-30.06l-71.43 71.43l71.44 71.44l30.06-30.06c9.156-9.156 22.91-11.91 34.87-6.937C440.2 295.4 447.1 307.1 447.1 319.1z"]},k6=I6,Q1={prefix:"fas",iconName:"medal",icon:[512,512,[127941],"f5a2","M223.7 130.8L149.1 7.77C147.1 2.949 141.9 0 136.3 0H16.03c-12.95 0-20.53 14.58-13.1 25.18l111.3 158.9C143.9 156.4 181.7 137.3 223.7 130.8zM256 160c-97.25 0-176 78.75-176 176S158.8 512 256 512s176-78.75 176-176S353.3 160 256 160zM348.5 317.3l-37.88 37l8.875 52.25c1.625 9.25-8.25 16.5-16.63 12l-46.88-24.62L209.1 418.5c-8.375 4.5-18.25-2.75-16.63-12l8.875-52.25l-37.88-37C156.6 310.6 160.5 299 169.9 297.6l52.38-7.625L245.7 242.5c2-4.25 6.125-6.375 10.25-6.375S264.2 238.3 266.2 242.5l23.5 47.5l52.38 7.625C351.6 299 355.4 310.6 348.5 317.3zM495.1 0H375.7c-5.621 0-10.83 2.949-13.72 7.77l-73.76 122.1c42 6.5 79.88 25.62 109.5 53.38l111.3-158.9C516.5 14.58 508.9 0 495.1 0z"]},xo={prefix:"fas",iconName:"object-group",icon:[576,512,[],"f247","M128 160C128 142.3 142.3 128 160 128H288C305.7 128 320 142.3 320 160V256C320 273.7 305.7 288 288 288H160C142.3 288 128 273.7 128 256V160zM288 320C323.3 320 352 291.3 352 256V224H416C433.7 224 448 238.3 448 256V352C448 369.7 433.7 384 416 384H288C270.3 384 256 369.7 256 352V320H288zM32 119.4C12.87 108.4 0 87.69 0 64C0 28.65 28.65 0 64 0C87.69 0 108.4 12.87 119.4 32H456.6C467.6 12.87 488.3 0 512 0C547.3 0 576 28.65 576 64C576 87.69 563.1 108.4 544 119.4V392.6C563.1 403.6 576 424.3 576 448C576 483.3 547.3 512 512 512C488.3 512 467.6 499.1 456.6 480H119.4C108.4 499.1 87.69 512 64 512C28.65 512 0 483.3 0 448C0 424.3 12.87 403.6 32 392.6V119.4zM119.4 96C113.8 105.7 105.7 113.8 96 119.4V392.6C105.7 398.2 113.8 406.3 119.4 416H456.6C462.2 406.3 470.3 398.2 480 392.6V119.4C470.3 113.8 462.2 105.7 456.6 96H119.4z"]},N6={prefix:"fas",iconName:"pen",icon:[512,512,[128394],"f304","M362.7 19.32C387.7-5.678 428.3-5.678 453.3 19.32L492.7 58.75C517.7 83.74 517.7 124.3 492.7 149.3L444.3 197.7L314.3 67.72L362.7 19.32zM421.7 220.3L188.5 453.4C178.1 463.8 165.2 471.5 151.1 475.6L30.77 511C22.35 513.5 13.24 511.2 7.03 504.1C.8198 498.8-1.502 489.7 .976 481.2L36.37 360.9C40.53 346.8 48.16 333.9 58.57 323.5L291.7 90.34L421.7 220.3z"]},af={prefix:"fas",iconName:"share",icon:[512,512,["arrow-turn-right","mail-forward"],"f064","M503.7 226.2l-176 151.1c-15.38 13.3-39.69 2.545-39.69-18.16V272.1C132.9 274.3 66.06 312.8 111.4 457.8c5.031 16.09-14.41 28.56-28.06 18.62C39.59 444.6 0 383.8 0 322.3c0-152.2 127.4-184.4 288-186.3V56.02c0-20.67 24.28-31.46 39.69-18.16l176 151.1C514.8 199.4 514.8 216.6 503.7 226.2z"]},L6={prefix:"fas",iconName:"sliders",icon:[512,512,["sliders-h"],"f1de","M0 416C0 398.3 14.33 384 32 384H86.66C99 355.7 127.2 336 160 336C192.8 336 220.1 355.7 233.3 384H480C497.7 384 512 398.3 512 416C512 433.7 497.7 448 480 448H233.3C220.1 476.3 192.8 496 160 496C127.2 496 99 476.3 86.66 448H32C14.33 448 0 433.7 0 416V416zM192 416C192 398.3 177.7 384 160 384C142.3 384 128 398.3 128 416C128 433.7 142.3 448 160 448C177.7 448 192 433.7 192 416zM352 176C384.8 176 412.1 195.7 425.3 224H480C497.7 224 512 238.3 512 256C512 273.7 497.7 288 480 288H425.3C412.1 316.3 384.8 336 352 336C319.2 336 291 316.3 278.7 288H32C14.33 288 0 273.7 0 256C0 238.3 14.33 224 32 224H278.7C291 195.7 319.2 176 352 176zM384 256C384 238.3 369.7 224 352 224C334.3 224 320 238.3 320 256C320 273.7 334.3 288 352 288C369.7 288 384 273.7 384 256zM480 64C497.7 64 512 78.33 512 96C512 113.7 497.7 128 480 128H265.3C252.1 156.3 224.8 176 192 176C159.2 176 131 156.3 118.7 128H32C14.33 128 0 113.7 0 96C0 78.33 14.33 64 32 64H118.7C131 35.75 159.2 16 192 16C224.8 16 252.1 35.75 265.3 64H480zM160 96C160 113.7 174.3 128 192 128C209.7 128 224 113.7 224 96C224 78.33 209.7 64 192 64C174.3 64 160 78.33 160 96z"]},B6=L6,V1={prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69zM394.8 466.1C393.2 492.3 372.3 512 346.9 512H101.1C75.75 512 54.77 492.3 53.19 466.1L31.1 128H416L394.8 466.1z"]},O6={prefix:"fas",iconName:"trash-can",icon:[448,512,[61460,"trash-alt"],"f2ed","M135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69zM31.1 128H416V448C416 483.3 387.3 512 352 512H95.1C60.65 512 31.1 483.3 31.1 448V128zM111.1 208V432C111.1 440.8 119.2 448 127.1 448C136.8 448 143.1 440.8 143.1 432V208C143.1 199.2 136.8 192 127.1 192C119.2 192 111.1 199.2 111.1 208zM207.1 208V432C207.1 440.8 215.2 448 223.1 448C232.8 448 240 440.8 240 432V208C240 199.2 232.8 192 223.1 192C215.2 192 207.1 199.2 207.1 208zM304 208V432C304 440.8 311.2 448 320 448C328.8 448 336 440.8 336 432V208C336 199.2 328.8 192 320 192C311.2 192 304 199.2 304 208z"]},Ds=O6,F6={prefix:"fas",iconName:"up-down",icon:[256,512,[11021,8597,"arrows-alt-v"],"f338","M249.6 392.3l-104 112c-9.094 9.781-26.09 9.781-35.19 0l-103.1-112c-6.484-6.984-8.219-17.17-4.406-25.92S14.45 352 24 352H80V160H24C14.45 160 5.812 154.3 1.999 145.6C-1.813 136.8-.0781 126.7 6.406 119.7l104-112c9.094-9.781 26.09-9.781 35.19 0l104 112c6.484 6.984 8.219 17.17 4.406 25.92C250.2 154.3 241.5 160 232 160H176v192h56c9.547 0 18.19 5.656 22 14.41S256.1 385.3 249.6 392.3z"]},P6=F6,z6={prefix:"fas",iconName:"xmark",icon:[320,512,[128473,10005,10006,10060,215,"close","multiply","remove","times"],"f00d","M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"]};/*!
|
1379
1388
|
* Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com
|
1380
1389
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
1381
1390
|
* Copyright 2022 Fonticons, Inc.
|
1382
|
-
*/function
|
1383
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function
|
1384
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var
|
1391
|
+
*/function Y1(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),n.push.apply(n,r)}return n}function I(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Y1(Object(n),!0).forEach(function(r){U6(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Y1(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Ms(t){return Ms=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ms(t)}function R6(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _1(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function j6(t,e,n){return e&&_1(t.prototype,e),n&&_1(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function U6(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function sf(t,e){return G6(t)||V6(t,e)||W1(t,e)||_6()}function Ts(t){return H6(t)||Q6(t)||W1(t)||Y6()}function H6(t){if(Array.isArray(t))return cf(t)}function G6(t){if(Array.isArray(t))return t}function Q6(t){if(typeof Symbol<"u"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function V6(t,e){var n=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(n!=null){var r=[],i=!0,o=!1,a,s;try{for(n=n.call(t);!(i=(a=n.next()).done)&&(r.push(a.value),!(e&&r.length===e));i=!0);}catch(c){o=!0,s=c}finally{try{!i&&n.return!=null&&n.return()}finally{if(o)throw s}}return r}}function W1(t,e){if(t){if(typeof t=="string")return cf(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);if(n==="Object"&&t.constructor&&(n=t.constructor.name),n==="Map"||n==="Set")return Array.from(t);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return cf(t,e)}}function cf(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function Y6(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
1392
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function _6(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
1393
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var X1=function(){},uf={},Z1={},q1=null,K1={mark:X1,measure:X1};try{typeof window<"u"&&(uf=window),typeof document<"u"&&(Z1=document),typeof MutationObserver<"u"&&(q1=MutationObserver),typeof performance<"u"&&(K1=performance)}catch{}var W6=uf.navigator||{},J1=W6.userAgent,$1=J1===void 0?"":J1,hn=uf,te=Z1,ey=q1,Is=K1;hn.document;var Pt=!!te.documentElement&&!!te.head&&typeof te.addEventListener=="function"&&typeof te.createElement=="function",ty=~$1.indexOf("MSIE")||~$1.indexOf("Trident/"),zt="___FONT_AWESOME___",lf=16,ny="fa",ry="svg-inline--fa",sr="data-fa-i2svg",ff="data-fa-pseudo-element",X6="data-fa-pseudo-element-pending",df="data-prefix",hf="data-icon",iy="fontawesome-i2svg",Z6="async",q6=["HTML","HEAD","STYLE","SCRIPT"],oy=function(){try{return!0}catch{return!1}}(),pf={fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands",fak:"kit","fa-kit":"kit",fa:"solid"},ks={solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"},ay={fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"},K6={"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"},J6=/fa[srltdbk\-\ ]/,sy="fa-layers-text",$6=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Kit)?.*/i,eT={900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},cy=[1,2,3,4,5,6,7,8,9,10],tT=cy.concat([11,12,13,14,15,16,17,18,19,20]),nT=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],cr={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},rT=[].concat(Ts(Object.keys(ks)),["2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",cr.GROUP,cr.SWAP_OPACITY,cr.PRIMARY,cr.SECONDARY]).concat(cy.map(function(t){return"".concat(t,"x")})).concat(tT.map(function(t){return"w-".concat(t)})),uy=hn.FontAwesomeConfig||{};function iT(t){var e=te.querySelector("script["+t+"]");if(e)return e.getAttribute(t)}function oT(t){return t===""?!0:t==="false"?!1:t==="true"?!0:t}if(te&&typeof te.querySelector=="function"){var aT=[["data-family-prefix","familyPrefix"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]];aT.forEach(function(t){var e=sf(t,2),n=e[0],r=e[1],i=oT(iT(n));i!=null&&(uy[r]=i)})}var sT={familyPrefix:ny,styleDefault:"solid",replacementClass:ry,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},wo=I(I({},sT),uy);wo.autoReplaceSvg||(wo.observeMutations=!1);var F={};Object.keys(wo).forEach(function(t){Object.defineProperty(F,t,{enumerable:!0,set:function(n){wo[t]=n,Ns.forEach(function(r){return r(F)})},get:function(){return wo[t]}})}),hn.FontAwesomeConfig=F;var Ns=[];function cT(t){return Ns.push(t),function(){Ns.splice(Ns.indexOf(t),1)}}var pn=lf,bt={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function uT(t){if(!(!t||!Pt)){var e=te.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;for(var n=te.head.childNodes,r=null,i=n.length-1;i>-1;i--){var o=n[i],a=(o.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(a)>-1&&(r=o)}return te.head.insertBefore(e,r),t}}var lT="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function Co(){for(var t=12,e="";t-- >0;)e+=lT[Math.random()*62|0];return e}function qr(t){for(var e=[],n=(t||[]).length>>>0;n--;)e[n]=t[n];return e}function mf(t){return t.classList?qr(t.classList):(t.getAttribute("class")||"").split(" ").filter(function(e){return e})}function ly(t){return"".concat(t).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function fT(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,'="').concat(ly(t[n]),'" ')},"").trim()}function Ls(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,": ").concat(t[n].trim(),";")},"")}function gf(t){return t.size!==bt.size||t.x!==bt.x||t.y!==bt.y||t.rotate!==bt.rotate||t.flipX||t.flipY}function dT(t){var e=t.transform,n=t.containerWidth,r=t.iconWidth,i={transform:"translate(".concat(n/2," 256)")},o="translate(".concat(e.x*32,", ").concat(e.y*32,") "),a="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),s="rotate(".concat(e.rotate," 0 0)"),c={transform:"".concat(o," ").concat(a," ").concat(s)},u={transform:"translate(".concat(r/2*-1," -256)")};return{outer:i,inner:c,path:u}}function hT(t){var e=t.transform,n=t.width,r=n===void 0?lf:n,i=t.height,o=i===void 0?lf:i,a=t.startCentered,s=a===void 0?!1:a,c="";return s&&ty?c+="translate(".concat(e.x/pn-r/2,"em, ").concat(e.y/pn-o/2,"em) "):s?c+="translate(calc(-50% + ".concat(e.x/pn,"em), calc(-50% + ").concat(e.y/pn,"em)) "):c+="translate(".concat(e.x/pn,"em, ").concat(e.y/pn,"em) "),c+="scale(".concat(e.size/pn*(e.flipX?-1:1),", ").concat(e.size/pn*(e.flipY?-1:1),") "),c+="rotate(".concat(e.rotate,"deg) "),c}var pT=`:root, :host {
|
1385
1394
|
--fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid";
|
1386
1395
|
--fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular";
|
1387
1396
|
--fa-font-light: normal 300 1em/1 "Font Awesome 6 Light";
|
@@ -2132,48 +2141,48 @@ svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
|
|
2132
2141
|
.fad.fa-inverse,
|
2133
2142
|
.fa-duotone.fa-inverse {
|
2134
2143
|
color: var(--fa-inverse, #fff);
|
2135
|
-
}`;function ly(){var t=ty,e=ny,n=F.familyPrefix,r=F.replacementClass,i=dT;if(n!==t||r!==e){var o=new RegExp("\\.".concat(t,"\\-"),"g"),a=new RegExp("\\--".concat(t,"\\-"),"g"),s=new RegExp("\\.".concat(e),"g");i=i.replace(o,".".concat(n,"-")).replace(a,"--".concat(n,"-")).replace(s,".".concat(r))}return i}var fy=!1;function gf(){F.autoAddCss&&!fy&&(sT(ly()),fy=!0)}var hT={mixout:function(){return{dom:{css:ly,insertCss:gf}}},hooks:function(){return{beforeDOMElementCreation:function(){gf()},beforeI2svg:function(){gf()}}}},Rt=hn||{};Rt[zt]||(Rt[zt]={}),Rt[zt].styles||(Rt[zt].styles={}),Rt[zt].hooks||(Rt[zt].hooks={}),Rt[zt].shims||(Rt[zt].shims=[]);var ct=Rt[zt],dy=[],pT=function t(){te.removeEventListener("DOMContentLoaded",t),Ls=1,dy.map(function(e){return e()})},Ls=!1;Pt&&(Ls=(te.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(te.readyState),Ls||te.addEventListener("DOMContentLoaded",pT));function mT(t){Pt&&(Ls?setTimeout(t,0):dy.push(t))}function So(t){var e=t.tag,n=t.attributes,r=n===void 0?{}:n,i=t.children,o=i===void 0?[]:i;return typeof t=="string"?uy(t):"<".concat(e," ").concat(uT(r),">").concat(o.map(So).join(""),"</").concat(e,">")}function hy(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}var gT=function(e,n){return function(r,i,o,a){return e.call(n,r,i,o,a)}},yf=function(e,n,r,i){var o=Object.keys(e),a=o.length,s=i!==void 0?gT(n,i):n,c,u,f;for(r===void 0?(c=1,f=e[o[0]]):(c=0,f=r);c<a;c++)u=o[c],f=s(f,e[u],u,e);return f};function yT(t){for(var e=[],n=0,r=t.length;n<r;){var i=t.charCodeAt(n++);if(i>=55296&&i<=56319&&n<r){var o=t.charCodeAt(n++);(o&64512)==56320?e.push(((i&1023)<<10)+(o&1023)+65536):(e.push(i),n--)}else e.push(i)}return e}function vf(t){var e=yT(t);return e.length===1?e[0].toString(16):null}function vT(t,e){var n=t.length,r=t.charCodeAt(e),i;return r>=55296&&r<=56319&&n>e+1&&(i=t.charCodeAt(e+1),i>=56320&&i<=57343)?(r-55296)*1024+i-56320+65536:r}function py(t){return Object.keys(t).reduce(function(e,n){var r=t[n],i=!!r.icon;return i?e[r.iconName]=r.icon:e[n]=r,e},{})}function bf(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,i=r===void 0?!1:r,o=py(e);typeof ct.hooks.addPack=="function"&&!i?ct.hooks.addPack(t,py(e)):ct.styles[t]=I(I({},ct.styles[t]||{}),o),t==="fas"&&bf("fa",e)}var Eo=ct.styles,bT=ct.shims,AT=Object.values(oy),Af=null,my={},gy={},yy={},vy={},by={},xT=Object.keys(hf);function wT(t){return~tT.indexOf(t)}function CT(t,e){var n=e.split("-"),r=n[0],i=n.slice(1).join("-");return r===t&&i!==""&&!wT(i)?i:null}var Ay=function(){var e=function(o){return yf(Eo,function(a,s,c){return a[c]=yf(s,o,{}),a},{})};my=e(function(i,o,a){if(o[3]&&(i[o[3]]=a),o[2]){var s=o[2].filter(function(c){return typeof c=="number"});s.forEach(function(c){i[c.toString(16)]=a})}return i}),gy=e(function(i,o,a){if(i[a]=a,o[2]){var s=o[2].filter(function(c){return typeof c=="string"});s.forEach(function(c){i[c]=a})}return i}),by=e(function(i,o,a){var s=o[2];return i[a]=a,s.forEach(function(c){i[c]=a}),i});var n="far"in Eo||F.autoFetchSvg,r=yf(bT,function(i,o){var a=o[0],s=o[1],c=o[2];return s==="far"&&!n&&(s="fas"),typeof a=="string"&&(i.names[a]={prefix:s,iconName:c}),typeof a=="number"&&(i.unicodes[a.toString(16)]={prefix:s,iconName:c}),i},{names:{},unicodes:{}});yy=r.names,vy=r.unicodes,Af=Bs(F.styleDefault)};aT(function(t){Af=Bs(t.styleDefault)}),Ay();function xf(t,e){return(my[t]||{})[e]}function ST(t,e){return(gy[t]||{})[e]}function Jr(t,e){return(by[t]||{})[e]}function xy(t){return yy[t]||{prefix:null,iconName:null}}function ET(t){var e=vy[t],n=xf("fas",t);return e||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function mn(){return Af}var wf=function(){return{prefix:null,iconName:null,rest:[]}};function Bs(t){var e=hf[t],n=Is[t]||Is[e],r=t in ct.styles?t:null;return n||r||null}function Os(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.skipLookups,r=n===void 0?!1:n,i=null,o=t.reduce(function(a,s){var c=CT(F.familyPrefix,s);if(Eo[s]?(s=AT.includes(s)?Z6[s]:s,i=s,a.prefix=s):xT.indexOf(s)>-1?(i=s,a.prefix=Bs(s)):c?a.iconName=c:s!==F.replacementClass&&a.rest.push(s),!r&&a.prefix&&a.iconName){var u=i==="fa"?xy(a.iconName):{},f=Jr(a.prefix,a.iconName);u.prefix&&(i=null),a.iconName=u.iconName||f||a.iconName,a.prefix=u.prefix||a.prefix,a.prefix==="far"&&!Eo.far&&Eo.fas&&!F.autoFetchSvg&&(a.prefix="fas")}return a},wf());return(o.prefix==="fa"||i==="fa")&&(o.prefix=mn()||"fas"),o}var DT=function(){function t(){P6(this,t),this.definitions={}}return z6(t,[{key:"add",value:function(){for(var n=this,r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];var a=i.reduce(this._pullDefinitions,{});Object.keys(a).forEach(function(s){n.definitions[s]=I(I({},n.definitions[s]||{}),a[s]),bf(s,a[s]);var c=oy[s];c&&bf(c,a[s]),Ay()})}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(n,r){var i=r.prefix&&r.iconName&&r.icon?{0:r}:r;return Object.keys(i).map(function(o){var a=i[o],s=a.prefix,c=a.iconName,u=a.icon,f=u[2];n[s]||(n[s]={}),f.length>0&&f.forEach(function(l){typeof l=="string"&&(n[s][l]=u)}),n[s][c]=u}),n}}]),t}(),wy=[],$r={},ei={},MT=Object.keys(ei);function TT(t,e){var n=e.mixoutsTo;return wy=t,$r={},Object.keys(ei).forEach(function(r){MT.indexOf(r)===-1&&delete ei[r]}),wy.forEach(function(r){var i=r.mixout?r.mixout():{};if(Object.keys(i).forEach(function(a){typeof i[a]=="function"&&(n[a]=i[a]),Ds(i[a])==="object"&&Object.keys(i[a]).forEach(function(s){n[a]||(n[a]={}),n[a][s]=i[a][s]})}),r.hooks){var o=r.hooks();Object.keys(o).forEach(function(a){$r[a]||($r[a]=[]),$r[a].push(o[a])})}r.provides&&r.provides(ei)}),n}function Cf(t,e){for(var n=arguments.length,r=new Array(n>2?n-2:0),i=2;i<n;i++)r[i-2]=arguments[i];var o=$r[t]||[];return o.forEach(function(a){e=a.apply(null,[e].concat(r))}),e}function ur(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];var i=$r[t]||[];i.forEach(function(o){o.apply(null,n)})}function jt(){var t=arguments[0],e=Array.prototype.slice.call(arguments,1);return ei[t]?ei[t].apply(null,e):void 0}function Sf(t){t.prefix==="fa"&&(t.prefix="fas");var e=t.iconName,n=t.prefix||mn();if(e)return e=Jr(n,e)||e,hy(Cy.definitions,n,e)||hy(ct.styles,n,e)}var Cy=new DT,IT=function(){F.autoReplaceSvg=!1,F.observeMutations=!1,ur("noAuto")},kT={i2svg:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Pt?(ur("beforeI2svg",e),jt("pseudoElements2svg",e),jt("i2svg",e)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.autoReplaceSvgRoot;F.autoReplaceSvg===!1&&(F.autoReplaceSvg=!0),F.observeMutations=!0,mT(function(){LT({autoReplaceSvgRoot:n}),ur("watch",e)})}},NT={icon:function(e){if(e===null)return null;if(Ds(e)==="object"&&e.prefix&&e.iconName)return{prefix:e.prefix,iconName:Jr(e.prefix,e.iconName)||e.iconName};if(Array.isArray(e)&&e.length===2){var n=e[1].indexOf("fa-")===0?e[1].slice(3):e[1],r=Bs(e[0]);return{prefix:r,iconName:Jr(r,n)||n}}if(typeof e=="string"&&(e.indexOf("".concat(F.familyPrefix,"-"))>-1||e.match(q6))){var i=Os(e.split(" "),{skipLookups:!0});return{prefix:i.prefix||mn(),iconName:Jr(i.prefix,i.iconName)||i.iconName}}if(typeof e=="string"){var o=mn();return{prefix:o,iconName:Jr(o,e)||e}}}},Ue={noAuto:IT,config:F,dom:kT,parse:NT,library:Cy,findIconDefinition:Sf,toHtml:So},LT=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.autoReplaceSvgRoot,r=n===void 0?te:n;(Object.keys(ct.styles).length>0||F.autoFetchSvg)&&Pt&&F.autoReplaceSvg&&Ue.dom.i2svg({node:r})};function Fs(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map(function(r){return So(r)})}}),Object.defineProperty(t,"node",{get:function(){if(Pt){var r=te.createElement("div");return r.innerHTML=t.html,r.children}}}),t}function BT(t){var e=t.children,n=t.main,r=t.mask,i=t.attributes,o=t.styles,a=t.transform;if(mf(a)&&n.found&&!r.found){var s=n.width,c=n.height,u={x:s/c/2,y:.5};i.style=Ns(I(I({},o),{},{"transform-origin":"".concat(u.x+a.x/16,"em ").concat(u.y+a.y/16,"em")}))}return[{tag:"svg",attributes:i,children:e}]}function OT(t){var e=t.prefix,n=t.iconName,r=t.children,i=t.attributes,o=t.symbol,a=o===!0?"".concat(e,"-").concat(F.familyPrefix,"-").concat(n):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:I(I({},i),{},{id:a}),children:r}]}]}function Ef(t){var e=t.icons,n=e.main,r=e.mask,i=t.prefix,o=t.iconName,a=t.transform,s=t.symbol,c=t.title,u=t.maskId,f=t.titleId,l=t.extra,d=t.watchable,p=d===void 0?!1:d,h=r.found?r:n,m=h.width,g=h.height,y=i==="fak",b=[F.replacementClass,o?"".concat(F.familyPrefix,"-").concat(o):""].filter(function(k){return l.classes.indexOf(k)===-1}).filter(function(k){return k!==""||!!k}).concat(l.classes).join(" "),w={children:[],attributes:I(I({},l.attributes),{},{"data-prefix":i,"data-icon":o,class:b,role:l.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(m," ").concat(g)})},C=y&&!~l.classes.indexOf("fa-fw")?{width:"".concat(m/g*16*.0625,"em")}:{};p&&(w.attributes[sr]=""),c&&(w.children.push({tag:"title",attributes:{id:w.attributes["aria-labelledby"]||"title-".concat(f||Co())},children:[c]}),delete w.attributes.title);var x=I(I({},w),{},{prefix:i,iconName:o,main:n,mask:r,maskId:u,transform:a,symbol:s,styles:I(I({},C),l.styles)}),v=r.found&&n.found?jt("generateAbstractMask",x)||{children:[],attributes:{}}:jt("generateAbstractIcon",x)||{children:[],attributes:{}},A=v.children,D=v.attributes;return x.children=A,x.attributes=D,s?OT(x):BT(x)}function Sy(t){var e=t.content,n=t.width,r=t.height,i=t.transform,o=t.title,a=t.extra,s=t.watchable,c=s===void 0?!1:s,u=I(I(I({},a.attributes),o?{title:o}:{}),{},{class:a.classes.join(" ")});c&&(u[sr]="");var f=I({},a.styles);mf(i)&&(f.transform=fT({transform:i,startCentered:!0,width:n,height:r}),f["-webkit-transform"]=f.transform);var l=Ns(f);l.length>0&&(u.style=l);var d=[];return d.push({tag:"span",attributes:u,children:[e]}),o&&d.push({tag:"span",attributes:{class:"sr-only"},children:[o]}),d}function FT(t){var e=t.content,n=t.title,r=t.extra,i=I(I(I({},r.attributes),n?{title:n}:{}),{},{class:r.classes.join(" ")}),o=Ns(r.styles);o.length>0&&(i.style=o);var a=[];return a.push({tag:"span",attributes:i,children:[e]}),n&&a.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),a}var Df=ct.styles;function Mf(t){var e=t[0],n=t[1],r=t.slice(4),i=af(r,1),o=i[0],a=null;return Array.isArray(o)?a={tag:"g",attributes:{class:"".concat(F.familyPrefix,"-").concat(cr.GROUP)},children:[{tag:"path",attributes:{class:"".concat(F.familyPrefix,"-").concat(cr.SECONDARY),fill:"currentColor",d:o[0]}},{tag:"path",attributes:{class:"".concat(F.familyPrefix,"-").concat(cr.PRIMARY),fill:"currentColor",d:o[1]}}]}:a={tag:"path",attributes:{fill:"currentColor",d:o}},{found:!0,width:e,height:n,icon:a}}var PT={found:!1,width:512,height:512};function zT(t,e){!iy&&!F.showMissingIcons&&t&&console.error('Icon with name "'.concat(t,'" and prefix "').concat(e,'" is missing.'))}function Tf(t,e){var n=e;return e==="fa"&&F.styleDefault!==null&&(e=mn()),new Promise(function(r,i){if(jt("missingIconAbstract"),n==="fa"){var o=xy(t)||{};t=o.iconName||t,e=o.prefix||e}if(t&&e&&Df[e]&&Df[e][t]){var a=Df[e][t];return r(Mf(a))}zT(t,e),r(I(I({},PT),{},{icon:F.showMissingIcons&&t?jt("missingIconAbstract")||{}:{}}))})}var Ey=function(){},If=F.measurePerformance&&Ts&&Ts.mark&&Ts.measure?Ts:{mark:Ey,measure:Ey},Do='FA "6.1.1"',RT=function(e){return If.mark("".concat(Do," ").concat(e," begins")),function(){return Dy(e)}},Dy=function(e){If.mark("".concat(Do," ").concat(e," ends")),If.measure("".concat(Do," ").concat(e),"".concat(Do," ").concat(e," begins"),"".concat(Do," ").concat(e," ends"))},kf={begin:RT,end:Dy},Ps=function(){};function My(t){var e=t.getAttribute?t.getAttribute(sr):null;return typeof e=="string"}function jT(t){var e=t.getAttribute?t.getAttribute(ff):null,n=t.getAttribute?t.getAttribute(df):null;return e&&n}function UT(t){return t&&t.classList&&t.classList.contains&&t.classList.contains(F.replacementClass)}function HT(){if(F.autoReplaceSvg===!0)return zs.replace;var t=zs[F.autoReplaceSvg];return t||zs.replace}function GT(t){return te.createElementNS("http://www.w3.org/2000/svg",t)}function QT(t){return te.createElement(t)}function Ty(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.ceFn,r=n===void 0?t.tag==="svg"?GT:QT:n;if(typeof t=="string")return te.createTextNode(t);var i=r(t.tag);Object.keys(t.attributes||[]).forEach(function(a){i.setAttribute(a,t.attributes[a])});var o=t.children||[];return o.forEach(function(a){i.appendChild(Ty(a,{ceFn:r}))}),i}function VT(t){var e=" ".concat(t.outerHTML," ");return e="".concat(e,"Font Awesome fontawesome.com "),e}var zs={replace:function(e){var n=e[0];if(n.parentNode)if(e[1].forEach(function(i){n.parentNode.insertBefore(Ty(i),n)}),n.getAttribute(sr)===null&&F.keepOriginalSource){var r=te.createComment(VT(n));n.parentNode.replaceChild(r,n)}else n.remove()},nest:function(e){var n=e[0],r=e[1];if(~pf(n).indexOf(F.replacementClass))return zs.replace(e);var i=new RegExp("".concat(F.familyPrefix,"-.*"));if(delete r[0].attributes.id,r[0].attributes.class){var o=r[0].attributes.class.split(" ").reduce(function(s,c){return c===F.replacementClass||c.match(i)?s.toSvg.push(c):s.toNode.push(c),s},{toNode:[],toSvg:[]});r[0].attributes.class=o.toSvg.join(" "),o.toNode.length===0?n.removeAttribute("class"):n.setAttribute("class",o.toNode.join(" "))}var a=r.map(function(s){return So(s)}).join(`
|
2136
|
-
`);n.setAttribute(sr,""),n.innerHTML=a}};function
|
2137
|
-
`),t.removeAttribute(n),r()}).catch(i)}else r()}else r()})}function
|
2144
|
+
}`;function fy(){var t=ny,e=ry,n=F.familyPrefix,r=F.replacementClass,i=pT;if(n!==t||r!==e){var o=new RegExp("\\.".concat(t,"\\-"),"g"),a=new RegExp("\\--".concat(t,"\\-"),"g"),s=new RegExp("\\.".concat(e),"g");i=i.replace(o,".".concat(n,"-")).replace(a,"--".concat(n,"-")).replace(s,".".concat(r))}return i}var dy=!1;function yf(){F.autoAddCss&&!dy&&(uT(fy()),dy=!0)}var mT={mixout:function(){return{dom:{css:fy,insertCss:yf}}},hooks:function(){return{beforeDOMElementCreation:function(){yf()},beforeI2svg:function(){yf()}}}},Rt=hn||{};Rt[zt]||(Rt[zt]={}),Rt[zt].styles||(Rt[zt].styles={}),Rt[zt].hooks||(Rt[zt].hooks={}),Rt[zt].shims||(Rt[zt].shims=[]);var ct=Rt[zt],hy=[],gT=function t(){te.removeEventListener("DOMContentLoaded",t),Bs=1,hy.map(function(e){return e()})},Bs=!1;Pt&&(Bs=(te.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(te.readyState),Bs||te.addEventListener("DOMContentLoaded",gT));function yT(t){Pt&&(Bs?setTimeout(t,0):hy.push(t))}function So(t){var e=t.tag,n=t.attributes,r=n===void 0?{}:n,i=t.children,o=i===void 0?[]:i;return typeof t=="string"?ly(t):"<".concat(e," ").concat(fT(r),">").concat(o.map(So).join(""),"</").concat(e,">")}function py(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}var vT=function(e,n){return function(r,i,o,a){return e.call(n,r,i,o,a)}},vf=function(e,n,r,i){var o=Object.keys(e),a=o.length,s=i!==void 0?vT(n,i):n,c,u,f;for(r===void 0?(c=1,f=e[o[0]]):(c=0,f=r);c<a;c++)u=o[c],f=s(f,e[u],u,e);return f};function bT(t){for(var e=[],n=0,r=t.length;n<r;){var i=t.charCodeAt(n++);if(i>=55296&&i<=56319&&n<r){var o=t.charCodeAt(n++);(o&64512)==56320?e.push(((i&1023)<<10)+(o&1023)+65536):(e.push(i),n--)}else e.push(i)}return e}function bf(t){var e=bT(t);return e.length===1?e[0].toString(16):null}function AT(t,e){var n=t.length,r=t.charCodeAt(e),i;return r>=55296&&r<=56319&&n>e+1&&(i=t.charCodeAt(e+1),i>=56320&&i<=57343)?(r-55296)*1024+i-56320+65536:r}function my(t){return Object.keys(t).reduce(function(e,n){var r=t[n],i=!!r.icon;return i?e[r.iconName]=r.icon:e[n]=r,e},{})}function Af(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,i=r===void 0?!1:r,o=my(e);typeof ct.hooks.addPack=="function"&&!i?ct.hooks.addPack(t,my(e)):ct.styles[t]=I(I({},ct.styles[t]||{}),o),t==="fas"&&Af("fa",e)}var Eo=ct.styles,xT=ct.shims,wT=Object.values(ay),xf=null,gy={},yy={},vy={},by={},Ay={},CT=Object.keys(pf);function ST(t){return~rT.indexOf(t)}function ET(t,e){var n=e.split("-"),r=n[0],i=n.slice(1).join("-");return r===t&&i!==""&&!ST(i)?i:null}var xy=function(){var e=function(o){return vf(Eo,function(a,s,c){return a[c]=vf(s,o,{}),a},{})};gy=e(function(i,o,a){if(o[3]&&(i[o[3]]=a),o[2]){var s=o[2].filter(function(c){return typeof c=="number"});s.forEach(function(c){i[c.toString(16)]=a})}return i}),yy=e(function(i,o,a){if(i[a]=a,o[2]){var s=o[2].filter(function(c){return typeof c=="string"});s.forEach(function(c){i[c]=a})}return i}),Ay=e(function(i,o,a){var s=o[2];return i[a]=a,s.forEach(function(c){i[c]=a}),i});var n="far"in Eo||F.autoFetchSvg,r=vf(xT,function(i,o){var a=o[0],s=o[1],c=o[2];return s==="far"&&!n&&(s="fas"),typeof a=="string"&&(i.names[a]={prefix:s,iconName:c}),typeof a=="number"&&(i.unicodes[a.toString(16)]={prefix:s,iconName:c}),i},{names:{},unicodes:{}});vy=r.names,by=r.unicodes,xf=Os(F.styleDefault)};cT(function(t){xf=Os(t.styleDefault)}),xy();function wf(t,e){return(gy[t]||{})[e]}function DT(t,e){return(yy[t]||{})[e]}function Kr(t,e){return(Ay[t]||{})[e]}function wy(t){return vy[t]||{prefix:null,iconName:null}}function MT(t){var e=by[t],n=wf("fas",t);return e||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function mn(){return xf}var Cf=function(){return{prefix:null,iconName:null,rest:[]}};function Os(t){var e=pf[t],n=ks[t]||ks[e],r=t in ct.styles?t:null;return n||r||null}function Fs(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.skipLookups,r=n===void 0?!1:n,i=null,o=t.reduce(function(a,s){var c=ET(F.familyPrefix,s);if(Eo[s]?(s=wT.includes(s)?K6[s]:s,i=s,a.prefix=s):CT.indexOf(s)>-1?(i=s,a.prefix=Os(s)):c?a.iconName=c:s!==F.replacementClass&&a.rest.push(s),!r&&a.prefix&&a.iconName){var u=i==="fa"?wy(a.iconName):{},f=Kr(a.prefix,a.iconName);u.prefix&&(i=null),a.iconName=u.iconName||f||a.iconName,a.prefix=u.prefix||a.prefix,a.prefix==="far"&&!Eo.far&&Eo.fas&&!F.autoFetchSvg&&(a.prefix="fas")}return a},Cf());return(o.prefix==="fa"||i==="fa")&&(o.prefix=mn()||"fas"),o}var TT=function(){function t(){R6(this,t),this.definitions={}}return j6(t,[{key:"add",value:function(){for(var n=this,r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];var a=i.reduce(this._pullDefinitions,{});Object.keys(a).forEach(function(s){n.definitions[s]=I(I({},n.definitions[s]||{}),a[s]),Af(s,a[s]);var c=ay[s];c&&Af(c,a[s]),xy()})}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(n,r){var i=r.prefix&&r.iconName&&r.icon?{0:r}:r;return Object.keys(i).map(function(o){var a=i[o],s=a.prefix,c=a.iconName,u=a.icon,f=u[2];n[s]||(n[s]={}),f.length>0&&f.forEach(function(l){typeof l=="string"&&(n[s][l]=u)}),n[s][c]=u}),n}}]),t}(),Cy=[],Jr={},$r={},IT=Object.keys($r);function kT(t,e){var n=e.mixoutsTo;return Cy=t,Jr={},Object.keys($r).forEach(function(r){IT.indexOf(r)===-1&&delete $r[r]}),Cy.forEach(function(r){var i=r.mixout?r.mixout():{};if(Object.keys(i).forEach(function(a){typeof i[a]=="function"&&(n[a]=i[a]),Ms(i[a])==="object"&&Object.keys(i[a]).forEach(function(s){n[a]||(n[a]={}),n[a][s]=i[a][s]})}),r.hooks){var o=r.hooks();Object.keys(o).forEach(function(a){Jr[a]||(Jr[a]=[]),Jr[a].push(o[a])})}r.provides&&r.provides($r)}),n}function Sf(t,e){for(var n=arguments.length,r=new Array(n>2?n-2:0),i=2;i<n;i++)r[i-2]=arguments[i];var o=Jr[t]||[];return o.forEach(function(a){e=a.apply(null,[e].concat(r))}),e}function ur(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];var i=Jr[t]||[];i.forEach(function(o){o.apply(null,n)})}function jt(){var t=arguments[0],e=Array.prototype.slice.call(arguments,1);return $r[t]?$r[t].apply(null,e):void 0}function Ef(t){t.prefix==="fa"&&(t.prefix="fas");var e=t.iconName,n=t.prefix||mn();if(e)return e=Kr(n,e)||e,py(Sy.definitions,n,e)||py(ct.styles,n,e)}var Sy=new TT,NT=function(){F.autoReplaceSvg=!1,F.observeMutations=!1,ur("noAuto")},LT={i2svg:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Pt?(ur("beforeI2svg",e),jt("pseudoElements2svg",e),jt("i2svg",e)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.autoReplaceSvgRoot;F.autoReplaceSvg===!1&&(F.autoReplaceSvg=!0),F.observeMutations=!0,yT(function(){OT({autoReplaceSvgRoot:n}),ur("watch",e)})}},BT={icon:function(e){if(e===null)return null;if(Ms(e)==="object"&&e.prefix&&e.iconName)return{prefix:e.prefix,iconName:Kr(e.prefix,e.iconName)||e.iconName};if(Array.isArray(e)&&e.length===2){var n=e[1].indexOf("fa-")===0?e[1].slice(3):e[1],r=Os(e[0]);return{prefix:r,iconName:Kr(r,n)||n}}if(typeof e=="string"&&(e.indexOf("".concat(F.familyPrefix,"-"))>-1||e.match(J6))){var i=Fs(e.split(" "),{skipLookups:!0});return{prefix:i.prefix||mn(),iconName:Kr(i.prefix,i.iconName)||i.iconName}}if(typeof e=="string"){var o=mn();return{prefix:o,iconName:Kr(o,e)||e}}}},Ue={noAuto:NT,config:F,dom:LT,parse:BT,library:Sy,findIconDefinition:Ef,toHtml:So},OT=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.autoReplaceSvgRoot,r=n===void 0?te:n;(Object.keys(ct.styles).length>0||F.autoFetchSvg)&&Pt&&F.autoReplaceSvg&&Ue.dom.i2svg({node:r})};function Ps(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map(function(r){return So(r)})}}),Object.defineProperty(t,"node",{get:function(){if(Pt){var r=te.createElement("div");return r.innerHTML=t.html,r.children}}}),t}function FT(t){var e=t.children,n=t.main,r=t.mask,i=t.attributes,o=t.styles,a=t.transform;if(gf(a)&&n.found&&!r.found){var s=n.width,c=n.height,u={x:s/c/2,y:.5};i.style=Ls(I(I({},o),{},{"transform-origin":"".concat(u.x+a.x/16,"em ").concat(u.y+a.y/16,"em")}))}return[{tag:"svg",attributes:i,children:e}]}function PT(t){var e=t.prefix,n=t.iconName,r=t.children,i=t.attributes,o=t.symbol,a=o===!0?"".concat(e,"-").concat(F.familyPrefix,"-").concat(n):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:I(I({},i),{},{id:a}),children:r}]}]}function Df(t){var e=t.icons,n=e.main,r=e.mask,i=t.prefix,o=t.iconName,a=t.transform,s=t.symbol,c=t.title,u=t.maskId,f=t.titleId,l=t.extra,d=t.watchable,p=d===void 0?!1:d,h=r.found?r:n,m=h.width,g=h.height,y=i==="fak",b=[F.replacementClass,o?"".concat(F.familyPrefix,"-").concat(o):""].filter(function(k){return l.classes.indexOf(k)===-1}).filter(function(k){return k!==""||!!k}).concat(l.classes).join(" "),w={children:[],attributes:I(I({},l.attributes),{},{"data-prefix":i,"data-icon":o,class:b,role:l.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(m," ").concat(g)})},C=y&&!~l.classes.indexOf("fa-fw")?{width:"".concat(m/g*16*.0625,"em")}:{};p&&(w.attributes[sr]=""),c&&(w.children.push({tag:"title",attributes:{id:w.attributes["aria-labelledby"]||"title-".concat(f||Co())},children:[c]}),delete w.attributes.title);var x=I(I({},w),{},{prefix:i,iconName:o,main:n,mask:r,maskId:u,transform:a,symbol:s,styles:I(I({},C),l.styles)}),v=r.found&&n.found?jt("generateAbstractMask",x)||{children:[],attributes:{}}:jt("generateAbstractIcon",x)||{children:[],attributes:{}},A=v.children,D=v.attributes;return x.children=A,x.attributes=D,s?PT(x):FT(x)}function Ey(t){var e=t.content,n=t.width,r=t.height,i=t.transform,o=t.title,a=t.extra,s=t.watchable,c=s===void 0?!1:s,u=I(I(I({},a.attributes),o?{title:o}:{}),{},{class:a.classes.join(" ")});c&&(u[sr]="");var f=I({},a.styles);gf(i)&&(f.transform=hT({transform:i,startCentered:!0,width:n,height:r}),f["-webkit-transform"]=f.transform);var l=Ls(f);l.length>0&&(u.style=l);var d=[];return d.push({tag:"span",attributes:u,children:[e]}),o&&d.push({tag:"span",attributes:{class:"sr-only"},children:[o]}),d}function zT(t){var e=t.content,n=t.title,r=t.extra,i=I(I(I({},r.attributes),n?{title:n}:{}),{},{class:r.classes.join(" ")}),o=Ls(r.styles);o.length>0&&(i.style=o);var a=[];return a.push({tag:"span",attributes:i,children:[e]}),n&&a.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),a}var Mf=ct.styles;function Tf(t){var e=t[0],n=t[1],r=t.slice(4),i=sf(r,1),o=i[0],a=null;return Array.isArray(o)?a={tag:"g",attributes:{class:"".concat(F.familyPrefix,"-").concat(cr.GROUP)},children:[{tag:"path",attributes:{class:"".concat(F.familyPrefix,"-").concat(cr.SECONDARY),fill:"currentColor",d:o[0]}},{tag:"path",attributes:{class:"".concat(F.familyPrefix,"-").concat(cr.PRIMARY),fill:"currentColor",d:o[1]}}]}:a={tag:"path",attributes:{fill:"currentColor",d:o}},{found:!0,width:e,height:n,icon:a}}var RT={found:!1,width:512,height:512};function jT(t,e){!oy&&!F.showMissingIcons&&t&&console.error('Icon with name "'.concat(t,'" and prefix "').concat(e,'" is missing.'))}function If(t,e){var n=e;return e==="fa"&&F.styleDefault!==null&&(e=mn()),new Promise(function(r,i){if(jt("missingIconAbstract"),n==="fa"){var o=wy(t)||{};t=o.iconName||t,e=o.prefix||e}if(t&&e&&Mf[e]&&Mf[e][t]){var a=Mf[e][t];return r(Tf(a))}jT(t,e),r(I(I({},RT),{},{icon:F.showMissingIcons&&t?jt("missingIconAbstract")||{}:{}}))})}var Dy=function(){},kf=F.measurePerformance&&Is&&Is.mark&&Is.measure?Is:{mark:Dy,measure:Dy},Do='FA "6.1.1"',UT=function(e){return kf.mark("".concat(Do," ").concat(e," begins")),function(){return My(e)}},My=function(e){kf.mark("".concat(Do," ").concat(e," ends")),kf.measure("".concat(Do," ").concat(e),"".concat(Do," ").concat(e," begins"),"".concat(Do," ").concat(e," ends"))},Nf={begin:UT,end:My},zs=function(){};function Ty(t){var e=t.getAttribute?t.getAttribute(sr):null;return typeof e=="string"}function HT(t){var e=t.getAttribute?t.getAttribute(df):null,n=t.getAttribute?t.getAttribute(hf):null;return e&&n}function GT(t){return t&&t.classList&&t.classList.contains&&t.classList.contains(F.replacementClass)}function QT(){if(F.autoReplaceSvg===!0)return Rs.replace;var t=Rs[F.autoReplaceSvg];return t||Rs.replace}function VT(t){return te.createElementNS("http://www.w3.org/2000/svg",t)}function YT(t){return te.createElement(t)}function Iy(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.ceFn,r=n===void 0?t.tag==="svg"?VT:YT:n;if(typeof t=="string")return te.createTextNode(t);var i=r(t.tag);Object.keys(t.attributes||[]).forEach(function(a){i.setAttribute(a,t.attributes[a])});var o=t.children||[];return o.forEach(function(a){i.appendChild(Iy(a,{ceFn:r}))}),i}function _T(t){var e=" ".concat(t.outerHTML," ");return e="".concat(e,"Font Awesome fontawesome.com "),e}var Rs={replace:function(e){var n=e[0];if(n.parentNode)if(e[1].forEach(function(i){n.parentNode.insertBefore(Iy(i),n)}),n.getAttribute(sr)===null&&F.keepOriginalSource){var r=te.createComment(_T(n));n.parentNode.replaceChild(r,n)}else n.remove()},nest:function(e){var n=e[0],r=e[1];if(~mf(n).indexOf(F.replacementClass))return Rs.replace(e);var i=new RegExp("".concat(F.familyPrefix,"-.*"));if(delete r[0].attributes.id,r[0].attributes.class){var o=r[0].attributes.class.split(" ").reduce(function(s,c){return c===F.replacementClass||c.match(i)?s.toSvg.push(c):s.toNode.push(c),s},{toNode:[],toSvg:[]});r[0].attributes.class=o.toSvg.join(" "),o.toNode.length===0?n.removeAttribute("class"):n.setAttribute("class",o.toNode.join(" "))}var a=r.map(function(s){return So(s)}).join(`
|
2145
|
+
`);n.setAttribute(sr,""),n.innerHTML=a}};function ky(t){t()}function Ny(t,e){var n=typeof e=="function"?e:zs;if(t.length===0)n();else{var r=ky;F.mutateApproach===Z6&&(r=hn.requestAnimationFrame||ky),r(function(){var i=QT(),o=Nf.begin("mutate");t.map(i),o(),n()})}}var Lf=!1;function Ly(){Lf=!0}function Bf(){Lf=!1}var js=null;function By(t){if(ey&&F.observeMutations){var e=t.treeCallback,n=e===void 0?zs:e,r=t.nodeCallback,i=r===void 0?zs:r,o=t.pseudoElementsCallback,a=o===void 0?zs:o,s=t.observeMutationsRoot,c=s===void 0?te:s;js=new ey(function(u){if(!Lf){var f=mn();qr(u).forEach(function(l){if(l.type==="childList"&&l.addedNodes.length>0&&!Ty(l.addedNodes[0])&&(F.searchPseudoElements&&a(l.target),n(l.target)),l.type==="attributes"&&l.target.parentNode&&F.searchPseudoElements&&a(l.target.parentNode),l.type==="attributes"&&Ty(l.target)&&~nT.indexOf(l.attributeName))if(l.attributeName==="class"&&HT(l.target)){var d=Fs(mf(l.target)),p=d.prefix,h=d.iconName;l.target.setAttribute(df,p||f),h&&l.target.setAttribute(hf,h)}else GT(l.target)&&i(l.target)})}}),Pt&&js.observe(c,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function WT(){js&&js.disconnect()}function XT(t){var e=t.getAttribute("style"),n=[];return e&&(n=e.split(";").reduce(function(r,i){var o=i.split(":"),a=o[0],s=o.slice(1);return a&&s.length>0&&(r[a]=s.join(":").trim()),r},{})),n}function ZT(t){var e=t.getAttribute("data-prefix"),n=t.getAttribute("data-icon"),r=t.innerText!==void 0?t.innerText.trim():"",i=Fs(mf(t));return i.prefix||(i.prefix=mn()),e&&n&&(i.prefix=e,i.iconName=n),i.iconName&&i.prefix||i.prefix&&r.length>0&&(i.iconName=DT(i.prefix,t.innerText)||wf(i.prefix,bf(t.innerText))),i}function qT(t){var e=qr(t.attributes).reduce(function(i,o){return i.name!=="class"&&i.name!=="style"&&(i[o.name]=o.value),i},{}),n=t.getAttribute("title"),r=t.getAttribute("data-fa-title-id");return F.autoA11y&&(n?e["aria-labelledby"]="".concat(F.replacementClass,"-title-").concat(r||Co()):(e["aria-hidden"]="true",e.focusable="false")),e}function KT(){return{iconName:null,title:null,titleId:null,prefix:null,transform:bt,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}}function Oy(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0},n=ZT(t),r=n.iconName,i=n.prefix,o=n.rest,a=qT(t),s=Sf("parseNodeAttributes",{},t),c=e.styleParser?XT(t):[];return I({iconName:r,title:t.getAttribute("title"),titleId:t.getAttribute("data-fa-title-id"),prefix:i,transform:bt,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:o,styles:c,attributes:a}},s)}var JT=ct.styles;function Fy(t){var e=F.autoReplaceSvg==="nest"?Oy(t,{styleParser:!1}):Oy(t);return~e.extra.classes.indexOf(sy)?jt("generateLayersText",t,e):jt("generateSvgReplacementMutation",t,e)}function Py(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!Pt)return Promise.resolve();var n=te.documentElement.classList,r=function(l){return n.add("".concat(iy,"-").concat(l))},i=function(l){return n.remove("".concat(iy,"-").concat(l))},o=F.autoFetchSvg?Object.keys(pf):Object.keys(JT),a=[".".concat(sy,":not([").concat(sr,"])")].concat(o.map(function(f){return".".concat(f,":not([").concat(sr,"])")})).join(", ");if(a.length===0)return Promise.resolve();var s=[];try{s=qr(t.querySelectorAll(a))}catch{}if(s.length>0)r("pending"),i("complete");else return Promise.resolve();var c=Nf.begin("onTree"),u=s.reduce(function(f,l){try{var d=Fy(l);d&&f.push(d)}catch(p){oy||p.name==="MissingIcon"&&console.error(p)}return f},[]);return new Promise(function(f,l){Promise.all(u).then(function(d){Ny(d,function(){r("active"),r("complete"),i("pending"),typeof e=="function"&&e(),c(),f()})}).catch(function(d){c(),l(d)})})}function $T(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;Fy(t).then(function(n){n&&Ny([n],e)})}function eI(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=(e||{}).icon?e:Ef(e||{}),i=n.mask;return i&&(i=(i||{}).icon?i:Ef(i||{})),t(r,I(I({},n),{},{mask:i}))}}var tI=function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.transform,i=r===void 0?bt:r,o=n.symbol,a=o===void 0?!1:o,s=n.mask,c=s===void 0?null:s,u=n.maskId,f=u===void 0?null:u,l=n.title,d=l===void 0?null:l,p=n.titleId,h=p===void 0?null:p,m=n.classes,g=m===void 0?[]:m,y=n.attributes,b=y===void 0?{}:y,w=n.styles,C=w===void 0?{}:w;if(e){var x=e.prefix,v=e.iconName,A=e.icon;return Ps(I({type:"icon"},e),function(){return ur("beforeDOMElementCreation",{iconDefinition:e,params:n}),F.autoA11y&&(d?b["aria-labelledby"]="".concat(F.replacementClass,"-title-").concat(h||Co()):(b["aria-hidden"]="true",b.focusable="false")),Df({icons:{main:Tf(A),mask:c?Tf(c.icon):{found:!1,width:null,height:null,icon:{}}},prefix:x,iconName:v,transform:I(I({},bt),i),symbol:a,title:d,maskId:f,titleId:h,extra:{attributes:b,styles:C,classes:g}})})}},nI={mixout:function(){return{icon:eI(tI)}},hooks:function(){return{mutationObserverCallbacks:function(n){return n.treeCallback=Py,n.nodeCallback=$T,n}}},provides:function(e){e.i2svg=function(n){var r=n.node,i=r===void 0?te:r,o=n.callback,a=o===void 0?function(){}:o;return Py(i,a)},e.generateSvgReplacementMutation=function(n,r){var i=r.iconName,o=r.title,a=r.titleId,s=r.prefix,c=r.transform,u=r.symbol,f=r.mask,l=r.maskId,d=r.extra;return new Promise(function(p,h){Promise.all([If(i,s),f.iconName?If(f.iconName,f.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(function(m){var g=sf(m,2),y=g[0],b=g[1];p([n,Df({icons:{main:y,mask:b},prefix:s,iconName:i,transform:c,symbol:u,maskId:l,title:o,titleId:a,extra:d,watchable:!0})])}).catch(h)})},e.generateAbstractIcon=function(n){var r=n.children,i=n.attributes,o=n.main,a=n.transform,s=n.styles,c=Ls(s);c.length>0&&(i.style=c);var u;return gf(a)&&(u=jt("generateAbstractTransformGrouping",{main:o,transform:a,containerWidth:o.width,iconWidth:o.width})),r.push(u||o.icon),{children:r,attributes:i}}}},rI={mixout:function(){return{layer:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.classes,o=i===void 0?[]:i;return Ps({type:"layer"},function(){ur("beforeDOMElementCreation",{assembler:n,params:r});var a=[];return n(function(s){Array.isArray(s)?s.map(function(c){a=a.concat(c.abstract)}):a=a.concat(s.abstract)}),[{tag:"span",attributes:{class:["".concat(F.familyPrefix,"-layers")].concat(Ts(o)).join(" ")},children:a}]})}}}},iI={mixout:function(){return{counter:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.title,o=i===void 0?null:i,a=r.classes,s=a===void 0?[]:a,c=r.attributes,u=c===void 0?{}:c,f=r.styles,l=f===void 0?{}:f;return Ps({type:"counter",content:n},function(){return ur("beforeDOMElementCreation",{content:n,params:r}),zT({content:n.toString(),title:o,extra:{attributes:u,styles:l,classes:["".concat(F.familyPrefix,"-layers-counter")].concat(Ts(s))}})})}}}},oI={mixout:function(){return{text:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.transform,o=i===void 0?bt:i,a=r.title,s=a===void 0?null:a,c=r.classes,u=c===void 0?[]:c,f=r.attributes,l=f===void 0?{}:f,d=r.styles,p=d===void 0?{}:d;return Ps({type:"text",content:n},function(){return ur("beforeDOMElementCreation",{content:n,params:r}),Ey({content:n,transform:I(I({},bt),o),title:s,extra:{attributes:l,styles:p,classes:["".concat(F.familyPrefix,"-layers-text")].concat(Ts(u))}})})}}},provides:function(e){e.generateLayersText=function(n,r){var i=r.title,o=r.transform,a=r.extra,s=null,c=null;if(ty){var u=parseInt(getComputedStyle(n).fontSize,10),f=n.getBoundingClientRect();s=f.width/u,c=f.height/u}return F.autoA11y&&!i&&(a.attributes["aria-hidden"]="true"),Promise.resolve([n,Ey({content:n.innerHTML,width:s,height:c,transform:o,title:i,extra:a,watchable:!0})])}}},aI=new RegExp('"',"ug"),zy=[1105920,1112319];function sI(t){var e=t.replace(aI,""),n=AT(e,0),r=n>=zy[0]&&n<=zy[1],i=e.length===2?e[0]===e[1]:!1;return{value:bf(i?e[0]:e),isSecondary:r||i}}function Ry(t,e){var n="".concat(X6).concat(e.replace(":","-"));return new Promise(function(r,i){if(t.getAttribute(n)!==null)return r();var o=qr(t.children),a=o.filter(function(v){return v.getAttribute(ff)===e})[0],s=hn.getComputedStyle(t,e),c=s.getPropertyValue("font-family").match($6),u=s.getPropertyValue("font-weight"),f=s.getPropertyValue("content");if(a&&!c)return t.removeChild(a),r();if(c&&f!=="none"&&f!==""){var l=s.getPropertyValue("content"),d=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(c[2])?ks[c[2].toLowerCase()]:eT[u],p=sI(l),h=p.value,m=p.isSecondary,g=c[0].startsWith("FontAwesome"),y=wf(d,h),b=y;if(g){var w=MT(h);w.iconName&&w.prefix&&(y=w.iconName,d=w.prefix)}if(y&&!m&&(!a||a.getAttribute(df)!==d||a.getAttribute(hf)!==b)){t.setAttribute(n,b),a&&t.removeChild(a);var C=KT(),x=C.extra;x.attributes[ff]=e,If(y,d).then(function(v){var A=Df(I(I({},C),{},{icons:{main:v,mask:Cf()},prefix:d,iconName:b,extra:x,watchable:!0})),D=te.createElement("svg");e==="::before"?t.insertBefore(D,t.firstChild):t.appendChild(D),D.outerHTML=A.map(function(k){return So(k)}).join(`
|
2146
|
+
`),t.removeAttribute(n),r()}).catch(i)}else r()}else r()})}function cI(t){return Promise.all([Ry(t,"::before"),Ry(t,"::after")])}function uI(t){return t.parentNode!==document.head&&!~q6.indexOf(t.tagName.toUpperCase())&&!t.getAttribute(ff)&&(!t.parentNode||t.parentNode.tagName!=="svg")}function jy(t){if(Pt)return new Promise(function(e,n){var r=qr(t.querySelectorAll("*")).filter(uI).map(cI),i=Nf.begin("searchPseudoElements");Ly(),Promise.all(r).then(function(){i(),Bf(),e()}).catch(function(){i(),Bf(),n()})})}var lI={hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=jy,n}}},provides:function(e){e.pseudoElements2svg=function(n){var r=n.node,i=r===void 0?te:r;F.searchPseudoElements&&jy(i)}}},Uy=!1,fI={mixout:function(){return{dom:{unwatch:function(){Ly(),Uy=!0}}}},hooks:function(){return{bootstrap:function(){By(Sf("mutationObserverCallbacks",{}))},noAuto:function(){WT()},watch:function(n){var r=n.observeMutationsRoot;Uy?Bf():By(Sf("mutationObserverCallbacks",{observeMutationsRoot:r}))}}}},Hy=function(e){var n={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return e.toLowerCase().split(" ").reduce(function(r,i){var o=i.toLowerCase().split("-"),a=o[0],s=o.slice(1).join("-");if(a&&s==="h")return r.flipX=!0,r;if(a&&s==="v")return r.flipY=!0,r;if(s=parseFloat(s),isNaN(s))return r;switch(a){case"grow":r.size=r.size+s;break;case"shrink":r.size=r.size-s;break;case"left":r.x=r.x-s;break;case"right":r.x=r.x+s;break;case"up":r.y=r.y-s;break;case"down":r.y=r.y+s;break;case"rotate":r.rotate=r.rotate+s;break}return r},n)},dI={mixout:function(){return{parse:{transform:function(n){return Hy(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,r){var i=r.getAttribute("data-fa-transform");return i&&(n.transform=Hy(i)),n}}},provides:function(e){e.generateAbstractTransformGrouping=function(n){var r=n.main,i=n.transform,o=n.containerWidth,a=n.iconWidth,s={transform:"translate(".concat(o/2," 256)")},c="translate(".concat(i.x*32,", ").concat(i.y*32,") "),u="scale(".concat(i.size/16*(i.flipX?-1:1),", ").concat(i.size/16*(i.flipY?-1:1),") "),f="rotate(".concat(i.rotate," 0 0)"),l={transform:"".concat(c," ").concat(u," ").concat(f)},d={transform:"translate(".concat(a/2*-1," -256)")},p={outer:s,inner:l,path:d};return{tag:"g",attributes:I({},p.outer),children:[{tag:"g",attributes:I({},p.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:I(I({},r.icon.attributes),p.path)}]}]}}}},Of={x:0,y:0,width:"100%",height:"100%"};function Gy(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return t.attributes&&(t.attributes.fill||e)&&(t.attributes.fill="black"),t}function hI(t){return t.tag==="g"?t.children:[t]}var pI={hooks:function(){return{parseNodeAttributes:function(n,r){var i=r.getAttribute("data-fa-mask"),o=i?Fs(i.split(" ").map(function(a){return a.trim()})):Cf();return o.prefix||(o.prefix=mn()),n.mask=o,n.maskId=r.getAttribute("data-fa-mask-id"),n}}},provides:function(e){e.generateAbstractMask=function(n){var r=n.children,i=n.attributes,o=n.main,a=n.mask,s=n.maskId,c=n.transform,u=o.width,f=o.icon,l=a.width,d=a.icon,p=dT({transform:c,containerWidth:l,iconWidth:u}),h={tag:"rect",attributes:I(I({},Of),{},{fill:"white"})},m=f.children?{children:f.children.map(Gy)}:{},g={tag:"g",attributes:I({},p.inner),children:[Gy(I({tag:f.tag,attributes:I(I({},f.attributes),p.path)},m))]},y={tag:"g",attributes:I({},p.outer),children:[g]},b="mask-".concat(s||Co()),w="clip-".concat(s||Co()),C={tag:"mask",attributes:I(I({},Of),{},{id:b,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[h,y]},x={tag:"defs",children:[{tag:"clipPath",attributes:{id:w},children:hI(d)},C]};return r.push(x,{tag:"rect",attributes:I({fill:"currentColor","clip-path":"url(#".concat(w,")"),mask:"url(#".concat(b,")")},Of)}),{children:r,attributes:i}}}},mI={provides:function(e){var n=!1;hn.matchMedia&&(n=hn.matchMedia("(prefers-reduced-motion: reduce)").matches),e.missingIconAbstract=function(){var r=[],i={fill:"currentColor"},o={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};r.push({tag:"path",attributes:I(I({},i),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var a=I(I({},o),{},{attributeName:"opacity"}),s={tag:"circle",attributes:I(I({},i),{},{cx:"256",cy:"364",r:"28"}),children:[]};return n||s.children.push({tag:"animate",attributes:I(I({},o),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:I(I({},a),{},{values:"1;0;1;1;0;1;"})}),r.push(s),r.push({tag:"path",attributes:I(I({},i),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:n?[]:[{tag:"animate",attributes:I(I({},a),{},{values:"1;0;0;0;0;1;"})}]}),n||r.push({tag:"path",attributes:I(I({},i),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:I(I({},a),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:r}}}},gI={hooks:function(){return{parseNodeAttributes:function(n,r){var i=r.getAttribute("data-fa-symbol"),o=i===null?!1:i===""?!0:i;return n.symbol=o,n}}}},yI=[mT,nI,rI,iI,oI,lI,fI,dI,pI,mI,gI];kT(yI,{mixoutsTo:Ue}),Ue.noAuto,Ue.config,Ue.library,Ue.dom,Ue.parse,Ue.findIconDefinition,Ue.toHtml;var K=Ue.icon;Ue.layer,Ue.text,Ue.counter;/**
|
2138
2147
|
* @license
|
2139
2148
|
* Copyright 2018 Google LLC
|
2140
2149
|
* SPDX-License-Identifier: BSD-3-Clause
|
2141
|
-
*/const
|
2150
|
+
*/const Ff=or(class extends Zr{constructor(t){var e;if(super(t),t.type!==vt.ATTRIBUTE||t.name!=="style"||((e=t.strings)===null||e===void 0?void 0:e.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(t){return Object.keys(t).reduce((e,n)=>{const r=t[n];return r==null?e:e+`${n=n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`},"")}update(t,[e]){const{style:n}=t.element;if(this.vt===void 0){this.vt=new Set;for(const r in e)this.vt.add(r);return this.render(e)}this.vt.forEach(r=>{e[r]==null&&(this.vt.delete(r),r.includes("-")?n.removeProperty(r):n[r]="")});for(const r in e){const i=e[r];i!=null&&(this.vt.add(r),r.includes("-")?n.setProperty(r,i):n[r]=i)}return Ae}});/**
|
2142
2151
|
* @license
|
2143
2152
|
* Copyright 2020 Google LLC
|
2144
2153
|
* SPDX-License-Identifier: BSD-3-Clause
|
2145
|
-
*/const{I:
|
2154
|
+
*/const{I:vI}=v4,bI=t=>t===null||typeof t!="object"&&typeof t!="function",Qy=t=>t.strings===void 0,Vy=()=>document.createComment(""),Mo=(t,e,n)=>{var r;const i=t._$AA.parentNode,o=e===void 0?t._$AB:e._$AA;if(n===void 0){const a=i.insertBefore(Vy(),o),s=i.insertBefore(Vy(),o);n=new vI(a,s,t,t.options)}else{const a=n._$AB.nextSibling,s=n._$AM,c=s!==t;if(c){let u;(r=n._$AQ)===null||r===void 0||r.call(n,t),n._$AM=t,n._$AP!==void 0&&(u=t._$AU)!==s._$AU&&n._$AP(u)}if(a!==o||c){let u=n._$AA;for(;u!==a;){const f=u.nextSibling;i.insertBefore(u,o),u=f}}}return n},lr=(t,e,n=t)=>(t._$AI(e,n),t),AI={},Yy=(t,e=AI)=>t._$AH=e,xI=t=>t._$AH,Pf=t=>{var e;(e=t._$AP)===null||e===void 0||e.call(t,!1,!0);let n=t._$AA;const r=t._$AB.nextSibling;for(;n!==r;){const i=n.nextSibling;n.remove(),n=i}};/**
|
2146
2155
|
* @license
|
2147
2156
|
* Copyright 2017 Google LLC
|
2148
2157
|
* SPDX-License-Identifier: BSD-3-Clause
|
2149
|
-
*/const Yy=(t,e,n)=>{const r=new Map;for(let i=e;i<=n;i++)r.set(t[i],i);return r},AI=or(class extends qr{constructor(t){if(super(t),t.type!==vt.CHILD)throw Error("repeat() can only be used in text expressions")}ht(t,e,n){let r;n===void 0?n=e:e!==void 0&&(r=e);const i=[],o=[];let a=0;for(const s of t)i[a]=r?r(s,a):a,o[a]=n(s,a),a++;return{values:o,keys:i}}render(t,e,n){return this.ht(t,e,n).values}update(t,[e,n,r]){var i;const o=bI(t),{values:a,keys:s}=this.ht(e,n,r);if(!Array.isArray(o))return this.ut=s,a;const c=(i=this.ut)!==null&&i!==void 0?i:this.ut=[],u=[];let f,l,d=0,p=o.length-1,h=0,m=a.length-1;for(;d<=p&&h<=m;)if(o[d]===null)d++;else if(o[p]===null)p--;else if(c[d]===s[h])u[h]=lr(o[d],a[h]),d++,h++;else if(c[p]===s[m])u[m]=lr(o[p],a[m]),p--,m--;else if(c[d]===s[m])u[m]=lr(o[d],a[m]),Mo(t,u[m+1],o[d]),d++,m--;else if(c[p]===s[h])u[h]=lr(o[p],a[h]),Mo(t,o[d],o[p]),p--,h++;else if(f===void 0&&(f=Yy(s,h,m),l=Yy(c,d,p)),f.has(c[d]))if(f.has(c[p])){const g=l.get(s[h]),y=g!==void 0?o[g]:null;if(y===null){const b=Mo(t,o[d]);lr(b,a[h]),u[h]=b}else u[h]=lr(y,a[h]),Mo(t,o[d],y),o[g]=null;h++}else Ff(o[p]),p--;else Ff(o[d]),d++;for(;h<=m;){const g=Mo(t,u[m+1]);lr(g,a[h]),u[h++]=g}for(;d<=p;){const g=o[d++];g!==null&&Ff(g)}return this.ut=s,Vy(t,u),Ae}}),_y="close-dialog";function xI(){return new CustomEvent(_y,{bubbles:!0})}function fr(t="default",e=document.body){const n=document.createElement("div");n.classList.add("gs-modal"),t!="default"&&n.classList.add(t);const r=o=>{var a;switch(o.key){case"Escape":{const s=n.querySelector(".btn-cancel");s&&(s.click(),o.stopPropagation());break}case"Enter":{if(((a=o.target)==null?void 0:a.tagName)=="TEXTAREA")return;n.querySelector(".btn-primary").click(),o.stopPropagation();break}}};n.addEventListener("keydown",r),Be(E`<div class="backdrop"></div><div class="content"></div>`,n);const i=()=>{n.querySelector(".backdrop").addEventListener("transitionend",()=>n.remove()),n.classList.remove("visible"),document.body.classList.remove(Vn)};return n.addEventListener("keydown",o=>{o.stopPropagation()}),n.addEventListener(_y,i),e.appendChild(n),window.requestAnimationFrame(()=>n.classList.add("visible")),t!="tour"&&document.body.classList.add(Vn),{content:n.querySelector(".content"),close:i}}function He(t,e={}){const n=fr(),r=e.title;return e.okLabel??(e.okLabel="OK"),new Promise((i,o)=>{const a=()=>{n.close(),i(!0)},s=E`${r?E`<div class="modal-title">${r}</div>`:z}<div class="modal-body" style="max-width:700px">${t}</div><div class="modal-buttons">${e.cancelButton?E`<button class="btn" @click="${()=>{n.close(),i(!1)}}">Cancel</button>`:z} <button class="btn" @click="${a}">${e.okLabel}</button></div>`;Be(s,n.content)})}class Wy extends yt{constructor(){super();$(this,cc);$(this,uc);$(this,Xo);$(this,lc);$(this,fi,void 0);$(this,Yt,void 0);$(this,An,void 0);$(this,Wo,0);this.values=[],this.thresholds=[],this.operators=[],this.colors=Xy,this.showThresholdNumbers=!1,et(this,fi,K2().thresholds(40)),et(this,Yt,j(this,fi).call(this,[])),et(this,An,Na())}connectedCallback(){super.connectedCallback()}createRenderRoot(){return this}willUpdate(n){n.has("values")&&(et(this,Yt,j(this,fi).call(this,this.values)),et(this,An,Na().domain(this.domain).range([0,100])))}get domain(){return[j(this,Yt).at(0).x0,j(this,Yt).at(-1).x1]}render(){const n=j(this,An),r=100/j(this,Yt).length,i=se(this,lc,Jb).call(this).map(o=>E`<div style="${Of({width:r+.01+"%",left:o.x+"%",bottom:o.y+"%",height:o.height+"%",backgroundColor:typeof o.group=="number"?this.colors[o.group%this.colors.length]:"default"})}"></div>`);return E`<div class="histogram-widget"><div class="histogram-plot"><div class="histogram-bars">${i}</div><div class="histogram-thresholds" @click="${se(this,cc,qb)}">${this.thresholds.map((o,a)=>{const s=n(o);return s>=0&&s<=100?E`<div class="histogram-threshold" style="${Of({left:n(o)+"%"})}"><div class="histogram-knob" @mousedown="${c=>se(this,uc,Kb).call(this,c,a)}">${this.showThresholdNumbers?a+1:z}</div></div>`:z})}</div><div class="${rf({"histogram-hint":!0,visible:!this.thresholds.length})}"><span>Click here to add a threshold!</span></div></div><div class="histogram-domain"></div><div class="histogram-extent">${n.domain().map(o=>E`<div>${o}</div>`)}</div></div>`}}fi=new WeakMap,Yt=new WeakMap,An=new WeakMap,Wo=new WeakMap,cc=new WeakSet,qb=function(n){if(performance.now()<j(this,Wo)+200)return;const r=n.target,i=hp(r,n);se(this,Xo,Rd).call(this,"add",0,i[0]/r.offsetWidth)},uc=new WeakSet,Kb=function(n,r){const o=n.target.closest(".histogram-threshold"),a=o.offsetLeft,s=o.offsetParent.offsetWidth;n.preventDefault(),n.stopPropagation(),this.style.cursor="col-resize",CI(n,(c,u)=>{se(this,Xo,Rd).call(this,"adjust",r,(a+c)/s)},()=>{et(this,Wo,performance.now()),this.style.cursor=""})},Xo=new WeakSet,Rd=function(n,r,i){i=ms(i,0,1),this.dispatchEvent(new wI(n,r,+j(this,An).invert(i*100).toPrecision(3)))},lc=new WeakSet,Jb=function(){const n=j(this,Yt),r=j(this,An),i=90/n.map(f=>f.length).reduce((f,l)=>Math.max(f,l),0),o=[],a=this.thresholds.length==1&&this.operators[0]=="eq",s=[-1/0,...this.thresholds,1/0],c=[!1,...this.operators.map(f=>["lte","gt"].includes(f)),!0],u=["gt","gte"].includes(this.operators[0])?f=>s.length-f-2:f=>f;for(let f=0;f<n.length;f++){const l=n[f],d=r(l.x0);let p=0,h=0;if(a)for(let m=0;m<=1;m++)h=EI(l,this.thresholds[0],m>0),h&&o.push({x:d,y:p*i,height:h*i,group:m}),p+=h;else if(this.thresholds.length)for(let m=0;m<s.length-1;m++){const g=u(m);h=SI(l,s[g],s[g+1],!c[g],c[g+1]),h&&o.push({x:d,y:p*i,height:h*i,group:m}),p+=h}else h=l.length,h&&o.push({x:d,y:p,height:h*i,group:null})}return o},hc(Wy,"properties",{values:{attribute:!1},thresholds:{attribute:!1},operators:{attribute:!1},colors:{attribute:!1},showThresholdNumbers:{}}),customElements.define("genome-spy-histogram",Wy);class wI extends Event{constructor(e,n,r){super(e),this.index=n,this.value=r}}function CI(t,e,n){const r=t.clientX,i=t.clientY,o=function(s){e(s.clientX-r,s.clientY-i)},a=function(s){document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",a),n==null||n(s.clientX-r,s.clientY-i)};document.addEventListener("mousemove",o),document.addEventListener("mouseup",a)}function SI(t,e,n,r=!0,i=!1){const o=r?c=>c>=e:c=>c>e,a=i?c=>c<=n:c=>c<n;let s=0;for(let c=0;c<t.length;c++){const u=t[c];o(u)&&a(u)&&s++}return s}function EI(t,e,n=!1){let r=0;for(let i=0;i<t.length;i++)r+=+(t[i]==e);return n?t.length-r:r}const Xy=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b"];function DI(t,e){var r;const n=(r=t.scale)==null?void 0:r.type;nn(n)?TI(t,e):Le(n)||Hn(n)?II(t,e):t.type==="identifier"?MI(t,e):He("Not implemented (yet).")}function MI(t,e){Zy(e.getSamples().map(n=>n.id),t,e)}function TI(t,e){const n=t.scale,r=i=>E`<span class="color" style="${Of({backgroundColor:n(i).toString()})}"></span>`;Zy(n.domain(),t,e,r)}function Zy(t,e,n,r=i=>z){const i=n.provenance.storeHelper.getDispatcher(),o=new Set(qy(e,n.leafSamples,n.sampleHierarchy)),a=t.filter(C=>o.has(C)).map((C,x)=>({index:x,value:C,stringValue:`${C}`,lowerCaseValue:`${C}`.toLowerCase()})),s=fr(),c=E`<div class="modal-title">Filter by <em>${e.name}</em></div>`,u=new Set;let f="";const l=C=>{i(n.actions.filterByNominal({values:t.filter(x=>u.has(x)),attribute:e.attribute,remove:C})),s.close()},d=()=>a.filter(C=>f.length==0||C.lowerCaseValue.includes(f)),p=C=>{f=C.target.value.toLowerCase(),w()},h=C=>{const x=C.target,v=a[+x.value].value;x.checked?u.add(v):u.delete(v),w()},m=C=>{var x;if(C.key=="ArrowDown")(x=s.content.querySelector(".gs-checkbox-list li:first-child input[type='checkbox']"))==null||x.focus(),C.preventDefault(),C.stopPropagation();else if(C.key=="Enter"){const v=d();v.length==1&&(u.add(v[0].value),w()),C.stopPropagation()}},g=()=>{s.content.querySelector("input[type='text']").focus()},y=C=>{var v,A,D,k,O;const x=C.target;if(x.type=="checkbox")if(C.key=="ArrowDown")(A=(v=x.closest("li").nextElementSibling)==null?void 0:v.querySelector("input[type='checkbox']"))==null||A.focus(),C.preventDefault();else if(C.key=="ArrowUp"){const T=(D=x.closest("li").previousElementSibling)==null?void 0:D.querySelector("input[type='checkbox']");T?T.focus():g(),C.preventDefault()}else C.key=="Esc"?(g(),C.stopPropagation()):C.key=="Tab"&&!C.shiftKey?(k=x.closest(".gs-checkbox-list").querySelector("li:last-child input"))==null||k.focus():C.key=="Tab"&&C.shiftKey&&((O=x.closest(".gs-checkbox-list").querySelector("li:first-child input"))==null||O.focus())},b=()=>E`<div class="modal-buttons"><button class="btn btn-cancel" @click="${()=>s.close()}">Cancel</button> <button class="btn" ?disabled="${!u.size}" @click="${()=>l(!1)}">${K(ar).node[0]} Retain</button> <button class="btn" ?disabled="${!u.size}" @click="${()=>l(!0)}">${K(Es).node[0]} Remove</button></div>`;function w(){const C=d(),x=E`<div class="gs-form-group"><p>Please select one or more categories and choose an action.</p><input type="text" placeholder="Type something to filter the list" @keydown="${m}" @input="${p}"><div class="gs-checkbox-list-wrapper"><ul class="gs-checkbox-list" @input="${h}" @keydown="${y}">${AI(C,A=>A.value,A=>E`<li><label class="checkbox">${r(A.value)} <input type="checkbox" .checked="${u.has(A.value)}" .value="${""+A.index}"> ${A.stringValue}</label></li>`)}</ul>${C.length==0?E`<div class="search-note"><div>Nothing found</div></div>`:C.length==1&&a.length>1?E`<div class="search-note"><div>${K(f6).node[0]} Hit enter to select the exact match</div></div>`:z}</div><small>The number of selected categories: <strong>${u.size}</strong></small></div>`;Be(E`${c}<div class="modal-body">${x}</div>${b()}`,s.content);const v=s.content.querySelector(".gs-checkbox-list");v.style.minHeight=`${v.offsetHeight}px`}w(),g()}function II(t,e){var g;const n=e.provenance.storeHelper.getDispatcher();let r="lt",i;const o=fr(),a=E`<div class="modal-title">Filter by <em>${t.name}</em></div>`,s=y=>{n(e.actions.filterByQuantitative({attribute:t.attribute,operator:r,operand:i})),o.close()},c=()=>E`<div class="modal-buttons"><button class="btn btn-cancel" @click="${()=>o.close()}">Cancel</button> <button class="btn btn-primary" ?disabled="${typeof i>"u"}" @click="${()=>s()}">${K(ar).node[0]} Retain</button></div>`,u=y=>{r=y.target.value,m()},f=y=>{const w=y.target.value;/^\d+(\.(\d+)?)?$/.test(w)&&(i=+w,m())},l=y=>{typeof i!="number"&&(i=y.value,m())},d=y=>{i=y.value,m()},p=qy(t,e.leafSamples,e.sampleHierarchy),h=()=>E`<div class="gs-form-group"><label>Retain samples where <em>${t.name}</em> is</label><div class="btn-group" role="group">${Object.entries(kI).map(([y,b])=>E`<button class="${rf({btn:!0,chosen:y==r})}" .value="${y}" @click="${u}" title="${b[1]}">${b[0]}</button>`)}</div><genome-spy-histogram .values="${p}" .thresholds="${[i].filter(y=>y!==void 0)}" .operators="${[r]}" .colors="${["#1f77b4","#ddd"]}" .showThresholdNumbers="${!1}" @add="${l}" @adjust="${d}"></genome-spy-histogram><input type="text" placeholder="... or enter a numeric value here" .value="${typeof i=="number"?""+i:""}" @input="${f}"></div>`;function m(){Be(E`${a}<div class="modal-body">${h()}</div>${c()}`,o.content)}m(),(g=o.content.querySelector("input[type='text']"))==null||g.focus()}const kI={lt:["<","less than"],lte:["≤","less than or equal to"],eq:["=","equal to"],gte:["≥","greater than or equal to"],gt:[">","greater than"]};function qy(t,e,n){const r=t.accessor;return e.map(i=>r(i,n))}function ut(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];throw Error("[Immer] minified error nr: "+t+(n.length?" "+n.map(function(i){return"'"+i+"'"}).join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function gn(t){return!!t&&!!t[oe]}function Ut(t){return!!t&&(function(e){if(!e||typeof e!="object")return!1;var n=Object.getPrototypeOf(e);if(n===null)return!0;var r=Object.hasOwnProperty.call(n,"constructor")&&n.constructor;return r===Object||typeof r=="function"&&Function.toString.call(r)===jI}(t)||Array.isArray(t)||!!t[av]||!!t.constructor[av]||Pf(t)||zf(t))}function dr(t,e,n){n===void 0&&(n=!1),ti(t)===0?(n?Object.keys:ri)(t).forEach(function(r){n&&typeof r=="symbol"||e(r,t[r],t)}):t.forEach(function(r,i){return e(i,r,t)})}function ti(t){var e=t[oe];return e?e.i>3?e.i-4:e.i:Array.isArray(t)?1:Pf(t)?2:zf(t)?3:0}function ni(t,e){return ti(t)===2?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function NI(t,e){return ti(t)===2?t.get(e):t[e]}function Ky(t,e,n){var r=ti(t);r===2?t.set(e,n):r===3?(t.delete(e),t.add(n)):t[e]=n}function Jy(t,e){return t===e?t!==0||1/t==1/e:t!=t&&e!=e}function Pf(t){return zI&&t instanceof Map}function zf(t){return RI&&t instanceof Set}function hr(t){return t.o||t.t}function Rf(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var e=sv(t);delete e[oe];for(var n=ri(e),r=0;r<n.length;r++){var i=n[r],o=e[i];o.writable===!1&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(e[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:t[i]})}return Object.create(Object.getPrototypeOf(t),e)}function jf(t,e){return e===void 0&&(e=!1),Uf(t)||gn(t)||!Ut(t)||(ti(t)>1&&(t.set=t.add=t.clear=t.delete=LI),Object.freeze(t),e&&dr(t,function(n,r){return jf(r,!0)},!0)),t}function LI(){ut(2)}function Uf(t){return t==null||typeof t!="object"||Object.isFrozen(t)}function At(t){var e=Zf[t];return e||ut(18,t),e}function BI(t,e){Zf[t]||(Zf[t]=e)}function Hf(){return To}function Gf(t,e){e&&(At("Patches"),t.u=[],t.s=[],t.v=e)}function js(t){Qf(t),t.p.forEach(OI),t.p=null}function Qf(t){t===To&&(To=t.l)}function $y(t){return To={p:[],l:To,h:t,m:!0,_:0}}function OI(t){var e=t[oe];e.i===0||e.i===1?e.j():e.O=!0}function Vf(t,e){e._=e.p.length;var n=e.p[0],r=t!==void 0&&t!==n;return e.h.g||At("ES5").S(e,t,r),r?(n[oe].P&&(js(e),ut(4)),Ut(t)&&(t=Us(e,t),e.l||Hs(e,t)),e.u&&At("Patches").M(n[oe].t,t,e.u,e.s)):t=Us(e,n,[]),js(e),e.u&&e.v(e.u,e.s),t!==ov?t:void 0}function Us(t,e,n){if(Uf(e))return e;var r=e[oe];if(!r)return dr(e,function(o,a){return ev(t,r,e,o,a,n)},!0),e;if(r.A!==t)return e;if(!r.P)return Hs(t,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=Rf(r.k):r.o;dr(r.i===3?new Set(i):i,function(o,a){return ev(t,r,i,o,a,n)}),Hs(t,i,!1),n&&t.u&&At("Patches").R(r,n,t.u,t.s)}return r.o}function ev(t,e,n,r,i,o){if(gn(i)){var a=Us(t,i,o&&e&&e.i!==3&&!ni(e.D,r)?o.concat(r):void 0);if(Ky(n,r,a),!gn(a))return;t.m=!1}if(Ut(i)&&!Uf(i)){if(!t.h.F&&t._<1)return;Us(t,i),e&&e.A.l||Hs(t,i)}}function Hs(t,e,n){n===void 0&&(n=!1),t.h.F&&t.m&&jf(e,n)}function Yf(t,e){var n=t[oe];return(n?hr(n):t)[e]}function tv(t,e){if(e in t)for(var n=Object.getPrototypeOf(t);n;){var r=Object.getOwnPropertyDescriptor(n,e);if(r)return r;n=Object.getPrototypeOf(n)}}function yn(t){t.P||(t.P=!0,t.l&&yn(t.l))}function _f(t){t.o||(t.o=Rf(t.t))}function Wf(t,e,n){var r=Pf(e)?At("MapSet").N(e,n):zf(e)?At("MapSet").T(e,n):t.g?function(i,o){var a=Array.isArray(i),s={i:a?1:0,A:o?o.A:Hf(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},c=s,u=Io;a&&(c=[s],u=ko);var f=Proxy.revocable(c,u),l=f.revoke,d=f.proxy;return s.k=d,s.j=l,d}(e,n):At("ES5").J(e,n);return(n?n.A:Hf()).p.push(r),r}function FI(t){return gn(t)||ut(22,t),function e(n){if(!Ut(n))return n;var r,i=n[oe],o=ti(n);if(i){if(!i.P&&(i.i<4||!At("ES5").K(i)))return i.t;i.I=!0,r=nv(n,o),i.I=!1}else r=nv(n,o);return dr(r,function(a,s){i&&NI(i.t,a)===s||Ky(r,a,e(s))}),o===3?new Set(r):r}(t)}function nv(t,e){switch(e){case 2:return new Map(t);case 3:return Array.from(t)}return Rf(t)}function PI(){function t(o,a){var s=i[o];return s?s.enumerable=a:i[o]=s={configurable:!0,enumerable:a,get:function(){var c=this[oe];return Io.get(c,o)},set:function(c){var u=this[oe];Io.set(u,o,c)}},s}function e(o){for(var a=o.length-1;a>=0;a--){var s=o[a][oe];if(!s.P)switch(s.i){case 5:r(s)&&yn(s);break;case 4:n(s)&&yn(s)}}}function n(o){for(var a=o.t,s=o.k,c=ri(s),u=c.length-1;u>=0;u--){var f=c[u];if(f!==oe){var l=a[f];if(l===void 0&&!ni(a,f))return!0;var d=s[f],p=d&&d[oe];if(p?p.t!==l:!Jy(d,l))return!0}}var h=!!a[oe];return c.length!==ri(a).length+(h?0:1)}function r(o){var a=o.k;if(a.length!==o.t.length)return!0;var s=Object.getOwnPropertyDescriptor(a,a.length-1);if(s&&!s.get)return!0;for(var c=0;c<a.length;c++)if(!a.hasOwnProperty(c))return!0;return!1}var i={};BI("ES5",{J:function(o,a){var s=Array.isArray(o),c=function(f,l){if(f){for(var d=Array(l.length),p=0;p<l.length;p++)Object.defineProperty(d,""+p,t(p,!0));return d}var h=sv(l);delete h[oe];for(var m=ri(h),g=0;g<m.length;g++){var y=m[g];h[y]=t(y,f||!!h[y].enumerable)}return Object.create(Object.getPrototypeOf(l),h)}(s,o),u={i:s?5:4,A:a?a.A:Hf(),P:!1,I:!1,D:{},l:a,t:o,k:c,o:null,O:!1,C:!1};return Object.defineProperty(c,oe,{value:u,writable:!0}),c},S:function(o,a,s){s?gn(a)&&a[oe].A===o&&e(o.p):(o.u&&function c(u){if(u&&typeof u=="object"){var f=u[oe];if(f){var l=f.t,d=f.k,p=f.D,h=f.i;if(h===4)dr(d,function(w){w!==oe&&(l[w]!==void 0||ni(l,w)?p[w]||c(d[w]):(p[w]=!0,yn(f)))}),dr(l,function(w){d[w]!==void 0||ni(d,w)||(p[w]=!1,yn(f))});else if(h===5){if(r(f)&&(yn(f),p.length=!0),d.length<l.length)for(var m=d.length;m<l.length;m++)p[m]=!1;else for(var g=l.length;g<d.length;g++)p[g]=!0;for(var y=Math.min(d.length,l.length),b=0;b<y;b++)d.hasOwnProperty(b)||(p[b]=!0),p[b]===void 0&&c(d[b])}}}}(o.p[0]),e(o.p))},K:function(o){return o.i===4?n(o):r(o)}})}var rv,To,Xf=typeof Symbol<"u"&&typeof Symbol("x")=="symbol",zI=typeof Map<"u",RI=typeof Set<"u",iv=typeof Proxy<"u"&&Proxy.revocable!==void 0&&typeof Reflect<"u",ov=Xf?Symbol.for("immer-nothing"):((rv={})["immer-nothing"]=!0,rv),av=Xf?Symbol.for("immer-draftable"):"__$immer_draftable",oe=Xf?Symbol.for("immer-state"):"__$immer_state",jI=""+Object.prototype.constructor,ri=typeof Reflect<"u"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,sv=Object.getOwnPropertyDescriptors||function(t){var e={};return ri(t).forEach(function(n){e[n]=Object.getOwnPropertyDescriptor(t,n)}),e},Zf={},Io={get:function(t,e){if(e===oe)return t;var n=hr(t);if(!ni(n,e))return function(i,o,a){var s,c=tv(o,a);return c?"value"in c?c.value:(s=c.get)===null||s===void 0?void 0:s.call(i.k):void 0}(t,n,e);var r=n[e];return t.I||!Ut(r)?r:r===Yf(t.t,e)?(_f(t),t.o[e]=Wf(t.A.h,r,t)):r},has:function(t,e){return e in hr(t)},ownKeys:function(t){return Reflect.ownKeys(hr(t))},set:function(t,e,n){var r=tv(hr(t),e);if(r!=null&&r.set)return r.set.call(t.k,n),!0;if(!t.P){var i=Yf(hr(t),e),o=i==null?void 0:i[oe];if(o&&o.t===n)return t.o[e]=n,t.D[e]=!1,!0;if(Jy(n,i)&&(n!==void 0||ni(t.t,e)))return!0;_f(t),yn(t)}return t.o[e]===n&&typeof n!="number"&&(n!==void 0||e in t.o)||(t.o[e]=n,t.D[e]=!0,!0)},deleteProperty:function(t,e){return Yf(t.t,e)!==void 0||e in t.t?(t.D[e]=!1,_f(t),yn(t)):delete t.D[e],t.o&&delete t.o[e],!0},getOwnPropertyDescriptor:function(t,e){var n=hr(t),r=Reflect.getOwnPropertyDescriptor(n,e);return r&&{writable:!0,configurable:t.i!==1||e!=="length",enumerable:r.enumerable,value:n[e]}},defineProperty:function(){ut(11)},getPrototypeOf:function(t){return Object.getPrototypeOf(t.t)},setPrototypeOf:function(){ut(12)}},ko={};dr(Io,function(t,e){ko[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),ko.deleteProperty=function(t,e){return ko.set.call(this,t,e,void 0)},ko.set=function(t,e,n){return Io.set.call(this,t[0],e,n,t[0])};var UI=function(){function t(n){var r=this;this.g=iv,this.F=!0,this.produce=function(i,o,a){if(typeof i=="function"&&typeof o!="function"){var s=o;o=i;var c=r;return function(m){var g=this;m===void 0&&(m=s);for(var y=arguments.length,b=Array(y>1?y-1:0),w=1;w<y;w++)b[w-1]=arguments[w];return c.produce(m,function(C){var x;return(x=o).call.apply(x,[g,C].concat(b))})}}var u;if(typeof o!="function"&&ut(6),a!==void 0&&typeof a!="function"&&ut(7),Ut(i)){var f=$y(r),l=Wf(r,i,void 0),d=!0;try{u=o(l),d=!1}finally{d?js(f):Qf(f)}return typeof Promise<"u"&&u instanceof Promise?u.then(function(m){return Gf(f,a),Vf(m,f)},function(m){throw js(f),m}):(Gf(f,a),Vf(u,f))}if(!i||typeof i!="object"){if((u=o(i))===void 0&&(u=i),u===ov&&(u=void 0),r.F&&jf(u,!0),a){var p=[],h=[];At("Patches").M(i,u,p,h),a(p,h)}return u}ut(21,i)},this.produceWithPatches=function(i,o){if(typeof i=="function")return function(u){for(var f=arguments.length,l=Array(f>1?f-1:0),d=1;d<f;d++)l[d-1]=arguments[d];return r.produceWithPatches(u,function(p){return i.apply(void 0,[p].concat(l))})};var a,s,c=r.produce(i,o,function(u,f){a=u,s=f});return typeof Promise<"u"&&c instanceof Promise?c.then(function(u){return[u,a,s]}):[c,a,s]},typeof(n==null?void 0:n.useProxies)=="boolean"&&this.setUseProxies(n.useProxies),typeof(n==null?void 0:n.autoFreeze)=="boolean"&&this.setAutoFreeze(n.autoFreeze)}var e=t.prototype;return e.createDraft=function(n){Ut(n)||ut(8),gn(n)&&(n=FI(n));var r=$y(this),i=Wf(this,n,void 0);return i[oe].C=!0,Qf(r),i},e.finishDraft=function(n,r){var i=n&&n[oe],o=i.A;return Gf(o,r),Vf(void 0,o)},e.setAutoFreeze=function(n){this.F=n},e.setUseProxies=function(n){n&&!iv&&ut(20),this.g=n},e.applyPatches=function(n,r){var i;for(i=r.length-1;i>=0;i--){var o=r[i];if(o.path.length===0&&o.op==="replace"){n=o.value;break}}i>-1&&(r=r.slice(i+1));var a=At("Patches").$;return gn(n)?a(n,r):this.produce(n,function(s){return a(s,r)})},t}(),Ge=new UI,cv=Ge.produce;Ge.produceWithPatches.bind(Ge),Ge.setAutoFreeze.bind(Ge),Ge.setUseProxies.bind(Ge),Ge.applyPatches.bind(Ge),Ge.createDraft.bind(Ge),Ge.finishDraft.bind(Ge);function HI(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function uv(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),n.push.apply(n,r)}return n}function lv(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?uv(Object(n),!0).forEach(function(r){HI(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):uv(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Ee(t){return"Minified Redux error #"+t+"; visit https://redux.js.org/Errors?code="+t+" for the full message or use the non-minified dev environment for full errors. "}var fv=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),qf=function(){return Math.random().toString(36).substring(7).split("").join(".")},Gs={INIT:"@@redux/INIT"+qf(),REPLACE:"@@redux/REPLACE"+qf(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+qf()}};function GI(t){if(typeof t!="object"||t===null)return!1;for(var e=t;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function dv(t,e,n){var r;if(typeof e=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(Ee(0));if(typeof e=="function"&&typeof n>"u"&&(n=e,e=void 0),typeof n<"u"){if(typeof n!="function")throw new Error(Ee(1));return n(dv)(t,e)}if(typeof t!="function")throw new Error(Ee(2));var i=t,o=e,a=[],s=a,c=!1;function u(){s===a&&(s=a.slice())}function f(){if(c)throw new Error(Ee(3));return o}function l(m){if(typeof m!="function")throw new Error(Ee(4));if(c)throw new Error(Ee(5));var g=!0;return u(),s.push(m),function(){if(g){if(c)throw new Error(Ee(6));g=!1,u();var b=s.indexOf(m);s.splice(b,1),a=null}}}function d(m){if(!GI(m))throw new Error(Ee(7));if(typeof m.type>"u")throw new Error(Ee(8));if(c)throw new Error(Ee(9));try{c=!0,o=i(o,m)}finally{c=!1}for(var g=a=s,y=0;y<g.length;y++){var b=g[y];b()}return m}function p(m){if(typeof m!="function")throw new Error(Ee(10));i=m,d({type:Gs.REPLACE})}function h(){var m,g=l;return m={subscribe:function(b){if(typeof b!="object"||b===null)throw new Error(Ee(11));function w(){b.next&&b.next(f())}w();var C=g(w);return{unsubscribe:C}}},m[fv]=function(){return this},m}return d({type:Gs.INIT}),r={dispatch:d,subscribe:l,getState:f,replaceReducer:p},r[fv]=h,r}function QI(t){Object.keys(t).forEach(function(e){var n=t[e],r=n(void 0,{type:Gs.INIT});if(typeof r>"u")throw new Error(Ee(12));if(typeof n(void 0,{type:Gs.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(Ee(13))})}function Kf(t){for(var e=Object.keys(t),n={},r=0;r<e.length;r++){var i=e[r];typeof t[i]=="function"&&(n[i]=t[i])}var o=Object.keys(n),a;try{QI(n)}catch(s){a=s}return function(c,u){if(c===void 0&&(c={}),a)throw a;for(var f=!1,l={},d=0;d<o.length;d++){var p=o[d],h=n[p],m=c[p],g=h(m,u);if(typeof g>"u")throw u&&u.type,new Error(Ee(14));l[p]=g,f=f||g!==m}return f=f||o.length!==Object.keys(c).length,f?l:c}}function Qs(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.length===0?function(r){return r}:e.length===1?e[0]:e.reduce(function(r,i){return function(){return r(i.apply(void 0,arguments))}})}function VI(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(r){return function(){var i=r.apply(void 0,arguments),o=function(){throw new Error(Ee(15))},a={getState:i.getState,dispatch:function(){return o.apply(void 0,arguments)}},s=e.map(function(c){return c(a)});return o=Qs.apply(void 0,s)(i.dispatch),lv(lv({},i),{},{dispatch:o})}}}var Vs="NOT_FOUND";function YI(t){var e;return{get:function(r){return e&&t(e.key,r)?e.value:Vs},put:function(r,i){e={key:r,value:i}},getEntries:function(){return e?[e]:[]},clear:function(){e=void 0}}}function _I(t,e){var n=[];function r(s){var c=n.findIndex(function(f){return e(s,f.key)});if(c>-1){var u=n[c];return c>0&&(n.splice(c,1),n.unshift(u)),u.value}return Vs}function i(s,c){r(s)===Vs&&(n.unshift({key:s,value:c}),n.length>t&&n.pop())}function o(){return n}function a(){n=[]}return{get:r,put:i,getEntries:o,clear:a}}var WI=function(e,n){return e===n};function XI(t){return function(n,r){if(n===null||r===null||n.length!==r.length)return!1;for(var i=n.length,o=0;o<i;o++)if(!t(n[o],r[o]))return!1;return!0}}function ZI(t,e){var n=typeof e=="object"?e:{equalityCheck:e},r=n.equalityCheck,i=r===void 0?WI:r,o=n.maxSize,a=o===void 0?1:o,s=n.resultEqualityCheck,c=XI(i),u=a===1?YI(c):_I(a,c);function f(){var l=u.get(arguments);if(l===Vs){if(l=t.apply(null,arguments),s){var d=u.getEntries(),p=d.find(function(h){return s(h.value,l)});p&&(l=p.value)}u.put(arguments,l)}return l}return f.clearCache=function(){return u.clear()},f}function qI(t){var e=Array.isArray(t[0])?t[0]:t;if(!e.every(function(r){return typeof r=="function"})){var n=e.map(function(r){return typeof r=="function"?"function "+(r.name||"unnamed")+"()":typeof r}).join(", ");throw new Error("createSelector expects all input-selectors to be functions, but received the following types: ["+n+"]")}return e}function KI(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];var i=function(){for(var a=arguments.length,s=new Array(a),c=0;c<a;c++)s[c]=arguments[c];var u=0,f,l={memoizeOptions:void 0},d=s.pop();if(typeof d=="object"&&(l=d,d=s.pop()),typeof d!="function")throw new Error("createSelector expects an output function after the inputs, but received: ["+typeof d+"]");var p=l,h=p.memoizeOptions,m=h===void 0?n:h,g=Array.isArray(m)?m:[m],y=qI(s),b=t.apply(void 0,[function(){return u++,d.apply(null,arguments)}].concat(g)),w=t(function(){for(var C=[],x=y.length,v=0;v<x;v++)C.push(y[v].apply(null,arguments));return f=b.apply(null,C),f});return Object.assign(w,{resultFunc:d,memoizedResultFunc:b,dependencies:y,lastResult:function(){return f},recomputations:function(){return u},resetRecomputations:function(){return u=0}}),w};return i}var JI=KI(ZI);function hv(t){var e=function(r){var i=r.dispatch,o=r.getState;return function(a){return function(s){return typeof s=="function"?s(i,o,t):a(s)}}};return e}var pv=hv();pv.withExtraArgument=hv;const mv=pv;var $I=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},t(e,n)};return function(e,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();globalThis&&globalThis.__generator;var Ys=globalThis&&globalThis.__spreadArray||function(t,e){for(var n=0,r=e.length,i=t.length;n<r;n++,i++)t[i]=e[n];return t},e9=Object.defineProperty,gv=Object.getOwnPropertySymbols,t9=Object.prototype.hasOwnProperty,n9=Object.prototype.propertyIsEnumerable,yv=function(t,e,n){return e in t?e9(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},No=function(t,e){for(var n in e||(e={}))t9.call(e,n)&&yv(t,n,e[n]);if(gv)for(var r=0,i=gv(e);r<i.length;r++){var n=i[r];n9.call(e,n)&&yv(t,n,e[n])}return t},r9=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Qs:Qs.apply(null,arguments)};function i9(t){if(typeof t!="object"||t===null)return!1;var e=Object.getPrototypeOf(t);if(e===null)return!0;for(var n=e;Object.getPrototypeOf(n)!==null;)n=Object.getPrototypeOf(n);return e===n}var o9=function(t){$I(e,t);function e(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var i=t.apply(this,n)||this;return Object.setPrototypeOf(i,e.prototype),i}return Object.defineProperty(e,Symbol.species,{get:function(){return e},enumerable:!1,configurable:!0}),e.prototype.concat=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return t.prototype.concat.apply(this,n)},e.prototype.prepend=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return n.length===1&&Array.isArray(n[0])?new(e.bind.apply(e,Ys([void 0],n[0].concat(this)))):new(e.bind.apply(e,Ys([void 0],n.concat(this))))},e}(Array);function Jf(t){return Ut(t)?cv(t,function(){}):t}function a9(t){return typeof t=="boolean"}function s9(){return function(e){return c9(e)}}function c9(t){t===void 0&&(t={});var e=t.thunk,n=e===void 0?!0:e;t.immutableCheck,t.serializableCheck;var r=new o9;return n&&(a9(n)?r.push(mv):r.push(mv.withExtraArgument(n.extraArgument))),r}var u9=!0;function l9(t){var e=s9(),n=t||{},r=n.reducer,i=r===void 0?void 0:r,o=n.middleware,a=o===void 0?e():o,s=n.devTools,c=s===void 0?!0:s,u=n.preloadedState,f=u===void 0?void 0:u,l=n.enhancers,d=l===void 0?void 0:l,p;if(typeof i=="function")p=i;else if(i9(i))p=Kf(i);else throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');var h=a;typeof h=="function"&&(h=h(e));var m=VI.apply(void 0,h),g=Qs;c&&(g=r9(No({trace:!u9},typeof c=="object"&&c)));var y=[m];Array.isArray(d)?y=Ys([m],d):typeof d=="function"&&(y=d(y));var b=g.apply(void 0,y);return dv(p,f,b)}function Lo(t,e){function n(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];if(e){var o=e.apply(void 0,r);if(!o)throw new Error("prepareAction did not return an object");return No(No({type:t,payload:o.payload},"meta"in o&&{meta:o.meta}),"error"in o&&{error:o.error})}return{type:t,payload:r[0]}}return n.toString=function(){return""+t},n.type=t,n.match=function(r){return r.type===t},n}function vv(t){var e={},n=[],r,i={addCase:function(o,a){var s=typeof o=="string"?o:o.type;if(s in e)throw new Error("addCase cannot be called with two reducers for the same action type");return e[s]=a,i},addMatcher:function(o,a){return n.push({matcher:o,reducer:a}),i},addDefaultCase:function(o){return r=o,i}};return t(i),[e,n,r]}function f9(t){return typeof t=="function"}function d9(t,e,n,r){n===void 0&&(n=[]);var i=typeof e=="function"?vv(e):[e,n,r],o=i[0],a=i[1],s=i[2],c;if(f9(t))c=function(){return Jf(t())};else{var u=Jf(t);c=function(){return u}}function f(l,d){l===void 0&&(l=c());var p=Ys([o[d.type]],a.filter(function(h){var m=h.matcher;return m(d)}).map(function(h){var m=h.reducer;return m}));return p.filter(function(h){return!!h}).length===0&&(p=[s]),p.reduce(function(h,m){if(m)if(gn(h)){var g=h,y=m(g,d);return typeof y>"u"?h:y}else{if(Ut(h))return cv(h,function(b){return m(b,d)});var y=m(h,d);if(typeof y>"u"){if(h===null)return h;throw Error("A case reducer on a non-draftable value must not return undefined")}return y}return h},l)}return f.getInitialState=c,f}function h9(t,e){return t+"/"+e}function bv(t){var e=t.name;if(!e)throw new Error("`name` is a required option for createSlice");typeof process<"u";var n=typeof t.initialState=="function"?t.initialState:Jf(t.initialState),r=t.reducers||{},i=Object.keys(r),o={},a={},s={};i.forEach(function(f){var l=r[f],d=h9(e,f),p,h;"reducer"in l?(p=l.reducer,h=l.prepare):p=l,o[f]=p,a[d]=p,s[f]=h?Lo(d,h):Lo(d)});function c(){var f=typeof t.extraReducers=="function"?vv(t.extraReducers):[t.extraReducers],l=f[0],d=l===void 0?{}:l,p=f[1],h=p===void 0?[]:p,m=f[2],g=m===void 0?void 0:m,y=No(No({},d),a);return d9(n,y,h,g)}var u;return{name:e,reducer:function(f,l){return u||(u=c()),u(f,l)},actions:s,caseReducers:o,getInitialState:function(){return u||(u=c()),u.getInitialState()}}}var $f="listenerMiddleware";Lo($f+"/add"),Lo($f+"/removeAll"),Lo($f+"/remove"),PI();function p9(t,e){var n=t+"",r=e+"";return n<r?-1:n==r?0:1}var m9=[].forEach;function g9(t,e,n){if(typeof e!="function")throw new TypeError(e+" is not a function");var r,i=[],o=[],a=[];m9.call(t,function(c,u,f){if(r=e(c,u,f),r===void 0)return void a.push(c);if(n===void 0&&typeof r=="symbol")throw new TypeError("Can't convert symbol to string");i.push(u),o[u]=r}),n===void 0&&(n=p9),i.sort(function(c,u){return n(o[c],o[u])});var s=i.map(function(c){return t[c]}).concat(a);return s.length!=t.length&&(s.length=t.length),s}function y9(t,e){const n=i=>i.copy().range(_t(0,i.domain().length)).unknown(-1);let r;switch(e.type){case"quantitative":r=i=>le(i)&&!isNaN(i)?-i:-1/0;break;case"ordinal":r=n(e.scale);break;case"nominal":r=i=>i||"";break}return i=>r(t(i))}function v9(t,e){const n=new Set,r=i=>{const o=n.has(i);return n.add(i),o};return t.filter(i=>!r(e(i)))}function b9(t,e,n){const r=new Set,i=o=>(r.size<n&&r.add(o),r.has(o));return t.filter(o=>i(e(o)))}function A9(t,e,n=!1){return g9(t,e,(r,i)=>(n&&([r,i]=[i,r]),r<i?-1:r>i?1:0))}const x9={lt:(t,e)=>t<e,lte:(t,e)=>t<=e,eq:(t,e)=>t==e,gte:(t,e)=>t>=e,gt:(t,e)=>t>e};function w9(t,e,n,r){const i=x9[n];return t.filter(o=>i(e(o),r))}function Av(t,e,n,r){const i=new Set(r),o=s=>i.has(s),a=n=="remove"?s=>!o(s):o;return t.filter(s=>a(e(s)))}function C9(t,e){const n=r=>r!=null;return t.filter(r=>n(e(r)))}/**
|
2158
|
+
*/const _y=(t,e,n)=>{const r=new Map;for(let i=e;i<=n;i++)r.set(t[i],i);return r},wI=or(class extends Zr{constructor(t){if(super(t),t.type!==vt.CHILD)throw Error("repeat() can only be used in text expressions")}ht(t,e,n){let r;n===void 0?n=e:e!==void 0&&(r=e);const i=[],o=[];let a=0;for(const s of t)i[a]=r?r(s,a):a,o[a]=n(s,a),a++;return{values:o,keys:i}}render(t,e,n){return this.ht(t,e,n).values}update(t,[e,n,r]){var i;const o=xI(t),{values:a,keys:s}=this.ht(e,n,r);if(!Array.isArray(o))return this.ut=s,a;const c=(i=this.ut)!==null&&i!==void 0?i:this.ut=[],u=[];let f,l,d=0,p=o.length-1,h=0,m=a.length-1;for(;d<=p&&h<=m;)if(o[d]===null)d++;else if(o[p]===null)p--;else if(c[d]===s[h])u[h]=lr(o[d],a[h]),d++,h++;else if(c[p]===s[m])u[m]=lr(o[p],a[m]),p--,m--;else if(c[d]===s[m])u[m]=lr(o[d],a[m]),Mo(t,u[m+1],o[d]),d++,m--;else if(c[p]===s[h])u[h]=lr(o[p],a[h]),Mo(t,o[d],o[p]),p--,h++;else if(f===void 0&&(f=_y(s,h,m),l=_y(c,d,p)),f.has(c[d]))if(f.has(c[p])){const g=l.get(s[h]),y=g!==void 0?o[g]:null;if(y===null){const b=Mo(t,o[d]);lr(b,a[h]),u[h]=b}else u[h]=lr(y,a[h]),Mo(t,o[d],y),o[g]=null;h++}else Pf(o[p]),p--;else Pf(o[d]),d++;for(;h<=m;){const g=Mo(t,u[m+1]);lr(g,a[h]),u[h++]=g}for(;d<=p;){const g=o[d++];g!==null&&Pf(g)}return this.ut=s,Yy(t,u),Ae}}),Wy="close-dialog";function CI(){return new CustomEvent(Wy,{bubbles:!0})}function fr(t="default",e=document.body){const n=document.createElement("div");n.classList.add("gs-modal"),t!="default"&&n.classList.add(t);const r=o=>{var a;switch(o.key){case"Escape":{const s=n.querySelector(".btn-cancel");s&&(s.click(),o.stopPropagation());break}case"Enter":{if(((a=o.target)==null?void 0:a.tagName)=="TEXTAREA")return;n.querySelector(".btn-primary").click(),o.stopPropagation();break}}};n.addEventListener("keydown",r),Be(E`<div class="backdrop"></div><div class="content"></div>`,n);const i=()=>{n.querySelector(".backdrop").addEventListener("transitionend",()=>n.remove()),n.classList.remove("visible"),document.body.classList.remove(Vn)};return n.addEventListener("keydown",o=>{o.stopPropagation()}),n.addEventListener(Wy,i),e.appendChild(n),window.requestAnimationFrame(()=>n.classList.add("visible")),t!="tour"&&document.body.classList.add(Vn),{content:n.querySelector(".content"),close:i}}function He(t,e={}){const n=fr(),r=e.title;return e.okLabel??(e.okLabel="OK"),new Promise((i,o)=>{const a=()=>{n.close(),i(!0)},s=E`${r?E`<div class="modal-title">${r}</div>`:z}<div class="modal-body" style="max-width:700px">${t}</div><div class="modal-buttons">${e.cancelButton?E`<button class="btn" @click="${()=>{n.close(),i(!1)}}">Cancel</button>`:z} <button class="btn" @click="${a}">${e.okLabel}</button></div>`;Be(s,n.content)})}class Xy extends yt{constructor(){super();$(this,cc);$(this,uc);$(this,Xo);$(this,lc);$(this,li,void 0);$(this,Yt,void 0);$(this,An,void 0);$(this,Wo,0);this.values=[],this.thresholds=[],this.operators=[],this.colors=Zy,this.showThresholdNumbers=!1,et(this,li,$2().thresholds(40)),et(this,Yt,j(this,li).call(this,[])),et(this,An,Na())}connectedCallback(){super.connectedCallback()}createRenderRoot(){return this}willUpdate(n){n.has("values")&&(et(this,Yt,j(this,li).call(this,this.values)),et(this,An,Na().domain(this.domain).range([0,100])))}get domain(){return[j(this,Yt).at(0).x0,j(this,Yt).at(-1).x1]}render(){const n=j(this,An),r=100/j(this,Yt).length,i=se(this,lc,e2).call(this).map(o=>E`<div style="${Ff({width:r+.01+"%",left:o.x+"%",bottom:o.y+"%",height:o.height+"%",backgroundColor:typeof o.group=="number"?this.colors[o.group%this.colors.length]:"default"})}"></div>`);return E`<div class="histogram-widget"><div class="histogram-plot"><div class="histogram-bars">${i}</div><div class="histogram-thresholds" @click="${se(this,cc,Jb)}">${this.thresholds.map((o,a)=>{const s=n(o);return s>=0&&s<=100?E`<div class="histogram-threshold" style="${Ff({left:n(o)+"%"})}"><div class="histogram-knob" @mousedown="${c=>se(this,uc,$b).call(this,c,a)}">${this.showThresholdNumbers?a+1:z}</div></div>`:z})}</div><div class="${of({"histogram-hint":!0,visible:!this.thresholds.length})}"><span>Click here to add a threshold!</span></div></div><div class="histogram-domain"></div><div class="histogram-extent">${n.domain().map(o=>E`<div>${o}</div>`)}</div></div>`}}li=new WeakMap,Yt=new WeakMap,An=new WeakMap,Wo=new WeakMap,cc=new WeakSet,Jb=function(n){if(performance.now()<j(this,Wo)+200)return;const r=n.target,i=mp(r,n);se(this,Xo,Ud).call(this,"add",0,i[0]/r.offsetWidth)},uc=new WeakSet,$b=function(n,r){const o=n.target.closest(".histogram-threshold"),a=o.offsetLeft,s=o.offsetParent.offsetWidth;n.preventDefault(),n.stopPropagation(),this.style.cursor="col-resize",EI(n,(c,u)=>{se(this,Xo,Ud).call(this,"adjust",r,(a+c)/s)},()=>{et(this,Wo,performance.now()),this.style.cursor=""})},Xo=new WeakSet,Ud=function(n,r,i){i=ms(i,0,1),this.dispatchEvent(new SI(n,r,+j(this,An).invert(i*100).toPrecision(3)))},lc=new WeakSet,e2=function(){const n=j(this,Yt),r=j(this,An),i=90/n.map(f=>f.length).reduce((f,l)=>Math.max(f,l),0),o=[],a=this.thresholds.length==1&&this.operators[0]=="eq",s=[-1/0,...this.thresholds,1/0],c=[!1,...this.operators.map(f=>["lte","gt"].includes(f)),!0],u=["gt","gte"].includes(this.operators[0])?f=>s.length-f-2:f=>f;for(let f=0;f<n.length;f++){const l=n[f],d=r(l.x0);let p=0,h=0;if(a)for(let m=0;m<=1;m++)h=MI(l,this.thresholds[0],m>0),h&&o.push({x:d,y:p*i,height:h*i,group:m}),p+=h;else if(this.thresholds.length)for(let m=0;m<s.length-1;m++){const g=u(m);h=DI(l,s[g],s[g+1],!c[g],c[g+1]),h&&o.push({x:d,y:p*i,height:h*i,group:m}),p+=h}else h=l.length,h&&o.push({x:d,y:p,height:h*i,group:null})}return o},hc(Xy,"properties",{values:{attribute:!1},thresholds:{attribute:!1},operators:{attribute:!1},colors:{attribute:!1},showThresholdNumbers:{}}),customElements.define("genome-spy-histogram",Xy);class SI extends Event{constructor(e,n,r){super(e),this.index=n,this.value=r}}function EI(t,e,n){const r=t.clientX,i=t.clientY,o=function(s){e(s.clientX-r,s.clientY-i)},a=function(s){document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",a),n==null||n(s.clientX-r,s.clientY-i)};document.addEventListener("mousemove",o),document.addEventListener("mouseup",a)}function DI(t,e,n,r=!0,i=!1){const o=r?c=>c>=e:c=>c>e,a=i?c=>c<=n:c=>c<n;let s=0;for(let c=0;c<t.length;c++){const u=t[c];o(u)&&a(u)&&s++}return s}function MI(t,e,n=!1){let r=0;for(let i=0;i<t.length;i++)r+=+(t[i]==e);return n?t.length-r:r}const Zy=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b"];function TI(t,e){var r;const n=(r=t.scale)==null?void 0:r.type;nn(n)?kI(t,e):Le(n)||Hn(n)?NI(t,e):t.type==="identifier"?II(t,e):He("Not implemented (yet).")}function II(t,e){qy(e.getSamples().map(n=>n.id),t,e)}function kI(t,e){const n=t.scale,r=i=>E`<span class="color" style="${Ff({backgroundColor:n(i).toString()})}"></span>`;qy(n.domain(),t,e,r)}function qy(t,e,n,r=i=>z){const i=n.provenance.storeHelper.getDispatcher(),o=new Set(Ky(e,n.leafSamples,n.sampleHierarchy)),a=t.filter(C=>o.has(C)).map((C,x)=>({index:x,value:C,stringValue:`${C}`,lowerCaseValue:`${C}`.toLowerCase()})),s=fr(),c=E`<div class="modal-title">Filter by <em>${e.name}</em></div>`,u=new Set;let f="";const l=C=>{i(n.actions.filterByNominal({values:t.filter(x=>u.has(x)),attribute:e.attribute,remove:C})),s.close()},d=()=>a.filter(C=>f.length==0||C.lowerCaseValue.includes(f)),p=C=>{f=C.target.value.toLowerCase(),w()},h=C=>{const x=C.target,v=a[+x.value].value;x.checked?u.add(v):u.delete(v),w()},m=C=>{var x;if(C.key=="ArrowDown")(x=s.content.querySelector(".gs-checkbox-list li:first-child input[type='checkbox']"))==null||x.focus(),C.preventDefault(),C.stopPropagation();else if(C.key=="Enter"){const v=d();v.length==1&&(u.add(v[0].value),w()),C.stopPropagation()}},g=()=>{s.content.querySelector("input[type='text']").focus()},y=C=>{var v,A,D,k,O;const x=C.target;if(x.type=="checkbox")if(C.key=="ArrowDown")(A=(v=x.closest("li").nextElementSibling)==null?void 0:v.querySelector("input[type='checkbox']"))==null||A.focus(),C.preventDefault();else if(C.key=="ArrowUp"){const T=(D=x.closest("li").previousElementSibling)==null?void 0:D.querySelector("input[type='checkbox']");T?T.focus():g(),C.preventDefault()}else C.key=="Esc"?(g(),C.stopPropagation()):C.key=="Tab"&&!C.shiftKey?(k=x.closest(".gs-checkbox-list").querySelector("li:last-child input"))==null||k.focus():C.key=="Tab"&&C.shiftKey&&((O=x.closest(".gs-checkbox-list").querySelector("li:first-child input"))==null||O.focus())},b=()=>E`<div class="modal-buttons"><button class="btn btn-cancel" @click="${()=>s.close()}">Cancel</button> <button class="btn" ?disabled="${!u.size}" @click="${()=>l(!1)}">${K(ar).node[0]} Retain</button> <button class="btn" ?disabled="${!u.size}" @click="${()=>l(!0)}">${K(Ds).node[0]} Remove</button></div>`;function w(){const C=d(),x=E`<div class="gs-form-group"><p>Please select one or more categories and choose an action.</p><input type="text" placeholder="Type something to filter the list" @keydown="${m}" @input="${p}"><div class="gs-checkbox-list-wrapper"><ul class="gs-checkbox-list" @input="${h}" @keydown="${y}">${wI(C,A=>A.value,A=>E`<li><label class="checkbox">${r(A.value)} <input type="checkbox" .checked="${u.has(A.value)}" .value="${""+A.index}"> ${A.stringValue}</label></li>`)}</ul>${C.length==0?E`<div class="search-note"><div>Nothing found</div></div>`:C.length==1&&a.length>1?E`<div class="search-note"><div>${K(h6).node[0]} Hit enter to select the exact match</div></div>`:z}</div><small>The number of selected categories: <strong>${u.size}</strong></small></div>`;Be(E`${c}<div class="modal-body">${x}</div>${b()}`,s.content);const v=s.content.querySelector(".gs-checkbox-list");v.style.minHeight=`${v.offsetHeight}px`}w(),g()}function NI(t,e){var g;const n=e.provenance.storeHelper.getDispatcher();let r="lt",i;const o=fr(),a=E`<div class="modal-title">Filter by <em>${t.name}</em></div>`,s=y=>{n(e.actions.filterByQuantitative({attribute:t.attribute,operator:r,operand:i})),o.close()},c=()=>E`<div class="modal-buttons"><button class="btn btn-cancel" @click="${()=>o.close()}">Cancel</button> <button class="btn btn-primary" ?disabled="${typeof i>"u"}" @click="${()=>s()}">${K(ar).node[0]} Retain</button></div>`,u=y=>{r=y.target.value,m()},f=y=>{const w=y.target.value;/^\d+(\.(\d+)?)?$/.test(w)&&(i=+w,m())},l=y=>{typeof i!="number"&&(i=y.value,m())},d=y=>{i=y.value,m()},p=Ky(t,e.leafSamples,e.sampleHierarchy),h=()=>E`<div class="gs-form-group"><label>Retain samples where <em>${t.name}</em> is</label><div class="btn-group" role="group">${Object.entries(LI).map(([y,b])=>E`<button class="${of({btn:!0,chosen:y==r})}" .value="${y}" @click="${u}" title="${b[1]}">${b[0]}</button>`)}</div><genome-spy-histogram .values="${p}" .thresholds="${[i].filter(y=>y!==void 0)}" .operators="${[r]}" .colors="${["#1f77b4","#ddd"]}" .showThresholdNumbers="${!1}" @add="${l}" @adjust="${d}"></genome-spy-histogram><input type="text" placeholder="... or enter a numeric value here" .value="${typeof i=="number"?""+i:""}" @input="${f}"></div>`;function m(){Be(E`${a}<div class="modal-body">${h()}</div>${c()}`,o.content)}m(),(g=o.content.querySelector("input[type='text']"))==null||g.focus()}const LI={lt:["<","less than"],lte:["≤","less than or equal to"],eq:["=","equal to"],gte:["≥","greater than or equal to"],gt:[">","greater than"]};function Ky(t,e,n){const r=t.accessor;return e.map(i=>r(i,n))}function ut(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];throw Error("[Immer] minified error nr: "+t+(n.length?" "+n.map(function(i){return"'"+i+"'"}).join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function gn(t){return!!t&&!!t[oe]}function Ut(t){return!!t&&(function(e){if(!e||typeof e!="object")return!1;var n=Object.getPrototypeOf(e);if(n===null)return!0;var r=Object.hasOwnProperty.call(n,"constructor")&&n.constructor;return r===Object||typeof r=="function"&&Function.toString.call(r)===HI}(t)||Array.isArray(t)||!!t[sv]||!!t.constructor[sv]||zf(t)||Rf(t))}function dr(t,e,n){n===void 0&&(n=!1),ei(t)===0?(n?Object.keys:ni)(t).forEach(function(r){n&&typeof r=="symbol"||e(r,t[r],t)}):t.forEach(function(r,i){return e(i,r,t)})}function ei(t){var e=t[oe];return e?e.i>3?e.i-4:e.i:Array.isArray(t)?1:zf(t)?2:Rf(t)?3:0}function ti(t,e){return ei(t)===2?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function BI(t,e){return ei(t)===2?t.get(e):t[e]}function Jy(t,e,n){var r=ei(t);r===2?t.set(e,n):r===3?(t.delete(e),t.add(n)):t[e]=n}function $y(t,e){return t===e?t!==0||1/t==1/e:t!=t&&e!=e}function zf(t){return jI&&t instanceof Map}function Rf(t){return UI&&t instanceof Set}function hr(t){return t.o||t.t}function jf(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var e=cv(t);delete e[oe];for(var n=ni(e),r=0;r<n.length;r++){var i=n[r],o=e[i];o.writable===!1&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(e[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:t[i]})}return Object.create(Object.getPrototypeOf(t),e)}function Uf(t,e){return e===void 0&&(e=!1),Hf(t)||gn(t)||!Ut(t)||(ei(t)>1&&(t.set=t.add=t.clear=t.delete=OI),Object.freeze(t),e&&dr(t,function(n,r){return Uf(r,!0)},!0)),t}function OI(){ut(2)}function Hf(t){return t==null||typeof t!="object"||Object.isFrozen(t)}function At(t){var e=qf[t];return e||ut(18,t),e}function FI(t,e){qf[t]||(qf[t]=e)}function Gf(){return To}function Qf(t,e){e&&(At("Patches"),t.u=[],t.s=[],t.v=e)}function Us(t){Vf(t),t.p.forEach(PI),t.p=null}function Vf(t){t===To&&(To=t.l)}function ev(t){return To={p:[],l:To,h:t,m:!0,_:0}}function PI(t){var e=t[oe];e.i===0||e.i===1?e.j():e.O=!0}function Yf(t,e){e._=e.p.length;var n=e.p[0],r=t!==void 0&&t!==n;return e.h.g||At("ES5").S(e,t,r),r?(n[oe].P&&(Us(e),ut(4)),Ut(t)&&(t=Hs(e,t),e.l||Gs(e,t)),e.u&&At("Patches").M(n[oe].t,t,e.u,e.s)):t=Hs(e,n,[]),Us(e),e.u&&e.v(e.u,e.s),t!==av?t:void 0}function Hs(t,e,n){if(Hf(e))return e;var r=e[oe];if(!r)return dr(e,function(o,a){return tv(t,r,e,o,a,n)},!0),e;if(r.A!==t)return e;if(!r.P)return Gs(t,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=jf(r.k):r.o;dr(r.i===3?new Set(i):i,function(o,a){return tv(t,r,i,o,a,n)}),Gs(t,i,!1),n&&t.u&&At("Patches").R(r,n,t.u,t.s)}return r.o}function tv(t,e,n,r,i,o){if(gn(i)){var a=Hs(t,i,o&&e&&e.i!==3&&!ti(e.D,r)?o.concat(r):void 0);if(Jy(n,r,a),!gn(a))return;t.m=!1}if(Ut(i)&&!Hf(i)){if(!t.h.F&&t._<1)return;Hs(t,i),e&&e.A.l||Gs(t,i)}}function Gs(t,e,n){n===void 0&&(n=!1),t.h.F&&t.m&&Uf(e,n)}function _f(t,e){var n=t[oe];return(n?hr(n):t)[e]}function nv(t,e){if(e in t)for(var n=Object.getPrototypeOf(t);n;){var r=Object.getOwnPropertyDescriptor(n,e);if(r)return r;n=Object.getPrototypeOf(n)}}function yn(t){t.P||(t.P=!0,t.l&&yn(t.l))}function Wf(t){t.o||(t.o=jf(t.t))}function Xf(t,e,n){var r=zf(e)?At("MapSet").N(e,n):Rf(e)?At("MapSet").T(e,n):t.g?function(i,o){var a=Array.isArray(i),s={i:a?1:0,A:o?o.A:Gf(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},c=s,u=Io;a&&(c=[s],u=ko);var f=Proxy.revocable(c,u),l=f.revoke,d=f.proxy;return s.k=d,s.j=l,d}(e,n):At("ES5").J(e,n);return(n?n.A:Gf()).p.push(r),r}function zI(t){return gn(t)||ut(22,t),function e(n){if(!Ut(n))return n;var r,i=n[oe],o=ei(n);if(i){if(!i.P&&(i.i<4||!At("ES5").K(i)))return i.t;i.I=!0,r=rv(n,o),i.I=!1}else r=rv(n,o);return dr(r,function(a,s){i&&BI(i.t,a)===s||Jy(r,a,e(s))}),o===3?new Set(r):r}(t)}function rv(t,e){switch(e){case 2:return new Map(t);case 3:return Array.from(t)}return jf(t)}function RI(){function t(o,a){var s=i[o];return s?s.enumerable=a:i[o]=s={configurable:!0,enumerable:a,get:function(){var c=this[oe];return Io.get(c,o)},set:function(c){var u=this[oe];Io.set(u,o,c)}},s}function e(o){for(var a=o.length-1;a>=0;a--){var s=o[a][oe];if(!s.P)switch(s.i){case 5:r(s)&&yn(s);break;case 4:n(s)&&yn(s)}}}function n(o){for(var a=o.t,s=o.k,c=ni(s),u=c.length-1;u>=0;u--){var f=c[u];if(f!==oe){var l=a[f];if(l===void 0&&!ti(a,f))return!0;var d=s[f],p=d&&d[oe];if(p?p.t!==l:!$y(d,l))return!0}}var h=!!a[oe];return c.length!==ni(a).length+(h?0:1)}function r(o){var a=o.k;if(a.length!==o.t.length)return!0;var s=Object.getOwnPropertyDescriptor(a,a.length-1);if(s&&!s.get)return!0;for(var c=0;c<a.length;c++)if(!a.hasOwnProperty(c))return!0;return!1}var i={};FI("ES5",{J:function(o,a){var s=Array.isArray(o),c=function(f,l){if(f){for(var d=Array(l.length),p=0;p<l.length;p++)Object.defineProperty(d,""+p,t(p,!0));return d}var h=cv(l);delete h[oe];for(var m=ni(h),g=0;g<m.length;g++){var y=m[g];h[y]=t(y,f||!!h[y].enumerable)}return Object.create(Object.getPrototypeOf(l),h)}(s,o),u={i:s?5:4,A:a?a.A:Gf(),P:!1,I:!1,D:{},l:a,t:o,k:c,o:null,O:!1,C:!1};return Object.defineProperty(c,oe,{value:u,writable:!0}),c},S:function(o,a,s){s?gn(a)&&a[oe].A===o&&e(o.p):(o.u&&function c(u){if(u&&typeof u=="object"){var f=u[oe];if(f){var l=f.t,d=f.k,p=f.D,h=f.i;if(h===4)dr(d,function(w){w!==oe&&(l[w]!==void 0||ti(l,w)?p[w]||c(d[w]):(p[w]=!0,yn(f)))}),dr(l,function(w){d[w]!==void 0||ti(d,w)||(p[w]=!1,yn(f))});else if(h===5){if(r(f)&&(yn(f),p.length=!0),d.length<l.length)for(var m=d.length;m<l.length;m++)p[m]=!1;else for(var g=l.length;g<d.length;g++)p[g]=!0;for(var y=Math.min(d.length,l.length),b=0;b<y;b++)d.hasOwnProperty(b)||(p[b]=!0),p[b]===void 0&&c(d[b])}}}}(o.p[0]),e(o.p))},K:function(o){return o.i===4?n(o):r(o)}})}var iv,To,Zf=typeof Symbol<"u"&&typeof Symbol("x")=="symbol",jI=typeof Map<"u",UI=typeof Set<"u",ov=typeof Proxy<"u"&&Proxy.revocable!==void 0&&typeof Reflect<"u",av=Zf?Symbol.for("immer-nothing"):((iv={})["immer-nothing"]=!0,iv),sv=Zf?Symbol.for("immer-draftable"):"__$immer_draftable",oe=Zf?Symbol.for("immer-state"):"__$immer_state",HI=""+Object.prototype.constructor,ni=typeof Reflect<"u"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,cv=Object.getOwnPropertyDescriptors||function(t){var e={};return ni(t).forEach(function(n){e[n]=Object.getOwnPropertyDescriptor(t,n)}),e},qf={},Io={get:function(t,e){if(e===oe)return t;var n=hr(t);if(!ti(n,e))return function(i,o,a){var s,c=nv(o,a);return c?"value"in c?c.value:(s=c.get)===null||s===void 0?void 0:s.call(i.k):void 0}(t,n,e);var r=n[e];return t.I||!Ut(r)?r:r===_f(t.t,e)?(Wf(t),t.o[e]=Xf(t.A.h,r,t)):r},has:function(t,e){return e in hr(t)},ownKeys:function(t){return Reflect.ownKeys(hr(t))},set:function(t,e,n){var r=nv(hr(t),e);if(r!=null&&r.set)return r.set.call(t.k,n),!0;if(!t.P){var i=_f(hr(t),e),o=i==null?void 0:i[oe];if(o&&o.t===n)return t.o[e]=n,t.D[e]=!1,!0;if($y(n,i)&&(n!==void 0||ti(t.t,e)))return!0;Wf(t),yn(t)}return t.o[e]===n&&typeof n!="number"&&(n!==void 0||e in t.o)||(t.o[e]=n,t.D[e]=!0,!0)},deleteProperty:function(t,e){return _f(t.t,e)!==void 0||e in t.t?(t.D[e]=!1,Wf(t),yn(t)):delete t.D[e],t.o&&delete t.o[e],!0},getOwnPropertyDescriptor:function(t,e){var n=hr(t),r=Reflect.getOwnPropertyDescriptor(n,e);return r&&{writable:!0,configurable:t.i!==1||e!=="length",enumerable:r.enumerable,value:n[e]}},defineProperty:function(){ut(11)},getPrototypeOf:function(t){return Object.getPrototypeOf(t.t)},setPrototypeOf:function(){ut(12)}},ko={};dr(Io,function(t,e){ko[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),ko.deleteProperty=function(t,e){return ko.set.call(this,t,e,void 0)},ko.set=function(t,e,n){return Io.set.call(this,t[0],e,n,t[0])};var GI=function(){function t(n){var r=this;this.g=ov,this.F=!0,this.produce=function(i,o,a){if(typeof i=="function"&&typeof o!="function"){var s=o;o=i;var c=r;return function(m){var g=this;m===void 0&&(m=s);for(var y=arguments.length,b=Array(y>1?y-1:0),w=1;w<y;w++)b[w-1]=arguments[w];return c.produce(m,function(C){var x;return(x=o).call.apply(x,[g,C].concat(b))})}}var u;if(typeof o!="function"&&ut(6),a!==void 0&&typeof a!="function"&&ut(7),Ut(i)){var f=ev(r),l=Xf(r,i,void 0),d=!0;try{u=o(l),d=!1}finally{d?Us(f):Vf(f)}return typeof Promise<"u"&&u instanceof Promise?u.then(function(m){return Qf(f,a),Yf(m,f)},function(m){throw Us(f),m}):(Qf(f,a),Yf(u,f))}if(!i||typeof i!="object"){if((u=o(i))===void 0&&(u=i),u===av&&(u=void 0),r.F&&Uf(u,!0),a){var p=[],h=[];At("Patches").M(i,u,p,h),a(p,h)}return u}ut(21,i)},this.produceWithPatches=function(i,o){if(typeof i=="function")return function(u){for(var f=arguments.length,l=Array(f>1?f-1:0),d=1;d<f;d++)l[d-1]=arguments[d];return r.produceWithPatches(u,function(p){return i.apply(void 0,[p].concat(l))})};var a,s,c=r.produce(i,o,function(u,f){a=u,s=f});return typeof Promise<"u"&&c instanceof Promise?c.then(function(u){return[u,a,s]}):[c,a,s]},typeof(n==null?void 0:n.useProxies)=="boolean"&&this.setUseProxies(n.useProxies),typeof(n==null?void 0:n.autoFreeze)=="boolean"&&this.setAutoFreeze(n.autoFreeze)}var e=t.prototype;return e.createDraft=function(n){Ut(n)||ut(8),gn(n)&&(n=zI(n));var r=ev(this),i=Xf(this,n,void 0);return i[oe].C=!0,Vf(r),i},e.finishDraft=function(n,r){var i=n&&n[oe],o=i.A;return Qf(o,r),Yf(void 0,o)},e.setAutoFreeze=function(n){this.F=n},e.setUseProxies=function(n){n&&!ov&&ut(20),this.g=n},e.applyPatches=function(n,r){var i;for(i=r.length-1;i>=0;i--){var o=r[i];if(o.path.length===0&&o.op==="replace"){n=o.value;break}}i>-1&&(r=r.slice(i+1));var a=At("Patches").$;return gn(n)?a(n,r):this.produce(n,function(s){return a(s,r)})},t}(),Ge=new GI,uv=Ge.produce;Ge.produceWithPatches.bind(Ge),Ge.setAutoFreeze.bind(Ge),Ge.setUseProxies.bind(Ge),Ge.applyPatches.bind(Ge),Ge.createDraft.bind(Ge),Ge.finishDraft.bind(Ge);function QI(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function lv(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),n.push.apply(n,r)}return n}function fv(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?lv(Object(n),!0).forEach(function(r){QI(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):lv(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Ee(t){return"Minified Redux error #"+t+"; visit https://redux.js.org/Errors?code="+t+" for the full message or use the non-minified dev environment for full errors. "}var dv=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),Kf=function(){return Math.random().toString(36).substring(7).split("").join(".")},Qs={INIT:"@@redux/INIT"+Kf(),REPLACE:"@@redux/REPLACE"+Kf(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+Kf()}};function VI(t){if(typeof t!="object"||t===null)return!1;for(var e=t;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function hv(t,e,n){var r;if(typeof e=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(Ee(0));if(typeof e=="function"&&typeof n>"u"&&(n=e,e=void 0),typeof n<"u"){if(typeof n!="function")throw new Error(Ee(1));return n(hv)(t,e)}if(typeof t!="function")throw new Error(Ee(2));var i=t,o=e,a=[],s=a,c=!1;function u(){s===a&&(s=a.slice())}function f(){if(c)throw new Error(Ee(3));return o}function l(m){if(typeof m!="function")throw new Error(Ee(4));if(c)throw new Error(Ee(5));var g=!0;return u(),s.push(m),function(){if(g){if(c)throw new Error(Ee(6));g=!1,u();var b=s.indexOf(m);s.splice(b,1),a=null}}}function d(m){if(!VI(m))throw new Error(Ee(7));if(typeof m.type>"u")throw new Error(Ee(8));if(c)throw new Error(Ee(9));try{c=!0,o=i(o,m)}finally{c=!1}for(var g=a=s,y=0;y<g.length;y++){var b=g[y];b()}return m}function p(m){if(typeof m!="function")throw new Error(Ee(10));i=m,d({type:Qs.REPLACE})}function h(){var m,g=l;return m={subscribe:function(b){if(typeof b!="object"||b===null)throw new Error(Ee(11));function w(){b.next&&b.next(f())}w();var C=g(w);return{unsubscribe:C}}},m[dv]=function(){return this},m}return d({type:Qs.INIT}),r={dispatch:d,subscribe:l,getState:f,replaceReducer:p},r[dv]=h,r}function YI(t){Object.keys(t).forEach(function(e){var n=t[e],r=n(void 0,{type:Qs.INIT});if(typeof r>"u")throw new Error(Ee(12));if(typeof n(void 0,{type:Qs.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(Ee(13))})}function Jf(t){for(var e=Object.keys(t),n={},r=0;r<e.length;r++){var i=e[r];typeof t[i]=="function"&&(n[i]=t[i])}var o=Object.keys(n),a;try{YI(n)}catch(s){a=s}return function(c,u){if(c===void 0&&(c={}),a)throw a;for(var f=!1,l={},d=0;d<o.length;d++){var p=o[d],h=n[p],m=c[p],g=h(m,u);if(typeof g>"u")throw u&&u.type,new Error(Ee(14));l[p]=g,f=f||g!==m}return f=f||o.length!==Object.keys(c).length,f?l:c}}function Vs(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.length===0?function(r){return r}:e.length===1?e[0]:e.reduce(function(r,i){return function(){return r(i.apply(void 0,arguments))}})}function _I(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(r){return function(){var i=r.apply(void 0,arguments),o=function(){throw new Error(Ee(15))},a={getState:i.getState,dispatch:function(){return o.apply(void 0,arguments)}},s=e.map(function(c){return c(a)});return o=Vs.apply(void 0,s)(i.dispatch),fv(fv({},i),{},{dispatch:o})}}}var Ys="NOT_FOUND";function WI(t){var e;return{get:function(r){return e&&t(e.key,r)?e.value:Ys},put:function(r,i){e={key:r,value:i}},getEntries:function(){return e?[e]:[]},clear:function(){e=void 0}}}function XI(t,e){var n=[];function r(s){var c=n.findIndex(function(f){return e(s,f.key)});if(c>-1){var u=n[c];return c>0&&(n.splice(c,1),n.unshift(u)),u.value}return Ys}function i(s,c){r(s)===Ys&&(n.unshift({key:s,value:c}),n.length>t&&n.pop())}function o(){return n}function a(){n=[]}return{get:r,put:i,getEntries:o,clear:a}}var ZI=function(e,n){return e===n};function qI(t){return function(n,r){if(n===null||r===null||n.length!==r.length)return!1;for(var i=n.length,o=0;o<i;o++)if(!t(n[o],r[o]))return!1;return!0}}function KI(t,e){var n=typeof e=="object"?e:{equalityCheck:e},r=n.equalityCheck,i=r===void 0?ZI:r,o=n.maxSize,a=o===void 0?1:o,s=n.resultEqualityCheck,c=qI(i),u=a===1?WI(c):XI(a,c);function f(){var l=u.get(arguments);if(l===Ys){if(l=t.apply(null,arguments),s){var d=u.getEntries(),p=d.find(function(h){return s(h.value,l)});p&&(l=p.value)}u.put(arguments,l)}return l}return f.clearCache=function(){return u.clear()},f}function JI(t){var e=Array.isArray(t[0])?t[0]:t;if(!e.every(function(r){return typeof r=="function"})){var n=e.map(function(r){return typeof r=="function"?"function "+(r.name||"unnamed")+"()":typeof r}).join(", ");throw new Error("createSelector expects all input-selectors to be functions, but received the following types: ["+n+"]")}return e}function $I(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];var i=function(){for(var a=arguments.length,s=new Array(a),c=0;c<a;c++)s[c]=arguments[c];var u=0,f,l={memoizeOptions:void 0},d=s.pop();if(typeof d=="object"&&(l=d,d=s.pop()),typeof d!="function")throw new Error("createSelector expects an output function after the inputs, but received: ["+typeof d+"]");var p=l,h=p.memoizeOptions,m=h===void 0?n:h,g=Array.isArray(m)?m:[m],y=JI(s),b=t.apply(void 0,[function(){return u++,d.apply(null,arguments)}].concat(g)),w=t(function(){for(var C=[],x=y.length,v=0;v<x;v++)C.push(y[v].apply(null,arguments));return f=b.apply(null,C),f});return Object.assign(w,{resultFunc:d,memoizedResultFunc:b,dependencies:y,lastResult:function(){return f},recomputations:function(){return u},resetRecomputations:function(){return u=0}}),w};return i}var e9=$I(KI);function pv(t){var e=function(r){var i=r.dispatch,o=r.getState;return function(a){return function(s){return typeof s=="function"?s(i,o,t):a(s)}}};return e}var mv=pv();mv.withExtraArgument=pv;const gv=mv;var t9=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},t(e,n)};return function(e,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();globalThis&&globalThis.__generator;var _s=globalThis&&globalThis.__spreadArray||function(t,e){for(var n=0,r=e.length,i=t.length;n<r;n++,i++)t[i]=e[n];return t},n9=Object.defineProperty,yv=Object.getOwnPropertySymbols,r9=Object.prototype.hasOwnProperty,i9=Object.prototype.propertyIsEnumerable,vv=function(t,e,n){return e in t?n9(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},No=function(t,e){for(var n in e||(e={}))r9.call(e,n)&&vv(t,n,e[n]);if(yv)for(var r=0,i=yv(e);r<i.length;r++){var n=i[r];i9.call(e,n)&&vv(t,n,e[n])}return t},o9=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Vs:Vs.apply(null,arguments)};function a9(t){if(typeof t!="object"||t===null)return!1;var e=Object.getPrototypeOf(t);if(e===null)return!0;for(var n=e;Object.getPrototypeOf(n)!==null;)n=Object.getPrototypeOf(n);return e===n}var s9=function(t){t9(e,t);function e(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var i=t.apply(this,n)||this;return Object.setPrototypeOf(i,e.prototype),i}return Object.defineProperty(e,Symbol.species,{get:function(){return e},enumerable:!1,configurable:!0}),e.prototype.concat=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return t.prototype.concat.apply(this,n)},e.prototype.prepend=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return n.length===1&&Array.isArray(n[0])?new(e.bind.apply(e,_s([void 0],n[0].concat(this)))):new(e.bind.apply(e,_s([void 0],n.concat(this))))},e}(Array);function $f(t){return Ut(t)?uv(t,function(){}):t}function c9(t){return typeof t=="boolean"}function u9(){return function(e){return l9(e)}}function l9(t){t===void 0&&(t={});var e=t.thunk,n=e===void 0?!0:e;t.immutableCheck,t.serializableCheck;var r=new s9;return n&&(c9(n)?r.push(gv):r.push(gv.withExtraArgument(n.extraArgument))),r}var f9=!0;function d9(t){var e=u9(),n=t||{},r=n.reducer,i=r===void 0?void 0:r,o=n.middleware,a=o===void 0?e():o,s=n.devTools,c=s===void 0?!0:s,u=n.preloadedState,f=u===void 0?void 0:u,l=n.enhancers,d=l===void 0?void 0:l,p;if(typeof i=="function")p=i;else if(a9(i))p=Jf(i);else throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');var h=a;typeof h=="function"&&(h=h(e));var m=_I.apply(void 0,h),g=Vs;c&&(g=o9(No({trace:!f9},typeof c=="object"&&c)));var y=[m];Array.isArray(d)?y=_s([m],d):typeof d=="function"&&(y=d(y));var b=g.apply(void 0,y);return hv(p,f,b)}function Lo(t,e){function n(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];if(e){var o=e.apply(void 0,r);if(!o)throw new Error("prepareAction did not return an object");return No(No({type:t,payload:o.payload},"meta"in o&&{meta:o.meta}),"error"in o&&{error:o.error})}return{type:t,payload:r[0]}}return n.toString=function(){return""+t},n.type=t,n.match=function(r){return r.type===t},n}function bv(t){var e={},n=[],r,i={addCase:function(o,a){var s=typeof o=="string"?o:o.type;if(s in e)throw new Error("addCase cannot be called with two reducers for the same action type");return e[s]=a,i},addMatcher:function(o,a){return n.push({matcher:o,reducer:a}),i},addDefaultCase:function(o){return r=o,i}};return t(i),[e,n,r]}function h9(t){return typeof t=="function"}function p9(t,e,n,r){n===void 0&&(n=[]);var i=typeof e=="function"?bv(e):[e,n,r],o=i[0],a=i[1],s=i[2],c;if(h9(t))c=function(){return $f(t())};else{var u=$f(t);c=function(){return u}}function f(l,d){l===void 0&&(l=c());var p=_s([o[d.type]],a.filter(function(h){var m=h.matcher;return m(d)}).map(function(h){var m=h.reducer;return m}));return p.filter(function(h){return!!h}).length===0&&(p=[s]),p.reduce(function(h,m){if(m)if(gn(h)){var g=h,y=m(g,d);return typeof y>"u"?h:y}else{if(Ut(h))return uv(h,function(b){return m(b,d)});var y=m(h,d);if(typeof y>"u"){if(h===null)return h;throw Error("A case reducer on a non-draftable value must not return undefined")}return y}return h},l)}return f.getInitialState=c,f}function m9(t,e){return t+"/"+e}function Av(t){var e=t.name;if(!e)throw new Error("`name` is a required option for createSlice");typeof process<"u";var n=typeof t.initialState=="function"?t.initialState:$f(t.initialState),r=t.reducers||{},i=Object.keys(r),o={},a={},s={};i.forEach(function(f){var l=r[f],d=m9(e,f),p,h;"reducer"in l?(p=l.reducer,h=l.prepare):p=l,o[f]=p,a[d]=p,s[f]=h?Lo(d,h):Lo(d)});function c(){var f=typeof t.extraReducers=="function"?bv(t.extraReducers):[t.extraReducers],l=f[0],d=l===void 0?{}:l,p=f[1],h=p===void 0?[]:p,m=f[2],g=m===void 0?void 0:m,y=No(No({},d),a);return p9(n,y,h,g)}var u;return{name:e,reducer:function(f,l){return u||(u=c()),u(f,l)},actions:s,caseReducers:o,getInitialState:function(){return u||(u=c()),u.getInitialState()}}}var ed="listenerMiddleware";Lo(ed+"/add"),Lo(ed+"/removeAll"),Lo(ed+"/remove"),RI();function g9(t,e){var n=t+"",r=e+"";return n<r?-1:n==r?0:1}var y9=[].forEach;function v9(t,e,n){if(typeof e!="function")throw new TypeError(e+" is not a function");var r,i=[],o=[],a=[];y9.call(t,function(c,u,f){if(r=e(c,u,f),r===void 0)return void a.push(c);if(n===void 0&&typeof r=="symbol")throw new TypeError("Can't convert symbol to string");i.push(u),o[u]=r}),n===void 0&&(n=g9),i.sort(function(c,u){return n(o[c],o[u])});var s=i.map(function(c){return t[c]}).concat(a);return s.length!=t.length&&(s.length=t.length),s}function b9(t,e){const n=i=>i.copy().range(_t(0,i.domain().length)).unknown(-1);let r;switch(e.type){case"quantitative":r=i=>le(i)&&!isNaN(i)?-i:-1/0;break;case"ordinal":r=n(e.scale);break;case"nominal":r=i=>i||"";break}return i=>r(t(i))}function A9(t,e){const n=new Set,r=i=>{const o=n.has(i);return n.add(i),o};return t.filter(i=>!r(e(i)))}function x9(t,e,n){const r=new Set,i=o=>(r.size<n&&r.add(o),r.has(o));return t.filter(o=>i(e(o)))}function w9(t,e,n=!1){return v9(t,e,(r,i)=>(n&&([r,i]=[i,r]),r<i?-1:r>i?1:0))}const C9={lt:(t,e)=>t<e,lte:(t,e)=>t<=e,eq:(t,e)=>t==e,gte:(t,e)=>t>=e,gt:(t,e)=>t>e};function S9(t,e,n,r){const i=C9[n];return t.filter(o=>i(e(o),r))}function xv(t,e,n,r){const i=new Set(r),o=s=>i.has(s),a=n=="remove"?s=>!o(s):o;return t.filter(s=>a(e(s)))}function E9(t,e){const n=r=>r!=null;return t.filter(r=>n(e(r)))}/**
|
2150
2159
|
* @license
|
2151
2160
|
* Copyright 2021 Google LLC
|
2152
2161
|
* SPDX-License-Identifier: BSD-3-Clause
|
2153
|
-
*/function*S9(t,e){const n=typeof e=="function";if(t!==void 0){let r=-1;for(const i of t)r>-1&&(yield n?e(r):e),r++,yield i}}const xv="setSamples",wv="sortBy",Cv="retainFirstOfEach",Sv="retainFirstNCategories",Ev="filterByNominal",Dv="filterByQuantitative",Mv="removeUndefined",Tv="groupByNominal",Iv="groupToQuartiles",kv="groupByThresholds",Nv="removeGroup",Lv="retainMatched",ii="sampleView";function E9(){return{sampleData:void 0,groupMetadata:[],rootGroup:{name:"ROOT",title:"Root",samples:[]}}}function D9(t){const e=(n,r)=>{const i=t(n.attribute).accessor;return o=>i(o,r)};return bv({name:ii,initialState:E9(),reducers:{[xv]:(n,r)=>{const i=r.payload.samples;if(n.sampleData)throw new Error("Samples have already been set!");if(i.some(a=>a.id===void 0||a.id===null))throw new Error('The sample metadata contains missing sample ids or the "sample" column is missing!');if(new Set(i.map(a=>a.id)).size!=i.length)throw new Error("The sample metadata contains duplicate sample ids!");const o=i.map((a,s)=>({...a,indexNumber:s}));n.sampleData={ids:o.map(a=>a.id),entities:Object.fromEntries(o.map(a=>[a.id,a]))},n.rootGroup={name:"ROOT",title:"Root",samples:n.sampleData.ids}},[wv]:(n,r)=>{pr(n,i=>A9(i,y9(e(r.payload,n),t(r.payload.attribute)),!1))},[Cv]:(n,r)=>{pr(n,i=>v9(i,e(r.payload,n)))},[Sv]:(n,r)=>{pr(n,i=>b9(i,e(r.payload,n),r.payload.n))},[Dv]:(n,r)=>{pr(n,i=>w9(i,e(r.payload,n),r.payload.operator,r.payload.operand))},[Ev]:(n,r)=>{pr(n,i=>Av(i,e(r.payload,n),r.payload.remove?"remove":"retain",r.payload.values))},[Mv]:(n,r)=>{pr(n,i=>C9(i,e(r.payload,n)))},[Tv]:(n,r)=>{var o;const i=(o=t(r.payload.attribute).scale)==null?void 0:o.domain();ed(n,a=>Pv(a,e(r.payload,n),i)),n.groupMetadata.push({attribute:r.payload.attribute})},[Iv]:(n,r)=>{ed(n,i=>k9(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[kv]:(n,r)=>{ed(n,i=>I9(i,e(r.payload,n),r.payload.thresholds)),n.groupMetadata.push({attribute:r.payload.attribute})},[Nv]:(n,r)=>{const i=n.rootGroup;_s(i)&&Rv(i,r.payload.path)},[Lv]:(n,r)=>{const i=e(r.payload,n),o=[];for(const s of td(n))if(s.samples.length>0){const c=new Set;for(const u of s.samples)c.add(i(u));o.push(c)}const a=[];for(const s of o[0]){let c=!0;for(let u=1;u<o.length&&c;u++)c=o[u].has(s);c&&a.push(s)}pr(n,s=>Av(s,i,"retain",a))}}})}function pr(t,e){for(const n of td(t))n.samples=e(n.samples)}function ed(t,e){for(const n of td(t))e(n)}function td(t){return rd(t).map(e=>Re(e))}function nd(t){return t.provenance.present[ii]}function rd(t){const e=[],n=[],r=i=>{if(e.push(i),_s(i))for(const o of i.groups)r(o);else n.push([...e]);e.pop()};return r(t.rootGroup),n}function Bv(t){return"samples"in t}function _s(t){return"groups"in t}function*id(t){if(yield[t],_s(t))for(const e of t.groups)for(const n of id(e))yield[t,...n]}const M9=de(".4"),Ov={lt:"<",lte:"≤",eq:"=",gte:"≥",gt:">"};function Fv(t){return E`{${t.map((e,n)=>E`${n>0?", ":""}<strong>${e}</strong>`)}}`}function T9(t,e){if(!t.type.startsWith(ii))return;const n=t.payload,r=n.attribute&&e(n.attribute),i=r==null?void 0:r.name,o=(r==null?void 0:r.title)||E`<em>${i}</em>`,a={attributeName:i};switch(t.type.substring(ii.length+1)){case xv:return{...a,title:"The initial state",icon:p6};case wv:return{...a,title:"Sort by",provenanceTitle:E`Sort by ${o}`,icon:a6};case Cv:return{...a,title:E`Retain the first sample of each <em>${i}</em>`,provenanceTitle:E`Retain the first sample of each ${o}`,icon:G1};case Sv:return{...a,title:E`Retain first <strong>n</strong> categories of <em>${i}</em>...`,provenanceTitle:E`Retain first <strong>${n.n}</strong> categories of ${o}`,icon:G1};case Ev:{const c=n.values,u=f=>E`${n.remove?"Remove":"Retain"} samples having ${c[0]===void 0||c[0]===null?E`undefined ${f}`:E`${f} ${c.length>1?E`in ${Fv(c)}`:E`<span class="operator">=</span> <strong>${c[0]}</strong>`}`}`;return{...a,title:u(E`<em>${i}</em>`),provenanceTitle:u(o),icon:n.remove?Es:ar}}case Dv:{const c=u=>E`Retain samples having ${u} <span class="operator">${Ov[n.operator]}</span> <strong>${M9(n.operand)}</strong>`;return{...a,title:c(E`<em>${i}</em>`),provenanceTitle:c(o),icon:ar}}case Mv:return{...a,title:"Remove samples having missing attribute",provenanceTitle:E`Remove samples having missing ${o}`,icon:Es};case Tv:return{...a,title:"Group by",provenanceTitle:E`Group by ${o}`,icon:xo};case Iv:return{...a,title:"Group by quartiles",provenanceTitle:E`Group by quartiles on ${o}`,icon:xo};case kv:return{...a,title:"Group by thresholds",provenanceTitle:E`Group by thresholds ${Fv(n.thresholds.map(c=>`${Ov[c.operator]} ${c.operand}`))} on ${o}`,icon:xo};case Nv:return{title:"Remove group",provenanceTitle:E`Remove group ${S9(n.path.map(c=>E`<strong>${c}</strong>`)," / ")}`,icon:Es};case Lv:return{...a,title:E`Retain group-wise matched samples using <em>${i}</em>`,provenanceTitle:E`Retain group-wise matched samples using ${o}`,icon:ar};default:return{...a,title:JSON.stringify(t),icon:U1}}}function Pv(t,e,n,r){if(r&&!n)throw new Error("Custom labels need explicit group order!");const i=mi(t.samples,e),o=n?n.map(c=>[c,i.get(c)]).filter(c=>c[1]):[...i],s=t;s.groups=o.map(([c,u],f)=>({name:""+c,title:r?r[f]:c,samples:u})),delete t.samples}function zv(t,e,n){const r=a=>`Group ${a+1}`,i=_t(n.length-1).reverse(),o=jv(e,n.slice(1,n.length-1));Pv(t,a=>r(o(a)),i.map(r),i.map(a=>Hv(n[a],n[a+1])))}function I9(t,e,n){zv(t,e,[{operator:"lt",operand:-1/0},...n,{operator:"lte",operand:1/0}])}function k9(t,e){const n=L9(N9(t.samples,e,[0,.25,.5,.75,1]));n.length==1&&n.push(n[0]),zv(t,e,n.map((r,i,o)=>({operator:i==o.length-1?"lte":"lt",operand:r})))}function Rv(t,e){if(e.length==0)return;const n=t.groups.findIndex(r=>r.name==e[0]);if(!(n<0)){if(e.length==1)t.groups.splice(n,1);else if(e.length>1){const r=t.groups[n];_s(r)&&Rv(r,[...e].splice(1))}}}function jv(t,e){return r=>{const i=t(r);if(!(!le(i)||isNaN(i))){for(let o=0;o<e.length;o++)if(e[o].operator=="lt"){if(i<e[o].operand)return o}else if(i<=e[o].operand)return o;return e.length}}}function N9(t,e,n){const r=Y2(t.map(e).filter(i=>le(i)&&!isNaN(i)));return n.map(i=>Ic(r,i))}function L9(t){const e=[t[0]];for(let n=1;n<t.length;n++)t[n]!=t[n-1]&&e.push(t[n]);return e}const Uv=de(".3~r"),Hv=(t,e)=>`${t.operator=="lt"?"[":"("}${Uv(t.operand)}, ${Uv(e.operand)}${e.operator=="lte"?"]":")"}`;function B9(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=[],i=fr(),o=E`<div class="modal-title">Group by threshold on <em>${t.name}</em></div>`,a=g=>{n(e.actions.groupByThresholds({attribute:t.attribute,thresholds:r})),i.close()},s=()=>E`<div class="modal-buttons"><button class="btn btn-cancel" @click="${()=>i.close()}">Cancel</button> <button class="btn btn-primary" ?disabled="${!O9(r)}" @click="${()=>a()}">${K(xo).node[0]} Group</button></div>`,c=(g,y)=>(y>0&&(g=Math.max(g,r[y-1].operand)),y<r.length-1&&(g=Math.min(g,r[y+1].operand)),g),u=(g,y)=>{const b=g.target.value;r[y].operator=b,m()},f=(g,y)=>{const b=g.target.value;/^\d+(\.\d+)?$/.test(b)&&(r[y].operand=c(+b,y),m())},l=g=>{const y=r.findIndex(b=>b.operand>g.value);r.splice(y<0?r.length:y,0,{operand:g.value,operator:"lt"}),m()},d=g=>{r[g.index].operand=c(g.value,g.index),m()},p=g=>{r.splice(g,1),m()},h=F9(t,e.leafSamples,e.sampleHierarchy);function m(){const g=()=>{const b=[{operand:-1/0,operator:"lt"},...r,{operand:1/0,operator:"lte"}],w=jv(v=>v,b),C=[];for(let v=1;v<b.length;v++)C.push(0);for(const v of h)C[w(v)-1]++;const x=[];for(let v=1;v<b.length;v++)x.push({index:v-1,name:v,interval:Hv(b[v-1],b[v]),n:C[v-1]});return E`<table class="threshold-groups"><thead><tr><th>Group</th><th>Interval</th><th>n</th></tr></thead><tbody>${x.map(v=>E`<tr><td><span class="group-color" style="background-color:${Xy[v.index]}"></span> ${v.name}</td><td>${v.interval}</td><td>${v.n}</td></tr>`)}</tbody></table>`},y=E`<div class="gs-form-group group-by-thresholds-form"><label>Split into groups using the thresholds:</label><genome-spy-histogram .values="${h}" .thresholds="${r.map(b=>b.operand)}" .operators="${r.map(b=>b.operator)}" .showThresholdNumbers="${!0}" @add="${l}" @adjust="${d}"></genome-spy-histogram>${r.map((b,w)=>E`<div class="threshold-flex"><select .value="${b.operator}" @change="${C=>u(C,w)}"><option value="lt">${"<"}</option><option value="lte">${"≤"}</option></select> <input .value="${""+b.operand}" type="text" placeholder="Numeric value" @input="${C=>f(C,w)}" @blur="${C=>{C.target.value=""+r[w].operand}}"> <button @click="${()=>p(w)}" class="btn" title="Remove">${K(Q1).node[0]}</button></div>`)} ${r.length?E`<small>The operator specifies whether the upper endpoint of the interval (<em>i.e.</em>, the group) is exclusive (<) or inclusive(≤). </small>${g()}`:z}</div>`;Be(E`${o}<div class="modal-body">${y}</div>${s()}`,i.content)}m()}function O9(t){return t.length}function F9(t,e,n){const r=t.accessor;return e.map(i=>r(i,n))}function P9(t,e){const n=e.provenance.storeHelper.getDispatcher();let r=5;const i=fr(),o=E`<div class="modal-title">Retain first n categories of <em>${t.title}</em></div>`,a=f=>{n(e.actions.retainFirstNCategories({attribute:t.attribute,n:r})),i.close()},s=()=>E`<div class="modal-buttons"><button class="btn btn-cancel" @click="${()=>i.close()}">Cancel</button> <button class="btn btn-primary" @click="${()=>a()}">${K(ar).node[0]} Retain</button></div>`,c=E`<div class="gs-form-group"><label>Number of categories to retain:</label> <input type="number" min="1" .valueAsNumber="${r}" @change="${f=>{r=f.target.valueAsNumber}}"></div>`;function u(){Be(E`${o}<div class="modal-body">${c}</div>${s()}`,i.content)}u(),i.content.querySelector("input").focus()}function od(t,e,n,r){const i=r.actions,o=e.attribute,a=r.sampleHierarchy,s=r.provenance.storeHelper.getDispatcher(),c=[];t&&c.push({label:t,type:"header"});const u=(d,p,h)=>{const m=r.provenance.getActionInfo(d);return{label:m.title,icon:m.icon,callback:p?void 0:h??(()=>s(d))}},f=(...d)=>c.push(...d.map(p=>u(p)));f(i.sortBy({attribute:o}));const l=(e==null?void 0:e.type)??"identifier";return l!="quantitative"?(l!="identifier"&&(f(i.groupByNominal({attribute:o}),i.retainFirstOfEach({attribute:o})),c.push(u(i.retainFirstNCategories({attribute:o,n:void 0}),!1,()=>P9(e,r)))),f(i.filterByNominal({attribute:o,values:[n]}),i.filterByNominal({attribute:o,remove:!0,values:[n]})),l!="identifier"&&c.push(u(i.retainMatched({attribute:o}),!a.groupMetadata.length))):(f(i.groupToQuartiles({attribute:o})),c.push({icon:xo,label:"Group by thresholds...",callback:()=>B9(e,r)}),z9(n)?f(i.filterByQuantitative({attribute:o,operator:"gte",operand:+n}),i.filterByQuantitative({attribute:o,operator:"lte",operand:+n})):f(i.removeUndefined({attribute:o}))),c.push({icon:ar,label:"Advanced filter...",callback:()=>DI(e,r)}),c}function z9(t){return t!=null&&t!==""&&!(typeof t=="number"&&isNaN(t))}function R9(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Ht={},mr={};Object.defineProperty(mr,"__esModule",{value:!0}),mr.ActionCreators=mr.ActionTypes=void 0;var gr={UNDO:"@@redux-undo/UNDO",REDO:"@@redux-undo/REDO",JUMP_TO_FUTURE:"@@redux-undo/JUMP_TO_FUTURE",JUMP_TO_PAST:"@@redux-undo/JUMP_TO_PAST",JUMP:"@@redux-undo/JUMP",CLEAR_HISTORY:"@@redux-undo/CLEAR_HISTORY"};mr.ActionTypes=gr;var j9={undo:function(){return{type:gr.UNDO}},redo:function(){return{type:gr.REDO}},jumpToFuture:function(e){return{type:gr.JUMP_TO_FUTURE,index:e}},jumpToPast:function(e){return{type:gr.JUMP_TO_PAST,index:e}},jump:function(e){return{type:gr.JUMP,index:e}},clearHistory:function(){return{type:gr.CLEAR_HISTORY}}};mr.ActionCreators=j9;var xt={};Object.defineProperty(xt,"__esModule",{value:!0}),xt.parseActions=Ws,xt.isHistory=U9,xt.includeAction=H9,xt.excludeAction=G9,xt.combineFilters=Q9,xt.groupByActionTypes=V9,xt.newHistory=Y9;function Ws(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Array.isArray(t)?t:typeof t=="string"?[t]:e}function U9(t){return typeof t.present<"u"&&typeof t.future<"u"&&typeof t.past<"u"&&Array.isArray(t.future)&&Array.isArray(t.past)}function H9(t){var e=Ws(t);return function(n){return e.indexOf(n.type)>=0}}function G9(t){var e=Ws(t);return function(n){return e.indexOf(n.type)<0}}function Q9(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.reduce(function(r,i){return function(o,a,s){return r(o,a,s)&&i(o,a,s)}},function(){return!0})}function V9(t){var e=Ws(t);return function(n){return e.indexOf(n.type)>=0?n.type:null}}function Y9(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;return{past:t,present:e,future:n,group:r,_latestUnfiltered:e,index:t.length,limit:t.length+n.length+1}}var Gv={},oi={};Object.defineProperty(oi,"__esModule",{value:!0}),oi.set=ek,oi.start=K9,oi.end=J9,oi.log=$9;function wt(t){return X9(t)||W9(t)||_9()}function _9(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function W9(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function X9(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}var Xs,Je,ad={prevState:"#9E9E9E",action:"#03A9F4",nextState:"#4CAF50"};function Z9(){Je={header:[],prev:[],action:[],next:[],msgs:[]}}function q9(){var t=Je,e=t.header,n=t.prev,r=t.next,i=t.action,o=t.msgs;if(console.group){var a,s,c,u,f;(a=console).groupCollapsed.apply(a,wt(e)),(s=console).log.apply(s,wt(n)),(c=console).log.apply(c,wt(i)),(u=console).log.apply(u,wt(r)),(f=console).log.apply(f,wt(o)),console.groupEnd()}else{var l,d,p,h,m;(l=console).log.apply(l,wt(e)),(d=console).log.apply(d,wt(n)),(p=console).log.apply(p,wt(i)),(h=console).log.apply(h,wt(r)),(m=console).log.apply(m,wt(o))}}function sd(t,e,n){return["%c".concat(t),"color: ".concat(e,"; font-weight: bold"),n]}function K9(t,e){Z9(),Xs&&(console.group?(Je.header=["%credux-undo","font-style: italic","action",t.type],Je.action=sd("action",ad.action,t),Je.prev=sd("prev history",ad.prevState,e)):(Je.header=["redux-undo action",t.type],Je.action=["action",t],Je.prev=["prev history",e]))}function J9(t){Xs&&(console.group?Je.next=sd("next history",ad.nextState,t):Je.next=["next history",t],q9())}function $9(){if(Xs){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];Je.msgs=Je.msgs.concat([].concat(e,[`
|
2154
|
-
`]))}}function ek(t){Xs=t}(function(t){function e(x){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e=function(A){return typeof A}:e=function(A){return A&&typeof Symbol=="function"&&A.constructor===Symbol&&A!==Symbol.prototype?"symbol":typeof A},e(x)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=C;var n=a(oi),r=mr,i=xt;function o(){if(typeof WeakMap!="function")return null;var x=new WeakMap;return o=function(){return x},x}function a(x){if(x&&x.__esModule)return x;if(x===null||e(x)!=="object"&&typeof x!="function")return{default:x};var v=o();if(v&&v.has(x))return v.get(x);var A={},D=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var k in x)if(Object.prototype.hasOwnProperty.call(x,k)){var O=D?Object.getOwnPropertyDescriptor(x,k):null;O&&(O.get||O.set)?Object.defineProperty(A,k,O):A[k]=x[k]}return A.default=x,v&&v.set(x,A),A}function s(x,v){var A=Object.keys(x);if(Object.getOwnPropertySymbols){var D=Object.getOwnPropertySymbols(x);v&&(D=D.filter(function(k){return Object.getOwnPropertyDescriptor(x,k).enumerable})),A.push.apply(A,D)}return A}function c(x){for(var v=1;v<arguments.length;v++){var A=arguments[v]!=null?arguments[v]:{};v%2?s(Object(A),!0).forEach(function(D){u(x,D,A[D])}):Object.getOwnPropertyDescriptors?Object.defineProperties(x,Object.getOwnPropertyDescriptors(A)):s(Object(A)).forEach(function(D){Object.defineProperty(x,D,Object.getOwnPropertyDescriptor(A,D))})}return x}function u(x,v,A){return v in x?Object.defineProperty(x,v,{value:A,enumerable:!0,configurable:!0,writable:!0}):x[v]=A,x}function f(x){return p(x)||d(x)||l()}function l(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function d(x){if(Symbol.iterator in Object(x)||Object.prototype.toString.call(x)==="[object Arguments]")return Array.from(x)}function p(x){if(Array.isArray(x)){for(var v=0,A=new Array(x.length);v<x.length;v++)A[v]=x[v];return A}}function h(x,v){var A=(0,i.newHistory)([],x,[]);return v&&(A._latestUnfiltered=null),A}function m(x,v,A,D){var k=x.past.length+1;n.log("inserting",v),n.log("new free: ",A-k);var O=x.past,T=x._latestUnfiltered,B=A&&A<=k,G=O.slice(B?1:0),Q=T!=null?[].concat(f(G),[T]):G;return(0,i.newHistory)(Q,v,[],D)}function g(x,v){if(v<0||v>=x.future.length)return x;var A=x.past,D=x.future,k=x._latestUnfiltered,O=[].concat(f(A),[k],f(D.slice(0,v))),T=D[v],B=D.slice(v+1);return(0,i.newHistory)(O,T,B)}function y(x,v){if(v<0||v>=x.past.length)return x;var A=x.past,D=x.future,k=x._latestUnfiltered,O=A.slice(0,v),T=[].concat(f(A.slice(v+1)),[k],f(D)),B=A[v];return(0,i.newHistory)(O,B,T)}function b(x,v){return v>0?g(x,v-1):v<0?y(x,x.past.length+v):x}function w(x,v){return v.indexOf(x)>-1?x:!x}function C(x){var v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.set(v.debug);var A=c({limit:void 0,filter:function(){return!0},groupBy:function(){return null},undoType:r.ActionTypes.UNDO,redoType:r.ActionTypes.REDO,jumpToPastType:r.ActionTypes.JUMP_TO_PAST,jumpToFutureType:r.ActionTypes.JUMP_TO_FUTURE,jumpType:r.ActionTypes.JUMP,neverSkipReducer:!1,ignoreInitialState:!1,syncFilter:!1},v,{initTypes:(0,i.parseActions)(v.initTypes,["@@redux-undo/INIT"]),clearHistoryType:(0,i.parseActions)(v.clearHistoryType,[r.ActionTypes.CLEAR_HISTORY])}),D=A.neverSkipReducer?function(O,T){for(var B=arguments.length,G=new Array(B>2?B-2:0),Q=2;Q<B;Q++)G[Q-2]=arguments[Q];return c({},O,{present:x.apply(void 0,[O.present,T].concat(G))})}:function(O){return O},k;return function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:k,T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.start(T,O);for(var B=O,G=arguments.length,Q=new Array(G>2?G-2:0),De=2;De<G;De++)Q[De-2]=arguments[De];if(!k)if(n.log("history is uninitialized"),O===void 0){var xn={type:"@@redux-undo/CREATE_HISTORY"},wn=x.apply(void 0,[O,xn].concat(Q));return B=h(wn,A.ignoreInitialState),n.log("do not set initialState on probe actions"),n.end(B),B}else(0,i.isHistory)(O)?(B=k=A.ignoreInitialState?O:(0,i.newHistory)(O.past,O.present,O.future),n.log("initialHistory initialized: initialState is a history",k)):(B=k=h(O,A.ignoreInitialState),n.log("initialHistory initialized: initialState is not a history",k));var _;switch(T.type){case void 0:return B;case A.undoType:return _=b(B,-1),n.log("perform undo"),n.end(_),D.apply(void 0,[_,T].concat(Q));case A.redoType:return _=b(B,1),n.log("perform redo"),n.end(_),D.apply(void 0,[_,T].concat(Q));case A.jumpToPastType:return _=y(B,T.index),n.log("perform jumpToPast to ".concat(T.index)),n.end(_),D.apply(void 0,[_,T].concat(Q));case A.jumpToFutureType:return _=g(B,T.index),n.log("perform jumpToFuture to ".concat(T.index)),n.end(_),D.apply(void 0,[_,T].concat(Q));case A.jumpType:return _=b(B,T.index),n.log("perform jump to ".concat(T.index)),n.end(_),D.apply(void 0,[_,T].concat(Q));case w(T.type,A.clearHistoryType):return _=h(B.present,A.ignoreInitialState),n.log("perform clearHistory"),n.end(_),D.apply(void 0,[_,T].concat(Q));default:if(_=x.apply(void 0,[B.present,T].concat(Q)),A.initTypes.some(function(Nd){return Nd===T.type}))return n.log("reset history due to init action"),n.end(k),k;if(B._latestUnfiltered===_)return B;var Qe=typeof A.filter=="function"&&!A.filter(T,_,B);if(Qe){var qo=(0,i.newHistory)(B.past,_,B.future,B.group);return A.syncFilter||(qo._latestUnfiltered=B._latestUnfiltered),n.log("filter ignored action, not storing it in past"),n.end(qo),qo}var Ko=A.groupBy(T,_,B);if(Ko!=null&&Ko===B.group){var dc=(0,i.newHistory)(B.past,_,B.future,B.group);return n.log("groupBy grouped the action with the previous action"),n.end(dc),dc}return B=m(B,_,A.limit,Ko),n.log("inserted new state into history"),n.end(B),B}}}})(Gv),function(t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ActionTypes",{enumerable:!0,get:function(){return e.ActionTypes}}),Object.defineProperty(t,"ActionCreators",{enumerable:!0,get:function(){return e.ActionCreators}}),Object.defineProperty(t,"parseActions",{enumerable:!0,get:function(){return n.parseActions}}),Object.defineProperty(t,"isHistory",{enumerable:!0,get:function(){return n.isHistory}}),Object.defineProperty(t,"includeAction",{enumerable:!0,get:function(){return n.includeAction}}),Object.defineProperty(t,"excludeAction",{enumerable:!0,get:function(){return n.excludeAction}}),Object.defineProperty(t,"combineFilters",{enumerable:!0,get:function(){return n.combineFilters}}),Object.defineProperty(t,"groupByActionTypes",{enumerable:!0,get:function(){return n.groupByActionTypes}}),Object.defineProperty(t,"newHistory",{enumerable:!0,get:function(){return n.newHistory}}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.default}});var e=mr,n=xt,r=i(Gv);function i(o){return o&&o.__esModule?o:{default:o}}}(Ht);const tk=R9(Ht);function Zs(t){return t.split("-")[0]}function cd(t){return t.split("-")[1]}function ud(t){return["top","bottom"].includes(Zs(t))?"x":"y"}function Qv(t){return t==="y"?"height":"width"}function Vv(t,e,n){let{reference:r,floating:i}=t;const o=r.x+r.width/2-i.width/2,a=r.y+r.height/2-i.height/2,s=ud(e),c=Qv(s),u=r[c]/2-i[c]/2,f=s==="x";let l;switch(Zs(e)){case"top":l={x:o,y:r.y-i.height};break;case"bottom":l={x:o,y:r.y+r.height};break;case"right":l={x:r.x+r.width,y:a};break;case"left":l={x:r.x-i.width,y:a};break;default:l={x:r.x,y:r.y}}switch(cd(e)){case"start":l[s]-=u*(n&&f?-1:1);break;case"end":l[s]+=u*(n&&f?-1:1)}return l}const nk=async(t,e,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:a}=n,s=await(a.isRTL==null?void 0:a.isRTL(e));let c=await a.getElementRects({reference:t,floating:e,strategy:i}),{x:u,y:f}=Vv(c,r,s),l=r,d={};for(let p=0;p<o.length;p++){const{name:h,fn:m}=o[p],{x:g,y,data:b,reset:w}=await m({x:u,y:f,initialPlacement:r,placement:l,strategy:i,middlewareData:d,rects:c,platform:a,elements:{reference:t,floating:e}});u=g??u,f=y??f,d={...d,[h]:{...d[h],...b}},w&&(typeof w=="object"&&(w.placement&&(l=w.placement),w.rects&&(c=w.rects===!0?await a.getElementRects({reference:t,floating:e,strategy:i}):w.rects),{x:u,y:f}=Vv(c,l,s)),p=-1)}return{x:u,y:f,placement:l,strategy:i,middlewareData:d}};function rk(t){return typeof t!="number"?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(t):{top:t,right:t,bottom:t,left:t}}function qs(t){return{...t,top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height}}async function ik(t,e){var n;e===void 0&&(e={});const{x:r,y:i,platform:o,rects:a,elements:s,strategy:c}=t,{boundary:u="clippingAncestors",rootBoundary:f="viewport",elementContext:l="floating",altBoundary:d=!1,padding:p=0}=e,h=rk(p),m=s[d?l==="floating"?"reference":"floating":l],g=qs(await o.getClippingRect({element:(n=await(o.isElement==null?void 0:o.isElement(m)))==null||n?m:m.contextElement||await(o.getDocumentElement==null?void 0:o.getDocumentElement(s.floating)),boundary:u,rootBoundary:f,strategy:c})),y=qs(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({rect:l==="floating"?{...a.floating,x:r,y:i}:a.reference,offsetParent:await(o.getOffsetParent==null?void 0:o.getOffsetParent(s.floating)),strategy:c}):a[l]);return{top:g.top-y.top+h.top,bottom:y.bottom-g.bottom+h.bottom,left:g.left-y.left+h.left,right:y.right-g.right+h.right}}const ok={left:"right",right:"left",bottom:"top",top:"bottom"};function Ks(t){return t.replace(/left|right|bottom|top/g,e=>ok[e])}function ak(t,e,n){n===void 0&&(n=!1);const r=cd(t),i=ud(t),o=Qv(i);let a=i==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return e.reference[o]>e.floating[o]&&(a=Ks(a)),{main:a,cross:Ks(a)}}const sk={start:"end",end:"start"};function Yv(t){return t.replace(/start|end/g,e=>sk[e])}["top","right","bottom","left"].reduce((t,e)=>t.concat(e,e+"-start",e+"-end"),[]);const _v=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(e){var n;const{placement:r,middlewareData:i,rects:o,initialPlacement:a,platform:s,elements:c}=e,{mainAxis:u=!0,crossAxis:f=!0,fallbackPlacements:l,fallbackStrategy:d="bestFit",flipAlignment:p=!0,...h}=t,m=Zs(r),g=l||(m===a||!p?[Ks(a)]:function(D){const k=Ks(D);return[Yv(D),k,Yv(k)]}(a)),y=[a,...g],b=await ik(e,h),w=[];let C=((n=i.flip)==null?void 0:n.overflows)||[];if(u&&w.push(b[m]),f){const{main:D,cross:k}=ak(r,o,await(s.isRTL==null?void 0:s.isRTL(c.floating)));w.push(b[D],b[k])}if(C=[...C,{placement:r,overflows:w}],!w.every(D=>D<=0)){var x,v;const D=((x=(v=i.flip)==null?void 0:v.index)!=null?x:0)+1,k=y[D];if(k)return{data:{index:D,overflows:C},reset:{placement:k}};let O="bottom";switch(d){case"bestFit":{var A;const T=(A=C.map(B=>[B,B.overflows.filter(G=>G>0).reduce((G,Q)=>G+Q,0)]).sort((B,G)=>B[1]-G[1])[0])==null?void 0:A[0].placement;T&&(O=T);break}case"initialPlacement":O=a}if(r!==O)return{reset:{placement:O}}}return{}}}},ck=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(e){const{x:n,y:r}=e,i=await async function(o,a){const{placement:s,platform:c,elements:u}=o,f=await(c.isRTL==null?void 0:c.isRTL(u.floating)),l=Zs(s),d=cd(s),p=ud(s)==="x",h=["left","top"].includes(l)?-1:1,m=f&&p?-1:1,g=typeof a=="function"?a(o):a;let{mainAxis:y,crossAxis:b,alignmentAxis:w}=typeof g=="number"?{mainAxis:g,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...g};return d&&typeof w=="number"&&(b=d==="end"?-1*w:w),p?{x:b*m,y:y*h}:{x:y*h,y:b*m}}(e,t);return{x:n+i.x,y:r+i.y,data:i}}}};function Wv(t){return t&&t.document&&t.location&&t.alert&&t.setInterval}function Gt(t){if(t==null)return window;if(!Wv(t)){const e=t.ownerDocument;return e&&e.defaultView||window}return t}function Bo(t){return Gt(t).getComputedStyle(t)}function Qt(t){return Wv(t)?"":t?(t.nodeName||"").toLowerCase():""}function Xv(){const t=navigator.userAgentData;return t!=null&&t.brands?t.brands.map(e=>e.brand+"/"+e.version).join(" "):navigator.userAgent}function Ct(t){return t instanceof Gt(t).HTMLElement}function ai(t){return t instanceof Gt(t).Element}function ld(t){return typeof ShadowRoot>"u"?!1:t instanceof Gt(t).ShadowRoot||t instanceof ShadowRoot}function Js(t){const{overflow:e,overflowX:n,overflowY:r}=Bo(t);return/auto|scroll|overlay|hidden/.test(e+r+n)}function uk(t){return["table","td","th"].includes(Qt(t))}function Zv(t){const e=/firefox/i.test(Xv()),n=Bo(t);return n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].includes(n.willChange)||e&&n.willChange==="filter"||e&&!!n.filter&&n.filter!=="none"}function qv(){return!/^((?!chrome|android).)*safari/i.test(Xv())}const Kv=Math.min,Oo=Math.max,$s=Math.round;function yr(t,e,n){var r,i,o,a;e===void 0&&(e=!1),n===void 0&&(n=!1);const s=t.getBoundingClientRect();let c=1,u=1;e&&Ct(t)&&(c=t.offsetWidth>0&&$s(s.width)/t.offsetWidth||1,u=t.offsetHeight>0&&$s(s.height)/t.offsetHeight||1);const f=ai(t)?Gt(t):window,l=!qv()&&n,d=(s.left+(l&&(r=(i=f.visualViewport)==null?void 0:i.offsetLeft)!=null?r:0))/c,p=(s.top+(l&&(o=(a=f.visualViewport)==null?void 0:a.offsetTop)!=null?o:0))/u,h=s.width/c,m=s.height/u;return{width:h,height:m,top:p,right:d+h,bottom:p+m,left:d,x:d,y:p}}function vn(t){return(e=t,(e instanceof Gt(e).Node?t.ownerDocument:t.document)||window.document).documentElement;var e}function ec(t){return ai(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Jv(t){return yr(vn(t)).left+ec(t).scrollLeft}function lk(t,e,n){const r=Ct(e),i=vn(e),o=yr(t,r&&function(c){const u=yr(c);return $s(u.width)!==c.offsetWidth||$s(u.height)!==c.offsetHeight}(e),n==="fixed");let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if(r||!r&&n!=="fixed")if((Qt(e)!=="body"||Js(i))&&(a=ec(e)),Ct(e)){const c=yr(e,!0);s.x=c.x+e.clientLeft,s.y=c.y+e.clientTop}else i&&(s.x=Jv(i));return{x:o.left+a.scrollLeft-s.x,y:o.top+a.scrollTop-s.y,width:o.width,height:o.height}}function $v(t){return Qt(t)==="html"?t:t.assignedSlot||t.parentNode||(ld(t)?t.host:null)||vn(t)}function eb(t){return Ct(t)&&getComputedStyle(t).position!=="fixed"?t.offsetParent:null}function fd(t){const e=Gt(t);let n=eb(t);for(;n&&uk(n)&&getComputedStyle(n).position==="static";)n=eb(n);return n&&(Qt(n)==="html"||Qt(n)==="body"&&getComputedStyle(n).position==="static"&&!Zv(n))?e:n||function(r){let i=$v(r);for(ld(i)&&(i=i.host);Ct(i)&&!["html","body"].includes(Qt(i));){if(Zv(i))return i;i=i.parentNode}return null}(t)||e}function tb(t){if(Ct(t))return{width:t.offsetWidth,height:t.offsetHeight};const e=yr(t);return{width:e.width,height:e.height}}function nb(t){const e=$v(t);return["html","body","#document"].includes(Qt(e))?t.ownerDocument.body:Ct(e)&&Js(e)?e:nb(e)}function rb(t,e){var n;e===void 0&&(e=[]);const r=nb(t),i=r===((n=t.ownerDocument)==null?void 0:n.body),o=Gt(r),a=i?[o].concat(o.visualViewport||[],Js(r)?r:[]):r,s=e.concat(a);return i?s:s.concat(rb(a))}function ib(t,e,n){return e==="viewport"?qs(function(r,i){const o=Gt(r),a=vn(r),s=o.visualViewport;let c=a.clientWidth,u=a.clientHeight,f=0,l=0;if(s){c=s.width,u=s.height;const d=qv();(d||!d&&i==="fixed")&&(f=s.offsetLeft,l=s.offsetTop)}return{width:c,height:u,x:f,y:l}}(t,n)):ai(e)?function(r,i){const o=yr(r,!1,i==="fixed"),a=o.top+r.clientTop,s=o.left+r.clientLeft;return{top:a,left:s,x:s,y:a,right:s+r.clientWidth,bottom:a+r.clientHeight,width:r.clientWidth,height:r.clientHeight}}(e,n):qs(function(r){var i;const o=vn(r),a=ec(r),s=(i=r.ownerDocument)==null?void 0:i.body,c=Oo(o.scrollWidth,o.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),u=Oo(o.scrollHeight,o.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0);let f=-a.scrollLeft+Jv(r);const l=-a.scrollTop;return Bo(s||o).direction==="rtl"&&(f+=Oo(o.clientWidth,s?s.clientWidth:0)-c),{width:c,height:u,x:f,y:l}}(vn(t)))}function fk(t){const e=rb(t),n=["absolute","fixed"].includes(Bo(t).position)&&Ct(t)?fd(t):t;return ai(n)?e.filter(r=>ai(r)&&function(i,o){const a=o==null||o.getRootNode==null?void 0:o.getRootNode();if(i!=null&&i.contains(o))return!0;if(a&&ld(a)){let s=o;do{if(s&&i===s)return!0;s=s.parentNode||s.host}while(s)}return!1}(r,n)&&Qt(r)!=="body"):[]}const dk={getClippingRect:function(t){let{element:e,boundary:n,rootBoundary:r,strategy:i}=t;const o=[...n==="clippingAncestors"?fk(e):[].concat(n),r],a=o[0],s=o.reduce((c,u)=>{const f=ib(e,u,i);return c.top=Oo(f.top,c.top),c.right=Kv(f.right,c.right),c.bottom=Kv(f.bottom,c.bottom),c.left=Oo(f.left,c.left),c},ib(e,a,i));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(t){let{rect:e,offsetParent:n,strategy:r}=t;const i=Ct(n),o=vn(n);if(n===o)return e;let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if((i||!i&&r!=="fixed")&&((Qt(n)!=="body"||Js(o))&&(a=ec(n)),Ct(n))){const c=yr(n,!0);s.x=c.x+n.clientLeft,s.y=c.y+n.clientTop}return{...e,x:e.x-a.scrollLeft+s.x,y:e.y-a.scrollTop+s.y}},isElement:ai,getDimensions:tb,getOffsetParent:fd,getDocumentElement:vn,getElementRects:t=>{let{reference:e,floating:n,strategy:r}=t;return{reference:lk(e,fd(n),r),floating:{...tb(n),x:0,y:0}}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>Bo(t).direction==="rtl"},hk=(t,e,n)=>nk(t,e,{platform:dk,...n});let St;const Fo=[],dd=ws(t=>t(),150,!1),hd={type:"divider"};function Po(t){if((t==null?void 0:t.type)=="contextmenu"){t.preventDefault();return}St&&(St.remove(),St=void 0,document.body.classList.remove(Vn))}function ob(t){var e;if(!(t<1)){for(let n=t;n<Fo.length;n++)(e=Fo[n])==null||e.remove(),Fo[n]=void 0;for(const n of Fo[t-1].querySelectorAll("li.active"))n.classList.remove("active")}}const pk=()=>E`<li class="menu-divider"></li>`,mk=t=>E`<li class="menu-header">${t.label||"-"}</li>`,gk=(t,e)=>E`<li><a class="submenu-item" @click="${n=>n.stopPropagation()}" @mouseup="${n=>n.stopPropagation()}" @mouseenter="${n=>dd(()=>{const r=n.target.closest("li");bk(t.submenu,r,e+1),n.stopPropagation()})}" @mouseleave="${()=>dd(()=>ob(e+1))}"><span>${t.label}</span></a></li>`,yk=t=>E`<li><a class="choice-item" @mouseup="${()=>{Po(),t.callback()}}"><span>${t.icon?K(t.icon).node[0]:""} ${t.label}</span> ${t.shortcut?E`<span class="kbd-shortcut">${t.shortcut}</span>`:z} </a>${t.ellipsisCallback?E`<a class="menu-ellipsis" @click="${t.ellipsisCallback}">${K(S6).node[0]}</a>`:z}</li>`,vk=t=>E`<li><span class="disabled-item">${t.icon?K(t.icon).node[0]:""} ${t.label||"-"}</span></li>`;function ab(t,e=1){switch(t.type){case"divider":return pk();case"header":return mk(t);default:return t.submenu?gk(t,e):t.callback?yk(t):vk(t)}}function bk(t,e,n){sb(t,e,n,"right-start"),e.classList.add("active")}function sb(t,e,n,r){const i=document.createElement("ul");i.classList.add("gs-context-menu"),i.addEventListener("mouseenter",()=>{dd(()=>{})}),Be(t.map(o=>ab(o,n)),i),St.appendChild(i),ob(n),Fo[n]=i,hk(e,i,{placement:r??"right-start",middleware:n?[_v()]:[ck(2),_v()]}).then(({x:o,y:a})=>{const s=i.querySelector(":scope > li");s&&(a-=s.getBoundingClientRect().top),i.style.left=`${o}px`,i.style.top=`${a}px`})}function cb(t,e,n){n??(n="bottom-start"),Po();const r=performance.now(),i=document.body;St=document.createElement("div"),St.classList.add("gs-context-menu-backdrop"),St.addEventListener("click",Po),St.addEventListener("contextmenu",Po),St.addEventListener("mouseup",()=>{performance.now()-r>500&&Po()},{once:!0}),i.appendChild(St),document.body.classList.add(Vn),sb(t.items,e,0,n)}function pd(t,e){cb(t,Ak(e),"right-start"),e.preventDefault()}function Ak(t){return{getBoundingClientRect(){return{width:0,height:0,x:t.clientX,y:t.clientY,top:t.clientY,left:t.clientX,right:t.clientX,bottom:t.clientY,toJSON:void 0}}}}const md={NOMINAL:"nominal",ORDINAL:"ordinal",QUANTITATIVE:"quantitative"},tc="SAMPLE_ATTRIBUTE",ub="SAMPLE_NAME",xk=/^attribute-(.*)$/;class lb extends Wr{constructor(e){super({title:"Sample metadata",data:{dynamicSource:!0},hconcat:[],spacing:e.spec.samples.attributeSpacing??1,resolve:{scale:{default:"independent"},axis:{default:"independent"}}},e.context,void 0,"sample-metadata"),this.sampleView=e,this._attributeHighlighState={backgroundOpacity:1,currentAttribute:void 0,abortController:new AbortController},this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(tc,n=>this.children.map(this.getAttributeInfoFromView.bind(this)).find(r=>r&&r.name==n.specifier)),this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(ub,n=>fb),this.addInteractionEventListener("contextmenu",this.handleContextMenu.bind(this)),this.addInteractionEventListener("mousemove",(n,r)=>{var s;const i=r.target,o=this._findSampleForMouseEvent(n,r),a=i&&((s=this.getAttributeInfoFromView(i))==null?void 0:s.name)||void 0;if(o){const c=JSON.stringify([o.id,a]);this.context.updateTooltip(c,u=>Promise.resolve(this.sampleToTooltip(u)))}this._handleAttributeHighlight(a)}),Re([...this.sampleView.getAncestors()]).addInteractionEventListener("mousemove",(n,r)=>{if(this._attributeHighlighState.currentAttribute){if(r.target){for(const i of r.target.getAncestors())if(i==this)return}this._handleAttributeHighlight(void 0)}})}getEncoding(){return{}}render(e,n,r={}){this.isVisible()&&super.render(e,n,{...r,clipRect:this.sampleView._clipBySummary(n)})}_handleAttributeHighlight(e){const n=this._attributeHighlighState;e!=n.currentAttribute&&(n.abortController.abort(),n.abortController=new AbortController,this.context.animator.transition({from:n.backgroundOpacity,onUpdate:r=>{n.backgroundOpacity=r},easingFunction:Yg,signal:n.abortController.signal,...e?{to:.1,duration:1e3,delay:n.backgroundOpacity<1?0:500}:{to:1,duration:200,delay:150}}).catch(r=>{}),this.context.animator.requestRender()),n.currentAttribute=e}getSample(e){var n;return(n=this.sampleView.sampleHierarchy.sampleData)==null?void 0:n.entities[e]}_findSampleForMouseEvent(e,n){return this.sampleView.getSampleAt(n.point.y-this.sampleView.childCoords.y)}_getAttributeOpacity(e){const n=this._attributeHighlighState;return e==n.currentAttribute?1:n.backgroundOpacity}handleContextMenu(e,n){const r=n.uiEvent,i=this._findSampleForMouseEvent(e,n);if(!i){r.preventDefault();return}const o=[this.sampleView.makePeekMenuItem(),hd],a=this.getAttributeInfoFromView(n.target);if(a){const s=i.attributes[a.name];o.push(...od(E`Attribute: <strong>${a.name}</strong>`,a,s,this.sampleView))}else o.push(...od(E`Sample: <strong>${i.displayName}</strong>`,fb,i.id,this.sampleView));pd({items:o},r)}_setSamples(e){if(this.childCount)throw new Error("Children are already created!");this._createViews();const n=this.context.dataFlow;A1(this,n);const r=n.findDataSourceByKey(this);r.visit(o=>o.initialize());const i=[];this.visit(o=>{if(o instanceof pe){const a=o.mark;a.initializeEncoders(),i.push(a.initializeGraphics().then(s=>a)),n.addObserver(s=>{a.initializeData(),a.updateGraphicsData()},o)}}),Promise.allSettled(i).then(o=>{for(const a of o)"value"in a?a.value.finalizeGraphicsInitialization():"reason"in a&&console.error(a.reason)}),r.publishData(e),this.visit(o=>{o.name.startsWith("title")&&n.findDataSourceByKey(o).load()})}_createViews(){const e=[];e.push(this.context.createView(Ck(this.sampleView.spec.samples),this));for(const n of this.getAttributeNames()){const r=this.context.createView(this._createAttributeViewSpec(n),this);r.opacityFunction=i=>i*this._getAttributeOpacity(n),e.push(r)}this.setChildren(e),w1(this)}_getAttributeDef(e){var n,r;return(r=(n=this.sampleView.spec.samples)==null?void 0:n.attributes)==null?void 0:r[e]}getAttributeNames(){return this._cache("attributeNames",()=>[...this.sampleView.getSamples().flatMap(r=>Object.keys(r.attributes)).reduce((r,i)=>r.add(i),new Set)])}_createAttributeViewSpec(e){const n=this._getAttributeDef(e);let r=n?n.type:void 0;if(!r){const i=this.sampleView.getSamples();switch(Gh(i.map(o=>o.attributes[e]))){case"integer":case"number":r=md.QUANTITATIVE;break;default:r=md.NOMINAL}}return wk(e,{...n||{},type:r},this.sampleView.spec.samples)}_findViewForAttribute(e){return this.children[this.getAttributeNames().indexOf(e)+1]}getAttributeInfoFromView(e){const n=e==null?void 0:e.name.match(xk);if(n){const r=e.getScaleResolution("color"),i=n[1];return{name:i,attribute:{type:tc,specifier:i},accessor:(o,a)=>a.sampleData.entities[o].attributes[i],type:r.type,scale:r.getScale(),title:E`<em class="attribute">${i}</em>`}}}getAttributeInfo(e){return this.getAttributeInfoFromView(this._findViewForAttribute(e))}sampleToTooltip(e){const[n,r]=JSON.parse(e),i=this.getSample(n),o=(s,c)=>Sk(c)?this.getAttributeInfo(s).scale(c):"transparent",a=E`<table class="attributes">${Object.entries(i.attributes).map(([s,c])=>E`<tr class="${rf({hovered:s==r})}"><th>${s}</th><td>${k1(c)}</td><td class="color" .style="background-color: ${o(s,c)}"></td></tr>`)}</table>`;return E`<div class="title"><strong>${i.displayName||i.id}</strong></div>${a}`}getDefaultResolution(e,n){return"independent"}handleVerboseCommand(e){const n=e;for(const r of this.getAttributeNames()){const i=this.getAttributeInfo(r);if((i.type==jl||i.type==Ul)&&this.sampleView.getSamples().find(a=>a.attributes[i.name]==n)){const a=this.sampleView.actions.filterByNominal({attribute:{type:tc,specifier:r},values:[n]}),s=this.sampleView.provenance.getPresentState().lastAction,c=this.sampleView.actions.filterByNominal.match(s)&&!s.payload.remove&&s.payload.attribute.type==tc&&s.payload.attribute.specifier==r&&s.payload.values.length==1;return this.sampleView.provenance.storeHelper.dispatch(c?[Ht.ActionCreators.undo(),a]:a),!0}}return!1}isPickingSupported(){return!1}}function wk(t,e,n){const r=`attributes["${t}"]`,i={name:`attribute-${t}`,title:{text:t,orient:"bottom",align:"right",baseline:"middle",offset:5,angle:-90+(n.attributeLabelAngle??0),dy:-.5,font:n.attributeLabelFont,fontSize:n.attributeLabelFontSize??11,fontStyle:n.attributeLabelFontStyle,fontWeight:n.attributeLabelFontWeight},visible:e.visible??!0,width:e.width??n.attributeSize??10,transform:[{type:"filter",expr:`datum.${r} != null`}],mark:{type:"rect",xOffset:-.5},encoding:{facetIndex:{field:"indexNumber"},color:{field:r,type:e.type,scale:e.scale}},opacity:1};return e.barScale&&e.type==md.QUANTITATIVE&&(i.encoding.x={field:`attributes["${t}"]`,type:e.type,scale:e.barScale,axis:null}),i}function Ck(t){return{name:"metadata-sample-name",title:{text:t.labelTitleText??"Sample name",orient:"bottom",anchor:"start",offset:5,font:t.attributeLabelFont,fontSize:t.attributeLabelFontSize??11,fontStyle:t.attributeLabelFontStyle,fontWeight:t.attributeLabelFontWeight},width:t.labelLength??140,mark:{type:"text",baseline:"middle",font:t.labelFont,size:t.labelFontSize??11,fontStyle:t.labelFontStyle,fontWeight:t.labelFontWeight,align:t.labelAlign??"left",flushY:!1},encoding:{facetIndex:{field:"indexNumber"},x:{value:0},x2:{value:1},y:{value:0},y2:{value:1},text:{field:"displayName"}}}}function Sk(t){return t!==""&&!(typeof t=="number"&&isNaN(t))&&t!==null}const fb=Object.freeze({name:"sample",attribute:{type:ub},accessor:t=>t,type:"identifier",scale:void 0});class Ek extends Ot{constructor(e){super({title:{text:"Groups",orient:"none"},width:{step:22},data:{dynamicSource:!0},transform:[{type:"filter",expr:"datum._depth > 0"},{type:"formula",as:"_y1",expr:"datum._index * 2"},{type:"formula",as:"_y2",expr:"datum._index * 2 + 1"},{type:"formula",as:"_title",expr:"datum.title || datum.name"},{type:"formula",as:"_NA",expr:"datum._title === null"},{type:"formula",as:"_title",expr:"datum._title !== null ? datum._title: 'NA'"}],encoding:{x:{field:"_depth",type:"ordinal",scale:{align:0,padding:.2272727},axis:null},y:{field:"_y1",type:"nominal",scale:{type:"ordinal",domain:_t(500)},axis:null},y2:{field:"_y2"}},layer:[{title:"Group",mark:{type:"rect",clip:!0,color:"#e8e8e8",cornerRadiusBottomLeft:14,cornerRadiusTopLeft:14}},{mark:{type:"text",clip:!0,angle:-90,paddingY:5,tooltip:null},encoding:{text:{field:"_title"},opacity:{field:"_NA",type:"nominal",scale:{type:"ordinal",domain:[!1,!0],range:[1,.3]}}}}]},e.context,void 0,"sample-groups"),this.sampleView=e,this._addBroadcastHandler("layoutComputed",()=>{this.updateRange()}),this.addInteractionEventListener("contextmenu",(n,r)=>{const i=r.uiEvent,o=this.context.getCurrentHover();if(!o)return;const a=o.datum._rawGroup;let s;for(const l of id(this.sampleView.sampleHierarchy.rootGroup))if(l.at(-1)===a){s=l.slice(1);break}const c=e.actions.removeGroup({path:s.map(l=>l.name)}),u=e.provenance.getActionInfo(c),f=e.provenance.storeHelper.getDispatcher();pd({items:[{label:u.title,icon:u.icon,callback:()=>f(c)}]},i)})}updateRange(){var o,a;const e=(o=this.sampleView.getLocations())==null?void 0:o.groups;if(!(e!=null&&e.length))return;const n=((a=this.sampleView)==null?void 0:a.childCoords.height)??0,r=this.getScaleResolution("y"),i=[];for(const s of e)i.push(1-(s.locSize.location+s.locSize.size)/n),i.push(1-s.locSize.location/n);r.getScale().range(i),this.context.glHelper.createRangeTexture(r,!0)}updateGroups(){var i;const e=((i=this.sampleView.getLocations())==null?void 0:i.groups)??[],n=this.context.dataFlow.findDataSourceByKey(this);if(!n)return;const r=e.map(o=>({_index:o.key.index,_depth:o.key.depth,_rawGroup:o.key.group,attribute:o.key.attributeLabel,name:o.key.group.name,...o.key.group.name!=o.key.group.title?{title:o.key.group.title}:{},n:o.key.n}));n.publishData(r),this.getScaleResolution("x").reconfigure(),this.getScaleResolution("y").reconfigure(),e.length&&this.updateRange(),Re([...this.getAncestors()]).visit(o=>ho(o,"size"))}}class Dk{constructor(){this.attributeInfoSourcesByType={}}addAttributeInfoSource(e,n){this.attributeInfoSourcesByType[e]=n}getAttributeInfo(e){const n=this.attributeInfoSourcesByType[e.type];if(!n)throw new Error("Cannot find attribute info source for: "+JSON.stringify(e));const r=n(e);if(r)return r;throw new Error("Unknown attribute: "+JSON.stringify(e))}}function nc(t,e,n){let r=n&&t(n);return i=>{const o=t(i);o!==r&&(e(o,r),r=o)}}function db(t,{viewHeight:e=0,sampleHeight:n=0,groupSpacing:r=5,summaryHeight:i=0}){if(!e&&!n)throw new Error("viewHeight or sampleHeight must be provided!");const o=d=>Re(d),a=t.map(d=>({path:d,sampleGroup:o(d),samples:o(d).samples})).filter(d=>d.samples.length),s=n?d=>({px:d.length*n+i,grow:0}):d=>({px:i,grow:d.length}),c=[];yo(a.map(d=>s(d.samples)),e,{spacing:r}).forEach((d,p)=>{c.push({key:a[p].path,locSize:d})});const u=[];for(const[d,p]of a.entries()){const h={grow:1},m=p.samples;yo(m.map(g=>h),Math.max(0,c[d].locSize.size-i),{offset:c[d].locSize.location+i}).forEach((g,y)=>{const{size:b,location:w}=g,C=b*.1*qg(15,22,b);g.location=w+C,g.size=b-2*C,u.push({key:m[y],locSize:g})})}function*f(){const d=[];for(const p of c){const h=p.key,m=Re(h);for(;d.length<=h.length&&d.length&&h[d.length-1]!=d[d.length-1].group;)yield d.pop();for(let g=0;g<d.length;g++){const y=d[g];y.locSize.size=p.locSize.location-y.locSize.location+p.locSize.size}for(let g=d.length;g<h.length;g++)d.push({group:h[g],locSize:{...p.locSize},depth:d.length,n:0});for(const g of d)g.n+=m.samples.length}for(;d.length;)yield d.pop()}const l=[...f()].sort((d,p)=>d.depth-p.depth).map((d,p)=>({key:{index:p,group:d.group,depth:d.depth,n:d.n,attributeLabel:void 0},locSize:d.locSize}));return{samples:u,summaries:c,groups:l}}function Mk(t,e){return e.find(n=>Ig(n.locSize,t))}const hb="VALUE_AT_LOCUS",pb=10;class gd extends nr{constructor(n,r,i,o,a){var f;super(n,r,i,o);$(this,fc);hc(this,"_peekState",0);this.provenance=a,this.spec=n,this.stickySummaries=n.stickySummaries??!0,this.compositeAttributeInfoSource=new Dk,this.child=r.createView(n.spec,this,"sample-facets"),this.summaryViews=new Wr({vconcat:[]},r,this,"sampleSummaries"),this.child.visit(l=>{l instanceof pe&&this.summaryViews.setChildren(l.sampleAggregateViews)}),this.childCoords=dn.ZERO,this.facetTexture=void 0,this.facetTextureData=void 0,this.peripheryView=new Wr({title:"Sidebar",resolve:{scale:{default:"independent"},axis:{default:"independent"}},hconcat:[],spacing:0},r,this,"sample-sidebar"),this.peripheryCoords=dn.ZERO,this.groupPanel=new Ek(this),this.attributePanel=new lb(this),this.peripheryView.setChildren([this.groupPanel,this.attributePanel]);{const l=(f=this.spec.spec)==null?void 0:f.view;if(l!=null&&l.fill||l!=null&&l.stroke){const d=new pe(c1(l),this.context,this,"sample-background");d.blockEncodingInheritance=!0,this.backgroundView=d}else this.backgroundView=void 0}this.child.addInteractionEventListener("contextmenu",this._handleContextMenu.bind(this)),this.provenance.storeHelper.subscribe(nc(l=>nd(l).rootGroup,l=>{this._locations=void 0,this.groupPanel.updateGroups(),this._peekState=0,this.context.requestLayoutReflow(),this.context.animator.requestRender()})),this.provenance.storeHelper.subscribe(nc(l=>nd(l).sampleData,l=>{const d=l&&Object.values(l.entities);d&&(this.attributePanel._setSamples(d),this.facetTextureData=new Float32Array(Math.ceil(d.length*2/4)*4),this.groupPanel.updateGroups())})),this.compositeAttributeInfoSource.addAttributeInfoSource(hb,l=>{var C;const d=l.specifier,p=this.findDescendantByName(d.view);let h;if(le(d.locus))h=d.locus;else{const x=this.getScaleResolution("x").getGenome();if(x)h=x.toContinuous(d.locus.chrom,d.locus.pos);else throw new Error("Encountered a complex locus but no genome is available!")}const m=x=>{var v;return(v=p.mark.findDatumAt(x,h))==null?void 0:v[d.field]},[g,y]=Object.entries(p.getEncoding()).find(([x,v])=>"field"in v&&v.field==d.field),b=g?(C=p.getScaleResolution(g))==null?void 0:C.getScale():void 0;return{name:d.field,attribute:l,title:E`<em class="attribute">${d.field}</em> <span class="viewTitle">(${p.getTitleText()??p.name})</span> at <span class="locus">${mb(d.locus)}</span>`,accessor:m,type:"type"in y?y.type:void 0,scale:b}}),this._addBroadcastHandler("dataLoaded",()=>this.extractSamplesFromData()),this._addBroadcastHandler("layout",()=>{this._locations=void 0}),this._scrollOffset=0,this._scrollableHeight=0,this._peekState=0,this._lastMouseY=-1,this.addInteractionEventListener("mousemove",(l,d)=>{this._lastMouseY=d.point.y-this.childCoords.y}),this.addInteractionEventListener("wheel",(l,d)=>{const p=d.uiEvent;this._peekState&&!p.ctrlKey&&(this._scrollOffset=ms(this._scrollOffset+p.deltaY,0,this._scrollableHeight-this.childCoords.height),this.groupPanel.updateRange(),this.context.animator.requestRender(),d.uiEvent={type:p.type,deltaX:p.deltaX,preventDefault:p.preventDefault.bind(p)})},!0),r.addKeyboardListener("keydown",l=>{l.code=="KeyE"&&!l.repeat&&this.togglePeek()}),r.addKeyboardListener("keyup",l=>{l.code=="KeyE"&&this.togglePeek(!1)});const s=l=>this.compositeAttributeInfoSource.getAttributeInfo(l),c=D9(s);this.provenance.addReducer(c.name,c.reducer),this.provenance.addActionInfoSource(l=>T9(l,s)),this.actions=c.actions;const u=JI(l=>{var d;return(d=l.sampleData)==null?void 0:d.entities},l=>l&&Object.values(l));this.getSamples=()=>u(this.sampleHierarchy),this.spec.samples.data&&this.loadSamples()}getOverhang(){let n=this.peripheryView.isVisible()?this.peripheryView.getSize().width.px:0;return n&&(n+=pb),new Ke(0,0,0,n)}*[Symbol.iterator](){this.backgroundView&&(yield this.backgroundView),yield this.child,yield this.peripheryView}replaceChild(n,r){const i=r;if(n===this.child)this.child=i;else throw new Error("Not my child!")}loadSamples(){if(!this.spec.samples.data)throw new Error("SampleView has no explicit sample metadata specified! Cannot load anything.");const{dataSource:n,collector:r}=C5(g1(this.spec.samples.data,this.getBaseUrl()),new Tk);r.observers.push(o=>{const a=o.getData();this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:a}))});const i="samples "+this.getPathString();this.context.dataFlow.addDataSource(n,i)}extractSamplesFromData(){if(this.getSamples())return;const n=this.getScaleResolution("sample");if(n){const r=n.getDataDomain().map((i,o)=>({id:i,displayName:i,indexNumber:o,attributes:[]}));this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:r}))}else throw new Error("No explicit sample data nor sample channels found!")}get sampleHierarchy(){return this.provenance.getPresentState()[ii]}get leafSamples(){return rd(this.sampleHierarchy).map(r=>r.at(-1)).map(r=>r.samples).flat()}getLocations(){var n,r,i;if(!this._locations){if(!((n=this.childCoords)!=null&&n.height))return;const o=this.sampleHierarchy,a=rd(o),s=[null,...o.groupMetadata],c=(((r=this.summaryViews)==null?void 0:r.isVisible())&&((i=this.summaryViews)==null?void 0:i.getSize().height.px))??0,u=db(a,{viewHeight:this.childCoords.height,groupSpacing:5,summaryHeight:c}),f=db(a,{sampleHeight:35,groupSpacing:15,summaryHeight:c}),l=()=>-this._scrollOffset,d=()=>this._peekState;this._scrollableLocations=f,this._scrollableHeight=f.summaries.map(g=>g.locSize.location+g.locSize.size).reduce((g,y)=>Math.max(g,y),0);const p=(g,y)=>{const b=[];for(let w=0;w<g.length;w++){const C=g[w].key;b.push({key:C,locSize:NM(g[w].locSize,LM(y[w].locSize,l),d)})}return b},h=p(u.groups,f.groups),m=document.createElement("div");h.forEach(g=>{if(g.key.depth==0)return;const y=s[g.key.depth].attribute,b=this.compositeAttributeInfoSource.getAttributeInfo(y).title;b?ne(b)?g.key.attributeLabel=b:(Be(b,m),g.key.attributeLabel=m.textContent.replace(/\s+/g," ").trim()):g.key.attributeLabel="unknown"}),this._locations={samples:p(u.samples,f.samples),summaries:p(u.summaries,f.summaries),groups:h}}return this._locations}getSampleAt(n){const r=Mk(n,this.getLocations().samples);if(r)return this.sampleHierarchy.sampleData.entities[r.key]}getSummaryAt(n){const r=this.getLocations().summaries,i=r.findIndex(o=>Ig(o.locSize,n));return i>=0?{index:i,location:r[i]}:void 0}_clipBySummary(n){if(this.stickySummaries&&this.summaryViews.childCount){const r=this.summaryViews.getSize().height.px;return n.modify({y:()=>n.y+r,height:()=>n.height-r})}}renderChild(n,r,i={}){var c;const o=1/r.height,a=()=>o,s=this._clipBySummary(r);for(const u of this.getLocations().samples){const f={...i,sampleFacetRenderingOptions:{locSize:BM(u.locSize,a)},facetId:[u.key],clipRect:s};(c=this.backgroundView)==null||c.render(n,r,f),this.child.render(n,r,f)}}renderSummaries(n,r,i={}){i={...i,clipRect:r};const o=this.summaryViews.getSize().height.px;for(const[a,s]of this.getLocations().summaries.entries()){const c=()=>{const u=s.locSize.location;let f=r.y+u;return this.stickySummaries?f+ms(-u,0,s.locSize.size-o):f};this.summaryViews.render(n,r.modify({y:c,height:o}),{...i,facetId:[a]})}}render(n,r,i={}){if(!this.isVisible())return;this.parent||(r=r.shrink(this.getPadding())),n.pushView(this,r);const o=yo([this.peripheryView.isVisible()?this.peripheryView.getSize().width:{px:0},{grow:1}],r.width,{spacing:pb}),a=s=>r.modify({x:s.location+r.x,width:s.size});this.peripheryCoords=a(o[0]),this.childCoords=a(o[1]),this.peripheryView.render(n,this.peripheryCoords,i),this.renderChild(n,this.childCoords,i),this.renderSummaries(n,this.childCoords,i),n.popView(this)}onBeforeRender(){this._updateFacetTexture()}_updateFacetTexture(){var o;const n=this.facetTextureData;n.fill(0);const r=(o=this.sampleHierarchy.sampleData)==null?void 0:o.entities;if(r){const a=this.getLocations().samples,s=this.childCoords.height;for(const c of a){const u=r[c.key].indexNumber;n[u*2+0]=c.locSize.location/s,n[u*2+1]=c.locSize.size/s}}const i=this.context.glHelper.gl;this.facetTexture=mo(i,{internalFormat:i.RG32F,format:i.RG,height:1},n,this.facetTexture)}togglePeek(n){var i;if(this._peekState>0&&this._peekState<1||n!==void 0&&n==!!this._peekState)return;const r={requestAnimationFrame:o=>this.context.animator.requestTransition(o),onUpdate:o=>{this._peekState=Math.pow(o,2),this.groupPanel.updateRange(),this.context.animator.requestRender()},from:this._peekState};if(this._peekState==0){const o=this._lastMouseY,a=(i=this.getSampleAt(o))==null?void 0:i.id;let s;if(a)s=(u=>u.location+u.size/2)(this._scrollableLocations.samples.find(u=>u.key==a).locSize);else{const c=this.getSummaryAt(o);c&&(s=this._scrollableLocations.summaries[c.index].locSize.location-(c.location.locSize.location-o))}s?this._scrollOffset=s-o:this._scrollOffset=(this._scrollableHeight-this.childCoords.height)/2,this._scrollableHeight>this.childCoords.height?xs({...r,to:1,duration:500,easingFunction:g8}):xs({...r,from:0,to:1,duration:300,easingFunction:u=>(1-Math.pow(u*2-1,2))*.5})}else xs({...r,to:0,duration:400,easingFunction:p8})}makePeekMenuItem(){return{...this._peekState==0?{label:"Open closeup",callback:()=>this.togglePeek(!0),icon:O6}:{label:"Close closeup",callback:()=>this.togglePeek(!1),icon:F6},shortcut:"E"}}_handleContextMenu(n,r){const i=r.uiEvent,o=this.childCoords.normalizePoint(r.point.x,r.point.y).x,a=this.getScaleResolution("x").invertToComplex(o),s=S1([...this.getAncestors()].at(-1)),c=T5(this.child).filter(l=>!["sample","x","x2"].includes(l.channel)).filter(l=>["rect","rule"].includes(l.view.getMarkType())).filter(l=>s.has(l.view.name));let u=[this.makePeekMenuItem(),hd,{label:`Locus: ${mb(a)}`,type:"header"},hd],f="";for(const[l,d]of c.entries()){const p={view:d.view.name,field:d.field,locus:a},h=this.compositeAttributeInfoSource.getAttributeInfo({type:hb,specifier:p}),m=d.view.getTitleText()??d.view.spec.name;m!=f&&(l>0&&u.push({type:"divider"}),u.push({label:m,type:"header"}),f=m),u.push({label:d.field,submenu:od(null,h,void 0,this)})}pd({items:u},i)}getSampleFacetTexture(){return this.facetTexture}propagateInteractionEvent(n){this.handleInteractionEvent(void 0,n,!0),!n.stopped&&(this.childCoords.containsPoint(n.point.x,n.point.y)&&(this.child.propagateInteractionEvent(n),a1(n,this.childCoords,r=>se(this,fc,$b).call(this,this.childCoords,this.child,r),this.context.getCurrentHover())),this.peripheryCoords.containsPoint(n.point.x,n.point.y)&&this.peripheryView.propagateInteractionEvent(n),!n.stopped&&this.handleInteractionEvent(void 0,n,!1))}getDefaultResolution(n,r){switch(n){case"x":case"sample":return"shared";default:return"independent"}}}fc=new WeakSet,$b=function(n,r,i){const o=this.child.getScaleResolution("x");if(!o||!o.isZoomable())return;const a=n.normalizePoint(i.x,i.y),s=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta);o.zoom(2**i.zDelta,a.x,s.x-a.x),this.context.animator.requestRender()};function mb(t){return!le(t)&&"chrom"in t?a8(t):""+t}class Tk extends ue{constructor(){super(),this.reset()}reset(){this._index=0}handle(e){this._propagate({id:e.sample,displayName:e.displayName||e.sample,indexNumber:this._index++,attributes:Ik(e)})}}function Ik(t){const e=Object.assign({},t);return delete e.sample,delete e.displayName,e}function kk(t){return"samples"in t&&ze(t.samples)&&"spec"in t&&ze(t.spec)}const Nk=(t,e)=>e.some(n=>t instanceof n);let gb,yb;function Lk(){return gb||(gb=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function Bk(){return yb||(yb=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const vb=new WeakMap,yd=new WeakMap,bb=new WeakMap,vd=new WeakMap,bd=new WeakMap;function Ok(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",o),t.removeEventListener("error",a)},o=()=>{n(bn(t.result)),i()},a=()=>{r(t.error),i()};t.addEventListener("success",o),t.addEventListener("error",a)});return e.then(n=>{n instanceof IDBCursor&&vb.set(n,t)}).catch(()=>{}),bd.set(e,t),e}function Fk(t){if(yd.has(t))return;const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("complete",o),t.removeEventListener("error",a),t.removeEventListener("abort",a)},o=()=>{n(),i()},a=()=>{r(t.error||new DOMException("AbortError","AbortError")),i()};t.addEventListener("complete",o),t.addEventListener("error",a),t.addEventListener("abort",a)});yd.set(t,e)}let Ad={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return yd.get(t);if(e==="objectStoreNames")return t.objectStoreNames||bb.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return bn(t[e])},set(t,e,n){return t[e]=n,!0},has(t,e){return t instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in t}};function Pk(t){Ad=t(Ad)}function zk(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(xd(this),e,...n);return bb.set(r,e.sort?e.sort():[e]),bn(r)}:Bk().includes(t)?function(...e){return t.apply(xd(this),e),bn(vb.get(this))}:function(...e){return bn(t.apply(xd(this),e))}}function Rk(t){return typeof t=="function"?zk(t):(t instanceof IDBTransaction&&Fk(t),Nk(t,Lk())?new Proxy(t,Ad):t)}function bn(t){if(t instanceof IDBRequest)return Ok(t);if(vd.has(t))return vd.get(t);const e=Rk(t);return e!==t&&(vd.set(t,e),bd.set(e,t)),e}const xd=t=>bd.get(t);function jk(t,e,{blocked:n,upgrade:r,blocking:i,terminated:o}={}){const a=indexedDB.open(t,e),s=bn(a);return r&&a.addEventListener("upgradeneeded",c=>{r(bn(a.result),c.oldVersion,c.newVersion,bn(a.transaction))}),n&&a.addEventListener("blocked",()=>n()),s.then(c=>{o&&c.addEventListener("close",()=>o()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),s}const Uk=["get","getKey","getAll","getAllKeys","count"],Hk=["put","add","delete","clear"],wd=new Map;function Ab(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(wd.get(e))return wd.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=Hk.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||Uk.includes(n)))return;const o=async function(a,...s){const c=this.transaction(a,i?"readwrite":"readonly");let u=c.store;return r&&(u=u.index(s.shift())),(await Promise.all([u[n](...s),i&&c.done]))[0]};return wd.set(e,o),o}Pk(t=>({...t,get:(e,n,r)=>Ab(e,n)||t.get(e,n,r),has:(e,n)=>!!Ab(e,n)||t.has(e,n)}));class xb{isReadonly(){return!0}async put(e,n){this._checkReadonly()}async delete(e){this._checkReadonly()}async getNames(){return[]}async get(e){}_checkReadonly(){if(this.isReadonly())throw new Error("This bookmark")}}const zo="bookmarks";class Gk extends xb{constructor(e){super(),this.specId=e,this._db=void 0}async _getDB(){if(!this._db){const e=`GenomeSpy: ${this.specId}`;this._db=jk(e,1,{upgrade(n,r,i,o){n.createObjectStore(zo,{keyPath:"name"})},blocked(){},blocking(){},terminated(){}})}return this._db}isReadonly(){return!1}async put(e,n){const i=(await this._getDB()).transaction(zo,"readwrite");try{n?(await i.store.delete(n),await i.store.put(e)):await i.store.put(e),await i.done}catch(o){throw i.abort(),o}}async delete(e){(await this._getDB()).delete(zo,e)}async getNames(){return(await this._getDB()).getAllKeys(zo)}async get(e){return(await this._getDB()).get(zo,e)}}/**
|
2162
|
+
*/function*D9(t,e){const n=typeof e=="function";if(t!==void 0){let r=-1;for(const i of t)r>-1&&(yield n?e(r):e),r++,yield i}}const wv="setSamples",Cv="sortBy",Sv="retainFirstOfEach",Ev="retainFirstNCategories",Dv="filterByNominal",Mv="filterByQuantitative",Tv="removeUndefined",Iv="groupByNominal",kv="groupToQuartiles",Nv="groupByThresholds",Lv="removeGroup",Bv="retainMatched",ri="sampleView";function M9(){return{sampleData:void 0,groupMetadata:[],rootGroup:{name:"ROOT",title:"Root",samples:[]}}}function T9(t){const e=(n,r)=>{const i=t(n.attribute).accessor;return o=>i(o,r)};return Av({name:ri,initialState:M9(),reducers:{[wv]:(n,r)=>{const i=r.payload.samples;if(n.sampleData)throw new Error("Samples have already been set!");if(i.some(a=>a.id===void 0||a.id===null))throw new Error('The sample metadata contains missing sample ids or the "sample" column is missing!');if(new Set(i.map(a=>a.id)).size!=i.length)throw new Error("The sample metadata contains duplicate sample ids!");const o=i.map((a,s)=>({...a,indexNumber:s}));n.sampleData={ids:o.map(a=>a.id),entities:Object.fromEntries(o.map(a=>[a.id,a]))},n.rootGroup={name:"ROOT",title:"Root",samples:n.sampleData.ids}},[Cv]:(n,r)=>{pr(n,i=>w9(i,b9(e(r.payload,n),t(r.payload.attribute)),!1))},[Sv]:(n,r)=>{pr(n,i=>A9(i,e(r.payload,n)))},[Ev]:(n,r)=>{pr(n,i=>x9(i,e(r.payload,n),r.payload.n))},[Mv]:(n,r)=>{pr(n,i=>S9(i,e(r.payload,n),r.payload.operator,r.payload.operand))},[Dv]:(n,r)=>{pr(n,i=>xv(i,e(r.payload,n),r.payload.remove?"remove":"retain",r.payload.values))},[Tv]:(n,r)=>{pr(n,i=>E9(i,e(r.payload,n)))},[Iv]:(n,r)=>{var o;const i=(o=t(r.payload.attribute).scale)==null?void 0:o.domain();td(n,a=>zv(a,e(r.payload,n),i)),n.groupMetadata.push({attribute:r.payload.attribute})},[kv]:(n,r)=>{td(n,i=>L9(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[Nv]:(n,r)=>{td(n,i=>N9(i,e(r.payload,n),r.payload.thresholds)),n.groupMetadata.push({attribute:r.payload.attribute})},[Lv]:(n,r)=>{const i=n.rootGroup;Ws(i)&&jv(i,r.payload.path)},[Bv]:(n,r)=>{const i=e(r.payload,n),o=[];for(const s of nd(n))if(s.samples.length>0){const c=new Set;for(const u of s.samples)c.add(i(u));o.push(c)}const a=[];for(const s of o[0]){let c=!0;for(let u=1;u<o.length&&c;u++)c=o[u].has(s);c&&a.push(s)}pr(n,s=>xv(s,i,"retain",a))}}})}function pr(t,e){for(const n of nd(t))n.samples=e(n.samples)}function td(t,e){for(const n of nd(t))e(n)}function nd(t){return id(t).map(e=>Re(e))}function rd(t){return t.provenance.present[ri]}function id(t){const e=[],n=[],r=i=>{if(e.push(i),Ws(i))for(const o of i.groups)r(o);else n.push([...e]);e.pop()};return r(t.rootGroup),n}function Ov(t){return"samples"in t}function Ws(t){return"groups"in t}function*od(t){if(yield[t],Ws(t))for(const e of t.groups)for(const n of od(e))yield[t,...n]}const I9=de(".4"),Fv={lt:"<",lte:"≤",eq:"=",gte:"≥",gt:">"};function Pv(t){return E`{${t.map((e,n)=>E`${n>0?", ":""}<strong>${e}</strong>`)}}`}function k9(t,e){if(!t.type.startsWith(ri))return;const n=t.payload,r=n.attribute&&e(n.attribute),i=r==null?void 0:r.name,o=(r==null?void 0:r.title)||E`<em>${i}</em>`,a={attributeName:i};switch(t.type.substring(ri.length+1)){case wv:return{...a,title:"The initial state",icon:g6};case Cv:return{...a,title:"Sort by",provenanceTitle:E`Sort by ${o}`,icon:c6};case Sv:return{...a,title:E`Retain the first sample of each <em>${i}</em>`,provenanceTitle:E`Retain the first sample of each ${o}`,icon:Q1};case Ev:return{...a,title:E`Retain first <strong>n</strong> categories of <em>${i}</em>...`,provenanceTitle:E`Retain first <strong>${n.n}</strong> categories of ${o}`,icon:Q1};case Dv:{const c=n.values,u=f=>E`${n.remove?"Remove":"Retain"} samples having ${c[0]===void 0||c[0]===null?E`undefined ${f}`:E`${f} ${c.length>1?E`in ${Pv(c)}`:E`<span class="operator">=</span> <strong>${c[0]}</strong>`}`}`;return{...a,title:u(E`<em>${i}</em>`),provenanceTitle:u(o),icon:n.remove?Ds:ar}}case Mv:{const c=u=>E`Retain samples having ${u} <span class="operator">${Fv[n.operator]}</span> <strong>${I9(n.operand)}</strong>`;return{...a,title:c(E`<em>${i}</em>`),provenanceTitle:c(o),icon:ar}}case Tv:return{...a,title:"Remove samples having missing attribute",provenanceTitle:E`Remove samples having missing ${o}`,icon:Ds};case Iv:return{...a,title:"Group by",provenanceTitle:E`Group by ${o}`,icon:xo};case kv:return{...a,title:"Group by quartiles",provenanceTitle:E`Group by quartiles on ${o}`,icon:xo};case Nv:return{...a,title:"Group by thresholds",provenanceTitle:E`Group by thresholds ${Pv(n.thresholds.map(c=>`${Fv[c.operator]} ${c.operand}`))} on ${o}`,icon:xo};case Lv:return{title:"Remove group",provenanceTitle:E`Remove group ${D9(n.path.map(c=>E`<strong>${c}</strong>`)," / ")}`,icon:Ds};case Bv:return{...a,title:E`Retain group-wise matched samples using <em>${i}</em>`,provenanceTitle:E`Retain group-wise matched samples using ${o}`,icon:ar};default:return{...a,title:JSON.stringify(t),icon:H1}}}function zv(t,e,n,r){if(r&&!n)throw new Error("Custom labels need explicit group order!");const i=pi(t.samples,e),o=n?n.map(c=>[c,i.get(c)]).filter(c=>c[1]):[...i],s=t;s.groups=o.map(([c,u],f)=>({name:""+c,title:r?r[f]:c,samples:u})),delete t.samples}function Rv(t,e,n){const r=a=>`Group ${a+1}`,i=_t(n.length-1).reverse(),o=Uv(e,n.slice(1,n.length-1));zv(t,a=>r(o(a)),i.map(r),i.map(a=>Gv(n[a],n[a+1])))}function N9(t,e,n){Rv(t,e,[{operator:"lt",operand:-1/0},...n,{operator:"lte",operand:1/0}])}function L9(t,e){const n=O9(B9(t.samples,e,[0,.25,.5,.75,1]));n.length==1&&n.push(n[0]),Rv(t,e,n.map((r,i,o)=>({operator:i==o.length-1?"lte":"lt",operand:r})))}function jv(t,e){if(e.length==0)return;const n=t.groups.findIndex(r=>r.name==e[0]);if(!(n<0)){if(e.length==1)t.groups.splice(n,1);else if(e.length>1){const r=t.groups[n];Ws(r)&&jv(r,[...e].splice(1))}}}function Uv(t,e){return r=>{const i=t(r);if(!(!le(i)||isNaN(i))){for(let o=0;o<e.length;o++)if(e[o].operator=="lt"){if(i<e[o].operand)return o}else if(i<=e[o].operand)return o;return e.length}}}function B9(t,e,n){const r=W2(t.map(e).filter(i=>le(i)&&!isNaN(i)));return n.map(i=>Ic(r,i))}function O9(t){const e=[t[0]];for(let n=1;n<t.length;n++)t[n]!=t[n-1]&&e.push(t[n]);return e}const Hv=de(".3~r"),Gv=(t,e)=>`${t.operator=="lt"?"[":"("}${Hv(t.operand)}, ${Hv(e.operand)}${e.operator=="lte"?"]":")"}`;function F9(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=[],i=fr(),o=E`<div class="modal-title">Group by threshold on <em>${t.name}</em></div>`,a=g=>{n(e.actions.groupByThresholds({attribute:t.attribute,thresholds:r})),i.close()},s=()=>E`<div class="modal-buttons"><button class="btn btn-cancel" @click="${()=>i.close()}">Cancel</button> <button class="btn btn-primary" ?disabled="${!P9(r)}" @click="${()=>a()}">${K(xo).node[0]} Group</button></div>`,c=(g,y)=>(y>0&&(g=Math.max(g,r[y-1].operand)),y<r.length-1&&(g=Math.min(g,r[y+1].operand)),g),u=(g,y)=>{const b=g.target.value;r[y].operator=b,m()},f=(g,y)=>{const b=g.target.value;/^\d+(\.\d+)?$/.test(b)&&(r[y].operand=c(+b,y),m())},l=g=>{const y=r.findIndex(b=>b.operand>g.value);r.splice(y<0?r.length:y,0,{operand:g.value,operator:"lt"}),m()},d=g=>{r[g.index].operand=c(g.value,g.index),m()},p=g=>{r.splice(g,1),m()},h=z9(t,e.leafSamples,e.sampleHierarchy);function m(){const g=()=>{const b=[{operand:-1/0,operator:"lt"},...r,{operand:1/0,operator:"lte"}],w=Uv(v=>v,b),C=[];for(let v=1;v<b.length;v++)C.push(0);for(const v of h)C[w(v)-1]++;const x=[];for(let v=1;v<b.length;v++)x.push({index:v-1,name:v,interval:Gv(b[v-1],b[v]),n:C[v-1]});return E`<table class="threshold-groups"><thead><tr><th>Group</th><th>Interval</th><th>n</th></tr></thead><tbody>${x.map(v=>E`<tr><td><span class="group-color" style="background-color:${Zy[v.index]}"></span> ${v.name}</td><td>${v.interval}</td><td>${v.n}</td></tr>`)}</tbody></table>`},y=E`<div class="gs-form-group group-by-thresholds-form"><label>Split into groups using the thresholds:</label><genome-spy-histogram .values="${h}" .thresholds="${r.map(b=>b.operand)}" .operators="${r.map(b=>b.operator)}" .showThresholdNumbers="${!0}" @add="${l}" @adjust="${d}"></genome-spy-histogram>${r.map((b,w)=>E`<div class="threshold-flex"><select .value="${b.operator}" @change="${C=>u(C,w)}"><option value="lt">${"<"}</option><option value="lte">${"≤"}</option></select> <input .value="${""+b.operand}" type="text" placeholder="Numeric value" @input="${C=>f(C,w)}" @blur="${C=>{C.target.value=""+r[w].operand}}"> <button @click="${()=>p(w)}" class="btn" title="Remove">${K(V1).node[0]}</button></div>`)} ${r.length?E`<small>The operator specifies whether the upper endpoint of the interval (<em>i.e.</em>, the group) is exclusive (<) or inclusive(≤). </small>${g()}`:z}</div>`;Be(E`${o}<div class="modal-body">${y}</div>${s()}`,i.content)}m()}function P9(t){return t.length}function z9(t,e,n){const r=t.accessor;return e.map(i=>r(i,n))}function R9(t,e){const n=e.provenance.storeHelper.getDispatcher();let r=5;const i=fr(),o=E`<div class="modal-title">Retain first n categories of <em>${t.title}</em></div>`,a=f=>{n(e.actions.retainFirstNCategories({attribute:t.attribute,n:r})),i.close()},s=()=>E`<div class="modal-buttons"><button class="btn btn-cancel" @click="${()=>i.close()}">Cancel</button> <button class="btn btn-primary" @click="${()=>a()}">${K(ar).node[0]} Retain</button></div>`,c=E`<div class="gs-form-group"><label>Number of categories to retain:</label> <input type="number" min="1" .valueAsNumber="${r}" @change="${f=>{r=f.target.valueAsNumber}}"></div>`;function u(){Be(E`${o}<div class="modal-body">${c}</div>${s()}`,i.content)}u(),i.content.querySelector("input").focus()}function ad(t,e,n,r){const i=r.actions,o=e.attribute,a=r.sampleHierarchy,s=r.provenance.storeHelper.getDispatcher(),c=[];t&&c.push({label:t,type:"header"});const u=(d,p,h)=>{const m=r.provenance.getActionInfo(d);return{label:m.title,icon:m.icon,callback:p?void 0:h??(()=>s(d))}},f=(...d)=>c.push(...d.map(p=>u(p)));f(i.sortBy({attribute:o}));const l=(e==null?void 0:e.type)??"identifier";return l!="quantitative"?(l!="identifier"&&(f(i.groupByNominal({attribute:o}),i.retainFirstOfEach({attribute:o})),c.push(u(i.retainFirstNCategories({attribute:o,n:void 0}),!1,()=>R9(e,r)))),f(i.filterByNominal({attribute:o,values:[n]}),i.filterByNominal({attribute:o,remove:!0,values:[n]})),l!="identifier"&&c.push(u(i.retainMatched({attribute:o}),!a.groupMetadata.length))):(f(i.groupToQuartiles({attribute:o})),c.push({icon:xo,label:"Group by thresholds...",callback:()=>F9(e,r)}),j9(n)?f(i.filterByQuantitative({attribute:o,operator:"gte",operand:+n}),i.filterByQuantitative({attribute:o,operator:"lte",operand:+n})):f(i.removeUndefined({attribute:o}))),c.push({icon:ar,label:"Advanced filter...",callback:()=>TI(e,r)}),c}function j9(t){return t!=null&&t!==""&&!(typeof t=="number"&&isNaN(t))}function U9(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Ht={},mr={};Object.defineProperty(mr,"__esModule",{value:!0}),mr.ActionCreators=mr.ActionTypes=void 0;var gr={UNDO:"@@redux-undo/UNDO",REDO:"@@redux-undo/REDO",JUMP_TO_FUTURE:"@@redux-undo/JUMP_TO_FUTURE",JUMP_TO_PAST:"@@redux-undo/JUMP_TO_PAST",JUMP:"@@redux-undo/JUMP",CLEAR_HISTORY:"@@redux-undo/CLEAR_HISTORY"};mr.ActionTypes=gr;var H9={undo:function(){return{type:gr.UNDO}},redo:function(){return{type:gr.REDO}},jumpToFuture:function(e){return{type:gr.JUMP_TO_FUTURE,index:e}},jumpToPast:function(e){return{type:gr.JUMP_TO_PAST,index:e}},jump:function(e){return{type:gr.JUMP,index:e}},clearHistory:function(){return{type:gr.CLEAR_HISTORY}}};mr.ActionCreators=H9;var xt={};Object.defineProperty(xt,"__esModule",{value:!0}),xt.parseActions=Xs,xt.isHistory=G9,xt.includeAction=Q9,xt.excludeAction=V9,xt.combineFilters=Y9,xt.groupByActionTypes=_9,xt.newHistory=W9;function Xs(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Array.isArray(t)?t:typeof t=="string"?[t]:e}function G9(t){return typeof t.present<"u"&&typeof t.future<"u"&&typeof t.past<"u"&&Array.isArray(t.future)&&Array.isArray(t.past)}function Q9(t){var e=Xs(t);return function(n){return e.indexOf(n.type)>=0}}function V9(t){var e=Xs(t);return function(n){return e.indexOf(n.type)<0}}function Y9(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.reduce(function(r,i){return function(o,a,s){return r(o,a,s)&&i(o,a,s)}},function(){return!0})}function _9(t){var e=Xs(t);return function(n){return e.indexOf(n.type)>=0?n.type:null}}function W9(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;return{past:t,present:e,future:n,group:r,_latestUnfiltered:e,index:t.length,limit:t.length+n.length+1}}var Qv={},ii={};Object.defineProperty(ii,"__esModule",{value:!0}),ii.set=nk,ii.start=$9,ii.end=ek,ii.log=tk;function wt(t){return q9(t)||Z9(t)||X9()}function X9(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function Z9(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function q9(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}var Zs,Je,sd={prevState:"#9E9E9E",action:"#03A9F4",nextState:"#4CAF50"};function K9(){Je={header:[],prev:[],action:[],next:[],msgs:[]}}function J9(){var t=Je,e=t.header,n=t.prev,r=t.next,i=t.action,o=t.msgs;if(console.group){var a,s,c,u,f;(a=console).groupCollapsed.apply(a,wt(e)),(s=console).log.apply(s,wt(n)),(c=console).log.apply(c,wt(i)),(u=console).log.apply(u,wt(r)),(f=console).log.apply(f,wt(o)),console.groupEnd()}else{var l,d,p,h,m;(l=console).log.apply(l,wt(e)),(d=console).log.apply(d,wt(n)),(p=console).log.apply(p,wt(i)),(h=console).log.apply(h,wt(r)),(m=console).log.apply(m,wt(o))}}function cd(t,e,n){return["%c".concat(t),"color: ".concat(e,"; font-weight: bold"),n]}function $9(t,e){K9(),Zs&&(console.group?(Je.header=["%credux-undo","font-style: italic","action",t.type],Je.action=cd("action",sd.action,t),Je.prev=cd("prev history",sd.prevState,e)):(Je.header=["redux-undo action",t.type],Je.action=["action",t],Je.prev=["prev history",e]))}function ek(t){Zs&&(console.group?Je.next=cd("next history",sd.nextState,t):Je.next=["next history",t],J9())}function tk(){if(Zs){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];Je.msgs=Je.msgs.concat([].concat(e,[`
|
2163
|
+
`]))}}function nk(t){Zs=t}(function(t){function e(x){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e=function(A){return typeof A}:e=function(A){return A&&typeof Symbol=="function"&&A.constructor===Symbol&&A!==Symbol.prototype?"symbol":typeof A},e(x)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=C;var n=a(ii),r=mr,i=xt;function o(){if(typeof WeakMap!="function")return null;var x=new WeakMap;return o=function(){return x},x}function a(x){if(x&&x.__esModule)return x;if(x===null||e(x)!=="object"&&typeof x!="function")return{default:x};var v=o();if(v&&v.has(x))return v.get(x);var A={},D=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var k in x)if(Object.prototype.hasOwnProperty.call(x,k)){var O=D?Object.getOwnPropertyDescriptor(x,k):null;O&&(O.get||O.set)?Object.defineProperty(A,k,O):A[k]=x[k]}return A.default=x,v&&v.set(x,A),A}function s(x,v){var A=Object.keys(x);if(Object.getOwnPropertySymbols){var D=Object.getOwnPropertySymbols(x);v&&(D=D.filter(function(k){return Object.getOwnPropertyDescriptor(x,k).enumerable})),A.push.apply(A,D)}return A}function c(x){for(var v=1;v<arguments.length;v++){var A=arguments[v]!=null?arguments[v]:{};v%2?s(Object(A),!0).forEach(function(D){u(x,D,A[D])}):Object.getOwnPropertyDescriptors?Object.defineProperties(x,Object.getOwnPropertyDescriptors(A)):s(Object(A)).forEach(function(D){Object.defineProperty(x,D,Object.getOwnPropertyDescriptor(A,D))})}return x}function u(x,v,A){return v in x?Object.defineProperty(x,v,{value:A,enumerable:!0,configurable:!0,writable:!0}):x[v]=A,x}function f(x){return p(x)||d(x)||l()}function l(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function d(x){if(Symbol.iterator in Object(x)||Object.prototype.toString.call(x)==="[object Arguments]")return Array.from(x)}function p(x){if(Array.isArray(x)){for(var v=0,A=new Array(x.length);v<x.length;v++)A[v]=x[v];return A}}function h(x,v){var A=(0,i.newHistory)([],x,[]);return v&&(A._latestUnfiltered=null),A}function m(x,v,A,D){var k=x.past.length+1;n.log("inserting",v),n.log("new free: ",A-k);var O=x.past,T=x._latestUnfiltered,B=A&&A<=k,G=O.slice(B?1:0),Q=T!=null?[].concat(f(G),[T]):G;return(0,i.newHistory)(Q,v,[],D)}function g(x,v){if(v<0||v>=x.future.length)return x;var A=x.past,D=x.future,k=x._latestUnfiltered,O=[].concat(f(A),[k],f(D.slice(0,v))),T=D[v],B=D.slice(v+1);return(0,i.newHistory)(O,T,B)}function y(x,v){if(v<0||v>=x.past.length)return x;var A=x.past,D=x.future,k=x._latestUnfiltered,O=A.slice(0,v),T=[].concat(f(A.slice(v+1)),[k],f(D)),B=A[v];return(0,i.newHistory)(O,B,T)}function b(x,v){return v>0?g(x,v-1):v<0?y(x,x.past.length+v):x}function w(x,v){return v.indexOf(x)>-1?x:!x}function C(x){var v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.set(v.debug);var A=c({limit:void 0,filter:function(){return!0},groupBy:function(){return null},undoType:r.ActionTypes.UNDO,redoType:r.ActionTypes.REDO,jumpToPastType:r.ActionTypes.JUMP_TO_PAST,jumpToFutureType:r.ActionTypes.JUMP_TO_FUTURE,jumpType:r.ActionTypes.JUMP,neverSkipReducer:!1,ignoreInitialState:!1,syncFilter:!1},v,{initTypes:(0,i.parseActions)(v.initTypes,["@@redux-undo/INIT"]),clearHistoryType:(0,i.parseActions)(v.clearHistoryType,[r.ActionTypes.CLEAR_HISTORY])}),D=A.neverSkipReducer?function(O,T){for(var B=arguments.length,G=new Array(B>2?B-2:0),Q=2;Q<B;Q++)G[Q-2]=arguments[Q];return c({},O,{present:x.apply(void 0,[O.present,T].concat(G))})}:function(O){return O},k;return function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:k,T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.start(T,O);for(var B=O,G=arguments.length,Q=new Array(G>2?G-2:0),De=2;De<G;De++)Q[De-2]=arguments[De];if(!k)if(n.log("history is uninitialized"),O===void 0){var xn={type:"@@redux-undo/CREATE_HISTORY"},wn=x.apply(void 0,[O,xn].concat(Q));return B=h(wn,A.ignoreInitialState),n.log("do not set initialState on probe actions"),n.end(B),B}else(0,i.isHistory)(O)?(B=k=A.ignoreInitialState?O:(0,i.newHistory)(O.past,O.present,O.future),n.log("initialHistory initialized: initialState is a history",k)):(B=k=h(O,A.ignoreInitialState),n.log("initialHistory initialized: initialState is not a history",k));var _;switch(T.type){case void 0:return B;case A.undoType:return _=b(B,-1),n.log("perform undo"),n.end(_),D.apply(void 0,[_,T].concat(Q));case A.redoType:return _=b(B,1),n.log("perform redo"),n.end(_),D.apply(void 0,[_,T].concat(Q));case A.jumpToPastType:return _=y(B,T.index),n.log("perform jumpToPast to ".concat(T.index)),n.end(_),D.apply(void 0,[_,T].concat(Q));case A.jumpToFutureType:return _=g(B,T.index),n.log("perform jumpToFuture to ".concat(T.index)),n.end(_),D.apply(void 0,[_,T].concat(Q));case A.jumpType:return _=b(B,T.index),n.log("perform jump to ".concat(T.index)),n.end(_),D.apply(void 0,[_,T].concat(Q));case w(T.type,A.clearHistoryType):return _=h(B.present,A.ignoreInitialState),n.log("perform clearHistory"),n.end(_),D.apply(void 0,[_,T].concat(Q));default:if(_=x.apply(void 0,[B.present,T].concat(Q)),A.initTypes.some(function(Bd){return Bd===T.type}))return n.log("reset history due to init action"),n.end(k),k;if(B._latestUnfiltered===_)return B;var Qe=typeof A.filter=="function"&&!A.filter(T,_,B);if(Qe){var qo=(0,i.newHistory)(B.past,_,B.future,B.group);return A.syncFilter||(qo._latestUnfiltered=B._latestUnfiltered),n.log("filter ignored action, not storing it in past"),n.end(qo),qo}var Ko=A.groupBy(T,_,B);if(Ko!=null&&Ko===B.group){var dc=(0,i.newHistory)(B.past,_,B.future,B.group);return n.log("groupBy grouped the action with the previous action"),n.end(dc),dc}return B=m(B,_,A.limit,Ko),n.log("inserted new state into history"),n.end(B),B}}}})(Qv),function(t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ActionTypes",{enumerable:!0,get:function(){return e.ActionTypes}}),Object.defineProperty(t,"ActionCreators",{enumerable:!0,get:function(){return e.ActionCreators}}),Object.defineProperty(t,"parseActions",{enumerable:!0,get:function(){return n.parseActions}}),Object.defineProperty(t,"isHistory",{enumerable:!0,get:function(){return n.isHistory}}),Object.defineProperty(t,"includeAction",{enumerable:!0,get:function(){return n.includeAction}}),Object.defineProperty(t,"excludeAction",{enumerable:!0,get:function(){return n.excludeAction}}),Object.defineProperty(t,"combineFilters",{enumerable:!0,get:function(){return n.combineFilters}}),Object.defineProperty(t,"groupByActionTypes",{enumerable:!0,get:function(){return n.groupByActionTypes}}),Object.defineProperty(t,"newHistory",{enumerable:!0,get:function(){return n.newHistory}}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.default}});var e=mr,n=xt,r=i(Qv);function i(o){return o&&o.__esModule?o:{default:o}}}(Ht);const rk=U9(Ht);function qs(t){return t.split("-")[0]}function ud(t){return t.split("-")[1]}function ld(t){return["top","bottom"].includes(qs(t))?"x":"y"}function Vv(t){return t==="y"?"height":"width"}function Yv(t,e,n){let{reference:r,floating:i}=t;const o=r.x+r.width/2-i.width/2,a=r.y+r.height/2-i.height/2,s=ld(e),c=Vv(s),u=r[c]/2-i[c]/2,f=s==="x";let l;switch(qs(e)){case"top":l={x:o,y:r.y-i.height};break;case"bottom":l={x:o,y:r.y+r.height};break;case"right":l={x:r.x+r.width,y:a};break;case"left":l={x:r.x-i.width,y:a};break;default:l={x:r.x,y:r.y}}switch(ud(e)){case"start":l[s]-=u*(n&&f?-1:1);break;case"end":l[s]+=u*(n&&f?-1:1)}return l}const ik=async(t,e,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:a}=n,s=await(a.isRTL==null?void 0:a.isRTL(e));let c=await a.getElementRects({reference:t,floating:e,strategy:i}),{x:u,y:f}=Yv(c,r,s),l=r,d={};for(let p=0;p<o.length;p++){const{name:h,fn:m}=o[p],{x:g,y,data:b,reset:w}=await m({x:u,y:f,initialPlacement:r,placement:l,strategy:i,middlewareData:d,rects:c,platform:a,elements:{reference:t,floating:e}});u=g??u,f=y??f,d={...d,[h]:{...d[h],...b}},w&&(typeof w=="object"&&(w.placement&&(l=w.placement),w.rects&&(c=w.rects===!0?await a.getElementRects({reference:t,floating:e,strategy:i}):w.rects),{x:u,y:f}=Yv(c,l,s)),p=-1)}return{x:u,y:f,placement:l,strategy:i,middlewareData:d}};function ok(t){return typeof t!="number"?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(t):{top:t,right:t,bottom:t,left:t}}function Ks(t){return{...t,top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height}}async function ak(t,e){var n;e===void 0&&(e={});const{x:r,y:i,platform:o,rects:a,elements:s,strategy:c}=t,{boundary:u="clippingAncestors",rootBoundary:f="viewport",elementContext:l="floating",altBoundary:d=!1,padding:p=0}=e,h=ok(p),m=s[d?l==="floating"?"reference":"floating":l],g=Ks(await o.getClippingRect({element:(n=await(o.isElement==null?void 0:o.isElement(m)))==null||n?m:m.contextElement||await(o.getDocumentElement==null?void 0:o.getDocumentElement(s.floating)),boundary:u,rootBoundary:f,strategy:c})),y=Ks(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({rect:l==="floating"?{...a.floating,x:r,y:i}:a.reference,offsetParent:await(o.getOffsetParent==null?void 0:o.getOffsetParent(s.floating)),strategy:c}):a[l]);return{top:g.top-y.top+h.top,bottom:y.bottom-g.bottom+h.bottom,left:g.left-y.left+h.left,right:y.right-g.right+h.right}}const sk={left:"right",right:"left",bottom:"top",top:"bottom"};function Js(t){return t.replace(/left|right|bottom|top/g,e=>sk[e])}function ck(t,e,n){n===void 0&&(n=!1);const r=ud(t),i=ld(t),o=Vv(i);let a=i==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return e.reference[o]>e.floating[o]&&(a=Js(a)),{main:a,cross:Js(a)}}const uk={start:"end",end:"start"};function _v(t){return t.replace(/start|end/g,e=>uk[e])}["top","right","bottom","left"].reduce((t,e)=>t.concat(e,e+"-start",e+"-end"),[]);const Wv=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(e){var n;const{placement:r,middlewareData:i,rects:o,initialPlacement:a,platform:s,elements:c}=e,{mainAxis:u=!0,crossAxis:f=!0,fallbackPlacements:l,fallbackStrategy:d="bestFit",flipAlignment:p=!0,...h}=t,m=qs(r),g=l||(m===a||!p?[Js(a)]:function(D){const k=Js(D);return[_v(D),k,_v(k)]}(a)),y=[a,...g],b=await ak(e,h),w=[];let C=((n=i.flip)==null?void 0:n.overflows)||[];if(u&&w.push(b[m]),f){const{main:D,cross:k}=ck(r,o,await(s.isRTL==null?void 0:s.isRTL(c.floating)));w.push(b[D],b[k])}if(C=[...C,{placement:r,overflows:w}],!w.every(D=>D<=0)){var x,v;const D=((x=(v=i.flip)==null?void 0:v.index)!=null?x:0)+1,k=y[D];if(k)return{data:{index:D,overflows:C},reset:{placement:k}};let O="bottom";switch(d){case"bestFit":{var A;const T=(A=C.map(B=>[B,B.overflows.filter(G=>G>0).reduce((G,Q)=>G+Q,0)]).sort((B,G)=>B[1]-G[1])[0])==null?void 0:A[0].placement;T&&(O=T);break}case"initialPlacement":O=a}if(r!==O)return{reset:{placement:O}}}return{}}}},lk=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(e){const{x:n,y:r}=e,i=await async function(o,a){const{placement:s,platform:c,elements:u}=o,f=await(c.isRTL==null?void 0:c.isRTL(u.floating)),l=qs(s),d=ud(s),p=ld(s)==="x",h=["left","top"].includes(l)?-1:1,m=f&&p?-1:1,g=typeof a=="function"?a(o):a;let{mainAxis:y,crossAxis:b,alignmentAxis:w}=typeof g=="number"?{mainAxis:g,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...g};return d&&typeof w=="number"&&(b=d==="end"?-1*w:w),p?{x:b*m,y:y*h}:{x:y*h,y:b*m}}(e,t);return{x:n+i.x,y:r+i.y,data:i}}}};function Xv(t){return t&&t.document&&t.location&&t.alert&&t.setInterval}function Gt(t){if(t==null)return window;if(!Xv(t)){const e=t.ownerDocument;return e&&e.defaultView||window}return t}function Bo(t){return Gt(t).getComputedStyle(t)}function Qt(t){return Xv(t)?"":t?(t.nodeName||"").toLowerCase():""}function Zv(){const t=navigator.userAgentData;return t!=null&&t.brands?t.brands.map(e=>e.brand+"/"+e.version).join(" "):navigator.userAgent}function Ct(t){return t instanceof Gt(t).HTMLElement}function oi(t){return t instanceof Gt(t).Element}function fd(t){return typeof ShadowRoot>"u"?!1:t instanceof Gt(t).ShadowRoot||t instanceof ShadowRoot}function $s(t){const{overflow:e,overflowX:n,overflowY:r}=Bo(t);return/auto|scroll|overlay|hidden/.test(e+r+n)}function fk(t){return["table","td","th"].includes(Qt(t))}function qv(t){const e=/firefox/i.test(Zv()),n=Bo(t);return n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].includes(n.willChange)||e&&n.willChange==="filter"||e&&!!n.filter&&n.filter!=="none"}function Kv(){return!/^((?!chrome|android).)*safari/i.test(Zv())}const Jv=Math.min,Oo=Math.max,ec=Math.round;function yr(t,e,n){var r,i,o,a;e===void 0&&(e=!1),n===void 0&&(n=!1);const s=t.getBoundingClientRect();let c=1,u=1;e&&Ct(t)&&(c=t.offsetWidth>0&&ec(s.width)/t.offsetWidth||1,u=t.offsetHeight>0&&ec(s.height)/t.offsetHeight||1);const f=oi(t)?Gt(t):window,l=!Kv()&&n,d=(s.left+(l&&(r=(i=f.visualViewport)==null?void 0:i.offsetLeft)!=null?r:0))/c,p=(s.top+(l&&(o=(a=f.visualViewport)==null?void 0:a.offsetTop)!=null?o:0))/u,h=s.width/c,m=s.height/u;return{width:h,height:m,top:p,right:d+h,bottom:p+m,left:d,x:d,y:p}}function vn(t){return(e=t,(e instanceof Gt(e).Node?t.ownerDocument:t.document)||window.document).documentElement;var e}function tc(t){return oi(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function $v(t){return yr(vn(t)).left+tc(t).scrollLeft}function dk(t,e,n){const r=Ct(e),i=vn(e),o=yr(t,r&&function(c){const u=yr(c);return ec(u.width)!==c.offsetWidth||ec(u.height)!==c.offsetHeight}(e),n==="fixed");let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if(r||!r&&n!=="fixed")if((Qt(e)!=="body"||$s(i))&&(a=tc(e)),Ct(e)){const c=yr(e,!0);s.x=c.x+e.clientLeft,s.y=c.y+e.clientTop}else i&&(s.x=$v(i));return{x:o.left+a.scrollLeft-s.x,y:o.top+a.scrollTop-s.y,width:o.width,height:o.height}}function eb(t){return Qt(t)==="html"?t:t.assignedSlot||t.parentNode||(fd(t)?t.host:null)||vn(t)}function tb(t){return Ct(t)&&getComputedStyle(t).position!=="fixed"?t.offsetParent:null}function dd(t){const e=Gt(t);let n=tb(t);for(;n&&fk(n)&&getComputedStyle(n).position==="static";)n=tb(n);return n&&(Qt(n)==="html"||Qt(n)==="body"&&getComputedStyle(n).position==="static"&&!qv(n))?e:n||function(r){let i=eb(r);for(fd(i)&&(i=i.host);Ct(i)&&!["html","body"].includes(Qt(i));){if(qv(i))return i;i=i.parentNode}return null}(t)||e}function nb(t){if(Ct(t))return{width:t.offsetWidth,height:t.offsetHeight};const e=yr(t);return{width:e.width,height:e.height}}function rb(t){const e=eb(t);return["html","body","#document"].includes(Qt(e))?t.ownerDocument.body:Ct(e)&&$s(e)?e:rb(e)}function ib(t,e){var n;e===void 0&&(e=[]);const r=rb(t),i=r===((n=t.ownerDocument)==null?void 0:n.body),o=Gt(r),a=i?[o].concat(o.visualViewport||[],$s(r)?r:[]):r,s=e.concat(a);return i?s:s.concat(ib(a))}function ob(t,e,n){return e==="viewport"?Ks(function(r,i){const o=Gt(r),a=vn(r),s=o.visualViewport;let c=a.clientWidth,u=a.clientHeight,f=0,l=0;if(s){c=s.width,u=s.height;const d=Kv();(d||!d&&i==="fixed")&&(f=s.offsetLeft,l=s.offsetTop)}return{width:c,height:u,x:f,y:l}}(t,n)):oi(e)?function(r,i){const o=yr(r,!1,i==="fixed"),a=o.top+r.clientTop,s=o.left+r.clientLeft;return{top:a,left:s,x:s,y:a,right:s+r.clientWidth,bottom:a+r.clientHeight,width:r.clientWidth,height:r.clientHeight}}(e,n):Ks(function(r){var i;const o=vn(r),a=tc(r),s=(i=r.ownerDocument)==null?void 0:i.body,c=Oo(o.scrollWidth,o.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),u=Oo(o.scrollHeight,o.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0);let f=-a.scrollLeft+$v(r);const l=-a.scrollTop;return Bo(s||o).direction==="rtl"&&(f+=Oo(o.clientWidth,s?s.clientWidth:0)-c),{width:c,height:u,x:f,y:l}}(vn(t)))}function hk(t){const e=ib(t),n=["absolute","fixed"].includes(Bo(t).position)&&Ct(t)?dd(t):t;return oi(n)?e.filter(r=>oi(r)&&function(i,o){const a=o==null||o.getRootNode==null?void 0:o.getRootNode();if(i!=null&&i.contains(o))return!0;if(a&&fd(a)){let s=o;do{if(s&&i===s)return!0;s=s.parentNode||s.host}while(s)}return!1}(r,n)&&Qt(r)!=="body"):[]}const pk={getClippingRect:function(t){let{element:e,boundary:n,rootBoundary:r,strategy:i}=t;const o=[...n==="clippingAncestors"?hk(e):[].concat(n),r],a=o[0],s=o.reduce((c,u)=>{const f=ob(e,u,i);return c.top=Oo(f.top,c.top),c.right=Jv(f.right,c.right),c.bottom=Jv(f.bottom,c.bottom),c.left=Oo(f.left,c.left),c},ob(e,a,i));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(t){let{rect:e,offsetParent:n,strategy:r}=t;const i=Ct(n),o=vn(n);if(n===o)return e;let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if((i||!i&&r!=="fixed")&&((Qt(n)!=="body"||$s(o))&&(a=tc(n)),Ct(n))){const c=yr(n,!0);s.x=c.x+n.clientLeft,s.y=c.y+n.clientTop}return{...e,x:e.x-a.scrollLeft+s.x,y:e.y-a.scrollTop+s.y}},isElement:oi,getDimensions:nb,getOffsetParent:dd,getDocumentElement:vn,getElementRects:t=>{let{reference:e,floating:n,strategy:r}=t;return{reference:dk(e,dd(n),r),floating:{...nb(n),x:0,y:0}}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>Bo(t).direction==="rtl"},mk=(t,e,n)=>ik(t,e,{platform:pk,...n});let St;const Fo=[],hd=Cs(t=>t(),150,!1),pd={type:"divider"};function Po(t){if((t==null?void 0:t.type)=="contextmenu"){t.preventDefault();return}St&&(St.remove(),St=void 0,document.body.classList.remove(Vn))}function ab(t){var e;if(!(t<1)){for(let n=t;n<Fo.length;n++)(e=Fo[n])==null||e.remove(),Fo[n]=void 0;for(const n of Fo[t-1].querySelectorAll("li.active"))n.classList.remove("active")}}const gk=()=>E`<li class="menu-divider"></li>`,yk=t=>E`<li class="menu-header">${t.label||"-"}</li>`,vk=(t,e)=>E`<li><a class="submenu-item" @click="${n=>n.stopPropagation()}" @mouseup="${n=>n.stopPropagation()}" @mouseenter="${n=>hd(()=>{const r=n.target.closest("li");xk(t.submenu,r,e+1),n.stopPropagation()})}" @mouseleave="${()=>hd(()=>ab(e+1))}"><span>${t.label}</span></a></li>`,bk=t=>E`<li><a class="choice-item" @mouseup="${()=>{Po(),t.callback()}}"><span>${t.icon?K(t.icon).node[0]:""} ${t.label}</span> ${t.shortcut?E`<span class="kbd-shortcut">${t.shortcut}</span>`:z} </a>${t.ellipsisCallback?E`<a class="menu-ellipsis" @click="${t.ellipsisCallback}">${K(D6).node[0]}</a>`:z}</li>`,Ak=t=>E`<li><span class="disabled-item">${t.icon?K(t.icon).node[0]:""} ${t.label||"-"}</span></li>`;function sb(t,e=1){switch(t.type){case"divider":return gk();case"header":return yk(t);default:return t.submenu?vk(t,e):t.callback?bk(t):Ak(t)}}function xk(t,e,n){cb(t,e,n,"right-start"),e.classList.add("active")}function cb(t,e,n,r){const i=document.createElement("ul");i.classList.add("gs-context-menu"),i.addEventListener("mouseenter",()=>{hd(()=>{})}),Be(t.map(o=>sb(o,n)),i),St.appendChild(i),ab(n),Fo[n]=i,mk(e,i,{placement:r??"right-start",middleware:n?[Wv()]:[lk(2),Wv()]}).then(({x:o,y:a})=>{const s=i.querySelector(":scope > li");s&&(a-=s.getBoundingClientRect().top),i.style.left=`${o}px`,i.style.top=`${a}px`})}function ub(t,e,n){n??(n="bottom-start"),Po();const r=performance.now(),i=document.body;St=document.createElement("div"),St.classList.add("gs-context-menu-backdrop"),St.addEventListener("click",Po),St.addEventListener("contextmenu",Po),St.addEventListener("mouseup",()=>{performance.now()-r>500&&Po()},{once:!0}),i.appendChild(St),document.body.classList.add(Vn),cb(t.items,e,0,n)}function md(t,e){ub(t,wk(e),"right-start"),e.preventDefault()}function wk(t){return{getBoundingClientRect(){return{width:0,height:0,x:t.clientX,y:t.clientY,top:t.clientY,left:t.clientX,right:t.clientX,bottom:t.clientY,toJSON:void 0}}}}const gd={NOMINAL:"nominal",ORDINAL:"ordinal",QUANTITATIVE:"quantitative"},nc="SAMPLE_ATTRIBUTE",lb="SAMPLE_NAME",Ck=/^attribute-(.*)$/;class fb extends Wr{constructor(e){super({title:"Sample metadata",data:{dynamicSource:!0},hconcat:[],spacing:e.spec.samples.attributeSpacing??1,resolve:{scale:{default:"independent"},axis:{default:"independent"}}},e.context,void 0,"sample-metadata"),this.sampleView=e,this._attributeHighlighState={backgroundOpacity:1,currentAttribute:void 0,abortController:new AbortController},this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(nc,n=>this.children.map(this.getAttributeInfoFromView.bind(this)).find(r=>r&&r.name==n.specifier)),this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(lb,n=>db),this.addInteractionEventListener("contextmenu",this.handleContextMenu.bind(this)),this.addInteractionEventListener("mousemove",(n,r)=>{var s;const i=r.target,o=this._findSampleForMouseEvent(n,r),a=i&&((s=this.getAttributeInfoFromView(i))==null?void 0:s.name)||void 0;if(o){const c=JSON.stringify([o.id,a]);this.context.updateTooltip(c,u=>Promise.resolve(this.sampleToTooltip(u)))}this._handleAttributeHighlight(a)}),Re([...this.sampleView.getAncestors()]).addInteractionEventListener("mousemove",(n,r)=>{if(this._attributeHighlighState.currentAttribute){if(r.target){for(const i of r.target.getAncestors())if(i==this)return}this._handleAttributeHighlight(void 0)}})}getEncoding(){return{}}render(e,n,r={}){this.isVisible()&&super.render(e,n,{...r,clipRect:this.sampleView._clipBySummary(n)})}_handleAttributeHighlight(e){const n=this._attributeHighlighState;e!=n.currentAttribute&&(n.abortController.abort(),n.abortController=new AbortController,this.context.animator.transition({from:n.backgroundOpacity,onUpdate:r=>{n.backgroundOpacity=r},easingFunction:Wg,signal:n.abortController.signal,...e?{to:.1,duration:1e3,delay:n.backgroundOpacity<1?0:500}:{to:1,duration:200,delay:150}}).catch(r=>{}),this.context.animator.requestRender()),n.currentAttribute=e}getSample(e){var n;return(n=this.sampleView.sampleHierarchy.sampleData)==null?void 0:n.entities[e]}_findSampleForMouseEvent(e,n){return this.sampleView.getSampleAt(n.point.y-this.sampleView.childCoords.y)}_getAttributeOpacity(e){const n=this._attributeHighlighState;return e==n.currentAttribute?1:n.backgroundOpacity}handleContextMenu(e,n){const r=n.uiEvent,i=this._findSampleForMouseEvent(e,n);if(!i){r.preventDefault();return}const o=[this.sampleView.makePeekMenuItem(),pd],a=this.getAttributeInfoFromView(n.target);if(a){const s=i.attributes[a.name];o.push(...ad(E`Attribute: <strong>${a.name}</strong>`,a,s,this.sampleView))}else o.push(...ad(E`Sample: <strong>${i.displayName}</strong>`,db,i.id,this.sampleView));md({items:o},r)}_setSamples(e){if(this.childCount)throw new Error("Children are already created!");this._createViews();const n=this.context.dataFlow;x1(this,n);const r=n.findDataSourceByKey(this);r.visit(o=>o.initialize());const i=[];this.visit(o=>{if(o instanceof pe){const a=o.mark;a.initializeEncoders(),i.push(a.initializeGraphics().then(s=>a)),n.addObserver(s=>{a.initializeData(),a.updateGraphicsData()},o)}}),Promise.allSettled(i).then(o=>{for(const a of o)"value"in a?a.value.finalizeGraphicsInitialization():"reason"in a&&console.error(a.reason)}),r.publishData(e),this.visit(o=>{o.name.startsWith("title")&&n.findDataSourceByKey(o).load()})}_createViews(){const e=[];e.push(this.context.createView(Ek(this.sampleView.spec.samples),this));for(const n of this.getAttributeNames()){const r=this.context.createView(this._createAttributeViewSpec(n),this);r.opacityFunction=i=>i*this._getAttributeOpacity(n),e.push(r)}this.setChildren(e),C1(this)}_getAttributeDef(e){var n,r;return(r=(n=this.sampleView.spec.samples)==null?void 0:n.attributes)==null?void 0:r[e]}getAttributeNames(){return this._cache("attributeNames",()=>[...this.sampleView.getSamples().flatMap(r=>Object.keys(r.attributes)).reduce((r,i)=>r.add(i),new Set)])}_createAttributeViewSpec(e){const n=this._getAttributeDef(e);let r=n?n.type:void 0;if(!r){const i=this.sampleView.getSamples();switch(Vh(i.map(o=>o.attributes[e]))){case"integer":case"number":r=gd.QUANTITATIVE;break;default:r=gd.NOMINAL}}return Sk(e,{...n||{},type:r},this.sampleView.spec.samples)}_findViewForAttribute(e){return this.children[this.getAttributeNames().indexOf(e)+1]}getAttributeInfoFromView(e){const n=e==null?void 0:e.name.match(Ck);if(n){const r=e.getScaleResolution("color"),i=n[1];return{name:i,attribute:{type:nc,specifier:i},accessor:(o,a)=>a.sampleData.entities[o].attributes[i],type:r.type,scale:r.getScale(),title:E`<em class="attribute">${i}</em>`}}}getAttributeInfo(e){return this.getAttributeInfoFromView(this._findViewForAttribute(e))}sampleToTooltip(e){const[n,r]=JSON.parse(e),i=this.getSample(n),o=(s,c)=>Dk(c)?this.getAttributeInfo(s).scale(c):"transparent",a=E`<table class="attributes">${Object.entries(i.attributes).map(([s,c])=>E`<tr class="${of({hovered:s==r})}"><th>${s}</th><td>${N1(c)}</td><td class="color" .style="background-color: ${o(s,c)}"></td></tr>`)}</table>`;return E`<div class="title"><strong>${i.displayName||i.id}</strong></div>${a}`}getDefaultResolution(e,n){return"independent"}handleVerboseCommand(e){const n=e;for(const r of this.getAttributeNames()){const i=this.getAttributeInfo(r);if((i.type==Ul||i.type==Hl)&&this.sampleView.getSamples().find(a=>a.attributes[i.name]==n)){const a=this.sampleView.actions.filterByNominal({attribute:{type:nc,specifier:r},values:[n]}),s=this.sampleView.provenance.getPresentState().lastAction,c=this.sampleView.actions.filterByNominal.match(s)&&!s.payload.remove&&s.payload.attribute.type==nc&&s.payload.attribute.specifier==r&&s.payload.values.length==1;return this.sampleView.provenance.storeHelper.dispatch(c?[Ht.ActionCreators.undo(),a]:a),!0}}return!1}isPickingSupported(){return!1}}function Sk(t,e,n){const r=`attributes["${t}"]`,i={name:`attribute-${t}`,title:{text:t,orient:"bottom",align:"right",baseline:"middle",offset:5,angle:-90+(n.attributeLabelAngle??0),dy:-.5,font:n.attributeLabelFont,fontSize:n.attributeLabelFontSize??11,fontStyle:n.attributeLabelFontStyle,fontWeight:n.attributeLabelFontWeight},visible:e.visible??!0,width:e.width??n.attributeSize??10,transform:[{type:"filter",expr:`datum.${r} != null`}],mark:{type:"rect",xOffset:-.5},encoding:{facetIndex:{field:"indexNumber"},color:{field:r,type:e.type,scale:e.scale}},opacity:1};return e.barScale&&e.type==gd.QUANTITATIVE&&(i.encoding.x={field:`attributes["${t}"]`,type:e.type,scale:e.barScale,axis:null}),i}function Ek(t){return{name:"metadata-sample-name",title:{text:t.labelTitleText??"Sample name",orient:"bottom",anchor:"start",offset:5,font:t.attributeLabelFont,fontSize:t.attributeLabelFontSize??11,fontStyle:t.attributeLabelFontStyle,fontWeight:t.attributeLabelFontWeight},width:t.labelLength??140,mark:{type:"text",baseline:"middle",font:t.labelFont,size:t.labelFontSize??11,fontStyle:t.labelFontStyle,fontWeight:t.labelFontWeight,align:t.labelAlign??"left",flushY:!1},encoding:{facetIndex:{field:"indexNumber"},x:{value:0},x2:{value:1},y:{value:0},y2:{value:1},text:{field:"displayName"}}}}function Dk(t){return t!==""&&!(typeof t=="number"&&isNaN(t))&&t!==null}const db=Object.freeze({name:"sample",attribute:{type:lb},accessor:t=>t,type:"identifier",scale:void 0});class Mk extends Ot{constructor(e){super({title:{text:"Groups",orient:"none"},width:{step:22},data:{dynamicSource:!0},transform:[{type:"filter",expr:"datum._depth > 0"},{type:"formula",as:"_y1",expr:"datum._index * 2"},{type:"formula",as:"_y2",expr:"datum._index * 2 + 1"},{type:"formula",as:"_title",expr:"datum.title || datum.name"},{type:"formula",as:"_NA",expr:"datum._title === null"},{type:"formula",as:"_title",expr:"datum._title !== null ? datum._title: 'NA'"}],encoding:{x:{field:"_depth",type:"ordinal",scale:{align:0,padding:.2272727},axis:null},y:{field:"_y1",type:"nominal",scale:{type:"ordinal",domain:_t(500)},axis:null},y2:{field:"_y2"}},layer:[{title:"Group",mark:{type:"rect",clip:!0,color:"#e8e8e8",cornerRadiusBottomLeft:14,cornerRadiusTopLeft:14}},{mark:{type:"text",clip:!0,angle:-90,paddingY:5,tooltip:null},encoding:{text:{field:"_title"},opacity:{field:"_NA",type:"nominal",scale:{type:"ordinal",domain:[!1,!0],range:[1,.3]}}}}]},e.context,void 0,"sample-groups"),this.sampleView=e,this._addBroadcastHandler("layoutComputed",()=>{this.updateRange()}),this.addInteractionEventListener("contextmenu",(n,r)=>{const i=r.uiEvent,o=this.context.getCurrentHover();if(!o)return;const a=o.datum._rawGroup;let s;for(const l of od(this.sampleView.sampleHierarchy.rootGroup))if(l.at(-1)===a){s=l.slice(1);break}const c=e.actions.removeGroup({path:s.map(l=>l.name)}),u=e.provenance.getActionInfo(c),f=e.provenance.storeHelper.getDispatcher();md({items:[{label:u.title,icon:u.icon,callback:()=>f(c)}]},i)})}updateRange(){var o,a;const e=(o=this.sampleView.getLocations())==null?void 0:o.groups;if(!(e!=null&&e.length))return;const n=((a=this.sampleView)==null?void 0:a.childCoords.height)??0,r=this.getScaleResolution("y"),i=[];for(const s of e)i.push(1-(s.locSize.location+s.locSize.size)/n),i.push(1-s.locSize.location/n);r.getScale().range(i),this.context.glHelper.createRangeTexture(r,!0)}updateGroups(){var i;const e=((i=this.sampleView.getLocations())==null?void 0:i.groups)??[],n=this.context.dataFlow.findDataSourceByKey(this);if(!n)return;const r=e.map(o=>({_index:o.key.index,_depth:o.key.depth,_rawGroup:o.key.group,attribute:o.key.attributeLabel,name:o.key.group.name,...o.key.group.name!=o.key.group.title?{title:o.key.group.title}:{},n:o.key.n}));n.publishData(r),this.getScaleResolution("x").reconfigure(),this.getScaleResolution("y").reconfigure(),e.length&&this.updateRange(),Re([...this.getAncestors()]).visit(o=>fo(o,"size"))}}class Tk{constructor(){this.attributeInfoSourcesByType={}}addAttributeInfoSource(e,n){this.attributeInfoSourcesByType[e]=n}getAttributeInfo(e){const n=this.attributeInfoSourcesByType[e.type];if(!n)throw new Error("Cannot find attribute info source for: "+JSON.stringify(e));const r=n(e);if(r)return r;throw new Error("Unknown attribute: "+JSON.stringify(e))}}function rc(t,e,n){let r=n&&t(n);return i=>{const o=t(i);o!==r&&(e(o,r),r=o)}}function hb(t,{viewHeight:e=0,sampleHeight:n=0,groupSpacing:r=5,summaryHeight:i=0}){if(!e&&!n)throw new Error("viewHeight or sampleHeight must be provided!");const o=d=>Re(d),a=t.map(d=>({path:d,sampleGroup:o(d),samples:o(d).samples})).filter(d=>d.samples.length),s=n?d=>({px:d.length*n+i,grow:0}):d=>({px:i,grow:d.length}),c=[];go(a.map(d=>s(d.samples)),e,{spacing:r}).forEach((d,p)=>{c.push({key:a[p].path,locSize:d})});const u=[];for(const[d,p]of a.entries()){const h={grow:1},m=p.samples;go(m.map(g=>h),Math.max(0,c[d].locSize.size-i),{offset:c[d].locSize.location+i}).forEach((g,y)=>{const{size:b,location:w}=g,C=b*.1*Jg(15,22,b);g.location=w+C,g.size=b-2*C,u.push({key:m[y],locSize:g})})}function*f(){const d=[];for(const p of c){const h=p.key,m=Re(h);for(;d.length<=h.length&&d.length&&h[d.length-1]!=d[d.length-1].group;)yield d.pop();for(let g=0;g<d.length;g++){const y=d[g];y.locSize.size=p.locSize.location-y.locSize.location+p.locSize.size}for(let g=d.length;g<h.length;g++)d.push({group:h[g],locSize:{...p.locSize},depth:d.length,n:0});for(const g of d)g.n+=m.samples.length}for(;d.length;)yield d.pop()}const l=[...f()].sort((d,p)=>d.depth-p.depth).map((d,p)=>({key:{index:p,group:d.group,depth:d.depth,n:d.n,attributeLabel:void 0},locSize:d.locSize}));return{samples:u,summaries:c,groups:l}}function Ik(t,e){return e.find(n=>Ng(n.locSize,t))}const pb="VALUE_AT_LOCUS",mb=10;class yd extends nr{constructor(n,r,i,o,a){var f;super(n,r,i,o);$(this,fc);hc(this,"_peekState",0);this.provenance=a,this.spec=n,this.stickySummaries=n.stickySummaries??!0,this.compositeAttributeInfoSource=new Tk,this.child=r.createView(n.spec,this,"sample-facets"),this.summaryViews=new Wr({vconcat:[]},r,this,"sampleSummaries"),this.child.visit(l=>{l instanceof pe&&this.summaryViews.setChildren(l.sampleAggregateViews)}),this.childCoords=dn.ZERO,this.facetTexture=void 0,this.facetTextureData=void 0,this.peripheryView=new Wr({title:"Sidebar",resolve:{scale:{default:"independent"},axis:{default:"independent"}},hconcat:[],spacing:0},r,this,"sample-sidebar"),this.peripheryCoords=dn.ZERO,this.groupPanel=new Mk(this),this.attributePanel=new fb(this),this.peripheryView.setChildren([this.groupPanel,this.attributePanel]);{const l=(f=this.spec.spec)==null?void 0:f.view;if(l!=null&&l.fill||l!=null&&l.stroke){const d=new pe(l1(l),this.context,this,"sample-background");d.blockEncodingInheritance=!0,this.backgroundView=d}else this.backgroundView=void 0}this.child.addInteractionEventListener("contextmenu",this._handleContextMenu.bind(this)),this.provenance.storeHelper.subscribe(rc(l=>rd(l).rootGroup,l=>{this._locations=void 0,this.groupPanel.updateGroups(),this._peekState=0,this.context.requestLayoutReflow(),this.context.animator.requestRender()})),this.provenance.storeHelper.subscribe(rc(l=>rd(l).sampleData,l=>{const d=l&&Object.values(l.entities);d&&(this.attributePanel._setSamples(d),this.facetTextureData=new Float32Array(Math.ceil(d.length*2/4)*4),this.groupPanel.updateGroups())})),this.compositeAttributeInfoSource.addAttributeInfoSource(pb,l=>{var C;const d=l.specifier,p=this.findDescendantByName(d.view);let h;if(le(d.locus))h=d.locus;else{const x=this.getScaleResolution("x").getGenome();if(x)h=x.toContinuous(d.locus.chrom,d.locus.pos);else throw new Error("Encountered a complex locus but no genome is available!")}const m=x=>{var v;return(v=p.mark.findDatumAt(x,h))==null?void 0:v[d.field]},[g,y]=Object.entries(p.getEncoding()).find(([x,v])=>"field"in v&&v.field==d.field),b=g?(C=p.getScaleResolution(g))==null?void 0:C.getScale():void 0;return{name:d.field,attribute:l,title:E`<em class="attribute">${d.field}</em> <span class="viewTitle">(${p.getTitleText()??p.name})</span> at <span class="locus">${gb(d.locus)}</span>`,accessor:m,type:"type"in y?y.type:void 0,scale:b}}),this._addBroadcastHandler("dataLoaded",()=>this.extractSamplesFromData()),this._addBroadcastHandler("layout",()=>{this._locations=void 0}),this._scrollOffset=0,this._scrollableHeight=0,this._peekState=0,this._lastMouseY=-1,this.addInteractionEventListener("mousemove",(l,d)=>{this._lastMouseY=d.point.y-this.childCoords.y}),this.addInteractionEventListener("wheel",(l,d)=>{const p=d.uiEvent;this._peekState&&!p.ctrlKey&&(this._scrollOffset=ms(this._scrollOffset+p.deltaY,0,this._scrollableHeight-this.childCoords.height),this.groupPanel.updateRange(),this.context.animator.requestRender(),d.uiEvent={type:p.type,deltaX:p.deltaX,preventDefault:p.preventDefault.bind(p)})},!0),r.addKeyboardListener("keydown",l=>{l.code=="KeyE"&&!l.repeat&&this.togglePeek()}),r.addKeyboardListener("keyup",l=>{l.code=="KeyE"&&this.togglePeek(!1)});const s=l=>this.compositeAttributeInfoSource.getAttributeInfo(l),c=T9(s);this.provenance.addReducer(c.name,c.reducer),this.provenance.addActionInfoSource(l=>k9(l,s)),this.actions=c.actions;const u=e9(l=>{var d;return(d=l.sampleData)==null?void 0:d.entities},l=>l&&Object.values(l));this.getSamples=()=>u(this.sampleHierarchy),this.spec.samples.data&&this.loadSamples()}getOverhang(){let n=this.peripheryView.isVisible()?this.peripheryView.getSize().width.px:0;return n&&(n+=mb),new Ke(0,0,0,n)}*[Symbol.iterator](){this.backgroundView&&(yield this.backgroundView),yield this.child,yield this.peripheryView}replaceChild(n,r){const i=r;if(n===this.child)this.child=i;else throw new Error("Not my child!")}loadSamples(){if(!this.spec.samples.data)throw new Error("SampleView has no explicit sample metadata specified! Cannot load anything.");const{dataSource:n,collector:r}=E5(v1(this.spec.samples.data,this.getBaseUrl()),new kk);r.observers.push(o=>{const a=o.getData();this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:a}))});const i="samples "+this.getPathString();this.context.dataFlow.addDataSource(n,i)}extractSamplesFromData(){if(this.getSamples())return;const n=this.getScaleResolution("sample");if(n){const r=n.getDataDomain().map((i,o)=>({id:i,displayName:i,indexNumber:o,attributes:[]}));this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:r}))}else throw new Error("No explicit sample data nor sample channels found!")}get sampleHierarchy(){return this.provenance.getPresentState()[ri]}get leafSamples(){return id(this.sampleHierarchy).map(r=>r.at(-1)).map(r=>r.samples).flat()}getLocations(){var n,r,i;if(!this._locations){if(!((n=this.childCoords)!=null&&n.height))return;const o=this.sampleHierarchy,a=id(o),s=[null,...o.groupMetadata],c=(((r=this.summaryViews)==null?void 0:r.isVisible())&&((i=this.summaryViews)==null?void 0:i.getSize().height.px))??0,u=hb(a,{viewHeight:this.childCoords.height,groupSpacing:5,summaryHeight:c}),f=hb(a,{sampleHeight:35,groupSpacing:15,summaryHeight:c}),l=()=>-this._scrollOffset,d=()=>this._peekState;this._scrollableLocations=f,this._scrollableHeight=f.summaries.map(g=>g.locSize.location+g.locSize.size).reduce((g,y)=>Math.max(g,y),0);const p=(g,y)=>{const b=[];for(let w=0;w<g.length;w++){const C=g[w].key;b.push({key:C,locSize:BM(g[w].locSize,OM(y[w].locSize,l),d)})}return b},h=p(u.groups,f.groups),m=document.createElement("div");h.forEach(g=>{if(g.key.depth==0)return;const y=s[g.key.depth].attribute,b=this.compositeAttributeInfoSource.getAttributeInfo(y).title;b?ne(b)?g.key.attributeLabel=b:(Be(b,m),g.key.attributeLabel=m.textContent.replace(/\s+/g," ").trim()):g.key.attributeLabel="unknown"}),this._locations={samples:p(u.samples,f.samples),summaries:p(u.summaries,f.summaries),groups:h}}return this._locations}getSampleAt(n){const r=Ik(n,this.getLocations().samples);if(r)return this.sampleHierarchy.sampleData.entities[r.key]}getSummaryAt(n){const r=this.getLocations().summaries,i=r.findIndex(o=>Ng(o.locSize,n));return i>=0?{index:i,location:r[i]}:void 0}_clipBySummary(n){if(this.stickySummaries&&this.summaryViews.childCount){const r=this.summaryViews.getSize().height.px;return n.modify({y:()=>n.y+r,height:()=>n.height-r})}}renderChild(n,r,i={}){var c;const o=1/r.height,a=()=>o,s=this._clipBySummary(r);for(const u of this.getLocations().samples){const f={...i,sampleFacetRenderingOptions:{locSize:FM(u.locSize,a)},facetId:[u.key],clipRect:s};(c=this.backgroundView)==null||c.render(n,r,f),this.child.render(n,r,f)}}renderSummaries(n,r,i={}){i={...i,clipRect:r};const o=this.summaryViews.getSize().height.px;for(const[a,s]of this.getLocations().summaries.entries()){const c=()=>{const u=s.locSize.location;let f=r.y+u;return this.stickySummaries?f+ms(-u,0,s.locSize.size-o):f};this.summaryViews.render(n,r.modify({y:c,height:o}),{...i,facetId:[a]})}}render(n,r,i={}){if(!this.isVisible())return;this.parent||(r=r.shrink(this.getPadding())),n.pushView(this,r);const o=go([this.peripheryView.isVisible()?this.peripheryView.getSize().width:{px:0},{grow:1}],r.width,{spacing:mb}),a=s=>r.modify({x:s.location+r.x,width:s.size});this.peripheryCoords=a(o[0]),this.childCoords=a(o[1]),this.peripheryView.render(n,this.peripheryCoords,i),this.renderChild(n,this.childCoords,i),this.renderSummaries(n,this.childCoords,i),n.popView(this)}onBeforeRender(){this._updateFacetTexture()}_updateFacetTexture(){var o;const n=this.facetTextureData;n.fill(0);const r=(o=this.sampleHierarchy.sampleData)==null?void 0:o.entities;if(r){const a=this.getLocations().samples,s=this.childCoords.height;for(const c of a){const u=r[c.key].indexNumber;n[u*2+0]=c.locSize.location/s,n[u*2+1]=c.locSize.size/s}}const i=this.context.glHelper.gl;this.facetTexture=po(i,{internalFormat:i.RG32F,format:i.RG,height:1},n,this.facetTexture)}togglePeek(n){var i;if(this._peekState>0&&this._peekState<1||n!==void 0&&n==!!this._peekState)return;const r={requestAnimationFrame:o=>this.context.animator.requestTransition(o),onUpdate:o=>{this._peekState=Math.pow(o,2),this.groupPanel.updateRange(),this.context.animator.requestRender()},from:this._peekState};if(this._peekState==0){const o=this._lastMouseY,a=(i=this.getSampleAt(o))==null?void 0:i.id;let s;if(a)s=(u=>u.location+u.size/2)(this._scrollableLocations.samples.find(u=>u.key==a).locSize);else{const c=this.getSummaryAt(o);c&&(s=this._scrollableLocations.summaries[c.index].locSize.location-(c.location.locSize.location-o))}s?this._scrollOffset=s-o:this._scrollOffset=(this._scrollableHeight-this.childCoords.height)/2,this._scrollableHeight>this.childCoords.height?ws({...r,to:1,duration:500,easingFunction:v8}):ws({...r,from:0,to:1,duration:300,easingFunction:u=>(1-Math.pow(u*2-1,2))*.5})}else ws({...r,to:0,duration:400,easingFunction:g8})}makePeekMenuItem(){return{...this._peekState==0?{label:"Open closeup",callback:()=>this.togglePeek(!0),icon:P6}:{label:"Close closeup",callback:()=>this.togglePeek(!1),icon:z6},shortcut:"E"}}_handleContextMenu(n,r){const i=r.uiEvent,o=this.childCoords.normalizePoint(r.point.x,r.point.y).x,a=this.getScaleResolution("x").invertToComplex(o),s=E1([...this.getAncestors()].at(-1)),c=k5(this.child).filter(l=>!["sample","x","x2"].includes(l.channel)).filter(l=>["rect","rule"].includes(l.view.getMarkType())).filter(l=>s.has(l.view.name));let u=[this.makePeekMenuItem(),pd,{label:`Locus: ${gb(a)}`,type:"header"},pd],f="";for(const[l,d]of c.entries()){const p={view:d.view.name,field:d.field,locus:a},h=this.compositeAttributeInfoSource.getAttributeInfo({type:pb,specifier:p}),m=d.view.getTitleText()??d.view.spec.name;m!=f&&(l>0&&u.push({type:"divider"}),u.push({label:m,type:"header"}),f=m),u.push({label:d.field,submenu:ad(null,h,void 0,this)})}md({items:u},i)}getSampleFacetTexture(){return this.facetTexture}propagateInteractionEvent(n){this.handleInteractionEvent(void 0,n,!0),!n.stopped&&(this.childCoords.containsPoint(n.point.x,n.point.y)&&(this.child.propagateInteractionEvent(n),c1(n,this.childCoords,r=>se(this,fc,t2).call(this,this.childCoords,this.child,r),this.context.getCurrentHover())),this.peripheryCoords.containsPoint(n.point.x,n.point.y)&&this.peripheryView.propagateInteractionEvent(n),!n.stopped&&this.handleInteractionEvent(void 0,n,!1))}getDefaultResolution(n,r){switch(n){case"x":case"sample":return"shared";default:return"independent"}}}fc=new WeakSet,t2=function(n,r,i){const o=this.child.getScaleResolution("x");if(!o||!o.isZoomable())return;const a=n.normalizePoint(i.x,i.y),s=n.normalizePoint(i.x+i.xDelta,i.y+i.yDelta);o.zoom(2**i.zDelta,a.x,s.x-a.x),this.context.animator.requestRender()};function gb(t){return!le(t)&&"chrom"in t?c8(t):""+t}class kk extends ue{constructor(){super(),this.reset()}reset(){this._index=0}handle(e){this._propagate({id:e.sample,displayName:e.displayName||e.sample,indexNumber:this._index++,attributes:Nk(e)})}}function Nk(t){const e=Object.assign({},t);return delete e.sample,delete e.displayName,e}function Lk(t){return"samples"in t&&ze(t.samples)&&"spec"in t&&ze(t.spec)}const Bk=(t,e)=>e.some(n=>t instanceof n);let yb,vb;function Ok(){return yb||(yb=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function Fk(){return vb||(vb=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const bb=new WeakMap,vd=new WeakMap,Ab=new WeakMap,bd=new WeakMap,Ad=new WeakMap;function Pk(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",o),t.removeEventListener("error",a)},o=()=>{n(bn(t.result)),i()},a=()=>{r(t.error),i()};t.addEventListener("success",o),t.addEventListener("error",a)});return e.then(n=>{n instanceof IDBCursor&&bb.set(n,t)}).catch(()=>{}),Ad.set(e,t),e}function zk(t){if(vd.has(t))return;const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("complete",o),t.removeEventListener("error",a),t.removeEventListener("abort",a)},o=()=>{n(),i()},a=()=>{r(t.error||new DOMException("AbortError","AbortError")),i()};t.addEventListener("complete",o),t.addEventListener("error",a),t.addEventListener("abort",a)});vd.set(t,e)}let xd={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return vd.get(t);if(e==="objectStoreNames")return t.objectStoreNames||Ab.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return bn(t[e])},set(t,e,n){return t[e]=n,!0},has(t,e){return t instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in t}};function Rk(t){xd=t(xd)}function jk(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(wd(this),e,...n);return Ab.set(r,e.sort?e.sort():[e]),bn(r)}:Fk().includes(t)?function(...e){return t.apply(wd(this),e),bn(bb.get(this))}:function(...e){return bn(t.apply(wd(this),e))}}function Uk(t){return typeof t=="function"?jk(t):(t instanceof IDBTransaction&&zk(t),Bk(t,Ok())?new Proxy(t,xd):t)}function bn(t){if(t instanceof IDBRequest)return Pk(t);if(bd.has(t))return bd.get(t);const e=Uk(t);return e!==t&&(bd.set(t,e),Ad.set(e,t)),e}const wd=t=>Ad.get(t);function Hk(t,e,{blocked:n,upgrade:r,blocking:i,terminated:o}={}){const a=indexedDB.open(t,e),s=bn(a);return r&&a.addEventListener("upgradeneeded",c=>{r(bn(a.result),c.oldVersion,c.newVersion,bn(a.transaction))}),n&&a.addEventListener("blocked",()=>n()),s.then(c=>{o&&c.addEventListener("close",()=>o()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),s}const Gk=["get","getKey","getAll","getAllKeys","count"],Qk=["put","add","delete","clear"],Cd=new Map;function xb(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(Cd.get(e))return Cd.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=Qk.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||Gk.includes(n)))return;const o=async function(a,...s){const c=this.transaction(a,i?"readwrite":"readonly");let u=c.store;return r&&(u=u.index(s.shift())),(await Promise.all([u[n](...s),i&&c.done]))[0]};return Cd.set(e,o),o}Rk(t=>({...t,get:(e,n,r)=>xb(e,n)||t.get(e,n,r),has:(e,n)=>!!xb(e,n)||t.has(e,n)}));class wb{isReadonly(){return!0}async put(e,n){this._checkReadonly()}async delete(e){this._checkReadonly()}async getNames(){return[]}async get(e){}_checkReadonly(){if(this.isReadonly())throw new Error("This bookmark")}}const zo="bookmarks";class Vk extends wb{constructor(e){super(),this.specId=e,this._db=void 0}async _getDB(){if(!this._db){const e=`GenomeSpy: ${this.specId}`;this._db=Hk(e,1,{upgrade(n,r,i,o){n.createObjectStore(zo,{keyPath:"name"})},blocked(){},blocking(){},terminated(){}})}return this._db}isReadonly(){return!1}async put(e,n){const i=(await this._getDB()).transaction(zo,"readwrite");try{n?(await i.store.delete(n),await i.store.put(e)):await i.store.put(e),await i.done}catch(o){throw i.abort(),o}}async delete(e){(await this._getDB()).delete(zo,e)}async getNames(){return(await this._getDB()).getAllKeys(zo)}async get(e){return(await this._getDB()).get(zo,e)}}/**
|
2155
2164
|
* @license
|
2156
2165
|
* Copyright 2017 Google LLC
|
2157
2166
|
* SPDX-License-Identifier: BSD-3-Clause
|
2158
|
-
*/const Ro=(t,e)=>{var n,r;const i=t._$AN;if(i===void 0)return!1;for(const o of i)(r=(n=o)._$AO)===null||r===void 0||r.call(n,e,!1),Ro(o,e);return!0},
|
2167
|
+
*/const Ro=(t,e)=>{var n,r;const i=t._$AN;if(i===void 0)return!1;for(const o of i)(r=(n=o)._$AO)===null||r===void 0||r.call(n,e,!1),Ro(o,e);return!0},ic=t=>{let e,n;do{if((e=t._$AM)===void 0)break;n=e._$AN,n.delete(t),t=e}while((n==null?void 0:n.size)===0)},Cb=t=>{for(let e;e=t._$AM;t=e){let n=e._$AN;if(n===void 0)e._$AN=n=new Set;else if(n.has(t))break;n.add(t),Wk(e)}};function Yk(t){this._$AN!==void 0?(ic(this),this._$AM=t,Cb(this)):this._$AM=t}function _k(t,e=!1,n=0){const r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(e)if(Array.isArray(r))for(let o=n;o<r.length;o++)Ro(r[o],!1),ic(r[o]);else r!=null&&(Ro(r,!1),ic(r));else Ro(this,t)}const Wk=t=>{var e,n,r,i;t.type==vt.CHILD&&((e=(r=t)._$AP)!==null&&e!==void 0||(r._$AP=_k),(n=(i=t)._$AQ)!==null&&n!==void 0||(i._$AQ=Yk))};let Sb=class extends Zr{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,n,r){super._$AT(e,n,r),Cb(this),this.isConnected=e._$AU}_$AO(e,n=!0){var r,i;e!==this.isConnected&&(this.isConnected=e,e?(r=this.reconnected)===null||r===void 0||r.call(this):(i=this.disconnected)===null||i===void 0||i.call(this)),n&&(Ro(this,e),ic(this))}setValue(e){if(Qy(this._$Ct))this._$Ct._$AI(e,this);else{const n=[...this._$Ct._$AH];n[this._$Ci]=e,this._$Ct._$AI(n,this,0)}}disconnected(){}reconnected(){}};/**
|
2159
2168
|
* @license
|
2160
2169
|
* Copyright 2020 Google LLC
|
2161
2170
|
* SPDX-License-Identifier: BSD-3-Clause
|
2162
|
-
*/const
|
2171
|
+
*/const Eb=()=>new Xk;class Xk{}const Sd=new WeakMap,Db=or(class extends Sb{render(t){return z}update(t,[e]){var n;const r=e!==this.Y;return r&&this.Y!==void 0&&this.rt(void 0),(r||this.lt!==this.ct)&&(this.Y=e,this.dt=(n=t.options)===null||n===void 0?void 0:n.host,this.rt(this.ct=t.element)),z}rt(t){var e;if(typeof this.Y=="function"){const n=(e=this.dt)!==null&&e!==void 0?e:globalThis;let r=Sd.get(n);r===void 0&&(r=new WeakMap,Sd.set(n,r)),r.get(this.Y)!==void 0&&this.Y.call(this.dt,void 0),r.set(this.Y,t),t!==void 0&&this.Y.call(this.dt,t)}else this.Y.value=t}get lt(){var t,e,n;return typeof this.Y=="function"?(e=Sd.get((t=this.dt)!==null&&t!==void 0?t:globalThis))===null||e===void 0?void 0:e.get(this.Y):(n=this.Y)===null||n===void 0?void 0:n.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});/**
|
2163
2172
|
* @license
|
2164
2173
|
* Copyright 2018 Google LLC
|
2165
2174
|
* SPDX-License-Identifier: BSD-3-Clause
|
2166
|
-
*/const
|
2175
|
+
*/const Zk={},qk=or(class extends Zr{constructor(){super(...arguments),this.ot=Zk}render(t,e){return e()}update(t,[e,n]){if(Array.isArray(e)){if(Array.isArray(this.ot)&&this.ot.length===e.length&&e.every((r,i)=>r===this.ot[i]))return Ae}else if(this.ot===e)return Ae;return this.ot=Array.isArray(e)?Array.from(e):e,this.render(e,n)}});class Kk extends yt{constructor(){super(),this.inputRef=Eb(),this.app=void 0,this.getDefaultValue=()=>"",this._keyListener=this._onKeyDown.bind(this),this._documentClickListener=e=>{var n;e.target!==this._inputField&&((n=this._inputField)==null||n.blur())},this._focused=!1}get genomeSpy(){return this.app.genomeSpy}get _inputField(){return this.inputRef.value}static get properties(){return{app:{type:Object}}}connectedCallback(){super.connectedCallback(),this._initializeGenome(),document.addEventListener("keydown",this._keyListener),document.addEventListener("click",this._documentClickListener)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("keydown",this._keyListener),document.removeEventListener("click",this._documentClickListener)}createRenderRoot(){return this}_onKeyDown(e){switch(e.code){case"KeyF":e.metaKey||e.altKey||e.ctrlKey||(e.preventDefault(),this.inputRef.value.focus());break}}_initializeGenome(){const e=Mb(this.genomeSpy.viewRoot);e&&(this._genomeResolution=e,this._genome=this.genomeSpy.genomeStore.getGenome(),this.getDefaultValue=()=>this._genome.formatInterval(e.getDomain()),e.addEventListener("domain",Cs(()=>this.requestUpdate(),60,!1)))}async searchViews(e){var r;const n=new Intl.Collator("en",{usage:"search",sensitivity:"base"});for(const i of this.genomeSpy.getSearchableViews()){const o=i.getAccessor("search"),a=i.getAccessor("x"),s=i.getAccessor("x2"),c=i.getScaleResolution("x");if(!(!a||!s||!(c!=null&&c.isZoomable()))){for(const u of((r=i.getCollector())==null?void 0:r.getData())??[])if(n.compare(o(u),e)===0){const f=gc([a(u),s(u)],null,1.2);return await c.zoomTo(f),!0}}}return!1}async search(e){await(async()=>{if(this._genomeResolution&&this._genome){const r=this._genome.parseInterval(e);if(r){this._genomeResolution.zoomTo(r);return}if(await this.searchViews(e))return;this.genomeSpy.viewRoot.visit(i=>{i instanceof fb&&i.handleVerboseCommand(e)})}})(),this._inputField.value=this.getDefaultValue(),this.requestUpdate()}_onSearchHelpClicked(e){const n=e.target;n.tagName=="LI"&&this._doExampleSearch(n.innerText)}_onSearchFocused(e){const n=e.target;switch(e.type){case"focus":this._focused=!0,n.select();break;case"blur":this._focused=!1;break}}_onSearchKeyDown(e){const n=e.target;e.code=="Enter"?(e.preventDefault(),this.search(n.value).then(()=>{n.focus(),n.select()}).catch(r=>{console.log(r),alert(r)})):e.code=="Escape"?n.blur():e.stopPropagation()}_doExampleSearch(e){Jk(e,this._inputField).then(()=>{this._inputField.blur(),this.search(e)})}_getSearchHelp(){var r,i;const e=[];e.push(E`<p>Focus to a specific range. Examples:</p><ul><li>chr8</li><li>chr8:21,445,873</li><li>chr8:21,445,873-24,623,697</li><li>chr4:166,014,727-chr15:23,731,397</li></ul>`);for(const o of((r=this.genomeSpy)==null?void 0:r.getSearchableViews())||[]){const a=o.getTitleText()??o.spec.name,s=o.getAccessor("search"),c=s.fields.join(", "),u=Ig(3,o.getCollector().getData(),s);e.push(E`<p>Search <em>${a}</em> (${c}). Examples:</p><ul>${u.map(f=>E`<li>${f}</li>`)}</ul>`)}const n=(i=this.app.getSampleView())==null?void 0:i.attributePanel;if(n){const o=n.getAttributeNames().map(a=>n.getAttributeInfo(a)).filter(a=>a.type=="nominal"||a.type=="ordinal").sort(()=>.5-Math.random()).map(a=>{var s;return[...((s=a.scale)==null?void 0:s.domain())??[]].sort(()=>.5-Math.random())[0]}).filter(a=>a!==void 0).slice(0,3);o.length&&e.push(E`<p>Filter samples by categorical attributes. Examples:</p><ul>${o.map(a=>E`<li>${a}</li>`)}</ul>`)}return E`<div class="search-help" @click="${this._onSearchHelpClicked}">${e}</div>`}updated(e){this._focused&&this._inputField.select()}render(){return E`<div class="search"><input type="text" class="search-input" .value="${this.getDefaultValue()}" @mousedown="${e=>{this._focused||(this._inputField.focus(),e.preventDefault(),e.stopPropagation())}}" @keydown="${this._onSearchKeyDown.bind(this)}" @focus="${this._onSearchFocused}" @blur="${this._onSearchFocused}" ${Db(this.inputRef)}> ${qk([123],()=>this._getSearchHelp())}</div>`}}customElements.define("genome-spy-search-field",Kk);function Jk(t,e){return new Promise(n=>{let r=0;const i=700/t.length+30;function o(){e.value=t.substring(0,r),r>=t.length?setTimeout(n,500):(r++,setTimeout(o,Math.random()*i*2))}o()})}function Mb(t){let e;return t.visit(n=>{for(const r of["x","y"]){const i=n.resolutions.scale[r];if(i&&i.type=="locus"&&i.isZoomable())return e=i,tr}}),e}const Tb="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+",Ib={name:"@genome-spy/app",description:"GenomeSpy-based visualization tool for multiple patient samples",author:{name:"Kari Lavikka",email:"kari.lavikka@helsinki.fi"},contributors:[],license:"MIT",version:"0.30.3",main:"dist/index.js",files:["dist/"],repository:{type:"git",url:"github:genome-spy/genome-spy",directory:"packages/app"},scripts:{dev:"node dev-server.js",build:"vite build",prepublishOnly:"npm run build"},dependencies:{"@floating-ui/dom":"^0.5.0","@fortawesome/fontawesome-free":"^6.1.1","@fortawesome/fontawesome-svg-core":"^6.1.1","@fortawesome/free-solid-svg-icons":"^6.1.1","@genome-spy/core":"^0.30.3","@reduxjs/toolkit":"^1.8.4",idb:"^7.0.1",lit:"^2.4.0","lz-string":"^1.4.4",mapsort:"^1.0.5","redux-batched-actions":"^0.5.0","redux-undo":"^1.0.1",snarkdown:"^2.0.0"},gitHead:"b4900c82877041afa1781f601e29cef4f51d5a52"};/**
|
2167
2176
|
* @license
|
2168
2177
|
* Copyright 2020 Google LLC
|
2169
2178
|
* SPDX-License-Identifier: BSD-3-Clause
|
2170
|
-
*/const
|
2179
|
+
*/const $k=or(class extends Zr{constructor(t){if(super(t),t.type!==vt.PROPERTY&&t.type!==vt.ATTRIBUTE&&t.type!==vt.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!Qy(t))throw Error("`live` bindings can only contain a single expression")}render(t){return t}update(t,[e]){if(e===Ae||e===z)return e;const n=t.element,r=t.name;if(t.type===vt.PROPERTY){if(e===n[r])return Ae}else if(t.type===vt.BOOLEAN_ATTRIBUTE){if(!!e===n.hasAttribute(r))return Ae}else if(t.type===vt.ATTRIBUTE&&n.getAttribute(r)===e+"")return Ae;return Yy(t),e}});function kb(t,e){return new CustomEvent("query-dependency",{detail:{name:t,setter:e},bubbles:!0})}function eN(t){if(!(t!=null&&t.length))throw new Error("Can't nest an empty array!");const e=Nb(null);for(const n of t){if(!(n!=null&&n.length))throw new Error("Cannot nest, element has no path!");let r=e;for(const i of n){let o=r.children.find(a=>a.item===i);o||(o=Nb(i),r.children.push(o)),r=o}}return e.children[0]}const Nb=t=>({item:t,children:[]}),Ed=new Set;function Dd(t){const n=t.currentTarget.parentNode,r=!n.classList.contains("show");for(const i of Ed)i.classList.remove("show"),document.body.classList.remove(Vn);return Ed.clear(),t.stopPropagation(),r?(Ed.add(n),n.classList.add("show"),document.body.classList.add(Vn),window.addEventListener("click",i=>{n.classList.contains("show")&&(n.classList.remove("show"),document.body.classList.remove(Vn),i.preventDefault())},{once:!0})):window.dispatchEvent(new MouseEvent("click")),r}const Md={visibilities:{}},ai=Av({name:"viewSettings",initialState:Md,reducers:{setVisibility:(t,e)=>{t.visibilities[e.payload.name]=e.payload.visibility},restoreDefaultVisibility:(t,e)=>{delete t.visibilities[e.payload]},restoreDefaultVisibilities:(t,e)=>Md,setViewSettings:(t,e)=>({...Md,...e.payload?e.payload:{}})}});class tN extends yt{constructor(){super(),this.app=void 0,this.nestedPaths=void 0,this.sateWatcher=rc(e=>e.viewSettings,(e,n)=>this.requestUpdate()),this.style.display="none"}connectedCallback(){super.connectedCallback(),this.dispatchEvent(kb("app",e=>{this.app=e})),this.app.addInitializationListener(()=>{this.updateToggles(),this.requestUpdate(),this.style.display=this.nestedPaths.children.length?"block":"none"}),this.app.storeHelper.subscribe(this.sateWatcher)}disconnectedCallback(){this.app.storeHelper.unsubscribe(this.sateWatcher)}createRenderRoot(){return this}toolButtonClicked(e){Dd(e)}handleCheckboxClick(e,n){const r=e.target.checked;this.app.storeHelper.dispatch(r!=n.isVisibleInSpec()?ai.actions.setVisibility({name:n.name,visibility:r}):ai.actions.restoreDefaultVisibility(n.name)),this.requestUpdate(),e.stopPropagation()}handleResetClick(){this.app.storeHelper.dispatch(ai.actions.restoreDefaultVisibilities())}updateToggles(){const e=this.app.genomeSpy.viewRoot;if(!e)return;const n=[];e.visit(i=>{if(i instanceof i1)return vs;n.push(i)});const r=n.filter(i=>L5(i.name)&&Lb(i)).map(i=>[...i.getAncestors()].reverse());this.nestedPaths=eN(r)}renderToggles(){const e=this.getVisibilities(),n=this.app.genomeSpy.viewRoot,r=E1(n);var i=(a,s=!0)=>a.length?E`<ul class="${s?null:"unchecked"}">${a.map(o)}</ul>`:z,o=a=>{const s=a.item,c=e[s.name]??s.isVisibleInSpec();return E`<li><label class="checkbox"><input type="checkbox" ?disabled="${!r.has(s.name)||!Lb(s)}" .checked="${$k(c)}" @change="${u=>this.handleCheckboxClick(u,s)}">${s.getTitleText()??s.name}</label> ${i(a.children,c)}</li>`};return i(this.nestedPaths.children)}render(){const e=!Object.keys(this.getVisibilities()).length;return E`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Toggle view visibilities" @click="${this.toolButtonClicked.bind(this)}">${K(B6).node[0]}</button><ul class="gs-dropdown-menu" @click="${n=>n.stopPropagation()}"><li class="menu-header">View visibility</li><li>${e?E`<span class="disabled-item">Restore defaults</span>`:E`<a @click="${()=>this.handleResetClick()}">Restore defaults</a>`}</li><li class="menu-divider"></li><li>${this.nestedPaths?this.renderToggles():z}</li></ul></div>`}getVisibilities(){return this.app.storeHelper.state.viewSettings.visibilities}}const Lb=t=>t.spec.configurableVisibility??!(t.parent&&t.parent instanceof Ot);customElements.define("genome-spy-view-visibility",tN);class nN extends yt{constructor(){super(),this.provenance=void 0}connectedCallback(){super.connectedCallback(),this.provenance.storeHelper.subscribe(()=>{this.requestUpdate()})}disconnectedCallback(){super.disconnectedCallback()}createRenderRoot(){return this}render(){const e=(r,i)=>{const o=this.provenance.getActionInfo(r);return o?E`<li><a @click="${()=>this.provenance.activateState(i)}" class="${i==this.provenance.getCurrentIndex()?"active":""}">${K(o.icon??H1).node[0]} ${o.provenanceTitle??o.title}</a></li>`:z},n=()=>E`<div class="dropdown provenance-dropdown"><button class="tool-btn" title="Provenance" ?disabled="${this.provenance.isEmpty()}" @click="${Dd}">${K(S6).node[0]}</button><ol class="gs-dropdown-menu provenance-menu">${this.provenance.getFullActionHistory().map(e)}</ol></div>`;return E`<div class="btn-group" @click="${r=>r.stopPropagation()}"><button class="tool-btn" title="Backtrack samples (B)" ?disabled="${!this.provenance.isUndoable()}" @click="${()=>this.provenance.undo()}">${K(l6).node[0]}</button> ${n()} <button class="tool-btn" title="Redo" ?disabled="${!this.provenance.isRedoable()}" @click="${()=>this.provenance.redo()}">${K(d6).node[0]}</button></div>`}}customElements.define("genome-spy-provenance-buttons",nN);/**
|
2171
2180
|
* @license
|
2172
2181
|
* Copyright 2021 Google LLC
|
2173
2182
|
* SPDX-License-Identifier: BSD-3-Clause
|
2174
|
-
*/class
|
2183
|
+
*/class rN{constructor(e){this.Y=e}disconnect(){this.Y=void 0}reconnect(e){this.Y=e}deref(){return this.Y}}class iN{constructor(){this.Z=void 0,this.q=void 0}get(){return this.Z}pause(){var e;(e=this.Z)!==null&&e!==void 0||(this.Z=new Promise(n=>this.q=n))}resume(){var e;(e=this.q)===null||e===void 0||e.call(this),this.Z=this.q=void 0}}/**
|
2175
2184
|
* @license
|
2176
2185
|
* Copyright 2017 Google LLC
|
2177
2186
|
* SPDX-License-Identifier: BSD-3-Clause
|
2178
|
-
*/const Lb=t=>!yI(t)&&typeof t.then=="function";class rN extends Cb{constructor(){super(...arguments),this._$Cwt=1073741823,this._$Cyt=[],this._$CK=new tN(this),this._$CX=new nN}render(...e){var n;return(n=e.find(r=>!Lb(r)))!==null&&n!==void 0?n:Ae}update(e,n){const r=this._$Cyt;let i=r.length;this._$Cyt=n;const o=this._$CK,a=this._$CX;this.isConnected||this.disconnected();for(let s=0;s<n.length&&!(s>this._$Cwt);s++){const c=n[s];if(!Lb(c))return this._$Cwt=s,c;s<i&&c===r[s]||(this._$Cwt=1073741823,i=0,Promise.resolve(c).then(async u=>{for(;a.get();)await a.get();const f=o.deref();if(f!==void 0){const l=f._$Cyt.indexOf(c);l>-1&&l<f._$Cwt&&(f._$Cwt=l,f.setValue(u))}}))}return Ae}disconnected(){this._$CK.disconnect(),this._$CX.pause()}reconnected(){this._$CK.reconnect(this),this._$CX.resume()}}const iN=or(rN);var oN={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function Bb(t){return t.replace(RegExp("^"+(t.match(/^(\t| )+/)||"")[0],"gm"),"")}function jo(t){return(t+"").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Md(t,e){var n,r,i,o,a,s=/((?:^|\n+)(?:\n---+|\* \*(?: \*)+)\n)|(?:^``` *(\w*)\n([\s\S]*?)\n```$)|((?:(?:^|\n+)(?:\t| {2,}).+)+\n*)|((?:(?:^|\n)([>*+-]|\d+\.)\s+.*)+)|(?:!\[([^\]]*?)\]\(([^)]+?)\))|(\[)|(\](?:\(([^)]+?)\))?)|(?:(?:^|\n+)([^\s].*)\n(-{3,}|={3,})(?:\n+|$))|(?:(?:^|\n+)(#{1,6})\s*(.+)(?:\n+|$))|(?:`([^`].*?)`)|( \n\n*|\n{2,}|__|\*\*|[_*]|~~)/gm,c=[],u="",f=e||{},l=0;function d(h){var m=oN[h[1]||""],g=c[c.length-1]==h;return m?m[1]?(g?c.pop():c.push(h),m[0|g]):m[0]:h}function p(){for(var h="";c.length;)h+=d(c[c.length-1]);return h}for(t=t.replace(/^\[(.+?)\]:\s*(.+)$/gm,function(h,m,g){return f[m.toLowerCase()]=g,""}).replace(/^\n+|\n+$/g,"");i=s.exec(t);)r=t.substring(l,i.index),l=s.lastIndex,n=i[0],r.match(/[^\\](\\\\)*\\$/)||((a=i[3]||i[4])?n='<pre class="code '+(i[4]?"poetry":i[2].toLowerCase())+'"><code'+(i[2]?' class="language-'+i[2].toLowerCase()+'"':"")+">"+Bb(jo(a).replace(/^\n+|\n+$/g,""))+"</code></pre>":(a=i[6])?(a.match(/\./)&&(i[5]=i[5].replace(/^\d+/gm,"")),o=Md(Bb(i[5].replace(/^\s*[>*+.-]/gm,""))),a==">"?a="blockquote":(a=a.match(/\./)?"ol":"ul",o=o.replace(/^(.*)(\n|$)/gm,"<li>$1</li>")),n="<"+a+">"+o+"</"+a+">"):i[8]?n='<img src="'+jo(i[8])+'" alt="'+jo(i[7])+'">':i[10]?(u=u.replace("<a>",'<a href="'+jo(i[11]||f[r.toLowerCase()])+'">'),n=p()+"</a>"):i[9]?n="<a>":i[12]||i[14]?n="<"+(a="h"+(i[14]?i[14].length:i[13]>"="?1:2))+">"+Md(i[12]||i[15],f)+"</"+a+">":i[16]?n="<code>"+jo(i[16])+"</code>":(i[17]||i[1])&&(n=d(i[17]||"--"))),u+=r,u+=n;return(u+t.substring(l)+p()).replace(/^\n+|\n+$/g,"")}function Ob(t,e){return!e||/^(data:|([A-Za-z]+:)?\/\/)/.test(t)||t.startsWith("/")?t:(e.endsWith("/")||(e+="/"),e+t)}function aN(t,e={}){const n=Md(t),r=new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${n}</div></body></html>`,"text/html");r.normalize(),Fb(r.body);for(const o of r.querySelectorAll("a[href]"))o.setAttribute("target","blank"),o.setAttribute("rel","noopener noreferrer"),o.setAttribute("href",Ob(o.getAttribute("href"),e.baseUrl));for(const o of r.querySelectorAll("img[src]"))o.setAttribute("src",Ob(o.getAttribute("src"),e.baseUrl));const i=r.body.removeChild(r.querySelector("body > div"));return i.className="snarkdown",i}function Fb(t){if(t.nodeType!==3){if(t.nodeType!==1||/^(script|iframe|object|embed|svg)$/i.test(t.tagName))return t.remove();for(let e=t.attributes.length;e--;){const n=t.attributes[e].name;/^(class|id|name|href|src|alt|align|valign|(on[a-z]+))$/i.test(n)||t.attributes.removeNamedItem(n)}for(let e=t.childNodes.length;e--;)Fb(t.childNodes[e])}}function sN(t){t.stopPropagation(),t.preventDefault();const n=t.target.parentElement,r=n.parentElement,o=r.parentElement.querySelector(".panes"),a=[...r.children].findIndex(s=>s==n);for(const s of r.children)s.classList.remove("active-tab");for(const s of o.children)s.classList.remove("active-tab");r.children.item(a).classList.add("active-tab"),o.children.item(a).classList.add("active-tab")}var ic={},cN={get exports(){return ic},set exports(t){ic=t}};(function(t){var e=function(){var n=String.fromCharCode,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",o={};function a(c,u){if(!o[c]){o[c]={};for(var f=0;f<c.length;f++)o[c][c.charAt(f)]=f}return o[c][u]}var s={compressToBase64:function(c){if(c==null)return"";var u=s._compress(c,6,function(f){return r.charAt(f)});switch(u.length%4){default:case 0:return u;case 1:return u+"===";case 2:return u+"==";case 3:return u+"="}},decompressFromBase64:function(c){return c==null?"":c==""?null:s._decompress(c.length,32,function(u){return a(r,c.charAt(u))})},compressToUTF16:function(c){return c==null?"":s._compress(c,15,function(u){return n(u+32)})+" "},decompressFromUTF16:function(c){return c==null?"":c==""?null:s._decompress(c.length,16384,function(u){return c.charCodeAt(u)-32})},compressToUint8Array:function(c){for(var u=s.compress(c),f=new Uint8Array(u.length*2),l=0,d=u.length;l<d;l++){var p=u.charCodeAt(l);f[l*2]=p>>>8,f[l*2+1]=p%256}return f},decompressFromUint8Array:function(c){if(c==null)return s.decompress(c);for(var u=new Array(c.length/2),f=0,l=u.length;f<l;f++)u[f]=c[f*2]*256+c[f*2+1];var d=[];return u.forEach(function(p){d.push(n(p))}),s.decompress(d.join(""))},compressToEncodedURIComponent:function(c){return c==null?"":s._compress(c,6,function(u){return i.charAt(u)})},decompressFromEncodedURIComponent:function(c){return c==null?"":c==""?null:(c=c.replace(/ /g,"+"),s._decompress(c.length,32,function(u){return a(i,c.charAt(u))}))},compress:function(c){return s._compress(c,16,function(u){return n(u)})},_compress:function(c,u,f){if(c==null)return"";var l,d,p={},h={},m="",g="",y="",b=2,w=3,C=2,x=[],v=0,A=0,D;for(D=0;D<c.length;D+=1)if(m=c.charAt(D),Object.prototype.hasOwnProperty.call(p,m)||(p[m]=w++,h[m]=!0),g=y+m,Object.prototype.hasOwnProperty.call(p,g))y=g;else{if(Object.prototype.hasOwnProperty.call(h,y)){if(y.charCodeAt(0)<256){for(l=0;l<C;l++)v=v<<1,A==u-1?(A=0,x.push(f(v)),v=0):A++;for(d=y.charCodeAt(0),l=0;l<8;l++)v=v<<1|d&1,A==u-1?(A=0,x.push(f(v)),v=0):A++,d=d>>1}else{for(d=1,l=0;l<C;l++)v=v<<1|d,A==u-1?(A=0,x.push(f(v)),v=0):A++,d=0;for(d=y.charCodeAt(0),l=0;l<16;l++)v=v<<1|d&1,A==u-1?(A=0,x.push(f(v)),v=0):A++,d=d>>1}b--,b==0&&(b=Math.pow(2,C),C++),delete h[y]}else for(d=p[y],l=0;l<C;l++)v=v<<1|d&1,A==u-1?(A=0,x.push(f(v)),v=0):A++,d=d>>1;b--,b==0&&(b=Math.pow(2,C),C++),p[g]=w++,y=String(m)}if(y!==""){if(Object.prototype.hasOwnProperty.call(h,y)){if(y.charCodeAt(0)<256){for(l=0;l<C;l++)v=v<<1,A==u-1?(A=0,x.push(f(v)),v=0):A++;for(d=y.charCodeAt(0),l=0;l<8;l++)v=v<<1|d&1,A==u-1?(A=0,x.push(f(v)),v=0):A++,d=d>>1}else{for(d=1,l=0;l<C;l++)v=v<<1|d,A==u-1?(A=0,x.push(f(v)),v=0):A++,d=0;for(d=y.charCodeAt(0),l=0;l<16;l++)v=v<<1|d&1,A==u-1?(A=0,x.push(f(v)),v=0):A++,d=d>>1}b--,b==0&&(b=Math.pow(2,C),C++),delete h[y]}else for(d=p[y],l=0;l<C;l++)v=v<<1|d&1,A==u-1?(A=0,x.push(f(v)),v=0):A++,d=d>>1;b--,b==0&&(b=Math.pow(2,C),C++)}for(d=2,l=0;l<C;l++)v=v<<1|d&1,A==u-1?(A=0,x.push(f(v)),v=0):A++,d=d>>1;for(;;)if(v=v<<1,A==u-1){x.push(f(v));break}else A++;return x.join("")},decompress:function(c){return c==null?"":c==""?null:s._decompress(c.length,32768,function(u){return c.charCodeAt(u)})},_decompress:function(c,u,f){var l=[],d=4,p=4,h=3,m="",g=[],y,b,w,C,x,v,A,D={val:f(0),position:u,index:1};for(y=0;y<3;y+=1)l[y]=y;for(w=0,x=Math.pow(2,2),v=1;v!=x;)C=D.val&D.position,D.position>>=1,D.position==0&&(D.position=u,D.val=f(D.index++)),w|=(C>0?1:0)*v,v<<=1;switch(w){case 0:for(w=0,x=Math.pow(2,8),v=1;v!=x;)C=D.val&D.position,D.position>>=1,D.position==0&&(D.position=u,D.val=f(D.index++)),w|=(C>0?1:0)*v,v<<=1;A=n(w);break;case 1:for(w=0,x=Math.pow(2,16),v=1;v!=x;)C=D.val&D.position,D.position>>=1,D.position==0&&(D.position=u,D.val=f(D.index++)),w|=(C>0?1:0)*v,v<<=1;A=n(w);break;case 2:return""}for(l[3]=A,b=A,g.push(A);;){if(D.index>c)return"";for(w=0,x=Math.pow(2,h),v=1;v!=x;)C=D.val&D.position,D.position>>=1,D.position==0&&(D.position=u,D.val=f(D.index++)),w|=(C>0?1:0)*v,v<<=1;switch(A=w){case 0:for(w=0,x=Math.pow(2,8),v=1;v!=x;)C=D.val&D.position,D.position>>=1,D.position==0&&(D.position=u,D.val=f(D.index++)),w|=(C>0?1:0)*v,v<<=1;l[p++]=n(w),A=p-1,d--;break;case 1:for(w=0,x=Math.pow(2,16),v=1;v!=x;)C=D.val&D.position,D.position>>=1,D.position==0&&(D.position=u,D.val=f(D.index++)),w|=(C>0?1:0)*v,v<<=1;l[p++]=n(w),A=p-1,d--;break;case 2:return g.join("")}if(d==0&&(d=Math.pow(2,h),h++),l[A])m=l[A];else if(A===p)m=b+b.charAt(0);else return null;g.push(m),l[p++]=b+m.charAt(0),d--,b=m,d==0&&(d=Math.pow(2,h),h++)}}};return s}();t!=null&&(t.exports=e)})(cN);function uN(){const t=typeof process<"u"?require("util").TextEncoder:TextEncoder;return new t}let Pb;function lN(){let t,e=[];for(let n=0;n<256;n++){t=n;for(let r=0;r<8;r++)t=t&1?3988292384^t>>>1:t>>>1;e[n]=t}return e}function fN(t){Pb??(Pb=lN());let e=-1;const n=uN().encode(t);for(let r=0;r<n.length;r++)e=e>>>8^Pb[(e^n[r])&255];return(e^-1)>>>0}function zb(t){return("00000000"+fN(t).toString(16)).slice(-8)}function Rb(t){const e=ic.compressToEncodedURIComponent(JSON.stringify(t));return"#"+e+zb(e)}function dN(t){if(!t||t.length<10)throw new Error("The state string in the URL is too short.");const e=t.slice(1,-8),n=t.slice(-8);if(zb(e)!==n)throw new Error("The state string in the URL is corrupted.");return JSON.parse(ic.decompressFromEncodedURIComponent(e))}let vr;function hN(t){for(const e of t.genomeSpy.getNamedScaleResolutions().values())e.isZoomable()&&e.resetZoom();t.storeHelper.dispatch([...t.provenance.isUndoable()?[Ht.ActionCreators.jumpToPast(0)]:[],si.actions.restoreDefaultVisibilities()])}async function Td(t,e){try{t.actions&&e.provenance.dispatchBookmark(t.actions),e.storeHelper.dispatch(si.actions.setViewSettings(t.viewSettings));const n=[];for(const[r,i]of Object.entries(t.scaleDomains??{})){const o=e.genomeSpy.getNamedScaleResolutions().get(r);o?n.push(o.zoomTo(i)):console.warn(`Cannot restore scale domain. Unknown name: ${r}`)}await Promise.all(n)}catch(n){console.error(n),He(E`<p>Cannot restore the state:</p><p>${n}</p>`),e.provenance.activateState(0)}}async function Uo(t,e,n={}){await Td(t,e),(vr||t.notes||n.mode=="shared"&&(t.name||t.notes))&&await pN(t,e,n)}async function pN(t,e,n={}){vr??(vr=fr("tour",e.appContainer)),await mN(t,e,n)}async function mN(t,e,n){const r=n.database,i=r?await r.getNames():[],o=i.indexOf(t.name),a=r?` ${o+1} of ${i.length}`:"",s=`${n.mode=="shared"?"Shared bookmark":"Bookmark"}${a}: ${t.name??"Unnamed"}`,c=t.notes?aN(t.notes,{baseUrl:e.genomeSpy.spec.baseUrl}):E`<span class="no-notes">No notes provided</span>`,u=async()=>{if(vr==null||vr.close(),vr=void 0,n.mode=="tour"){const m=n.afterTourBookmark;if(typeof m=="string"){const g=await n.database.get(m);if(!g)throw new Error(`No such bookmark: ${m}`);Td(g,e)}else m===null||hN(e)}},f=async m=>{const g=await r.get(i[m]);Uo(g,e,n),e.appContainer.querySelector("canvas").focus()},l=async()=>{if(await Id(e.localBookmarkDatabase,t,"add"))try{await e.localBookmarkDatabase.put(t)}catch(m){console.warn(m),He(`Cannot import bookmark: ${m}`)}},d=E`<button class="btn" @click="${u}">${n.mode=="tour"?"End tour":"Close"}</button> ${n.mode=="shared"&&e.localBookmarkDatabase?E`<button class="btn" @click="${l}">${K(j1).node[0]} Import bookmark</button>`:z} ${r?E`<button class="btn" @click="${()=>f(o-1)}" ?disabled="${o<=0}">${K(h6).node[0]} Previous</button> <button class="btn" @click="${()=>f(o+1)}" ?disabled="${o>=i.length-1}">Next ${K(D6).node[0]}</button>`:z}`,h=E`<button title="Collapse" class="btn collapse" @click="${m=>m.target.closest(".gs-modal").classList.toggle("collapsed")}">${K(m6).node[0]}</button><div class="modal-title">${s}</div><div class="modal-body markdown" style="max-width:600px">${c}</div><div class="modal-buttons">${d}</div>`;Be(h,vr.content)}function jb(t,e){const n=JSON.stringify(t,void 0,2),r=window.location,i=r.origin+r.pathname+r.search+(e?"#bookmark:"+t.name.replaceAll(" ","-"):Rb(t));He(E`<div class="gs-tabs" style="width:600px"><ul class="tabs" @click="${sN}"><li class="active-tab"><button>URL</button></li><li><button>JSON</button></li></ul><div class="panes"><div class="gs-form-group active-tab"><label for="bookmark-url">Here's a link for you:</label><div class="copy-url"><input id="bookmark-url" type="text" .value="${i}"> <button @click="${a=>navigator.clipboard.writeText(i).then(()=>a.target.dispatchEvent(xI())).catch(()=>He("Failed to copy!"))}">Copy</button></div><small>The bookmark URL contains all the bookmarked data, including the possible notes, which will be shown when the link is opened.</small></div><div class="gs-form-group"><textarea id="bookmark-json" style="height:250px">
|
2179
|
-
${n}</textarea> <small>The JSON-formatted bookmark is currently available for development purposes.</small></div></div></div>`,{title:"Share a bookmark",okLabel:"Close"})}function Id(t,e,n){const r={add:"Add bookmark",edit:"Edit bookmark",share:"Share the current view state as a bookmark"}[n],i=(c,u)=>E`<div class="modal-title">${r}</div><div class="modal-body" style="width:500px">${n=="edit"?E`<div class="gs-alert warning">${K(y6).node[0]} The current visualization state will be updated to the bookmark you are editing.</div>`:z} ${n=="share"?E`<div class="gs-alert info">${K(H1).node[0]} <span>You can add an optional title and notes, which will be shown to the recipient when the bookmark link is opened.</span></div>`:z}<div class="gs-form-group"><label for="bookmark-title">Title</label> <input id="bookmark-title" type="text" ?required="${n=="add"||n=="edit"}" .value="${e.name??""}" .placeholder="${n=="share"?"Add an optional title":""}" @change="${f=>{e.name=Ub(f.target.value)}}"></div><div class="gs-form-group"><label for="bookmark-notes">Notes</label> <textarea id="bookmark-notes" rows="4" .value="${e.notes??""}" .placeholder="${n=="share"?"... and notes":""}" @change="${f=>{e.notes=Ub(f.target.value)}}"></textarea> <small>Notes will be shown when the bookmark is loaded. You can use <a href="https://www.markdownguide.org/basic-syntax/">markdown</a> for formatting.</small></div></div><div class="modal-buttons"><button class="btn btn-cancel" @click="${c}">Cancel</button> <button class="btn btn-primary" @click="${u}">${n=="share"?E`${K(of).node[0]} Create a link`:"Save"}</button></div>`,o=e.name,a=()=>!!e.name,s=fr();return new Promise(c=>{const u=()=>{s.close(),c(!1)},f=async()=>{if(!a()){He("Name is missing!",{title:"Error"});return}let d=!0;t&&!(n&&e.name==o)&&await t.get(e.name)&&(d=await He(E`A bookmark with the name <em>${e.name}</em> already exists. It will be overwritten.`,{title:"Bookmark already exists",cancelButton:!0})),d&&(s.close(),c(!0))},l=()=>{s.close(),c(!0)};Be(i(u,n=="share"?l:f),s.content),s.content.querySelector("#bookmark-title").focus()})}function Ub(t){if(t!==void 0&&(t=t.trim(),t.length))return t}class gN extends yt{constructor(){super(),this.app=void 0}connectedCallback(){super.connectedCallback(),this.dispatchEvent(Ib("app",e=>{this.app=e}))}createRenderRoot(){return this}_createBookmarkWithCurrentState(){const e={name:void 0,timestamp:Date.now(),actions:this.app.provenance.getBookmarkableActionHistory(),scaleDomains:{}},n=this.app.storeHelper.state.viewSettings;Object.keys(n.visibilities).length&&(e.viewSettings=n);for(const[r,i]of this.app.genomeSpy.getNamedScaleResolutions().entries())i.isZoomable()&&(e.scaleDomains[r]=i.getComplexDomain());return e}async _shareCurrentState(){const e=this._createBookmarkWithCurrentState();await Id(void 0,e,"share")&&jb(e,!1)}async _addBookmark(e,n){const r=n?await e.get(n):void 0,i=!!r,o=this._createBookmarkWithCurrentState();if(o.name??(o.name=r==null?void 0:r.name),o.notes??(o.notes=r==null?void 0:r.notes),await Id(e,o,i?"edit":"add"))try{await e.put(o,r==null?void 0:r.name),this.requestUpdate()}catch(a){He(`${a}`,{title:"Cannot save the bookmark!"})}}async _loadBookmark(e,n){const r=await e.get(n);r&&Uo(r,this.app,{database:e})}_createContextMenu(e,n,r){r.stopPropagation();const i=r.target.closest("li"),o=()=>He(E`The bookmark <em>${n}</em> will be deleted.`,{title:"Are you sure?",cancelButton:!0}).then(async c=>{c&&(await e.delete(n),this.requestUpdate())}),a=[],s=e==this.app.globalBookmarkDatabase;s||(a.push({label:"Edit and replace...",icon:I6,callback:()=>this._addBookmark(e,n)}),a.push({label:"Delete",icon:Q1,callback:o})),a.push({label:"Share...",icon:of,callback:async()=>jb(await e.get(n),s)}),cb({items:a},i,"right-start")}async _makeBookmarkMenuItems(e,n){const i=(await e.getNames()).map(o=>({label:o,callback:()=>this._loadBookmark(e,o),ellipsisCallback:a=>this._createContextMenu(e,o,a)}));return i.length?[{type:"divider"},{label:n,type:"header"},...i].map(o=>ab(o)):z}_getBookmarks(){const e=(n,r)=>n?iN(this._makeBookmarkMenuItems(n,r),E`Loading...`):z;return[e(this.app.globalBookmarkDatabase,"Bookmarks on the server"),e(this.app.localBookmarkDatabase,"Bookmarks in the web browser")]}render(){const e=this.app.localBookmarkDatabase,n=e?E`<li><a @click="${()=>this._addBookmark(e)}">Add bookmark...</a></li>`:z,r=e||this.app.globalBookmarkDatabase?E`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Bookmarks" @click="${i=>{Ed(i)&&this.requestUpdate()}}">${K(j1).node[0]}</button><ul class="gs-dropdown-menu">${n} ${this._getBookmarks()}</ul></div>`:z;return E`<div class="btn-group">${r} <button class="tool-btn" title="Share" @click="${()=>this._shareCurrentState()}">${K(of).node[0]}</button></div>`}}customElements.define("genome-spy-bookmark-button",gN);class yN extends yt{constructor(){super(),this.app=void 0,this.appInitialized=!1}static get properties(){return{app:{type:Object},appInitialized:{type:Boolean}}}createRenderRoot(){return this}_getToolButtons(){const e=this.app.provenance,n=[];e.isEnabled()&&n.push(E`<genome-spy-provenance-buttons .provenance="${e}"></genome-spy-provenance-buttons>`),n.push(E`<genome-spy-view-visibility></genome-spy-view-visibility>`),n.push(E`<genome-spy-bookmark-button></genome-spy-bookmark-button>`);const r=this.app.config.description?Ze(this.app.config.description):[];return r.length>1&&n.push(E`<button class="tool-btn" title="Show a description of the visualization" @click="${()=>He(E`${r.slice(1).map(i=>E`<p>${i}</p>`)}`,{title:r[0]})}">${K(H1).node[0]}</button>`),r.length>0&&n.push(E`<span class="vis-title">${r[0]}</span>`),n.push(E`<span class="spacer"></span> <a class="version" href="https://github.com/genome-spy/genome-spy/releases/tag/v${Tb.version}">v${Tb.version}</a> ${this.app.appContainer.requestFullscreen?E`<button class="tool-btn" title="Fullscreen" @click="${()=>this.app.toggleFullScreen()}">${K(T6).node[0]}</button>`:z} <button class="tool-btn" title="Help" @click="${()=>window.open("https://genomespy.app/docs/sample-collections/analyzing/","_blank")}">${K(A6).node[0]}</button>`),n}render(){const e=this.app.genomeSpy;return E`<nav class="gs-toolbar"><a href="https://genomespy.app" target="_blank" class="logo"><img title="GenomeSpy" alt="GenomeSpy" src="${Mb}"> </a>${this.appInitialized&&Db(e.viewRoot)?E`<genome-spy-search-field .app="${this.app}"></genome-spy-search-field>`:z} ${this._getToolButtons()}</nav>`}}customElements.define("genome-spy-toolbar",yN);class vN{constructor(e){this.storeHelper=e,this._reducers={},this.actionInfoSources=[],this._reducer=void 0,e.addReducer("provenance",(n,r)=>this._reducer?this._reducer(n,r):n??{})}addReducer(e,n){this._reducers[e]=n;const r=o=>Object.keys(this._reducers).some(a=>o.type.startsWith(a)),i=(o,a)=>r(a)?a:o??null;this._reducer=tk(Kf({...this._reducers,lastAction:i}),{ignoreInitialState:!0,filter:r}),this.storeHelper.dispatch({type:"@@redux/REPLACE"+Math.random().toString(36).substring(7).split("").join(".")})}get _storeState(){return this.storeHelper.store.getState()}get _provenanceState(){return this._storeState.provenance}isEnabled(){return!!this.getPresentState()}getPresentState(){return this._provenanceState.present}addActionInfoSource(e){this.actionInfoSources.push(e)}getActionInfo(e){for(const n of this.actionInfoSources){const r=n(e);if(r)return r}}dispatchBookmark(e){this.storeHelper.dispatch([...this.isUndoable()?[Ht.ActionCreators.jumpToPast(0)]:[],...e])}isRedoable(){return this.isEnabled()&&this._provenanceState.future.length>0}redo(){this.storeHelper.dispatch(Ht.ActionCreators.redo())}isUndoable(){return this.isEnabled()&&this._provenanceState.past.length>0}undo(){this.storeHelper.dispatch(Ht.ActionCreators.undo())}isAtInitialState(){return!this.isUndoable()}isEmpty(){const e=this._provenanceState;return!this.isEnabled()||e.past.length+e.future.length<=0}activateState(e){const n=this.getCurrentIndex();e<n?this.storeHelper.dispatch(Ht.ActionCreators.jumpToPast(e)):e>n&&this.storeHelper.dispatch(Ht.ActionCreators.jumpToFuture(e-n-1))}getCurrentIndex(){var e;return(e=this._provenanceState.past)==null?void 0:e.length}getActionHistory(){const e=this._provenanceState;return e.present&&[...e.past,e.present].map(n=>n.lastAction)}getFullActionHistory(){const e=this._provenanceState;return[...e.past,e.present,...e.future].map(n=>n.lastAction)}getBookmarkableActionHistory(){var e;return(e=this.getActionHistory())==null?void 0:e.slice(1)}}function*bN(t,e=n=>+n){const n=t.length,r=new Ao,i=new Array(n).fill(0);for(const[a,s]of t.entries())s.length&&r.push(a,e(s[0]));let o=0;for(;(o=r.pop())!==void 0;){const a=t[o];let s=i[o];if(yield a[s++],s<a.length){const u=e(a[s]);r.push(o,u),i[o]=s}}}const AN="sampleCount";class xN extends ue{constructor(n,r){super();$(this,Zo);this.view=r;const i=r.context.animator;if(this.provenance=wN(r),!this.provenance)throw new Error("No SampleView was found!");this.provenance.storeHelper.subscribe(o=>{j(this,Zo,jd)&&i.requestTransition(()=>{this.reset(),this._mergeAndPropagate(nd(o)),this.complete()})}),this.contextObject=void 0}initialize(){this.contextObject=Object.create(super.getGlobalObject());const n=this.view.getEncoding().x;if(Xn(n))this.xAccessor=q(n.field);else throw new Error("Crash!")}handle(n){}getGlobalObject(){return this.contextObject}_getCollector(){if(this.parent instanceof Xr)return this.parent;throw new Error("MergeFacetsTransform must be a direct child of a Collector")}complete(){j(this,Zo,jd)&&(this._mergeAndPropagate(this.provenance.getPresentState()[ii]),super.complete())}_mergeAndPropagate(n){const r=[...id(n.rootGroup)].filter(i=>Bv(Re(i)));for(const[i,o]of r.entries()){const a=Re(o);if(Bv(a)){this.contextObject[AN]=a.samples.length,this.beginBatch({type:"facet",facetId:[i]});const s=a.samples,c=this._getCollector(),u=bN(s.map(f=>c.facetBatches.get([f])??[]),this.xAccessor);for(const f of u)this._propagate(f)}}this._updateScales()}setParent(n){super.setParent(n)}_updateScales(){const n=new Set;this.view.visit(r=>{if(r instanceof pe&&r.mark.encoding.y){const i=r.getScaleResolution("y");i&&n.add(i)}});for(const r of n)r.reconfigure()}}Zo=new WeakSet,jd=function(){return this.view.isVisible()};function wN(t){for(const e of t.getAncestors())if(e instanceof gd)return e.provenance}var CN="BATCHING_REDUCER.BATCH";function SN(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:CN;return{type:e,meta:{batch:!0},payload:t}}function EN(t){return function e(n,r){return r&&r.meta&&r.meta.batch?r.payload.reduce(e,n):t(n,r)}}class DN{constructor(e){this._reducers=e??{},this.store=l9({reducer:{}}),this._listeners=new Set,this.store.subscribe(()=>{const n=this.store.getState();for(const r of this._listeners)r(n)})}get state(){return this.store.getState()}addReducer(e,n){this._reducers[e]=n,this.store.replaceReducer(EN(Kf(this._reducers)))}subscribe(e){this._listeners.add(e)}unsubscribe(e){this._listeners.delete(e)}dispatch(e){Array.isArray(e)?this.store.dispatch(SN(e)):this.store.dispatch(e)}getDispatcher(){return e=>this.dispatch(e)}}class MN extends xb{constructor(e){super(),this.bookmarks=e,this.names=e.map(n=>n.name)}async getNames(){return this.names}async get(e){return this.bookmarks.find(n=>n.name==e)}}m1.mergeFacets=xN;class Hb{constructor(e,n,r={}){const i=this;this.config=n,this.storeHelper=new DN,this.storeHelper.addReducer("viewSettings",si.reducer),this.provenance=new vN(this.storeHelper),this._initializationListeners=[],this.toolbarRef=Sb(),this.appContainer=e,this._configureContainer(),this.localBookmarkDatabase=typeof n.specId=="string"?new Gk(n.specId):void 0,this.globalBookmarkDatabase=void 0,Be(E`<div class="genome-spy-app"><genome-spy-toolbar ${Eb(i.toolbarRef)} .app="${i}"></genome-spy-toolbar><div class="genome-spy-container"></div></div>`,i.appContainer),i.appContainer.querySelector(".genome-spy-app").addEventListener("query-dependency",s=>{s.detail.name=="app"&&(s.detail.setter(i),s.stopPropagation())});const o=s=>this.appContainer.getElementsByClassName(s)[0];this.genomeSpy=new N1(o("genome-spy-container"),this.config,r),this.genomeSpy.viewFactory.addViewType(kk,(s,c,u,f)=>new gd(s,c,u,f,this.provenance));const a=this.genomeSpy.viewVisibilityPredicate;this.genomeSpy.viewVisibilityPredicate=s=>{var c;return((c=this.storeHelper.state.viewSettings)==null?void 0:c.visibilities[s.name])??a(s)}}addInitializationListener(e){this._initializationListeners?this._initializationListeners.push(e):e()}toggleFullScreen(){document.fullscreenElement?document.exitFullscreen&&document.exitFullscreen():this.appContainer.requestFullscreen()}isFullPage(){return this.appContainer==document.body}async launch(){var a;const e=(a=this.config.bookmarks)!=null&&a.remote?Li({baseURL:this.config.baseUrl}).load(this.config.bookmarks.remote.url).then(s=>Promise.resolve(JSON.parse(s))):Promise.resolve([]);if(!await this.genomeSpy.launch())return;this.appContainer.querySelector("canvas").setAttribute("tabindex","-1"),this.storeHelper.subscribe(nc(s=>{var c;return(c=s.viewSettings)==null?void 0:c.visibilities},(s,c)=>{var f,l;this.genomeSpy.viewRoot._invalidateCacheByPrefix("size","progeny"),(l=(f=this.getSampleView())==null?void 0:f.summaryViews)==null||l._invalidateCacheByPrefix("size","self");const u=this.genomeSpy.viewRoot.context;u.requestLayoutReflow(),u.animator.requestRender()},this.storeHelper.store.getState()));try{const s=await e;s.length&&(this.globalBookmarkDatabase=new MN(s))}catch(s){throw new Error(`Cannot load remote bookmarks: ${s}`)}try{await this._restoreStateFromUrlOrBookmark()}catch(s){He(s.toString())}this.storeHelper.subscribe(()=>{this._updateStateToUrl()}),window.addEventListener("hashchange",()=>this._restoreStateFromUrl().catch(s=>He(s.toString())),!1);const r=ws(()=>this._updateStateToUrl(),500,!1);for(const[,s]of this.genomeSpy.getNamedScaleResolutions())s.isZoomable()&&s.addEventListener("domain",r);const i=this.toolbarRef.value;i.appInitialized=!0;const o=Ze(this.genomeSpy.spec.description??[]);this.isFullPage()&&o.length>0&&(document.title="GenomeSpy - "+o);for(const s of this._initializationListeners)s();this._initializationListeners=void 0}async _restoreStateFromUrlOrBookmark(){var i;const e=(i=this.config.bookmarks)==null?void 0:i.remote,n=this.globalBookmarkDatabase;if(!await this._restoreStateFromUrl()&&e&&n){const o=e.initialBookmark??(e.tour&&(await n.getNames())[0]);if(o){const a=await n.get(o);if(!a)throw new Error(`No such bookmark: ${o}`);e.tour?await Uo(a,this,{mode:"tour",database:n,afterTourBookmark:e.afterTourBookmark}):await Td(a,this)}}}_updateStateToUrl(){const e={actions:[],scaleDomains:{}},n=this.provenance.getBookmarkableActionHistory();n!=null&&n.length&&(e.actions=n);for(const[o,a]of this.genomeSpy.getNamedScaleResolutions().entries())a.isZoomed()||(e.scaleDomains[o]=a.getComplexDomain());const r=this.storeHelper.state.viewSettings;Object.keys(r.visibilities).length&&(e.viewSettings=r);const i=e.actions.length||Object.keys(e.scaleDomains).length||e.viewSettings?Rb(e):"";window.history.replaceState(void 0,document.title,window.location.pathname+window.location.search+i)}async _restoreStateFromUrl(){var r,i;const e=window.location.hash,n=(r=e.match(/^#bookmark:(.+)$/))==null?void 0:r[1];if(n){const o=(i=this.config.bookmarks)==null?void 0:i.remote,a=this.globalBookmarkDatabase;if(o&&a){const s=(await a.getNames()).find(c=>c.replaceAll(" ","-")==n);if(s){const c=await a.get(s);if(!c)throw new Error(`No such bookmark: ${s}`);return await Uo(c,this,{mode:"tour",database:a}),!0}else throw new Error(`No such bookmark: ${n}`)}}if(e&&e.length>0)try{const o=dN(e);return Uo(o,this,{mode:"shared"}),!0}catch(o){console.error(o),He(E`<p>Cannot restore the state:</p><p>${o}</p>`)}return!1}_configureContainer(){this.isFullPage()?(this.appContainer.style.margin="0",this.appContainer.style.padding="0",this.appContainer.style.overflow="hidden",TN(e6)):this.appContainer.style.position="relative"}getSampleView(){var n;if(!((n=this.genomeSpy)!=null&&n.viewRoot))return;let e;return this.genomeSpy.viewRoot.visit(r=>{if(r instanceof gd)return e=r,tr}),e}}function TN(t){const e=document.querySelector("head"),n=document.createElement("link");n.setAttribute("rel","shortcut icon"),n.setAttribute("href",t),e.appendChild(n)}async function IN(t,e,n={}){let r;if(ne(t)){if(r=document.querySelector(t),!r)throw new Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)r=t;else throw new Error(`Invalid element: ${t}`);let i;try{const o=ze(e)?e:await Gb(e);o.baseUrl??(o.baseUrl=""),o.width??(o.width="container"),o.padding??(o.padding=10);const a=new Hb(r,o,n);i=a.genomeSpy,kN(i,n),await a.launch()}catch(o){r.innerText=o.toString(),console.error(o)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(o,a){const s=i._eventListeners;let c=s.get(o);c||(c=new Set,s.set(o,c)),c.add(a)},removeEventListener(o,a){var c;(c=i._eventListeners.get(o))==null||c.delete(a)},getScaleResolutionByName(o){return i.getNamedScaleResolutions().get(o)}}}function kN(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function Gb(t){let e;try{e=JSON.parse(await Li().load(t))}catch(n){throw new Error(`Could not load or parse configuration: ${t}, reason: ${n.message}`)}if(!e.baseUrl){const n=t.match(/^[^?#]*\//);e.baseUrl=n&&n[0]||"./"}return e}U.GenomeSpy=N1,U.GenomeSpyApp=Hb,U.embed=IN,U.html=E,U.icon=Mb,U.loadSpec=Gb,Object.defineProperty(U,Symbol.toStringTag,{value:"Module"})});
|
2187
|
+
*/const Bb=t=>!bI(t)&&typeof t.then=="function";class oN extends Sb{constructor(){super(...arguments),this._$Cwt=1073741823,this._$Cyt=[],this._$CK=new rN(this),this._$CX=new iN}render(...e){var n;return(n=e.find(r=>!Bb(r)))!==null&&n!==void 0?n:Ae}update(e,n){const r=this._$Cyt;let i=r.length;this._$Cyt=n;const o=this._$CK,a=this._$CX;this.isConnected||this.disconnected();for(let s=0;s<n.length&&!(s>this._$Cwt);s++){const c=n[s];if(!Bb(c))return this._$Cwt=s,c;s<i&&c===r[s]||(this._$Cwt=1073741823,i=0,Promise.resolve(c).then(async u=>{for(;a.get();)await a.get();const f=o.deref();if(f!==void 0){const l=f._$Cyt.indexOf(c);l>-1&&l<f._$Cwt&&(f._$Cwt=l,f.setValue(u))}}))}return Ae}disconnected(){this._$CK.disconnect(),this._$CX.pause()}reconnected(){this._$CK.reconnect(this),this._$CX.resume()}}const aN=or(oN);var sN={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function Ob(t){return t.replace(RegExp("^"+(t.match(/^(\t| )+/)||"")[0],"gm"),"")}function jo(t){return(t+"").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Td(t,e){var n,r,i,o,a,s=/((?:^|\n+)(?:\n---+|\* \*(?: \*)+)\n)|(?:^``` *(\w*)\n([\s\S]*?)\n```$)|((?:(?:^|\n+)(?:\t| {2,}).+)+\n*)|((?:(?:^|\n)([>*+-]|\d+\.)\s+.*)+)|(?:!\[([^\]]*?)\]\(([^)]+?)\))|(\[)|(\](?:\(([^)]+?)\))?)|(?:(?:^|\n+)([^\s].*)\n(-{3,}|={3,})(?:\n+|$))|(?:(?:^|\n+)(#{1,6})\s*(.+)(?:\n+|$))|(?:`([^`].*?)`)|( \n\n*|\n{2,}|__|\*\*|[_*]|~~)/gm,c=[],u="",f=e||{},l=0;function d(h){var m=sN[h[1]||""],g=c[c.length-1]==h;return m?m[1]?(g?c.pop():c.push(h),m[0|g]):m[0]:h}function p(){for(var h="";c.length;)h+=d(c[c.length-1]);return h}for(t=t.replace(/^\[(.+?)\]:\s*(.+)$/gm,function(h,m,g){return f[m.toLowerCase()]=g,""}).replace(/^\n+|\n+$/g,"");i=s.exec(t);)r=t.substring(l,i.index),l=s.lastIndex,n=i[0],r.match(/[^\\](\\\\)*\\$/)||((a=i[3]||i[4])?n='<pre class="code '+(i[4]?"poetry":i[2].toLowerCase())+'"><code'+(i[2]?' class="language-'+i[2].toLowerCase()+'"':"")+">"+Ob(jo(a).replace(/^\n+|\n+$/g,""))+"</code></pre>":(a=i[6])?(a.match(/\./)&&(i[5]=i[5].replace(/^\d+/gm,"")),o=Td(Ob(i[5].replace(/^\s*[>*+.-]/gm,""))),a==">"?a="blockquote":(a=a.match(/\./)?"ol":"ul",o=o.replace(/^(.*)(\n|$)/gm,"<li>$1</li>")),n="<"+a+">"+o+"</"+a+">"):i[8]?n='<img src="'+jo(i[8])+'" alt="'+jo(i[7])+'">':i[10]?(u=u.replace("<a>",'<a href="'+jo(i[11]||f[r.toLowerCase()])+'">'),n=p()+"</a>"):i[9]?n="<a>":i[12]||i[14]?n="<"+(a="h"+(i[14]?i[14].length:i[13]>"="?1:2))+">"+Td(i[12]||i[15],f)+"</"+a+">":i[16]?n="<code>"+jo(i[16])+"</code>":(i[17]||i[1])&&(n=d(i[17]||"--"))),u+=r,u+=n;return(u+t.substring(l)+p()).replace(/^\n+|\n+$/g,"")}function Fb(t,e){return!e||/^(data:|([A-Za-z]+:)?\/\/)/.test(t)||t.startsWith("/")?t:(e.endsWith("/")||(e+="/"),e+t)}function cN(t,e={}){const n=Td(t),r=new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${n}</div></body></html>`,"text/html");r.normalize(),Pb(r.body);for(const o of r.querySelectorAll("a[href]"))o.setAttribute("target","blank"),o.setAttribute("rel","noopener noreferrer"),o.setAttribute("href",Fb(o.getAttribute("href"),e.baseUrl));for(const o of r.querySelectorAll("img[src]"))o.setAttribute("src",Fb(o.getAttribute("src"),e.baseUrl));const i=r.body.removeChild(r.querySelector("body > div"));return i.className="snarkdown",i}function Pb(t){if(t.nodeType!==3){if(t.nodeType!==1||/^(script|iframe|object|embed|svg)$/i.test(t.tagName))return t.remove();for(let e=t.attributes.length;e--;){const n=t.attributes[e].name;/^(class|id|name|href|src|alt|align|valign|(on[a-z]+))$/i.test(n)||t.attributes.removeNamedItem(n)}for(let e=t.childNodes.length;e--;)Pb(t.childNodes[e])}}function uN(t){t.stopPropagation(),t.preventDefault();const n=t.target.parentElement,r=n.parentElement,o=r.parentElement.querySelector(".panes"),a=[...r.children].findIndex(s=>s==n);for(const s of r.children)s.classList.remove("active-tab");for(const s of o.children)s.classList.remove("active-tab");r.children.item(a).classList.add("active-tab"),o.children.item(a).classList.add("active-tab")}var Id={exports:{}};Id.exports,function(t){var e=function(){var n=String.fromCharCode,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",o={};function a(c,u){if(!o[c]){o[c]={};for(var f=0;f<c.length;f++)o[c][c.charAt(f)]=f}return o[c][u]}var s={compressToBase64:function(c){if(c==null)return"";var u=s._compress(c,6,function(f){return r.charAt(f)});switch(u.length%4){default:case 0:return u;case 1:return u+"===";case 2:return u+"==";case 3:return u+"="}},decompressFromBase64:function(c){return c==null?"":c==""?null:s._decompress(c.length,32,function(u){return a(r,c.charAt(u))})},compressToUTF16:function(c){return c==null?"":s._compress(c,15,function(u){return n(u+32)})+" "},decompressFromUTF16:function(c){return c==null?"":c==""?null:s._decompress(c.length,16384,function(u){return c.charCodeAt(u)-32})},compressToUint8Array:function(c){for(var u=s.compress(c),f=new Uint8Array(u.length*2),l=0,d=u.length;l<d;l++){var p=u.charCodeAt(l);f[l*2]=p>>>8,f[l*2+1]=p%256}return f},decompressFromUint8Array:function(c){if(c==null)return s.decompress(c);for(var u=new Array(c.length/2),f=0,l=u.length;f<l;f++)u[f]=c[f*2]*256+c[f*2+1];var d=[];return u.forEach(function(p){d.push(n(p))}),s.decompress(d.join(""))},compressToEncodedURIComponent:function(c){return c==null?"":s._compress(c,6,function(u){return i.charAt(u)})},decompressFromEncodedURIComponent:function(c){return c==null?"":c==""?null:(c=c.replace(/ /g,"+"),s._decompress(c.length,32,function(u){return a(i,c.charAt(u))}))},compress:function(c){return s._compress(c,16,function(u){return n(u)})},_compress:function(c,u,f){if(c==null)return"";var l,d,p={},h={},m="",g="",y="",b=2,w=3,C=2,x=[],v=0,A=0,D;for(D=0;D<c.length;D+=1)if(m=c.charAt(D),Object.prototype.hasOwnProperty.call(p,m)||(p[m]=w++,h[m]=!0),g=y+m,Object.prototype.hasOwnProperty.call(p,g))y=g;else{if(Object.prototype.hasOwnProperty.call(h,y)){if(y.charCodeAt(0)<256){for(l=0;l<C;l++)v=v<<1,A==u-1?(A=0,x.push(f(v)),v=0):A++;for(d=y.charCodeAt(0),l=0;l<8;l++)v=v<<1|d&1,A==u-1?(A=0,x.push(f(v)),v=0):A++,d=d>>1}else{for(d=1,l=0;l<C;l++)v=v<<1|d,A==u-1?(A=0,x.push(f(v)),v=0):A++,d=0;for(d=y.charCodeAt(0),l=0;l<16;l++)v=v<<1|d&1,A==u-1?(A=0,x.push(f(v)),v=0):A++,d=d>>1}b--,b==0&&(b=Math.pow(2,C),C++),delete h[y]}else for(d=p[y],l=0;l<C;l++)v=v<<1|d&1,A==u-1?(A=0,x.push(f(v)),v=0):A++,d=d>>1;b--,b==0&&(b=Math.pow(2,C),C++),p[g]=w++,y=String(m)}if(y!==""){if(Object.prototype.hasOwnProperty.call(h,y)){if(y.charCodeAt(0)<256){for(l=0;l<C;l++)v=v<<1,A==u-1?(A=0,x.push(f(v)),v=0):A++;for(d=y.charCodeAt(0),l=0;l<8;l++)v=v<<1|d&1,A==u-1?(A=0,x.push(f(v)),v=0):A++,d=d>>1}else{for(d=1,l=0;l<C;l++)v=v<<1|d,A==u-1?(A=0,x.push(f(v)),v=0):A++,d=0;for(d=y.charCodeAt(0),l=0;l<16;l++)v=v<<1|d&1,A==u-1?(A=0,x.push(f(v)),v=0):A++,d=d>>1}b--,b==0&&(b=Math.pow(2,C),C++),delete h[y]}else for(d=p[y],l=0;l<C;l++)v=v<<1|d&1,A==u-1?(A=0,x.push(f(v)),v=0):A++,d=d>>1;b--,b==0&&(b=Math.pow(2,C),C++)}for(d=2,l=0;l<C;l++)v=v<<1|d&1,A==u-1?(A=0,x.push(f(v)),v=0):A++,d=d>>1;for(;;)if(v=v<<1,A==u-1){x.push(f(v));break}else A++;return x.join("")},decompress:function(c){return c==null?"":c==""?null:s._decompress(c.length,32768,function(u){return c.charCodeAt(u)})},_decompress:function(c,u,f){var l=[],d=4,p=4,h=3,m="",g=[],y,b,w,C,x,v,A,D={val:f(0),position:u,index:1};for(y=0;y<3;y+=1)l[y]=y;for(w=0,x=Math.pow(2,2),v=1;v!=x;)C=D.val&D.position,D.position>>=1,D.position==0&&(D.position=u,D.val=f(D.index++)),w|=(C>0?1:0)*v,v<<=1;switch(w){case 0:for(w=0,x=Math.pow(2,8),v=1;v!=x;)C=D.val&D.position,D.position>>=1,D.position==0&&(D.position=u,D.val=f(D.index++)),w|=(C>0?1:0)*v,v<<=1;A=n(w);break;case 1:for(w=0,x=Math.pow(2,16),v=1;v!=x;)C=D.val&D.position,D.position>>=1,D.position==0&&(D.position=u,D.val=f(D.index++)),w|=(C>0?1:0)*v,v<<=1;A=n(w);break;case 2:return""}for(l[3]=A,b=A,g.push(A);;){if(D.index>c)return"";for(w=0,x=Math.pow(2,h),v=1;v!=x;)C=D.val&D.position,D.position>>=1,D.position==0&&(D.position=u,D.val=f(D.index++)),w|=(C>0?1:0)*v,v<<=1;switch(A=w){case 0:for(w=0,x=Math.pow(2,8),v=1;v!=x;)C=D.val&D.position,D.position>>=1,D.position==0&&(D.position=u,D.val=f(D.index++)),w|=(C>0?1:0)*v,v<<=1;l[p++]=n(w),A=p-1,d--;break;case 1:for(w=0,x=Math.pow(2,16),v=1;v!=x;)C=D.val&D.position,D.position>>=1,D.position==0&&(D.position=u,D.val=f(D.index++)),w|=(C>0?1:0)*v,v<<=1;l[p++]=n(w),A=p-1,d--;break;case 2:return g.join("")}if(d==0&&(d=Math.pow(2,h),h++),l[A])m=l[A];else if(A===p)m=b+b.charAt(0);else return null;g.push(m),l[p++]=b+m.charAt(0),d--,b=m,d==0&&(d=Math.pow(2,h),h++)}}};return s}();t!=null&&(t.exports=e)}(Id);var zb=Id.exports;function lN(){const t=typeof process<"u"?require("util").TextEncoder:TextEncoder;return new t}let Rb;function fN(){let t,e=[];for(let n=0;n<256;n++){t=n;for(let r=0;r<8;r++)t=t&1?3988292384^t>>>1:t>>>1;e[n]=t}return e}function dN(t){Rb??(Rb=fN());let e=-1;const n=lN().encode(t);for(let r=0;r<n.length;r++)e=e>>>8^Rb[(e^n[r])&255];return(e^-1)>>>0}function jb(t){return("00000000"+dN(t).toString(16)).slice(-8)}function Ub(t){const e=zb.compressToEncodedURIComponent(JSON.stringify(t));return"#"+e+jb(e)}function hN(t){if(!t||t.length<10)throw new Error("The state string in the URL is too short.");const e=t.slice(1,-8),n=t.slice(-8);if(jb(e)!==n)throw new Error("The state string in the URL is corrupted.");return JSON.parse(zb.decompressFromEncodedURIComponent(e))}let vr;function pN(t){for(const e of t.genomeSpy.getNamedScaleResolutions().values())e.isZoomable()&&e.resetZoom();t.storeHelper.dispatch([...t.provenance.isUndoable()?[Ht.ActionCreators.jumpToPast(0)]:[],ai.actions.restoreDefaultVisibilities()])}async function kd(t,e){try{t.actions&&e.provenance.dispatchBookmark(t.actions),e.storeHelper.dispatch(ai.actions.setViewSettings(t.viewSettings));const n=[];for(const[r,i]of Object.entries(t.scaleDomains??{})){const o=e.genomeSpy.getNamedScaleResolutions().get(r);o?n.push(o.zoomTo(i)):console.warn(`Cannot restore scale domain. Unknown name: ${r}`)}await Promise.all(n)}catch(n){console.error(n),He(E`<p>Cannot restore the state:</p><p>${n}</p>`),e.provenance.activateState(0)}}async function Uo(t,e,n={}){await kd(t,e),(vr||t.notes||n.mode=="shared"&&(t.name||t.notes))&&await mN(t,e,n)}async function mN(t,e,n={}){vr??(vr=fr("tour",e.appContainer)),await gN(t,e,n)}async function gN(t,e,n){const r=n.database,i=r?await r.getNames():[],o=i.indexOf(t.name),a=r?` ${o+1} of ${i.length}`:"",s=`${n.mode=="shared"?"Shared bookmark":"Bookmark"}${a}: ${t.name??"Unnamed"}`,c=t.notes?cN(t.notes,{baseUrl:e.genomeSpy.spec.baseUrl}):E`<span class="no-notes">No notes provided</span>`,u=async()=>{if(vr==null||vr.close(),vr=void 0,n.mode=="tour"){const m=n.afterTourBookmark;if(typeof m=="string"){const g=await n.database.get(m);if(!g)throw new Error(`No such bookmark: ${m}`);kd(g,e)}else m===null||pN(e)}},f=async m=>{const g=await r.get(i[m]);Uo(g,e,n),e.appContainer.querySelector("canvas").focus()},l=async()=>{if(await Nd(e.localBookmarkDatabase,t,"add"))try{await e.localBookmarkDatabase.put(t)}catch(m){console.warn(m),He(`Cannot import bookmark: ${m}`)}},d=E`<button class="btn" @click="${u}">${n.mode=="tour"?"End tour":"Close"}</button> ${n.mode=="shared"&&e.localBookmarkDatabase?E`<button class="btn" @click="${l}">${K(U1).node[0]} Import bookmark</button>`:z} ${r?E`<button class="btn" @click="${()=>f(o-1)}" ?disabled="${o<=0}">${K(m6).node[0]} Previous</button> <button class="btn" @click="${()=>f(o+1)}" ?disabled="${o>=i.length-1}">Next ${K(T6).node[0]}</button>`:z}`,h=E`<button title="Collapse" class="btn collapse" @click="${m=>m.target.closest(".gs-modal").classList.toggle("collapsed")}">${K(y6).node[0]}</button><div class="modal-title">${s}</div><div class="modal-body markdown" style="max-width:600px">${c}</div><div class="modal-buttons">${d}</div>`;Be(h,vr.content)}function Hb(t,e){const n=JSON.stringify(t,void 0,2),r=window.location,i=r.origin+r.pathname+r.search+(e?"#bookmark:"+t.name.replaceAll(" ","-"):Ub(t));He(E`<div class="gs-tabs" style="width:600px"><ul class="tabs" @click="${uN}"><li class="active-tab"><button>URL</button></li><li><button>JSON</button></li></ul><div class="panes"><div class="gs-form-group active-tab"><label for="bookmark-url">Here's a link for you:</label><div class="copy-url"><input id="bookmark-url" type="text" .value="${i}"> <button @click="${a=>navigator.clipboard.writeText(i).then(()=>a.target.dispatchEvent(CI())).catch(()=>He("Failed to copy!"))}">Copy</button></div><small>The bookmark URL contains all the bookmarked data, including the possible notes, which will be shown when the link is opened.</small></div><div class="gs-form-group"><textarea id="bookmark-json" style="height:250px">
|
2188
|
+
${n}</textarea> <small>The JSON-formatted bookmark is currently available for development purposes.</small></div></div></div>`,{title:"Share a bookmark",okLabel:"Close"})}function Nd(t,e,n){const r={add:"Add bookmark",edit:"Edit bookmark",share:"Share the current view state as a bookmark"}[n],i=(c,u)=>E`<div class="modal-title">${r}</div><div class="modal-body" style="width:500px">${n=="edit"?E`<div class="gs-alert warning">${K(b6).node[0]} The current visualization state will be updated to the bookmark you are editing.</div>`:z} ${n=="share"?E`<div class="gs-alert info">${K(G1).node[0]} <span>You can add an optional title and notes, which will be shown to the recipient when the bookmark link is opened.</span></div>`:z}<div class="gs-form-group"><label for="bookmark-title">Title</label> <input id="bookmark-title" type="text" ?required="${n=="add"||n=="edit"}" .value="${e.name??""}" .placeholder="${n=="share"?"Add an optional title":""}" @change="${f=>{e.name=Gb(f.target.value)}}"></div><div class="gs-form-group"><label for="bookmark-notes">Notes</label> <textarea id="bookmark-notes" rows="4" .value="${e.notes??""}" .placeholder="${n=="share"?"... and notes":""}" @change="${f=>{e.notes=Gb(f.target.value)}}"></textarea> <small>Notes will be shown when the bookmark is loaded. You can use <a href="https://www.markdownguide.org/basic-syntax/">markdown</a> for formatting.</small></div></div><div class="modal-buttons"><button class="btn btn-cancel" @click="${c}">Cancel</button> <button class="btn btn-primary" @click="${u}">${n=="share"?E`${K(af).node[0]} Create a link`:"Save"}</button></div>`,o=e.name,a=()=>!!e.name,s=fr();return new Promise(c=>{const u=()=>{s.close(),c(!1)},f=async()=>{if(!a()){He("Name is missing!",{title:"Error"});return}let d=!0;t&&!(n&&e.name==o)&&await t.get(e.name)&&(d=await He(E`A bookmark with the name <em>${e.name}</em> already exists. It will be overwritten.`,{title:"Bookmark already exists",cancelButton:!0})),d&&(s.close(),c(!0))},l=()=>{s.close(),c(!0)};Be(i(u,n=="share"?l:f),s.content),s.content.querySelector("#bookmark-title").focus()})}function Gb(t){if(t!==void 0&&(t=t.trim(),t.length))return t}class yN extends yt{constructor(){super(),this.app=void 0}connectedCallback(){super.connectedCallback(),this.dispatchEvent(kb("app",e=>{this.app=e}))}createRenderRoot(){return this}_createBookmarkWithCurrentState(){const e={name:void 0,timestamp:Date.now(),actions:this.app.provenance.getBookmarkableActionHistory(),scaleDomains:{}},n=this.app.storeHelper.state.viewSettings;Object.keys(n.visibilities).length&&(e.viewSettings=n);for(const[r,i]of this.app.genomeSpy.getNamedScaleResolutions().entries())i.isZoomable()&&(e.scaleDomains[r]=i.getComplexDomain());return e}async _shareCurrentState(){const e=this._createBookmarkWithCurrentState();await Nd(void 0,e,"share")&&Hb(e,!1)}async _addBookmark(e,n){const r=n?await e.get(n):void 0,i=!!r,o=this._createBookmarkWithCurrentState();if(o.name??(o.name=r==null?void 0:r.name),o.notes??(o.notes=r==null?void 0:r.notes),await Nd(e,o,i?"edit":"add"))try{await e.put(o,r==null?void 0:r.name),this.requestUpdate()}catch(a){He(`${a}`,{title:"Cannot save the bookmark!"})}}async _loadBookmark(e,n){const r=await e.get(n);r&&Uo(r,this.app,{database:e})}_createContextMenu(e,n,r){r.stopPropagation();const i=r.target.closest("li"),o=()=>He(E`The bookmark <em>${n}</em> will be deleted.`,{title:"Are you sure?",cancelButton:!0}).then(async c=>{c&&(await e.delete(n),this.requestUpdate())}),a=[],s=e==this.app.globalBookmarkDatabase;s||(a.push({label:"Edit and replace...",icon:N6,callback:()=>this._addBookmark(e,n)}),a.push({label:"Delete",icon:V1,callback:o})),a.push({label:"Share...",icon:af,callback:async()=>Hb(await e.get(n),s)}),ub({items:a},i,"right-start")}async _makeBookmarkMenuItems(e,n){const i=(await e.getNames()).map(o=>({label:o,callback:()=>this._loadBookmark(e,o),ellipsisCallback:a=>this._createContextMenu(e,o,a)}));return i.length?[{type:"divider"},{label:n,type:"header"},...i].map(o=>sb(o)):z}_getBookmarks(){const e=(n,r)=>n?aN(this._makeBookmarkMenuItems(n,r),E`Loading...`):z;return[e(this.app.globalBookmarkDatabase,"Bookmarks on the server"),e(this.app.localBookmarkDatabase,"Bookmarks in the web browser")]}render(){const e=this.app.localBookmarkDatabase,n=e?E`<li><a @click="${()=>this._addBookmark(e)}">Add bookmark...</a></li>`:z,r=e||this.app.globalBookmarkDatabase?E`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Bookmarks" @click="${i=>{Dd(i)&&this.requestUpdate()}}">${K(U1).node[0]}</button><ul class="gs-dropdown-menu">${n} ${this._getBookmarks()}</ul></div>`:z;return E`<div class="btn-group">${r} <button class="tool-btn" title="Share" @click="${()=>this._shareCurrentState()}">${K(af).node[0]}</button></div>`}}customElements.define("genome-spy-bookmark-button",yN);class vN extends yt{constructor(){super(),this.app=void 0,this.appInitialized=!1}static get properties(){return{app:{type:Object},appInitialized:{type:Boolean}}}createRenderRoot(){return this}_getToolButtons(){const e=this.app.provenance,n=[];e.isEnabled()&&n.push(E`<genome-spy-provenance-buttons .provenance="${e}"></genome-spy-provenance-buttons>`),n.push(E`<genome-spy-view-visibility></genome-spy-view-visibility>`),n.push(E`<genome-spy-bookmark-button></genome-spy-bookmark-button>`);const r=this.app.config.description?Ze(this.app.config.description):[];return r.length>1&&n.push(E`<button class="tool-btn" title="Show a description of the visualization" @click="${()=>He(E`${r.slice(1).map(i=>E`<p>${i}</p>`)}`,{title:r[0]})}">${K(G1).node[0]}</button>`),r.length>0&&n.push(E`<span class="vis-title">${r[0]}</span>`),n.push(E`<span class="spacer"></span> <a class="version" href="https://github.com/genome-spy/genome-spy/releases/tag/v${Ib.version}">v${Ib.version}</a> ${this.app.appContainer.requestFullscreen?E`<button class="tool-btn" title="Fullscreen" @click="${()=>this.app.toggleFullScreen()}">${K(k6).node[0]}</button>`:z} <button class="tool-btn" title="Help" @click="${()=>window.open("https://genomespy.app/docs/sample-collections/analyzing/","_blank")}">${K(w6).node[0]}</button>`),n}render(){const e=this.app.genomeSpy;return E`<nav class="gs-toolbar"><a href="https://genomespy.app" target="_blank" class="logo"><img title="GenomeSpy" alt="GenomeSpy" src="${Tb}"> </a>${this.appInitialized&&Mb(e.viewRoot)?E`<genome-spy-search-field .app="${this.app}"></genome-spy-search-field>`:z} ${this._getToolButtons()}</nav>`}}customElements.define("genome-spy-toolbar",vN);class bN{constructor(e){this.storeHelper=e,this._reducers={},this.actionInfoSources=[],this._reducer=void 0,e.addReducer("provenance",(n,r)=>this._reducer?this._reducer(n,r):n??{})}addReducer(e,n){this._reducers[e]=n;const r=o=>Object.keys(this._reducers).some(a=>o.type.startsWith(a)),i=(o,a)=>r(a)?a:o??null;this._reducer=rk(Jf({...this._reducers,lastAction:i}),{ignoreInitialState:!0,filter:r}),this.storeHelper.dispatch({type:"@@redux/REPLACE"+Math.random().toString(36).substring(7).split("").join(".")})}get _storeState(){return this.storeHelper.store.getState()}get _provenanceState(){return this._storeState.provenance}isEnabled(){return!!this.getPresentState()}getPresentState(){return this._provenanceState.present}addActionInfoSource(e){this.actionInfoSources.push(e)}getActionInfo(e){for(const n of this.actionInfoSources){const r=n(e);if(r)return r}}dispatchBookmark(e){this.storeHelper.dispatch([...this.isUndoable()?[Ht.ActionCreators.jumpToPast(0)]:[],...e])}isRedoable(){return this.isEnabled()&&this._provenanceState.future.length>0}redo(){this.storeHelper.dispatch(Ht.ActionCreators.redo())}isUndoable(){return this.isEnabled()&&this._provenanceState.past.length>0}undo(){this.storeHelper.dispatch(Ht.ActionCreators.undo())}isAtInitialState(){return!this.isUndoable()}isEmpty(){const e=this._provenanceState;return!this.isEnabled()||e.past.length+e.future.length<=0}activateState(e){const n=this.getCurrentIndex();e<n?this.storeHelper.dispatch(Ht.ActionCreators.jumpToPast(e)):e>n&&this.storeHelper.dispatch(Ht.ActionCreators.jumpToFuture(e-n-1))}getCurrentIndex(){var e;return(e=this._provenanceState.past)==null?void 0:e.length}getActionHistory(){const e=this._provenanceState;return e.present&&[...e.past,e.present].map(n=>n.lastAction)}getFullActionHistory(){const e=this._provenanceState;return[...e.past,e.present,...e.future].map(n=>n.lastAction)}getBookmarkableActionHistory(){var e;return(e=this.getActionHistory())==null?void 0:e.slice(1)}}function*AN(t,e=n=>+n){const n=t.length,r=new Ao,i=new Array(n).fill(0);for(const[a,s]of t.entries())s.length&&r.push(a,e(s[0]));let o=0;for(;(o=r.pop())!==void 0;){const a=t[o];let s=i[o];if(yield a[s++],s<a.length){const u=e(a[s]);r.push(o,u),i[o]=s}}}const xN="sampleCount";class wN extends ue{constructor(n,r){super();$(this,Zo);this.view=r;const i=r.context.animator;if(this.provenance=CN(r),!this.provenance)throw new Error("No SampleView was found!");this.provenance.storeHelper.subscribe(o=>{j(this,Zo,Hd)&&i.requestTransition(()=>{this.reset(),this._mergeAndPropagate(rd(o)),this.complete()})}),this.contextObject=void 0}initialize(){this.contextObject=Object.create(super.getGlobalObject());const n=this.view.getEncoding().x;if(Xn(n))this.xAccessor=q(n.field);else throw new Error("Crash!")}handle(n){}getGlobalObject(){return this.contextObject}_getCollector(){if(this.parent instanceof bo)return this.parent;throw new Error("MergeFacetsTransform must be a direct child of a Collector")}complete(){j(this,Zo,Hd)&&(this._mergeAndPropagate(this.provenance.getPresentState()[ri]),super.complete())}_mergeAndPropagate(n){const r=[...od(n.rootGroup)].filter(i=>Ov(Re(i)));for(const[i,o]of r.entries()){const a=Re(o);if(Ov(a)){this.contextObject[xN]=a.samples.length,this.beginBatch({type:"facet",facetId:[i]});const s=a.samples,c=this._getCollector(),u=AN(s.map(f=>c.facetBatches.get([f])??[]),this.xAccessor);for(const f of u)this._propagate(f)}}this._updateScales()}setParent(n){super.setParent(n)}_updateScales(){const n=new Set;this.view.visit(r=>{if(r instanceof pe&&r.mark.encoding.y){const i=r.getScaleResolution("y");i&&n.add(i)}});for(const r of n)r.reconfigure()}}Zo=new WeakSet,Hd=function(){return this.view.isVisible()};function CN(t){for(const e of t.getAncestors())if(e instanceof yd)return e.provenance}var SN="BATCHING_REDUCER.BATCH";function EN(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:SN;return{type:e,meta:{batch:!0},payload:t}}function DN(t){return function e(n,r){return r&&r.meta&&r.meta.batch?r.payload.reduce(e,n):t(n,r)}}class MN{constructor(e){this._reducers=e??{},this.store=d9({reducer:{}}),this._listeners=new Set,this.store.subscribe(()=>{const n=this.store.getState();for(const r of this._listeners)r(n)})}get state(){return this.store.getState()}addReducer(e,n){this._reducers[e]=n,this.store.replaceReducer(DN(Jf(this._reducers)))}subscribe(e){this._listeners.add(e)}unsubscribe(e){this._listeners.delete(e)}dispatch(e){Array.isArray(e)?this.store.dispatch(EN(e)):this.store.dispatch(e)}getDispatcher(){return e=>this.dispatch(e)}}class TN extends wb{constructor(e){super(),this.bookmarks=e,this.names=e.map(n=>n.name)}async getNames(){return this.names}async get(e){return this.bookmarks.find(n=>n.name==e)}}y1.mergeFacets=wN;class Qb{constructor(e,n,r={}){const i=this;this.config=n,this.storeHelper=new MN,this.storeHelper.addReducer("viewSettings",ai.reducer),this.provenance=new bN(this.storeHelper),this._initializationListeners=[],this.toolbarRef=Eb(),this.appContainer=e,this._configureContainer(),this.localBookmarkDatabase=typeof n.specId=="string"?new Vk(n.specId):void 0,this.globalBookmarkDatabase=void 0,Be(E`<div class="genome-spy-app"><genome-spy-toolbar ${Db(i.toolbarRef)} .app="${i}"></genome-spy-toolbar><div class="genome-spy-container"></div></div>`,i.appContainer),i.appContainer.querySelector(".genome-spy-app").addEventListener("query-dependency",s=>{s.detail.name=="app"&&(s.detail.setter(i),s.stopPropagation())});const o=s=>this.appContainer.getElementsByClassName(s)[0];this.genomeSpy=new L1(o("genome-spy-container"),this.config,r),this.genomeSpy.viewFactory.addViewType(Lk,(s,c,u,f)=>new yd(s,c,u,f,this.provenance));const a=this.genomeSpy.viewVisibilityPredicate;this.genomeSpy.viewVisibilityPredicate=s=>{var c;return((c=this.storeHelper.state.viewSettings)==null?void 0:c.visibilities[s.name])??a(s)}}addInitializationListener(e){this._initializationListeners?this._initializationListeners.push(e):e()}toggleFullScreen(){document.fullscreenElement?document.exitFullscreen&&document.exitFullscreen():this.appContainer.requestFullscreen()}isFullPage(){return this.appContainer==document.body}async launch(){var a;const e=(a=this.config.bookmarks)!=null&&a.remote?Ni({baseURL:this.config.baseUrl}).load(this.config.bookmarks.remote.url).then(s=>Promise.resolve(JSON.parse(s))):Promise.resolve([]);if(!await this.genomeSpy.launch())return;this.appContainer.querySelector("canvas").setAttribute("tabindex","-1"),this.storeHelper.subscribe(rc(s=>{var c;return(c=s.viewSettings)==null?void 0:c.visibilities},(s,c)=>{var f,l;this.genomeSpy.viewRoot._invalidateCacheByPrefix("size","progeny"),(l=(f=this.getSampleView())==null?void 0:f.summaryViews)==null||l._invalidateCacheByPrefix("size","self");const u=this.genomeSpy.viewRoot.context;u.requestLayoutReflow(),u.animator.requestRender()},this.storeHelper.store.getState()));try{const s=await e;s.length&&(this.globalBookmarkDatabase=new TN(s))}catch(s){throw new Error(`Cannot load remote bookmarks: ${s}`)}try{await this._restoreStateFromUrlOrBookmark()}catch(s){He(s.toString())}this.storeHelper.subscribe(()=>{this._updateStateToUrl()}),window.addEventListener("hashchange",()=>this._restoreStateFromUrl().catch(s=>He(s.toString())),!1);const r=Cs(()=>this._updateStateToUrl(),500,!1);for(const[,s]of this.genomeSpy.getNamedScaleResolutions())s.isZoomable()&&s.addEventListener("domain",r);const i=this.toolbarRef.value;i.appInitialized=!0;const o=Ze(this.genomeSpy.spec.description??[]);this.isFullPage()&&o.length>0&&(document.title="GenomeSpy - "+o);for(const s of this._initializationListeners)s();this._initializationListeners=void 0}async _restoreStateFromUrlOrBookmark(){var i;const e=(i=this.config.bookmarks)==null?void 0:i.remote,n=this.globalBookmarkDatabase;if(!await this._restoreStateFromUrl()&&e&&n){const o=e.initialBookmark??(e.tour&&(await n.getNames())[0]);if(o){const a=await n.get(o);if(!a)throw new Error(`No such bookmark: ${o}`);e.tour?await Uo(a,this,{mode:"tour",database:n,afterTourBookmark:e.afterTourBookmark}):await kd(a,this)}}}_updateStateToUrl(){const e={actions:[],scaleDomains:{}},n=this.provenance.getBookmarkableActionHistory();n!=null&&n.length&&(e.actions=n);for(const[o,a]of this.genomeSpy.getNamedScaleResolutions().entries())a.isZoomed()||(e.scaleDomains[o]=a.getComplexDomain());const r=this.storeHelper.state.viewSettings;Object.keys(r.visibilities).length&&(e.viewSettings=r);const i=e.actions.length||Object.keys(e.scaleDomains).length||e.viewSettings?Ub(e):"";window.history.replaceState(void 0,document.title,window.location.pathname+window.location.search+i)}async _restoreStateFromUrl(){var r,i;const e=window.location.hash,n=(r=e.match(/^#bookmark:(.+)$/))==null?void 0:r[1];if(n){const o=(i=this.config.bookmarks)==null?void 0:i.remote,a=this.globalBookmarkDatabase;if(o&&a){const s=(await a.getNames()).find(c=>c.replaceAll(" ","-")==n);if(s){const c=await a.get(s);if(!c)throw new Error(`No such bookmark: ${s}`);return await Uo(c,this,{mode:"tour",database:a}),!0}else throw new Error(`No such bookmark: ${n}`)}}if(e&&e.length>0)try{const o=hN(e);return Uo(o,this,{mode:"shared"}),!0}catch(o){console.error(o),He(E`<p>Cannot restore the state:</p><p>${o}</p>`)}return!1}_configureContainer(){this.isFullPage()?(this.appContainer.style.margin="0",this.appContainer.style.padding="0",this.appContainer.style.overflow="hidden",IN(n6)):this.appContainer.style.position="relative"}getSampleView(){var n;if(!((n=this.genomeSpy)!=null&&n.viewRoot))return;let e;return this.genomeSpy.viewRoot.visit(r=>{if(r instanceof yd)return e=r,tr}),e}}function IN(t){const e=document.querySelector("head"),n=document.createElement("link");n.setAttribute("rel","shortcut icon"),n.setAttribute("href",t),e.appendChild(n)}async function kN(t,e,n={}){let r;if(ne(t)){if(r=document.querySelector(t),!r)throw new Error(`No such element: ${t}`)}else if(t instanceof HTMLElement)r=t;else throw new Error(`Invalid element: ${t}`);let i;try{const o=ze(e)?e:await Vb(e);o.baseUrl??(o.baseUrl=""),o.width??(o.width="container"),o.padding??(o.padding=10);const a=new Qb(r,o,n);i=a.genomeSpy,NN(i,n),await a.launch()}catch(o){r.innerText=o.toString(),console.error(o)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(o,a){const s=i._eventListeners;let c=s.get(o);c||(c=new Set,s.set(o,c)),c.add(a)},removeEventListener(o,a){var c;(c=i._eventListeners.get(o))==null||c.delete(a)},getScaleResolutionByName(o){return i.getNamedScaleResolutions().get(o)}}}function NN(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function Vb(t){let e;try{e=JSON.parse(await Ni().load(t))}catch(n){throw new Error(`Could not load or parse configuration: ${t}, reason: ${n.message}`)}if(!e.baseUrl){const n=t.match(/^[^?#]*\//);e.baseUrl=n&&n[0]||"./"}return e}U.GenomeSpy=L1,U.GenomeSpyApp=Qb,U.embed=kN,U.html=E,U.icon=Tb,U.loadSpec=Vb,Object.defineProperty(U,Symbol.toStringTag,{value:"Module"})});
|