@genome-spy/app 0.19.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,17 +1,17 @@
1
- var bT=Object.defineProperty,xT=Object.defineProperties;var vT=Object.getOwnPropertyDescriptors;var na=Object.getOwnPropertySymbols;var hy=Object.prototype.hasOwnProperty,py=Object.prototype.propertyIsEnumerable;var dy=(Y,q,be)=>q in Y?bT(Y,q,{enumerable:!0,configurable:!0,writable:!0,value:be}):Y[q]=be,T=(Y,q)=>{for(var be in q||(q={}))hy.call(q,be)&&dy(Y,be,q[be]);if(na)for(var be of na(q))py.call(q,be)&&dy(Y,be,q[be]);return Y},F=(Y,q)=>xT(Y,vT(q));var gy=(Y,q)=>{var be={};for(var _e in Y)hy.call(Y,_e)&&q.indexOf(_e)<0&&(be[_e]=Y[_e]);if(Y!=null&&na)for(var _e of na(Y))q.indexOf(_e)<0&&py.call(Y,_e)&&(be[_e]=Y[_e]);return be};(function(Y,q){typeof exports=="object"&&typeof module!="undefined"?q(exports):typeof define=="function"&&define.amd?define(["exports"],q):(Y=typeof globalThis!="undefined"?globalThis:Y||self,q(Y.genomeSpyApp={}))})(this,function(Y){"use strict";function q(t,e,n){return t.fields=e||[],t.fname=n,t}function be(t){return t==null?null:t.fname}function _e(t){return t==null?null:t.fields}function my(t){return t.length===1?yy(t[0]):Ay(t)}const yy=t=>function(e){return e[t]},Ay=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function re(t){throw Error(t)}function by(t){const e=[],n=t.length;let r=null,i=0,o="",s,a,c;t=t+"";function u(){e.push(o+t.substring(s,a)),o="",s=a+1}for(s=a=0;a<n;++a)if(c=t[a],c==="\\")o+=t.substring(s,a),o+=t.substring(++a,++a),s=a;else if(c===r)u(),r=null,i=-1;else{if(r)continue;s===i&&c==='"'||s===i&&c==="'"?(s=a+1,r=c):c==="."&&!i?a>s?u():s=a+1:c==="["?(a>s&&u(),i=s=a+1):c==="]"&&(i||re("Access path missing open bracket: "+t),i>0&&u(),i=0,s=a+1)}return i&&re("Access path missing closing bracket: "+t),r&&re("Access path missing closing quote: "+t),a>s&&(a++,u()),e}function ro(t,e,n){const r=by(t);return t=r.length===1?r[0]:t,q((n&&n.get||my)(r),[t],e||t)}ro("id");const io=q(t=>t,[],"identity");q(()=>0,[],"zero"),q(()=>1,[],"one"),q(()=>!0,[],"true"),q(()=>!1,[],"false");var Ye=Array.isArray;function ze(t){return t===Object(t)}function et(t){return t[t.length-1]}function Nr(t){return t==null||t===""?null:+t}const rf=t=>e=>t*Math.exp(e),of=t=>e=>Math.log(t*e),xy=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),vy=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,oo=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function ra(t,e,n,r){const i=n(t[0]),o=n(et(t)),s=(o-i)*e;return[r(i-s),r(o-s)]}function wy(t,e){return ra(t,e,Nr,io)}function Ey(t,e){var n=Math.sign(t[0]);return ra(t,e,of(n),rf(n))}function Sy(t,e,n){return ra(t,e,oo(n),oo(1/n))}function so(t,e,n,r,i){const o=r(t[0]),s=r(et(t)),a=e!=null?r(e):(o+s)/2;return[i(a+(o-a)*n),i(a+(s-a)*n)]}function ao(t,e,n){return so(t,e,n,Nr,io)}function sf(t,e,n){const r=Math.sign(t[0]);return so(t,e,n,of(r),rf(r))}function ia(t,e,n,r){return so(t,e,n,oo(r),oo(1/r))}function Cy(t,e,n,r){return so(t,e,n,xy(r),vy(r))}function oa(t){return t!=null?Ye(t)?t:[t]:[]}function Dy(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 Te(t){return typeof t=="function"}const My="descending";function af(t,e,n){n=n||{},e=oa(e)||[];const r=[],i=[],o={},s=n.comparator||Iy;return oa(t).forEach((a,c)=>{a!=null&&(r.push(e[c]===My?-1:1),i.push(a=Te(a)?a:ro(a,null,n)),(_e(a)||[]).forEach(u=>o[u]=1))}),i.length===0?null:q(s(i,r),Object.keys(o))}const cf=(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),Iy=(t,e)=>t.length===1?Ty(t[0],e[0]):Ny(t,e,t.length),Ty=(t,e)=>function(n,r){return cf(t(n),t(r))*e},Ny=(t,e,n)=>(e.push(0),function(r,i){let o,s=0,a=-1;for(;s===0&&++a<n;)o=t[a],s=cf(o(r),o(i));return s*e[a]});function Ly(t){return Te(t)?t:()=>t}function sa(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 ky=Object.prototype.hasOwnProperty;function hn(t,e){return ky.call(t,e)}function co(t){return typeof t=="boolean"}function Oy(t){return Object.prototype.toString.call(t)==="[object Date]"}function By(t){return t&&Te(t[Symbol.iterator])}function ae(t){return typeof t=="number"}function oe(t){return typeof t=="string"}function Py(t,e){const n=t[0],r=et(t),i=+e;return i?i===1?r:n+i*(r-n):n}function uo(t){return t&&et(t)-t[0]||0}function lo(t){return Ye(t)?"["+t.map(lo)+"]":ze(t)||oe(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function Fy(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const zy=t=>ae(t)||Oy(t)?t:Date.parse(t);function Ry(t,e){return e=e||zy,t==null||t===""?null:e(t)}function Uy(t){return t==null||t===""?null:t+""}function fo(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var uf={},aa={},ca=34,Lr=10,ua=13;function lf(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function jy(t,e){var n=lf(t);return function(r,i){return e(n(r),i,t)}}function ff(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 Ne(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function Gy(t){return t<0?"-"+Ne(-t,6):t>9999?"+"+Ne(t,6):Ne(t,4)}function Hy(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":Gy(t.getUTCFullYear())+"-"+Ne(t.getUTCMonth()+1,2)+"-"+Ne(t.getUTCDate(),2)+(i?"T"+Ne(e,2)+":"+Ne(n,2)+":"+Ne(r,2)+"."+Ne(i,3)+"Z":r?"T"+Ne(e,2)+":"+Ne(n,2)+":"+Ne(r,2)+"Z":n||e?"T"+Ne(e,2)+":"+Ne(n,2)+"Z":"")}function df(t){var e=new RegExp('["'+t+`
2
- \r]`),n=t.charCodeAt(0);function r(l,d){var h,p,g=i(l,function(m,y){if(h)return h(m,y-1);p=m,h=d?jy(m,d):lf(m)});return g.columns=p||[],g}function i(l,d){var h=[],p=l.length,g=0,m=0,y,x=p<=0,v=!1;l.charCodeAt(p-1)===Lr&&--p,l.charCodeAt(p-1)===ua&&--p;function S(){if(x)return aa;if(v)return v=!1,uf;var A,w=g,E;if(l.charCodeAt(w)===ca){for(;g++<p&&l.charCodeAt(g)!==ca||l.charCodeAt(++g)===ca;);return(A=g)>=p?x=!0:(E=l.charCodeAt(g++))===Lr?v=!0:E===ua&&(v=!0,l.charCodeAt(g)===Lr&&++g),l.slice(w+1,A-1).replace(/""/g,'"')}for(;g<p;){if((E=l.charCodeAt(A=g++))===Lr)v=!0;else if(E===ua)v=!0,l.charCodeAt(g)===Lr&&++g;else if(E!==n)continue;return l.slice(w,A)}return x=!0,l.slice(w,p)}for(;(y=S())!==aa;){for(var b=[];y!==uf&&y!==aa;)b.push(y),y=S();d&&(b=d(b,m++))==null||h.push(b)}return h}function o(l,d){return l.map(function(h){return d.map(function(p){return f(h[p])}).join(t)})}function s(l,d){return d==null&&(d=ff(l)),[d.map(f).join(t)].concat(o(l,d)).join(`
3
- `)}function a(l,d){return d==null&&(d=ff(l)),o(l,d).join(`
1
+ var Ok=Object.defineProperty,Pk=Object.defineProperties;var Fk=Object.getOwnPropertyDescriptors;var Ys=Object.getOwnPropertySymbols;var z2=Object.prototype.hasOwnProperty,R2=Object.prototype.propertyIsEnumerable;var td=(z,R,V)=>R in z?Ok(z,R,{enumerable:!0,configurable:!0,writable:!0,value:V}):z[R]=V,T=(z,R)=>{for(var V in R||(R={}))z2.call(R,V)&&td(z,V,R[V]);if(Ys)for(var V of Ys(R))R2.call(R,V)&&td(z,V,R[V]);return z},U=(z,R)=>Pk(z,Fk(R));var j2=(z,R)=>{var V={};for(var we in z)z2.call(z,we)&&R.indexOf(we)<0&&(V[we]=z[we]);if(z!=null&&Ys)for(var we of Ys(z))R.indexOf(we)<0&&R2.call(z,we)&&(V[we]=z[we]);return V};var U2=(z,R,V)=>(td(z,typeof R!="symbol"?R+"":R,V),V),nd=(z,R,V)=>{if(!R.has(z))throw TypeError("Cannot "+V)};var se=(z,R,V)=>(nd(z,R,"read from private field"),V?V.call(z):R.get(z)),ke=(z,R,V)=>{if(R.has(z))throw TypeError("Cannot add the same private member more than once");R instanceof WeakSet?R.add(z):R.set(z,V)},jo=(z,R,V,we)=>(nd(z,R,"write to private field"),we?we.call(z,V):R.set(z,V),V),G2=(z,R,V,we)=>({set _(_s){jo(z,R,_s,V)},get _(){return se(z,R,we)}}),xe=(z,R,V)=>(nd(z,R,"access private method"),V);(function(z,R){typeof exports=="object"&&typeof module!="undefined"?R(exports):typeof define=="function"&&define.amd?define(["exports"],R):(z=typeof globalThis!="undefined"?globalThis:z||self,R(z.genomeSpyApp={}))})(this,function(z){var Lo,rd,ei,ti,nt,ni,Bo,id,Dt,Sn,Us,H2,Gs,Q2,ur,Uo,Oo,od,Po,ad,Fo,sd,Hs,V2,Qs,Y2;"use strict";function R(t,e,n){return t.fields=e||[],t.fname=n,t}function V(t){return t==null?null:t.fname}function we(t){return t==null?null:t.fields}function _s(t){return t.length===1?_2(t[0]):W2(t)}const _2=t=>function(e){return e[t]},W2=t=>{const e=t.length;return function(n){for(let r=0;r<e;++r)n=n[t[r]];return n}};function ce(t){throw Error(t)}function X2(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||ce("Access path missing open bracket: "+t),i>0&&u(),i=0,a=s+1)}return i&&ce("Access path missing closing bracket: "+t),r&&ce("Access path missing closing quote: "+t),s>a&&(s++,u()),e}function Go(t,e,n){const r=X2(t);return t=r.length===1?r[0]:t,R((n&&n.get||_s)(r),[t],e||t)}Go("id");const Ho=R(t=>t,[],"identity");R(()=>0,[],"zero"),R(()=>1,[],"one"),R(()=>!0,[],"true"),R(()=>!1,[],"false");var Ze=Array.isArray;function je(t){return t===Object(t)}function rt(t){return t[t.length-1]}function ri(t){return t==null||t===""?null:+t}const cd=t=>e=>t*Math.exp(e),ud=t=>e=>Math.log(t*e),Z2=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),q2=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,Qo=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function Ws(t,e,n,r){const i=n(t[0]),o=n(rt(t)),a=(o-i)*e;return[r(i-a),r(o-a)]}function K2(t,e){return Ws(t,e,ri,Ho)}function J2(t,e){var n=Math.sign(t[0]);return Ws(t,e,ud(n),cd(n))}function $2(t,e,n){return Ws(t,e,Qo(n),Qo(1/n))}function Vo(t,e,n,r,i){const o=r(t[0]),a=r(rt(t)),s=e!=null?r(e):(o+a)/2;return[i(s+(o-s)*n),i(s+(a-s)*n)]}function Xs(t,e,n){return Vo(t,e,n,ri,Ho)}function ld(t,e,n){const r=Math.sign(t[0]);return Vo(t,e,n,ud(r),cd(r))}function Zs(t,e,n,r){return Vo(t,e,n,Qo(r),Qo(1/r))}function ev(t,e,n,r){return Vo(t,e,n,Z2(r),q2(r))}function qs(t){return t!=null?Ze(t)?t:[t]:[]}function tv(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 Be(t){return typeof t=="function"}const nv="descending";function fd(t,e,n){n=n||{},e=qs(e)||[];const r=[],i=[],o={},a=n.comparator||rv;return qs(t).forEach((s,c)=>{s!=null&&(r.push(e[c]===nv?-1:1),i.push(s=Be(s)?s:Go(s,null,n)),(we(s)||[]).forEach(u=>o[u]=1))}),i.length===0?null:R(a(i,r),Object.keys(o))}const dd=(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),rv=(t,e)=>t.length===1?iv(t[0],e[0]):ov(t,e,t.length),iv=(t,e)=>function(n,r){return dd(t(n),t(r))*e},ov=(t,e,n)=>(e.push(0),function(r,i){let o,a=0,s=-1;for(;a===0&&++s<n;)o=t[s],a=dd(o(r),o(i));return a*e[s]});function av(t){return Be(t)?t:()=>t}function Ks(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 sv=Object.prototype.hasOwnProperty;function En(t,e){return sv.call(t,e)}function Yo(t){return typeof t=="boolean"}function cv(t){return Object.prototype.toString.call(t)==="[object Date]"}function uv(t){return t&&Be(t[Symbol.iterator])}function le(t){return typeof t=="number"}function re(t){return typeof t=="string"}function lv(t,e){const n=t[0],r=rt(t),i=+e;return i?i===1?r:n+i*(r-n):n}function _o(t){return t&&rt(t)-t[0]||0}function Wo(t){return Ze(t)?"["+t.map(Wo)+"]":je(t)||re(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t}function fv(t){return t==null||t===""?null:!t||t==="false"||t==="0"?!1:!!t}const dv=t=>le(t)||cv(t)?t:Date.parse(t);function hv(t,e){return e=e||dv,t==null||t===""?null:e(t)}function pv(t){return t==null||t===""?null:t+""}function Xo(t){const e={},n=t.length;for(let r=0;r<n;++r)e[t[r]]=!0;return e}var hd={},Js={},$s=34,ii=10,ec=13;function pd(t){return new Function("d","return {"+t.map(function(e,n){return JSON.stringify(e)+": d["+n+'] || ""'}).join(",")+"}")}function mv(t,e){var n=pd(t);return function(r,i){return e(n(r),i,t)}}function md(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 Oe(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function gv(t){return t<0?"-"+Oe(-t,6):t>9999?"+"+Oe(t,6):Oe(t,4)}function yv(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":gv(t.getUTCFullYear())+"-"+Oe(t.getUTCMonth()+1,2)+"-"+Oe(t.getUTCDate(),2)+(i?"T"+Oe(e,2)+":"+Oe(n,2)+":"+Oe(r,2)+"."+Oe(i,3)+"Z":r?"T"+Oe(e,2)+":"+Oe(n,2)+":"+Oe(r,2)+"Z":n||e?"T"+Oe(e,2)+":"+Oe(n,2)+"Z":"")}function gd(t){var e=new RegExp('["'+t+`
2
+ \r]`),n=t.charCodeAt(0);function r(l,d){var h,p,m=i(l,function(y,g){if(h)return h(y,g-1);p=y,h=d?mv(y,d):pd(y)});return m.columns=p||[],m}function i(l,d){var h=[],p=l.length,m=0,y=0,g,A=p<=0,x=!1;l.charCodeAt(p-1)===ii&&--p,l.charCodeAt(p-1)===ec&&--p;function C(){if(A)return Js;if(x)return x=!1,hd;var v,w=m,E;if(l.charCodeAt(w)===$s){for(;m++<p&&l.charCodeAt(m)!==$s||l.charCodeAt(++m)===$s;);return(v=m)>=p?A=!0:(E=l.charCodeAt(m++))===ii?x=!0:E===ec&&(x=!0,l.charCodeAt(m)===ii&&++m),l.slice(w+1,v-1).replace(/""/g,'"')}for(;m<p;){if((E=l.charCodeAt(v=m++))===ii)x=!0;else if(E===ec)x=!0,l.charCodeAt(m)===ii&&++m;else if(E!==n)continue;return l.slice(w,v)}return A=!0,l.slice(w,p)}for(;(g=C())!==Js;){for(var b=[];g!==hd&&g!==Js;)b.push(g),g=C();d&&(b=d(b,y++))==null||h.push(b)}return h}function o(l,d){return l.map(function(h){return d.map(function(p){return f(h[p])}).join(t)})}function a(l,d){return d==null&&(d=md(l)),[d.map(f).join(t)].concat(o(l,d)).join(`
3
+ `)}function s(l,d){return d==null&&(d=md(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?Hy(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:s,formatBody:a,formatRows:c,formatRow:u,formatValue:f}}var Qy=df(" "),Vy=Qy.parseRows;function _y(t){return t}function Yy(t){if(t==null)return _y;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],s=t.translate[1];return function(a,c){c||(e=n=0);var u=2,f=a.length,l=new Array(f);for(l[0]=(e+=a[0])*r+o,l[1]=(n+=a[1])*i+s;u<f;)l[u]=a[u],++u;return l}}function Wy(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function Xy(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return hf(t,n)})}:hf(t,e)}function hf(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=pf(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 pf(t,e){var n=Yy(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var d=r[f<0?~f:f],h=0,p=d.length;h<p;++h)l.push(n(d[h],h));f<0&&Wy(l,p)}function o(f){return n(f)}function s(f){for(var l=[],d=0,h=f.length;d<h;++d)i(f[d],l);return l.length<2&&l.push(l[0]),l}function a(f){for(var l=s(f);l.length<4;)l.push(l[0]);return l}function c(f){return f.map(a)}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=s(f.arcs);break;case"MultiLineString":d=f.arcs.map(s);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 qy(t,e){var n={},r={},i={},o=[],s=-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[++s],e[s]=u,e[f]=d)}),e.forEach(function(u){var f=a(u),l=f[0],d=f[1],h,p;if(h=i[l])if(delete i[h.end],h.push(u),h.end=d,p=r[d]){delete r[p.start];var g=p===h?h:h.concat(p);r[g.start=h.start]=i[g.end=p.end]=g}else r[h.start]=i[h.end]=h;else if(h=r[d])if(delete r[h.start],h.unshift(u),h.start=l,p=i[l]){delete i[p.end];var m=p===h?h:p.concat(h);r[m.start=p.start]=i[m.end=h.end]=m}else r[h.start]=i[h.end]=h;else h=[u],r[h.start=l]=i[h.end=d]=h});function a(u){var f=t.arcs[u<0?~u:u],l=f[0],d;return t.transform?(d=[0,0],f.forEach(function(h){d[0]+=h[0],d[1]+=h[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(h){n[h<0?~h:h]=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 Zy(t){return pf(t,Ky.apply(this,arguments))}function Ky(t,e,n){var r,i,o;if(arguments.length>1)r=Jy(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:qy(t,r)}}function Jy(t,e,n){var r=[],i=[],o;function s(l){var d=l<0?~l:l;(i[d]||(i[d]=[])).push({i:l,g:o})}function a(l){l.forEach(s)}function c(l){l.forEach(a)}function u(l){l.forEach(c)}function f(l){switch(o=l,l.type){case"GeometryCollection":l.geometries.forEach(f);break;case"LineString":a(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 jn(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function la(t){let e=t,n=t;t.length===1&&(e=(s,a)=>t(s)-a,n=$y(t));function r(s,a,c,u){for(c==null&&(c=0),u==null&&(u=s.length);c<u;){const f=c+u>>>1;n(s[f],a)<0?c=f+1:u=f}return c}function i(s,a,c,u){for(c==null&&(c=0),u==null&&(u=s.length);c<u;){const f=c+u>>>1;n(s[f],a)>0?u=f:c=f+1}return c}function o(s,a,c,u){c==null&&(c=0),u==null&&(u=s.length);const f=r(s,a,c,u-1);return f>c&&e(s[f-1],a)>-e(s[f],a)?f-1:f}return{left:r,center:o,right:i}}function $y(t){return(e,n)=>jn(t(e),n)}function gf(t){return t===null?NaN:+t}const fa=la(jn).right;la(gf).center;var kr=fa;class eA extends Map{constructor(e,n=rA){super();if(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(mf(this,e))}has(e){return super.has(mf(this,e))}set(e,n){return super.set(tA(this,e),n)}delete(e){return super.delete(nA(this,e))}}function mf({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function tA({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function nA({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(n),t.delete(r)),n}function rA(t){return t!==null&&typeof t=="object"?t.valueOf():t}function yf(t){return t}function iA(t,...e){return oA(t,yf,yf,e)}function oA(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new eA,c=r[s++];let u=-1;for(const f of o){const l=c(f,++u,o),d=a.get(l);d?d.push(f):a.set(l,[f])}for(const[f,l]of a)a.set(f,i(l,s));return e(a)}(t,0)}function sA(t,e){return Array.from(e,n=>t[n])}function aA(t,...e){if(typeof t[Symbol.iterator]!="function")throw new TypeError("values is not iterable");t=Array.from(t);let[n=jn]=e;if(n.length===1||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 s of e){const a=jn(s[i],s[o]);if(a)return a}})):(n=t.map(n),r.sort((i,o)=>jn(n[i],n[o]))),sA(t,r)}return t.sort(n)}var da=Math.sqrt(50),ha=Math.sqrt(10),pa=Math.sqrt(2);function ga(t,e,n){var r,i=-1,o,s,a;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(a=Af(t,e,n))===0||!isFinite(a))return[];if(a>0){let c=Math.round(t/a),u=Math.round(e/a);for(c*a<t&&++c,u*a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)*a}else{a=-a;let c=Math.round(t*a),u=Math.round(e*a);for(c/a<t&&++c,u/a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)/a}return r&&s.reverse(),s}function Af(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>=da?10:o>=ha?5:o>=pa?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=da?10:o>=ha?5:o>=pa?2:1)}function ho(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>=da?i*=10:o>=ha?i*=5:o>=pa&&(i*=2),e<t?-i:i}function bf(t,e,n=gf){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),s=+n(t[o],o,t),a=+n(t[o+1],o+1,t);return s+(a-s)*(i-o)}}function po(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 cA(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function go(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 Gn(t){return t=go(Math.abs(t)),t?t[1]:NaN}function uA(t,e){return function(n,r){for(var i=n.length,o=[],s=0,a=t[0],c=0;i>0&&a>0&&(c+a+1>r&&(a=Math.max(1,r-c)),o.push(n.substring(i-=a,i+a)),!((c+=a+1)>r));)a=t[s=(s+1)%t.length];return o.reverse().join(e)}}function lA(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var fA=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Hn(t){if(!(e=fA.exec(t)))throw new Error("invalid format: "+t);var e;return new ma({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]})}Hn.prototype=ma.prototype;function ma(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+""}ma.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 dA(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 xf;function hA(t,e){var n=go(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(xf=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=r.length;return o===s?r:o>s?r+new Array(o-s+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+go(t,Math.max(0,e+o-1))[0]}function vf(t,e){var n=go(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")}var wf={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:cA,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)=>vf(t*100,e),r:vf,s:hA,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Ef(t){return t}var Sf=Array.prototype.map,Cf=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function pA(t){var e=t.grouping===void 0||t.thousands===void 0?Ef:uA(Sf.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?Ef:lA(Sf.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"\u2212":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=Hn(l);var d=l.fill,h=l.align,p=l.sign,g=l.symbol,m=l.zero,y=l.width,x=l.comma,v=l.precision,S=l.trim,b=l.type;b==="n"?(x=!0,b="g"):wf[b]||(v===void 0&&(v=12),S=!0,b="g"),(m||d==="0"&&h==="=")&&(m=!0,d="0",h="=");var A=g==="$"?n:g==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",w=g==="$"?r:/[%p]/.test(b)?s:"",E=wf[b],B=/[defgprs%]/.test(b);v=v===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v));function O(D){var k=A,z=w,G,ue,Ae;if(b==="c")z=E(D)+z,D="";else{D=+D;var He=D<0||1/D<0;if(D=isNaN(D)?c:E(Math.abs(D),v),S&&(D=dA(D)),He&&+D==0&&p!=="+"&&(He=!1),k=(He?p==="("?p:a:p==="-"||p==="("?"":p)+k,z=(b==="s"?Cf[8+xf/3]:"")+z+(He&&p==="("?")":""),B){for(G=-1,ue=D.length;++G<ue;)if(Ae=D.charCodeAt(G),48>Ae||Ae>57){z=(Ae===46?i+D.slice(G+1):D.slice(G))+z,D=D.slice(0,G);break}}}x&&!m&&(D=e(D,1/0));var U=k.length+D.length+z.length,ie=U<y?new Array(y-U+1).join(d):"";switch(x&&m&&(D=e(ie+D,ie.length?y-z.length:1/0),ie=""),h){case"<":D=k+D+z+ie;break;case"=":D=k+ie+D+z;break;case"^":D=ie.slice(0,U=ie.length>>1)+k+D+z+ie.slice(U);break;default:D=ie+k+D+z;break}return o(D)}return O.toString=function(){return l+""},O}function f(l,d){var h=u((l=Hn(l),l.type="f",l)),p=Math.max(-8,Math.min(8,Math.floor(Gn(d)/3)))*3,g=Math.pow(10,-p),m=Cf[8+p/3];return function(y){return h(g*y)+m}}return{format:u,formatPrefix:f}}var mo,Qn,ya;gA({thousands:",",grouping:[3],currency:["$",""]});function gA(t){return mo=pA(t),Qn=mo.format,ya=mo.formatPrefix,mo}function Df(t){return Math.max(0,-Gn(Math.abs(t)))}function Mf(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Gn(e)/3)))*3-Gn(Math.abs(t)))}function If(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Gn(e)-Gn(t))+1}var Aa=new Date,ba=new Date;function de(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 s=i(o),a=i.ceil(o);return o-s<a-o?s:a},i.offset=function(o,s){return e(o=new Date(+o),s==null?1:Math.floor(s)),o},i.range=function(o,s,a){var c=[],u;if(o=i.ceil(o),a=a==null?1:Math.floor(a),!(o<s)||!(a>0))return c;do c.push(u=new Date(+o)),e(o,a),t(o);while(u<o&&o<s);return c},i.filter=function(o){return de(function(s){if(s>=s)for(;t(s),!o(s);)s.setTime(s-1)},function(s,a){if(s>=s)if(a<0)for(;++a<=0;)for(;e(s,-1),!o(s););else for(;--a>=0;)for(;e(s,1),!o(s););})},n&&(i.count=function(o,s){return Aa.setTime(+o),ba.setTime(+s),t(Aa),t(ba),Math.floor(n(Aa,ba))},i.every=function(o){return o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?function(s){return r(s)%o===0}:function(s){return i.count(0,s)%o===0}):i}),i}var xa=de(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});xa.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?de(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):xa};var va=xa;const St=1e3,We=St*60,Ct=We*60,pn=Ct*24,wa=pn*7,Tf=pn*30,Ea=pn*365;var mA=de(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*St)},function(t,e){return(e-t)/St},function(t){return t.getUTCSeconds()}),jt=mA,yA=de(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*St)},function(t,e){t.setTime(+t+e*We)},function(t,e){return(e-t)/We},function(t){return t.getMinutes()}),Sa=yA,AA=de(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*St-t.getMinutes()*We)},function(t,e){t.setTime(+t+e*Ct)},function(t,e){return(e-t)/Ct},function(t){return t.getHours()}),Ca=AA,bA=de(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*We)/pn,t=>t.getDate()-1),gn=bA;function mn(t){return de(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)/wa})}var yo=mn(0),Da=mn(1);mn(2),mn(3);var Or=mn(4);mn(5),mn(6);var xA=de(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()}),Ao=xA,Nf=de(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()});Nf.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:de(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)})};var Gt=Nf,vA=de(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()}),Ma=vA,wA=de(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*Ct)},function(t,e){return(e-t)/Ct},function(t){return t.getUTCHours()}),Ia=wA,EA=de(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/pn},function(t){return t.getUTCDate()-1}),yn=EA;function An(t){return de(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)/wa})}var bo=An(0),Ta=An(1);An(2),An(3);var Br=An(4);An(5),An(6);var SA=de(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()}),xo=SA,Lf=de(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()});Lf.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:de(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)})};var Ht=Lf;function kf(t,e,n,r,i,o){const s=[[jt,1,St],[jt,5,5*St],[jt,15,15*St],[jt,30,30*St],[o,1,We],[o,5,5*We],[o,15,15*We],[o,30,30*We],[i,1,Ct],[i,3,3*Ct],[i,6,6*Ct],[i,12,12*Ct],[r,1,pn],[r,2,2*pn],[n,1,wa],[e,1,Tf],[e,3,3*Tf],[t,1,Ea]];function a(u,f,l){const d=f<u;d&&([u,f]=[f,u]);const h=l&&typeof l.range=="function"?l:c(u,f,l),p=h?h.range(u,+f+1):[];return d?p.reverse():p}function c(u,f,l){const d=Math.abs(f-u)/l,h=la(([,,m])=>m).right(s,d);if(h===s.length)return t.every(ho(u/Ea,f/Ea,l));if(h===0)return va.every(Math.max(ho(u,f,l),1));const[p,g]=s[d/s[h-1][2]<s[h][2]/d?h-1:h];return p.every(g)}return[a,c]}const[CA,DA]=kf(Ht,xo,bo,yn,Ia,Ma),[MA,IA]=kf(Gt,Ao,yo,gn,Ca,Sa),Pr="year",Fr="quarter",zr="month",Rr="week",Ur="date",vo="day",Na="dayofyear",jr="hours",Gr="minutes",Hr="seconds",wo="milliseconds";[Pr,Fr,zr,Rr,Ur,vo,Na,jr,Gr,Hr,wo].reduce((t,e,n)=>(t[e]=1+n,t),{});const TA={[Pr]:Gt,[Fr]:Ao.every(3),[zr]:Ao,[Rr]:yo,[Ur]:gn,[vo]:gn,[Na]:gn,[jr]:Ca,[Gr]:Sa,[Hr]:jt,[wo]:va},NA={[Pr]:Ht,[Fr]:xo.every(3),[zr]:xo,[Rr]:bo,[Ur]:yn,[vo]:yn,[Na]:yn,[jr]:Ia,[Gr]:Ma,[Hr]:jt,[wo]:va};function LA(t){return TA[t]}function kA(t){return NA[t]}function La(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 ka(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 Qr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Of(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,s=t.shortDays,a=t.months,c=t.shortMonths,u=Vr(i),f=_r(i),l=Vr(o),d=_r(o),h=Vr(s),p=_r(s),g=Vr(a),m=_r(a),y=Vr(c),x=_r(c),v={a:He,A:U,b:ie,B:to,c:null,d:Uf,e:Uf,f:t2,g:f2,G:h2,H:JA,I:$A,j:e2,L:jf,m:n2,M:r2,p:no,q:ta,Q:Yf,s:Wf,S:i2,u:o2,U:s2,V:a2,w:c2,W:u2,x:null,X:null,y:l2,Y:d2,Z:p2,"%":_f},S={a:nf,A:pT,b:gT,B:mT,c:null,d:Hf,e:Hf,f:A2,g:I2,G:N2,H:g2,I:m2,j:y2,L:Qf,m:b2,M:x2,p:yT,q:AT,Q:Yf,s:Wf,S:v2,u:w2,U:E2,V:S2,w:C2,W:D2,x:null,X:null,y:M2,Y:T2,Z:L2,"%":_f},b={a:O,A:D,b:k,B:z,c:G,d:zf,e:zf,f:XA,g:Ff,G:Pf,H:Rf,I:Rf,j:VA,L:WA,m:QA,M:_A,p:B,q:HA,Q:ZA,s:KA,S:YA,u:zA,U:RA,V:UA,w:FA,W:jA,x:ue,X:Ae,y:Ff,Y:Pf,Z:GA,"%":qA};v.x=A(n,v),v.X=A(r,v),v.c=A(e,v),S.x=A(n,S),S.X=A(r,S),S.c=A(e,S);function A(L,j){return function(V){var I=[],Fe=-1,K=0,Qe=L.length,Ve,Un,fy;for(V instanceof Date||(V=new Date(+V));++Fe<Qe;)L.charCodeAt(Fe)===37&&(I.push(L.slice(K,Fe)),(Un=Bf[Ve=L.charAt(++Fe)])!=null?Ve=L.charAt(++Fe):Un=Ve==="e"?" ":"0",(fy=j[Ve])&&(Ve=fy(V,Un)),I.push(Ve),K=Fe+1);return I.push(L.slice(K,Fe)),I.join("")}}function w(L,j){return function(V){var I=Qr(1900,void 0,1),Fe=E(I,L,V+="",0),K,Qe;if(Fe!=V.length)return null;if("Q"in I)return new Date(I.Q);if("s"in I)return new Date(I.s*1e3+("L"in I?I.L:0));if(j&&!("Z"in I)&&(I.Z=0),"p"in I&&(I.H=I.H%12+I.p*12),I.m===void 0&&(I.m="q"in I?I.q:0),"V"in I){if(I.V<1||I.V>53)return null;"w"in I||(I.w=1),"Z"in I?(K=ka(Qr(I.y,0,1)),Qe=K.getUTCDay(),K=Qe>4||Qe===0?Ta.ceil(K):Ta(K),K=yn.offset(K,(I.V-1)*7),I.y=K.getUTCFullYear(),I.m=K.getUTCMonth(),I.d=K.getUTCDate()+(I.w+6)%7):(K=La(Qr(I.y,0,1)),Qe=K.getDay(),K=Qe>4||Qe===0?Da.ceil(K):Da(K),K=gn.offset(K,(I.V-1)*7),I.y=K.getFullYear(),I.m=K.getMonth(),I.d=K.getDate()+(I.w+6)%7)}else("W"in I||"U"in I)&&("w"in I||(I.w="u"in I?I.u%7:"W"in I?1:0),Qe="Z"in I?ka(Qr(I.y,0,1)).getUTCDay():La(Qr(I.y,0,1)).getDay(),I.m=0,I.d="W"in I?(I.w+6)%7+I.W*7-(Qe+5)%7:I.w+I.U*7-(Qe+6)%7);return"Z"in I?(I.H+=I.Z/100|0,I.M+=I.Z%100,ka(I)):La(I)}}function E(L,j,V,I){for(var Fe=0,K=j.length,Qe=V.length,Ve,Un;Fe<K;){if(I>=Qe)return-1;if(Ve=j.charCodeAt(Fe++),Ve===37){if(Ve=j.charAt(Fe++),Un=b[Ve in Bf?j.charAt(Fe++):Ve],!Un||(I=Un(L,V,I))<0)return-1}else if(Ve!=V.charCodeAt(I++))return-1}return I}function B(L,j,V){var I=u.exec(j.slice(V));return I?(L.p=f.get(I[0].toLowerCase()),V+I[0].length):-1}function O(L,j,V){var I=h.exec(j.slice(V));return I?(L.w=p.get(I[0].toLowerCase()),V+I[0].length):-1}function D(L,j,V){var I=l.exec(j.slice(V));return I?(L.w=d.get(I[0].toLowerCase()),V+I[0].length):-1}function k(L,j,V){var I=y.exec(j.slice(V));return I?(L.m=x.get(I[0].toLowerCase()),V+I[0].length):-1}function z(L,j,V){var I=g.exec(j.slice(V));return I?(L.m=m.get(I[0].toLowerCase()),V+I[0].length):-1}function G(L,j,V){return E(L,e,j,V)}function ue(L,j,V){return E(L,n,j,V)}function Ae(L,j,V){return E(L,r,j,V)}function He(L){return s[L.getDay()]}function U(L){return o[L.getDay()]}function ie(L){return c[L.getMonth()]}function to(L){return a[L.getMonth()]}function no(L){return i[+(L.getHours()>=12)]}function ta(L){return 1+~~(L.getMonth()/3)}function nf(L){return s[L.getUTCDay()]}function pT(L){return o[L.getUTCDay()]}function gT(L){return c[L.getUTCMonth()]}function mT(L){return a[L.getUTCMonth()]}function yT(L){return i[+(L.getUTCHours()>=12)]}function AT(L){return 1+~~(L.getUTCMonth()/3)}return{format:function(L){var j=A(L+="",v);return j.toString=function(){return L},j},parse:function(L){var j=w(L+="",!1);return j.toString=function(){return L},j},utcFormat:function(L){var j=A(L+="",S);return j.toString=function(){return L},j},utcParse:function(L){var j=w(L+="",!0);return j.toString=function(){return L},j}}}var Bf={"-":"",_:" ","0":"0"},he=/^\s*\d+/,OA=/^%/,BA=/[\\^$*+?|[\]().{}]/g;function H(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 PA(t){return t.replace(BA,"\\$&")}function Vr(t){return new RegExp("^(?:"+t.map(PA).join("|")+")","i")}function _r(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function FA(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function zA(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function RA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function UA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function jA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Pf(t,e,n){var r=he.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Ff(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function GA(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 HA(t,e,n){var r=he.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function QA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function zf(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function VA(t,e,n){var r=he.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Rf(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function _A(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function YA(t,e,n){var r=he.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function WA(t,e,n){var r=he.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function XA(t,e,n){var r=he.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function qA(t,e,n){var r=OA.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function ZA(t,e,n){var r=he.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function KA(t,e,n){var r=he.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Uf(t,e){return H(t.getDate(),e,2)}function JA(t,e){return H(t.getHours(),e,2)}function $A(t,e){return H(t.getHours()%12||12,e,2)}function e2(t,e){return H(1+gn.count(Gt(t),t),e,3)}function jf(t,e){return H(t.getMilliseconds(),e,3)}function t2(t,e){return jf(t,e)+"000"}function n2(t,e){return H(t.getMonth()+1,e,2)}function r2(t,e){return H(t.getMinutes(),e,2)}function i2(t,e){return H(t.getSeconds(),e,2)}function o2(t){var e=t.getDay();return e===0?7:e}function s2(t,e){return H(yo.count(Gt(t)-1,t),e,2)}function Gf(t){var e=t.getDay();return e>=4||e===0?Or(t):Or.ceil(t)}function a2(t,e){return t=Gf(t),H(Or.count(Gt(t),t)+(Gt(t).getDay()===4),e,2)}function c2(t){return t.getDay()}function u2(t,e){return H(Da.count(Gt(t)-1,t),e,2)}function l2(t,e){return H(t.getFullYear()%100,e,2)}function f2(t,e){return t=Gf(t),H(t.getFullYear()%100,e,2)}function d2(t,e){return H(t.getFullYear()%1e4,e,4)}function h2(t,e){var n=t.getDay();return t=n>=4||n===0?Or(t):Or.ceil(t),H(t.getFullYear()%1e4,e,4)}function p2(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+H(e/60|0,"0",2)+H(e%60,"0",2)}function Hf(t,e){return H(t.getUTCDate(),e,2)}function g2(t,e){return H(t.getUTCHours(),e,2)}function m2(t,e){return H(t.getUTCHours()%12||12,e,2)}function y2(t,e){return H(1+yn.count(Ht(t),t),e,3)}function Qf(t,e){return H(t.getUTCMilliseconds(),e,3)}function A2(t,e){return Qf(t,e)+"000"}function b2(t,e){return H(t.getUTCMonth()+1,e,2)}function x2(t,e){return H(t.getUTCMinutes(),e,2)}function v2(t,e){return H(t.getUTCSeconds(),e,2)}function w2(t){var e=t.getUTCDay();return e===0?7:e}function E2(t,e){return H(bo.count(Ht(t)-1,t),e,2)}function Vf(t){var e=t.getUTCDay();return e>=4||e===0?Br(t):Br.ceil(t)}function S2(t,e){return t=Vf(t),H(Br.count(Ht(t),t)+(Ht(t).getUTCDay()===4),e,2)}function C2(t){return t.getUTCDay()}function D2(t,e){return H(Ta.count(Ht(t)-1,t),e,2)}function M2(t,e){return H(t.getUTCFullYear()%100,e,2)}function I2(t,e){return t=Vf(t),H(t.getUTCFullYear()%100,e,2)}function T2(t,e){return H(t.getUTCFullYear()%1e4,e,4)}function N2(t,e){var n=t.getUTCDay();return t=n>=4||n===0?Br(t):Br.ceil(t),H(t.getUTCFullYear()%1e4,e,4)}function L2(){return"+0000"}function _f(){return"%"}function Yf(t){return+t}function Wf(t){return Math.floor(+t/1e3)}var Vn,Oa,Xf,Ba,qf;k2({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 k2(t){return Vn=Of(t),Oa=Vn.format,Xf=Vn.parse,Ba=Vn.utcFormat,qf=Vn.utcParse,Vn}function Yr(t){const e={};return n=>e[n]||(e[n]=t(n))}function O2(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=B2(r,i);const s=o<r.length?r.slice(o):"";for(;--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function B2(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 P2(t){const e=Yr(t.format),n=t.formatPrefix;return{format:e,formatPrefix:n,formatFloat(r){const i=Hn(r||",");if(i.precision==null){switch(i.precision=12,i.type){case"%":i.precision-=2;break;case"e":i.precision-=1;break}return O2(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,s){s=Hn(s==null?",f":s);const a=ho(r,i,o),c=Math.max(Math.abs(r),Math.abs(i));let u;if(s.precision==null)switch(s.type){case"s":return isNaN(u=Mf(a,c))||(s.precision=u),n(s,c);case"":case"e":case"g":case"p":case"r":{isNaN(u=If(a,c))||(s.precision=u-(s.type==="e"));break}case"f":case"%":{isNaN(u=Df(a))||(s.precision=u-(s.type==="%")*2);break}}return e(s)}}}F2();function F2(){return P2({format:Qn,formatPrefix:ya})}function Zf(t,e,n){n=n||{},ze(n)||re("Invalid time multi-format specifier: ".concat(n));const r=e(Hr),i=e(Gr),o=e(jr),s=e(Ur),a=e(Rr),c=e(zr),u=e(Fr),f=e(Pr),l=t(n[wo]||".%L"),d=t(n[Hr]||":%S"),h=t(n[Gr]||"%I:%M"),p=t(n[jr]||"%I %p"),g=t(n[Ur]||n[vo]||"%a %d"),m=t(n[Rr]||"%b %d"),y=t(n[zr]||"%B"),x=t(n[Fr]||"%B"),v=t(n[Pr]||"%Y");return S=>(r(S)<S?l:i(S)<S?d:o(S)<S?h:s(S)<S?p:c(S)<S?a(S)<S?g:m:f(S)<S?u(S)<S?y:x:v)(S)}function Kf(t){const e=Yr(t.format),n=Yr(t.utcFormat);return{timeFormat:r=>oe(r)?e(r):Zf(e,LA,r),utcFormat:r=>oe(r)?n(r):Zf(n,kA,r),timeParse:Yr(t.parse),utcParse:Yr(t.utcParse)}}let Pa;z2();function z2(){return Pa=Kf({format:Oa,parse:Xf,utcFormat:Ba,utcParse:qf})}function R2(t){return Kf(Of(t))}function U2(t){return arguments.length?Pa=R2(t):Pa}const j2=/^(data:|([A-Za-z]+:)?\/\/)/,G2=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,H2=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Jf="file://";function Q2(t,e){return n=>({options:n||{},sanitize:_2,load:V2,fileAccess:!!e,file:Y2(e),http:X2(t)})}async function V2(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function _2(t,e){e=sa({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,s;const a=G2.test(t.replace(H2,""));(t==null||typeof t!="string"||!a)&&re("Sanitize failure, invalid URI: "+lo(t));const c=j2.test(t);return(s=e.baseURL)&&!c&&(!t.startsWith("/")&&!s.endsWith("/")&&(t="/"+t),t=s+t),o=(i=t.startsWith(Jf))||e.mode==="file"||e.mode!=="http"&&!c&&n,i?t=t.slice(Jf.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 Y2(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):W2}async function W2(){re("No file system access.")}function X2(t){return t?async function(e,n){const r=sa({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?Te(o[i])?o[i]():o.text():re(o.status+""+o.statusText)}:q2}async function q2(){re("No HTTP fetch method available.")}const Z2=t=>t!=null&&t===t,K2=t=>t==="true"||t==="false"||t===!0||t===!1,J2=t=>!Number.isNaN(Date.parse(t)),$f=t=>!Number.isNaN(+t)&&!(t instanceof Date),$2=t=>$f(t)&&Number.isInteger(+t),ed={boolean:Fy,integer:Nr,number:Nr,date:Ry,string:Uy,unknown:io},Eo=[K2,$2,$f,J2],eb=["boolean","integer","number","date"];function td(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=Eo.length,i=Eo.map((o,s)=>s+1);for(let o=0,s=0,a,c;o<n;++o)for(c=e?t[o][e]:t[o],a=0;a<r;++a)if(i[a]&&Z2(c)&&!Eo[a](c)&&(i[a]=0,++s,s===Eo.length))return"string";return eb[i.reduce((o,s)=>o===0?s:o,0)-1]}function tb(t,e){return e.reduce((n,r)=>(n[r]=td(t,r),n),{})}function nd(t){const e=function(n,r){const i={delimiter:t};return Fa(n,r?sa(r,i):i)};return e.responseType="text",e}function Fa(t,e){return e.header&&(t=e.header.map(lo).join(e.delimiter)+`
6
- `+t),df(e.delimiter).parse(t+"")}Fa.responseType="text";function nb(t){return typeof Buffer=="function"&&Te(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function za(t,e){const n=e&&e.property?ro(e.property):io;return ze(t)&&!nb(t)?rb(n(t),e):n(JSON.parse(t))}za.responseType="json";function rb(t,e){return!Ye(t)&&By(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const ib={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function rd(t,e){let n,r,i,o;return t=za(t,e),e&&e.feature?(n=Xy,i=e.feature):e&&e.mesh?(n=Zy,i=e.mesh,o=ib[e.filter]):re("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):re("Invalid TopoJSON object: "+i),r&&r.features||[r]}rd.responseType="json";const Ra={dsv:Fa,csv:nd(","),tsv:nd(" "),json:za,topojson:rd};function id(t,e){return arguments.length>1?(Ra[t]=e,this):hn(Ra,t)?Ra[t]:null}function od(t,e,n,r){e=e||{};const i=id(e.type||"json");return i||re("Unknown data format type: "+e.type),t=i(t,e),e.parse&&ob(t,e.parse,n,r),hn(t,"columns")&&delete t.columns,t}function ob(t,e,n,r){if(!t.length)return;const i=U2();n=n||i.timeParse,r=r||i.utcParse;let o=t.columns||Object.keys(t[0]),s,a,c,u,f,l;e==="auto"&&(e=tb(t,o)),o=Object.keys(e);const d=o.map(h=>{const p=e[h];let g,m;if(p&&(p.startsWith("date:")||p.startsWith("utc:")))return g=p.split(/:(.+)?/,2),m=g[1],(m[0]==="'"&&m[m.length-1]==="'"||m[0]==='"'&&m[m.length-1]==='"')&&(m=m.slice(1,-1)),(g[0]==="utc"?r:n)(m);if(!ed[p])throw Error("Illegal format pattern: "+h+":"+p);return ed[p]});for(c=0,f=t.length,l=o.length;c<f;++c)for(s=t[c],u=0;u<l;++u)a=o[u],s[a]=d[u](s[a])}const Wr=Q2(typeof fetch!="undefined"&&fetch,null);function Ua(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function So(t){let e=t,n=t,r=t;t.length!==2&&(e=(a,c)=>t(a)-c,n=Ua,r=(a,c)=>Ua(t(a),c));function i(a,c,u=0,f=a.length){if(u<f){if(n(c,c)!==0)return f;do{const l=u+f>>>1;r(a[l],c)<0?u=l+1:f=l}while(u<f)}return u}function o(a,c,u=0,f=a.length){if(u<f){if(n(c,c)!==0)return f;do{const l=u+f>>>1;r(a[l],c)<=0?u=l+1:f=l}while(u<f)}return u}function s(a,c,u=0,f=a.length){const l=i(a,c,u,f-1);return l>u&&e(a[l-1],c)>-e(a[l],c)?l-1:l}return{left:i,center:s,right:o}}function sd(t){return t===null?NaN:+t}const ad=So(Ua),sb=ad.right;ad.left,So(sd).center;var ab=sb;function cb(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 Co extends Map{constructor(e,n=fb){super();if(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(cd(this,e))}has(e){return super.has(cd(this,e))}set(e,n){return super.set(ub(this,e),n)}delete(e){return super.delete(lb(this,e))}}function cd({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function ub({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function lb({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function fb(t){return t!==null&&typeof t=="object"?t.valueOf():t}function Do(t){return t}function Mo(t,...e){return ja(t,Do,Do,e)}function db(t,...e){return ja(t,Array.from,Do,e)}function hb(t,e,...n){return ja(t,Do,e,n)}function ja(t,e,n,r){return function i(o,s){if(s>=r.length)return n(o);const a=new Co,c=r[s++];let u=-1;for(const f of o){const l=c(f,++u,o),d=a.get(l);d?d.push(f):a.set(l,[f])}for(const[f,l]of a)a.set(f,i(l,s));return e(a)}(t,0)}var Ga=Math.sqrt(50),Ha=Math.sqrt(10),Qa=Math.sqrt(2);function pb(t,e,n){var r,i=-1,o,s,a;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((r=e<t)&&(o=t,t=e,e=o),(a=gb(t,e,n))===0||!isFinite(a))return[];if(a>0){let c=Math.round(t/a),u=Math.round(e/a);for(c*a<t&&++c,u*a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)*a}else{a=-a;let c=Math.round(t*a),u=Math.round(e*a);for(c/a<t&&++c,u/a>e&&--u,s=new Array(o=u-c+1);++i<o;)s[i]=(c+i)/a}return r&&s.reverse(),s}function gb(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>=Ga?10:o>=Ha?5:o>=Qa?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Ga?10:o>=Ha?5:o>=Qa?2:1)}function Va(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>=Ga?i*=10:o>=Ha?i*=5:o>=Qa&&(i*=2),e<t?-i:i}function mb(t,e,n=sd){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),s=+n(t[o],o,t),a=+n(t[o+1],o+1,t);return s+(a-s)*(i-o)}}function Io(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 To(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 yb(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function No(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 Ab(t){return t=No(Math.abs(t)),t?t[1]:NaN}function bb(t,e){return function(n,r){for(var i=n.length,o=[],s=0,a=t[0],c=0;i>0&&a>0&&(c+a+1>r&&(a=Math.max(1,r-c)),o.push(n.substring(i-=a,i+a)),!((c+=a+1)>r));)a=t[s=(s+1)%t.length];return o.reverse().join(e)}}function xb(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var vb=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Lo(t){if(!(e=vb.exec(t)))throw new Error("invalid format: "+t);var e;return new _a({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]})}Lo.prototype=_a.prototype;function _a(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+""}_a.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 wb(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 ud;function Eb(t,e){var n=No(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(ud=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=r.length;return o===s?r:o>s?r+new Array(o-s+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+No(t,Math.max(0,e+o-1))[0]}function ld(t,e){var n=No(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")}var fd={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:yb,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)=>ld(t*100,e),r:ld,s:Eb,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function dd(t){return t}var hd=Array.prototype.map,pd=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Sb(t){var e=t.grouping===void 0||t.thousands===void 0?dd:bb(hd.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?dd:xb(hd.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",a=t.minus===void 0?"\u2212":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=Lo(l);var d=l.fill,h=l.align,p=l.sign,g=l.symbol,m=l.zero,y=l.width,x=l.comma,v=l.precision,S=l.trim,b=l.type;b==="n"?(x=!0,b="g"):fd[b]||(v===void 0&&(v=12),S=!0,b="g"),(m||d==="0"&&h==="=")&&(m=!0,d="0",h="=");var A=g==="$"?n:g==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",w=g==="$"?r:/[%p]/.test(b)?s:"",E=fd[b],B=/[defgprs%]/.test(b);v=v===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v));function O(D){var k=A,z=w,G,ue,Ae;if(b==="c")z=E(D)+z,D="";else{D=+D;var He=D<0||1/D<0;if(D=isNaN(D)?c:E(Math.abs(D),v),S&&(D=wb(D)),He&&+D==0&&p!=="+"&&(He=!1),k=(He?p==="("?p:a:p==="-"||p==="("?"":p)+k,z=(b==="s"?pd[8+ud/3]:"")+z+(He&&p==="("?")":""),B){for(G=-1,ue=D.length;++G<ue;)if(Ae=D.charCodeAt(G),48>Ae||Ae>57){z=(Ae===46?i+D.slice(G+1):D.slice(G))+z,D=D.slice(0,G);break}}}x&&!m&&(D=e(D,1/0));var U=k.length+D.length+z.length,ie=U<y?new Array(y-U+1).join(d):"";switch(x&&m&&(D=e(ie+D,ie.length?y-z.length:1/0),ie=""),h){case"<":D=k+D+z+ie;break;case"=":D=k+ie+D+z;break;case"^":D=ie.slice(0,U=ie.length>>1)+k+D+z+ie.slice(U);break;default:D=ie+k+D+z;break}return o(D)}return O.toString=function(){return l+""},O}function f(l,d){var h=u((l=Lo(l),l.type="f",l)),p=Math.max(-8,Math.min(8,Math.floor(Ab(d)/3)))*3,g=Math.pow(10,-p),m=pd[8+p/3];return function(y){return h(g*y)+m}}return{format:u,formatPrefix:f}}var Ya,Le;Cb({thousands:",",grouping:[3],currency:["$",""]});function Cb(t){return Ya=Sb(t),Le=Ya.format,Ya}const gd=1;function Wa(){let t=[0,1],e=[0,1],n=1,r=1,i=0,o=0,s=.5,a=0;const u=f=>(f-t[0])/n*r+e[0];return u.invert=f=>(f-e[0])/r*n+t[0],u.domain=function(f){if(arguments.length){if(t=cb(f),n=t[1]-t[0],n<gd){n=gd;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?(a=f,u):a},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?(s=Math.max(0,Math.min(1,f)),u):s},u.step=()=>r/n,u.bandwidth=()=>u.step(),u.ticks=f=>{const l=u.align(),d=u.numberingOffset();return pb(t[0]-l+d,t[1]-l+d,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(h=>h-a)},u.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const h=Va(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?Le(","):Le(".3s");return p=>h(p+a)},u.copy=()=>Wa().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(a),u}function Db(){const t=Wa().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(),[s,a]=[Math.max(i[0],0),Math.min(i[1],e.totalSize-1)].map(f=>e.toChromosome(f)),c=Math.max(1,Va(i[0],i[1],r)),u=[];for(let f=s.index;f<=a.index;f++){const l=e.chromosomes[f],d=Math.max(l.continuousStart+c,i[0]-(i[0]-l.continuousStart)%c),h=Math.min(l.continuousEnd-c/4,i[1]+1);for(let p=d;p<=h;p+=c){const g=p-o;g>=i[0]&&g<i[1]&&u.push(g)}}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(),s=o[1]-o[0],a=t.numberingOffset(),u=Va(o[0],o[1],Math.min(r,Math.ceil(s)))<1e6?Le(","):Le(".3s"),f=l=>l-e.toChromosome(l).continuousStart;return l=>u(f(l)+a)};const n=t.copy;return t.copy=()=>n().genome(e),t}function Mb(t){return t.type=="locus"}function ct(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function Qt(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 Xa=Symbol("implicit");function qa(){var t=new Map,e=[],n=[],r=Xa;function i(o){var s=o+"",a=t.get(s);if(!a){if(r!==Xa)return r;t.set(s,a=e.push(o))}return n[(a-1)%n.length]}return i.domain=function(o){if(!arguments.length)return e.slice();e=[],t=new Map;for(const s of o){const a=s+"";t.has(a)||t.set(a,e.push(s))}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 qa(e,n).unknown(r)},ct.apply(i,arguments),i}function _n(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Xr(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Vt(){}var bn=.7,Yn=1/bn,Wn="\\s*([+-]?\\d+)\\s*",qr="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",ut="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Ib=/^#([0-9a-f]{3,8})$/,Tb=new RegExp("^rgb\\("+[Wn,Wn,Wn]+"\\)$"),Nb=new RegExp("^rgb\\("+[ut,ut,ut]+"\\)$"),Lb=new RegExp("^rgba\\("+[Wn,Wn,Wn,qr]+"\\)$"),kb=new RegExp("^rgba\\("+[ut,ut,ut,qr]+"\\)$"),Ob=new RegExp("^hsl\\("+[qr,ut,ut]+"\\)$"),Bb=new RegExp("^hsla\\("+[qr,ut,ut,qr]+"\\)$"),md={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};_n(Vt,Zr,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:yd,formatHex:yd,formatHsl:Pb,formatRgb:Ad,toString:Ad});function yd(){return this.rgb().formatHex()}function Pb(){return Ed(this).formatHsl()}function Ad(){return this.rgb().formatRgb()}function Zr(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Ib.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?bd(e):n===3?new me(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?ko(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?ko(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=Tb.exec(t))?new me(e[1],e[2],e[3],1):(e=Nb.exec(t))?new me(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Lb.exec(t))?ko(e[1],e[2],e[3],e[4]):(e=kb.exec(t))?ko(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Ob.exec(t))?wd(e[1],e[2]/100,e[3]/100,1):(e=Bb.exec(t))?wd(e[1],e[2]/100,e[3]/100,e[4]):md.hasOwnProperty(t)?bd(md[t]):t==="transparent"?new me(NaN,NaN,NaN,0):null}function bd(t){return new me(t>>16&255,t>>8&255,t&255,1)}function ko(t,e,n,r){return r<=0&&(t=e=n=NaN),new me(t,e,n,r)}function Za(t){return t instanceof Vt||(t=Zr(t)),t?(t=t.rgb(),new me(t.r,t.g,t.b,t.opacity)):new me}function Oo(t,e,n,r){return arguments.length===1?Za(t):new me(t,e,n,r==null?1:r)}function me(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}_n(me,Oo,Xr(Vt,{brighter:function(t){return t=t==null?Yn:Math.pow(Yn,t),new me(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=t==null?bn:Math.pow(bn,t),new me(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){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:xd,formatHex:xd,formatRgb:vd,toString:vd}));function xd(){return"#"+Ka(this.r)+Ka(this.g)+Ka(this.b)}function vd(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(t===1?")":", "+t+")")}function Ka(t){return t=Math.max(0,Math.min(255,Math.round(t)||0)),(t<16?"0":"")+t.toString(16)}function wd(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new lt(t,e,n,r)}function Ed(t){if(t instanceof lt)return new lt(t.h,t.s,t.l,t.opacity);if(t instanceof Vt||(t=Zr(t)),!t)return new lt;if(t instanceof lt)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),s=NaN,a=o-i,c=(o+i)/2;return a?(e===o?s=(n-r)/a+(n<r)*6:n===o?s=(r-e)/a+2:s=(e-n)/a+4,a/=c<.5?o+i:2-o-i,s*=60):a=c>0&&c<1?0:s,new lt(s,a,c,t.opacity)}function Ja(t,e,n,r){return arguments.length===1?Ed(t):new lt(t,e,n,r==null?1:r)}function lt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}_n(lt,Ja,Xr(Vt,{brighter:function(t){return t=t==null?Yn:Math.pow(Yn,t),new lt(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?bn:Math.pow(bn,t),new lt(this.h,this.s,this.l*t,this.opacity)},rgb:function(){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 me($a(t>=240?t-240:t+120,i,r),$a(t,i,r),$a(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"hsl(":"hsla(")+(this.h||0)+", "+(this.s||0)*100+"%, "+(this.l||0)*100+"%"+(t===1?")":", "+t+")")}}));function $a(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 Sd=Math.PI/180,Cd=180/Math.PI,Bo=18,Dd=.96422,Md=1,Id=.82521,Td=4/29,Xn=6/29,Nd=3*Xn*Xn,Fb=Xn*Xn*Xn;function Ld(t){if(t instanceof ft)return new ft(t.l,t.a,t.b,t.opacity);if(t instanceof Dt)return kd(t);t instanceof me||(t=Za(t));var e=ic(t.r),n=ic(t.g),r=ic(t.b),i=tc((.2225045*e+.7168786*n+.0606169*r)/Md),o,s;return e===n&&n===r?o=s=i:(o=tc((.4360747*e+.3850649*n+.1430804*r)/Dd),s=tc((.0139322*e+.0971045*n+.7141733*r)/Id)),new ft(116*i-16,500*(o-i),200*(i-s),t.opacity)}function ec(t,e,n,r){return arguments.length===1?Ld(t):new ft(t,e,n,r==null?1:r)}function ft(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}_n(ft,ec,Xr(Vt,{brighter:function(t){return new ft(this.l+Bo*(t==null?1:t),this.a,this.b,this.opacity)},darker:function(t){return new ft(this.l-Bo*(t==null?1:t),this.a,this.b,this.opacity)},rgb:function(){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=Dd*nc(e),t=Md*nc(t),n=Id*nc(n),new me(rc(3.1338561*e-1.6168667*t-.4906146*n),rc(-.9787684*e+1.9161415*t+.033454*n),rc(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function tc(t){return t>Fb?Math.pow(t,1/3):t/Nd+Td}function nc(t){return t>Xn?t*t*t:Nd*(t-Td)}function rc(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function ic(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function zb(t){if(t instanceof Dt)return new Dt(t.h,t.c,t.l,t.opacity);if(t instanceof ft||(t=Ld(t)),t.a===0&&t.b===0)return new Dt(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Cd;return new Dt(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function oc(t,e,n,r){return arguments.length===1?zb(t):new Dt(t,e,n,r==null?1:r)}function Dt(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function kd(t){if(isNaN(t.h))return new ft(t.l,0,0,t.opacity);var e=t.h*Sd;return new ft(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}_n(Dt,oc,Xr(Vt,{brighter:function(t){return new Dt(this.h,this.c,this.l+Bo*(t==null?1:t),this.opacity)},darker:function(t){return new Dt(this.h,this.c,this.l-Bo*(t==null?1:t),this.opacity)},rgb:function(){return kd(this).rgb()}}));var Od=-.14861,sc=1.78277,ac=-.29227,Po=-.90649,Kr=1.97294,Bd=Kr*Po,Pd=Kr*sc,Fd=sc*ac-Po*Od;function Rb(t){if(t instanceof xn)return new xn(t.h,t.s,t.l,t.opacity);t instanceof me||(t=Za(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(Fd*r+Bd*e-Pd*n)/(Fd+Bd-Pd),o=r-i,s=(Kr*(n-i)-ac*o)/Po,a=Math.sqrt(s*s+o*o)/(Kr*i*(1-i)),c=a?Math.atan2(s,o)*Cd-120:NaN;return new xn(c<0?c+360:c,a,i,t.opacity)}function cc(t,e,n,r){return arguments.length===1?Rb(t):new xn(t,e,n,r==null?1:r)}function xn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}_n(xn,cc,Xr(Vt,{brighter:function(t){return t=t==null?Yn:Math.pow(Yn,t),new xn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?bn:Math.pow(bn,t),new xn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*Sd,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new me(255*(e+n*(Od*r+sc*i)),255*(e+n*(ac*r+Po*i)),255*(e+n*(Kr*r)),this.opacity)}}));function zd(t,e,n,r,i){var o=t*t,s=o*t;return((1-3*t+3*o-s)*e+(4-6*o+3*s)*n+(1+3*t+3*o-3*s)*r+s*i)/6}function Rd(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],s=r>0?t[r-1]:2*i-o,a=r<e-1?t[r+2]:2*o-i;return zd((n-r/e)*e,s,i,o,a)}}function Ud(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],s=t[(r+1)%e],a=t[(r+2)%e];return zd((n-r/e)*e,i,o,s,a)}}var Fo=t=>()=>t;function jd(t,e){return function(n){return t+n*e}}function Ub(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 zo(t,e){var n=e-t;return n?jd(t,n>180||n<-180?n-360*Math.round(n/360):n):Fo(isNaN(t)?e:t)}function jb(t){return(t=+t)==1?pe:function(e,n){return n-e?Ub(e,n,t):Fo(isNaN(e)?n:e)}}function pe(t,e){var n=e-t;return n?jd(t,n):Fo(isNaN(t)?e:t)}var uc=function t(e){var n=jb(e);function r(i,o){var s=n((i=Oo(i)).r,(o=Oo(o)).r),a=n(i.g,o.g),c=n(i.b,o.b),u=pe(i.opacity,o.opacity);return function(f){return i.r=s(f),i.g=a(f),i.b=c(f),i.opacity=u(f),i+""}}return r.gamma=t,r}(1);function Gd(t){return function(e){var n=e.length,r=new Array(n),i=new Array(n),o=new Array(n),s,a;for(s=0;s<n;++s)a=Oo(e[s]),r[s]=a.r||0,i[s]=a.g||0,o[s]=a.b||0;return r=t(r),i=t(i),o=t(o),a.opacity=1,function(c){return a.r=r(c),a.g=i(c),a.b=o(c),a+""}}}var Gb=Gd(Rd),Hb=Gd(Ud);function lc(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 Hd(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Qb(t,e){return(Hd(e)?lc:Qd)(t,e)}function Qd(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,i=new Array(r),o=new Array(n),s;for(s=0;s<r;++s)i[s]=_t(t[s],e[s]);for(;s<n;++s)o[s]=e[s];return function(a){for(s=0;s<r;++s)o[s]=i[s](a);return o}}function Vd(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function tt(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function _d(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 fc=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,dc=new RegExp(fc.source,"g");function Vb(t){return function(){return t}}function _b(t){return function(e){return t(e)+""}}function Yd(t,e){var n=fc.lastIndex=dc.lastIndex=0,r,i,o,s=-1,a=[],c=[];for(t=t+"",e=e+"";(r=fc.exec(t))&&(i=dc.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,c.push({i:s,x:tt(r,i)})),n=dc.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?c[0]?_b(c[0].x):Vb(e):(e=c.length,function(u){for(var f=0,l;f<e;++f)a[(l=c[f]).i]=l.x(u);return a.join("")})}function _t(t,e){var n=typeof e,r;return e==null||n==="boolean"?Fo(e):(n==="number"?tt:n==="string"?(r=Zr(e))?(e=r,uc):Yd:e instanceof Zr?uc:e instanceof Date?Vd:Hd(e)?lc:Array.isArray(e)?Qd:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?_d:tt)(t,e)}function Yb(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function Wb(t,e){var n=zo(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function Jr(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var Wd=180/Math.PI,hc={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Xd(t,e,n,r,i,o){var s,a,c;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,c/=a),t*r<e*n&&(t=-t,e=-e,c=-c,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*Wd,skewX:Math.atan(c)*Wd,scaleX:s,scaleY:a}}var Ro;function Xb(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?hc:Xd(e.a,e.b,e.c,e.d,e.e,e.f)}function qb(t){return t==null||(Ro||(Ro=document.createElementNS("http://www.w3.org/2000/svg","g")),Ro.setAttribute("transform",t),!(t=Ro.transform.baseVal.consolidate()))?hc:(t=t.matrix,Xd(t.a,t.b,t.c,t.d,t.e,t.f))}function qd(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function o(u,f,l,d,h,p){if(u!==l||f!==d){var g=h.push("translate(",null,e,null,n);p.push({i:g-4,x:tt(u,l)},{i:g-2,x:tt(f,d)})}else(l||d)&&h.push("translate("+l+e+d+n)}function s(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:tt(u,f)})):f&&l.push(i(l)+"rotate("+f+r)}function a(u,f,l,d){u!==f?d.push({i:l.push(i(l)+"skewX(",null,r)-2,x:tt(u,f)}):f&&l.push(i(l)+"skewX("+f+r)}function c(u,f,l,d,h,p){if(u!==l||f!==d){var g=h.push(i(h)+"scale(",null,",",null,")");p.push({i:g-4,x:tt(u,l)},{i:g-2,x:tt(f,d)})}else(l!==1||d!==1)&&h.push(i(h)+"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),s(u.rotate,f.rotate,l,d),a(u.skewX,f.skewX,l,d),c(u.scaleX,u.scaleY,f.scaleX,f.scaleY,l,d),u=f=null,function(h){for(var p=-1,g=d.length,m;++p<g;)l[(m=d[p]).i]=m.x(h);return l.join("")}}}var Zb=qd(Xb,"px, ","px)","deg)"),Kb=qd(qb,", ",")",")"),Jb=1e-12;function Zd(t){return((t=Math.exp(t))+1/t)/2}function $b(t){return((t=Math.exp(t))-1/t)/2}function ex(t){return((t=Math.exp(2*t))-1)/(t+1)}var Kd=function t(e,n,r){function i(o,s){var a=o[0],c=o[1],u=o[2],f=s[0],l=s[1],d=s[2],h=f-a,p=l-c,g=h*h+p*p,m,y;if(g<Jb)y=Math.log(d/u)/e,m=function(w){return[a+w*h,c+w*p,u*Math.exp(e*w*y)]};else{var x=Math.sqrt(g),v=(d*d-u*u+r*g)/(2*u*n*x),S=(d*d-u*u-r*g)/(2*d*n*x),b=Math.log(Math.sqrt(v*v+1)-v),A=Math.log(Math.sqrt(S*S+1)-S);y=(A-b)/e,m=function(w){var E=w*y,B=Zd(b),O=u/(n*x)*(B*ex(e*E+b)-$b(b));return[a+O*h,c+O*p,u*B/Zd(e*E+b)]}}return m.duration=y*1e3*e/Math.SQRT2,m}return i.rho=function(o){var s=Math.max(.001,+o),a=s*s,c=a*a;return t(s,a,c)},i}(Math.SQRT2,2,4);function Jd(t){return function(e,n){var r=t((e=Ja(e)).h,(n=Ja(n)).h),i=pe(e.s,n.s),o=pe(e.l,n.l),s=pe(e.opacity,n.opacity);return function(a){return e.h=r(a),e.s=i(a),e.l=o(a),e.opacity=s(a),e+""}}}var tx=Jd(zo),nx=Jd(pe);function rx(t,e){var n=pe((t=ec(t)).l,(e=ec(e)).l),r=pe(t.a,e.a),i=pe(t.b,e.b),o=pe(t.opacity,e.opacity);return function(s){return t.l=n(s),t.a=r(s),t.b=i(s),t.opacity=o(s),t+""}}function $d(t){return function(e,n){var r=t((e=oc(e)).h,(n=oc(n)).h),i=pe(e.c,n.c),o=pe(e.l,n.l),s=pe(e.opacity,n.opacity);return function(a){return e.h=r(a),e.c=i(a),e.l=o(a),e.opacity=s(a),e+""}}}var ix=$d(zo),ox=$d(pe);function eh(t){return function e(n){n=+n;function r(i,o){var s=t((i=cc(i)).h,(o=cc(o)).h),a=pe(i.s,o.s),c=pe(i.l,o.l),u=pe(i.opacity,o.opacity);return function(f){return i.h=s(f),i.s=a(f),i.l=c(Math.pow(f,n)),i.opacity=u(f),i+""}}return r.gamma=e,r}(1)}var sx=eh(zo),ax=eh(pe);function pc(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(s){var a=Math.max(0,Math.min(r-1,Math.floor(s*=r)));return o[a](s-a)}}function cx(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}var ux=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",interpolate:_t,interpolateArray:Qb,interpolateBasis:Rd,interpolateBasisClosed:Ud,interpolateDate:Vd,interpolateDiscrete:Yb,interpolateHue:Wb,interpolateNumber:tt,interpolateNumberArray:lc,interpolateObject:_d,interpolateRound:Jr,interpolateString:Yd,interpolateTransformCss:Zb,interpolateTransformSvg:Kb,interpolateZoom:Kd,interpolateRgb:uc,interpolateRgbBasis:Gb,interpolateRgbBasisClosed:Hb,interpolateHsl:tx,interpolateHslLong:nx,interpolateLab:rx,interpolateHcl:ix,interpolateHclLong:ox,interpolateCubehelix:sx,interpolateCubehelixLong:ax,piecewise:pc,quantize:cx});function lx(t){return function(){return t}}function gc(t){return+t}var th=[0,1];function ke(t){return t}function mc(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:lx(isNaN(e)?NaN:.5)}function fx(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function dx(t,e,n){var r=t[0],i=t[1],o=e[0],s=e[1];return i<r?(r=mc(i,r),o=n(s,o)):(r=mc(r,i),o=n(o,s)),function(a){return o(r(a))}}function hx(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),o=new Array(r),s=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++s<r;)i[s]=mc(t[s],t[s+1]),o[s]=n(e[s],e[s+1]);return function(a){var c=kr(t,a,1,r)-1;return o[c](i[c](a))}}function $r(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Uo(){var t=th,e=th,n=_t,r,i,o,s=ke,a,c,u;function f(){var d=Math.min(t.length,e.length);return s!==ke&&(s=fx(t[0],t[d-1])),a=d>2?hx:dx,c=u=null,l}function l(d){return d==null||isNaN(d=+d)?o:(c||(c=a(t.map(r),e,n)))(r(s(d)))}return l.invert=function(d){return s(i((u||(u=a(e,t.map(r),tt)))(d)))},l.domain=function(d){return arguments.length?(t=Array.from(d,gc),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=Jr,f()},l.clamp=function(d){return arguments.length?(s=d?!0:ke,f()):s!==ke},l.interpolate=function(d){return arguments.length?(n=d,f()):n},l.unknown=function(d){return arguments.length?(o=d,l):o},function(d,h){return r=d,i=h,f()}}function nh(){return Uo()(ke,ke)}function rh(t,e,n,r){var i=ho(t,e,n),o;switch(r=Hn(r==null?",f":r),r.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=Mf(i,s))&&(r.precision=o),ya(r,s)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=If(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=Df(i))&&(r.precision=o-(r.type==="%")*2);break}}return Qn(r)}function vn(t){var e=t.domain;return t.ticks=function(n){var r=e();return ga(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return rh(i[0],i[i.length-1],n==null?10:n,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,s=r[i],a=r[o],c,u,f=10;for(a<s&&(u=s,s=a,a=u,u=i,i=o,o=u);f-- >0;){if(u=Af(s,a,n),u===c)return r[i]=s,r[o]=a,e(r);if(u>0)s=Math.floor(s/u)*u,a=Math.ceil(a/u)*u;else if(u<0)s=Math.ceil(s*u)/u,a=Math.floor(a*u)/u;else break;c=u}return t},t}function ih(){var t=nh();return t.copy=function(){return $r(t,ih())},ct.apply(t,arguments),vn(t)}function oh(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,gc),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return oh(t).unknown(e)},t=arguments.length?Array.from(t,gc):[0,1],vn(n)}function sh(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],s;return o<i&&(s=n,n=r,r=s,s=i,i=o,o=s),t[n]=e.floor(i),t[r]=e.ceil(o),t}function ah(t){return Math.log(t)}function ch(t){return Math.exp(t)}function px(t){return-Math.log(-t)}function gx(t){return-Math.exp(-t)}function mx(t){return isFinite(t)?+("1e"+t):t<0?0:t}function yx(t){return t===10?mx:t===Math.E?Math.exp:function(e){return Math.pow(t,e)}}function Ax(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),function(e){return Math.log(e)/t})}function uh(t){return function(e){return-t(-e)}}function yc(t){var e=t(ah,ch),n=e.domain,r=10,i,o;function s(){return i=Ax(r),o=yx(r),n()[0]<0?(i=uh(i),o=uh(o),t(px,gx)):t(ah,ch),e}return e.base=function(a){return arguments.length?(r=+a,s()):r},e.domain=function(a){return arguments.length?(n(a),s()):n()},e.ticks=function(a){var c=n(),u=c[0],f=c[c.length-1],l;(l=f<u)&&(d=u,u=f,f=d);var d=i(u),h=i(f),p,g,m,y=a==null?10:+a,x=[];if(!(r%1)&&h-d<y){if(d=Math.floor(d),h=Math.ceil(h),u>0){for(;d<=h;++d)for(g=1,p=o(d);g<r;++g)if(m=p*g,!(m<u)){if(m>f)break;x.push(m)}}else for(;d<=h;++d)for(g=r-1,p=o(d);g>=1;--g)if(m=p*g,!(m<u)){if(m>f)break;x.push(m)}x.length*2<y&&(x=ga(u,f,y))}else x=ga(d,h,Math.min(h-d,y)).map(o);return l?x.reverse():x},e.tickFormat=function(a,c){if(c==null&&(c=r===10?".0e":","),typeof c!="function"&&(c=Qn(c)),a===1/0)return c;a==null&&(a=10);var u=Math.max(1,r*a/e.ticks().length);return function(f){var l=f/o(Math.round(i(f)));return l*r<r-.5&&(l*=r),l<=u?c(f):""}},e.nice=function(){return n(sh(n(),{floor:function(a){return o(Math.floor(i(a)))},ceil:function(a){return o(Math.ceil(i(a)))}}))},e}function Ac(){var t=yc(Uo()).domain([1,10]);return t.copy=function(){return $r(t,Ac()).base(t.base())},ct.apply(t,arguments),t}function lh(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function fh(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function bc(t){var e=1,n=t(lh(e),fh(e));return n.constant=function(r){return arguments.length?t(lh(e=+r),fh(e)):e},vn(n)}function dh(){var t=bc(Uo());return t.copy=function(){return $r(t,dh()).constant(t.constant())},ct.apply(t,arguments)}function hh(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function bx(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function xx(t){return t<0?-t*t:t*t}function xc(t){var e=t(ke,ke),n=1;function r(){return n===1?t(ke,ke):n===.5?t(bx,xx):t(hh(n),hh(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},vn(e)}function vc(){var t=xc(Uo());return t.copy=function(){return $r(t,vc()).exponent(t.exponent())},ct.apply(t,arguments),t}function vx(){return vc.apply(null,arguments).exponent(.5)}function ph(){var t=[],e=[],n=[],r;function i(){var s=0,a=Math.max(1,e.length);for(n=new Array(a-1);++s<a;)n[s-1]=bf(t,s/a);return o}function o(s){return s==null||isNaN(s=+s)?r:e[kr(n,s)]}return o.invertExtent=function(s){var a=e.indexOf(s);return a<0?[NaN,NaN]:[a>0?n[a-1]:t[0],a<n.length?n[a]:t[t.length-1]]},o.domain=function(s){if(!arguments.length)return t.slice();t=[];for(let a of s)a!=null&&!isNaN(a=+a)&&t.push(a);return t.sort(jn),i()},o.range=function(s){return arguments.length?(e=Array.from(s),i()):e.slice()},o.unknown=function(s){return arguments.length?(r=s,o):r},o.quantiles=function(){return n.slice()},o.copy=function(){return ph().domain(t).range(e).unknown(r)},ct.apply(o,arguments)}function gh(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function s(c){return c!=null&&c<=c?i[kr(r,c,0,n)]:o}function a(){var c=-1;for(r=new Array(n);++c<n;)r[c]=((c+1)*e-(c-n)*t)/(n+1);return s}return s.domain=function(c){return arguments.length?([t,e]=c,t=+t,e=+e,a()):[t,e]},s.range=function(c){return arguments.length?(n=(i=Array.from(c)).length-1,a()):i.slice()},s.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]]},s.unknown=function(c){return arguments.length&&(o=c),s},s.thresholds=function(){return r.slice()},s.copy=function(){return gh().domain([t,e]).range(i).unknown(o)},ct.apply(vn(s),arguments)}function mh(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[kr(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 s=e.indexOf(o);return[t[s-1],t[s]]},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return mh().domain(t).range(e).unknown(n)},ct.apply(i,arguments)}function wx(t){return new Date(t)}function Ex(t){return t instanceof Date?+t:+new Date(+t)}function wc(t,e,n,r,i,o,s,a,c,u){var f=nh(),l=f.invert,d=f.domain,h=u(".%L"),p=u(":%S"),g=u("%I:%M"),m=u("%I %p"),y=u("%a %d"),x=u("%b %d"),v=u("%B"),S=u("%Y");function b(A){return(c(A)<A?h:a(A)<A?p:s(A)<A?g:o(A)<A?m:r(A)<A?i(A)<A?y:x:n(A)<A?v:S)(A)}return f.invert=function(A){return new Date(l(A))},f.domain=function(A){return arguments.length?d(Array.from(A,Ex)):d().map(wx)},f.ticks=function(A){var w=d();return t(w[0],w[w.length-1],A==null?10:A)},f.tickFormat=function(A,w){return w==null?b:u(w)},f.nice=function(A){var w=d();return(!A||typeof A.range!="function")&&(A=e(w[0],w[w.length-1],A==null?10:A)),A?d(sh(w,A)):f},f.copy=function(){return $r(f,wc(t,e,n,r,i,o,s,a,c,u))},f}function Sx(){return ct.apply(wc(MA,IA,Gt,Ao,yo,gn,Ca,Sa,jt,Oa).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function Cx(){return ct.apply(wc(CA,DA,Ht,xo,bo,yn,Ia,Ma,jt,Ba).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function jo(){var t=0,e=1,n,r,i,o,s=ke,a=!1,c;function u(l){return l==null||isNaN(l=+l)?c:s(i===0?.5:(l=(o(l)-n)*i,a?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?(a=!!l,u):a},u.interpolator=function(l){return arguments.length?(s=l,u):s};function f(l){return function(d){var h,p;return arguments.length?([h,p]=d,s=l(h,p),u):[s(0),s(1)]}}return u.range=f(_t),u.rangeRound=f(Jr),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 Yt(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Ec(){var t=vn(jo()(ke));return t.copy=function(){return Yt(t,Ec())},Qt.apply(t,arguments)}function yh(){var t=yc(jo()).domain([1,10]);return t.copy=function(){return Yt(t,yh()).base(t.base())},Qt.apply(t,arguments)}function Ah(){var t=bc(jo());return t.copy=function(){return Yt(t,Ah()).constant(t.constant())},Qt.apply(t,arguments)}function Sc(){var t=xc(jo());return t.copy=function(){return Yt(t,Sc()).exponent(t.exponent())},Qt.apply(t,arguments)}function Dx(){return Sc.apply(null,arguments).exponent(.5)}function Go(){var t=0,e=.5,n=1,r=1,i,o,s,a,c,u=ke,f,l=!1,d;function h(g){return isNaN(g=+g)?d:(g=.5+((g=+f(g))-o)*(r*g<r*o?a:c),u(l?Math.max(0,Math.min(1,g)):g))}h.domain=function(g){return arguments.length?([t,e,n]=g,i=f(t=+t),o=f(e=+e),s=f(n=+n),a=i===o?0:.5/(o-i),c=o===s?0:.5/(s-o),r=o<i?-1:1,h):[t,e,n]},h.clamp=function(g){return arguments.length?(l=!!g,h):l},h.interpolator=function(g){return arguments.length?(u=g,h):u};function p(g){return function(m){var y,x,v;return arguments.length?([y,x,v]=m,u=pc(g,[y,x,v]),h):[u(0),u(.5),u(1)]}}return h.range=p(_t),h.rangeRound=p(Jr),h.unknown=function(g){return arguments.length?(d=g,h):d},function(g){return f=g,i=g(t),o=g(e),s=g(n),a=i===o?0:.5/(o-i),c=o===s?0:.5/(s-o),r=o<i?-1:1,h}}function bh(){var t=vn(Go()(ke));return t.copy=function(){return Yt(t,bh())},Qt.apply(t,arguments)}function xh(){var t=yc(Go()).domain([.1,1,10]);return t.copy=function(){return Yt(t,xh()).base(t.base())},Qt.apply(t,arguments)}function vh(){var t=bc(Go());return t.copy=function(){return Yt(t,vh()).constant(t.constant())},Qt.apply(t,arguments)}function Cc(){var t=xc(Go());return t.copy=function(){return Yt(t,Cc()).exponent(t.exponent())},Qt.apply(t,arguments)}function Mx(){return Cc.apply(null,arguments).exponent(.5)}function Dc(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const Ix="identity",qn="linear",Wt="log",ei="pow",ti="sqrt",Ho="symlog",wh="time",Eh="utc",dt="sequential",Zn="diverging",Mc="quantile",Sh="quantize",Ch="threshold",Ic="ordinal",Tc="point",Dh="band",Nc="bin-ordinal",le="continuous",ni="discrete",ri="discretizing",Xe="interpolating",Mh="temporal";function Tx(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 Nx(t){return function(e){const n=t.range();let r=e[0],i=e[1],o=-1,s,a,c,u;for(i<r&&(a=r,r=i,i=a),c=0,u=n.length;c<u;++c)n[c]>=r&&n[c]<=i&&(o<0&&(o=c),s=c);if(!(o<0))return r=t.invertExtent(n[o]),i=t.invertExtent(n[s]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function Lc(){const t=qa().unknown(void 0),e=t.domain,n=t.range;let r=[0,1],i,o,s=!1,a=0,c=0,u=.5;delete t.unknown;function f(){const l=e().length,d=r[1]<r[0],h=r[1-d],p=Dc(l,a,c);let g=r[d-0];i=(h-g)/(p||1),s&&(i=Math.floor(i)),g+=(h-g-i*(l-a))*u,o=i*(1-a),s&&(g=Math.round(g),o=Math.round(o));const m=po(l).map(y=>g+i*y);return n(d?m.reverse():m)}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]],s=!0,f()},t.bandwidth=function(){return o},t.step=function(){return i},t.round=function(l){return arguments.length?(s=!!l,f()):s},t.padding=function(l){return arguments.length?(c=Math.max(0,Math.min(1,l)),a=c,f()):a},t.paddingInner=function(l){return arguments.length?(a=Math.max(0,Math.min(1,l)),f()):a},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],h=d?n().reverse():n(),p=h.length-1;let g=+l[0],m=+l[1],y,x,v;if(!(g!==g||m!==m)&&(m<g&&(v=g,g=m,m=v),!(m<h[0]||g>r[1-d])))return y=Math.max(0,fa(h,g)-1),x=g===m?y:fa(h,m)-1,g-h[y]>o+1e-10&&++y,d&&(v=y,y=p-x,x=p-v),y>x?void 0:e().slice(y,x+1)},t.invert=function(l){const d=t.invertRange([l,l]);return d&&d[0]},t.copy=function(){return Lc().domain(e()).range(r).round(s).paddingInner(a).paddingOuter(c).align(u)},f()}function Ih(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return Ih(e())},t}function Lx(){return Ih(Lc().paddingInner(1))}var kx=Array.prototype.map;function Ox(t){return kx.call(t,Nr)}const Bx=Array.prototype.slice;function Th(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(kr(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=Ox(r),n):t.slice()},n.range=function(r){return arguments.length?(e=Bx.call(r),n):e.slice()},n.tickFormat=function(r,i){return rh(t[0],et(t),r==null?10:r,i)},n.copy=function(){return Th().domain(n.domain()).range(n.range())},n}const Qo={};function Px(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?Tx(o):o.invertExtent?Nx(o):void 0),o.type=t,o};return r.metadata=fo(oa(n)),r}function W(t,e,n){return arguments.length>1?(Qo[t]=Px(t,e,n),this):Fx(t)?Qo[t]:void 0}W(Ix,oh),W(qn,ih,le),W(Wt,Ac,[le,Wt]),W(ei,vc,le),W(ti,vx,le),W(Ho,dh,le),W(wh,Sx,[le,Mh]),W(Eh,Cx,[le,Mh]),W(dt,Ec,[le,Xe]),W("".concat(dt,"-").concat(qn),Ec,[le,Xe]),W("".concat(dt,"-").concat(Wt),yh,[le,Xe,Wt]),W("".concat(dt,"-").concat(ei),Sc,[le,Xe]),W("".concat(dt,"-").concat(ti),Dx,[le,Xe]),W("".concat(dt,"-").concat(Ho),Ah,[le,Xe]),W("".concat(Zn,"-").concat(qn),bh,[le,Xe]),W("".concat(Zn,"-").concat(Wt),xh,[le,Xe,Wt]),W("".concat(Zn,"-").concat(ei),Cc,[le,Xe]),W("".concat(Zn,"-").concat(ti),Mx,[le,Xe]),W("".concat(Zn,"-").concat(Ho),vh,[le,Xe]),W(Mc,ph,[ri,Mc]),W(Sh,gh,ri),W(Ch,mh,ri),W(Nc,Th,[ni,ri]),W(Ic,qa,ni),W(Dh,Lc,ni),W(Tc,Lx,ni);function Fx(t){return hn(Qo,t)}function ii(t,e){const n=Qo[t];return n&&n.metadata[e]}function nt(t){return ii(t,le)}function Xt(t){return ii(t,ni)}function Kn(t){return ii(t,ri)}function Nh(t){return ii(t,Wt)}function Vo(t){return ii(t,Xe)}function zx(t,e){const n=e[0],r=et(e)-n;return function(i){return t(n+i*r)}}function _o(t,e,n){return pc(Lh(e||"rgb",n),t)}function Rx(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function Lh(t,e){const n=ux[Ux(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function Ux(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const jx={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"},Gx={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 kh(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 Oh(t,e){for(const n in t)kc(n,e(t[n]))}const Bh={};Oh(Gx,kh),Oh(jx,t=>_o(kh(t)));function kc(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(Bh[t]=e,this):Bh[t]}var ST="";function Hx(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?yv(l):e.test(l+="")?'"'+l.replace(/"/g,'""')+'"':l}return{parse:r,parseRows:i,format:a,formatBody:s,formatRows:c,formatRow:u,formatValue:f}}var vv=gd(" "),bv=vv.parseRows;function Av(t){return t}function xv(t){if(t==null)return Av;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 wv(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}function Cv(t,e){return typeof e=="string"&&(e=t.objects[e]),e.type==="GeometryCollection"?{type:"FeatureCollection",features:e.geometries.map(function(n){return yd(t,n)})}:yd(t,e)}function yd(t,e){var n=e.id,r=e.bbox,i=e.properties==null?{}:e.properties,o=vd(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 vd(t,e){var n=xv(t.transform),r=t.arcs;function i(f,l){l.length&&l.pop();for(var d=r[f<0?~f:f],h=0,p=d.length;h<p;++h)l.push(n(d[h],h));f<0&&wv(l,p)}function o(f){return n(f)}function a(f){for(var l=[],d=0,h=f.length;d<h;++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 Sv(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],h,p;if(h=i[l])if(delete i[h.end],h.push(u),h.end=d,p=r[d]){delete r[p.start];var m=p===h?h:h.concat(p);r[m.start=h.start]=i[m.end=p.end]=m}else r[h.start]=i[h.end]=h;else if(h=r[d])if(delete r[h.start],h.unshift(u),h.start=l,p=i[l]){delete i[p.end];var y=p===h?h:p.concat(h);r[y.start=p.start]=i[y.end=h.end]=y}else r[h.start]=i[h.end]=h;else h=[u],r[h.start=l]=i[h.end=d]=h});function s(u){var f=t.arcs[u<0?~u:u],l=f[0],d;return t.transform?(d=[0,0],f.forEach(function(h){d[0]+=h[0],d[1]+=h[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(h){n[h<0?~h:h]=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 Ev(t){return vd(t,Dv.apply(this,arguments))}function Dv(t,e,n){var r,i,o;if(arguments.length>1)r=Mv(t,e,n);else for(i=0,r=new Array(o=t.arcs.length);i<o;++i)r[i]=i;return{type:"MultiLineString",arcs:Sv(t,r)}}function Mv(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 Tv(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function Zo(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===Tv?t:Iv,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 Iv(){return 0}function bd(t){return t===null?NaN:+t}const Ad=Zo(Dn),tc=Ad.right;Ad.left,Zo(bd).center;var fr=tc;function kv(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 Mn extends Map{constructor(e,n=Bv){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(xd(this,e))}has(e){return super.has(xd(this,e))}set(e,n){return super.set(Nv(this,e),n)}delete(e){return super.delete(Lv(this,e))}}function xd({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function Nv({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function Lv({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function Bv(t){return t!==null&&typeof t=="object"?t.valueOf():t}function qo(t){return t}function oi(t,...e){return nc(t,qo,qo,e)}function Ov(t,...e){return nc(t,Array.from,qo,e)}function Pv(t,e,...n){return nc(t,qo,e,n)}function nc(t,e,n,r){return function i(o,a){if(a>=r.length)return n(o);const s=new Mn,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 Fv(t,e){return Array.from(e,n=>t[n])}function zv(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=rc(a[i],a[o]);if(s)return s}})):(n=t.map(n),r.sort((i,o)=>rc(n[i],n[o]))),Fv(t,r)}return t.sort(Rv(n))}function Rv(t=Dn){if(t===Dn)return rc;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 rc(t,e){return(t==null||!(t>=t))-(e==null||!(e>=e))||(t<e?-1:t>e?1:0)}var ic=Math.sqrt(50),oc=Math.sqrt(10),ac=Math.sqrt(2);function Ko(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=wd(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 wd(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>=ic?10:o>=oc?5:o>=ac?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=ic?10:o>=oc?5:o>=ac?2:1)}function Tn(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>=ic?i*=10:o>=oc?i*=5:o>=ac&&(i*=2),e<t?-i:i}function sc(t,e,n=bd){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 Jo(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 jv(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function $o(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 dr(t){return t=$o(Math.abs(t)),t?t[1]:NaN}function Uv(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 Gv(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var Hv=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Wt(t){if(!(e=Hv.exec(t)))throw new Error("invalid format: "+t);var e;return new cc({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=cc.prototype;function cc(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+""}cc.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 Qv(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 Cd;function Vv(t,e){var n=$o(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Cd=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")+$o(t,Math.max(0,e+o-1))[0]}function Sd(t,e){var n=$o(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")}var Ed={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:jv,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)=>Sd(t*100,e),r:Sd,s:Vv,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Dd(t){return t}var Md=Array.prototype.map,Td=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Yv(t){var e=t.grouping===void 0||t.thousands===void 0?Dd:Uv(Md.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?Dd:Gv(Md.call(t.numerals,String)),a=t.percent===void 0?"%":t.percent+"",s=t.minus===void 0?"\u2212":t.minus+"",c=t.nan===void 0?"NaN":t.nan+"";function u(l){l=Wt(l);var d=l.fill,h=l.align,p=l.sign,m=l.symbol,y=l.zero,g=l.width,A=l.comma,x=l.precision,C=l.trim,b=l.type;b==="n"?(A=!0,b="g"):Ed[b]||(x===void 0&&(x=12),C=!0,b="g"),(y||d==="0"&&h==="=")&&(y=!0,d="0",h="=");var v=m==="$"?n:m==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",w=m==="$"?r:/[%p]/.test(b)?a:"",E=Ed[b],k=/[defgprs%]/.test(b);x=x===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,x)):Math.max(0,Math.min(20,x));function L(I){var P=v,Z=w,Q,fe,Se;if(b==="c")Z=E(I)+Z,I="";else{I=+I;var Cn=I<0||1/I<0;if(I=isNaN(I)?c:E(Math.abs(I),x),C&&(I=Qv(I)),Cn&&+I==0&&p!=="+"&&(Cn=!1),P=(Cn?p==="("?p:s:p==="-"||p==="("?"":p)+P,Z=(b==="s"?Td[8+Cd/3]:"")+Z+(Cn&&p==="("?")":""),k){for(Q=-1,fe=I.length;++Q<fe;)if(Se=I.charCodeAt(Q),48>Se||Se>57){Z=(Se===46?i+I.slice(Q+1):I.slice(Q))+Z,I=I.slice(0,Q);break}}}A&&!y&&(I=e(I,1/0));var W=P.length+I.length+Z.length,_e=W<g?new Array(g-W+1).join(d):"";switch(A&&y&&(I=e(_e+I,_e.length?g-Z.length:1/0),_e=""),h){case"<":I=P+I+Z+_e;break;case"=":I=P+_e+I+Z;break;case"^":I=_e.slice(0,W=_e.length>>1)+P+I+Z+_e.slice(W);break;default:I=_e+P+I+Z;break}return o(I)}return L.toString=function(){return l+""},L}function f(l,d){var h=u((l=Wt(l),l.type="f",l)),p=Math.max(-8,Math.min(8,Math.floor(dr(d)/3)))*3,m=Math.pow(10,-p),y=Td[8+p/3];return function(g){return h(m*g)+y}}return{format:u,formatPrefix:f}}var ea,he,uc;_v({thousands:",",grouping:[3],currency:["$",""]});function _v(t){return ea=Yv(t),he=ea.format,uc=ea.formatPrefix,ea}function Id(t){return Math.max(0,-dr(Math.abs(t)))}function kd(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(dr(e)/3)))*3-dr(Math.abs(t)))}function Nd(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,dr(e)-dr(t))+1}var lc=new Date,fc=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),fc.setTime(+a),t(lc),t(fc),Math.floor(n(lc,fc))},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 dc=me(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});dc.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}):dc};var hc=dc;const Mt=1e3,qe=Mt*60,Tt=qe*60,In=Tt*24,pc=In*7,Ld=In*30,mc=In*365;var Wv=me(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*Mt)},function(t,e){return(e-t)/Mt},function(t){return t.getUTCSeconds()}),Xt=Wv,Xv=me(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Mt)},function(t,e){t.setTime(+t+e*qe)},function(t,e){return(e-t)/qe},function(t){return t.getMinutes()}),gc=Xv,Zv=me(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Mt-t.getMinutes()*qe)},function(t,e){t.setTime(+t+e*Tt)},function(t,e){return(e-t)/Tt},function(t){return t.getHours()}),yc=Zv,qv=me(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*qe)/In,t=>t.getDate()-1),kn=qv;function Nn(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())*qe)/pc})}var ta=Nn(0),vc=Nn(1);Nn(2),Nn(3);var ai=Nn(4);Nn(5),Nn(6);var Kv=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()}),na=Kv,Bd=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()});Bd.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)})};var Zt=Bd,Jv=me(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*qe)},function(t,e){return(e-t)/qe},function(t){return t.getUTCMinutes()}),bc=Jv,$v=me(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*Tt)},function(t,e){return(e-t)/Tt},function(t){return t.getUTCHours()}),Ac=$v,eb=me(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/In},function(t){return t.getUTCDate()-1}),Ln=eb;function Bn(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)/pc})}var ra=Bn(0),xc=Bn(1);Bn(2),Bn(3);var si=Bn(4);Bn(5),Bn(6);var tb=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()}),ia=tb,Od=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()});Od.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)})};var qt=Od;function Pd(t,e,n,r,i,o){const a=[[Xt,1,Mt],[Xt,5,5*Mt],[Xt,15,15*Mt],[Xt,30,30*Mt],[o,1,qe],[o,5,5*qe],[o,15,15*qe],[o,30,30*qe],[i,1,Tt],[i,3,3*Tt],[i,6,6*Tt],[i,12,12*Tt],[r,1,In],[r,2,2*In],[n,1,pc],[e,1,Ld],[e,3,3*Ld],[t,1,mc]];function s(u,f,l){const d=f<u;d&&([u,f]=[f,u]);const h=l&&typeof l.range=="function"?l:c(u,f,l),p=h?h.range(u,+f+1):[];return d?p.reverse():p}function c(u,f,l){const d=Math.abs(f-u)/l,h=Zo(([,,y])=>y).right(a,d);if(h===a.length)return t.every(Tn(u/mc,f/mc,l));if(h===0)return hc.every(Math.max(Tn(u,f,l),1));const[p,m]=a[d/a[h-1][2]<a[h][2]/d?h-1:h];return p.every(m)}return[s,c]}const[nb,rb]=Pd(qt,ia,ra,Ln,Ac,bc),[ib,ob]=Pd(Zt,na,ta,kn,yc,gc),ci="year",ui="quarter",li="month",fi="week",di="date",oa="day",wc="dayofyear",hi="hours",pi="minutes",mi="seconds",aa="milliseconds";[ci,ui,li,fi,di,oa,wc,hi,pi,mi,aa].reduce((t,e,n)=>(t[e]=1+n,t),{});const ab={[ci]:Zt,[ui]:na.every(3),[li]:na,[fi]:ta,[di]:kn,[oa]:kn,[wc]:kn,[hi]:yc,[pi]:gc,[mi]:Xt,[aa]:hc},sb={[ci]:qt,[ui]:ia.every(3),[li]:ia,[fi]:ra,[di]:Ln,[oa]:Ln,[wc]:Ln,[hi]:Ac,[pi]:bc,[mi]:Xt,[aa]:hc};function cb(t){return ab[t]}function ub(t){return sb[t]}function Cc(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 Sc(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 gi(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Fd(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=yi(i),f=vi(i),l=yi(o),d=vi(o),h=yi(a),p=vi(a),m=yi(s),y=vi(s),g=yi(c),A=vi(c),x={a:Cn,A:W,b:_e,B:zo,c:null,d:Hd,e:Hd,f:Lb,g:Hb,G:Vb,H:Ib,I:kb,j:Nb,L:Qd,m:Bb,M:Ob,p:Ro,q:Vs,Q:Zd,s:qd,S:Pb,u:Fb,U:zb,V:Rb,w:jb,W:Ub,x:null,X:null,y:Gb,Y:Qb,Z:Yb,"%":Xd},C={a:ed,A:Ik,b:kk,B:Nk,c:null,d:Yd,e:Yd,f:Zb,g:oA,G:sA,H:_b,I:Wb,j:Xb,L:_d,m:qb,M:Kb,p:Lk,q:Bk,Q:Zd,s:qd,S:Jb,u:$b,U:eA,V:tA,w:nA,W:rA,x:null,X:null,y:iA,Y:aA,Z:cA,"%":Xd},b={a:L,A:I,b:P,B:Z,c:Q,d:Ud,e:Ud,f:Eb,g:jd,G:Rd,H:Gd,I:Gd,j:xb,L:Sb,m:Ab,M:wb,p:k,q:bb,Q:Mb,s:Tb,S:Cb,u:pb,U:mb,V:gb,w:hb,W:yb,x:fe,X:Se,y:jd,Y:Rd,Z:vb,"%":Db};x.x=v(n,x),x.X=v(r,x),x.c=v(e,x),C.x=v(n,C),C.X=v(r,C),C.c=v(e,C);function v(O,H){return function(X){var M=[],Re=-1,$=0,We=O.length,Xe,lr,F2;for(X instanceof Date||(X=new Date(+X));++Re<We;)O.charCodeAt(Re)===37&&(M.push(O.slice($,Re)),(lr=zd[Xe=O.charAt(++Re)])!=null?Xe=O.charAt(++Re):lr=Xe==="e"?" ":"0",(F2=H[Xe])&&(Xe=F2(X,lr)),M.push(Xe),$=Re+1);return M.push(O.slice($,Re)),M.join("")}}function w(O,H){return function(X){var M=gi(1900,void 0,1),Re=E(M,O,X+="",0),$,We;if(Re!=X.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?($=Sc(gi(M.y,0,1)),We=$.getUTCDay(),$=We>4||We===0?xc.ceil($):xc($),$=Ln.offset($,(M.V-1)*7),M.y=$.getUTCFullYear(),M.m=$.getUTCMonth(),M.d=$.getUTCDate()+(M.w+6)%7):($=Cc(gi(M.y,0,1)),We=$.getDay(),$=We>4||We===0?vc.ceil($):vc($),$=kn.offset($,(M.V-1)*7),M.y=$.getFullYear(),M.m=$.getMonth(),M.d=$.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),We="Z"in M?Sc(gi(M.y,0,1)).getUTCDay():Cc(gi(M.y,0,1)).getDay(),M.m=0,M.d="W"in M?(M.w+6)%7+M.W*7-(We+5)%7:M.w+M.U*7-(We+6)%7);return"Z"in M?(M.H+=M.Z/100|0,M.M+=M.Z%100,Sc(M)):Cc(M)}}function E(O,H,X,M){for(var Re=0,$=H.length,We=X.length,Xe,lr;Re<$;){if(M>=We)return-1;if(Xe=H.charCodeAt(Re++),Xe===37){if(Xe=H.charAt(Re++),lr=b[Xe in zd?H.charAt(Re++):Xe],!lr||(M=lr(O,X,M))<0)return-1}else if(Xe!=X.charCodeAt(M++))return-1}return M}function k(O,H,X){var M=u.exec(H.slice(X));return M?(O.p=f.get(M[0].toLowerCase()),X+M[0].length):-1}function L(O,H,X){var M=h.exec(H.slice(X));return M?(O.w=p.get(M[0].toLowerCase()),X+M[0].length):-1}function I(O,H,X){var M=l.exec(H.slice(X));return M?(O.w=d.get(M[0].toLowerCase()),X+M[0].length):-1}function P(O,H,X){var M=g.exec(H.slice(X));return M?(O.m=A.get(M[0].toLowerCase()),X+M[0].length):-1}function Z(O,H,X){var M=m.exec(H.slice(X));return M?(O.m=y.get(M[0].toLowerCase()),X+M[0].length):-1}function Q(O,H,X){return E(O,e,H,X)}function fe(O,H,X){return E(O,n,H,X)}function Se(O,H,X){return E(O,r,H,X)}function Cn(O){return a[O.getDay()]}function W(O){return o[O.getDay()]}function _e(O){return c[O.getMonth()]}function zo(O){return s[O.getMonth()]}function Ro(O){return i[+(O.getHours()>=12)]}function Vs(O){return 1+~~(O.getMonth()/3)}function ed(O){return a[O.getUTCDay()]}function Ik(O){return o[O.getUTCDay()]}function kk(O){return c[O.getUTCMonth()]}function Nk(O){return s[O.getUTCMonth()]}function Lk(O){return i[+(O.getUTCHours()>=12)]}function Bk(O){return 1+~~(O.getUTCMonth()/3)}return{format:function(O){var H=v(O+="",x);return H.toString=function(){return O},H},parse:function(O){var H=w(O+="",!1);return H.toString=function(){return O},H},utcFormat:function(O){var H=v(O+="",C);return H.toString=function(){return O},H},utcParse:function(O){var H=w(O+="",!0);return H.toString=function(){return O},H}}}var zd={"-":"",_:" ","0":"0"},ge=/^\s*\d+/,lb=/^%/,fb=/[\\^$*+?|[\]().{}]/g;function Y(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 db(t){return t.replace(fb,"\\$&")}function yi(t){return new RegExp("^(?:"+t.map(db).join("|")+")","i")}function vi(t){return new Map(t.map((e,n)=>[e.toLowerCase(),n]))}function hb(t,e,n){var r=ge.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function pb(t,e,n){var r=ge.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function mb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function gb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function yb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Rd(t,e,n){var r=ge.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function jd(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 vb(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 bb(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 Ab(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 Ud(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function xb(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 Gd(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function wb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Cb(t,e,n){var r=ge.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Sb(t,e,n){var r=ge.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Eb(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 Db(t,e,n){var r=lb.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Mb(t,e,n){var r=ge.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Tb(t,e,n){var r=ge.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Hd(t,e){return Y(t.getDate(),e,2)}function Ib(t,e){return Y(t.getHours(),e,2)}function kb(t,e){return Y(t.getHours()%12||12,e,2)}function Nb(t,e){return Y(1+kn.count(Zt(t),t),e,3)}function Qd(t,e){return Y(t.getMilliseconds(),e,3)}function Lb(t,e){return Qd(t,e)+"000"}function Bb(t,e){return Y(t.getMonth()+1,e,2)}function Ob(t,e){return Y(t.getMinutes(),e,2)}function Pb(t,e){return Y(t.getSeconds(),e,2)}function Fb(t){var e=t.getDay();return e===0?7:e}function zb(t,e){return Y(ta.count(Zt(t)-1,t),e,2)}function Vd(t){var e=t.getDay();return e>=4||e===0?ai(t):ai.ceil(t)}function Rb(t,e){return t=Vd(t),Y(ai.count(Zt(t),t)+(Zt(t).getDay()===4),e,2)}function jb(t){return t.getDay()}function Ub(t,e){return Y(vc.count(Zt(t)-1,t),e,2)}function Gb(t,e){return Y(t.getFullYear()%100,e,2)}function Hb(t,e){return t=Vd(t),Y(t.getFullYear()%100,e,2)}function Qb(t,e){return Y(t.getFullYear()%1e4,e,4)}function Vb(t,e){var n=t.getDay();return t=n>=4||n===0?ai(t):ai.ceil(t),Y(t.getFullYear()%1e4,e,4)}function Yb(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Y(e/60|0,"0",2)+Y(e%60,"0",2)}function Yd(t,e){return Y(t.getUTCDate(),e,2)}function _b(t,e){return Y(t.getUTCHours(),e,2)}function Wb(t,e){return Y(t.getUTCHours()%12||12,e,2)}function Xb(t,e){return Y(1+Ln.count(qt(t),t),e,3)}function _d(t,e){return Y(t.getUTCMilliseconds(),e,3)}function Zb(t,e){return _d(t,e)+"000"}function qb(t,e){return Y(t.getUTCMonth()+1,e,2)}function Kb(t,e){return Y(t.getUTCMinutes(),e,2)}function Jb(t,e){return Y(t.getUTCSeconds(),e,2)}function $b(t){var e=t.getUTCDay();return e===0?7:e}function eA(t,e){return Y(ra.count(qt(t)-1,t),e,2)}function Wd(t){var e=t.getUTCDay();return e>=4||e===0?si(t):si.ceil(t)}function tA(t,e){return t=Wd(t),Y(si.count(qt(t),t)+(qt(t).getUTCDay()===4),e,2)}function nA(t){return t.getUTCDay()}function rA(t,e){return Y(xc.count(qt(t)-1,t),e,2)}function iA(t,e){return Y(t.getUTCFullYear()%100,e,2)}function oA(t,e){return t=Wd(t),Y(t.getUTCFullYear()%100,e,2)}function aA(t,e){return Y(t.getUTCFullYear()%1e4,e,4)}function sA(t,e){var n=t.getUTCDay();return t=n>=4||n===0?si(t):si.ceil(t),Y(t.getUTCFullYear()%1e4,e,4)}function cA(){return"+0000"}function Xd(){return"%"}function Zd(t){return+t}function qd(t){return Math.floor(+t/1e3)}var hr,Ec,Kd,Dc,Jd;uA({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 uA(t){return hr=Fd(t),Ec=hr.format,Kd=hr.parse,Dc=hr.utcFormat,Jd=hr.utcParse,hr}function bi(t){const e={};return n=>e[n]||(e[n]=t(n))}function lA(t,e){return n=>{const r=t(n),i=r.indexOf(e);if(i<0)return r;let o=fA(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 fA(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 dA(t){const e=bi(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 lA(e(i),e(".1f")(1)[1])}else return e(i)},formatSpan(r,i,o,a){a=Wt(a==null?",f":a);const s=Tn(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=kd(s,c))||(a.precision=u),n(a,c);case"":case"e":case"g":case"p":case"r":{isNaN(u=Nd(s,c))||(a.precision=u-(a.type==="e"));break}case"f":case"%":{isNaN(u=Id(s))||(a.precision=u-(a.type==="%")*2);break}}return e(a)}}}hA();function hA(){return dA({format:he,formatPrefix:uc})}function $d(t,e,n){n=n||{},je(n)||ce("Invalid time multi-format specifier: ".concat(n));const r=e(mi),i=e(pi),o=e(hi),a=e(di),s=e(fi),c=e(li),u=e(ui),f=e(ci),l=t(n[aa]||".%L"),d=t(n[mi]||":%S"),h=t(n[pi]||"%I:%M"),p=t(n[hi]||"%I %p"),m=t(n[di]||n[oa]||"%a %d"),y=t(n[fi]||"%b %d"),g=t(n[li]||"%B"),A=t(n[ui]||"%B"),x=t(n[ci]||"%Y");return C=>(r(C)<C?l:i(C)<C?d:o(C)<C?h:a(C)<C?p:c(C)<C?s(C)<C?m:y:f(C)<C?u(C)<C?g:A:x)(C)}function eh(t){const e=bi(t.format),n=bi(t.utcFormat);return{timeFormat:r=>re(r)?e(r):$d(e,cb,r),utcFormat:r=>re(r)?n(r):$d(n,ub,r),timeParse:bi(t.parse),utcParse:bi(t.utcParse)}}let Mc;pA();function pA(){return Mc=eh({format:Ec,parse:Kd,utcFormat:Dc,utcParse:Jd})}function mA(t){return eh(Fd(t))}function gA(t){return arguments.length?Mc=mA(t):Mc}const yA=/^(data:|([A-Za-z]+:)?\/\/)/,vA=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,bA=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,th="file://";function AA(t,e){return n=>({options:n||{},sanitize:wA,load:xA,fileAccess:!!e,file:CA(e),http:EA(t)})}async function xA(t,e){const n=await this.sanitize(t,e),r=n.href;return n.localFile?this.file(r):this.http(r,e)}async function wA(t,e){e=Ks({},this.options,e);const n=this.fileAccess,r={href:null};let i,o,a;const s=vA.test(t.replace(bA,""));(t==null||typeof t!="string"||!s)&&ce("Sanitize failure, invalid URI: "+Wo(t));const c=yA.test(t);return(a=e.baseURL)&&!c&&(!t.startsWith("/")&&!a.endsWith("/")&&(t="/"+t),t=a+t),o=(i=t.startsWith(th))||e.mode==="file"||e.mode!=="http"&&!c&&n,i?t=t.slice(th.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 CA(t){return t?e=>new Promise((n,r)=>{t.readFile(e,(i,o)=>{i?r(i):n(o)})}):SA}async function SA(){ce("No file system access.")}function EA(t){return t?async function(e,n){const r=Ks({},this.options.http,n),i=n&&n.response,o=await t(e,r);return o.ok?Be(o[i])?o[i]():o.text():ce(o.status+""+o.statusText)}:DA}async function DA(){ce("No HTTP fetch method available.")}const MA=t=>t!=null&&t===t,TA=t=>t==="true"||t==="false"||t===!0||t===!1,IA=t=>!Number.isNaN(Date.parse(t)),nh=t=>!Number.isNaN(+t)&&!(t instanceof Date),kA=t=>nh(t)&&Number.isInteger(+t),rh={boolean:fv,integer:ri,number:ri,date:hv,string:pv,unknown:Ho},sa=[TA,kA,nh,IA],NA=["boolean","integer","number","date"];function ih(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=sa.length,i=sa.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]&&MA(c)&&!sa[s](c)&&(i[s]=0,++a,a===sa.length))return"string";return NA[i.reduce((o,a)=>o===0?a:o,0)-1]}function LA(t,e){return e.reduce((n,r)=>(n[r]=ih(t,r),n),{})}function oh(t){const e=function(n,r){const i={delimiter:t};return Tc(n,r?Ks(r,i):i)};return e.responseType="text",e}function Tc(t,e){return e.header&&(t=e.header.map(Wo).join(e.delimiter)+`
6
+ `+t),gd(e.delimiter).parse(t+"")}Tc.responseType="text";function BA(t){return typeof Buffer=="function"&&Be(Buffer.isBuffer)?Buffer.isBuffer(t):!1}function Ic(t,e){const n=e&&e.property?Go(e.property):Ho;return je(t)&&!BA(t)?OA(n(t),e):n(JSON.parse(t))}Ic.responseType="json";function OA(t,e){return!Ze(t)&&uv(t)&&(t=[...t]),e&&e.copy?JSON.parse(JSON.stringify(t)):t}const PA={interior:(t,e)=>t!==e,exterior:(t,e)=>t===e};function ah(t,e){let n,r,i,o;return t=Ic(t,e),e&&e.feature?(n=Cv,i=e.feature):e&&e.mesh?(n=Ev,i=e.mesh,o=PA[e.filter]):ce("Missing TopoJSON feature or mesh parameter."),r=(r=t.objects[i])?n(t,r,o):ce("Invalid TopoJSON object: "+i),r&&r.features||[r]}ah.responseType="json";const kc={dsv:Tc,csv:oh(","),tsv:oh(" "),json:Ic,topojson:ah};function sh(t,e){return arguments.length>1?(kc[t]=e,this):En(kc,t)?kc[t]:null}function ch(t,e,n,r){e=e||{};const i=sh(e.type||"json");return i||ce("Unknown data format type: "+e.type),t=i(t,e),e.parse&&FA(t,e.parse,n,r),En(t,"columns")&&delete t.columns,t}function FA(t,e,n,r){if(!t.length)return;const i=gA();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=LA(t,o)),o=Object.keys(e);const d=o.map(h=>{const p=e[h];let m,y;if(p&&(p.startsWith("date:")||p.startsWith("utc:")))return m=p.split(/:(.+)?/,2),y=m[1],(y[0]==="'"&&y[y.length-1]==="'"||y[0]==='"'&&y[y.length-1]==='"')&&(y=y.slice(1,-1)),(m[0]==="utc"?r:n)(y);if(!rh[p])throw Error("Illegal format pattern: "+h+":"+p);return rh[p]});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 Ai=AA(typeof fetch!="undefined"&&fetch,null),uh=1;function Nc(){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=kv(f),n=t[1]-t[0],n<uh){n=uh;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 Ko(t[0]-l+d,t[1]-l+d,Math.min(f,Math.ceil(n))).filter(Number.isInteger).map(h=>h-s)},u.tickFormat=(f,l)=>{if(l)throw new Error("Index scale's tickFormat does not support a specifier!");const h=Tn(t[0],t[1],Math.min(f,Math.ceil(n)))<1e5?he(","):he(".3s");return p=>h(p+s)},u.copy=()=>Nc().domain(t).range(e).paddingInner(i).paddingOuter(o).numberingOffset(s),u}function zA(){const t=Nc().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,Tn(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),h=Math.min(l.continuousEnd-c/4,i[1]+1);for(let p=d;p<=h;p+=c){const m=p-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=Tn(o[0],o[1],Math.min(r,Math.ceil(a)))<1e6?he(","):he(".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 RA(t){return t.type=="locus"}function ht(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 Lc=Symbol("implicit");function Bc(){var t=new Mn,e=[],n=[],r=Lc;function i(o){let a=t.get(o);if(a===void 0){if(r!==Lc)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 Mn;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 Bc(e,n).unknown(r)},ht.apply(i,arguments),i}function pr(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function xi(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Jt(){}var On=.7,mr=1/On,gr="\\s*([+-]?\\d+)\\s*",wi="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",pt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",jA=/^#([0-9a-f]{3,8})$/,UA=new RegExp(`^rgb\\(${gr},${gr},${gr}\\)$`),GA=new RegExp(`^rgb\\(${pt},${pt},${pt}\\)$`),HA=new RegExp(`^rgba\\(${gr},${gr},${gr},${wi}\\)$`),QA=new RegExp(`^rgba\\(${pt},${pt},${pt},${wi}\\)$`),VA=new RegExp(`^hsl\\(${wi},${pt},${pt}\\)$`),YA=new RegExp(`^hsla\\(${wi},${pt},${pt},${wi}\\)$`),lh={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};pr(Jt,Pn,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:fh,formatHex:fh,formatHex8:_A,formatHsl:WA,formatRgb:dh,toString:dh});function fh(){return this.rgb().formatHex()}function _A(){return this.rgb().formatHex8()}function WA(){return yh(this).formatHsl()}function dh(){return this.rgb().formatRgb()}function Pn(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=jA.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?hh(e):n===3?new ye(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?ca(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?ca(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=UA.exec(t))?new ye(e[1],e[2],e[3],1):(e=GA.exec(t))?new ye(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=HA.exec(t))?ca(e[1],e[2],e[3],e[4]):(e=QA.exec(t))?ca(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=VA.exec(t))?gh(e[1],e[2]/100,e[3]/100,1):(e=YA.exec(t))?gh(e[1],e[2]/100,e[3]/100,e[4]):lh.hasOwnProperty(t)?hh(lh[t]):t==="transparent"?new ye(NaN,NaN,NaN,0):null}function hh(t){return new ye(t>>16&255,t>>8&255,t&255,1)}function ca(t,e,n,r){return r<=0&&(t=e=n=NaN),new ye(t,e,n,r)}function Oc(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 ua(t,e,n,r){return arguments.length===1?Oc(t):new ye(t,e,n,r==null?1:r)}function ye(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}pr(ye,ua,xi(Jt,{brighter(t){return t=t==null?mr:Math.pow(mr,t),new ye(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?On:Math.pow(On,t),new ye(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ye(Fn(this.r),Fn(this.g),Fn(this.b),la(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:ph,formatHex:ph,formatHex8:XA,formatRgb:mh,toString:mh}));function ph(){return`#${zn(this.r)}${zn(this.g)}${zn(this.b)}`}function XA(){return`#${zn(this.r)}${zn(this.g)}${zn(this.b)}${zn((isNaN(this.opacity)?1:this.opacity)*255)}`}function mh(){const t=la(this.opacity);return`${t===1?"rgb(":"rgba("}${Fn(this.r)}, ${Fn(this.g)}, ${Fn(this.b)}${t===1?")":`, ${t})`}`}function la(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Fn(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function zn(t){return t=Fn(t),(t<16?"0":"")+t.toString(16)}function gh(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new it(t,e,n,r)}function yh(t){if(t instanceof it)return new it(t.h,t.s,t.l,t.opacity);if(t instanceof Jt||(t=Pn(t)),!t)return new it;if(t instanceof it)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 it(a,s,c,t.opacity)}function Pc(t,e,n,r){return arguments.length===1?yh(t):new it(t,e,n,r==null?1:r)}function it(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}pr(it,Pc,xi(Jt,{brighter(t){return t=t==null?mr:Math.pow(mr,t),new it(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?On:Math.pow(On,t),new it(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(Fc(t>=240?t-240:t+120,i,r),Fc(t,i,r),Fc(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new it(vh(this.h),fa(this.s),fa(this.l),la(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=la(this.opacity);return`${t===1?"hsl(":"hsla("}${vh(this.h)}, ${fa(this.s)*100}%, ${fa(this.l)*100}%${t===1?")":`, ${t})`}`}}));function vh(t){return t=(t||0)%360,t<0?t+360:t}function fa(t){return Math.max(0,Math.min(1,t||0))}function Fc(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 bh=Math.PI/180,Ah=180/Math.PI,da=18,xh=.96422,wh=1,Ch=.82521,Sh=4/29,yr=6/29,Eh=3*yr*yr,ZA=yr*yr*yr;function Dh(t){if(t instanceof mt)return new mt(t.l,t.a,t.b,t.opacity);if(t instanceof It)return Mh(t);t instanceof ye||(t=Oc(t));var e=Gc(t.r),n=Gc(t.g),r=Gc(t.b),i=Rc((.2225045*e+.7168786*n+.0606169*r)/wh),o,a;return e===n&&n===r?o=a=i:(o=Rc((.4360747*e+.3850649*n+.1430804*r)/xh),a=Rc((.0139322*e+.0971045*n+.7141733*r)/Ch)),new mt(116*i-16,500*(o-i),200*(i-a),t.opacity)}function zc(t,e,n,r){return arguments.length===1?Dh(t):new mt(t,e,n,r==null?1:r)}function mt(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}pr(mt,zc,xi(Jt,{brighter(t){return new mt(this.l+da*(t==null?1:t),this.a,this.b,this.opacity)},darker(t){return new mt(this.l-da*(t==null?1:t),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=xh*jc(e),t=wh*jc(t),n=Ch*jc(n),new ye(Uc(3.1338561*e-1.6168667*t-.4906146*n),Uc(-.9787684*e+1.9161415*t+.033454*n),Uc(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function Rc(t){return t>ZA?Math.pow(t,1/3):t/Eh+Sh}function jc(t){return t>yr?t*t*t:Eh*(t-Sh)}function Uc(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Gc(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function qA(t){if(t instanceof It)return new It(t.h,t.c,t.l,t.opacity);if(t instanceof mt||(t=Dh(t)),t.a===0&&t.b===0)return new It(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Ah;return new It(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Hc(t,e,n,r){return arguments.length===1?qA(t):new It(t,e,n,r==null?1:r)}function It(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function Mh(t){if(isNaN(t.h))return new mt(t.l,0,0,t.opacity);var e=t.h*bh;return new mt(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}pr(It,Hc,xi(Jt,{brighter(t){return new It(this.h,this.c,this.l+da*(t==null?1:t),this.opacity)},darker(t){return new It(this.h,this.c,this.l-da*(t==null?1:t),this.opacity)},rgb(){return Mh(this).rgb()}}));var Th=-.14861,Qc=1.78277,Vc=-.29227,ha=-.90649,Ci=1.97294,Ih=Ci*ha,kh=Ci*Qc,Nh=Qc*Vc-ha*Th;function KA(t){if(t instanceof Rn)return new Rn(t.h,t.s,t.l,t.opacity);t instanceof ye||(t=Oc(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(Nh*r+Ih*e-kh*n)/(Nh+Ih-kh),o=r-i,a=(Ci*(n-i)-Vc*o)/ha,s=Math.sqrt(a*a+o*o)/(Ci*i*(1-i)),c=s?Math.atan2(a,o)*Ah-120:NaN;return new Rn(c<0?c+360:c,s,i,t.opacity)}function Yc(t,e,n,r){return arguments.length===1?KA(t):new Rn(t,e,n,r==null?1:r)}function Rn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}pr(Rn,Yc,xi(Jt,{brighter(t){return t=t==null?mr:Math.pow(mr,t),new Rn(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?On:Math.pow(On,t),new Rn(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*bh,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*(Th*r+Qc*i)),255*(e+n*(Vc*r+ha*i)),255*(e+n*(Ci*r)),this.opacity)}}));function Lh(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 Bh(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 Lh((n-r/e)*e,a,i,o,s)}}function Oh(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 Lh((n-r/e)*e,i,o,a,s)}}var pa=t=>()=>t;function Ph(t,e){return function(n){return t+n*e}}function JA(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 ma(t,e){var n=e-t;return n?Ph(t,n>180||n<-180?n-360*Math.round(n/360):n):pa(isNaN(t)?e:t)}function $A(t){return(t=+t)==1?ve:function(e,n){return n-e?JA(e,n,t):pa(isNaN(e)?n:e)}}function ve(t,e){var n=e-t;return n?Ph(t,n):pa(isNaN(t)?e:t)}var _c=function t(e){var n=$A(e);function r(i,o){var a=n((i=ua(i)).r,(o=ua(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 Fh(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=ua(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 ex=Fh(Bh),tx=Fh(Oh);function Wc(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 zh(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function nx(t,e){return(zh(e)?Wc:Rh)(t,e)}function Rh(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 jh(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function ot(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function Uh(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 Xc=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Zc=new RegExp(Xc.source,"g");function rx(t){return function(){return t}}function ix(t){return function(e){return t(e)+""}}function Gh(t,e){var n=Xc.lastIndex=Zc.lastIndex=0,r,i,o,a=-1,s=[],c=[];for(t=t+"",e=e+"";(r=Xc.exec(t))&&(i=Zc.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:ot(r,i)})),n=Zc.lastIndex;return n<e.length&&(o=e.slice(n),s[a]?s[a]+=o:s[++a]=o),s.length<2?c[0]?ix(c[0].x):rx(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"?pa(e):(n==="number"?ot:n==="string"?(r=Pn(e))?(e=r,_c):Gh:e instanceof Pn?_c:e instanceof Date?jh:zh(e)?Wc:Array.isArray(e)?Rh:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?Uh:ot)(t,e)}function ox(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function ax(t,e){var n=ma(+t,+e);return function(r){var i=n(r);return i-360*Math.floor(i/360)}}function Si(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var Hh=180/Math.PI,qc={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Qh(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)*Hh,skewX:Math.atan(c)*Hh,scaleX:a,scaleY:s}}var ga;function sx(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?qc:Qh(e.a,e.b,e.c,e.d,e.e,e.f)}function cx(t){return t==null||(ga||(ga=document.createElementNS("http://www.w3.org/2000/svg","g")),ga.setAttribute("transform",t),!(t=ga.transform.baseVal.consolidate()))?qc:(t=t.matrix,Qh(t.a,t.b,t.c,t.d,t.e,t.f))}function Vh(t,e,n,r){function i(u){return u.length?u.pop()+" ":""}function o(u,f,l,d,h,p){if(u!==l||f!==d){var m=h.push("translate(",null,e,null,n);p.push({i:m-4,x:ot(u,l)},{i:m-2,x:ot(f,d)})}else(l||d)&&h.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:ot(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:ot(u,f)}):f&&l.push(i(l)+"skewX("+f+r)}function c(u,f,l,d,h,p){if(u!==l||f!==d){var m=h.push(i(h)+"scale(",null,",",null,")");p.push({i:m-4,x:ot(u,l)},{i:m-2,x:ot(f,d)})}else(l!==1||d!==1)&&h.push(i(h)+"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(h){for(var p=-1,m=d.length,y;++p<m;)l[(y=d[p]).i]=y.x(h);return l.join("")}}}var ux=Vh(sx,"px, ","px)","deg)"),lx=Vh(cx,", ",")",")"),fx=1e-12;function Yh(t){return((t=Math.exp(t))+1/t)/2}function dx(t){return((t=Math.exp(t))-1/t)/2}function hx(t){return((t=Math.exp(2*t))-1)/(t+1)}var _h=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],h=f-s,p=l-c,m=h*h+p*p,y,g;if(m<fx)g=Math.log(d/u)/e,y=function(w){return[s+w*h,c+w*p,u*Math.exp(e*w*g)]};else{var A=Math.sqrt(m),x=(d*d-u*u+r*m)/(2*u*n*A),C=(d*d-u*u-r*m)/(2*d*n*A),b=Math.log(Math.sqrt(x*x+1)-x),v=Math.log(Math.sqrt(C*C+1)-C);g=(v-b)/e,y=function(w){var E=w*g,k=Yh(b),L=u/(n*A)*(k*hx(e*E+b)-dx(b));return[s+L*h,c+L*p,u*k/Yh(e*E+b)]}}return y.duration=g*1e3*e/Math.SQRT2,y}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 Wh(t){return function(e,n){var r=t((e=Pc(e)).h,(n=Pc(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+""}}}var px=Wh(ma),mx=Wh(ve);function gx(t,e){var n=ve((t=zc(t)).l,(e=zc(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 Xh(t){return function(e,n){var r=t((e=Hc(e)).h,(n=Hc(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+""}}}var yx=Xh(ma),vx=Xh(ve);function Zh(t){return function e(n){n=+n;function r(i,o){var a=t((i=Yc(i)).h,(o=Yc(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)}var bx=Zh(ma),Ax=Zh(ve);function Kc(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 xx(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}var wx=Object.freeze(Object.defineProperty({__proto__:null,interpolate:$t,interpolateArray:nx,interpolateBasis:Bh,interpolateBasisClosed:Oh,interpolateDate:jh,interpolateDiscrete:ox,interpolateHue:ax,interpolateNumber:ot,interpolateNumberArray:Wc,interpolateObject:Uh,interpolateRound:Si,interpolateString:Gh,interpolateTransformCss:ux,interpolateTransformSvg:lx,interpolateZoom:_h,interpolateRgb:_c,interpolateRgbBasis:ex,interpolateRgbBasisClosed:tx,interpolateHsl:px,interpolateHslLong:mx,interpolateLab:gx,interpolateHcl:yx,interpolateHclLong:vx,interpolateCubehelix:bx,interpolateCubehelixLong:Ax,piecewise:Kc,quantize:xx},Symbol.toStringTag,{value:"Module"}));function Cx(t){return function(){return t}}function Jc(t){return+t}var qh=[0,1];function Pe(t){return t}function $c(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Cx(isNaN(e)?NaN:.5)}function Sx(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function Ex(t,e,n){var r=t[0],i=t[1],o=e[0],a=e[1];return i<r?(r=$c(i,r),o=n(a,o)):(r=$c(r,i),o=n(o,a)),function(s){return o(r(s))}}function Dx(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]=$c(t[a],t[a+1]),o[a]=n(e[a],e[a+1]);return function(s){var c=fr(t,s,1,r)-1;return o[c](i[c](s))}}function Ei(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function ya(){var t=qh,e=qh,n=$t,r,i,o,a=Pe,s,c,u;function f(){var d=Math.min(t.length,e.length);return a!==Pe&&(a=Sx(t[0],t[d-1])),s=d>2?Dx:Ex,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),ot)))(d)))},l.domain=function(d){return arguments.length?(t=Array.from(d,Jc),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=Si,f()},l.clamp=function(d){return arguments.length?(a=d?!0:Pe,f()):a!==Pe},l.interpolate=function(d){return arguments.length?(n=d,f()):n},l.unknown=function(d){return arguments.length?(o=d,l):o},function(d,h){return r=d,i=h,f()}}function Kh(){return ya()(Pe,Pe)}function Jh(t,e,n,r){var i=Tn(t,e,n),o;switch(r=Wt(r==null?",f":r),r.type){case"s":{var a=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=kd(i,a))&&(r.precision=o),uc(r,a)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=Nd(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=Id(i))&&(r.precision=o-(r.type==="%")*2);break}}return he(r)}function jn(t){var e=t.domain;return t.ticks=function(n){var r=e();return Ko(r[0],r[r.length-1],n==null?10:n)},t.tickFormat=function(n,r){var i=e();return Jh(i[0],i[i.length-1],n==null?10:n,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=wd(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 $h(){var t=Kh();return t.copy=function(){return Ei(t,$h())},ht.apply(t,arguments),jn(t)}function e0(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,Jc),n):t.slice()},n.unknown=function(r){return arguments.length?(e=r,n):e},n.copy=function(){return e0(t).unknown(e)},t=arguments.length?Array.from(t,Jc):[0,1],jn(n)}function t0(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 n0(t){return Math.log(t)}function r0(t){return Math.exp(t)}function Mx(t){return-Math.log(-t)}function Tx(t){return-Math.exp(-t)}function Ix(t){return isFinite(t)?+("1e"+t):t<0?0:t}function kx(t){return t===10?Ix:t===Math.E?Math.exp:e=>Math.pow(t,e)}function Nx(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 i0(t){return(e,n)=>-t(-e,n)}function eu(t){const e=t(n0,r0),n=e.domain;let r=10,i,o;function a(){return i=Nx(r),o=kx(r),n()[0]<0?(i=i0(i),o=i0(o),t(Mx,Tx)):t(n0,r0),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),h=i(f),p,m;const y=s==null?10:+s;let g=[];if(!(r%1)&&h-d<y){if(d=Math.floor(d),h=Math.ceil(h),u>0){for(;d<=h;++d)for(p=1;p<r;++p)if(m=d<0?p/o(-d):p*o(d),!(m<u)){if(m>f)break;g.push(m)}}else for(;d<=h;++d)for(p=r-1;p>=1;--p)if(m=d>0?p/o(-d):p*o(d),!(m<u)){if(m>f)break;g.push(m)}g.length*2<y&&(g=Ko(u,f,y))}else g=Ko(d,h,Math.min(h-d,y)).map(o);return l?g.reverse():g},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=he(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(t0(n(),{floor:s=>o(Math.floor(i(s))),ceil:s=>o(Math.ceil(i(s)))})),e}function tu(){const t=eu(ya()).domain([1,10]);return t.copy=()=>Ei(t,tu()).base(t.base()),ht.apply(t,arguments),t}function o0(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function a0(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function nu(t){var e=1,n=t(o0(e),a0(e));return n.constant=function(r){return arguments.length?t(o0(e=+r),a0(e)):e},jn(n)}function s0(){var t=nu(ya());return t.copy=function(){return Ei(t,s0()).constant(t.constant())},ht.apply(t,arguments)}function c0(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function Lx(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Bx(t){return t<0?-t*t:t*t}function ru(t){var e=t(Pe,Pe),n=1;function r(){return n===1?t(Pe,Pe):n===.5?t(Lx,Bx):t(c0(n),c0(1/n))}return e.exponent=function(i){return arguments.length?(n=+i,r()):n},jn(e)}function iu(){var t=ru(ya());return t.copy=function(){return Ei(t,iu()).exponent(t.exponent())},ht.apply(t,arguments),t}function Ox(){return iu.apply(null,arguments).exponent(.5)}function u0(){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]=sc(t,a/s);return o}function o(a){return a==null||isNaN(a=+a)?r:e[fr(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 u0().domain(t).range(e).unknown(r)},ht.apply(o,arguments)}function l0(){var t=0,e=1,n=1,r=[.5],i=[0,1],o;function a(c){return c!=null&&c<=c?i[fr(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 l0().domain([t,e]).range(i).unknown(o)},ht.apply(jn(a),arguments)}function f0(){var t=[.5],e=[0,1],n,r=1;function i(o){return o!=null&&o<=o?e[fr(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 f0().domain(t).range(e).unknown(n)},ht.apply(i,arguments)}function Px(t){return new Date(t)}function Fx(t){return t instanceof Date?+t:+new Date(+t)}function ou(t,e,n,r,i,o,a,s,c,u){var f=Kh(),l=f.invert,d=f.domain,h=u(".%L"),p=u(":%S"),m=u("%I:%M"),y=u("%I %p"),g=u("%a %d"),A=u("%b %d"),x=u("%B"),C=u("%Y");function b(v){return(c(v)<v?h:s(v)<v?p:a(v)<v?m:o(v)<v?y:r(v)<v?i(v)<v?g:A:n(v)<v?x:C)(v)}return f.invert=function(v){return new Date(l(v))},f.domain=function(v){return arguments.length?d(Array.from(v,Fx)):d().map(Px)},f.ticks=function(v){var w=d();return t(w[0],w[w.length-1],v==null?10:v)},f.tickFormat=function(v,w){return w==null?b:u(w)},f.nice=function(v){var w=d();return(!v||typeof v.range!="function")&&(v=e(w[0],w[w.length-1],v==null?10:v)),v?d(t0(w,v)):f},f.copy=function(){return Ei(f,ou(t,e,n,r,i,o,a,s,c,u))},f}function zx(){return ht.apply(ou(ib,ob,Zt,na,ta,kn,yc,gc,Xt,Ec).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function Rx(){return ht.apply(ou(nb,rb,qt,ia,ra,Ln,Ac,bc,Xt,Dc).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function va(){var t=0,e=1,n,r,i,o,a=Pe,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 h,p;return arguments.length?([h,p]=d,a=l(h,p),u):[a(0),a(1)]}}return u.range=f($t),u.rangeRound=f(Si),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 au(){var t=jn(va()(Pe));return t.copy=function(){return en(t,au())},Kt.apply(t,arguments)}function d0(){var t=eu(va()).domain([1,10]);return t.copy=function(){return en(t,d0()).base(t.base())},Kt.apply(t,arguments)}function h0(){var t=nu(va());return t.copy=function(){return en(t,h0()).constant(t.constant())},Kt.apply(t,arguments)}function su(){var t=ru(va());return t.copy=function(){return en(t,su()).exponent(t.exponent())},Kt.apply(t,arguments)}function jx(){return su.apply(null,arguments).exponent(.5)}function ba(){var t=0,e=.5,n=1,r=1,i,o,a,s,c,u=Pe,f,l=!1,d;function h(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))}h.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,h):[t,e,n]},h.clamp=function(m){return arguments.length?(l=!!m,h):l},h.interpolator=function(m){return arguments.length?(u=m,h):u};function p(m){return function(y){var g,A,x;return arguments.length?([g,A,x]=y,u=Kc(m,[g,A,x]),h):[u(0),u(.5),u(1)]}}return h.range=p($t),h.rangeRound=p(Si),h.unknown=function(m){return arguments.length?(d=m,h):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,h}}function p0(){var t=jn(ba()(Pe));return t.copy=function(){return en(t,p0())},Kt.apply(t,arguments)}function m0(){var t=eu(ba()).domain([.1,1,10]);return t.copy=function(){return en(t,m0()).base(t.base())},Kt.apply(t,arguments)}function g0(){var t=nu(ba());return t.copy=function(){return en(t,g0()).constant(t.constant())},Kt.apply(t,arguments)}function cu(){var t=ru(ba());return t.copy=function(){return en(t,cu()).exponent(t.exponent())},Kt.apply(t,arguments)}function Ux(){return cu.apply(null,arguments).exponent(.5)}function uu(t,e,n){const r=t-e+n*2;return t?r>0?r:1:0}const Gx="identity",vr="linear",tn="log",Di="pow",Mi="sqrt",Aa="symlog",y0="time",v0="utc",gt="sequential",br="diverging",lu="quantile",b0="quantize",A0="threshold",fu="ordinal",du="point",x0="band",hu="bin-ordinal",pe="continuous",Ti="discrete",Ii="discretizing",Ke="interpolating",w0="temporal";function Hx(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 Qx(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 pu(){const t=Bc().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],h=r[1-d],p=uu(l,s,c);let m=r[d-0];i=(h-m)/(p||1),a&&(i=Math.floor(i)),m+=(h-m-i*(l-s))*u,o=i*(1-s),a&&(m=Math.round(m),o=Math.round(o));const y=_t(l).map(g=>m+i*g);return n(d?y.reverse():y)}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],h=d?n().reverse():n(),p=h.length-1;let m=+l[0],y=+l[1],g,A,x;if(!(m!==m||y!==y)&&(y<m&&(x=m,m=y,y=x),!(y<h[0]||m>r[1-d])))return g=Math.max(0,tc(h,m)-1),A=m===y?g:tc(h,y)-1,m-h[g]>o+1e-10&&++g,d&&(x=g,g=p-A,A=p-x),g>A?void 0:e().slice(g,A+1)},t.invert=function(l){const d=t.invertRange([l,l]);return d&&d[0]},t.copy=function(){return pu().domain(e()).range(r).round(a).paddingInner(s).paddingOuter(c).align(u)},f()}function C0(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return C0(e())},t}function Vx(){return C0(pu().paddingInner(1))}var Yx=Array.prototype.map;function _x(t){return Yx.call(t,ri)}const Wx=Array.prototype.slice;function S0(){let t=[],e=[];function n(r){return r==null||r!==r?void 0:e[(fr(t,r)-1)%e.length]}return n.domain=function(r){return arguments.length?(t=_x(r),n):t.slice()},n.range=function(r){return arguments.length?(e=Wx.call(r),n):e.slice()},n.tickFormat=function(r,i){return Jh(t[0],rt(t),r==null?10:r,i)},n.copy=function(){return S0().domain(n.domain()).range(n.range())},n}const xa={};function Xx(t,e,n){const r=function(){const o=e();return o.invertRange||(o.invertRange=o.invert?Hx(o):o.invertExtent?Qx(o):void 0),o.type=t,o};return r.metadata=Xo(qs(n)),r}function q(t,e,n){return arguments.length>1?(xa[t]=Xx(t,e,n),this):Zx(t)?xa[t]:void 0}q(Gx,e0),q(vr,$h,pe),q(tn,tu,[pe,tn]),q(Di,iu,pe),q(Mi,Ox,pe),q(Aa,s0,pe),q(y0,zx,[pe,w0]),q(v0,Rx,[pe,w0]),q(gt,au,[pe,Ke]),q("".concat(gt,"-").concat(vr),au,[pe,Ke]),q("".concat(gt,"-").concat(tn),d0,[pe,Ke,tn]),q("".concat(gt,"-").concat(Di),su,[pe,Ke]),q("".concat(gt,"-").concat(Mi),jx,[pe,Ke]),q("".concat(gt,"-").concat(Aa),h0,[pe,Ke]),q("".concat(br,"-").concat(vr),p0,[pe,Ke]),q("".concat(br,"-").concat(tn),m0,[pe,Ke,tn]),q("".concat(br,"-").concat(Di),cu,[pe,Ke]),q("".concat(br,"-").concat(Mi),Ux,[pe,Ke]),q("".concat(br,"-").concat(Aa),g0,[pe,Ke]),q(lu,u0,[Ii,lu]),q(b0,l0,Ii),q(A0,f0,Ii),q(hu,S0,[Ti,Ii]),q(fu,Bc,Ti),q(x0,pu,Ti),q(du,Vx,Ti);function Zx(t){return En(xa,t)}function ki(t,e){const n=xa[t];return n&&n.metadata[e]}function Ue(t){return ki(t,pe)}function nn(t){return ki(t,Ti)}function Ar(t){return ki(t,Ii)}function E0(t){return ki(t,tn)}function wa(t){return ki(t,Ke)}function qx(t,e){const n=e[0],r=rt(e)-n;return function(i){return t(n+i*r)}}function Ca(t,e,n){return Kc(D0(e||"rgb",n),t)}function Kx(t,e){const n=new Array(e),r=e+1;for(let i=0;i<e;)n[i]=t(++i/r);return n}function D0(t,e){const n=wx[Jx(t)];return e!=null&&n&&n.gamma?n.gamma(e):n}function Jx(t){return"interpolate"+t.toLowerCase().split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("")}const $x={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"},ew={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 M0(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 T0(t,e){for(const n in t)mu(n,e(t[n]))}const I0={};T0(ew,M0),T0($x,t=>Ca(M0(t)));function mu(t,e){return t=t&&t.toLowerCase(),arguments.length>1?(I0[t]=e,this):I0[t]}var Rk="";function tw(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 Oc;const Jn=globalThis.trustedTypes,Ph=Jn?Jn.createPolicy("lit-html",{createHTML:t=>t}):void 0,qt=`lit$${(Math.random()+"").slice(9)}$`,Fh="?"+qt,Qx=`<${Fh}>`,$n=document,oi=(t="")=>$n.createComment(t),si=t=>t===null||typeof t!="object"&&typeof t!="function",zh=Array.isArray,Vx=t=>{var e;return zh(t)||typeof((e=t)===null||e===void 0?void 0:e[Symbol.iterator])=="function"},ai=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Rh=/-->/g,Uh=/>/g,wn=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,jh=/'/g,Gh=/"/g,Hh=/^(?:script|style|textarea)$/i,_x=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),M=_x(1),xe=Symbol.for("lit-noChange"),R=Symbol.for("lit-nothing"),Qh=new WeakMap,Re=(t,e,n)=>{var r,i;const o=(r=n==null?void 0:n.renderBefore)!==null&&r!==void 0?r:e;let s=o._$litPart$;if(s===void 0){const a=(i=n==null?void 0:n.renderBefore)!==null&&i!==void 0?i:null;o._$litPart$=s=new ui(e.insertBefore(oi(),a),a,void 0,n!=null?n:{})}return s._$AI(t),s},er=$n.createTreeWalker($n,129,null,!1),Yx=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",s=ai;for(let c=0;c<n;c++){const u=t[c];let f,l,d=-1,h=0;for(;h<u.length&&(s.lastIndex=h,l=s.exec(u),l!==null);)h=s.lastIndex,s===ai?l[1]==="!--"?s=Rh:l[1]!==void 0?s=Uh:l[2]!==void 0?(Hh.test(l[2])&&(i=RegExp("</"+l[2],"g")),s=wn):l[3]!==void 0&&(s=wn):s===wn?l[0]===">"?(s=i!=null?i:ai,d=-1):l[1]===void 0?d=-2:(d=s.lastIndex-l[2].length,f=l[1],s=l[3]===void 0?wn:l[3]==='"'?Gh:jh):s===Gh||s===jh?s=wn:s===Rh||s===Uh?s=ai:(s=wn,i=void 0);const p=s===wn&&t[c+1].startsWith("/>")?" ":"";o+=s===ai?u+Qx:d>=0?(r.push(f),u.slice(0,d)+"$lit$"+u.slice(d)+qt+p):u+qt+(d===-2?(r.push(void 0),c):p)}const a=o+(t[n]||"<?>")+(e===2?"</svg>":"");return[Ph!==void 0?Ph.createHTML(a):a,r]};class ci{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let o=0,s=0;const a=e.length-1,c=this.parts,[u,f]=Yx(e,n);if(this.el=ci.createElement(u,r),er.currentNode=this.el.content,n===2){const l=this.el.content,d=l.firstChild;d.remove(),l.append(...d.childNodes)}for(;(i=er.nextNode())!==null&&c.length<a;){if(i.nodeType===1){if(i.hasAttributes()){const l=[];for(const d of i.getAttributeNames())if(d.endsWith("$lit$")||d.startsWith(qt)){const h=f[s++];if(l.push(d),h!==void 0){const p=i.getAttribute(h.toLowerCase()+"$lit$").split(qt),g=/([.?@])?(.*)/.exec(h);c.push({type:1,index:o,name:g[2],strings:p,ctor:g[1]==="."?Xx:g[1]==="?"?Zx:g[1]==="@"?Kx:Yo})}else c.push({type:6,index:o})}for(const d of l)i.removeAttribute(d)}if(Hh.test(i.tagName)){const l=i.textContent.split(qt),d=l.length-1;if(d>0){i.textContent=Jn?Jn.emptyScript:"";for(let h=0;h<d;h++)i.append(l[h],oi()),er.nextNode(),c.push({type:2,index:++o});i.append(l[d],oi())}}}else if(i.nodeType===8)if(i.data===Fh)c.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(qt,l+1))!==-1;)c.push({type:7,index:o}),l+=qt.length-1}o++}}static createElement(e,n){const r=$n.createElement("template");return r.innerHTML=e,r}}function tr(t,e,n=t,r){var i,o,s,a;if(e===xe)return e;let c=r!==void 0?(i=n._$Cl)===null||i===void 0?void 0:i[r]:n._$Cu;const u=si(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?((s=(a=n)._$Cl)!==null&&s!==void 0?s:a._$Cl=[])[r]=c:n._$Cu=c),c!==void 0&&(e=tr(t,c._$AS(t,e.values),c,r)),e}class Wx{constructor(e,n){this.v=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(e){var n;const{el:{content:r},parts:i}=this._$AD,o=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:$n).importNode(r,!0);er.currentNode=o;let s=er.nextNode(),a=0,c=0,u=i[0];for(;u!==void 0;){if(a===u.index){let f;u.type===2?f=new ui(s,s.nextSibling,this,e):u.type===1?f=new u.ctor(s,u.name,u.strings,this,e):u.type===6&&(f=new Jx(s,this,e)),this.v.push(f),u=i[++c]}a!==(u==null?void 0:u.index)&&(s=er.nextNode(),a++)}return o}m(e){let n=0;for(const r of this.v)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}class ui{constructor(e,n,r,i){var o;this.type=2,this._$AH=R,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cg=(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._$Cg}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=tr(this,e,n),si(e)?e===R||e==null||e===""?(this._$AH!==R&&this._$AR(),this._$AH=R):e!==this._$AH&&e!==xe&&this.$(e):e._$litType$!==void 0?this.T(e):e.nodeType!==void 0?this.S(e):Vx(e)?this.M(e):this.$(e)}A(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}S(e){this._$AH!==e&&(this._$AR(),this._$AH=this.A(e))}$(e){this._$AH!==R&&si(this._$AH)?this._$AA.nextSibling.data=e:this.S($n.createTextNode(e)),this._$AH=e}T(e){var n;const{values:r,_$litType$:i}=e,o=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=ci.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===o)this._$AH.m(r);else{const s=new Wx(o,this),a=s.p(this.options);s.m(r),this.S(a),this._$AH=s}}_$AC(e){let n=Qh.get(e.strings);return n===void 0&&Qh.set(e.strings,n=new ci(e)),n}M(e){zh(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 ui(this.A(oi()),this.A(oi()),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._$Cg=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}}class Yo{constructor(e,n,r,i,o){this.type=1,this._$AH=R,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=R}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,n=this,r,i){const o=this.strings;let s=!1;if(o===void 0)e=tr(this,e,n,0),s=!si(e)||e!==this._$AH&&e!==xe,s&&(this._$AH=e);else{const a=e;let c,u;for(e=o[0],c=0;c<o.length-1;c++)u=tr(this,a[r+c],n,c),u===xe&&(u=this._$AH[c]),s||(s=!si(u)||u!==this._$AH[c]),u===R?e=R:e!==R&&(e+=(u!=null?u:"")+o[c+1]),this._$AH[c]=u}s&&!i&&this.k(e)}k(e){e===R?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class Xx extends Yo{constructor(){super(...arguments),this.type=3}k(e){this.element[this.name]=e===R?void 0:e}}const qx=Jn?Jn.emptyScript:"";class Zx extends Yo{constructor(){super(...arguments),this.type=4}k(e){e&&e!==R?this.element.setAttribute(this.name,qx):this.element.removeAttribute(this.name)}}class Kx extends Yo{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=tr(this,e,n,0))!==null&&r!==void 0?r:R)===xe)return;const i=this._$AH,o=e===R&&i!==R||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,s=e!==R&&(i===R||o);o&&this.element.removeEventListener(this.name,this,i),s&&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)}}class Jx{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){tr(this,e)}}const Vh=window.litHtmlPolyfillSupport;Vh==null||Vh(ci,ui),((Oc=globalThis.litHtmlVersions)!==null&&Oc!==void 0?Oc:globalThis.litHtmlVersions=[]).push("2.0.2");function _h(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function $x(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function qe(t){return Array.isArray(t)?t:typeof t!="undefined"?[t]:[]}function fe(t){return t[t.length-1]}const En="gs-suppress-tooltip";class ev{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(){var e;return(e=fe(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=Hx(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&tv(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&&(Re("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}Re(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(M`${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 tv(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const nv="RawCode",rv="Literal",iv="Property",ov="Identifier",sv="ArrayExpression",av="BinaryExpression",cv="CallExpression",uv="ConditionalExpression",lv="LogicalExpression",fv="MemberExpression",dv="ObjectExpression",hv="UnaryExpression";function rt(t){this.type=t}rt.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=pv(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function pv(t){switch(t.type){case sv:return t.elements;case av:case lv:return[t.left,t.right];case cv:return[t.callee].concat(t.arguments);case uv:return[t.test,t.consequent,t.alternate];case fv:return[t.object,t.property];case dv:return t.properties;case iv:return[t.key,t.value];case hv:return[t.argument];case ov:case rv:case nv:default:return[]}}var ht,N,C,ve,X,Wo=1,li=2,Sn=3,Zt=4,Xo=5,Cn=6,Oe=7,fi=8,gv=9;ht={},ht[Wo]="Boolean",ht[li]="<end>",ht[Sn]="Identifier",ht[Zt]="Keyword",ht[Xo]="Null",ht[Cn]="Numeric",ht[Oe]="Punctuator",ht[fi]="String",ht[gv]="RegularExpression";var mv="ArrayExpression",yv="BinaryExpression",Av="CallExpression",bv="ConditionalExpression",Yh="Identifier",xv="Literal",vv="LogicalExpression",wv="MemberExpression",Ev="ObjectExpression",Sv="Property",Cv="UnaryExpression",ge="Unexpected token %0",Dv="Unexpected number",Mv="Unexpected string",Iv="Unexpected identifier",Tv="Unexpected reserved word",Nv="Unexpected end of input",Bc="Invalid regular expression",Pc="Invalid regular expression: missing /",Wh="Octal literals are not allowed in strict mode.",Lv="Duplicate data property in object literal not allowed in strict mode",ye="ILLEGAL",di="Disabled.",kv=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]"),Ov=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 qo(t,e){if(!t)throw new Error("ASSERT: "+e)}function Mt(t){return t>=48&&t<=57}function Fc(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function hi(t){return"01234567".indexOf(t)>=0}function Bv(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 pi(t){return t===10||t===13||t===8232||t===8233}function gi(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&kv.test(String.fromCharCode(t))}function Zo(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&Ov.test(String.fromCharCode(t))}const Pv={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 Xh(){for(;C<ve;){const t=N.charCodeAt(C);if(Bv(t)||pi(t))++C;else break}}function zc(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)C<ve&&Fc(N[C])?(r=N[C++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):Q({},ge,ye);return String.fromCharCode(i)}function Fv(){var t,e,n,r;for(t=N[C],e=0,t==="}"&&Q({},ge,ye);C<ve&&(t=N[C++],!!Fc(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&Q({},ge,ye),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function qh(){var t,e;for(t=N.charCodeAt(C++),e=String.fromCharCode(t),t===92&&(N.charCodeAt(C)!==117&&Q({},ge,ye),++C,t=zc("u"),(!t||t==="\\"||!gi(t.charCodeAt(0)))&&Q({},ge,ye),e=t);C<ve&&(t=N.charCodeAt(C),!!Zo(t));)++C,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),N.charCodeAt(C)!==117&&Q({},ge,ye),++C,t=zc("u"),(!t||t==="\\"||!Zo(t.charCodeAt(0)))&&Q({},ge,ye),e+=t);return e}function zv(){var t,e;for(t=C++;C<ve;){if(e=N.charCodeAt(C),e===92)return C=t,qh();if(Zo(e))++C;else break}return N.slice(t,C)}function Rv(){var t,e,n;return t=C,e=N.charCodeAt(C)===92?qh():zv(),e.length===1?n=Sn:Pv.hasOwnProperty(e)?n=Zt:e==="null"?n=Xo:e==="true"||e==="false"?n=Wo:n=Sn,{type:n,value:e,start:t,end:C}}function Rc(){var t=C,e=N.charCodeAt(C),n,r=N[C],i,o,s;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++C,{type:Oe,value:String.fromCharCode(e),start:t,end:C};default:if(n=N.charCodeAt(C+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 C+=2,{type:Oe,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:C};case 33:case 61:return C+=2,N.charCodeAt(C)===61&&++C,{type:Oe,value:N.slice(t,C),start:t,end:C}}}if(s=N.substr(C,4),s===">>>=")return C+=4,{type:Oe,value:s,start:t,end:C};if(o=s.substr(0,3),o===">>>"||o==="<<="||o===">>=")return C+=3,{type:Oe,value:o,start:t,end:C};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return C+=2,{type:Oe,value:i,start:t,end:C};if(i==="//"&&Q({},ge,ye),"<>=!+-*%&|^/".indexOf(r)>=0)return++C,{type:Oe,value:r,start:t,end:C};Q({},ge,ye)}function Uv(t){let e="";for(;C<ve&&Fc(N[C]);)e+=N[C++];return e.length===0&&Q({},ge,ye),gi(N.charCodeAt(C))&&Q({},ge,ye),{type:Cn,value:parseInt("0x"+e,16),start:t,end:C}}function jv(t){let e="0"+N[C++];for(;C<ve&&hi(N[C]);)e+=N[C++];return(gi(N.charCodeAt(C))||Mt(N.charCodeAt(C)))&&Q({},ge,ye),{type:Cn,value:parseInt(e,8),octal:!0,start:t,end:C}}function Zh(){var t,e,n;if(n=N[C],qo(Mt(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=C,t="",n!=="."){if(t=N[C++],n=N[C],t==="0"){if(n==="x"||n==="X")return++C,Uv(e);if(hi(n))return jv(e);n&&Mt(n.charCodeAt(0))&&Q({},ge,ye)}for(;Mt(N.charCodeAt(C));)t+=N[C++];n=N[C]}if(n==="."){for(t+=N[C++];Mt(N.charCodeAt(C));)t+=N[C++];n=N[C]}if(n==="e"||n==="E")if(t+=N[C++],n=N[C],(n==="+"||n==="-")&&(t+=N[C++]),Mt(N.charCodeAt(C)))for(;Mt(N.charCodeAt(C));)t+=N[C++];else Q({},ge,ye);return gi(N.charCodeAt(C))&&Q({},ge,ye),{type:Cn,value:parseFloat(t),start:e,end:C}}function Gv(){var t="",e,n,r,i,o=!1;for(e=N[C],qo(e==="'"||e==='"',"String literal must starts with a quote"),n=C,++C;C<ve;)if(r=N[C++],r===e){e="";break}else if(r==="\\")if(r=N[C++],!r||!pi(r.charCodeAt(0)))switch(r){case"u":case"x":N[C]==="{"?(++C,t+=Fv()):t+=zc(r);break;case"n":t+=`
11
- `;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:hi(r)?(i="01234567".indexOf(r),i!==0&&(o=!0),C<ve&&hi(N[C])&&(o=!0,i=i*8+"01234567".indexOf(N[C++]),"0123".indexOf(r)>=0&&C<ve&&hi(N[C])&&(i=i*8+"01234567".indexOf(N[C++]))),t+=String.fromCharCode(i)):t+=r;break}else r==="\r"&&N[C]===`
12
- `&&++C;else{if(pi(r.charCodeAt(0)))break;t+=r}return e!==""&&Q({},ge,ye),{type:fi,value:t,octal:o,start:n,end:C}}function Hv(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";Q({},Bc)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{Q({},Bc)}try{return new RegExp(t,e)}catch{return null}}function Qv(){var t,e,n,r,i;for(t=N[C],qo(t==="/","Regular expression literal must start with a slash"),e=N[C++],n=!1,r=!1;C<ve;)if(t=N[C++],e+=t,t==="\\")t=N[C++],pi(t.charCodeAt(0))&&Q({},Pc),e+=t;else if(pi(t.charCodeAt(0)))Q({},Pc);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||Q({},Pc),i=e.substr(1,e.length-2),{value:i,literal:e}}function Vv(){var t,e,n;for(e="",n="";C<ve&&(t=N[C],!!Zo(t.charCodeAt(0)));)++C,t==="\\"&&C<ve?Q({},ge,ye):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&Q({},Bc,n),{value:n,literal:e}}function _v(){var t,e,n,r;return X=null,Xh(),t=C,e=Qv(),n=Vv(),r=Hv(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:C}}function Yv(t){return t.type===Sn||t.type===Zt||t.type===Wo||t.type===Xo}function Kh(){if(Xh(),C>=ve)return{type:li,start:C,end:C};const t=N.charCodeAt(C);return gi(t)?Rv():t===40||t===41||t===59?Rc():t===39||t===34?Gv():t===46?Mt(N.charCodeAt(C+1))?Zh():Rc():Mt(t)?Zh():Rc()}function Be(){const t=X;return C=t.end,X=Kh(),C=t.end,t}function Jh(){const t=C;X=Kh(),C=t}function Wv(t){const e=new rt(mv);return e.elements=t,e}function $h(t,e,n){const r=new rt(t==="||"||t==="&&"?vv:yv);return r.operator=t,r.left=e,r.right=n,r}function Xv(t,e){const n=new rt(Av);return n.callee=t,n.arguments=e,n}function qv(t,e,n){const r=new rt(bv);return r.test=t,r.consequent=e,r.alternate=n,r}function Uc(t){const e=new rt(Yh);return e.name=t,e}function mi(t){const e=new rt(xv);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 e0(t,e,n){const r=new rt(wv);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function Zv(t){const e=new rt(Ev);return e.properties=t,e}function t0(t,e,n){const r=new rt(Sv);return r.key=e,r.value=n,r.kind=t,r}function Kv(t,e){const n=new rt(Cv);return n.operator=t,n.argument=e,n.prefix=!0,n}function Q(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,s)=>(qo(s<r.length,"Message reference must be in range"),r[s]));throw n=new Error(i),n.index=C,n.description=i,n}function Ko(t){t.type===li&&Q(t,Nv),t.type===Cn&&Q(t,Dv),t.type===fi&&Q(t,Mv),t.type===Sn&&Q(t,Iv),t.type===Zt&&Q(t,Tv),Q(t,ge,t.value)}function we(t){const e=Be();(e.type!==Oe||e.value!==t)&&Ko(e)}function J(t){return X.type===Oe&&X.value===t}function jc(t){return X.type===Zt&&X.value===t}function Jv(){const t=[];for(C=X.start,we("[");!J("]");)J(",")?(Be(),t.push(null)):(t.push(Dn()),J("]")||we(","));return Be(),Wv(t)}function n0(){C=X.start;const t=Be();return t.type===fi||t.type===Cn?(t.octal&&Q(t,Wh),mi(t)):Uc(t.value)}function $v(){var t,e,n,r;if(C=X.start,t=X,t.type===Sn)return n=n0(),we(":"),r=Dn(),t0("init",n,r);if(t.type===li||t.type===Oe)Ko(t);else return e=n0(),we(":"),r=Dn(),t0("init",e,r)}function ew(){var t=[],e,n,r,i={},o=String;for(C=X.start,we("{");!J("}");)e=$v(),e.key.type===Yh?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?Q({},Lv):i[r]=!0,t.push(e),J("}")||we(",");return we("}"),Zv(t)}function tw(){we("(");const t=Gc();return we(")"),t}const nw={if:1};function rw(){var t,e,n;if(J("("))return tw();if(J("["))return Jv();if(J("{"))return ew();if(t=X.type,C=X.start,t===Sn||nw[X.value])n=Uc(Be().value);else if(t===fi||t===Cn)X.octal&&Q(X,Wh),n=mi(Be());else{if(t===Zt)throw new Error(di);t===Wo?(e=Be(),e.value=e.value==="true",n=mi(e)):t===Xo?(e=Be(),e.value=null,n=mi(e)):J("/")||J("/=")?(n=mi(_v()),Jh()):Ko(Be())}return n}function iw(){const t=[];if(we("("),!J(")"))for(;C<ve&&(t.push(Dn()),!J(")"));)we(",");return we(")"),t}function ow(){C=X.start;const t=Be();return Yv(t)||Ko(t),Uc(t.value)}function sw(){return we("."),ow()}function aw(){we("[");const t=Gc();return we("]"),t}function cw(){var t,e,n;for(t=rw();;)if(J("."))n=sw(),t=e0(".",t,n);else if(J("("))e=iw(),t=Xv(t,e);else if(J("["))n=aw(),t=e0("[",t,n);else break;return t}function r0(){const t=cw();if(X.type===Oe&&(J("++")||J("--")))throw new Error(di);return t}function Jo(){var t,e;if(X.type!==Oe&&X.type!==Zt)e=r0();else{if(J("++")||J("--"))throw new Error(di);if(J("+")||J("-")||J("~")||J("!"))t=Be(),e=Jo(),e=Kv(t.value,e);else{if(jc("delete")||jc("void")||jc("typeof"))throw new Error(di);e=r0()}}return e}function i0(t){let e=0;if(t.type!==Oe&&t.type!==Zt)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 uw(){var t,e,n,r,i,o,s,a,c,u;if(t=X,c=Jo(),r=X,i=i0(r),i===0)return c;for(r.prec=i,Be(),e=[t,X],s=Jo(),o=[c,r,s];(i=i0(X))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)s=o.pop(),a=o.pop().value,c=o.pop(),e.pop(),n=$h(a,c,s),o.push(n);r=Be(),r.prec=i,o.push(r),e.push(X),n=Jo(),o.push(n)}for(u=o.length-1,n=o[u],e.pop();u>1;)e.pop(),n=$h(o[u-1].value,o[u-2],n),u-=2;return n}function Dn(){var t,e,n;return t=uw(),J("?")&&(Be(),e=Dn(),we(":"),n=Dn(),t=qv(t,e,n)),t}function Gc(){const t=Dn();if(J(","))throw new Error(di);return t}function lw(t){N=t,C=0,ve=N.length,X=null,Jh();const e=Gc();if(X.type!==li)throw new Error("Unexpect token after expression.");return e}var fw={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 dw(t){function e(s,a,c,u){let f=t(a[0]);return c&&(f=c+"("+f+")",c.lastIndexOf("new ",0)===0&&(f="("+f+")")),f+"."+s+(u<0?"":u===0?"()":"("+a.slice(1).map(t).join(",")+")")}function n(s,a,c){return u=>e(s,u,a,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(s){s.length<3&&re("Missing arguments to clamp function."),s.length>3&&re("Too many arguments to clamp function.");const a=s.map(t);return"Math.max("+a[1]+", Math.min("+a[2]+","+a[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(s){s.length<3&&re("Missing arguments to if function."),s.length>3&&re("Too many arguments to if function.");const a=s.map(t);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function hw(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function pw(t){t=t||{};const e=t.allowed?fo(t.allowed):{},n=t.forbidden?fo(t.forbidden):{},r=t.constants||fw,i=(t.functions||dw)(l),o=t.globalvar,s=t.fieldvar,a=Te(o)?o:p=>`${o}["${p}"]`;let c={},u={},f=0;function l(p){if(oe(p))return p;const g=d[p.type];return g==null&&re("Unsupported type: "+p.type),g(p)}const d={Literal:p=>p.raw,Identifier:p=>{const g=p.name;return f>0?g:hn(n,g)?re("Illegal identifier: "+g):hn(r,g)?r[g]:hn(e,g)?g:(c[g]=1,a(g))},MemberExpression:p=>{const g=!p.computed,m=l(p.object);g&&(f+=1);const y=l(p.property);return m===s&&(u[hw(y)]=1),g&&(f-=1),m+(g?"."+y:"["+y+"]")},CallExpression:p=>{p.callee.type!=="Identifier"&&re("Illegal callee type: "+p.callee.type);const g=p.callee.name,m=p.arguments,y=hn(i,g)&&i[g];return y||re("Unrecognized function: "+g),Te(y)?y(m):y+"("+m.map(l).join(",")+")"},ArrayExpression:p=>"["+p.elements.map(l).join(",")+"]",BinaryExpression:p=>"("+l(p.left)+" "+p.operator+" "+l(p.right)+")",UnaryExpression:p=>"("+p.operator+l(p.argument)+")",ConditionalExpression:p=>"("+l(p.test)+"?"+l(p.consequent)+":"+l(p.alternate)+")",LogicalExpression:p=>"("+l(p.left)+p.operator+l(p.right)+")",ObjectExpression:p=>"{"+p.properties.map(l).join(",")+"}",Property:p=>{f+=1;const g=l(p.key);return f-=1,g+":"+l(p.value)}};function h(p){const g={code:l(p),globals:Object.keys(c),fields:Object.keys(u)};return c={},u={},g}return h.functions=i,h.constants=r,h}function Hc(t,e={}){const n=pw({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=lw(t),i=n(r),o=Function("datum","global",`"use strict"; return (${i.code});`),s=a=>o(a,e);return s.fields=i.fields,s}catch(r){throw new Error(`Invalid expression: ${t}, ${r.message}`)}}function gw(){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 mw(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution(Ke(i)&&i.resolutionChannel||r);n[r]=yw(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function yw(t,e,n,r){let i;if(Ze(t)){const o=t.value;i=s=>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)),Xt(e.type)){const o=gw();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 s in i)s in i&&(o[s]=i[s]);return o},i}function Ze(t){return t&&"value"in t}function Mn(t){return t&&"field"in t}function yi(t){return t&&"datum"in t}function Ke(t){return Mn(t)||yi(t)||Vc(t)||o0(t)}function Qc(t,e){const n=t.mark.encoding[e];if(Ke(n))return n;throw new Error("Not a channel def with scale!")}function o0(t){return t&&"chrom"in t}function Vc(t){return t&&"expr"in t}const Ai=["x","y"],Aw=["x2","y2"],bw=[...Ai,...Aw];function s0(t){return Ai.includes(t)}function bi(t){return bw.includes(t)}const _c={x:"x2",y:"y2"},a0=Object.fromEntries(Object.entries(_c).map(t=>[t[1],t[0]]));function xi(t){return t in a0}function xw(t){const e=_c[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function nr(t){var e;return(e=a0[t])!=null?e:t}function In(t){return["color","fill","stroke"].includes(nr(t))}function $o(t){return["shape","squeeze"].includes(t)}function c0(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function u0(t){if(!$o(t))throw new Error("Not a discrete channel: "+t);const e=new Map(c0(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 Z(t,e=t){if(/^[A-Za-z0-9_]+$/.test(t)){const n=new Function("datum",`return datum[${JSON.stringify(t)}]`);return q(n,[t],e)}else return ro(t)}class vw{constructor(){this.accessorCreators=[],this.register(e=>{if(Mn(e))try{const n=Z(e.field);return n.constant=!1,n.fields=_e(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>Vc(e)?ww(e.expr):void 0),this.register(e=>{if(yi(e)){const r=Ly(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 ww(t){const e=Hc(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.21.2 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
10
+ */var gu;const xr=globalThis.trustedTypes,k0=xr?xr.createPolicy("lit-html",{createHTML:t=>t}):void 0,rn=`lit$${(Math.random()+"").slice(9)}$`,N0="?"+rn,nw=`<${N0}>`,wr=document,Ni=(t="")=>wr.createComment(t),Li=t=>t===null||typeof t!="object"&&typeof t!="function",L0=Array.isArray,rw=t=>{var e;return L0(t)||typeof((e=t)===null||e===void 0?void 0:e[Symbol.iterator])=="function"},Bi=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,B0=/-->/g,O0=/>/g,Un=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,P0=/'/g,F0=/"/g,z0=/^(?:script|style|textarea|title)$/i,iw=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),D=iw(1),Ee=Symbol.for("lit-noChange"),G=Symbol.for("lit-nothing"),R0=new WeakMap,Ge=(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 Pi(e.insertBefore(Ni(),s),s,void 0,n!=null?n:{})}return a._$AI(t),a},Cr=wr.createTreeWalker(wr,129,null,!1),ow=(t,e)=>{const n=t.length-1,r=[];let i,o=e===2?"<svg>":"",a=Bi;for(let c=0;c<n;c++){const u=t[c];let f,l,d=-1,h=0;for(;h<u.length&&(a.lastIndex=h,l=a.exec(u),l!==null);)h=a.lastIndex,a===Bi?l[1]==="!--"?a=B0:l[1]!==void 0?a=O0:l[2]!==void 0?(z0.test(l[2])&&(i=RegExp("</"+l[2],"g")),a=Un):l[3]!==void 0&&(a=Un):a===Un?l[0]===">"?(a=i!=null?i:Bi,d=-1):l[1]===void 0?d=-2:(d=a.lastIndex-l[2].length,f=l[1],a=l[3]===void 0?Un:l[3]==='"'?F0:P0):a===F0||a===P0?a=Un:a===B0||a===O0?a=Bi:(a=Un,i=void 0);const p=a===Un&&t[c+1].startsWith("/>")?" ":"";o+=a===Bi?u+nw:d>=0?(r.push(f),u.slice(0,d)+"$lit$"+u.slice(d)+rn+p):u+rn+(d===-2?(r.push(void 0),c):p)}const s=o+(t[n]||"<?>")+(e===2?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[k0!==void 0?k0.createHTML(s):s,r]};class Oi{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]=ow(e,n);if(this.el=Oi.createElement(u,r),Cr.currentNode=this.el.content,n===2){const l=this.el.content,d=l.firstChild;d.remove(),l.append(...d.childNodes)}for(;(i=Cr.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(rn)){const h=f[a++];if(l.push(d),h!==void 0){const p=i.getAttribute(h.toLowerCase()+"$lit$").split(rn),m=/([.?@])?(.*)/.exec(h);c.push({type:1,index:o,name:m[2],strings:p,ctor:m[1]==="."?sw:m[1]==="?"?uw:m[1]==="@"?lw:Sa})}else c.push({type:6,index:o})}for(const d of l)i.removeAttribute(d)}if(z0.test(i.tagName)){const l=i.textContent.split(rn),d=l.length-1;if(d>0){i.textContent=xr?xr.emptyScript:"";for(let h=0;h<d;h++)i.append(l[h],Ni()),Cr.nextNode(),c.push({type:2,index:++o});i.append(l[d],Ni())}}}else if(i.nodeType===8)if(i.data===N0)c.push({type:2,index:o});else{let l=-1;for(;(l=i.data.indexOf(rn,l+1))!==-1;)c.push({type:7,index:o}),l+=rn.length-1}o++}}static createElement(e,n){const r=wr.createElement("template");return r.innerHTML=e,r}}function Sr(t,e,n=t,r){var i,o,a,s;if(e===Ee)return e;let c=r!==void 0?(i=n._$Cl)===null||i===void 0?void 0:i[r]:n._$Cu;const u=Li(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)._$Cl)!==null&&a!==void 0?a:s._$Cl=[])[r]=c:n._$Cu=c),c!==void 0&&(e=Sr(t,c._$AS(t,e.values),c,r)),e}class aw{constructor(e,n){this.v=[],this._$AN=void 0,this._$AD=e,this._$AM=n}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(e){var n;const{el:{content:r},parts:i}=this._$AD,o=((n=e==null?void 0:e.creationScope)!==null&&n!==void 0?n:wr).importNode(r,!0);Cr.currentNode=o;let a=Cr.nextNode(),s=0,c=0,u=i[0];for(;u!==void 0;){if(s===u.index){let f;u.type===2?f=new Pi(a,a.nextSibling,this,e):u.type===1?f=new u.ctor(a,u.name,u.strings,this,e):u.type===6&&(f=new fw(a,this,e)),this.v.push(f),u=i[++c]}s!==(u==null?void 0:u.index)&&(a=Cr.nextNode(),s++)}return o}m(e){let n=0;for(const r of this.v)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,n),n+=r.strings.length-2):r._$AI(e[n])),n++}}class Pi{constructor(e,n,r,i){var o;this.type=2,this._$AH=G,this._$AN=void 0,this._$AA=e,this._$AB=n,this._$AM=r,this.options=i,this._$Cg=(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._$Cg}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=Sr(this,e,n),Li(e)?e===G||e==null||e===""?(this._$AH!==G&&this._$AR(),this._$AH=G):e!==this._$AH&&e!==Ee&&this.$(e):e._$litType$!==void 0?this.T(e):e.nodeType!==void 0?this.k(e):rw(e)?this.S(e):this.$(e)}M(e,n=this._$AB){return this._$AA.parentNode.insertBefore(e,n)}k(e){this._$AH!==e&&(this._$AR(),this._$AH=this.M(e))}$(e){this._$AH!==G&&Li(this._$AH)?this._$AA.nextSibling.data=e:this.k(wr.createTextNode(e)),this._$AH=e}T(e){var n;const{values:r,_$litType$:i}=e,o=typeof i=="number"?this._$AC(e):(i.el===void 0&&(i.el=Oi.createElement(i.h,this.options)),i);if(((n=this._$AH)===null||n===void 0?void 0:n._$AD)===o)this._$AH.m(r);else{const a=new aw(o,this),s=a.p(this.options);a.m(r),this.k(s),this._$AH=a}}_$AC(e){let n=R0.get(e.strings);return n===void 0&&R0.set(e.strings,n=new Oi(e)),n}S(e){L0(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 Pi(this.M(Ni()),this.M(Ni()),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._$Cg=e,(n=this._$AP)===null||n===void 0||n.call(this,e))}}class Sa{constructor(e,n,r,i,o){this.type=1,this._$AH=G,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=G}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=Sr(this,e,n,0),a=!Li(e)||e!==this._$AH&&e!==Ee,a&&(this._$AH=e);else{const s=e;let c,u;for(e=o[0],c=0;c<o.length-1;c++)u=Sr(this,s[r+c],n,c),u===Ee&&(u=this._$AH[c]),a||(a=!Li(u)||u!==this._$AH[c]),u===G?e=G:e!==G&&(e+=(u!=null?u:"")+o[c+1]),this._$AH[c]=u}a&&!i&&this.C(e)}C(e){e===G?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e!=null?e:"")}}class sw extends Sa{constructor(){super(...arguments),this.type=3}C(e){this.element[this.name]=e===G?void 0:e}}const cw=xr?xr.emptyScript:"";class uw extends Sa{constructor(){super(...arguments),this.type=4}C(e){e&&e!==G?this.element.setAttribute(this.name,cw):this.element.removeAttribute(this.name)}}class lw extends Sa{constructor(e,n,r,i,o){super(e,n,r,i,o),this.type=5}_$AI(e,n=this){var r;if((e=(r=Sr(this,e,n,0))!==null&&r!==void 0?r:G)===Ee)return;const i=this._$AH,o=e===G&&i!==G||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,a=e!==G&&(i===G||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)}}class fw{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){Sr(this,e)}}const j0=window.litHtmlPolyfillSupport;j0==null||j0(Oi,Pi),((gu=globalThis.litHtmlVersions)!==null&&gu!==void 0?gu:globalThis.litHtmlVersions=[]).push("2.2.3");function U0(t,e){return t.length==e.length&&t.every((n,r)=>t[r]===e[r])}function dw(t,e,n,r){return t.length==e.length&&t.every((i,o)=>n(t[o])===r(e[o]))}function Je(t){return Array.isArray(t)?t:typeof t!="undefined"?[t]:[]}function He(t){return t[t.length-1]}const Gn="gs-suppress-tooltip";class hw{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(){var e;return(e=He(this.enabledStack))!=null?e:!0}pushEnabledState(e){this.enabledStack.push(e),e||(this.visible=!1)}popEnabledState(){this.enabledStack.pop()}handleMouseMove(e){this.mouseCoords=tw(this.container,e);const n=performance.now();!this.visible&&!this._isPenalty()&&n-this._previousMove>500&&(this._penaltyUntil=n+70),this._lastCoords&&pw(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&&(Ge("",this.element),this.visible=!1),this._previousTooltipDatum=void 0;return}Ge(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(D`${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 pw(t,e){let n=0;for(let r=0;r<t.length;r++)n+=(t[r]-e[r])**2;return Math.sqrt(n)}const mw="RawCode",gw="Literal",yw="Property",vw="Identifier",bw="ArrayExpression",Aw="BinaryExpression",xw="CallExpression",ww="ConditionalExpression",Cw="LogicalExpression",Sw="MemberExpression",Ew="ObjectExpression",Dw="UnaryExpression";function at(t){this.type=t}at.prototype.visit=function(t){let e,n,r;if(t(this))return 1;for(e=Mw(this),n=0,r=e.length;n<r;++n)if(e[n].visit(t))return 1};function Mw(t){switch(t.type){case bw:return t.elements;case Aw:case Cw:return[t.left,t.right];case xw:return[t.callee].concat(t.arguments);case ww:return[t.test,t.consequent,t.alternate];case Sw:return[t.object,t.property];case Ew:return t.properties;case yw:return[t.key,t.value];case Dw:return[t.argument];case vw:case gw:case mw:default:return[]}}var yt,B,S,De,K,Ea=1,Fi=2,Hn=3,on=4,Da=5,Qn=6,Fe=7,zi=8,Tw=9;yt={},yt[Ea]="Boolean",yt[Fi]="<end>",yt[Hn]="Identifier",yt[on]="Keyword",yt[Da]="Null",yt[Qn]="Numeric",yt[Fe]="Punctuator",yt[zi]="String",yt[Tw]="RegularExpression";var Iw="ArrayExpression",kw="BinaryExpression",Nw="CallExpression",Lw="ConditionalExpression",G0="Identifier",Bw="Literal",Ow="LogicalExpression",Pw="MemberExpression",Fw="ObjectExpression",zw="Property",Rw="UnaryExpression",be="Unexpected token %0",jw="Unexpected number",Uw="Unexpected string",Gw="Unexpected identifier",Hw="Unexpected reserved word",Qw="Unexpected end of input",yu="Invalid regular expression",vu="Invalid regular expression: missing /",H0="Octal literals are not allowed in strict mode.",Vw="Duplicate data property in object literal not allowed in strict mode",Ce="ILLEGAL",Ri="Disabled.",Yw=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]"),_w=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 Ma(t,e){if(!t)throw new Error("ASSERT: "+e)}function kt(t){return t>=48&&t<=57}function bu(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function ji(t){return"01234567".indexOf(t)>=0}function Ww(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 Ui(t){return t===10||t===13||t===8232||t===8233}function Gi(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t===92||t>=128&&Yw.test(String.fromCharCode(t))}function Ta(t){return t===36||t===95||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===92||t>=128&&_w.test(String.fromCharCode(t))}const Xw={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 Q0(){for(;S<De;){const t=B.charCodeAt(S);if(Ww(t)||Ui(t))++S;else break}}function Au(t){var e,n,r,i=0;for(n=t==="u"?4:2,e=0;e<n;++e)S<De&&bu(B[S])?(r=B[S++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):_({},be,Ce);return String.fromCharCode(i)}function Zw(){var t,e,n,r;for(t=B[S],e=0,t==="}"&&_({},be,Ce);S<De&&(t=B[S++],!!bu(t));)e=e*16+"0123456789abcdef".indexOf(t.toLowerCase());return(e>1114111||t!=="}")&&_({},be,Ce),e<=65535?String.fromCharCode(e):(n=(e-65536>>10)+55296,r=(e-65536&1023)+56320,String.fromCharCode(n,r))}function V0(){var t,e;for(t=B.charCodeAt(S++),e=String.fromCharCode(t),t===92&&(B.charCodeAt(S)!==117&&_({},be,Ce),++S,t=Au("u"),(!t||t==="\\"||!Gi(t.charCodeAt(0)))&&_({},be,Ce),e=t);S<De&&(t=B.charCodeAt(S),!!Ta(t));)++S,e+=String.fromCharCode(t),t===92&&(e=e.substr(0,e.length-1),B.charCodeAt(S)!==117&&_({},be,Ce),++S,t=Au("u"),(!t||t==="\\"||!Ta(t.charCodeAt(0)))&&_({},be,Ce),e+=t);return e}function qw(){var t,e;for(t=S++;S<De;){if(e=B.charCodeAt(S),e===92)return S=t,V0();if(Ta(e))++S;else break}return B.slice(t,S)}function Kw(){var t,e,n;return t=S,e=B.charCodeAt(S)===92?V0():qw(),e.length===1?n=Hn:Xw.hasOwnProperty(e)?n=on:e==="null"?n=Da:e==="true"||e==="false"?n=Ea:n=Hn,{type:n,value:e,start:t,end:S}}function xu(){var t=S,e=B.charCodeAt(S),n,r=B[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:Fe,value:String.fromCharCode(e),start:t,end:S};default:if(n=B.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:Fe,value:String.fromCharCode(e)+String.fromCharCode(n),start:t,end:S};case 33:case 61:return S+=2,B.charCodeAt(S)===61&&++S,{type:Fe,value:B.slice(t,S),start:t,end:S}}}if(a=B.substr(S,4),a===">>>=")return S+=4,{type:Fe,value:a,start:t,end:S};if(o=a.substr(0,3),o===">>>"||o==="<<="||o===">>=")return S+=3,{type:Fe,value:o,start:t,end:S};if(i=o.substr(0,2),r===i[1]&&"+-<>&|".indexOf(r)>=0||i==="=>")return S+=2,{type:Fe,value:i,start:t,end:S};if(i==="//"&&_({},be,Ce),"<>=!+-*%&|^/".indexOf(r)>=0)return++S,{type:Fe,value:r,start:t,end:S};_({},be,Ce)}function Jw(t){let e="";for(;S<De&&bu(B[S]);)e+=B[S++];return e.length===0&&_({},be,Ce),Gi(B.charCodeAt(S))&&_({},be,Ce),{type:Qn,value:parseInt("0x"+e,16),start:t,end:S}}function $w(t){let e="0"+B[S++];for(;S<De&&ji(B[S]);)e+=B[S++];return(Gi(B.charCodeAt(S))||kt(B.charCodeAt(S)))&&_({},be,Ce),{type:Qn,value:parseInt(e,8),octal:!0,start:t,end:S}}function Y0(){var t,e,n;if(n=B[S],Ma(kt(n.charCodeAt(0))||n===".","Numeric literal must start with a decimal digit or a decimal point"),e=S,t="",n!=="."){if(t=B[S++],n=B[S],t==="0"){if(n==="x"||n==="X")return++S,Jw(e);if(ji(n))return $w(e);n&&kt(n.charCodeAt(0))&&_({},be,Ce)}for(;kt(B.charCodeAt(S));)t+=B[S++];n=B[S]}if(n==="."){for(t+=B[S++];kt(B.charCodeAt(S));)t+=B[S++];n=B[S]}if(n==="e"||n==="E")if(t+=B[S++],n=B[S],(n==="+"||n==="-")&&(t+=B[S++]),kt(B.charCodeAt(S)))for(;kt(B.charCodeAt(S));)t+=B[S++];else _({},be,Ce);return Gi(B.charCodeAt(S))&&_({},be,Ce),{type:Qn,value:parseFloat(t),start:e,end:S}}function e4(){var t="",e,n,r,i,o=!1;for(e=B[S],Ma(e==="'"||e==='"',"String literal must starts with a quote"),n=S,++S;S<De;)if(r=B[S++],r===e){e="";break}else if(r==="\\")if(r=B[S++],!r||!Ui(r.charCodeAt(0)))switch(r){case"u":case"x":B[S]==="{"?(++S,t+=Zw()):t+=Au(r);break;case"n":t+=`
11
+ `;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:ji(r)?(i="01234567".indexOf(r),i!==0&&(o=!0),S<De&&ji(B[S])&&(o=!0,i=i*8+"01234567".indexOf(B[S++]),"0123".indexOf(r)>=0&&S<De&&ji(B[S])&&(i=i*8+"01234567".indexOf(B[S++]))),t+=String.fromCharCode(i)):t+=r;break}else r==="\r"&&B[S]===`
12
+ `&&++S;else{if(Ui(r.charCodeAt(0)))break;t+=r}return e!==""&&_({},be,Ce),{type:zi,value:t,octal:o,start:n,end:S}}function t4(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";_({},yu)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(n)}catch{_({},yu)}try{return new RegExp(t,e)}catch{return null}}function n4(){var t,e,n,r,i;for(t=B[S],Ma(t==="/","Regular expression literal must start with a slash"),e=B[S++],n=!1,r=!1;S<De;)if(t=B[S++],e+=t,t==="\\")t=B[S++],Ui(t.charCodeAt(0))&&_({},vu),e+=t;else if(Ui(t.charCodeAt(0)))_({},vu);else if(n)t==="]"&&(n=!1);else if(t==="/"){r=!0;break}else t==="["&&(n=!0);return r||_({},vu),i=e.substr(1,e.length-2),{value:i,literal:e}}function r4(){var t,e,n;for(e="",n="";S<De&&(t=B[S],!!Ta(t.charCodeAt(0)));)++S,t==="\\"&&S<De?_({},be,Ce):(n+=t,e+=t);return n.search(/[^gimuy]/g)>=0&&_({},yu,n),{value:n,literal:e}}function i4(){var t,e,n,r;return K=null,Q0(),t=S,e=n4(),n=r4(),r=t4(e.value,n.value),{literal:e.literal+n.literal,value:r,regex:{pattern:e.value,flags:n.value},start:t,end:S}}function o4(t){return t.type===Hn||t.type===on||t.type===Ea||t.type===Da}function _0(){if(Q0(),S>=De)return{type:Fi,start:S,end:S};const t=B.charCodeAt(S);return Gi(t)?Kw():t===40||t===41||t===59?xu():t===39||t===34?e4():t===46?kt(B.charCodeAt(S+1))?Y0():xu():kt(t)?Y0():xu()}function ze(){const t=K;return S=t.end,K=_0(),S=t.end,t}function W0(){const t=S;K=_0(),S=t}function a4(t){const e=new at(Iw);return e.elements=t,e}function X0(t,e,n){const r=new at(t==="||"||t==="&&"?Ow:kw);return r.operator=t,r.left=e,r.right=n,r}function s4(t,e){const n=new at(Nw);return n.callee=t,n.arguments=e,n}function c4(t,e,n){const r=new at(Lw);return r.test=t,r.consequent=e,r.alternate=n,r}function wu(t){const e=new at(G0);return e.name=t,e}function Hi(t){const e=new at(Bw);return e.value=t.value,e.raw=B.slice(t.start,t.end),t.regex&&(e.raw==="//"&&(e.raw="/(?:)/"),e.regex=t.regex),e}function Z0(t,e,n){const r=new at(Pw);return r.computed=t==="[",r.object=e,r.property=n,r.computed||(n.member=!0),r}function u4(t){const e=new at(Fw);return e.properties=t,e}function q0(t,e,n){const r=new at(zw);return r.key=e,r.value=n,r.kind=t,r}function l4(t,e){const n=new at(Rw);return n.operator=t,n.argument=e,n.prefix=!0,n}function _(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.replace(/%(\d)/g,(o,a)=>(Ma(a<r.length,"Message reference must be in range"),r[a]));throw n=new Error(i),n.index=S,n.description=i,n}function Ia(t){t.type===Fi&&_(t,Qw),t.type===Qn&&_(t,jw),t.type===zi&&_(t,Uw),t.type===Hn&&_(t,Gw),t.type===on&&_(t,Hw),_(t,be,t.value)}function Me(t){const e=ze();(e.type!==Fe||e.value!==t)&&Ia(e)}function ee(t){return K.type===Fe&&K.value===t}function Cu(t){return K.type===on&&K.value===t}function f4(){const t=[];for(S=K.start,Me("[");!ee("]");)ee(",")?(ze(),t.push(null)):(t.push(Vn()),ee("]")||Me(","));return ze(),a4(t)}function K0(){S=K.start;const t=ze();return t.type===zi||t.type===Qn?(t.octal&&_(t,H0),Hi(t)):wu(t.value)}function d4(){var t,e,n,r;if(S=K.start,t=K,t.type===Hn)return n=K0(),Me(":"),r=Vn(),q0("init",n,r);if(t.type===Fi||t.type===Fe)Ia(t);else return e=K0(),Me(":"),r=Vn(),q0("init",e,r)}function h4(){var t=[],e,n,r,i={},o=String;for(S=K.start,Me("{");!ee("}");)e=d4(),e.key.type===G0?n=e.key.name:n=o(e.key.value),r="$"+n,Object.prototype.hasOwnProperty.call(i,r)?_({},Vw):i[r]=!0,t.push(e),ee("}")||Me(",");return Me("}"),u4(t)}function p4(){Me("(");const t=Su();return Me(")"),t}const m4={if:1};function g4(){var t,e,n;if(ee("("))return p4();if(ee("["))return f4();if(ee("{"))return h4();if(t=K.type,S=K.start,t===Hn||m4[K.value])n=wu(ze().value);else if(t===zi||t===Qn)K.octal&&_(K,H0),n=Hi(ze());else{if(t===on)throw new Error(Ri);t===Ea?(e=ze(),e.value=e.value==="true",n=Hi(e)):t===Da?(e=ze(),e.value=null,n=Hi(e)):ee("/")||ee("/=")?(n=Hi(i4()),W0()):Ia(ze())}return n}function y4(){const t=[];if(Me("("),!ee(")"))for(;S<De&&(t.push(Vn()),!ee(")"));)Me(",");return Me(")"),t}function v4(){S=K.start;const t=ze();return o4(t)||Ia(t),wu(t.value)}function b4(){return Me("."),v4()}function A4(){Me("[");const t=Su();return Me("]"),t}function x4(){var t,e,n;for(t=g4();;)if(ee("."))n=b4(),t=Z0(".",t,n);else if(ee("("))e=y4(),t=s4(t,e);else if(ee("["))n=A4(),t=Z0("[",t,n);else break;return t}function J0(){const t=x4();if(K.type===Fe&&(ee("++")||ee("--")))throw new Error(Ri);return t}function ka(){var t,e;if(K.type!==Fe&&K.type!==on)e=J0();else{if(ee("++")||ee("--"))throw new Error(Ri);if(ee("+")||ee("-")||ee("~")||ee("!"))t=ze(),e=ka(),e=l4(t.value,e);else{if(Cu("delete")||Cu("void")||Cu("typeof"))throw new Error(Ri);e=J0()}}return e}function $0(t){let e=0;if(t.type!==Fe&&t.type!==on)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 w4(){var t,e,n,r,i,o,a,s,c,u;if(t=K,c=ka(),r=K,i=$0(r),i===0)return c;for(r.prec=i,ze(),e=[t,K],a=ka(),o=[c,r,a];(i=$0(K))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)a=o.pop(),s=o.pop().value,c=o.pop(),e.pop(),n=X0(s,c,a),o.push(n);r=ze(),r.prec=i,o.push(r),e.push(K),n=ka(),o.push(n)}for(u=o.length-1,n=o[u],e.pop();u>1;)e.pop(),n=X0(o[u-1].value,o[u-2],n),u-=2;return n}function Vn(){var t,e,n;return t=w4(),ee("?")&&(ze(),e=Vn(),Me(":"),n=Vn(),t=c4(t,e,n)),t}function Su(){const t=Vn();if(ee(","))throw new Error(Ri);return t}function C4(t){B=t,S=0,De=B.length,K=null,W0();const e=Su();if(K.type!==Fi)throw new Error("Unexpect token after expression.");return e}var S4={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 E4(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&&ce("Missing arguments to clamp function."),a.length>3&&ce("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&&ce("Missing arguments to if function."),a.length>3&&ce("Too many arguments to if function.");const s=a.map(t);return"("+s[0]+"?"+s[1]+":"+s[2]+")"}}}function D4(t){const e=t&&t.length-1;return e&&(t[0]==='"'&&t[e]==='"'||t[0]==="'"&&t[e]==="'")?t.slice(1,-1):t}function M4(t){t=t||{};const e=t.allowed?Xo(t.allowed):{},n=t.forbidden?Xo(t.forbidden):{},r=t.constants||S4,i=(t.functions||E4)(l),o=t.globalvar,a=t.fieldvar,s=Be(o)?o:p=>`${o}["${p}"]`;let c={},u={},f=0;function l(p){if(re(p))return p;const m=d[p.type];return m==null&&ce("Unsupported type: "+p.type),m(p)}const d={Literal:p=>p.raw,Identifier:p=>{const m=p.name;return f>0?m:En(n,m)?ce("Illegal identifier: "+m):En(r,m)?r[m]:En(e,m)?m:(c[m]=1,s(m))},MemberExpression:p=>{const m=!p.computed,y=l(p.object);m&&(f+=1);const g=l(p.property);return y===a&&(u[D4(g)]=1),m&&(f-=1),y+(m?"."+g:"["+g+"]")},CallExpression:p=>{p.callee.type!=="Identifier"&&ce("Illegal callee type: "+p.callee.type);const m=p.callee.name,y=p.arguments,g=En(i,m)&&i[m];return g||ce("Unrecognized function: "+m),Be(g)?g(y):g+"("+y.map(l).join(",")+")"},ArrayExpression:p=>"["+p.elements.map(l).join(",")+"]",BinaryExpression:p=>"("+l(p.left)+" "+p.operator+" "+l(p.right)+")",UnaryExpression:p=>"("+p.operator+l(p.argument)+")",ConditionalExpression:p=>"("+l(p.test)+"?"+l(p.consequent)+":"+l(p.alternate)+")",LogicalExpression:p=>"("+l(p.left)+p.operator+l(p.right)+")",ObjectExpression:p=>"{"+p.properties.map(l).join(",")+"}",Property:p=>{f+=1;const m=l(p.key);return f-=1,m+":"+l(p.value)}};function h(p){const m={code:l(p),globals:Object.keys(c),fields:Object.keys(u)};return c={},u={},m}return h.functions=i,h.constants=r,h}function Eu(t,e={}){const n=M4({forbidden:[],allowed:["datum"],globalvar:"global",fieldvar:"datum"});try{const r=C4(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 T4(){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 I4(t,e){const n={};e||(e=t.encoding);for(const[r,i]of Object.entries(e)){if(!i)continue;const o=t.unitView.getScaleResolution($e(i)&&i.resolutionChannel||r);n[r]=k4(e[r],o==null?void 0:o.getScale(),t.unitView.getAccessor(r),r)}return n}function k4(t,e,n,r){let i;if(st(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=T4();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 st(t){return t&&"value"in t}function Yn(t){return t&&"field"in t}function Qi(t){return t&&"datum"in t}function $e(t){return Yn(t)||Qi(t)||Mu(t)||ep(t)}function Du(t,e){const n=t.mark.encoding[e];if($e(n))return n;throw new Error("Not a channel def with scale!")}function ep(t){return t&&"chrom"in t}function Mu(t){return t&&"expr"in t}const Vi=["x","y"],N4=["x2","y2"],L4=[...Vi,...N4];function tp(t){return Vi.includes(t)}function Yi(t){return L4.includes(t)}const Tu={x:"x2",y:"y2"},np=Object.fromEntries(Object.entries(Tu).map(t=>[t[1],t[0]]));function _i(t){return t in np}function B4(t){const e=Tu[t];if(e)return e;throw new Error(`${t} has no secondary channel!`)}function Er(t){var e;return(e=np[t])!=null?e:t}function _n(t){return["color","fill","stroke"].includes(Er(t))}function Na(t){return["shape","squeeze"].includes(t)}function rp(t){switch(t){case"shape":return["circle","square","triangle-up","cross","diamond","triangle-down","triangle-right","triangle-left"]}}function ip(t){if(!Na(t))throw new Error("Not a discrete channel: "+t);const e=new Map(rp(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 J(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 Go(t)}class O4{constructor(){this.accessorCreators=[],this.register(e=>{if(Yn(e))try{const n=J(e.field);return n.constant=!1,n.fields=we(n),n}catch(n){throw new Error(`Invalid field definition: ${n.message}`)}}),this.register(e=>Mu(e)?P4(e.expr):void 0),this.register(e=>{if(Qi(e)){const r=av(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 P4(t){const e=Eu(t);return e.constant=e.fields.length==0,e}/* @license twgl.js 4.22.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
13
13
  Available via the MIT license.
14
- see: http://github.com/greggman/twgl.js for details */const Yc=5120,vi=5121,Wc=5122,Xc=5123,qc=5124,Zc=5125,Kc=5126,Ew=32819,Sw=32820,Cw=33635,Dw=5131,Mw=33640,Iw=35899,Tw=35902,Nw=36269,Lw=34042,l0={};{const t=l0;t[Yc]=Int8Array,t[vi]=Uint8Array,t[Wc]=Int16Array,t[Xc]=Uint16Array,t[qc]=Int32Array,t[Zc]=Uint32Array,t[Kc]=Float32Array,t[Ew]=Uint16Array,t[Sw]=Uint16Array,t[Cw]=Uint16Array,t[Dw]=Uint16Array,t[Mw]=Uint32Array,t[Iw]=Uint32Array,t[Tw]=Uint32Array,t[Nw]=Uint32Array,t[Lw]=Uint32Array}function Jc(t){if(t instanceof Int8Array)return Yc;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return vi;if(t instanceof Int16Array)return Wc;if(t instanceof Uint16Array)return Xc;if(t instanceof Int32Array)return qc;if(t instanceof Uint32Array)return Zc;if(t instanceof Float32Array)return Kc;throw new Error("unsupported typed array type")}function kw(t){if(t===Int8Array)return Yc;if(t===Uint8Array||t===Uint8ClampedArray)return vi;if(t===Int16Array)return Wc;if(t===Uint16Array)return Xc;if(t===Int32Array)return qc;if(t===Uint32Array)return Zc;if(t===Float32Array)return Kc;throw new Error("unsupported typed array type")}function Ow(t){const e=l0[t];if(!e)throw new Error("unknown gl type");return e}const es=typeof SharedArrayBuffer!="undefined"?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 Bw(...t){console.error(...t)}function f0(...t){console.warn(...t)}function Pw(t,e){return typeof WebGLBuffer!="undefined"&&e instanceof WebGLBuffer}function d0(t,e){return typeof WebGLRenderbuffer!="undefined"&&e instanceof WebGLRenderbuffer}function ts(t,e){return typeof WebGLTexture!="undefined"&&e instanceof WebGLTexture}function Fw(t,e){return typeof WebGLSampler!="undefined"&&e instanceof WebGLSampler}const h0=35044,pt=34962,zw=34963,Rw=34660,Uw=5120,jw=5121,Gw=5122,Hw=5123,Qw=5124,Vw=5125,_w=5126,p0={attribPrefix:""};function g0(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||h0)}function m0(t,e,n,r){if(Pw(t,e))return e;n=n||pt;const i=t.createBuffer();return g0(t,n,i,e,r),i}function y0(t){return t==="indices"}function Yw(t){return t instanceof Int8Array||t instanceof Uint8Array}function Ww(t){return t===Int8Array||t===Uint8Array}function Xw(t){return t.length?t:t.data}const qw=/coord|texture/i,Zw=/color|colour/i;function A0(t,e){let n;if(qw.test(t)?n=2:Zw.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 Kw(t,e){return t.numComponents||t.size||A0(e,Xw(t).length)}function $c(t,e){if(es(t))return t;if(es(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(y0(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function Jw(t,e){const n={};return Object.keys(e).forEach(function(r){if(!y0(r)){const i=e[r],o=i.attrib||i.name||i.attribName||p0.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!es(i.value))throw new Error("array.value is not array or typedarray");n[o]={value:i.value}}else{let s,a,c,u;if(i.buffer&&i.buffer instanceof WebGLBuffer)s=i.buffer,u=i.numComponents||i.size,a=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;a=kw(l),c=i.normalize!==void 0?i.normalize:Ww(l),u=i.numComponents||i.size||A0(r,f),s=t.createBuffer(),t.bindBuffer(pt,s),t.bufferData(pt,d,i.drawType||h0)}else{const f=$c(i,r);s=m0(t,f,void 0,i.drawType),a=Jc(f),c=i.normalize!==void 0?i.normalize:Yw(f),u=Kw(i,r)}n[o]={buffer:s,numComponents:u,type:a,normalize:c,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),t.bindBuffer(pt,null),n}function $w(t,e,n,r){n=$c(n),r!==void 0?(t.bindBuffer(pt,e.buffer),t.bufferSubData(pt,r,n)):g0(t,pt,e.buffer,n,e.drawType)}function e4(t,e){return e===Uw||e===jw?1:e===Gw||e===Hw?2:e===Qw||e===Vw||e===_w?4:0}const eu=["position","positions","a_position"];function t4(t,e){let n,r;for(r=0;r<eu.length&&(n=eu[r],!(n in e||(n=p0.attribPrefix+n,n in e)));++r);r===eu.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(pt,i.buffer);const o=t.getBufferParameter(pt,Rw);t.bindBuffer(pt,null);const s=e4(t,i.type),a=o/s,c=i.numComponents||i.size,u=a/c;if(u%1!==0)throw new Error(`numComponents ${c} not correct for length ${length}`);return u}function n4(t,e,n){const r=Jw(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const s=$c(o,"indices");i.indices=m0(t,s,zw),i.numElements=s.length,i.elementType=Jc(s)}else i.numElements||(i.numElements=t4(t,i.attribs));return i}function rr(t){return!!t.texStorage2D}const tu=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 s=e[r[o]];e[r[o]]=s?`${s} | ${o}`:o}t[i]=!0}}return function(i,o){return n(i),e[o]||(typeof o=="number"?`0x${o.toString(16)}`:o)}}(),Kt={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},ir=es,b0=function(){let t;return function(){return t=t||(typeof document!="undefined"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),x0=6406,gt=6407,ee=6408,v0=6409,w0=6410,wi=6402,E0=34041,ns=33071,r4=9728,i4=9729,It=3553,Tt=34067,Jt=32879,$t=35866,rs=34069,o4=34070,s4=34071,a4=34072,c4=34073,u4=34074,nu=10241,ru=10240,is=10242,os=10243,S0=32882,l4=33082,f4=33083,d4=33084,h4=33085,iu=3317,C0=3314,D0=32878,M0=3316,I0=3315,T0=32877,p4=37443,g4=37441,m4=37440,y4=33321,A4=36756,b4=33325,x4=33326,v4=33330,w4=33329,E4=33338,S4=33337,C4=33340,D4=33339,M4=33323,I4=36757,T4=33327,N4=33328,L4=33336,k4=33335,O4=33332,B4=33331,P4=33334,F4=33333,z4=32849,R4=35905,U4=36194,j4=36758,G4=35898,H4=35901,Q4=34843,V4=34837,_4=36221,Y4=36239,W4=36215,X4=36233,q4=36209,Z4=36227,K4=32856,J4=35907,$4=36759,e3=32855,t3=32854,n3=32857,r3=34842,i3=34836,o3=36220,s3=36238,a3=36975,c3=36214,u3=36232,l3=36226,f3=36208,d3=33189,h3=33190,p3=36012,g3=36013,m3=35056,en=5120,te=5121,ss=5122,or=5123,as=5124,Tn=5125,Ee=5126,N0=32819,L0=32820,k0=33635,it=5131,Ei=36193,ou=33640,y3=35899,A3=35902,b3=36269,x3=34042,cs=33319,sr=33320,us=6403,ar=36244,cr=36248,Nn=36249;let su;function ls(t){if(!su){const e={};e[x0]={textureFormat:x0,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[te,it,Ei,Ee]},e[v0]={textureFormat:v0,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[te,it,Ei,Ee]},e[w0]={textureFormat:w0,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[te,it,Ei,Ee]},e[gt]={textureFormat:gt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[te,it,Ei,Ee,k0]},e[ee]={textureFormat:ee,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[te,it,Ei,Ee,N0,L0]},e[wi]={textureFormat:wi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Tn,or]},e[y4]={textureFormat:us,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[te]},e[A4]={textureFormat:us,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[en]},e[b4]={textureFormat:us,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[Ee,it]},e[x4]={textureFormat:us,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[Ee]},e[v4]={textureFormat:ar,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[te]},e[w4]={textureFormat:ar,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[en]},e[O4]={textureFormat:ar,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[or]},e[B4]={textureFormat:ar,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ss]},e[P4]={textureFormat:ar,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Tn]},e[F4]={textureFormat:ar,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[as]},e[M4]={textureFormat:cs,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[te]},e[I4]={textureFormat:cs,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[en]},e[T4]={textureFormat:cs,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[Ee,it]},e[N4]={textureFormat:cs,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[Ee]},e[L4]={textureFormat:sr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[te]},e[k4]={textureFormat:sr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[en]},e[E4]={textureFormat:sr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[or]},e[S4]={textureFormat:sr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ss]},e[C4]={textureFormat:sr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Tn]},e[D4]={textureFormat:sr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[as]},e[z4]={textureFormat:gt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[te]},e[R4]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[te]},e[U4]={textureFormat:gt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[te,k0]},e[j4]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[en]},e[G4]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Ee,it,y3]},e[H4]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Ee,it,A3]},e[Q4]={textureFormat:gt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[Ee,it]},e[V4]={textureFormat:gt,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Ee]},e[_4]={textureFormat:cr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[te]},e[Y4]={textureFormat:cr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[en]},e[W4]={textureFormat:cr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[or]},e[X4]={textureFormat:cr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[ss]},e[q4]={textureFormat:cr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Tn]},e[Z4]={textureFormat:cr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[as]},e[K4]={textureFormat:ee,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[te]},e[J4]={textureFormat:ee,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[te]},e[$4]={textureFormat:ee,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[en]},e[e3]={textureFormat:ee,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[te,L0,ou]},e[t3]={textureFormat:ee,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[te,N0]},e[n3]={textureFormat:ee,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ou]},e[r3]={textureFormat:ee,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[Ee,it]},e[i3]={textureFormat:ee,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[Ee]},e[o3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[te]},e[s3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[en]},e[a3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ou]},e[c3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[or]},e[u3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ss]},e[l3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[as]},e[f3]={textureFormat:Nn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Tn]},e[d3]={textureFormat:wi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[or,Tn]},e[h3]={textureFormat:wi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Tn]},e[p3]={textureFormat:wi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ee]},e[m3]={textureFormat:E0,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[x3]},e[g3]={textureFormat:E0,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[b3]},Object.keys(e).forEach(function(n){const r=e[n];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,o){const s=r.type[o];r.bytesPerElementMap[s]=i})}),su=e}return su[t]}function v3(t,e){const n=ls(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function ur(t){const e=ls(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function O0(t){return(t&t-1)===0}function w3(t,e,n,r){if(!rr(t))return O0(e)&&O0(n);const i=ls(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function E3(t){const e=ls(t);if(!e)throw"unknown internal format";return e.textureFilterable}function B0(t,e,n){return ir(e)?Jc(e):n||te}function fs(t,e,n,r,i){if(i%1!==0)throw"can't guess dimensions";if(!n&&!r){const o=Math.sqrt(i/(e===Tt?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 lr(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(p4,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(g4,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(m4,e.flipY)}function P0(t){t.pixelStorei(iu,4),rr(t)&&(t.pixelStorei(C0,0),t.pixelStorei(D0,0),t.pixelStorei(M0,0),t.pixelStorei(I0,0),t.pixelStorei(T0,0))}function S3(t,e,n,r){r.minMag&&(n.call(t,e,nu,r.minMag),n.call(t,e,ru,r.minMag)),r.min&&n.call(t,e,nu,r.min),r.mag&&n.call(t,e,ru,r.mag),r.wrap&&(n.call(t,e,is,r.wrap),n.call(t,e,os,r.wrap),(e===Jt||Fw(t,e))&&n.call(t,e,S0,r.wrap)),r.wrapR&&n.call(t,e,S0,r.wrapR),r.wrapS&&n.call(t,e,is,r.wrapS),r.wrapT&&n.call(t,e,os,r.wrapT),r.minLod&&n.call(t,e,l4,r.minLod),r.maxLod&&n.call(t,e,f4,r.maxLod),r.baseLevel&&n.call(t,e,d4,r.baseLevel),r.maxLevel&&n.call(t,e,h4,r.maxLevel)}function F0(t,e,n){const r=n.target||It;t.bindTexture(r,e),S3(t,r,t.texParameteri,n)}function C3(t){return t=t||Kt.textureColor,ir(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function au(t,e,n,r,i,o){n=n||Kt.textureOptions,o=o||ee;const s=n.target||It;if(r=r||n.width,i=i||n.height,t.bindTexture(s,e),w3(t,r,i,o))t.generateMipmap(s);else{const a=E3(o)?i4:r4;t.texParameteri(s,nu,a),t.texParameteri(s,ru,a),t.texParameteri(s,is,ns),t.texParameteri(s,os,ns)}}function Si(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function cu(t,e){return e=e||{},e.cubeFaceOrder||[rs,o4,s4,a4,c4,u4]}function uu(t,e){const r=cu(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function z0(t,e,n,r){r=r||Kt.textureOptions;const i=r.target||It,o=r.level||0;let s=n.width,a=n.height;const c=r.internalFormat||r.format||ee,u=ur(c),f=r.format||u.format,l=r.type||u.type;if(lr(t,r),t.bindTexture(i,e),i===Tt){const d=n.width,h=n.height;let p,g;if(d/6===h)p=h,g=[0,0,1,0,2,0,3,0,4,0,5,0];else if(h/6===d)p=d,g=[0,0,0,1,0,2,0,3,0,4,0,5];else if(d/3===h/2)p=d/3,g=[0,0,1,0,2,0,0,1,1,1,2,1];else if(d/2===h/3)p=d/2,g=[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 m=b0();m?(m.canvas.width=p,m.canvas.height=p,s=p,a=p,uu(t,r).forEach(function(y){const x=g[y.ndx*2+0]*p,v=g[y.ndx*2+1]*p;m.drawImage(n,x,v,p,p,0,0,p,p),t.texImage2D(y.face,o,c,f,l,m.canvas)}),m.canvas.width=1,m.canvas.height=1):typeof createImageBitmap!="undefined"&&(s=p,a=p,uu(t,r).forEach(function(y){const x=g[y.ndx*2+0]*p,v=g[y.ndx*2+1]*p;t.texImage2D(y.face,o,c,p,p,0,f,l,null),createImageBitmap(n,x,v,p,p,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(S){lr(t,r),t.bindTexture(i,e),t.texImage2D(y.face,o,c,f,l,S),Si(r)&&au(t,e,r,s,a,c)})}))}else if(i===Jt||i===$t){const d=Math.min(n.width,n.height),h=Math.max(n.width,n.height),p=h/d;if(p%1!==0)throw"can not compute 3D dimensions of element";const g=n.width===h?1:0,m=n.height===h?1:0;t.pixelStorei(iu,1),t.pixelStorei(C0,n.width),t.pixelStorei(D0,0),t.pixelStorei(T0,0),t.texImage3D(i,o,c,d,d,d,0,f,l,null);for(let y=0;y<p;++y){const x=y*d*g,v=y*d*m;t.pixelStorei(M0,x),t.pixelStorei(I0,v),t.texSubImage3D(i,o,0,0,y,d,d,1,f,l,n)}P0(t)}else t.texImage2D(i,o,c,f,l,n);Si(r)&&au(t,e,r,s,a,c),F0(t,e,r)}function Ci(){}function D3(t){if(typeof document!="undefined"){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 M3(t,e){return e===void 0&&!D3(t)?"anonymous":e}function I3(t,e,n){n=n||Ci;let r;if(e=e!==void 0?e:Kt.crossOrigin,e=M3(t,e),typeof Image!="undefined"){r=new Image,e!==void 0&&(r.crossOrigin=e);const i=function(){r.removeEventListener("error",o),r.removeEventListener("load",s),r=null},o=function(){const c="couldn't load image: "+t;Bw(c),n(c,r),i()},s=function(){n(null,r),i()};return r.addEventListener("error",o),r.addEventListener("load",s),r.src=t,r}else if(typeof ImageBitmap!="undefined"){let i,o;const s=function(){n(i,o)},a={};e&&(a.mode="cors"),fetch(t,a).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(s)}).catch(function(c){i=c,setTimeout(s)}),r=null}return r}function R0(t){return typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap||typeof ImageData!="undefined"&&t instanceof ImageData||typeof HTMLElement!="undefined"&&t instanceof HTMLElement}function lu(t,e,n){return R0(t)?(setTimeout(function(){n(null,t)}),t):I3(t,e,n)}function fu(t,e,n){n=n||Kt.textureOptions;const r=n.target||It;if(t.bindTexture(r,e),n.color===!1)return;const i=C3(n.color);if(r===Tt)for(let o=0;o<6;++o)t.texImage2D(rs+o,0,ee,1,1,0,ee,te,i);else r===Jt||r===$t?t.texImage3D(r,0,ee,1,1,1,0,ee,te,i):t.texImage2D(r,0,ee,1,1,0,ee,te,i)}function T3(t,e,n,r){return r=r||Ci,n=n||Kt.textureOptions,fu(t,e,n),n=Object.assign({},n),lu(n.src,n.crossOrigin,function(o,s){o?r(o,e,s):(z0(t,e,s,n),r(null,e,s))})}function N3(t,e,n,r){r=r||Ci;const i=n.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const o=n.level||0,s=n.internalFormat||n.format||ee,a=ur(s),c=n.format||a.format,u=n.type||te,f=n.target||It;if(f!==Tt)throw"target must be TEXTURE_CUBE_MAP";fu(t,e,n),n=Object.assign({},n);let l=6;const d=[],h=cu(t,n);let p;function g(m){return function(y,x){--l,y?d.push(y):x.width!==x.height?d.push("cubemap face img is not a square: "+x.src):(lr(t,n),t.bindTexture(f,e),l===5?cu().forEach(function(v){t.texImage2D(v,o,s,c,u,x)}):t.texImage2D(m,o,s,c,u,x),Si(n)&&t.generateMipmap(f)),l===0&&r(d.length?d:void 0,e,p)}}p=i.map(function(m,y){return lu(m,n.crossOrigin,g(h[y]))})}function L3(t,e,n,r){r=r||Ci;const i=n.src,o=n.internalFormat||n.format||ee,s=ur(o),a=n.format||s.format,c=n.type||te,u=n.target||$t;if(u!==Jt&&u!==$t)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";fu(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let d;const h=n.level||0;let p=n.width,g=n.height;const m=i.length;let y=!0;function x(v){return function(S,b){if(--f,S)l.push(S);else{if(lr(t,n),t.bindTexture(u,e),y){y=!1,p=n.width||b.width,g=n.height||b.height,t.texImage3D(u,h,o,p,g,m,0,a,c,null);for(let A=0;A<m;++A)t.texSubImage3D(u,h,0,0,A,p,g,1,a,c,b)}else{let A=b,w;(b.width!==p||b.height!==g)&&(w=b0(),A=w.canvas,w.canvas.width=p,w.canvas.height=g,w.drawImage(b,0,0,p,g)),t.texSubImage3D(u,h,0,0,v,p,g,1,a,c,A),w&&A===w.canvas&&(w.canvas.width=0,w.canvas.height=0)}Si(n)&&t.generateMipmap(u)}f===0&&r(l.length?l:void 0,e,d)}}d=i.map(function(v,S){return lu(v,n.crossOrigin,x(S))})}function U0(t,e,n,r){r=r||Kt.textureOptions;const i=r.target||It;t.bindTexture(i,e);let o=r.width,s=r.height,a=r.depth;const c=r.level||0,u=r.internalFormat||r.format||ee,f=ur(u),l=r.format||f.format,d=r.type||B0(t,n,f.type);if(ir(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const m=Ow(d);n=new m(n)}const h=v3(u,d),p=n.byteLength/h;if(p%1)throw"length wrong size for format: "+tu(t,l);let g;if(i===Jt||i===$t)if(!o&&!s&&!a){const m=Math.cbrt(p);if(m%1!==0)throw"can't guess cube size of array of numElements: "+p;o=m,s=m,a=m}else o&&(!s||!a)?(g=fs(t,i,s,a,p/o),s=g.width,a=g.height):s&&(!o||!a)?(g=fs(t,i,o,a,p/s),o=g.width,a=g.height):(g=fs(t,i,o,s,p/a),o=g.width,s=g.height);else g=fs(t,i,o,s,p),o=g.width,s=g.height;if(P0(t),t.pixelStorei(iu,r.unpackAlignment||1),lr(t,r),i===Tt){const m=h/n.BYTES_PER_ELEMENT,y=p/6*m;uu(t,r).forEach(x=>{const v=y*x.ndx,S=n.subarray(v,v+y);t.texImage2D(x.face,c,u,o,s,0,l,d,S)})}else i===Jt||i===$t?t.texImage3D(i,c,u,o,s,a,0,l,d,n):t.texImage2D(i,c,u,o,s,0,l,d,n);return{width:o,height:s,depth:a,type:d}}function k3(t,e,n){const r=n.target||It;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||ee,s=ur(o),a=n.format||s.format,c=n.type||s.type;if(lr(t,n),r===Tt)for(let u=0;u<6;++u)t.texImage2D(rs+u,i,o,n.width,n.height,0,a,c,null);else r===Jt||r===$t?t.texImage3D(r,i,o,n.width,n.height,n.depth,0,a,c,null):t.texImage2D(r,i,o,n.width,n.height,0,a,c,null)}function Di(t,e,n){n=n||Ci,e=e||Kt.textureOptions;const r=t.createTexture(),i=e.target||It;let o=e.width||1,s=e.height||1;const a=e.internalFormat||ee;t.bindTexture(i,r),i===Tt&&(t.texParameteri(i,is,ns),t.texParameteri(i,os,ns));let c=e.src;if(c)if(typeof c=="function"&&(c=c(t,e)),typeof c=="string")T3(t,r,e,n);else if(ir(c)||Array.isArray(c)&&(typeof c[0]=="number"||Array.isArray(c[0])||ir(c[0]))){const u=U0(t,r,c,e);o=u.width,s=u.height}else Array.isArray(c)&&(typeof c[0]=="string"||R0(c[0]))?i===Tt?N3(t,r,e,n):L3(t,r,e,n):(z0(t,r,c,e),o=c.width,s=c.height);else k3(t,r,e);return Si(e)&&au(t,r,e,o,s,a),F0(t,r,e),r}function O3(t,e,n,r,i,o){r=r||n.width,i=i||n.height,o=o||n.depth;const s=n.target||It;t.bindTexture(s,e);const a=n.level||0,c=n.internalFormat||n.format||ee,u=ur(c),f=n.format||u.format;let l;const d=n.src;if(d&&(ir(d)||Array.isArray(d)&&typeof d[0]=="number")?l=n.type||B0(t,d,u.type):l=n.type||u.type,s===Tt)for(let h=0;h<6;++h)t.texImage2D(rs+h,a,c,r,i,0,f,l,null);else s===Jt||s===$t?t.texImage3D(s,a,c,r,i,o,0,f,l,null):t.texImage2D(s,a,c,r,i,0,f,l,null)}const B3=f0,ds=33984,P3=35048,hs=34962,F3=34963,du=35345,j0=35718,z3=35721,R3=35971,U3=35382,j3=35396,G3=35398,H3=35392,Q3=35395,ps=5126,G0=35664,H0=35665,Q0=35666,hu=5124,V0=35667,_0=35668,Y0=35669,W0=35670,X0=35671,q0=35672,Z0=35673,K0=35674,J0=35675,$0=35676,V3=35678,_3=35680,Y3=35679,W3=35682,X3=35685,q3=35686,Z3=35687,K3=35688,J3=35689,$3=35690,eE=36289,tE=36292,nE=36293,pu=5125,ep=36294,tp=36295,np=36296,rE=36298,iE=36299,oE=36300,sE=36303,aE=36306,cE=36307,uE=36308,lE=36311,gs=3553,ms=34067,gu=32879,ys=35866,P={};function rp(t,e){return P[e].bindPoint}function fE(t,e){return function(n){t.uniform1f(e,n)}}function dE(t,e){return function(n){t.uniform1fv(e,n)}}function hE(t,e){return function(n){t.uniform2fv(e,n)}}function pE(t,e){return function(n){t.uniform3fv(e,n)}}function gE(t,e){return function(n){t.uniform4fv(e,n)}}function ip(t,e){return function(n){t.uniform1i(e,n)}}function op(t,e){return function(n){t.uniform1iv(e,n)}}function sp(t,e){return function(n){t.uniform2iv(e,n)}}function ap(t,e){return function(n){t.uniform3iv(e,n)}}function cp(t,e){return function(n){t.uniform4iv(e,n)}}function mE(t,e){return function(n){t.uniform1ui(e,n)}}function yE(t,e){return function(n){t.uniform1uiv(e,n)}}function AE(t,e){return function(n){t.uniform2uiv(e,n)}}function bE(t,e){return function(n){t.uniform3uiv(e,n)}}function xE(t,e){return function(n){t.uniform4uiv(e,n)}}function vE(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function wE(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function EE(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function SE(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function CE(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function DE(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function ME(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function IE(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function TE(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function De(t,e,n,r){const i=rp(t,e);return rr(t)?function(o){let s,a;ts(t,o)?(s=o,a=null):(s=o.texture,a=o.sampler),t.uniform1i(r,n),t.activeTexture(ds+n),t.bindTexture(i,s),t.bindSampler(n,a)}:function(o){t.uniform1i(r,n),t.activeTexture(ds+n),t.bindTexture(i,o)}}function Me(t,e,n,r,i){const o=rp(t,e),s=new Int32Array(i);for(let a=0;a<i;++a)s[a]=n+a;return rr(t)?function(a){t.uniform1iv(r,s),a.forEach(function(c,u){t.activeTexture(ds+s[u]);let f,l;ts(t,c)?(f=c,l=null):(f=c.texture,l=c.sampler),t.bindSampler(n,l),t.bindTexture(o,f)})}:function(a){t.uniform1iv(r,s),a.forEach(function(c,u){t.activeTexture(ds+s[u]),t.bindTexture(o,c)})}}P[ps]={Type:Float32Array,size:4,setter:fE,arraySetter:dE},P[G0]={Type:Float32Array,size:8,setter:hE,cols:2},P[H0]={Type:Float32Array,size:12,setter:pE,cols:3},P[Q0]={Type:Float32Array,size:16,setter:gE,cols:4},P[hu]={Type:Int32Array,size:4,setter:ip,arraySetter:op},P[V0]={Type:Int32Array,size:8,setter:sp,cols:2},P[_0]={Type:Int32Array,size:12,setter:ap,cols:3},P[Y0]={Type:Int32Array,size:16,setter:cp,cols:4},P[pu]={Type:Uint32Array,size:4,setter:mE,arraySetter:yE},P[ep]={Type:Uint32Array,size:8,setter:AE,cols:2},P[tp]={Type:Uint32Array,size:12,setter:bE,cols:3},P[np]={Type:Uint32Array,size:16,setter:xE,cols:4},P[W0]={Type:Uint32Array,size:4,setter:ip,arraySetter:op},P[X0]={Type:Uint32Array,size:8,setter:sp,cols:2},P[q0]={Type:Uint32Array,size:12,setter:ap,cols:3},P[Z0]={Type:Uint32Array,size:16,setter:cp,cols:4},P[K0]={Type:Float32Array,size:32,setter:vE,rows:2,cols:2},P[J0]={Type:Float32Array,size:48,setter:wE,rows:3,cols:3},P[$0]={Type:Float32Array,size:64,setter:EE,rows:4,cols:4},P[X3]={Type:Float32Array,size:32,setter:SE,rows:2,cols:3},P[q3]={Type:Float32Array,size:32,setter:DE,rows:2,cols:4},P[Z3]={Type:Float32Array,size:48,setter:CE,rows:3,cols:2},P[K3]={Type:Float32Array,size:48,setter:IE,rows:3,cols:4},P[J3]={Type:Float32Array,size:64,setter:ME,rows:4,cols:2},P[$3]={Type:Float32Array,size:64,setter:TE,rows:4,cols:3},P[V3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:gs},P[_3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ms},P[Y3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:gu},P[W3]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:gs},P[eE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ys},P[tE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ys},P[nE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ms},P[rE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:gs},P[iE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:gu},P[oE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ms},P[sE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ys},P[aE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:gs},P[cE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:gu},P[uE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ms},P[lE]={Type:null,size:0,setter:De,arraySetter:Me,bindPoint:ys};function As(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(hs,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||ps,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function tn(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(hs,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||hu,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function bs(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(hs,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||pu,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function mu(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(hs,o.buffer);const s=o.size||o.numComponents||r,a=s/i,c=o.type||ps,f=P[c].size*s,l=o.normalize||!1,d=o.offset||0,h=f/i;for(let p=0;p<i;++p)t.enableVertexAttribArray(e+p),t.vertexAttribPointer(e+p,a,c,l,f,d+h*p),o.divisor!==void 0&&t.vertexAttribDivisor(e+p,o.divisor)}}const ce={};ce[ps]={size:4,setter:As},ce[G0]={size:8,setter:As},ce[H0]={size:12,setter:As},ce[Q0]={size:16,setter:As},ce[hu]={size:4,setter:tn},ce[V0]={size:8,setter:tn},ce[_0]={size:12,setter:tn},ce[Y0]={size:16,setter:tn},ce[pu]={size:4,setter:bs},ce[ep]={size:8,setter:bs},ce[tp]={size:12,setter:bs},ce[np]={size:16,setter:bs},ce[W0]={size:4,setter:tn},ce[X0]={size:8,setter:tn},ce[q0]={size:12,setter:tn},ce[Z0]={size:16,setter:tn},ce[K0]={size:4,setter:mu,count:2},ce[J0]={size:9,setter:mu,count:3},ce[$0]={size:16,setter:mu,count:4};function up(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const NE=/(\.|\[|]|\w+)/g,LE=t=>t>="0"&&t<="9";function lp(t,e,n,r){const i=t.split(NE).filter(a=>a!=="");let o=0,s="";for(;;){const a=i[o++];s+=a;const c=LE(a[0]),u=c?parseInt(a):a;if(c&&(s+=i[o++]),o===i.length){n[u]=e;break}else{const l=i[o++],d=l==="[",h=n[u]||(d?[]:{});n[u]=h,n=h,r[s]=r[s]||function(p){return function(g){dp(p,g)}}(h),s+=l}}}function kE(t,e){let n=0;function r(a,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 h;if(d.bindPoint){const p=n;n+=c.size,f?h=d.arraySetter(t,l,p,u,c.size):h=d.setter(t,l,p,u,c.size)}else d.arraySetter&&f?h=d.arraySetter(t,u):h=d.setter(t,u);return h.location=u,h}const i={},o={},s=t.getProgramParameter(e,j0);for(let a=0;a<s;++a){const c=t.getActiveUniform(e,a);if(up(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,lp(u,l,o,i)}}return i}function OE(t,e){const n={},r=t.getProgramParameter(e,R3);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 BE(t,e){const n=t.getProgramParameter(e,j0),r=[],i=[];for(let a=0;a<n;++a){i.push(a),r.push({});const c=t.getActiveUniform(e,a);r[a].name=c.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const c=a[0],u=a[1];t.getActiveUniforms(e,i,t[c]).forEach(function(f,l){r[l][u]=f})});const o={},s=t.getProgramParameter(e,U3);for(let a=0;a<s;++a){const c=t.getActiveUniformBlockName(e,a),u={index:t.getUniformBlockIndex(e,c),usedByVertexShader:t.getActiveUniformBlockParameter(e,a,j3),usedByFragmentShader:t.getActiveUniformBlockParameter(e,a,G3),size:t.getActiveUniformBlockParameter(e,a,H3),uniformIndices:t.getActiveUniformBlockParameter(e,a,Q3)};u.used=u.usedByVertexShader||u.usedByFragmentShader,o[c]=u}return{blockSpecs:o,uniformData:r}}const fp=/\[\d+\]\.$/,PE=(t,e)=>((t+(e-1))/e|0)*e;function FE(t,e,n,r){if(e||n){r=r||1;const o=t.length/4;return function(s){let a=0,c=0;for(let u=0;u<o;++u){for(let f=0;f<r;++f)t[a++]=s[c++];a+=4-r}}}else return function(i){i.length?t.set(i):t[0]=i}}function zE(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,s=i[r];if(!s)return B3("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(s.size),c=t.createBuffer(),u=s.index;t.bindBuffer(du,c),t.uniformBlockBinding(e,s.index,u);let f=r+".";fp.test(f)&&(f=f.replace(fp,"."));const l={},d={},h={};return s.uniformIndices.forEach(function(p){const g=o[p];let m=g.name;m.startsWith(f)&&(m=m.substr(f.length));const y=m.endsWith("[0]");y&&(m=m.substr(0,m.length-3));const x=P[g.type],v=x.Type,S=y?PE(x.size,16)*g.size:x.size*g.size,b=new v(a,g.offset,S/v.BYTES_PER_ELEMENT);l[m]=b;const A=FE(b,y,x.rows,x.cols);d[m]=A,lp(m,A,h,d)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:c,uniforms:l,setters:d}}function RE(t,e,n){return zE(t,e.program,e.uniformBlockSpec,n)}function UE(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(du,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function jE(t,e,n){UE(t,e,n)&&t.bufferData(du,n.array,P3)}function dp(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):dp(t[n],e[n])}}function Se(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 s=o.length;for(let a=0;a<s;++a)Se(n,o[a])}else for(const s in o){const a=n[s];a&&a(o[s])}}}function GE(t,e){const n={},r=t.getProgramParameter(e,z3);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(up(o))continue;const s=t.getAttribLocation(e,o.name),a=ce[o.type],c=a.setter(t,s,a);c.location=s,n[o.name]=c}return n}function HE(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function fr(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):(HE(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(F3,n.indices))}function QE(t,e){const n=kE(t,e),r=GE(t,e),i={program:e,uniformSetters:n,attribSetters:r};return rr(t)&&(i.uniformBlockSpec=BE(t,e),i.transformFeedbackInfo=OE(t,e)),i}const VE=4,hp=5123;function Mi(t,e,n,r,i,o){n=n===void 0?VE:n;const s=e.indices,a=e.elementType,c=r===void 0?e.numElements:r;i=i===void 0?0:i,a||s?o!==void 0?t.drawElementsInstanced(n,c,a===void 0?hp:e.elementType,i,o):t.drawElements(n,c,a===void 0?hp:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,c,o):t.drawArrays(n,i,c)}const _E=36160,Ii=36161,YE=3553,WE=5121,XE=6402,qE=6408,ZE=33190,KE=36012,JE=35056,$E=36013,eS=32854,tS=32855,nS=36194,pp=33189,gp=6401,mp=36168,yu=34041,rS=36064,xs=36096,yp=36128,Au=33306,bu=33071,xu=9729,Ap=[{format:qE,type:WE,min:xu,wrap:bu},{format:yu}],ot={};ot[yu]=Au,ot[gp]=yp,ot[mp]=yp,ot[XE]=xs,ot[pp]=xs,ot[ZE]=xs,ot[KE]=xs,ot[JE]=Au,ot[$E]=Au;function iS(t,e){return ot[t]||ot[e]}const nn={};nn[eS]=!0,nn[tS]=!0,nn[nS]=!0,nn[yu]=!0,nn[pp]=!0,nn[gp]=!0,nn[mp]=!0;function oS(t){return nn[t]}function sS(t,e,n,r){const i=_E,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||Ap;let s=0;const a={framebuffer:o,attachments:[],width:n,height:r};return e.forEach(function(c){let u=c.attachment;const f=c.format;let l=c.attachmentPoint||iS(f,c.internalFormat);if(l||(l=rS+s++),!u)if(oS(f))u=t.createRenderbuffer(),t.bindRenderbuffer(Ii,u),t.renderbufferStorage(Ii,f,n,r);else{const d=Object.assign({},c);d.width=n,d.height=r,d.auto===void 0&&(d.auto=!1,d.min=d.min||d.minMag||xu,d.mag=d.mag||d.minMag||xu,d.wrapS=d.wrapS||d.wrap||bu,d.wrapT=d.wrapT||d.wrap||bu),u=Di(t,d)}if(d0(t,u))t.framebufferRenderbuffer(i,l,Ii,u);else if(ts(t,u))c.layer!==void 0?t.framebufferTextureLayer(i,l,u,c.level||0,c.layer):t.framebufferTexture2D(i,l,c.target||YE,u,c.level||0);else throw new Error("unknown attachment type");a.attachments.push(u)}),a}function aS(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||Ap,n.forEach(function(o,s){const a=e.attachments[s],c=o.format;if(d0(t,a))t.bindRenderbuffer(Ii,a),t.renderbufferStorage(Ii,c,r,i);else if(ts(t,a))O3(t,a,o,r,i);else throw new Error("unknown attachment type")})}function cS(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){fr(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const uS=/^(.*?)_/;function lS(t,e){tu(t,0);const n=t.getExtension(e);if(n){const r={},i=uS.exec(e)[1],o="_"+i;for(const s in n){const a=n[s],c=typeof a=="function",u=c?i:o;let f=s;s.endsWith(u)&&(f=s.substring(0,s.length-u.length)),t[f]!==void 0?!c&&t[f]!==a&&f0(f,t[f],a,s):c?t[f]=function(l){return function(){return l.apply(n,arguments)}}(a):(t[f]=a,r[f]=a)}r.constructor={name:n.constructor.name},tu(r,0)}return n}const bp=["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 xp(t){for(let e=0;e<bp.length;++e)lS(t,bp[e])}function fS(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){xp(r);break}return r}function dS(t,e){return fS(t,e)}var hS=`/**
14
+ see: http://github.com/greggman/twgl.js for details */const Iu=5120,Wi=5121,ku=5122,Nu=5123,Lu=5124,Bu=5125,Ou=5126,F4=32819,z4=32820,R4=33635,j4=5131,U4=33640,G4=35899,H4=35902,Q4=36269,V4=34042,op={};{const t=op;t[Iu]=Int8Array,t[Wi]=Uint8Array,t[ku]=Int16Array,t[Nu]=Uint16Array,t[Lu]=Int32Array,t[Bu]=Uint32Array,t[Ou]=Float32Array,t[F4]=Uint16Array,t[z4]=Uint16Array,t[R4]=Uint16Array,t[j4]=Uint16Array,t[U4]=Uint32Array,t[G4]=Uint32Array,t[H4]=Uint32Array,t[Q4]=Uint32Array,t[V4]=Uint32Array}function Pu(t){if(t instanceof Int8Array)return Iu;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)return Wi;if(t instanceof Int16Array)return ku;if(t instanceof Uint16Array)return Nu;if(t instanceof Int32Array)return Lu;if(t instanceof Uint32Array)return Bu;if(t instanceof Float32Array)return Ou;throw new Error("unsupported typed array type")}function Y4(t){if(t===Int8Array)return Iu;if(t===Uint8Array||t===Uint8ClampedArray)return Wi;if(t===Int16Array)return ku;if(t===Uint16Array)return Nu;if(t===Int32Array)return Lu;if(t===Uint32Array)return Bu;if(t===Float32Array)return Ou;throw new Error("unsupported typed array type")}function _4(t){const e=op[t];if(!e)throw new Error("unknown gl type");return e}const La=typeof SharedArrayBuffer!="undefined"?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 W4(...t){console.error(...t)}function ap(...t){console.warn(...t)}function X4(t,e){return typeof WebGLBuffer!="undefined"&&e instanceof WebGLBuffer}function sp(t,e){return typeof WebGLRenderbuffer!="undefined"&&e instanceof WebGLRenderbuffer}function Ba(t,e){return typeof WebGLTexture!="undefined"&&e instanceof WebGLTexture}function Z4(t,e){return typeof WebGLSampler!="undefined"&&e instanceof WebGLSampler}const cp=35044,vt=34962,q4=34963,K4=34660,J4=5120,$4=5121,e3=5122,t3=5123,n3=5124,r3=5125,i3=5126,up={attribPrefix:""};function lp(t,e,n,r,i){t.bindBuffer(e,n),t.bufferData(e,r,i||cp)}function fp(t,e,n,r){if(X4(t,e))return e;n=n||vt;const i=t.createBuffer();return lp(t,n,i,e,r),i}function dp(t){return t==="indices"}function o3(t){return t instanceof Int8Array||t instanceof Uint8Array}function a3(t){return t===Int8Array||t===Uint8Array}function s3(t){return t.length?t:t.data}const c3=/coord|texture/i,u3=/color|colour/i;function hp(t,e){let n;if(c3.test(t)?n=2:u3.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 l3(t,e){return t.numComponents||t.size||hp(e,s3(t).length)}function Fu(t,e){if(La(t))return t;if(La(t.data))return t.data;Array.isArray(t)&&(t={data:t});let n=t.type;return n||(dp(e)?n=Uint16Array:n=Float32Array),new n(t.data)}function f3(t,e){const n={};return Object.keys(e).forEach(function(r){if(!dp(r)){const i=e[r],o=i.attrib||i.name||i.attribName||up.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!La(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=Y4(l),c=i.normalize!==void 0?i.normalize:a3(l),u=i.numComponents||i.size||hp(r,f),a=t.createBuffer(),t.bindBuffer(vt,a),t.bufferData(vt,d,i.drawType||cp)}else{const f=Fu(i,r);a=fp(t,f,void 0,i.drawType),s=Pu(f),c=i.normalize!==void 0?i.normalize:o3(f),u=l3(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(vt,null),n}function d3(t,e,n,r){n=Fu(n),r!==void 0?(t.bindBuffer(vt,e.buffer),t.bufferSubData(vt,r,n)):lp(t,vt,e.buffer,n,e.drawType)}function h3(t,e){return e===J4||e===$4?1:e===e3||e===t3?2:e===n3||e===r3||e===i3?4:0}const zu=["position","positions","a_position"];function p3(t,e){let n,r;for(r=0;r<zu.length&&(n=zu[r],!(n in e||(n=up.attribPrefix+n,n in e)));++r);r===zu.length&&(n=Object.keys(e)[0]);const i=e[n];t.bindBuffer(vt,i.buffer);const o=t.getBufferParameter(vt,K4);t.bindBuffer(vt,null);const a=h3(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 m3(t,e,n){const r=f3(t,e),i=Object.assign({},n||{});i.attribs=Object.assign({},n?n.attribs:{},r);const o=e.indices;if(o){const a=Fu(o,"indices");i.indices=fp(t,a,q4),i.numElements=a.length,i.elementType=Pu(a)}else i.numElements||(i.numElements=p3(t,i.attribs));return i}function Dr(t){return!!t.texStorage2D}const Ru=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)}}(),an={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Mr=La,pp=function(){let t;return function(){return t=t||(typeof document!="undefined"&&document.createElement?document.createElement("canvas").getContext("2d"):null),t}}(),mp=6406,bt=6407,ie=6408,gp=6409,yp=6410,Xi=6402,vp=34041,Oa=33071,g3=9728,y3=9729,Nt=3553,Lt=34067,sn=32879,cn=35866,Pa=34069,v3=34070,b3=34071,A3=34072,x3=34073,w3=34074,ju=10241,Uu=10240,Fa=10242,za=10243,bp=32882,C3=33082,S3=33083,E3=33084,D3=33085,Gu=3317,Ap=3314,xp=32878,wp=3316,Cp=3315,Sp=32877,M3=37443,T3=37441,I3=37440,k3=33321,N3=36756,L3=33325,B3=33326,O3=33330,P3=33329,F3=33338,z3=33337,R3=33340,j3=33339,U3=33323,G3=36757,H3=33327,Q3=33328,V3=33336,Y3=33335,_3=33332,W3=33331,X3=33334,Z3=33333,q3=32849,K3=35905,J3=36194,$3=36758,eC=35898,tC=35901,nC=34843,rC=34837,iC=36221,oC=36239,aC=36215,sC=36233,cC=36209,uC=36227,lC=32856,fC=35907,dC=36759,hC=32855,pC=32854,mC=32857,gC=34842,yC=34836,vC=36220,bC=36238,AC=36975,xC=36214,wC=36232,CC=36226,SC=36208,EC=33189,DC=33190,MC=36012,TC=36013,IC=35056,un=5120,oe=5121,Ra=5122,Tr=5123,ja=5124,Wn=5125,Te=5126,Ep=32819,Dp=32820,Mp=33635,ct=5131,Zi=36193,Hu=33640,kC=35899,NC=35902,LC=36269,BC=34042,Ua=33319,Ir=33320,Ga=6403,kr=36244,Nr=36248,Xn=36249;let Qu;function Ha(t){if(!Qu){const e={};e[mp]={textureFormat:mp,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[oe,ct,Zi,Te]},e[gp]={textureFormat:gp,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[oe,ct,Zi,Te]},e[yp]={textureFormat:yp,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[oe,ct,Zi,Te]},e[bt]={textureFormat:bt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[oe,ct,Zi,Te,Mp]},e[ie]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[oe,ct,Zi,Te,Ep,Dp]},e[Xi]={textureFormat:Xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Wn,Tr]},e[k3]={textureFormat:Ga,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[oe]},e[N3]={textureFormat:Ga,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[un]},e[L3]={textureFormat:Ga,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[Te,ct]},e[B3]={textureFormat:Ga,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[Te]},e[O3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[oe]},e[P3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[un]},e[_3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Tr]},e[W3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Ra]},e[X3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Wn]},e[Z3]={textureFormat:kr,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ja]},e[U3]={textureFormat:Ua,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[oe]},e[G3]={textureFormat:Ua,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[un]},e[H3]={textureFormat:Ua,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[Te,ct]},e[Q3]={textureFormat:Ua,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[Te]},e[V3]={textureFormat:Ir,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[oe]},e[Y3]={textureFormat:Ir,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[un]},e[F3]={textureFormat:Ir,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Tr]},e[z3]={textureFormat:Ir,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ra]},e[R3]={textureFormat:Ir,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Wn]},e[j3]={textureFormat:Ir,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ja]},e[q3]={textureFormat:bt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[oe]},e[K3]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[oe]},e[J3]={textureFormat:bt,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[oe,Mp]},e[$3]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[un]},e[eC]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Te,ct,kC]},e[tC]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[Te,ct,NC]},e[nC]={textureFormat:bt,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[Te,ct]},e[rC]={textureFormat:bt,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Te]},e[iC]={textureFormat:Nr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[oe]},e[oC]={textureFormat:Nr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[un]},e[aC]={textureFormat:Nr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Tr]},e[sC]={textureFormat:Nr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Ra]},e[cC]={textureFormat:Nr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Wn]},e[uC]={textureFormat:Nr,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[ja]},e[lC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[oe]},e[fC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[oe]},e[dC]={textureFormat:ie,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[un]},e[hC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[oe,Dp,Hu]},e[pC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[oe,Ep]},e[mC]={textureFormat:ie,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Hu]},e[gC]={textureFormat:ie,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[Te,ct]},e[yC]={textureFormat:ie,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[Te]},e[vC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[oe]},e[bC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[un]},e[AC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Hu]},e[xC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Tr]},e[wC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Ra]},e[CC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[ja]},e[SC]={textureFormat:Xn,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Wn]},e[EC]={textureFormat:Xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Tr,Wn]},e[DC]={textureFormat:Xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Wn]},e[MC]={textureFormat:Xi,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Te]},e[IC]={textureFormat:vp,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[BC]},e[TC]={textureFormat:vp,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[LC]},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})}),Qu=e}return Qu[t]}function OC(t,e){const n=Ha(t);if(!n)throw"unknown internal format";const r=n.bytesPerElementMap[e];if(r===void 0)throw"unknown internal format";return r}function Lr(t){const e=Ha(t);if(!e)throw"unknown internal format";return{format:e.textureFormat,type:e.type[0]}}function Tp(t){return(t&t-1)===0}function PC(t,e,n,r){if(!Dr(t))return Tp(e)&&Tp(n);const i=Ha(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function FC(t){const e=Ha(t);if(!e)throw"unknown internal format";return e.textureFilterable}function Ip(t,e,n){return Mr(e)?Pu(e):n||oe}function Qa(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 Br(t,e){e.colorspaceConversion!==void 0&&t.pixelStorei(M3,e.colorspaceConversion),e.premultiplyAlpha!==void 0&&t.pixelStorei(T3,e.premultiplyAlpha),e.flipY!==void 0&&t.pixelStorei(I3,e.flipY)}function kp(t){t.pixelStorei(Gu,4),Dr(t)&&(t.pixelStorei(Ap,0),t.pixelStorei(xp,0),t.pixelStorei(wp,0),t.pixelStorei(Cp,0),t.pixelStorei(Sp,0))}function zC(t,e,n,r){r.minMag&&(n.call(t,e,ju,r.minMag),n.call(t,e,Uu,r.minMag)),r.min&&n.call(t,e,ju,r.min),r.mag&&n.call(t,e,Uu,r.mag),r.wrap&&(n.call(t,e,Fa,r.wrap),n.call(t,e,za,r.wrap),(e===sn||Z4(t,e))&&n.call(t,e,bp,r.wrap)),r.wrapR&&n.call(t,e,bp,r.wrapR),r.wrapS&&n.call(t,e,Fa,r.wrapS),r.wrapT&&n.call(t,e,za,r.wrapT),r.minLod&&n.call(t,e,C3,r.minLod),r.maxLod&&n.call(t,e,S3,r.maxLod),r.baseLevel&&n.call(t,e,E3,r.baseLevel),r.maxLevel&&n.call(t,e,D3,r.maxLevel)}function Np(t,e,n){const r=n.target||Nt;t.bindTexture(r,e),zC(t,r,t.texParameteri,n)}function RC(t){return t=t||an.textureColor,Mr(t)?t:new Uint8Array([t[0]*255,t[1]*255,t[2]*255,t[3]*255])}function Vu(t,e,n,r,i,o){n=n||an.textureOptions,o=o||ie;const a=n.target||Nt;if(r=r||n.width,i=i||n.height,t.bindTexture(a,e),PC(t,r,i,o))t.generateMipmap(a);else{const s=FC(o)?y3:g3;t.texParameteri(a,ju,s),t.texParameteri(a,Uu,s),t.texParameteri(a,Fa,Oa),t.texParameteri(a,za,Oa)}}function qi(t){return t.auto===!0||t.auto===void 0&&t.level===void 0}function Yu(t,e){return e=e||{},e.cubeFaceOrder||[Pa,v3,b3,A3,x3,w3]}function _u(t,e){const r=Yu(t,e).map(function(i,o){return{face:i,ndx:o}});return r.sort(function(i,o){return i.face-o.face}),r}function Lp(t,e,n,r){r=r||an.textureOptions;const i=r.target||Nt,o=r.level||0;let a=n.width,s=n.height;const c=r.internalFormat||r.format||ie,u=Lr(c),f=r.format||u.format,l=r.type||u.type;if(Br(t,r),t.bindTexture(i,e),i===Lt){const d=n.width,h=n.height;let p,m;if(d/6===h)p=h,m=[0,0,1,0,2,0,3,0,4,0,5,0];else if(h/6===d)p=d,m=[0,0,0,1,0,2,0,3,0,4,0,5];else if(d/3===h/2)p=d/3,m=[0,0,1,0,2,0,0,1,1,1,2,1];else if(d/2===h/3)p=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 y=pp();y?(y.canvas.width=p,y.canvas.height=p,a=p,s=p,_u(t,r).forEach(function(g){const A=m[g.ndx*2+0]*p,x=m[g.ndx*2+1]*p;y.drawImage(n,A,x,p,p,0,0,p,p),t.texImage2D(g.face,o,c,f,l,y.canvas)}),y.canvas.width=1,y.canvas.height=1):typeof createImageBitmap!="undefined"&&(a=p,s=p,_u(t,r).forEach(function(g){const A=m[g.ndx*2+0]*p,x=m[g.ndx*2+1]*p;t.texImage2D(g.face,o,c,p,p,0,f,l,null),createImageBitmap(n,A,x,p,p,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(C){Br(t,r),t.bindTexture(i,e),t.texImage2D(g.face,o,c,f,l,C),qi(r)&&Vu(t,e,r,a,s,c)})}))}else if(i===sn||i===cn){const d=Math.min(n.width,n.height),h=Math.max(n.width,n.height),p=h/d;if(p%1!==0)throw"can not compute 3D dimensions of element";const m=n.width===h?1:0,y=n.height===h?1:0;t.pixelStorei(Gu,1),t.pixelStorei(Ap,n.width),t.pixelStorei(xp,0),t.pixelStorei(Sp,0),t.texImage3D(i,o,c,d,d,d,0,f,l,null);for(let g=0;g<p;++g){const A=g*d*m,x=g*d*y;t.pixelStorei(wp,A),t.pixelStorei(Cp,x),t.texSubImage3D(i,o,0,0,g,d,d,1,f,l,n)}kp(t)}else t.texImage2D(i,o,c,f,l,n);qi(r)&&Vu(t,e,r,a,s,c),Np(t,e,r)}function Ki(){}function jC(t){if(typeof document!="undefined"){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 UC(t,e){return e===void 0&&!jC(t)?"anonymous":e}function GC(t,e,n){n=n||Ki;let r;if(e=e!==void 0?e:an.crossOrigin,e=UC(t,e),typeof Image!="undefined"){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;W4(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!="undefined"){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 Bp(t){return typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap||typeof ImageData!="undefined"&&t instanceof ImageData||typeof HTMLElement!="undefined"&&t instanceof HTMLElement}function Wu(t,e,n){return Bp(t)?(setTimeout(function(){n(null,t)}),t):GC(t,e,n)}function Xu(t,e,n){n=n||an.textureOptions;const r=n.target||Nt;if(t.bindTexture(r,e),n.color===!1)return;const i=RC(n.color);if(r===Lt)for(let o=0;o<6;++o)t.texImage2D(Pa+o,0,ie,1,1,0,ie,oe,i);else r===sn||r===cn?t.texImage3D(r,0,ie,1,1,1,0,ie,oe,i):t.texImage2D(r,0,ie,1,1,0,ie,oe,i)}function HC(t,e,n,r){return r=r||Ki,n=n||an.textureOptions,Xu(t,e,n),n=Object.assign({},n),Wu(n.src,n.crossOrigin,function(o,a){o?r(o,e,a):(Lp(t,e,a,n),r(null,e,a))})}function QC(t,e,n,r){r=r||Ki;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||ie,s=Lr(a),c=n.format||s.format,u=n.type||oe,f=n.target||Nt;if(f!==Lt)throw"target must be TEXTURE_CUBE_MAP";Xu(t,e,n),n=Object.assign({},n);let l=6;const d=[],h=Yu(t,n);let p;function m(y){return function(g,A){--l,g?d.push(g):A.width!==A.height?d.push("cubemap face img is not a square: "+A.src):(Br(t,n),t.bindTexture(f,e),l===5?Yu().forEach(function(x){t.texImage2D(x,o,a,c,u,A)}):t.texImage2D(y,o,a,c,u,A),qi(n)&&t.generateMipmap(f)),l===0&&r(d.length?d:void 0,e,p)}}p=i.map(function(y,g){return Wu(y,n.crossOrigin,m(h[g]))})}function VC(t,e,n,r){r=r||Ki;const i=n.src,o=n.internalFormat||n.format||ie,a=Lr(o),s=n.format||a.format,c=n.type||oe,u=n.target||cn;if(u!==sn&&u!==cn)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";Xu(t,e,n),n=Object.assign({},n);let f=i.length;const l=[];let d;const h=n.level||0;let p=n.width,m=n.height;const y=i.length;let g=!0;function A(x){return function(C,b){if(--f,C)l.push(C);else{if(Br(t,n),t.bindTexture(u,e),g){g=!1,p=n.width||b.width,m=n.height||b.height,t.texImage3D(u,h,o,p,m,y,0,s,c,null);for(let v=0;v<y;++v)t.texSubImage3D(u,h,0,0,v,p,m,1,s,c,b)}else{let v=b,w;(b.width!==p||b.height!==m)&&(w=pp(),v=w.canvas,w.canvas.width=p,w.canvas.height=m,w.drawImage(b,0,0,p,m)),t.texSubImage3D(u,h,0,0,x,p,m,1,s,c,v),w&&v===w.canvas&&(w.canvas.width=0,w.canvas.height=0)}qi(n)&&t.generateMipmap(u)}f===0&&r(l.length?l:void 0,e,d)}}d=i.map(function(x,C){return Wu(x,n.crossOrigin,A(C))})}function Op(t,e,n,r){r=r||an.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||ie,f=Lr(u),l=r.format||f.format,d=r.type||Ip(t,n,f.type);if(Mr(n))n instanceof Uint8ClampedArray&&(n=new Uint8Array(n.buffer));else{const y=_4(d);n=new y(n)}const h=OC(u,d),p=n.byteLength/h;if(p%1)throw"length wrong size for format: "+Ru(t,l);let m;if(i===sn||i===cn)if(!o&&!a&&!s){const y=Math.cbrt(p);if(y%1!==0)throw"can't guess cube size of array of numElements: "+p;o=y,a=y,s=y}else o&&(!a||!s)?(m=Qa(t,i,a,s,p/o),a=m.width,s=m.height):a&&(!o||!s)?(m=Qa(t,i,o,s,p/a),o=m.width,s=m.height):(m=Qa(t,i,o,a,p/s),o=m.width,a=m.height);else m=Qa(t,i,o,a,p),o=m.width,a=m.height;if(kp(t),t.pixelStorei(Gu,r.unpackAlignment||1),Br(t,r),i===Lt){const y=h/n.BYTES_PER_ELEMENT,g=p/6*y;_u(t,r).forEach(A=>{const x=g*A.ndx,C=n.subarray(x,x+g);t.texImage2D(A.face,c,u,o,a,0,l,d,C)})}else i===sn||i===cn?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 YC(t,e,n){const r=n.target||Nt;t.bindTexture(r,e);const i=n.level||0,o=n.internalFormat||n.format||ie,a=Lr(o),s=n.format||a.format,c=n.type||a.type;if(Br(t,n),r===Lt)for(let u=0;u<6;++u)t.texImage2D(Pa+u,i,o,n.width,n.height,0,s,c,null);else r===sn||r===cn?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 Ji(t,e,n){n=n||Ki,e=e||an.textureOptions;const r=t.createTexture(),i=e.target||Nt;let o=e.width||1,a=e.height||1;const s=e.internalFormat||ie;t.bindTexture(i,r),i===Lt&&(t.texParameteri(i,Fa,Oa),t.texParameteri(i,za,Oa));let c=e.src;if(c)if(typeof c=="function"&&(c=c(t,e)),typeof c=="string")HC(t,r,e,n);else if(Mr(c)||Array.isArray(c)&&(typeof c[0]=="number"||Array.isArray(c[0])||Mr(c[0]))){const u=Op(t,r,c,e);o=u.width,a=u.height}else Array.isArray(c)&&(typeof c[0]=="string"||Bp(c[0]))?i===Lt?QC(t,r,e,n):VC(t,r,e,n):(Lp(t,r,c,e),o=c.width,a=c.height);else YC(t,r,e);return qi(e)&&Vu(t,r,e,o,a,s),Np(t,r,e),r}function _C(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||ie,u=Lr(c),f=n.format||u.format;let l;const d=n.src;if(d&&(Mr(d)||Array.isArray(d)&&typeof d[0]=="number")?l=n.type||Ip(t,d,u.type):l=n.type||u.type,a===Lt)for(let h=0;h<6;++h)t.texImage2D(Pa+h,s,c,r,i,0,f,l,null);else a===sn||a===cn?t.texImage3D(a,s,c,r,i,o,0,f,l,null):t.texImage2D(a,s,c,r,i,0,f,l,null)}const WC=ap,Va=33984,XC=35048,Ya=34962,ZC=34963,Zu=35345,Pp=35718,qC=35721,KC=35971,JC=35382,$C=35396,eS=35398,tS=35392,nS=35395,_a=5126,Fp=35664,zp=35665,Rp=35666,qu=5124,jp=35667,Up=35668,Gp=35669,Hp=35670,Qp=35671,Vp=35672,Yp=35673,_p=35674,Wp=35675,Xp=35676,rS=35678,iS=35680,oS=35679,aS=35682,sS=35685,cS=35686,uS=35687,lS=35688,fS=35689,dS=35690,hS=36289,pS=36292,mS=36293,Ku=5125,Zp=36294,qp=36295,Kp=36296,gS=36298,yS=36299,vS=36300,bS=36303,AS=36306,xS=36307,wS=36308,CS=36311,Wa=3553,Xa=34067,Ju=32879,Za=35866,j={};function Jp(t,e){return j[e].bindPoint}function SS(t,e){return function(n){t.uniform1f(e,n)}}function ES(t,e){return function(n){t.uniform1fv(e,n)}}function DS(t,e){return function(n){t.uniform2fv(e,n)}}function MS(t,e){return function(n){t.uniform3fv(e,n)}}function TS(t,e){return function(n){t.uniform4fv(e,n)}}function $p(t,e){return function(n){t.uniform1i(e,n)}}function em(t,e){return function(n){t.uniform1iv(e,n)}}function tm(t,e){return function(n){t.uniform2iv(e,n)}}function nm(t,e){return function(n){t.uniform3iv(e,n)}}function rm(t,e){return function(n){t.uniform4iv(e,n)}}function IS(t,e){return function(n){t.uniform1ui(e,n)}}function kS(t,e){return function(n){t.uniform1uiv(e,n)}}function NS(t,e){return function(n){t.uniform2uiv(e,n)}}function LS(t,e){return function(n){t.uniform3uiv(e,n)}}function BS(t,e){return function(n){t.uniform4uiv(e,n)}}function OS(t,e){return function(n){t.uniformMatrix2fv(e,!1,n)}}function PS(t,e){return function(n){t.uniformMatrix3fv(e,!1,n)}}function FS(t,e){return function(n){t.uniformMatrix4fv(e,!1,n)}}function zS(t,e){return function(n){t.uniformMatrix2x3fv(e,!1,n)}}function RS(t,e){return function(n){t.uniformMatrix3x2fv(e,!1,n)}}function jS(t,e){return function(n){t.uniformMatrix2x4fv(e,!1,n)}}function US(t,e){return function(n){t.uniformMatrix4x2fv(e,!1,n)}}function GS(t,e){return function(n){t.uniformMatrix3x4fv(e,!1,n)}}function HS(t,e){return function(n){t.uniformMatrix4x3fv(e,!1,n)}}function Ne(t,e,n,r){const i=Jp(t,e);return Dr(t)?function(o){let a,s;Ba(t,o)?(a=o,s=null):(a=o.texture,s=o.sampler),t.uniform1i(r,n),t.activeTexture(Va+n),t.bindTexture(i,a),t.bindSampler(n,s)}:function(o){t.uniform1i(r,n),t.activeTexture(Va+n),t.bindTexture(i,o)}}function Le(t,e,n,r,i){const o=Jp(t,e),a=new Int32Array(i);for(let s=0;s<i;++s)a[s]=n+s;return Dr(t)?function(s){t.uniform1iv(r,a),s.forEach(function(c,u){t.activeTexture(Va+a[u]);let f,l;Ba(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(Va+a[u]),t.bindTexture(o,c)})}}j[_a]={Type:Float32Array,size:4,setter:SS,arraySetter:ES},j[Fp]={Type:Float32Array,size:8,setter:DS,cols:2},j[zp]={Type:Float32Array,size:12,setter:MS,cols:3},j[Rp]={Type:Float32Array,size:16,setter:TS,cols:4},j[qu]={Type:Int32Array,size:4,setter:$p,arraySetter:em},j[jp]={Type:Int32Array,size:8,setter:tm,cols:2},j[Up]={Type:Int32Array,size:12,setter:nm,cols:3},j[Gp]={Type:Int32Array,size:16,setter:rm,cols:4},j[Ku]={Type:Uint32Array,size:4,setter:IS,arraySetter:kS},j[Zp]={Type:Uint32Array,size:8,setter:NS,cols:2},j[qp]={Type:Uint32Array,size:12,setter:LS,cols:3},j[Kp]={Type:Uint32Array,size:16,setter:BS,cols:4},j[Hp]={Type:Uint32Array,size:4,setter:$p,arraySetter:em},j[Qp]={Type:Uint32Array,size:8,setter:tm,cols:2},j[Vp]={Type:Uint32Array,size:12,setter:nm,cols:3},j[Yp]={Type:Uint32Array,size:16,setter:rm,cols:4},j[_p]={Type:Float32Array,size:32,setter:OS,rows:2,cols:2},j[Wp]={Type:Float32Array,size:48,setter:PS,rows:3,cols:3},j[Xp]={Type:Float32Array,size:64,setter:FS,rows:4,cols:4},j[sS]={Type:Float32Array,size:32,setter:zS,rows:2,cols:3},j[cS]={Type:Float32Array,size:32,setter:jS,rows:2,cols:4},j[uS]={Type:Float32Array,size:48,setter:RS,rows:3,cols:2},j[lS]={Type:Float32Array,size:48,setter:GS,rows:3,cols:4},j[fS]={Type:Float32Array,size:64,setter:US,rows:4,cols:2},j[dS]={Type:Float32Array,size:64,setter:HS,rows:4,cols:3},j[rS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Wa},j[iS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Xa},j[oS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Ju},j[aS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Wa},j[hS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Za},j[pS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Za},j[mS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Xa},j[gS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Wa},j[yS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Ju},j[vS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Xa},j[bS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Za},j[AS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Wa},j[xS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Ju},j[wS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Xa},j[CS]={Type:null,size:0,setter:Ne,arraySetter:Le,bindPoint:Za};function qa(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(Ya,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribPointer(e,n.numComponents||n.size,n.type||_a,n.normalize||!1,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function ln(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(Ya,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||qu,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function Ka(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(Ya,n.buffer),t.enableVertexAttribArray(e),t.vertexAttribIPointer(e,n.numComponents||n.size,n.type||Ku,n.stride||0,n.offset||0),n.divisor!==void 0&&t.vertexAttribDivisor(e,n.divisor)}}function $u(t,e,n){const r=n.size,i=n.count;return function(o){t.bindBuffer(Ya,o.buffer);const a=o.size||o.numComponents||r,s=a/i,c=o.type||_a,f=j[c].size*a,l=o.normalize||!1,d=o.offset||0,h=f/i;for(let p=0;p<i;++p)t.enableVertexAttribArray(e+p),t.vertexAttribPointer(e+p,s,c,l,f,d+h*p),o.divisor!==void 0&&t.vertexAttribDivisor(e+p,o.divisor)}}const de={};de[_a]={size:4,setter:qa},de[Fp]={size:8,setter:qa},de[zp]={size:12,setter:qa},de[Rp]={size:16,setter:qa},de[qu]={size:4,setter:ln},de[jp]={size:8,setter:ln},de[Up]={size:12,setter:ln},de[Gp]={size:16,setter:ln},de[Ku]={size:4,setter:Ka},de[Zp]={size:8,setter:Ka},de[qp]={size:12,setter:Ka},de[Kp]={size:16,setter:Ka},de[Hp]={size:4,setter:ln},de[Qp]={size:8,setter:ln},de[Vp]={size:12,setter:ln},de[Yp]={size:16,setter:ln},de[_p]={size:4,setter:$u,count:2},de[Wp]={size:9,setter:$u,count:3},de[Xp]={size:16,setter:$u,count:4};function im(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const QS=/(\.|\[|]|\w+)/g,VS=t=>t>="0"&&t<="9";function om(t,e,n,r){const i=t.split(QS).filter(s=>s!=="");let o=0,a="";for(;;){const s=i[o++];a+=s;const c=VS(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==="[",h=n[u]||(d?[]:{});n[u]=h,n=h,r[a]=r[a]||function(p){return function(m){lm(p,m)}}(h),a+=l}}}function YS(t,e){let n=0;function r(s,c,u){const f=c.name.endsWith("[0]"),l=c.type,d=j[l];if(!d)throw new Error(`unknown type: 0x${l.toString(16)}`);let h;if(d.bindPoint){const p=n;n+=c.size,f?h=d.arraySetter(t,l,p,u,c.size):h=d.setter(t,l,p,u,c.size)}else d.arraySetter&&f?h=d.arraySetter(t,u):h=d.setter(t,u);return h.location=u,h}const i={},o={},a=t.getProgramParameter(e,Pp);for(let s=0;s<a;++s){const c=t.getActiveUniform(e,s);if(im(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,om(u,l,o,i)}}return i}function _S(t,e){const n={},r=t.getProgramParameter(e,KC);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 WS(t,e){const n=t.getProgramParameter(e,Pp),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,JC);for(let s=0;s<a;++s){const c=t.getActiveUniformBlockName(e,s),u={index:t.getUniformBlockIndex(e,c),usedByVertexShader:t.getActiveUniformBlockParameter(e,s,$C),usedByFragmentShader:t.getActiveUniformBlockParameter(e,s,eS),size:t.getActiveUniformBlockParameter(e,s,tS),uniformIndices:t.getActiveUniformBlockParameter(e,s,nS)};u.used=u.usedByVertexShader||u.usedByFragmentShader,o[c]=u}return{blockSpecs:o,uniformData:r}}const am=/\[\d+\]\.$/,XS=(t,e)=>((t+(e-1))/e|0)*e;function ZS(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 qS(t,e,n,r){const i=n.blockSpecs,o=n.uniformData,a=i[r];if(!a)return WC("no uniform block object named:",r),{name:r,uniforms:{}};const s=new ArrayBuffer(a.size),c=t.createBuffer(),u=a.index;t.bindBuffer(Zu,c),t.uniformBlockBinding(e,a.index,u);let f=r+".";am.test(f)&&(f=f.replace(am,"."));const l={},d={},h={};return a.uniformIndices.forEach(function(p){const m=o[p];let y=m.name;y.startsWith(f)&&(y=y.substr(f.length));const g=y.endsWith("[0]");g&&(y=y.substr(0,y.length-3));const A=j[m.type],x=A.Type,C=g?XS(A.size,16)*m.size:A.size*m.size,b=new x(s,m.offset,C/x.BYTES_PER_ELEMENT);l[y]=b;const v=ZS(b,g,A.rows,A.cols);d[y]=v,om(y,v,h,d)}),{name:r,array:s,asFloat:new Float32Array(s),buffer:c,uniforms:l,setters:d}}function sm(t,e,n){return qS(t,e.program,e.uniformBlockSpec,n)}function KS(t,e,n){const i=(e.uniformBlockSpec||e).blockSpecs[n.name];if(i){const o=i.index;return t.bindBufferRange(Zu,o,n.buffer,n.offset||0,n.array.byteLength),!0}return!1}function cm(t,e,n){KS(t,e,n)&&t.bufferData(Zu,n.array,XC)}function um(t,e){const n=t.setters;for(const r in e){const i=n[r];if(i){const o=e[r];i(o)}}}function lm(t,e){for(const n in e){const r=t[n];typeof r=="function"?r(e[n]):lm(t[n],e[n])}}function Qe(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)Qe(n,o[s])}else for(const a in o){const s=n[a];s&&s(o[a])}}}function JS(t,e){const n={},r=t.getProgramParameter(e,qC);for(let i=0;i<r;++i){const o=t.getActiveAttrib(e,i);if(im(o))continue;const a=t.getAttribLocation(e,o.name),s=de[o.type],c=s.setter(t,a,s);c.location=a,n[o.name]=c}return n}function $S(t,e){for(const n in e){const r=t[n];r&&r(e[n])}}function Or(t,e,n){n.vertexArrayObject?t.bindVertexArray(n.vertexArrayObject):($S(e.attribSetters||e,n.attribs),n.indices&&t.bindBuffer(ZC,n.indices))}function eE(t,e){const n=YS(t,e),r=JS(t,e),i={program:e,uniformSetters:n,attribSetters:r};return Dr(t)&&(i.uniformBlockSpec=WS(t,e),i.transformFeedbackInfo=_S(t,e)),i}const tE=4,fm=5123;function $i(t,e,n,r,i,o){n=n===void 0?tE: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?fm:e.elementType,i,o):t.drawElements(n,c,s===void 0?fm:e.elementType,i):o!==void 0?t.drawArraysInstanced(n,i,c,o):t.drawArrays(n,i,c)}const nE=36160,Zn=36161,rE=3553,iE=5121,oE=6402,aE=6408,sE=33190,cE=36012,uE=35056,lE=36013,fE=32854,dE=32855,hE=36194,dm=33189,hm=6401,pm=36168,el=34041,pE=36064,Ja=36096,mm=36128,tl=33306,nl=33071,rl=9729,gm=[{format:aE,type:iE,min:rl,wrap:nl},{format:el}],ut={};ut[el]=tl,ut[hm]=mm,ut[pm]=mm,ut[oE]=Ja,ut[dm]=Ja,ut[sE]=Ja,ut[cE]=Ja,ut[uE]=tl,ut[lE]=tl;function mE(t,e){return ut[t]||ut[e]}const fn={};fn[fE]=!0,fn[dE]=!0,fn[hE]=!0,fn[el]=!0,fn[dm]=!0,fn[hm]=!0,fn[pm]=!0;function gE(t){return fn[t]}function yE(t,e,n,r){const i=nE,o=t.createFramebuffer();t.bindFramebuffer(i,o),n=n||t.drawingBufferWidth,r=r||t.drawingBufferHeight,e=e||gm;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||mE(l,c.internalFormat);if(d||(d=pE+a++),!u)if(f!==void 0||gE(l))u=t.createRenderbuffer(),t.bindRenderbuffer(Zn,u),f>1?t.renderbufferStorageMultisample(Zn,f,l,n,r):t.renderbufferStorage(Zn,l,n,r);else{const h=Object.assign({},c);h.width=n,h.height=r,h.auto===void 0&&(h.auto=!1,h.min=h.min||h.minMag||rl,h.mag=h.mag||h.minMag||rl,h.wrapS=h.wrapS||h.wrap||nl,h.wrapT=h.wrapT||h.wrap||nl),u=Ji(t,h)}if(sp(t,u))t.framebufferRenderbuffer(i,d,Zn,u);else if(Ba(t,u))c.layer!==void 0?t.framebufferTextureLayer(i,d,u,c.level||0,c.layer):t.framebufferTexture2D(i,d,c.target||rE,u,c.level||0);else throw new Error("unknown attachment type");s.attachments.push(u)}),s}function vE(t,e,n,r,i){r=r||t.drawingBufferWidth,i=i||t.drawingBufferHeight,e.width=r,e.height=i,n=n||gm,n.forEach(function(o,a){const s=e.attachments[a],c=o.format,u=o.samples;if(u!==void 0||sp(t,s))t.bindRenderbuffer(Zn,s),u>1?t.renderbufferStorageMultisample(Zn,u,c,r,i):t.renderbufferStorage(Zn,c,r,i);else if(Ba(t,s))_C(t,s,o,r,i);else throw new Error("unknown attachment type")})}function bE(t,e,n){const r=t.createVertexArray();return t.bindVertexArray(r),e.length||(e=[e]),e.forEach(function(i){Or(t,i,n)}),t.bindVertexArray(null),{numElements:n.numElements,elementType:n.elementType,vertexArrayObject:r}}const AE=/^(.*?)_/;function xE(t,e){Ru(t,0);const n=t.getExtension(e);if(n){const r={},i=AE.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&&ap(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},Ru(r,0)}return n}const ym=["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 vm(t){for(let e=0;e<ym.length;++e)xE(t,ym[e])}function wE(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){vm(r);break}return r}function CE(t,e){return wE(t,e)}var SE=`/**
15
15
  * The vertex position wrt the rectangle specified by (x, x2, y, y2).
16
16
  * [0, 0] = [x, y], [1, 1] = [x2, y2].
17
17
  * The x or y component may contain fractional values if the rectangle
@@ -125,7 +125,7 @@ void main(void) {
125
125
 
126
126
  setupPicking();
127
127
  }
128
- `,pS=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
128
+ `,EE=`#if defined(ROUNDED_CORNERS) || defined(STROKED)
129
129
  in vec2 vPosInPixels;
130
130
  #endif
131
131
 
@@ -176,38 +176,20 @@ void main(void) {
176
176
  fragColor = vPickingColor;
177
177
  }
178
178
  }
179
- `;function vu(t,e=[],n=0){const r=Math.fround(t);return e[n]=r,e[n+1]=isFinite(r)?t-r:0,e}function gS(t){switch(xS(t).gpuVendor.toLowerCase()){case"nvidia":return` #define NVIDIA_GPU
180
- // Nvidia optimizes away the calculation necessary for emulated fp64
181
- #define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
182
- `;case"intel":return` #define INTEL_GPU
183
- // Intel optimizes away the calculation necessary for emulated fp64
184
- #define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
185
- // Intel's built-in 'tan' function doesn't have acceptable precision
186
- #define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
187
- // Intel GPU doesn't have full 32 bits precision in same cases, causes overflow
188
- #define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1
189
- `;case"amd":return` #define AMD_GPU
190
- `;default:return` #define DEFAULT_GPU
191
- // Prevent driver from optimizing away the calculation necessary for emulated fp64
192
- #define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
193
- // Intel's built-in 'tan' function doesn't have acceptable precision
194
- #define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
195
- // Intel GPU doesn't have full 32 bits precision in same cases, causes overflow
196
- #define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1
197
- `}}const mS=7936,yS=7937,AS=7938,bS=35724;function xS(t){const e=t.getExtension("WEBGL_debug_renderer_info"),n=t.getParameter(e&&e.UNMASKED_VENDOR_WEBGL||mS),r=t.getParameter(e&&e.UNMASKED_RENDERER_WEBGL||yS);return{gpuVendor:vS(n,r),vendor:n,renderer:r,version:t.getParameter(AS),shadingLanguageVersion:t.getParameter(bS)}}function vS(t,e){return t.match(/NVIDIA/i)||e.match(/NVIDIA/i)?"NVIDIA":t.match(/INTEL/i)||e.match(/INTEL/i)?"INTEL":t.match(/AMD/i)||e.match(/AMD/i)||t.match(/ATI/i)||e.match(/ATI/i)?"AMD":"UNKNOWN GPU"}function wu(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function vp(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Ti(){}var Ni=.7,vs=1/Ni,dr="\\s*([+-]?\\d+)\\s*",Li="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",mt="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",wS=/^#([0-9a-f]{3,8})$/,ES=new RegExp("^rgb\\("+[dr,dr,dr]+"\\)$"),SS=new RegExp("^rgb\\("+[mt,mt,mt]+"\\)$"),CS=new RegExp("^rgba\\("+[dr,dr,dr,Li]+"\\)$"),DS=new RegExp("^rgba\\("+[mt,mt,mt,Li]+"\\)$"),MS=new RegExp("^hsl\\("+[Li,mt,mt]+"\\)$"),IS=new RegExp("^hsla\\("+[Li,mt,mt,Li]+"\\)$"),wp={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};wu(Ti,ki,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:Ep,formatHex:Ep,formatHsl:TS,formatRgb:Sp,toString:Sp});function Ep(){return this.rgb().formatHex()}function TS(){return Tp(this).formatHsl()}function Sp(){return this.rgb().formatRgb()}function ki(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=wS.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Cp(e):n===3?new Ue(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?ws(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?ws(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=ES.exec(t))?new Ue(e[1],e[2],e[3],1):(e=SS.exec(t))?new Ue(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=CS.exec(t))?ws(e[1],e[2],e[3],e[4]):(e=DS.exec(t))?ws(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=MS.exec(t))?Ip(e[1],e[2]/100,e[3]/100,1):(e=IS.exec(t))?Ip(e[1],e[2]/100,e[3]/100,e[4]):wp.hasOwnProperty(t)?Cp(wp[t]):t==="transparent"?new Ue(NaN,NaN,NaN,0):null}function Cp(t){return new Ue(t>>16&255,t>>8&255,t&255,1)}function ws(t,e,n,r){return r<=0&&(t=e=n=NaN),new Ue(t,e,n,r)}function NS(t){return t instanceof Ti||(t=ki(t)),t?(t=t.rgb(),new Ue(t.r,t.g,t.b,t.opacity)):new Ue}function LS(t,e,n,r){return arguments.length===1?NS(t):new Ue(t,e,n,r==null?1:r)}function Ue(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}wu(Ue,LS,vp(Ti,{brighter:function(t){return t=t==null?vs:Math.pow(vs,t),new Ue(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=t==null?Ni:Math.pow(Ni,t),new Ue(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){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:Dp,formatHex:Dp,formatRgb:Mp,toString:Mp}));function Dp(){return"#"+Eu(this.r)+Eu(this.g)+Eu(this.b)}function Mp(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(t===1?")":", "+t+")")}function Eu(t){return t=Math.max(0,Math.min(255,Math.round(t)||0)),(t<16?"0":"")+t.toString(16)}function Ip(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new yt(t,e,n,r)}function Tp(t){if(t instanceof yt)return new yt(t.h,t.s,t.l,t.opacity);if(t instanceof Ti||(t=ki(t)),!t)return new yt;if(t instanceof yt)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),s=NaN,a=o-i,c=(o+i)/2;return a?(e===o?s=(n-r)/a+(n<r)*6:n===o?s=(r-e)/a+2:s=(e-n)/a+4,a/=c<.5?o+i:2-o-i,s*=60):a=c>0&&c<1?0:s,new yt(s,a,c,t.opacity)}function kS(t,e,n,r){return arguments.length===1?Tp(t):new yt(t,e,n,r==null?1:r)}function yt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}wu(yt,kS,vp(Ti,{brighter:function(t){return t=t==null?vs:Math.pow(vs,t),new yt(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=t==null?Ni:Math.pow(Ni,t),new yt(this.h,this.s,this.l*t,this.opacity)},rgb:function(){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 Ue(Su(t>=240?t-240:t+120,i,r),Su(t,i,r),Su(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(t===1?"hsl(":"hsla(")+(this.h||0)+", "+(this.s||0)*100+"%, "+(this.l||0)*100+"%"+(t===1?")":", "+t+")")}}));function Su(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 Cu="attr_",Np="uDomain_",OS="range_",Lp="scale_",kp="getScaled_",Du="uRangeTexture_",Op=3402823466e29;function BS(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 PS(t,e){let n;if($o(t))n=Ln(u0(t)(e));else if(oe(e))if(In(t))n=zS(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(co(e))n=Ln(e?1:0);else if(e===null)if(In(t))n=Ln([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=Ln(e);return`
179
+ `;const il="attr_",bm="uDomain_",DE="range_",Am="scale_",xm="getScaled_",ol="uRangeTexture_",wm=3402823466e29;function ME(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 TE(t,e){let n;if(Na(t))n=qn(ip(t)(e));else if(re(e))if(_n(t))n=kE(e);else throw new Error(`String values are not supported on the "${t}" channel: ${e}`);else if(Yo(e))n=qn(e?1:0);else if(e===null)if(_n(t))n=qn([0,0,0]);else throw new Error(`null value is not supported on the "${t}" chanel.`);else n=qn(e);return`
198
180
  #define ${t}_DEFINED
199
- ${n.type} ${kp}${t}() {
181
+ ${n.type} ${xm}${t}() {
200
182
  // Constant value
201
183
  return ${n};
202
- }`}function FS(t,e,n){var w;if(Ze(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=nr(t),i=Cu+t,o=Np+r,s=OS+r,a=!!e.fp64,c=a?"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`),a&&l.push(`#define ${t}_FP64`);const{transform:d}=BS(e.type),h=(E,...B)=>RS.apply(null,[E+(a?"Fp64":""),"value",...B]);let p;switch(d){case"linear":p=h("scaleLinear","domain",s);break;case"log":p=h("scaleLog","domain",s,e.base());break;case"symlog":p=h("scaleSymlog","domain",s,e.constant());break;case"pow":case"sqrt":p=h("scalePow","domain",s,e.exponent());break;case"index":case"locus":case"point":case"band":p=h("scaleBand","domain",s,e.paddingInner(),e.paddingOuter(),e.align(),(w=n.band)!=null?w:.5);break;case"ordinal":case"null":case"identity":p=h("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${e.type}! ${t}: ${JSON.stringify(n)}`)}const g=Vo(e.type)||nt(e.type)&&In(t)?[0,1]:e.range?e.range():void 0;if(g&&t==r&&g.length&&g.every(ae)){const E=Bp(g);l.push(`const ${E.type} ${s} = ${E};`)}const m=In(t)?"vec3":"float";let y;if(In(t)){const E=Du+r;if(t==r&&l.push(`uniform sampler2D ${E};`),nt(e.type))y=`getInterpolatedColor(${E}, transformed)`;else if(Xt(e.type)||Kn(e.type))y=`getDiscreteColor(${E}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||Kn(e.type)){const E=Du+r;t==r&&l.push(`uniform sampler2D ${E};`),y=`getDiscreteColor(${E}, int(transformed)).r`}yi(n)?l.push(`uniform highp ${c} ${i};`):l.push(`in highp ${c} ${i};`);const x=[],v=nt(e.type)&&u>2,S=Kn(e.type)||v;if(x.push("int slot = 0;"),S){const E=o;x.push(v?`while (slot < ${E}.length() - 2 && value >= ${E}[slot + 1]) { slot++; }`:`while (slot < ${E}.length() && value >= ${E}[slot]) { slot++; }`)}const b=nt(e.type)||Kn(e.type)||["band","point"].includes(e.type);if(p){const E=o;if(b){const B=a?"vec4":"vec2";x.push(`${B} domain = ${B}(${E}[slot], ${E}[slot + 1]);`)}x.push(`float transformed = ${p};`),v&&x.push(`transformed = (float(slot) + transformed) / (float(${E}.length()) - 1.0);`)}else x.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&x.push(`transformed = clampToRange(transformed, ${Bp(g)});`),x.push(`return ${y!=null?y:"transformed"};`),l.push(`
203
- ${m} ${Lp}${t}(${c} value) {
204
- ${x.map(E=>` ${E}
184
+ }`}function IE(t,e,n){var w,E;if(st(n))throw new Error(`Cannot create scale for "value": ${JSON.stringify(n)}`);const r=Er(t),i=il+t,o=bm+r,a=DE+r,s=$a(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}=ME(e.type),h=(k,...L)=>NE.apply(null,[k,"value",...L]);let p;switch(d){case"linear":p=h("scaleLinear","domain",a);break;case"log":p=h("scaleLog","domain",a,e.base());break;case"symlog":p=h("scaleSymlog","domain",a,e.constant());break;case"pow":case"sqrt":p=h("scalePow","domain",a,e.exponent());break;case"index":case"locus":p=h("scaleBandHp","domain",a,e.paddingInner(),e.paddingOuter(),e.align(),(w=n.band)!=null?w:.5);break;case"point":case"band":p=h("scaleBand","domain",a,e.paddingInner(),e.paddingOuter(),e.align(),(E=n.band)!=null?E:.5);break;case"ordinal":case"null":case"identity":p=h("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${e.type}! ${t}: ${JSON.stringify(n)}`)}const m=wa(e.type)||Ue(e.type)&&_n(t)?[0,1]:e.range?e.range():void 0;if(m&&t==r&&m.length&&m.every(le)){const k=Cm(m);l.push(`const ${k.type} ${a} = ${k};`)}const y=_n(t)?"vec3":"float";let g;if(_n(t)){const k=ol+r;if(t==r&&l.push(`uniform sampler2D ${k};`),Ue(e.type))g=`getInterpolatedColor(${k}, transformed)`;else if(nn(e.type)||Ar(e.type))g=`getDiscreteColor(${k}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(e.type==="ordinal"||Ar(e.type)){const k=ol+r;t==r&&l.push(`uniform sampler2D ${k};`),g=`getDiscreteColor(${k}, int(transformed)).r`}Qi(n)?l.push(`uniform highp ${c} ${i};`):l.push(`in highp ${c} ${i};`);const A=[],x=Ue(e.type)&&u>2,C=Ar(e.type)||x;if(A.push("int slot = 0;"),C){const k=o;A.push(x?`while (slot < ${k}.length() - 2 && value >= ${k}[slot + 1]) { slot++; }`:`while (slot < ${k}.length() && value >= ${k}[slot]) { slot++; }`)}const b=Ue(e.type)||Ar(e.type)||["band","point"].includes(e.type);if(p){const k=o;b&&(s?A.push(`vec3 domain = ${k};`):A.push(`vec2 domain = vec2(${k}[slot], ${k}[slot + 1]);`)),A.push(`float transformed = ${p};`),x&&A.push(`transformed = (float(slot) + transformed) / (float(${k}.length()) - 1.0);`)}else A.push("float transformed = float(slot);");"clamp"in e&&e.clamp()&&A.push(`transformed = clampToRange(transformed, ${Cm(m)});`),A.push(`return ${g!=null?g:"transformed"};`),l.push(`
185
+ ${y} ${Am}${t}(${c} value) {
186
+ ${A.map(k=>` ${k}
205
187
  `).join("")}
206
188
  }`),l.push(`
207
- ${m} ${kp}${t}() {
208
- return ${Lp}${t}(${i});
209
- }`);const A=l.join(`
210
- `);if(b&&t==r){const E=nt(e.type)||Kn(e.type)?u:2;f=`${a?"vec2":"float"} ${o}[${E}];`}return{glsl:A,domainUniform:f}}function Mu(t){if(!ae(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+Op;if(t==-1/0)return""+-Op;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function Ln(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(Mu).join(", ")})`):(n="float",r=Mu(t[0])),Object.assign(r,{type:n,numComponents:e})}function zS(t){const e=ki(t).rgb();return Ln([e.r,e.g,e.b].map(n=>n/255))}function Bp(t){return Ln([t[0],fe(t)])}function RS(t,...e){const n=[];for(const r of e)ae(r)?n.push(Mu(r)):Ye(r)?n.push(Ln(r)):n.push(r);return`${t}(${n.join(", ")})`}class US{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(Cu+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(!ae(this.size))throw new Error("The number of vertices must be defined!");let i,o,s=0;const a=new Float32Array(this.size*n);if(this.arrays[e]={data:a,numComponents:n},n==1){let c=0;const u=f=>{c=+f};i=()=>{a[s++]=c},o=u}else{let c=r!=null?r:[0];const u=r?f=>{}:f=>{c=f};switch(n){case 1:break;case 2:i=()=>{a[s++]=c[0],a[s++]=c[1]},o=u;break;case 3:i=()=>{a[s++]=c[0],a[s++]=c[1],a[s++]=c[2]},o=u;break;case 4:i=()=>{a[s++]=c[0],a[s++]=c[1],a[s++]=c[2],a[s++]=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}];
189
+ ${y} ${xm}${t}() {
190
+ return ${Am}${t}(${i});
191
+ }`);const v=l.join(`
192
+ `);if(b&&t==r){const k=Ue(e.type)||Ar(e.type)?u:2;f=s?`highp vec3 ${o};`:`mediump float ${o}[${k}];`}return{glsl:v,domainUniform:f}}function al(t){if(!le(t))throw new Error(`Not a number: ${t}`);if(t==1/0)return""+wm;if(t==-1/0)return""+-wm;{let e=`${t}`;return/^(-)?\d+$/.test(e)&&(e+=".0"),e}}function qn(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(al).join(", ")})`):(n="float",r=al(t[0])),Object.assign(r,{type:n,numComponents:e})}function kE(t){const e=Pn(t).rgb();return qn([e.r,e.g,e.b].map(n=>n/255))}function Cm(t){return qn([t[0],He(t)])}function NE(t,...e){const n=[];for(const r of e)le(r)?n.push(al(r)):Ze(r)?n.push(qn(r)):n.push(r);return`${t}(${n.join(", ")})`}function $a(t){return t=="index"||t=="locus"}function sl(t,e){const r=t%2048,i=Math.round(t-r);return e!=null||(e=[]),e[0]=i,e[1]=r,e}function LE(t){return[...sl(t[0]),t[1]-t[0]]}class BE{constructor(e){this.size=e,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}addConverter(e,n){const r=this.createUpdater(il+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!=null?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}];
211
193
  `,n+=`p${i}();
212
194
  `;const r=new Function("that",`${e}
213
195
 
@@ -215,207 +197,21 @@ ${m} ${kp}${t}() {
215
197
  ${n}
216
198
  that.vertexCount++;
217
199
  };
218
- `);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 hr=5,Iu=127;function Tu(t){const e=[];for(let p=0;p<=Iu;p++)e.push(void 0);const n=new Map;for(const p of t.chars)p.id<=Iu?e[p.id]=p:n.set(p.id,p);const r=8722;n.has(r)||n.set(r,e["-".charCodeAt(0)]);function i(p){return(p<=Iu?e[p]:n.get(p))||e[63]}function o(p){return i(p.charCodeAt(0))}const s=t.common.base,a=o("x"),c=o("X"),u=o("q"),f=a.height-hr*2,l=c.height-hr*2,d=u.height-a.height+u.yoffset-a.yoffset;function h(p,g=1){let m=0;for(let y=0;y<p.length;y++)m+=i(p.charCodeAt(y)).xadvance;return m/s*g}return{measureWidth:h,getCharByCode:i,getChar:o,xHeight:f,capHeight:l,descent:d,common:t.common}}function Nu(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const jS=2**31-1;function GS(t,e){const n=new Int32Array(t);n.fill(jS);const r=new Int32Array(t),i=e[0],s=(e[1]-e[0])/t,a=l=>Nu(Math.floor((l-i)/s),0,t-1),c=(l,d,h,p)=>{const g=a(l),m=a(d);for(let y=g;y<=m;y++)n[y]>h&&(n[y]=h),r[y]<p&&(r[y]=p)},u=(l,d)=>[n[a(l)],r[a(d)]],f=()=>{for(let l=1;l<r.length;l++)r[l]<r[l-1]&&(r[l]=r[l-1]);for(let l=r.length-1;l>0;l--)r[l-1]>r[l]&&(r[l-1]=r[l]);return u};return c.getIndex=f,c}class Oi{constructor({encoders:e,numVertices:n=void 0,attributes:r=[],buildXIndex:i=!1}){this.encoders=e,this._buildXIndex=i,this.variableEncoders=Object.fromEntries(Object.entries(e).filter(([o,s])=>r.includes(o)&&s&&s.scale&&!s.constant)),this.allocatedVertices=n,this.variableBuilder=new US(n);for(const[o,s]of Object.entries(this.variableEncoders)){const a=s.accessor,c=[0,0],u=s.scale.fp64,f=s.indexer,l=f?d=>f(a(d)):u?d=>vu(a(d),c):a;this.variableBuilder.addConverter(o,{f:l,numComponents:u?2:1,arrayReference:u?c:void 0})}this.lastOffset=0,this.rangeMap=new Co([],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){for(let o=r;o<i;o++)this.variableBuilder.pushFromDatum(n[o]);this.registerBatch(e)}prepareXIndexer(e){if(!this._buildXIndex)return;const n=this.variableEncoders.x,r=this.variableEncoders.x2;if(n&&r){const i=n.accessor,o=r.accessor;this.xIndexer=GS(50,[i(e[0]),o(fe(e))]);let s=this.variableBuilder.vertexCount;this.addToXIndex=a=>{let c=this.variableBuilder.vertexCount;this.xIndexer(i(a),o(a),s,c),s=c}}else this.xIndexer=void 0,this.addToXIndex=i=>{}}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class HS extends Oi{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o,buildXIndex:s=!1}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0,buildXIndex:s});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,[s,a]=this.visibleRange,c=d=>d.accessor||(h=>0),u=c(o.x),f=c(o.x2);this.prepareXIndexer(n);const l=[0,0];this.updateFrac(l);for(let d=r;d<i;d++){const h=n[d];let p=u(h),g=f(h);if(p>g&&([p,g]=[g,p]),g<s||p>a)continue;p<s&&(p=s),g>a&&(g=a),this.variableBuilder.updateFromDatum(h),l[0]=0,l[1]=0;const m=1;this.variableBuilder.pushAll();for(let y=0;y<=m;y++)l[0]=y/m,l[1]=0,this.variableBuilder.pushAll(),l[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(h)}this.registerBatch(e)}}class QS extends Oi{constructor({encoders:e,attributes:n,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:o,buildXIndex:s}){super({encoders:e,attributes:n,numVertices:r==1/0?o*6:void 0,buildXIndex:s});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);for(let o=r;o<i;o++){const s=n[o];this.variableBuilder.updateFromDatum(s),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();const a=1;for(let c=0;c<=a;c++)this.updatePos(c/a),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(s)}this.registerBatch(e)}}class VS extends Oi{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class _S extends Oi{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 YS extends Oi{constructor({encoders:e,attributes:n,fontMetrics:r,properties:i,numCharacters:o=void 0,buildXIndex:s=!1}){super({encoders:e,attributes:n,numVertices:o*6,buildXIndex:s});this.metadata=r,this.metrics=r,this.properties=i;const c=e.text.channelDef;this.numberFormat=!Ze(c)&&c.format?Le(c.format):u=>u,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){var h;const o=this.properties.align||"left",s=(h=this.properties.logoLetters)!=null?h:!1,a=this.metadata.common.base,c=this.metadata.common.scaleH;let u=-hr;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);for(let p=r;p<i;p++){const g=n[p],m=this.numberFormat(f(g)),y=oe(m)?m:m===null?"":""+m;if(y.length==0)continue;this.variableBuilder.updateFromDatum(g);const x=s?y.length:this.metrics.measureWidth(y);this.updateWidth(x);let v=o=="right"?-x:o=="center"?-x/2:0;if(!s){const w=this.metrics.getCharByCode(y.charCodeAt(0));v-=(w.width-w.xadvance)/a/2}let S=-.5,b=1,A=1;for(let w=0;w<y.length;w++){const E=this.metrics.getCharByCode(y.charCodeAt(w)),B=s?1:E.xadvance/a;if(E.id==32){v+=B;continue}s?(A=(E.width+hr*2)/E.width,v=-A/2,b=(E.height+hr*2)/E.height,S=-.5-hr/E.height):(b=E.height/a,S=-(E.height+E.yoffset+u)/a,A=E.width/a);const O=E.x,D=E.y;l[0]=v,l[1]=S+b,d[0]=O/c,d[1]=D/c,this.variableBuilder.pushAll(),l[0]=v+A,l[1]=S+b,d[0]=(O+E.width)/c,d[1]=D/c,this.variableBuilder.pushAll(),l[0]=v,l[1]=S,d[0]=O/c,d[1]=(D+E.height)/c,this.variableBuilder.pushAll(),l[0]=v+A,l[1]=S+b,d[0]=(O+E.width)/c,d[1]=D/c,this.variableBuilder.pushAll(),l[0]=v,l[1]=S,d[0]=O/c,d[1]=(D+E.height)/c,this.variableBuilder.pushAll(),l[0]=v+A,l[1]=S,d[0]=(O+E.width)/c,d[1]=(D+E.height)/c,this.variableBuilder.pushAll(),v+=B}this.addToXIndex(n)}this.registerBatch(e)}}var WS=`// Adapted from luma.gl - https://github.com/uber/luma.gl
219
-
220
- // Copyright (c) 2015 - 2017 Uber Technologies, Inc.
221
- //
222
- // Permission is hereby granted, free of charge, to any person obtaining a copy
223
- // of this software and associated documentation files (the "Software"), to deal
224
- // in the Software without restriction, including without limitation the rights
225
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
226
- // copies of the Software, and to permit persons to whom the Software is
227
- // furnished to do so, subject to the following conditions:
228
- //
229
- // The above copyright notice and this permission notice shall be included in
230
- // all copies or substantial portions of the Software.
231
- //
232
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
233
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
234
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
235
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
236
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
237
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
238
- // THE SOFTWARE.
239
-
240
- uniform float ONE;
241
-
242
- /*
243
- About LUMA_FP64_CODE_ELIMINATION_WORKAROUND
244
-
245
- The purpose of this workaround is to prevent shader compilers from
246
- optimizing away necessary arithmetic operations by swapping their sequences
247
- or transform the equation to some 'equivalent' from.
248
-
249
- The method is to multiply an artifical variable, ONE, which will be known to
250
- the compiler to be 1 only at runtime. The whole expression is then represented
251
- as a polynomial with respective to ONE. In the coefficients of all terms, only one a
252
- and one b should appear
253
-
254
- err = (a + b) * ONE^6 - a * ONE^5 - (a + b) * ONE^4 + a * ONE^3 - b - (a + b) * ONE^2 + a * ONE
255
- */
256
-
257
- // Divide float number to high and low floats to extend fraction bits
258
- vec2 split(float a) {
259
- const float SPLIT = 4097.0;
260
- float t = a * SPLIT;
261
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
262
- float a_hi = t * ONE - (t - a);
263
- float a_lo = a * ONE - a_hi;
264
- #else
265
- float a_hi = t - (t - a);
266
- float a_lo = a - a_hi;
267
- #endif
268
- return vec2(a_hi, a_lo);
269
- }
270
-
271
- // Divide float number again when high float uses too many fraction bits
272
- vec2 split2(vec2 a) {
273
- vec2 b = split(a.x);
274
- b.y += a.y;
275
- return b;
276
- }
277
-
278
- // Special sum operation when a > b
279
- vec2 quickTwoSum(float a, float b) {
280
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
281
- float sum = (a + b) * ONE;
282
- float err = b - (sum - a) * ONE;
283
- #else
284
- float sum = a + b;
285
- float err = b - (sum - a);
286
- #endif
287
- return vec2(sum, err);
288
- }
289
-
290
- // General sum operation
291
- vec2 twoSum(float a, float b) {
292
- float s = (a + b);
293
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
294
- float v = (s * ONE - a) * ONE;
295
- float err = (a - (s - v) * ONE) * ONE * ONE * ONE + (b - v);
296
- #else
297
- float v = s - a;
298
- float err = (a - (s - v)) + (b - v);
299
- #endif
300
- return vec2(s, err);
301
- }
302
-
303
- vec2 twoSub(float a, float b) {
304
- float s = (a - b);
305
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
306
- float v = (s * ONE - a) * ONE;
307
- float err = (a - (s - v) * ONE) * ONE * ONE * ONE - (b + v);
308
- #else
309
- float v = s - a;
310
- float err = (a - (s - v)) - (b + v);
311
- #endif
312
- return vec2(s, err);
313
- }
314
-
315
- vec2 twoSqr(float a) {
316
- float prod = a * a;
317
- vec2 a_fp64 = split(a);
318
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
319
- float err = ((a_fp64.x * a_fp64.x - prod) * ONE + 2.0 * a_fp64.x *
320
- a_fp64.y * ONE * ONE) + a_fp64.y * a_fp64.y * ONE * ONE * ONE;
321
- #else
322
- float err = ((a_fp64.x * a_fp64.x - prod) + 2.0 * a_fp64.x * a_fp64.y) + a_fp64.y * a_fp64.y;
323
- #endif
324
- return vec2(prod, err);
325
- }
326
-
327
- vec2 twoProd(float a, float b) {
328
- float prod = a * b;
329
- vec2 a_fp64 = split(a);
330
- vec2 b_fp64 = split(b);
331
- float err = ((a_fp64.x * b_fp64.x - prod) + a_fp64.x * b_fp64.y +
332
- a_fp64.y * b_fp64.x) + a_fp64.y * b_fp64.y;
333
- return vec2(prod, err);
334
- }
335
-
336
- vec2 sum_fp64(vec2 a, vec2 b) {
337
- vec2 s, t;
338
- s = twoSum(a.x, b.x);
339
- t = twoSum(a.y, b.y);
340
- s.y += t.x;
341
- s = quickTwoSum(s.x, s.y);
342
- s.y += t.y;
343
- s = quickTwoSum(s.x, s.y);
344
- return s;
345
- }
346
-
347
- vec2 sub_fp64(vec2 a, vec2 b) {
348
- vec2 s, t;
349
- s = twoSub(a.x, b.x);
350
- t = twoSub(a.y, b.y);
351
- s.y += t.x;
352
- s = quickTwoSum(s.x, s.y);
353
- s.y += t.y;
354
- s = quickTwoSum(s.x, s.y);
355
- return s;
356
- }
357
-
358
- vec2 mul_fp64(vec2 a, vec2 b) {
359
- vec2 prod = twoProd(a.x, b.x);
360
- // y component is for the error
361
- prod.y += a.x * b.y;
362
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
363
- prod = split2(prod);
364
- #endif
365
- prod = quickTwoSum(prod.x, prod.y);
366
- prod.y += a.y * b.x;
367
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
368
- prod = split2(prod);
369
- #endif
370
- prod = quickTwoSum(prod.x, prod.y);
371
- return prod;
372
- }
373
-
374
- vec2 div_fp64(vec2 a, vec2 b) {
375
- float xn = 1.0 / b.x;
376
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
377
- vec2 yn = mul_fp64(a, vec2(xn, 0));
378
- #else
379
- vec2 yn = a * xn;
380
- #endif
381
- float diff = (sub_fp64(a, mul_fp64(b, yn))).x;
382
- vec2 prod = twoProd(xn, diff);
383
- return sum_fp64(yn, prod);
384
- }
385
-
386
- vec2 sqrt_fp64(vec2 a) {
387
- if (a.x == 0.0 && a.y == 0.0) return vec2(0.0, 0.0);
388
- if (a.x < 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);
389
-
390
- float x = 1.0 / sqrt(a.x);
391
- float yn = a.x * x;
392
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
393
- vec2 yn_sqr = twoSqr(yn) * ONE;
394
- #else
395
- vec2 yn_sqr = twoSqr(yn);
396
- #endif
397
- float diff = sub_fp64(a, yn_sqr).x;
398
- vec2 prod = twoProd(x * 0.5, diff);
399
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
400
- return sum_fp64(split(yn), prod);
401
- #else
402
- return sum_fp64(vec2(yn, 0.0), prod);
403
- #endif
404
- }`,Pp=`#define PI 3.141593
405
-
406
- /** Offset in "unit" units */
407
- uniform vec2 uViewOffset;
408
-
409
- uniform vec2 uViewScale;
410
-
411
- /** Size of the logical viewport in pixels, i.e., the view */
412
- uniform vec2 uViewportSize;
413
-
414
- uniform lowp float uDevicePixelRatio;
200
+ `);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 Pr=5,cl=127;function ul(t){const e=[];for(let p=0;p<=cl;p++)e.push(void 0);const n=new Map;for(const p of t.chars)p.id<=cl?e[p.id]=p:n.set(p.id,p);const r=8722;n.has(r)||n.set(r,e["-".charCodeAt(0)]);function i(p){return(p<=cl?e[p]:n.get(p))||e[63]}function o(p){return i(p.charCodeAt(0))}const a=t.common.base,s=o("x"),c=o("X"),u=o("q"),f=s.height-Pr*2,l=c.height-Pr*2,d=u.height-s.height+u.yoffset-s.yoffset;function h(p,m=1){let y=0;for(let g=0;g<p.length;g++)y+=i(p.charCodeAt(g)).xadvance;return y/a*m}return{measureWidth:h,getCharByCode:i,getChar:o,xHeight:f,capHeight:l,descent:d,common:t.common}}function ll(t,e=0,n=1){return Math.max(e,Math.min(n,t))}const Sm=2**31-1,OE=-(2**31);function PE(t,e,n,r=n){const i=new Int32Array(t);i.fill(Sm);let o=OE,a=!1;const s=new Int32Array(t),c=e[0],f=(e[1]-e[0])/t,l=y=>ll(Math.floor((y-c)/f),0,t-1);function d(y,g,A){g>o?o=g:a||(a=!0,console.debug("Items are not ordered properly. Disabling binned index."));const x=n(y),C=l(x);i[C]>g&&(i[C]=g),s[C]<A&&(s[C]=A)}function h(y,g,A){g>o?o=g:a||(a=!0,console.debug("Items are not ordered properly. Disabling binned index."));const x=n(y),C=r(y),b=l(x),v=l(C);for(let w=b;w<=v;w++)i[w]>g&&(i[w]=g),s[w]<A&&(s[w]=A)}const p=(y,g,A=[0,0])=>(A[0]=i[l(y)],A[1]=Math.max(s[l(g)],A[0]),A),m=()=>{for(let g=1;g<s.length;g++)s[g]<s[g-1]&&(s[g]=s[g-1]);let y=!0;for(let g=i.length-1;g>0;g--)y&&i[g]==Sm?(i[g]=s[g],y=!1):i[g-1]>i[g]&&(i[g-1]=i[g]);return p};if(d.getIndex=m,h.getIndex=m,!a)return n==r?d:h}class eo{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 BE(n);for(const[i,o]of Object.entries(this.variableEncoders)){const a=o.accessor,s=[0,0],c=$a(o.scale.type),u=o.indexer,f=u?l=>u(a(l)):c?l=>sl(a(l),s):a;this.variableBuilder.addConverter(i,{f,numComponents:c?2:1,arrayReference:c?s:void 0})}this.lastOffset=0,this.rangeMap=new Mn([],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){if(!e.length||r-n<0){this.addToXIndex=s=>{};return}const i=s=>{var c;return s&&Ue((c=s.scale)==null?void 0:c.type)&&s},o=i(this.variableEncoders.x),a=i(this.variableEncoders.x2);if(o){const s=o.accessor,c=a?a.accessor:s;this.xIndexer=PE(50,[s(e[n]),c(e[r-1])],s,c);let u=this.variableBuilder.vertexCount;this.addToXIndex=f=>{let l=this.variableBuilder.vertexCount;this.xIndexer(f,u,l),u=l}}else this.xIndexer=void 0,this.addToXIndex=s=>{}}addToXIndex(e){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class FE extends eo{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||(h=>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 h=n[d];let p=u(h),m=f(h);if(p>m&&([p,m]=[m,p]),m<a||p>s)continue;p<a&&(p=a),m>s&&(m=s),this.variableBuilder.updateFromDatum(h),l[0]=0,l[1]=0;const y=1;this.variableBuilder.pushAll();for(let g=0;g<=y;g++)l[0]=g/y,l[1]=0,this.variableBuilder.pushAll(),l[1]=1,this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(h)}this.registerBatch(e)}}class zE extends eo{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 RE extends eo{constructor({encoders:e,attributes:n,numItems:r=void 0}){super({encoders:e,attributes:n,numVertices:r})}}class jE extends eo{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 UE extends eo{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=!st(s)&&s.format?he(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){var h;const o=this.properties.align||"left",a=(h=this.properties.logoLetters)!=null?h:!1,s=this.metadata.common.base,c=this.metadata.common.scaleH;let u=-Pr;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 m=n[p],y=this.numberFormat(f(m)),g=re(y)?y:y===null?"":""+y;if(g.length==0)continue;this.variableBuilder.updateFromDatum(m);const A=a?g.length:this.metrics.measureWidth(g);this.updateWidth(A);let x=o=="right"?-A:o=="center"?-A/2:0;if(!a){const w=this.metrics.getCharByCode(g.charCodeAt(0));x-=(w.width-w.xadvance)/s/2}let C=-.5,b=1,v=1;for(let w=0;w<g.length;w++){const E=this.metrics.getCharByCode(g.charCodeAt(w)),k=a?1:E.xadvance/s;if(E.id==32){x+=k;continue}a?(v=(E.width+Pr*2)/E.width,x=-v/2,b=(E.height+Pr*2)/E.height,C=-.5-Pr/E.height):(b=E.height/s,C=-(E.height+E.yoffset+u)/s,v=E.width/s);const L=E.x,I=E.y;l[0]=x,l[1]=C+b,d[0]=L/c,d[1]=I/c,this.variableBuilder.pushAll(),l[0]=x+v,l[1]=C+b,d[0]=(L+E.width)/c,d[1]=I/c,this.variableBuilder.pushAll(),l[0]=x,l[1]=C,d[0]=L/c,d[1]=(I+E.height)/c,this.variableBuilder.pushAll(),l[0]=x+v,l[1]=C+b,d[0]=(L+E.width)/c,d[1]=I/c,this.variableBuilder.pushAll(),l[0]=x,l[1]=C,d[0]=L/c,d[1]=(I+E.height)/c,this.variableBuilder.pushAll(),l[0]=x+v,l[1]=C,d[0]=(L+E.width)/c,d[1]=(I+E.height)/c,this.variableBuilder.pushAll(),x+=k}this.addToXIndex(m)}this.registerBatch(e)}}var Em=`#define PI 3.141593
201
+
202
+ uniform View {
203
+ /** Offset in "unit" units */
204
+ mediump vec2 uViewOffset;
205
+ mediump vec2 uViewScale;
206
+ /** Size of the logical viewport in pixels, i.e., the view */
207
+ mediump vec2 uViewportSize;
208
+ lowp float uDevicePixelRatio;
209
+ // TODO: Views with opacity less than 1.0 should be rendered into a texture
210
+ // that is rendered with the specified opacity.
211
+ lowp float uViewOpacity;
212
+ bool uPickingEnabled;
213
+ };
415
214
 
416
- // TODO: Views with opacity less than 1.0 should be rendered into a texture
417
- // that is rendered with the specified opacity.
418
- uniform lowp float uViewOpacity;
419
215
 
420
216
  /**
421
217
  * Maps a coordinate on the unit scale to a normalized device coordinate.
@@ -464,7 +260,9 @@ vec4 distanceToColor(float d, vec4 fill, vec4 stroke, float halfStrokeWidth) {
464
260
  return fill * distanceToRatio(-d);
465
261
  }
466
262
  }
467
- `,XS=`// Utils ------------
263
+ `,GE=`const float inf = 1.0 / 0.0;
264
+
265
+ // Utils ------------
468
266
 
469
267
  vec3 getDiscreteColor(sampler2D s, int index) {
470
268
  return texelFetch(s, ivec2(index % textureSize(s, 0).x, 0), 0).rgb;
@@ -533,49 +331,48 @@ float scaleBand(float value, vec2 domainExtent, vec2 range,
533
331
  // TODO: reverse
534
332
  float start = range[0];
535
333
  float stop = range[1];
334
+ float rangeSpan = stop - start;
536
335
 
537
336
  float n = domainExtent[1] - domainExtent[0];
538
337
 
338
+ // This fix departs from Vega and d3: https://github.com/vega/vega/issues/3357#issuecomment-1063253596
539
339
  paddingInner = int(n) > 1 ? paddingInner : 0.0;
540
340
 
541
341
  // Adapted from: https://github.com/d3/d3-scale/blob/master/src/band.js
542
- float step = (stop - start) / max(1.0, n - paddingInner + paddingOuter * 2.0);
543
- start += (stop - start - step * (n - paddingInner)) * align;
342
+ float step = rangeSpan / max(1.0, n - paddingInner + paddingOuter * 2.0);
343
+ start += (rangeSpan - step * (n - paddingInner)) * align;
544
344
  float bandwidth = step * (1.0 - paddingInner);
545
345
 
546
346
  return start + (value - domainExtent[0]) * step + bandwidth * band;
547
347
  }
548
- `,qS=`float scaleIdentityFp64(vec2 value) {
549
- return value[0];
550
- }
551
348
 
552
- float scaleLinearFp64(vec2 value, vec4 domain, vec2 range) {
553
- vec2 domainSpan = sub_fp64(domain.zw, domain.xy);
554
- float rangeSpan = range[1] - range[0];
555
-
556
- float unitValue = div_fp64(sub_fp64(value, domain.xy), domainSpan).x;
557
- return unitValue * rangeSpan + range[0];
558
- }
559
-
560
- float scaleBandFp64(vec2 value, vec4 domainExtent, vec2 range,
561
- float paddingInner, float paddingOuter,
562
- float align, float band) {
349
+ // High precision variant of scaleBand for index/locus scales
350
+ float scaleBandHp(vec2 value, vec3 domainExtent, vec2 range,
351
+ float paddingInner, float paddingOuter,
352
+ float align, float band) {
563
353
 
564
354
  // TODO: reverse
565
355
  float start = range[0];
566
356
  float stop = range[1];
357
+ float rangeSpan = stop - start;
567
358
 
568
- vec2 domainSpan = sub_fp64(domainExtent.zw, domainExtent.xy);
569
- float n = domainSpan.x;
359
+ vec2 domainStart = domainExtent.xy;
360
+ float n = domainExtent[2];
570
361
 
571
- // Based on: https://github.com/d3/d3-scale/blob/master/src/band.js
572
- float step = (stop - start) / max(1.0, n - paddingInner + paddingOuter * 2.0);
573
- start += (stop - start - step * (n - paddingInner)) * align;
362
+ // The following computation is identical for every vertex. Could be done on the JS side.
363
+ float step = rangeSpan / max(1.0, n - paddingInner + paddingOuter * 2.0);
364
+ start += (rangeSpan - step * (n - paddingInner)) * align;
574
365
  float bandwidth = step * (1.0 - paddingInner);
575
366
 
576
- return start + sub_fp64(value, domainExtent.xy).x * step + bandwidth * band;
367
+ // Using max to prevent the shader compiler from wrecking the precision.
368
+ // Othwewise the compiler could optimize the sum of the four terms into
369
+ // some equivalent form that does premature rounding.
370
+ float hi = max(value[0] - domainStart[0], -inf);
371
+ float lo = max(value[1] - domainStart[1], -inf);
372
+
373
+ return dot(vec4(start, hi, lo, bandwidth), vec4(1.0, step, step, band));
577
374
  }
578
- `,ZS=`
375
+ `,HE=`
579
376
  /**
580
377
  * Describes where a sample facet should be shown. Interpolating between the
581
378
  * current and target positions/heights allows for transitioning between facet
@@ -682,14 +479,12 @@ float getSampleFacetHeight(vec2 pos) {
682
479
  return facetPos.height;
683
480
  }
684
481
  }
685
- `,KS=`/*
482
+ `,QE=`/*
686
483
  * Based on concepts presented at:
687
484
  * https://webglfundamentals.org/webgl/lessons/webgl-picking.html
688
485
  * https://deck.gl/docs/developer-guide/custom-layers/picking
689
486
  */
690
487
 
691
- uniform bool uPickingEnabled;
692
-
693
488
  flat out highp vec4 vPickingColor;
694
489
 
695
490
  /**
@@ -711,25 +506,22 @@ bool setupPicking() {
711
506
  }
712
507
  return false;
713
508
  }
714
- `,JS=`uniform bool uPickingEnabled;
509
+ `,VE=`flat in highp vec4 vPickingColor;
510
+ `;const es=Symbol("cacheMap");function Fr(t,e,n){let r=no(t).get(e);return r===void 0&&(r=n(e),no(t).set(e,r)),r}function Dm(t,e){no(t).delete(e)}function to(t,e){const n=no(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);no(t).delete(e)}function Mm(t){t[es]=new Map}function no(t){return t[es]||Mm(t),t[es]}function YE(t,e,n,r){const i=re(t)?t:t.name,o=!re(t)&&t.extent||[0,1];if(n===void 0&&!re(t)&&(n=t.count),i){const a=mu(i);if(Be(a)){const s=Im(a,{extent:o,count:n});return ro(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},s,r)}else{if(Ze(a))return Tm(a,e);throw new Error("Unknown scheme: "+i)}}}function _E(t,e="rgb",n,r){const i=Ca(t,re(e)?e:e.type,re(e)?void 0:e.gamma),o=Im(i);return ro(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function WE(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 ro(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function Tm(t,e,n,r){const i=km(t,n);return ro(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function Im(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=He(e)-i,a=_t(r).map(s=>s/(r-1)).map(s=>i+s/o).map(t);return n&&a.reverse(),km(a)}function km(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 XE{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=CE(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(!Dr(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");vm(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=yE(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;";Ze(n)&&(n=n.join(`
715
511
 
716
- flat in highp vec4 vPickingColor;
717
- `;const Es=Symbol("cacheMap");function pr(t,e,n){let r=Pi(t).get(e);return r===void 0&&(r=n(e),Pi(t).set(e,r)),r}function Fp(t,e){Pi(t).delete(e)}function Bi(t,e){const n=Pi(t);for(const r of n.keys())r.startsWith(e)&&n.delete(r);Pi(t).delete(e)}function zp(t){t[Es]=new Map}function Pi(t){return t[Es]||zp(t),t[Es]}function $S(t,e,n,r){const i=oe(t)?t:t.name,o=!oe(t)&&t.extent||[0,1];if(n===void 0&&!oe(t)&&(n=t.count),i){const s=kc(i);if(Te(s)){const a=Up(s,{extent:o,count:n});return Fi(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},a,r)}else{if(Ye(s))return Rp(s,e);throw new Error("Unknown scheme: "+i)}}}function eC(t,e="rgb",n,r){const i=_o(t,oe(e)?e:e.type,oe(e)?void 0:e.gamma),o=Up(i);return Fi(n,{minMag:n.LINEAR,format:n.RGB,height:1,wrap:n.CLAMP_TO_EDGE},o,r)}function tC(t,e,n,r){const i=Math.max(t.length,n||0),o=new Float32Array(i);for(let s=0;s<i;s++)o[s]=t[s%t.length];return Fi(e,{minMag:e.NEAREST,format:e.RED,internalFormat:e.R32F,height:1},o,r)}function Rp(t,e,n,r){const i=jp(t,n);return Fi(e,{minMag:e.NEAREST,format:e.RGB,height:1},i,r)}function Up(t,{extent:e=[0,1],reverse:n=!1,count:r=256}={}){const i=e[0],o=fe(e)-i,s=Io(r).map(a=>a/(r-1)).map(a=>i+a/o).map(t);return n&&s.reverse(),jp(s)}function jp(t,e){const n=Math.max(t.length,e||0),r=new Uint8Array(n*3);for(let i=0;i<n;i++){const o=ki(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 nC{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=dS(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(!rr(i))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");xp(i),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),this._shaderDefines=gS(i),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=sS(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;";Ye(n)&&(n=n.join(`
512
+ `));const o=this.gl,a=n.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let s=this._shaderCache.get(a);if(!s){const c=[r,i,n].join(`
718
513
 
719
- `));const o=this.gl,s=n.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let a=this._shaderCache.get(s);if(!a){const c=[r,i,n].join(`
720
-
721
- `);a=o.createShader(e),o.shaderSource(a,c),o.compileShader(a),this._shaderCache.set(s,a)}return a}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,aS(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,s,a,c;if(this._logicalCanvasSize)return this._logicalCanvasSize;const e=(s=(o=this._sizeSource)==null?void 0:o.call(this))!=null?s:{width:void 0,height:void 0},n=window.getComputedStyle(this._container,null),r=(a=e.width)!=null?a:this._container.clientWidth-parseFloat(n.paddingLeft)-parseFloat(n.paddingRight),i=(c=e.height)!=null?c: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(s,a){return Xt(a.type)?a.domain().length:a.type=="threshold"?a.domain().length+1:a.type=="quantize"||a.type=="quantile"?s!=null?s:4:s}const o=e.channel;if(In(o)){const s=e.getScaleProps(),a=e.getScale();let c;if(s.scheme){let u=oe(s.scheme)?void 0:s.scheme.count;u=i(u,a),c=$S(s.scheme,this.gl,u,r)}else{const u=a.range();Vo(a.type)?c=eC(u,s.interpolate,this.gl,r):c=Rp(u,this.gl,a.domain().length,r)}this.rangeTextures.set(e,c)}else{const s=e.getScale();if(s.type==="ordinal"||Kn(s.type)){const a=$o(o)?u0(o):u=>u,c=e.getScale().range();this.rangeTextures.set(e,tC(c.map(a),this.gl,s.domain().length,r))}}}}function rC(t,e="",n=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...e.matchAll(r)],o=new Map(i.map((s,a)=>{const c=parseInt(s[1]),u=i[a+1],f=u?u.index:e.length,l=e.substring(s.index,f);return[c-1,l]}));return t.split(`
722
- `).map((s,a)=>{const c=o.get(a);return`${a+1+n}: ${s}${c?`
514
+ `);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,vE(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,a,s,c;if(this._logicalCanvasSize)return this._logicalCanvasSize;const e=(a=(o=this._sizeSource)==null?void 0:o.call(this))!=null?a:{width:void 0,height:void 0},n=window.getComputedStyle(this._container,null),r=(s=e.width)!=null?s:this._container.clientWidth-parseFloat(n.paddingLeft)-parseFloat(n.paddingRight),i=(c=e.height)!=null?c: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!=null?a:4:a}const o=e.channel;if(_n(o)){const a=e.getScaleProps(),s=e.getScale();let c;if(a.scheme){let u=re(a.scheme)?void 0:a.scheme.count;u=i(u,s),c=YE(a.scheme,this.gl,u,r)}else{const u=s.range();wa(s.type)?c=_E(u,a.interpolate,this.gl,r):c=Tm(u,this.gl,s.domain().length,r)}this.rangeTextures.set(e,c)}else{const a=e.getScale();if(a.type==="ordinal"||Ar(a.type)){const s=Na(o)?ip(o):u=>u,c=e.getScale().range();this.rangeTextures.set(e,WE(c.map(s),this.gl,a.domain().length,r))}}}}function ZE(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(`
515
+ `).map((a,s)=>{const c=o.get(s);return`${s+1+n}: ${a}${c?`
723
516
 
724
517
  ^^^ ${c}`:""}`}).join(`
725
- `)}function iC(t,e,n){const r=t.createProgram();t.attachShader(r,e),t.attachShader(r,n),t.linkProgram(r);function i(){let o,s;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),s=rC(t.getShaderSource(c),o,0)+`
726
- Error compiling: ${o}`,t.deleteShader(c));t.deleteProgram(r)}if(o)return{message:o,detail:s}}return{program:r,getProgramErrors:i}}function Fi(t,e,n,r){return r?U0(t,r,n,e):r=Di(t,F(T({},e),{src:n})),r}function oC(...t){const e={get(n,r,i){for(const o of t){const a=o()[r];if(a!==void 0)return a}},has(n,r,i){for(const o of t){const s=o();if(r in s)return!0}return!1}};return new Proxy({},e)}function sC(t){return oe(t)||ae(t)||co(t)}const aC="SAMPLE_FACET_UNIFORM",Gp="SAMPLE_FACET_TEXTURE";class zi{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.defaultProperties={get clip(){return["x","y"].map(n=>e.getScaleResolution(n)).some(n=>{var r;return(r=n==null?void 0:n.isZoomable())!=null?r:!1})},xOffset:0,yOffset:0,minBufferSize:0},this.properties=oC(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 pr(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=s=>{const a=this.properties[s];return sC(a)&&{value:a}},i=Object.fromEntries(this.getSupportedChannels().map(s=>[s,r(s)]).filter(s=>s[1].value!==void 0)),o=this.fixEncoding(T(T(T({},e),i),n));for(const s of Object.keys(o))this.getSupportedChannels().includes(s)||delete o[s];return o})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=mw(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return Gp;if(this.unitView.getFacetAccessor())return aC}createAndLinkShaders(e,n,r=[]){const i=this.getAttributes();r.push("// view: "+this.unitView.getPathString()),this.domainUniforms=[];let o=[];const s=this.getSampleFacetMode();s&&r.push(`#define ${s}`);for(const l of i){let d;if(l in this.encoding)d=l;else continue;const h=this.encoding[d];if(!!h)if(Ze(h))o.push(PS(d,h.value));else{const p=Ke(h)&&h.resolutionChannel||d,g=this.unitView.getScaleResolution(p).getScale(),m=FS(d,g,h);o.push(m.glsl),m.domainUniform&&this.domainUniforms.push(m.domainUniform)}}const a=this.domainUniforms.length?`layout(std140) uniform Domains {
727
- `+this.domainUniforms.map(l=>` ${l}
518
+ `)}function qE(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=ZE(t.getShaderSource(c),o,0)+`
519
+ Error compiling: ${o}`,t.deleteShader(c));t.deleteProgram(r)}if(o)return{message:o,detail:a}}return{program:r,getProgramErrors:i}}function ro(t,e,n,r){return r?Op(t,r,n,e):r=Ji(t,U(T({},e),{src:n})),r}function KE(...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 JE(t){return re(t)||le(t)||Yo(t)}const $E="SAMPLE_FACET_UNIFORM",Nm="SAMPLE_FACET_TEXTURE";class io{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 eD,this.defaultProperties={get clip(){return["x","y"].map(n=>e.getScaleResolution(n)).some(n=>{var r;return(r=n==null?void 0:n.isZoomable())!=null?r:!1})},xOffset:0,yOffset:0,minBufferSize:0},this.properties=KE(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 Fr(this,"encoding",()=>{const e=this.getDefaultEncoding(),n=this.unitView.getEncoding(),r=a=>{const s=this.properties[a];return JE(s)&&{value:s}},i=Object.fromEntries(this.getSupportedChannels().map(a=>[a,r(a)]).filter(a=>a[1].value!==void 0)),o=this.fixEncoding(T(T(T({},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=I4(this)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return Nm;if(this.unitView.getFacetAccessor())return $E}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 h;if(d in this.encoding)h=d;else continue;const p=this.encoding[h];if(!!p)if(st(p))o.push(TE(h,p.value));else{const m=$e(p)&&p.resolutionChannel||h,y=this.unitView.getScaleResolution(m).getScale(),g=IE(h,y,p);o.push(g.glsl),g.domainUniform&&this.domainUniforms.push(g.domainUniform)}}const s=this.domainUniforms.length?`layout(std140) uniform Domains {
520
+ `+this.domainUniforms.map(d=>` ${d}
728
521
  `).join("")+`};
729
522
 
730
- `:"",c=[...r,Pp,XS,a,...o,ZS,KS,e];c.some(l=>/[Ff]p64/.test(l))&&(c.unshift(qS),c.unshift(WS));const u=[...r,Pp,JS,n],f=this.gl;this.programStatus=iC(f,this.glHelper.compileShader(f.VERTEX_SHADER,c),this.glHelper.compileShader(f.FRAGMENT_SHADER,u))}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=QE(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=RE(this.gl,this.programInfo,"Domains")),this.gl.useProgram(this.programInfo.program),this._setDatums()}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if(yi(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):r.scale.fp64?vu(+n.datum):+n.datum;Se(this.programInfo,{[Cu+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&&$w(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=n4(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){var i;const n=this.glHelper,r=this.gl;if(this.vertexArrayInfo||(this.vertexArrayInfo=cS(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program),this.domainUniformInfo){for(const[o,s]of Object.entries(this.domainUniformInfo.setters)){const a=o.substring(Np.length),c=this.encoding[a],u=Ke(c)&&c.resolutionChannel||a,f=this.unitView.getScaleResolution(u);if(f){const l=f.getScale(),d=Xt(l.type)?[0,l.domain().length]:l.domain();s(l.fp64?d.map(h=>vu(h)).flat():d)}}jE(r,this.programInfo,this.domainUniformInfo)}for(const[o,s]of Object.entries(this.encoding))if(Ke(s)){const a=Ke(s)&&s.resolutionChannel||o,c=this.unitView.getScaleResolution(a),u=n.rangeTextures.get(c);u&&Se(this.programInfo,{[Du+o]:u})}if(this.getSampleFacetMode()==Gp){let o;for(const s of this.unitView.getAncestors())if(o=s.getSampleFacetTexture(),o)break;Se(this.programInfo,{uSampleFacetTexture:o})}Se(this.programInfo,{ONE:1,uDevicePixelRatio:this.glHelper.dpr,uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:((i=e.picking)!=null?i:!1)&&this.isPickingParticipant()}),Se(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0}),this.opaque||e.picking?r.disable(r.BLEND):r.enable(r.BLEND)}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 s=n.targetLocSize?n.targetLocSize.location:i,a=n.targetLocSize?n.targetLocSize.size:o;this.gl.uniform4f(r.location,i,o,s,a)}return!0}render(e){}createRenderCallback(e,n,r){var s;const i=this;let o;if(this.properties.buildIndex){const a=(s=this.unitView.getScaleResolution("x"))==null?void 0:s.getScale();o=c=>{if(a&&c.xIndex){const u=a.domain(),f=c.xIndex(u[0],u[1]),l=f[0],d=f[1]-l;d>0&&e(l,d)}else e(c.offset,c.count)}}else o=a=>e(a.offset,a.count);if(this.properties.dynamicData)return function(){const c=r().get(n.facetId);c&&c.count&&i.prepareSampleFacetRendering(n)&&o(c)};{const a=r().get(n.facetId);if(a&&a.count)return function(){i.prepareSampleFacetRendering(n)&&o(a)}}}setViewport(e,n){const r=this.glHelper.dpr,i=this.gl,o=this.properties,s=this.glHelper.getLogicalCanvasSize(),a=.5,c=(o.xOffset||0)+a,u=(o.yOffset||0)+a;let f,l=e;if(o.clip||n){let d=0,h=0,p;n?(l=o.clip?e.intersect(n):n,p=[e.width/l.width,e.height/l.height],h=Math.max(0,e.y2-n.y2),d=Math.max(0,e.x2-n.x2)):p=[1,1];const g=[e.x,s.height-l.y2,Math.max(0,l.width),Math.max(0,l.height)].map(v=>v*r),m=g.map(v=>Math.floor(v)),[y,x]=g.map((v,S)=>v-m[S]);i.viewport(...m),i.scissor(...m),i.enable(i.SCISSOR_TEST),f={uViewOffset:[(c+d+y)/l.width,-(u+h-x)/l.height],uViewScale:p}}else i.viewport(0,0,s.width*r,s.height*r),i.disable(i.SCISSOR_TEST),f={uViewOffset:[(e.x+c)/s.width,(s.height-e.y-u-e.height)/s.height],uViewScale:[e.width/s.width,e.height/s.height]};return Se(this.programInfo,f),Se(this.programInfo,{uViewportSize:[e.width,e.height]}),l.height>0&&l.width>0}findDatumAt(e,n){}}function Lu(t,e){var o;const n=xw(e);let r=t[e]&&T({},t[e]),i=t[n]&&T({},t[n]);if(!(Ze(r)||Ze(i))){if(r){if(!Ke(t[e]))return;if(i){if(r.type!="quantitative"){const s=(1-(r.band||1))/2;r.band=s,i.band=-s}}else if(r.type=="quantitative")i={datum:0};else{i=T({},r);const s=(1-((o=r.band)!=null?o:1))/2;r.band=0+s,i.band=1-s}}else r={value:0},i={value:1};t[e]=r,t[n]=i}}function Hp(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke=T({resolutionChannel:"color"},t.color)),Ze(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity=T({resolutionChannel:"opacity"},t.opacity))}function Qp(t,e){Ze(t.fill)&&t.fill.value===null?t.fillOpacity={value:0}:t.fill||(t.fill=T({resolutionChannel:"color"},t.color),!e&&!t.fillOpacity&&(t.fillOpacity={value:0})),t.fillOpacity||(e?t.fillOpacity=T({resolutionChannel:"opacity"},t.opacity):t.fillOpacity={value:0})}class cC extends zi{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 pr(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&Ze(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return Lu(e,"x"),Lu(e,"y"),Hp(e,this.properties.filled),Qp(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!(Ze(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(hS,pS,e.map(n=>"#define "+n))}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new HS({encoders:this.encoders,attributes:this.getAttributes(),numItems:n,buildXIndex:this.properties.buildIndex});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap=i.rangeMap,this.updateBufferInfo(i)}prepareRender(e){var r,i,o,s;super.prepareRender(e);const n=this.properties;Se(this.programInfo,{uMinSize:[n.minWidth,n.minHeight],uMinOpacity:n.minOpacity,uCornerRadii:[(r=n.cornerRadiusTopRight)!=null?r:n.cornerRadius,(i=n.cornerRadiusBottomRight)!=null?i:n.cornerRadius,(o=n.cornerRadiusTopLeft)!=null?o:n.cornerRadius,(s=n.cornerRadiusBottomLeft)!=null?s:n.cornerRadius]}),fr(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{Mi(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e,()=>this.rangeMap)}findDatumAt(e,n){e=qe(e);const r=this.encoders,i=this.unitView.getCollector().facetBatches.get(e),o=r.x.accessor,s=r.x2.accessor;if(i)return i.find(a=>n>=o(a)&&n<s(a))}}var uC=`precision mediump float;
731
-
732
- /**
523
+ `:"",u=[`precision highp float;
524
+ `,...r,Em,GE,s,...o,HE,QE,e],f=[...r,Em,VE,n],l=this.gl;this.programStatus=qE(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=eE(this.gl,this.programStatus.program),delete this.programStatus,this.domainUniforms.length&&(this.domainUniformInfo=sm(this.gl,this.programInfo,"Domains")),this.viewUniformInfo=sm(this.gl,this.programInfo,"View"),this.gl.useProgram(this.programInfo.program),this._setDatums(),Qe(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0})}_setDatums(){for(const[e,n]of Object.entries(this.encoding))if(Qi(n)){const r=this.encoders[e],i=r.indexer?r.indexer(n.datum):$a(r.scale.type)?sl(+n.datum):+n.datum;Qe(this.programInfo,{[il+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&&d3(this.gl,this.bufferInfo.attribs[n],r.data,0);else this.deleteGraphicsData(),this.bufferInfo=m3(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){var a;const n=this.glHelper,r=this.gl,i=[];if(i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=bE(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)}),this.domainUniformInfo){for(const[s,c]of Object.entries(this.domainUniformInfo.setters)){const u=s.substring(bm.length),f=this.encoding[u],l=$e(f)&&f.resolutionChannel||u,d=this.unitView.getScaleResolution(l);if(d){const h=d.getScale();i.push(()=>{const p=nn(h.type)?[0,h.domain().length]:h.domain();c($a(h.type)?LE(p):p)})}}i.push(()=>cm(r,this.programInfo,this.domainUniformInfo))}for(const[s,c]of Object.entries(this.encoding))if($e(c)){const u=$e(c)&&c.resolutionChannel||s,f=this.unitView.getScaleResolution(u),l=n.rangeTextures.get(f);l&&i.push(()=>Qe(this.programInfo,{[ol+s]:l}))}this.getSampleFacetMode()==Nm&&i.push(()=>{let s;for(const c of this.unitView.getAncestors())if(s=c.getSampleFacetTexture(),s)break;if(!s)throw new Error("No facet texture available. This is bug.");Qe(this.programInfo,{uSampleFacetTexture:s})});const o=((a=e.picking)!=null?a:!1)&&this.isPickingParticipant();return i.push(()=>um(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 f;const r=this;let i;const o=(f=this.unitView.getScaleResolution("x"))==null?void 0:f.getScale(),a=o&&Ue(o.type),s=["index","locus"].includes(o==null?void 0:o.type)?-1:0,c=[0,0];i=l=>{if(a&&l.xIndex){const d=o.domain(),h=l.xIndex(d[0]+s,d[1],c),p=h[0],m=h[1]-p;m>0&&e(p,m)}else e(l.offset,l.count)};const u=this.rangeMap.get(n.facetId);return n.sampleFacetRenderingOptions?function(){u.count&&r.prepareSampleFacetRendering(n)&&i(u)}:function(){u.count&&i(u)}}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,h=0,p;n?(l=o.clip?e.intersect(n):n,p=[e.width/l.width,e.height/l.height],h=Math.max(0,e.y2-n.y2),d=Math.max(0,e.x2-n.x2)):p=[1,1];const m=[e.x,a.height-l.y2,Math.max(0,l.width),Math.max(0,l.height)].map(x=>x*r),y=m.map(x=>Math.floor(x)),[g,A]=m.map((x,C)=>x-y[C]);i.viewport(...y),i.scissor(...y),i.enable(i.SCISSOR_TEST),f={uViewOffset:[(c+d+g)/l.width,-(u+h-A)/l.height],uViewScale:p}}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 um(this.viewUniformInfo,U(T({},f),{uViewportSize:[e.width,e.height],uDevicePixelRatio:this.glHelper.dpr})),cm(this.gl,this.programInfo,this.viewUniformInfo),l.height>0&&l.width>0}findDatumAt(e,n){}}class eD extends Mn{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 fl(t,e){var o;const n=B4(e);let r=t[e]&&T({},t[e]),i=t[n]&&T({},t[n]);if(!(st(r)||st(i))){if(r){if(!$e(t[e]))return;if(i){if(r.type!="quantitative"){const a=(1-(r.band||1))/2;r.band=a,i.band=-a}}else if(r.type=="quantitative")i={datum:0};else{i=T({},r);const a=(1-((o=r.band)!=null?o:1))/2;r.band=0+a,i.band=1-a}}else r={value:0},i={value:1};t[e]=r,t[n]=i}}function Lm(t,e){t.stroke||(e?t.stroke={value:null}:t.stroke=T({resolutionChannel:"color"},t.color)),st(t.stroke)&&t.stroke.value===null&&(t.strokeWidth={value:0}),t.strokeOpacity||(t.strokeOpacity=T({resolutionChannel:"opacity"},t.opacity))}function Bm(t,e){st(t.fill)&&t.fill.value===null?t.fillOpacity={value:0}:t.fill||(t.fill=T({resolutionChannel:"color"},t.color),!e&&!t.fillOpacity&&(t.fillOpacity={value:0})),t.fillOpacity||(e?t.fillOpacity=T({resolutionChannel:"opacity"},t.opacity):t.fillOpacity={value:0})}class tD extends io{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 Fr(this,"opaque",()=>!this._isRoundedCorners()&&!this._isStroked()&&st(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return fl(e,"x"),fl(e,"y"),Lm(e,this.properties.filled),Bm(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!(st(e)&&!e.value)}async initializeGraphics(){await super.initializeGraphics();const e=[];this._isRoundedCorners()&&e.push("ROUNDED_CORNERS"),this._isStroked()&&e.push("STROKED"),this.createAndLinkShaders(SE,EE,e.map(n=>"#define "+n))}finalizeGraphicsInitialization(){var n,r,i,o;super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Qe(this.programInfo,{uMinSize:[e.minWidth,e.minHeight],uMinOpacity:e.minOpacity,uCornerRadii:[(n=e.cornerRadiusTopRight)!=null?n:e.cornerRadius,(r=e.cornerRadiusBottomRight)!=null?r:e.cornerRadius,(i=e.cornerRadiusTopLeft)!=null?i:e.cornerRadius,(o=e.cornerRadiusBottomLeft)!=null?o:e.cornerRadius]})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new FE({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(()=>Or(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{$i(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r)},e)}findDatumAt(e,n){e=Je(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))}}var nD=`/**
733
525
  * The stroke should only grow inwards, e.g, the diameter/outline is not affected by the stroke width.
734
526
  * Thus, a point that has a zero size has no visible stroke. This allows strokes to be used with
735
527
  * geometric zoom, etc.
@@ -855,7 +647,7 @@ void main(void) {
855
647
 
856
648
  setupPicking();
857
649
  }
858
- `,lC=`const lowp vec4 white = vec4(1.0);
650
+ `,rD=`const lowp vec4 white = vec4(1.0);
859
651
  const lowp vec4 black = vec4(0.0, 0.0, 0.0, 1.0);
860
652
 
861
653
  uniform bool uInwardStroke;
@@ -978,10 +770,10 @@ void main() {
978
770
  }
979
771
  }
980
772
 
981
- `;const Nt=1<<0,rn=1<<1,fC={};class se{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",Io(this.children.length).map(e=>`const child${e} = children[${e}];`).join(`
982
- `)+`return function propagate(datum) {${Io(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
773
+ `;const Bt=1<<0,dn=1<<1,iD={};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(`
774
+ `)+`return function propagate(datum) {${_t(this.children.length).map(e=>`child${e}.handle(datum);`).join(`
983
775
  `)}}`)(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])+`
984
- `+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():fC}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 Vp(t){return t.type=="file"}function dC(t){return t.type=="facet"}class _p extends se{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 Yp(t,e,n){const r=new _p({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const hC={};class pC extends zi{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 T(T({},super.getDefaultEncoding()),hC)}fixEncoding(e){return Hp(e,this.properties.filled),Qp(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(Yp(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(uC,lC)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Se(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new VS({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0)});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap=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 mb(n,e)}}else return-1}prepareRender(e){super.prepareRender(e),Se(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()}),fr(this.gl,this.programInfo,this.vertexArrayInfo);const n=this.encoders.x;if(n&&!n.constant){const r=So(n.accessor).left,i=this.unitView.getScaleResolution("x").getScale().domain(),o=ao(i,null,1.01);this._findIndices=s=>{const a=this.unitView.getCollector().facetBatches.get(s);return[r(a,o[0]),r(a,o[o.length-1])]}}}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{const[o,s]=this._findIndices?this._findIndices(e.facetId):[0,i],a=s-o;a&&Mi(n,this.vertexArrayInfo,n.POINTS,a,r+o)},e,()=>this.rangeMap)}}var gC=`// Line caps
776
+ `+n}getGlobalObject(){return this.parent?this.parent.getGlobalObject():iD}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 Om(t){return t.type=="file"}function oD(t){return t.type=="facet"}class Pm 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 Fm(t,e,n){const r=new Pm({type:"sample",size:t});for(const i of e)r.handle(n(i));return r.complete(),r.reservoir}const aD={};class sD extends io{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 T(T({},super.getDefaultEncoding()),aD)}fixEncoding(e){return Lm(e,this.properties.filled),Bm(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(Fm(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((n,r)=>n-r))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(nD,rD)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Qe(this.programInfo,{uInwardStroke:e.inwardStroke,uGradientStrength:e.fillGradientStrength,uMaxRelativePointDiameter:1-2*e.sampleFacetPadding})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new RE({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 sc(n,e)}}else return-1}prepareRender(e){const n=super.prepareRender(e);return n.push(()=>Qe(this.programInfo,{uMaxPointSize:this._getMaxPointSize(),uScaleFactor:this._getGeometricScaleFactor(),uSemanticThreshold:this.getSemanticThreshold()})),n.push(()=>Or(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>{i&&$i(n,this.vertexArrayInfo,n.POINTS,i,r)},e)}}var cD=`// Line caps
985
777
  const int BUTT = 0;
986
778
  const int SQUARE = 1;
987
779
  const int ROUND = 2;
@@ -995,7 +787,7 @@ in float side;
995
787
  /** Minimum rule length in pixels */
996
788
  uniform float uMinLength;
997
789
 
998
- uniform float uDashTextureSize;
790
+ uniform mediump float uDashTextureSize;
999
791
  uniform lowp int uStrokeCap;
1000
792
 
1001
793
  flat out vec4 vColor;
@@ -1070,7 +862,7 @@ void main(void) {
1070
862
 
1071
863
  setupPicking();
1072
864
  }
1073
- `,mC=`// Line ending
865
+ `,uD=`// Line ending
1074
866
  const int BUTT = 0;
1075
867
  const int SQUARE = 1;
1076
868
  const int ROUND = 2;
@@ -1122,7 +914,7 @@ void main(void) {
1122
914
  fragColor = vPickingColor;
1123
915
  }
1124
916
  }
1125
- `;class yC extends zi{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&&Ke(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&Ke(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=AC(this.properties.strokeDash);this.dashTexture=Di(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(gC,mC)}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new QS({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(n,this.properties.minBufferSize||0),buildXIndex:this.properties.buildIndex});r.addBatches(e.facetBatches);const i=r.toArrays();this.rangeMap=i.rangeMap,this.updateBufferInfo(i)}prepareRender(e){super.prepareRender(e),Se(this.programInfo,{uMinLength:this.properties.minLength,uDashTextureSize:this.dashTextureSize,uStrokeCap:["butt","square","round"].indexOf(this.properties.strokeCap)}),this.dashTexture&&Se(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset}),fr(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Mi(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e,()=>this.rangeMap)}}function AC(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,s)=>o+s),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}var bC=`uniform float uSagittaScaleFactor;
917
+ `;class lD extends io{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&&$e(e.y)&&e.y.type=="quantitative")e.x2=e.x,e.y2={datum:0};else if(!e.y2&&$e(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=fD(this.properties.strokeDash);this.dashTexture=Ji(e,{mag:e.NEAREST,min:e.NEAREST,internalFormat:e.R8,format:e.RED,src:n,height:1}),this.dashTextureSize=n.length}this.createAndLinkShaders(cD,uD)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Qe(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 zE({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(()=>Qe(this.programInfo,{uDashTexture:this.dashTexture,uStrokeDashOffset:this.properties.strokeDashOffset})),n.push(()=>Or(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>$i(n,this.vertexArrayInfo,n.TRIANGLE_STRIP,i,r),e)}}function fD(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}var dD=`uniform float uSagittaScaleFactor;
1126
918
 
1127
919
  /** Make very small arcs visible */
1128
920
  uniform float uMinSagittaLength;
@@ -1233,7 +1025,7 @@ void main(void) {
1233
1025
 
1234
1026
  setupPicking();
1235
1027
  }
1236
- `,xC=`in lowp vec4 vColor;
1028
+ `,hD=`in lowp vec4 vColor;
1237
1029
  in float vSize;
1238
1030
  in float vNormalLengthInPixels;
1239
1031
 
@@ -1251,7 +1043,7 @@ void main(void) {
1251
1043
  fragColor = vPickingColor;
1252
1044
  }
1253
1045
  }
1254
- `;class vC extends zi{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(bC,xC)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Se(this.programInfo,{uSagittaScaleFactor:e.sagittaScaleFactor,uMinSagittaLength:e.minSagittaLength})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new _S({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:wC(this.properties.segments),numComponents:2},this.rangeMap=i.rangeMap,this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([o,s])=>[o,F(T({},s),{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[s,a]=o;a.buffer&&this.arrays[s].numComponents&&(a.offset=r*this.arrays[s].numComponents*4)}fr(n,this.programInfo,this.bufferInfo),Mi(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e,()=>this.rangeMap)}}function wC(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}var EC=`uniform float uSdfNumerator;
1046
+ `;class pD extends io{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(dD,hD)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Qe(this.programInfo,{uSagittaScaleFactor:e.sagittaScaleFactor,uMinSagittaLength:e.minSagittaLength})}updateGraphicsData(){const e=this.unitView.getCollector(),n=e.getItemCount(),r=new jE({encoders:this.encoders,attributes:this.getAttributes(),numItems:n});r.addBatches(e.facetBatches);const i=r.toArrays();i.arrays.strip={data:mD(this.properties.segments),numComponents:2},this.rangeMap.migrateEntries(i.rangeMap),this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([o,a])=>[o,U(T({},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&&this.arrays[a].numComponents&&(s.offset=r*this.arrays[a].numComponents*4)}Or(n,this.programInfo,this.bufferInfo),$i(n,this.bufferInfo,n.TRIANGLE_STRIP,(this.properties.segments+1)*2,0,i)},e)}}function mD(t){let e=0;const n=[];for(;e<=t;e++)n.push(e/t,.5),n.push(e/t,-.5);return n}var gD=`uniform float uSdfNumerator;
1255
1047
 
1256
1048
  uniform vec2 uD; // dx & dy
1257
1049
 
@@ -1497,7 +1289,7 @@ void main(void) {
1497
1289
 
1498
1290
  setupPicking();
1499
1291
  }
1500
- `,SC=`uniform sampler2D uTexture;
1292
+ `,yD=`uniform sampler2D uTexture;
1501
1293
 
1502
1294
  in vec2 vTexCoord;
1503
1295
  in float vEdgeFadeOpacity;
@@ -1528,7 +1320,7 @@ void main() {
1528
1320
  fragColor = vPickingColor;
1529
1321
  }
1530
1322
  }
1531
- `;const CC={left:-1,center:0,right:1},DC={top:-1,middle:0,bottom:1,alphabetic:1};class MC extends zi{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 Ai)this.properties.fitToBand&&Lu(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(EC,SC)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Se(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[CC[e.align],DC[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 s=r.text.format?Le(r.text.format):u=>u;for(const u of n){const f=s(i(u)),l=oe(f)?f:f===null?"":""+f;o+=l&&l.length||0}const a=new YS({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(o,this.properties.minBufferSize||0),buildXIndex:this.properties.buildIndex});a.addBatches(e.facetBatches);const c=a.toArrays();this.rangeMap=c.rangeMap,this.updateBufferInfo(c)}prepareRender(e){super.prepareRender(e);let n=.35;this.properties.logoLetters&&(n/=2),Se(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/n)}),fr(this.gl,this.programInfo,this.vertexArrayInfo)}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>Mi(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e,()=>this.rangeMap)}}function Ss(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let s=0,a=0;for(const p of t)s+=Ri(p.px)+(Cs(p)?0:n),a+=Ri(p.grow);s-=n;const c=Math.max(0,e-s),u=r!==void 0?p=>Math.round(p*r)/r:p=>p,f=[],l=[],d=p=>{const g=f.length;if(!g)return;const m=(p?n:0)*(o?-1:1);h-=m;for(let y=0;y<g;y++)l.push({location:h+(y+1)/(g+1)*m,size:0});h+=m,f.length=0};let h=o?Math.max(e,s):0+i;if(t.length==1&&Cs(t[0]))return[{location:h,size:0}];for(let p=0;p<t.length;p++){const g=t[p];if(Cs(g))f.push(g);else{d(l.length>0);const m=Ri(g.px)+(a?Ri(g.grow)/a*c:0);o&&(h-=m),l.push({location:u(h),size:u(m)}),o?h-=n:h+=m+n}}return h+=o?n:-n,d(!1),l}function IC(t,{spacing:e}={spacing:0}){let n=0;for(const r of t)n+=Ri(r.px)+(Cs(r)?0:e);return Math.max(0,n-e)}class on{constructor(e,n){this.width=e,this.height=n}addPadding(e){return new on({px:(this.width.px||0)+e.width,grow:this.width.grow},{px:(this.height.px||0)+e.height,grow:this.height.grow})}}const Wp=Object.freeze({px:0,grow:0}),Xp=new on(Wp,Wp);function Cs(t){return!t.px&&!t.grow}function Ri(t){return t||0}function TC(t){return t&&(ae(t.px)||ae(t.grow))}function ku(t){if(Jp(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(TC(t))return t;if(ae(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 NC(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 LC(t,e){const n=ae(e)?()=>e:e;return{get location(){return t.location+n()},get size(){return t.size}}}function kC(t,e){const n=ae(e)?()=>e:e;return{get location(){return t.location*n()},get size(){return t.size*n()}}}function qp(t,e){return e>=t.location&&e<t.location+t.size}class Je{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 Je(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new Je(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):Ou}static createFromRecord(e){return new Je(e.top,e.right,e.bottom,e.left)}static zero(){return Ou}static createUniformPadding(e){return new Je(e,e,e,e)}}const Ou=Je.createUniformPadding(0);Object.freeze(Ou);const OC=/^([A-Za-z]+:)?\/\//;function BC(t,e){if(e&&OC.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const gr="VISIT_SKIP",kn="VISIT_STOP",Zp=t=>t;class Kp{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={},zp(this),this.opacityFunction=Zp}getPadding(){return this._cache("size/padding",()=>Je.createFromConfig(this.spec.padding))}getEffectivePadding(){return this.getPadding()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):Xp)}getSizeFromSpec(){const e=n=>{var i,o;let r=this.spec[n];if(Jp(r)){const s=r.step,a=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(a){let c=0;if(Xt(a.type))c=a.domain().length;else if(["locus","index"].includes(a.type)){const f=a.domain();c=fe(f)-f[0]}else throw new Error(`Cannot use step-based size with "${a.type}" scale!`);const u=a;return c=Dc(c,u.paddingInner(),u.paddingOuter()),{px:c*s,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(o=r&&ku(r))!=null?o:{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new on(e("width"),e("height")))}isVisible(){return this.context.isViewVisible(this)}isVisibleInSpec(){var e;return(e=this.spec.visible)!=null?e:!0}getEffectiveOpacity(){var e,n;return this.opacityFunction((n=(e=this.parent)==null?void 0:e.getEffectiveOpacity())!=null?n: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!==kn)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===Zp)&&(this.opacityFunction=FC(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(e){const n=this.parent?this.parent.getEncoding(this):{},r=this.spec.encoding||{},i=T(T({},n),r);for(const[o,s]of Object.entries(i))s===null&&delete i[o];return i}getFacetAccessor(e){if(this.parent)return this.parent.getFacetAccessor(this)}getFacetFields(e){var r;const n=this.getEncoding().sample;return Mn(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=nr(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 BC(()=>{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}_cache(e,n){return pr(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":Bi(this,e);break;case"ancestors":for(const r of this.getAncestors())Bi(r,e);break;case"progeny":this.visit(r=>Bi(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}}function PC(t){return"unitsPerPixel"in t}function FC(t){const e=t.spec.opacity;if(e!==void 0){if(ae(e))return n=>n*e;if(PC(e)){const n=o=>{var a;const s=(a=t.getScaleResolution(o))==null?void 0:a.getScale();if(["linear","index","locus"].includes(s==null?void 0:s.type))return s},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=Ac().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const a=uo(r.domain())/1e3;return i(a)*o}}}return n=>n}const Jp=t=>!!(t==null?void 0:t.step);class At extends Kp{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===kn)return n;if(n!==gr){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===kn)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 At)return n.findDescendantByPath(e.slice(1))}}findChildByName(e){for(const n of this)if(n.name===e)return 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){var r,i;return(i=(r=this.getConfiguredResolution(e,n))!=null?r:this.getConfiguredResolution("default",n))!=null?i:this.getDefaultResolution(e,n)}}function Ds(t,e,n){if(n=n||[],t.some(s=>s===null)){if(t.every(s=>s===null))return null;throw console.warn(t),new Error("Cannot merge objects with nulls!")}const r={},i=(s,a)=>s===a||mr(s)&&mr(a)||mr(s)&&a===!0||s===!0&&ze(a),o=s=>{for(let a in s){const c=s[a];if(!n.includes(a)&&c!==void 0)if(r[a]!==void 0&&!i(r[a],c))console.warn(`Conflicting property ${a} of ${e}: (${JSON.stringify(r[a])} and ${JSON.stringify(s[a])}). Using ${JSON.stringify(r[a])}.`);else{const u=r[a];if(mr(u))mr(c)&&(r[a]=Ds([u,c],a));else if(mr(c)){if(!(u===!0||u===void 0))throw new Error("Bug in merge! Target is: "+u);r[a]=Ds([{},c],a)}else r[a]=c}}};for(const s of t)o(s);return r}function mr(t){return ze(t)&&!Array.isArray(t)}/*!
1323
+ `;const vD={left:-1,center:0,right:1},bD={top:-1,middle:0,bottom:1,alphabetic:1};class AD extends io{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 Vi)this.properties.fitToBand&&fl(e,n);return e}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(gD,yD)}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;Qe(this.programInfo,{uPaddingX:e.paddingX,uPaddingY:e.paddingY,uFlushX:!!e.flushX,uFlushY:!!e.flushY,uAlign:[vD[e.align],bD[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?he(r.text.format):u=>u;for(const u of n){const f=a(i(u)),l=re(f)?f:f===null?"":""+f;o+=l&&l.length||0}const s=new UE({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(()=>Qe(this.programInfo,{uTexture:this.font.texture,uSdfNumerator:this.font.metrics.common.base/(this.glHelper.dpr/r)})),n.push(()=>Or(this.gl,this.programInfo,this.vertexArrayInfo)),n}render(e){const n=this.gl;return this.createRenderCallback((r,i)=>$i(n,this.vertexArrayInfo,n.TRIANGLES,i,r),e)}}function oo(t,e,{spacing:n,devicePixelRatio:r,offset:i,reverse:o}={}){n=n||0,i=i||0;let a=0,s=0;for(const p of t)a+=ts(p.px)+(dl(p)?0:n),s+=ts(p.grow);a-=n;const c=Math.max(0,e-a),u=r!==void 0?p=>Math.round(p*r)/r:p=>p,f=[],l=[],d=p=>{const m=f.length;if(!m)return;const y=(p?n:0)*(o?-1:1);h-=y;for(let g=0;g<m;g++)l.push({location:h+(g+1)/(m+1)*y,size:0});h+=y,f.length=0};let h=o?Math.max(e,a):0+i;if(t.length==1&&dl(t[0]))return[{location:h,size:0}];for(let p=0;p<t.length;p++){const m=t[p];if(dl(m))f.push(m);else{d(l.length>0);const y=ts(m.px)+(s?ts(m.grow)/s*c:0);o&&(h-=y),l.push({location:u(h),size:u(y)}),o?h-=n:h+=y+n}}return h+=o?n:-n,d(!1),l}function xD(t){var r,i;let e=0,n=0;for(const o of t)e=Math.max(e,(r=o.px)!=null?r:0),n=Math.max(n,(i=o.grow)!=null?i:0);return{px:e,grow:n}}const $f=class{constructor(e,n){ke(this,Lo);this.width=e,this.height=n}addPadding(e){return xe(this,Lo,rd).call(this,e.width,e.height)}subtractPadding(e){return xe(this,Lo,rd).call(this,-e.width,-e.height)}};let Kn=$f;Lo=new WeakSet,rd=function(e,n){var r,i;return new $f({px:((r=this.width.px)!=null?r:0)+e,grow:this.width.grow},{px:((i=this.height.px)!=null?i:0)+n,grow:this.height.grow})};const ao=Object.freeze({px:0,grow:0}),wD=new Kn(ao,ao);function dl(t){return!t.px&&!t.grow}function ts(t){return t||0}function CD(t){return t&&(le(t.px)||le(t.grow))}function SD(t){if(Um(t))throw new Error("parseSizeDef does not accept step-based sizes.");if(CD(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 ED(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 DD(t,e){const n=le(e)?()=>e:e;return{get location(){return t.location+n()},get size(){return t.size}}}function MD(t,e){const n=le(e)?()=>e:e;return{get location(){return t.location*n()},get size(){return t.size*n()}}}function zm(t,e){return e>=t.location&&e<t.location+t.size}class et{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 et(this.top+e,this.right+e,this.bottom+e,this.left+e)}add(e){return new et(this.top+e.top,this.right+e.right,this.bottom+e.bottom,this.left+e.left)}subtract(e){return new et(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):hl}static createFromRecord(e){return new et(e.top,e.right,e.bottom,e.left)}static zero(){return hl}static createUniformPadding(e){return new et(e,e,e,e)}}const hl=et.createUniformPadding(0);Object.freeze(hl);const TD=/^([A-Za-z]+:)?\/\//;function ID(t,e){if(e&&TD.test(e))return e;const n=t();return n&&e?n.endsWith("/")?n+e:n+"/"+e:n!=null?n:e}const ns="VISIT_SKIP",zr="VISIT_STOP",Rm=t=>t;class jm{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={},Mm(this),this.opacityFunction=Rm,this.blockEncodingInheritance=!1}getPadding(){return this._cache("size/padding",()=>et.createFromConfig(this.spec.padding))}getOverhang(){return et.zero()}getSize(){return this._cache("size/size",()=>this.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()):wD)}getSizeFromSpec(){const e=n=>{var i,o;let r=this.spec[n];if(Um(r)){const a=r.step,s=(i=this.getScaleResolution(n=="width"?"x":"y"))==null?void 0:i.getScale();if(s){let c=0;if(nn(s.type))c=s.domain().length;else if(["locus","index"].includes(s.type)){const f=s.domain();c=He(f)-f[0]}else throw new Error(`Cannot use step-based size with "${s.type}" scale!`);const u=s;return c=uu(c,u.paddingInner(),u.paddingOuter()),{px:c*a,grow:0}}else throw new Error("Cannot use 'step' size with missing scale!")}else return(o=r&&SD(r))!=null?o:{px:0,grow:1}};return this._cache("size/sizeFromSpec",()=>new Kn(e("width"),e("height")))}isVisible(){return this.context.isViewVisible(this)}isVisibleInSpec(){var e;return(e=this.spec.visible)!=null?e:!0}getEffectiveOpacity(){var e,n;return this.opacityFunction((n=(e=this.parent)==null?void 0:e.getEffectiveOpacity())!=null?n: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!==zr)return n}catch(n){throw n.view=this,n}}onScalesResolved(){(!this.opacityFunction||this.opacityFunction===Rm)&&(this.opacityFunction=ND(this))}onBeforeRender(){}render(e,n,r={}){}getEncoding(){const e=this.parent&&!this.blockEncodingInheritance?this.parent.getEncoding():{},n=this.spec.encoding||{},r=T(T({},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 Yn(n)?[n.field]:(r=this.parent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}_getResolution(e,n){e=Er(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 ID(()=>{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 re(e)?e:e.text}_cache(e,n){return Fr(this,e,n)}_invalidateCacheByPrefix(e,n="self"){switch(n){case"self":to(this,e);break;case"ancestors":for(const r of this.getAncestors())to(r,e);break;case"progeny":this.visit(r=>to(r,e));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(e){}}function kD(t){return"unitsPerPixel"in t}function ND(t){const e=t.spec.opacity;if(e!==void 0){if(le(e))return n=>n*e;if(kD(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=tu().domain(e.unitsPerPixel).range(e.values).clamp(!0);return o=>{const s=_o(r.domain())/1e3;return i(s)*o}}}return n=>n}const Um=t=>!!(t!=null&&t.step);class Jn extends jm{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===zr)return n;if(n!==ns){e.beforeChildren&&e.beforeChildren(this);for(const r of this){const i=r.visit(e);if(i===zr)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 Jn)return n.findDescendantByPath(e.slice(1))}}findChildByName(e){for(const n of this)if(n.name===e)return 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){var r,i;return(i=(r=this.getConfiguredResolution(e,n))!=null?r:this.getConfiguredResolution("default",n))!=null?i:this.getDefaultResolution(e,n)}}function rs(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||Rr(a)&&Rr(s)||Rr(a)&&s===!0||a===!0&&je(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(Rr(u))Rr(c)&&(r[s]=rs([u,c],s));else if(Rr(c)){if(!(u===!0||u===void 0))throw new Error("Bug in merge! Target is: "+u);r[s]=rs([{},c],s)}else r[s]=c}}};for(const a of t)o(a);return r}function Rr(t){return je(t)&&!Array.isArray(t)}/*!
1532
1324
  * Adapted from vega-encode:
1533
1325
  * https://github.com/vega/vega/blob/master/packages/vega-encode/src/ticks.js
1534
1326
  *
@@ -1536,7 +1328,7 @@ void main() {
1536
1328
  * All rights reserved.
1537
1329
  *
1538
1330
  * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
1539
- */function $p(t,e,n){return ae(e)&&n!=null&&(e=Math.min(e,~~(uo(t.domain())/n)||1)),ze(e)&&(e=e.interval),e}function eg(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(et(r));if(i>o&&(r=o,o=i,i=r),e=e.filter(function(a){return a=t(a),i<=a&&a<=o}),n>0&&e.length>1){for(var s=[e[0],et(e)];e.length>n&&e.length>=3;)e=e.filter(function(a,c){return!(c%2)});e.length<3&&(e=s)}return e}function zC(t,e){return t.bins?eg(t,RC(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function RC(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function UC(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?Le(n):String;if(Nh(t.type)){var i=GC(n);r=t.bins?i:jC(r,i)}return r}function jC(t,e){return function(n){return t(n)?e(n):""}}function GC(t){var e=Lo(t||",");if(e.precision==null){switch(e.precision=12,e.type){case"%":e.precision-=2;break;case"e":e.precision-=1;break}return HC(Le(e),Le(".1f")(1)[1])}else return Le(e)}function HC(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,s;if(i<0)return r;for(o=QC(r,i),s=o<r.length?r.slice(o):"";--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+s}}function QC(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}/*!
1331
+ */function Gm(t,e,n){return le(e)&&n!=null&&(e=Math.min(e,~~(_o(t.domain())/n)||1)),je(e)&&(e=e.interval),e}function Hm(t,e,n){var r=t.range(),i=Math.floor(r[0]),o=Math.ceil(rt(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],rt(e)];e.length>n&&e.length>=3;)e=e.filter(function(s,c){return!(c%2)});e.length<3&&(e=a)}return e}function LD(t,e){return t.bins?Hm(t,BD(t.bins,e)):t.ticks?t.ticks(e):t.domain()}function BD(t,e){var n=t.length,r=~~(n/(e||n));return r<2?t.slice():t.filter(function(i,o){return!(o%r)})}function OD(t,e,n){var r=t.tickFormat?t.tickFormat(e,n):n?he(n):String;if(E0(t.type)){var i=FD(n);r=t.bins?i:PD(r,i)}return r}function PD(t,e){return function(n){return t(n)?e(n):""}}function FD(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 zD(he(e),he(".1f")(1)[1])}else return he(e)}function zD(t,e){return function(n){var r=t(n),i=r.indexOf(e),o,a;if(i<0)return r;for(o=RD(r,i),a=o<r.length?r.slice(o):"";--o>i;)if(r[o]!=="0"){++o;break}return r.slice(0,o)+a}}function RD(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}/*!
1540
1332
  * Adapted from vega-encode:
1541
1333
  * https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js
1542
1334
  *
@@ -1544,130 +1336,96 @@ void main() {
1544
1336
  * All rights reserved.
1545
1337
  *
1546
1338
  * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
1547
- */const VC="locus",_C="index";var YC=5;function WC(t){const e=t.type;return!t.bins&&(e===qn||e===ei||e===ti)}function tg(t){return nt(t)&&![dt,_C,VC].includes(t)}function ng(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var XC=fo(["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 rg(t,e,n){n=ng(n);for(const r in t)if(!XC[r]){if(r==="padding"&&tg(e.type))continue;Te(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}nD(e,t,tD(e,t,JC(e,t,n)))}function qC(t,e){const n=ZC(t),r=W(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return rg(t,i,e),i}function ZC(t){var e=t.type,n="",r;return e===dt?dt+"-"+qn:(KC(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?dt+"-":r===3?Zn+"-":""),(n+e||qn).toLowerCase())}function KC(t){const e=t.type;return nt(e)&&e!==wh&&e!==Eh&&(t.scheme||t.range&&t.range.length&&t.range.every(oe))}function JC(t,e,n){if(!t.domain)return 0;n=ng(n);var r=$C(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,s=e.zero||e.zero===void 0&&WC(t),a,c;return i?(tg(o)&&e.padding&&i[0]!==et(i)&&(i=eD(o,i,e.range,e.padding,e.exponent,e.constant)),(s||e.domainMin!=null||e.domainMax!=null||e.domainMid!=null)&&(a=(i=i.slice()).length-1||1,s&&(i[0]>0&&(i[0]=0),i[a]<0&&(i[a]=0)),e.domainMin!=null&&(i[0]=e.domainMin),e.domainMax!=null&&(i[a]=e.domainMax),e.domainMid!=null&&(c=e.domainMid,(c<i[0]||c>i[a])&&n.warn("Scale domainMid exceeds domain min or max.",c),i.splice(a,0,c))),t.domain(ig(o,i,n)),o===Ic&&t.unknown(e.domainImplicit?Xa:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&$p(t,e.nice)||null),i.length):0}function $C(t,e,n){return e?(t.domain(ig(t.type,e,n)),e.length):-1}function eD(t,e,n,r,i,o){var s=Math.abs(et(n)-n[0]),a=s/(s-2*r),c=t===Wt?sf(e,null,a):t===ti?ia(e,null,a,.5):t===ei?ia(e,null,a,i||1):t===Ho?Cy(e,null,a,o||1):ao(e,null,a);return e=e.slice(),e[0]=c[0],e[e.length-1]=c[1],e}function ig(t,e,n){if(Nh(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: "+lo(e))}return e}function tD(t,e,n){let r=e.bins;if(r&&!Ye(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,s=r.stop==null?et(i):r.stop,a=r.step;a||re("Scale bins parameter missing step property."),r=Io(o,s+a,a)}return r?t.bins=r:t.bins&&delete t.bins,t.type===Nc&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function nD(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=rD(r,e,n);else if(e.scheme&&(o=iD(r,e,n),Te(o))){if(t.interpolator)return t.interpolator(o);re(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&Vo(r))return t.interpolator(_o(Bu(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(Lh(e.interpolate,e.interpolateGamma)):Te(t.round)?t.round(i):Te(t.rangeRound)&&t.interpolate(i?Jr:_t),o&&t.range(Bu(o,e.reverse))}function rD(t,e,n){t!==Dh&&t!==Tc&&re("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===Tc?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*Dc(n,i,r)]}function iD(t,e,n){var r=e.schemeExtent,i,o;return Ye(e.scheme)?o=_o(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=kc(i),o||re(`Unrecognized scheme name: ${e.scheme}`)),n=t===Ch?n+1:t===Nc?n-1:t===Mc||t===Sh?+e.schemeCount||YC:n,Vo(t)?og(o,r,e.reverse):Te(o)?Rx(og(o,r),n):t===Ic?o:o.slice(0,n)}function og(t,e,n){return Te(t)&&(e||n)?zx(t,Bu(e||[0,1],n)):t}function Bu(t,e){return e?t.slice().reverse():t}const Pu=Le(",d");function oD(t){return t.chrom+":"+Pu(Math.floor(t.pos+1))}function sD(t,e){return t.chrom+":"+Pu(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+Pu(Math.ceil(e.pos))}const aD="https://genomespy.app/data/genomes/";class cD{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=aD;try{this.setChromSizes(uD(await Wr({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=F(T({},e[r]),{continuousStart:n,continuousEnd:n+i,continuousInterval:[n,n+i],index:r,number:r+1,odd:!(r&1)});this.chromosomes.push(o);const s=o.name.replace(/^chr/i,"");for(const a of["chr"+s,"CHR"+s,"Chr"+s,o.number,""+o.number,s,o.name])this.cumulativeChromPositions.set(a,n),this.chromosomesByName.set(a,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=ab(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 sD(...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,o,s;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,(i=n.pos)!=null?i:0),this.toContinuous(r.chrom,(s=r.pos)!=null?s:(o=this.chromosomesByName.get(r.chrom))==null?void 0:o.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(a=>a===void 0)){const a=this.getChromosome(r);return a?[a.continuousStart,a.continuousEnd]:void 0}const i=n[3]||r,o=parseInt(n[2].replace(/,/g,"")),s=n[4]!==void 0?parseInt(n[4].replace(/,/g,"")):o;return[this.toContinuous(r,o-1),this.toContinuous(i,s)]}}}function uD(t){return Vy(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function sg(t){return ze(t)&&"chrom"in t}function lD(t){return t.every(sg)}class Ui extends Array{constructor(){super();this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof Ui&&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 Fu extends Ui{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 ag extends Ui{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 cg extends ag{constructor(){super();this.type="nominal"}}class fD extends Ui{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 ug={quantitative:Fu,index:Fu,locus:Fu,nominal:cg,ordinal:ag};function lg(t,e){if(t=="quantitative"&&dD(e)){const n=new fD(e);return n.type=t,n}else if(ug[t]){const n=new ug[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function dD(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function fg(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function hD(t){return--t*t*t+1}function pD(t){return(Math.pow(2,-10*t)-.0009765625)*1.0009775171065494}function gD(t){return 1-pD(t)}const dg="quantitative",zu="ordinal",Ru="nominal",Uu="locus",mD="index";class yD{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 s;const r=Qc(e,n),i=r.type,o=(s=r==null?void 0:r.scale)==null?void 0:s.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&&!xi(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 pr(this,"mergedScaleProps",()=>{const e=this.members.map(n=>Qc(n.view,n.channel).scale).filter(n=>n!==void 0);return Ds(e,"scale",["domain"])})}getScaleProps(){return pr(this,"scaleProps",()=>{var i,o;const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n=T(T({},this._getDefaultScaleProperties(this.type)),e);n.type||(n.type=AD(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:Xt(n.type)&&(n.domain=new cg),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(o=n.domainMax)!=null?o:1]),n.type==Uu&&!("fp64"in n)&&(n.fp64=!0),this.channel=="y"&&Xt(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),bD(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==Uu?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>xi(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>xi(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){Fp(this,"scaleProps");const e=this.getScaleProps();rg(e,this._scale),nt(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=qC(e);return this._scale=n,Mb(n)&&n.genome(this.getGenome()),n.fp64=!!e.fp64,nt(n.type)&&(this._zoomExtent=this._getZoomExtent()),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var e,n;return(n=(e=this.getGenome())==null?void 0:e.toChromosomalInterval(this.getDomain()))!=null?n:this.getDomain()}isZoomed(){return this.isZoomable()&&_h(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!s0(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 s=[...o];const a=i.invert(n);switch(this.getScaleProps().reverse&&(r=-r),i.type){case"linear":case"index":case"locus":s=wy(s,r||0),s=ao(s,a,e);break;case"log":s=Ey(s,r||0),s=sf(s,a,e);break;case"pow":case"sqrt":{const c=i;s=Sy(s,r||0,c.exponent()),s=ia(s,a,e,c.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(s=Dy(s,this._zoomExtent[0],this._zoomExtent[1])),[0,1].some(c=>s[c]!=o[c])?(i.domain(s),this._notifyDomainListeners(),!0):!1}async zoomTo(e,n=!1){var a;if(co(n)&&(n=n?700:0),!this.isZoomable())throw new Error("Not a zoomable scale!");const r=this.fromComplexInterval(e),i=(a=this.members[0])==null?void 0:a.view.context.animator,o=this.getScale(),s=o.domain();if(n>0&&s.length==2){const c=s[1]-s[0],u=s[0]+c/2,f=r[1]-r[0],l=r[0]+f/2,d=Kd([u,0,c],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*d.duration,easingFunction:fg,onUpdate:h=>{const[p,,g]=d(h);o.domain([p-g/2,p+g/2]),this._notifyDomainListeners()}}),o.domain(r),this._notifyDomainListeners()}else o.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}getZoomLevel(){return this.isZoomable()?uo(this._zoomExtent)/uo(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(xD(n)&&Ye(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),bi(n)?r.nice=!this.isExplicitDomain():In(n)?r.scheme=e==Ru?"tableau10":e==zu?"blues":"viridis":$o(n)?r.range=c0(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 sg(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&lD(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 AD(t,e){if(e==mD||e==Uu){if(s0(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][[Ru,zu,dg].indexOf(e)]:e==dg?"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 bD(t,e){bi(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&nt(t.type)&&(t.clamp=!0)}function xD(t){return ze(t)}function ju(...t){for(const e of t)if(e!==void 0)return e}class vD{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=fe(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 pr(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:Ds(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var a;const s=Qc(o.view,o.channel);if(!Ze(s))return{member:o,explicitTitle:ju((a=s.axis)==null?void 0:a.title,s.title),implicitTitle:ju(Mn(s)?s.field:void 0,Vc(s)?s.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var s;if(xi(o.member.channel)&&!o.explicitTitle){const a=nr(o.member.channel);return((s=n.find(c=>c.member.view==o.member.view&&c.member.channel==a))==null?void 0:s.explicitTitle)===void 0}return!0}),i=new Set(r.map(o=>ju(o.explicitTitle,o.implicitTitle)).filter(oe));return i.size?[...i].join(", "):null}}class hg extends Kp{constructor(e,n,r,i){super(e,n,r,i);this.spec=e}}class ji extends At{constructor(e,n,r,i){super(e,n,r,i);this.spec=e,this.children=(e.layer||[]).map((o,s)=>{if(Hu(o)||Gu(o))return n.createView(o,this,"layer"+s);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()){n=n.shrink(this.getPadding()),e.pushView(this,n);for(const i of this.children)i.render(e,n,r);e.popView(this)}}}function Lt(t){return()=>t}class bt{static create(e,n,r,i){return new bt(Lt(e),Lt(n),Lt(r),Lt(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"?Lt(i):typeof i=="function"?i:this._passThrough(r)};return new bt(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new bt(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 bt(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 bt(()=>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 bt(Lt(this.x),Lt(this.y),Lt(this.width),Lt(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}}}class yr extends At{constructor(e,n,r,i){super(e,n,r,i);this.spec=e,"spacing"in this.spec||(this.spec.spacing=10),this.mainDimension=Qu(e)?"width":"height",this.secondaryDimension=this.mainDimension=="width"?"height":"width";const o=Qu(e)?e.hconcat:mg(e)?e.vconcat:e.concat;this.children=o.map((s,a)=>n.createView(s,this,"concat"+a))}getEffectivePadding(){return this._cache("size/effectivePadding",()=>{const e=this.children.filter(o=>o.isVisible());if(!e.length)return this.getPadding();const n=e.map(o=>o.getEffectivePadding()).map(o=>this.mainDimension=="height"?[o.left,o.right]:[o.top,o.bottom]),r=pg(n),i=this.mainDimension=="height"?new Je(e[0].getEffectivePadding().top,r[1],fe(e).getEffectivePadding().bottom,r[0]):new Je(r[0],e[0].getEffectivePadding().left,r[1],fe(e).getEffectivePadding().right);return this.getPadding().add(i)})}getSize(){return this._cache("size",()=>{let e;if(this.spec[this.mainDimension])e=ku(this.spec[this.mainDimension]);else{const r=this.children.filter(i=>i.isVisible()).map(i=>i.getSize()[this.mainDimension]);e={grow:r.map(i=>+i.grow).reduce((i,o)=>i+o,0),px:IC(r,{spacing:this.spec.spacing})}}const n=this.spec[this.secondaryDimension]&&ku(this.spec[this.secondaryDimension])||{grow:1};return(this.mainDimension=="height"?new on(n,e):new on(e,n)).addPadding(this.getPadding())})}render(e,n,r={}){if(!this.isVisible())return;n=n.shrink(this.getPadding()),e.pushView(this,n);const i=this.children.filter(u=>u.isVisible()),o=i.map(u=>u.getSize()[this.mainDimension]),s=Ss(o,n[this.mainDimension],{spacing:this.spec.spacing,devicePixelRatio:this.context.glHelper.dpr}),a=i.map(u=>u.getEffectivePadding()).map(u=>this.mainDimension=="height"?[u.left,u.right]:[u.top,u.bottom]),c=pg(a);for(let u=0;u<i.length;u++){const f=i[u],l=s[u],d=c[0]-a[u][0],h=c[1]-a[u][1],p=n[this.secondaryDimension]-d-h,g=this.mainDimension=="height"?new bt(()=>n.x+d,()=>n.y+l.location,()=>p,()=>l.size):new bt(()=>n.x+l.location,()=>n.y+d,()=>l.size,()=>p);f.render(e,g,r)}e.popView(this)}*[Symbol.iterator](){for(const e of this.children)yield e}replaceChild(e,n){const r=this.children.indexOf(e);if(r>=0)this.children[r]=n;else throw new Error("Not my child view!")}addChildBySpec(e){const n=this.children.length,r=this.context.createView(e,this,"concat"+n);return this.children.push(r),r}addChild(e){const n=this.children.length;return e.name||(e.name="concat"+n),e.parent=this,this.children.push(e),e}getDefaultResolution(e,n){return"independent"}}function pg(t){return[0,1].map(e=>t.map(n=>n[e]).reduce((n,r)=>Math.max(n,r),0))}class wD{constructor(){this.types=[];const e=n=>(r,i,o,s)=>{var a;return new n(r,i,o,(a=r.name)!=null?a:s)};this.addViewType(ED,e(hg)),this.addViewType(Hu,e(ji)),this.addViewType(Gu,e(Pe)),this.addViewType(mg,e(yr)),this.addViewType(Qu,e(yr)),this.addViewType(SD,e(yr))}addViewType(e,n){this.types.push({specGuard:e,factory:n})}createView(e,n,r,i){const o=this.types.find(s=>s.specGuard(e));if(o)return o.factory(e,n,r,i!=null?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 Gu(t){return"mark"in t&&(oe(t.mark)||ze(t.mark))}function Hu(t){return"layer"in t&&ze(t.layer)}function gg(t){return t&&(Gu(t)||Hu(t))&&"aggregateSamples"in t}function ED(t){return"import"in t}function mg(t){return"vconcat"in t&&Ye(t.vconcat)}function Qu(t){return"hconcat"in t&&Ye(t.hconcat)}function SD(t){return"concat"in t&&Ye(t.concat)}const CD={point:pC,rect:cC,rule:yC,link:vC,text:MC};class Pe extends At{constructor(e,n,r,i){super(e,n,r,i);this.spec=e;const o=CD[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()||(n=n.shrink(this.getPadding()),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){var r;const n=this.mark.encoding;for(const[i,o]of Object.entries(n)){if(!Ke(o))continue;let s=nr((r=o.resolutionChannel)!=null?r:i);if(e=="axis"&&!bi(s))continue;let a=this;for(;a.parent instanceof At&&["shared","excluded"].includes(a.parent.getConfiguredOrDefaultResolution(s,e))&&a.getConfiguredOrDefaultResolution(s,e)!="excluded";)a=a.parent;a.resolutions[e][s]||(a.resolutions[e][s]=e=="scale"?new yD(s):new vD(s)),bi(i)?a.resolutions[e][s].pushUnitView(this,i):e=="scale"&&a.resolutions[e][s].pushUnitView(this,i)}}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(xi(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!Ke(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(e){var i,o;const n=this._validateDomainQuery(e),r=n&&n.scale&&n.scale.domain;if(r){const s=this.getScaleResolution((i=n.resolutionChannel)!=null?i:e);return lg((o=n.type)!=null?o:"nominal",s.fromComplexInterval(r))}}extractDataDomain(e){var a;const r=(a=this._validateDomainQuery(e).type)!=null?a:"nominal",i=c=>{let u;const f=this.mark.encoding[c];if(f){const l=this.context.accessorFactory.createAccessor(f);if(l)if(u=lg(r),l.constant)u.extend(l({}));else{const d=this.getCollector();(d==null?void 0:d.completed)&&d.visitData(h=>u.extend(l(h)))}}return u};let o=i(e);const s=_c[e];if(s){const c=i(s);c&&o.extendAll(c)}return o}getZoomLevel(){const e=n=>{var r,i;return(i=(r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())!=null?i:1};return Ai.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(gg(this.spec))for(const r of this.spec.aggregateSamples){const i=(e=r.transform)!=null?e:[];i.length&&fe(i).type!="collect"&&i.push({type:"collect"}),i.push({type:"mergeFacets"}),r.transform=i,r.encoding=F(T({},(n=r.encoding)!=null?n:{}),{sample:null});const o=this.context.createView(r,this,"summaryView");o.getFacetFields=s=>{},this.sampleAggregateViews.push(o)}}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function yg(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class On extends se{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function Ag(t){var n,r;const e=T({},t.format);if((n=e.type)!=null||(e.type=TD(t)&&DD(t.url)),(r=e.parse)!=null||(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 DD(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const Ms=t=>typeof t!="object"?MD:ID,MD=t=>({data:t}),ID=t=>t;function TD(t){return"url"in t}function ND(t){return"dynamicCallbackSource"in t}class bg extends On{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=Ms(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const xg="chromosome_ticks_and_labels",vg={x:"width",y:"height"};function Vu(t){return t=="x"?"y":"x"}const wg=Object.fromEntries(Object.entries({x:["bottom","top"],y:["left","right"]}).map(([t,e])=>e.map(n=>[n,t])).flat(1));function Bn(t){return wg[t]}class _u extends ji{constructor(e,n,r,i){const o=n=="locus",s=T(T(T({},o?OD:Eg),kD(n,e)),e);super(o?BD(s):Sg(s),r,i,`axis_${e.orient}`);if(this.axisProps=s,this.axisUpdateRequested=!0,this._addBroadcastHandler("layout",()=>{this.axisUpdateRequested=!0}),this.previousScaleDomain=[],this.axisLength=void 0,this.ticks=[],this.tickSource=new bg(()=>this.ticks),o){const a=Bn(this.axisProps.orient),c=this.getScaleResolution(a).getGenome();this.findChildByName(xg).getDynamicDataSource=()=>new bg(()=>c.chromosomes)}}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return wg[this.axisProps.orient]=="x"?new on(n,e):new on(e,n)}getPerpendicularSize(){return Yu(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=Bn(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(_h(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=LD(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[vg[Bn(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function Yu(t){const e=Bn(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 LD(t,e,n,r=[]){const i=a=>25+60*yg(100,700,a);let o=ae(t.tickCount)?t.tickCount:Math.round(n/i(n));o=$p(e,o,t.tickMinStep);const s=t.values?eg(e,t.values,o):zC(e,o);if($x(s,r,a=>a,a=>a.value))return r;{const a=UC(e,o,t.format);return s.map(c=>({value:c,label:a(c)}))}}const Eg={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 kD(t,e){var a;const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",s=(a=e.labelAngle)!=null?a:(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(s)>30?(i=s>0==(n=="bottom")?"left":"right",o="middle"):o=n=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:s,labelBaseline:o}}function Sg(t){const e=F(T({},t),{extent:Yu(t)}),n=Bn(e.orient),r=Vu(n),i=e.orient=="bottom"||e.orient=="right"?1:-1,o=e.orient=="bottom"||e.orient=="left"?1:0,s=()=>({name:"domain",data:{values:[0]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[r]:o,size:e.domainWidth}}),a=()=>({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,dynamicData:!0},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,dynamicData:!0},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(a()),d},l={[vg[Vu(Bn(e.orient))]]:e.extent,data:{dynamicCallbackSource:!0},layer:[]};return e.domain&&l.layer.push(s()),(e.ticks||e.labels)&&l.layer.push(f()),e.title&&l.layer.push(u()),l}const OD=F(T({},Eg),{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 BD(t){const e=F(T({},t),{extent:Yu(t)}),n=Bn(e.orient),r=Vu(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,dynamicData:!0}}),s=()=>{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:T({type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:t.chromLabelAlign,baseline:"alphabetic",clip:!1,dynamicData:!0},u),encoding:{[n+"2"]:{field:"continuousEnd",type:"locus"},text:{field:"name"}}}};let a;switch(e.orient){case"bottom":case"top":a={};break;case"left":a={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":a={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:a={}}const c=Sg(T(T({},t),a));if(t.chromTicks||t.chromLabels){const u={name:xg,data:{dynamicCallbackSource:!0},encoding:{[n]:{field:"continuousStart",type:"locus",band:0}},layer:[]};if(t.chromTicks&&u.layer.push(o()),t.chromLabels){u.layer.push(s());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 PD={x:["bottom","top"],y:["left","right"]};class Wu extends At{constructor(e,n){super({},e,n,"decorator");this.child=void 0,this.backgroundView=void 0,this.axisViews={top:void 0,right:void 0,bottom:void 0,left:void 0},["mousedown","wheel"].forEach(r=>this.addInteractionEventListener(r,this.handleMouseEvent.bind(this)))}initialize(){var n;Object.entries(PD).forEach(([r,i])=>this._initializeAxes(r,i)),this._invalidateCacheByPrefix("size/","ancestors");const e=(n=this.child.spec)==null?void 0:n.view;((e==null?void 0:e.fill)||(e==null?void 0:e.stroke))&&(this.backgroundView=new Pe(FD(e),this.context,this,"background"))}getEncoding(e){return Object.values(this.axisViews).find(n=>e===n)||e==this.backgroundView?{}:super.getEncoding()}getFacetAccessor(e){if(e==this.child&&this.parent)return this.parent.getFacetAccessor(this)}*[Symbol.iterator](){yield this.child,this.backgroundView&&(yield this.backgroundView);for(const e of Object.values(this.axisViews))e&&(yield e)}_getAxisExtents(){return this._cache("size/axisExtents",()=>{const e={};for(const n of Object.values(this.axisViews))n&&(e[n.getOrient()]=n.getPerpendicularSize());return Je.createFromRecord(e)})}_getAxisOffsets(){return this._cache("size/axisOffsets",()=>{const e={};for(const n of Object.values(this.axisViews))n&&(e[n.getOrient()]=n.axisProps.offset);return Je.createFromRecord(e)})}getEffectivePadding(){return this._cache("size/effectivePadding",()=>this.getPadding().add(this._getAxisExtents()))}getSize(){return this._cache("size/size",()=>this.child.isVisible()?this.getSizeFromSpec().addPadding(this.getPadding()).addPadding(this.getAxisSizes()):Xp)}getAxisSizes(){return this._cache("size/axisSizes",()=>this._getAxisExtents().add(this._getAxisOffsets()))}render(e,n,r={}){if(!this.isVisible()||!this.child.isVisible())return;n=n.shrink(this.getPadding()),e.pushView(this,n);const i=this._getAxisExtents(),o=n.shrink(i.add(this._getAxisOffsets()));this._childCoords=o,this.backgroundView&&this.backgroundView.render(e,o,r),this.child.render(e,o,r);const s=this._cache("axisViewEntries",()=>Object.entries(this.axisViews).filter(a=>!!a[1]));for(const[a,c]of s){const u=c.axisProps;let f;a=="bottom"?f=o.translate(0,o.height+u.offset).modify({height:i.bottom}):a=="top"?f=o.translate(0,-i.top-u.offset).modify({height:i.top}):a=="left"?f=o.translate(-i.left-u.offset,0).modify({width:i.left}):a=="right"&&(f=o.translate(o.width+u.offset,0).modify({width:i.right})),c.render(e,f)}e.popView(this)}_getResolutionParticipants(){return[...this.getAncestors(),...wM(this.child)]}_initializeAxes(e,n){const r=this._getResolutionParticipants().map(i=>i.resolutions.axis[e]).filter(i=>i);for(const i of r){const o=i.getAxisProps();if(o&&o.orient){if(!n.includes(o.orient))throw new Error(`Invalid axis orientation for '${e}' channel: ${o.orient}`);if(this.axisViews[o.orient])throw new Error(`The slot for ${o.orient} axis is already reserved!`);this.axisViews[o.orient]=new _u(F(T({},o),{title:i.getTitle()}),i.scaleResolution.type,this.context,this)}}e:for(const i of r){const o=i.getAxisProps();if(o&&!o.orient){for(const s of n)if(!this.axisViews[s]){o.orient=s,this.axisViews[s]=new _u(F(T({},o),{title:i.getTitle()}),i.scaleResolution.type,this.context,this);continue e}throw new Error("No room for axes. All slots are already reserved.")}}}handleMouseEvent(e,n){if(!!this.isZoomable()){if(n.type=="wheel"){n.uiEvent.preventDefault();const r=n.uiEvent,i=r.deltaMode?120:1;let{x:o,y:s}=n.point;const a=this.context.getCurrentHover();if(a){const c=e.shrink(this.getEffectivePadding()),u=a.mark.encoders;u.x&&!u.x2&&(o=+u.x(a.datum)*c.width+c.x),u.y&&!u.y2&&(s=(1-+u.y(a.datum))*c.height+c.y)}Math.abs(r.deltaX)<Math.abs(r.deltaY)?this._handleZoom(e,{x:o,y:s,xDelta:0,yDelta:0,zDelta:r.deltaY*i/300}):this._handleZoom(e,{x:o,y:s,xDelta:-r.deltaX*i,yDelta:0,zDelta:0})}else if(n.type=="mousedown"&&n.uiEvent.button===0){const r=n.uiEvent;r.preventDefault();let i=r;const o=a=>{this._handleZoom(e,{x:i.clientX,y:i.clientY,xDelta:a.clientX-i.clientX,yDelta:a.clientY-i.clientY,zDelta:0}),i=a},s=a=>{document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",s)};document.addEventListener("mouseup",s,!1),document.addEventListener("mousemove",o,!1)}}}isZoomable(){return this._cache("zoomable",()=>Object.values(this._getZoomableResolutions()).some(e=>e.size))}_getZoomableResolutions(){return this._cache("zoomableResolutions",()=>{const e={x:new Set,y:new Set};return this.child.visit(n=>{for(const[r,i]of Object.entries(e)){const o=n.getScaleResolution(r);o&&o.isZoomable()&&i.add(o)}}),e})}_handleZoom(e,n){for(const[r,i]of Object.entries(this._getZoomableResolutions())){if(i.size<=0)continue;const o=this._getAxisExtents(),s=e.shrink(o.add(this._getAxisOffsets())),a=s.normalizePoint(n.x,n.y),c=s.normalizePoint(n.x+n.xDelta,n.y+n.yDelta),u={x:c.x-a.x,y:c.y-a.y};for(const f of i)f.zoom(2**n.zDelta,r=="y"?1-a[r]:a[r],r=="x"?u.x:-u.y)}this.context.animator.requestRender()}}function FD(t){return{configurableVisibility:!1,data:{values:[{}]},mark:F(T({fill:null,strokeWidth:1},t),{type:"rect",clip:!1,tooltip:null})}}function*Xu(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of Xu(r,[...e,n]))yield i;else yield[[...e,n],r]}class Ar extends se{constructor(e){super();this.params=e!=null?e:{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new Co([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){dC(e)&&(this._data=[],this.facetBatches.set(qe(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?af(e.field,e.order):void 0,r=s=>{n&&s.sort(n)};if((o=this.params.groupby)==null?void 0:o.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const s=this.params.groupby.map(c=>Z(c)),a=Mo(this._data,...s);this.facetBatches.clear();for(const[c,u]of Xu(a))this.facetBatches.set(c,u)}for(const s of this.facetBatches.values())r(s);if(this.children.length)for(const[s,a]of this.facetBatches.entries()){if(s){const c={type:"facet",facetId:s};for(const u of this.children)u.beginBatch(c)}for(const c of a)this._propagate(c)}super.complete();for(const s of this.observers)s(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 Gi{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(e,n){let r=this.length++;for(this.ids[r]=e,this.values[r]=n;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 s=(o<<1)+1;const a=s+1;let c=this.ids[s],u=this.values[s];const f=this.values[a];if(a<this.length&&f<u&&(s=a,c=this.ids[a],u=f),u>=r)break;this.ids[o]=c,this.values[o]=u,o=s}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]}}class zD extends se{get behavior(){return Nt}constructor(e){super();this.params=e,this.startAccessor=Z(e.start),this.endAccessor=Z(e.end),this.chromAccessor=e.chrom?Z(e.chrom):n=>{},this.weightAccessor=e.weight?Z(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 Gi}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,s=this.chromAccessor,a=this.weightAccessor;let c,u,f,l=0,d;const h=this.ends;h.clear();const p=(m,y,x)=>{if(m==y)return;let v=!1;c&&(c[e]===x?(c[n]=y,v=!0):c[e]!=0&&this._propagate(c)),v||(c=this.createSegment(m,y,x,f))},g=()=>{let m;for(;(m=h.peekValue())!==void 0;)p(d,m,l),d=m,l-=h.pop();d=void 0,c&&(this._propagate(c),c=void 0)};this.handle=m=>{const y=i(m);let x;for(;(x=h.peekValue())!==void 0&&x<y;)p(d,x,l),d=x,l-=h.pop();if(r){let S=s(m);S!==u&&(g(),f=S,u=f)}d!==void 0&&p(d,y,l),d=y;const v=a(m);l+=v,h.push(v,o(m))},this.complete=()=>{g(),super.complete()}}}function RD(t,e,n=0,r=t.length){const i=new Gi,o=r-n;let s;for(s=0;s<e&&s<o;s++)i.push(s,t[n+s]);for(;s<o;s++){const u=t[n+s];u>=i.peekValue()&&(i.push(s,u),i.pop())}const a=[];let c;for(;(c=i.pop())!==void 0;)a.push(n+c);return a.reverse()}class UD{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 jD extends se{constructor(e,n){super();var i,o;if(this.params=e,this._data=[],this.channel=(i=e.channel)!=null?i:"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=Z(this.params.pos),this.posBisector=So(this.posAccessor),this.scoreAccessor=Z(this.params.score),this.widthAccessor=Z(this.params.width),this.laneAccessor=this.params.lane?Z(this.params.lane):s=>0,this.padding=(o=this.params.padding)!=null?o: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",s=>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 UD(200));this.schedule(),super.complete()}_filterAndPropagate(){var s;super.reset();const e=this.resolution.getScale(),n=(s=this.resolution.members[0].view.coords)==null?void 0:s[this.channel=="x"?"width":"height"];if(!n)return;for(const a of this.reservationMaps.values())a.reset();const r=e.domain(),i=70,o=RD(this._scores,i,this.posBisector.left(this._data,r[0]),this.posBisector.right(this._data,r[1]));for(const a of o){const c=this._data[a],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 GD extends se{constructor(e){super();this.params=e,this.predicate=void 0}initialize(){this.predicate=Hc(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const HD="0".charCodeAt(0);function*QD(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-HD}yield r}class VD extends se{get behavior(){return Nt}constructor(e){super();var s,a;const n=Z((s=e.exons)!=null?s:"exons"),r=Z((a=e.start)!=null?a:"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=c=>{let u=r(c),f=u,l=!0;const d=n(c);for(const h of QD(d)){if(l)f=u+h;else{u=f+h;const p=Object.assign({},c);p[i]=f,p[o]=u,this._propagate(p)}l=!l}}}}class _D extends se{get behavior(){return Nt}constructor(e){super();const n=qe(e.field).map(o=>Z(o)),r=qe(e.separator),i=qe(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 s=n.map((c,u)=>c(o).split(r[u]));YD(s,o);const a=s[0].length;for(let c=0;c<a;c++){const u=Object.assign({},o);for(let f=0;f<n.length;f++)u[i[f]]=s[f][c];this._propagate(u)}}}}function YD(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 WD extends se{get behavior(){return rn}constructor(e){super();this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=Hc(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class Cg extends se{get behavior(){return rn}constructor(e,n){super();var p;const r=(p=e.channel)!=null?p:"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=Z(e.chrom),s=qe(e.pos).map(g=>Z(g)),a=qe(e.as);if(s.length!=a.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=qe(e.offset);let u;if(c.length==0)u=new Array(s.length).fill(0);else if(c.length==1)u=new Array(s.length).fill(c[0]);else if(c.length==s.length)u=c;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(e.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",a.map((g,m)=>`datum[${JSON.stringify(g)}] = chromOffset + +posAccessors[${m}](datum) - ${u[m]};`).join(`
1548
- `));let l,d=0;const h=g=>{if(g!==l){if(d=i.cumulativeChromPositions.get(g),d===void 0)throw new Error("Unknown chromosome/contig: "+g);l=g}return d};this.handle=g=>{f(g,h(o(g)),s),this._propagate(g)}}}var Dg={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 XD extends se{get behavior(){return rn}constructor(e){super();const n=Tu(Dg),r=Z(e.field),i=e.as,o=e.fontSize;this.handle=s=>{const a=r(s);a!==void 0?s[i]=n.measureWidth(a,o):s[i]=0,this._propagate(s)}}}const qD=65536;class ZD extends se{get behavior(){return rn}constructor(e){super();this.params=e}reset(){this.initialize()}initialize(){const e=this.params,n=e.as||"lane",r=ae(e.spacing)?e.spacing:1,i=Z(e.start),o=Z(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const s=new Float64Array(qD),a=Z(e.preference),c=e.preferredOrder;let u=1/0;this.handle=f=>{const l=i(f);l<u&&s.fill(-1/0),u=l;const d=c.indexOf(a(f));let h=-1;if(d>=0&&s[d]<l)h=d;else{const p=i(f);for(h=0;h<s.length&&!(s[h]<p);h++);if(h>=s.length)throw new Error("Out of lanes!")}s[h]=o(f)+r,f[n]=h,this._propagate(f)}}else{const s=new Gi,a=new Gi;let c=-1/0,u=0;this.handle=f=>{const l=i(f);for(;s.length&&(s.peekValue()<=l||l<c);){const h=s.pop();a.push(h,h)}c=l;let d=a.pop();d===void 0&&(d=u++),f[n]=d,this._propagate(f),s.push(d,o(f)+r)}}}}class KD extends se{get behavior(){return Nt}constructor(e){super();if(e.as&&e.as.length!=e.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const n=e.fields.map(i=>Z(i)),r=e.as?e.as:n.map(be);this.handle=i=>{const o={};for(let s=0;s<n.length;s++)o[r[s]]=n[s](i);this._propagate(o)}}}class JD extends se{get behavior(){return rn}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=Z(e.field);this.handle=o=>{const s=i(o);if(oe(s)){const a=s.match(n);if(a){if(a.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]]=a[c+1]}else if(e.skipInvalidInput)for(let c=0;c<r.length;c++)o[r[c]]=void 0;else throw new Error(`"${s}" 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 s}, field content: "${s}".`);this._propagate(o)}}}class $D extends se{get behavior(){return Nt}constructor(e){super();const n=qe(e.columnRegex).map(d=>new RegExp(d)),r=qe(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 s,a,c;const u=d=>{var m;const h=Object.keys(d),p=new Map;for(const[y,x]of n.entries())for(const v of h){const S=(m=x.exec(v))==null?void 0:m[1];if(S!==void 0){let b=p.get(S);b||(b=[],p.set(S,b)),b[y]=v}}s=[...p.entries()],a=h.filter(y=>!n.some(x=>x.test(y))&&!(i&&i.test(y)));const g=[...a.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 {
1549
- `+g.join(`,
1339
+ */const jD="locus",UD="index";var GD=5;function HD(t){const e=t.type;return!t.bins&&(e===vr||e===Di||e===Mi)}function Qm(t){return Ue(t)&&![gt,UD,jD].includes(t)}function Vm(t){return t||{warn:(e,...n)=>console.warn(e,...n)}}var QD=Xo(["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 Ym(t,e,n){n=Vm(n);for(const r in t)if(!QD[r]){if(r==="padding"&&Qm(e.type))continue;Be(e[r])?e[r](t[r]):n.warn("Unsupported scale property: "+r)}KD(e,t,qD(e,t,WD(e,t,n)))}function VD(t,e){const n=YD(t),r=q(n);if(!r)throw new Error("Unknown scale type: "+n);const i=r();return Ym(t,i,e),i}function YD(t){var e=t.type,n="",r;return e===gt?gt+"-"+vr:(_D(t)&&(r=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(t.domainMid!=null):0,n=r===2?gt+"-":r===3?br+"-":""),(n+e||vr).toLowerCase())}function _D(t){const e=t.type;return Ue(e)&&e!==y0&&e!==v0&&(t.scheme||t.range&&t.range.length&&t.range.every(re))}function WD(t,e,n){if(!t.domain)return 0;n=Vm(n);var r=XD(t,e.domainRaw,n);if(r>-1)return r;var i=e.domain,o=t.type,a=e.zero||e.zero===void 0&&HD(t),s,c;return i?(Qm(o)&&e.padding&&i[0]!==rt(i)&&(i=ZD(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(_m(o,i,n)),o===fu&&t.unknown(e.domainImplicit?Lc:void 0),e.nice&&t.nice&&t.nice(e.nice!==!0&&Gm(t,e.nice)||null),i.length):0}function XD(t,e,n){return e?(t.domain(_m(t.type,e,n)),e.length):-1}function ZD(t,e,n,r,i,o){var a=Math.abs(rt(n)-n[0]),s=a/(a-2*r),c=t===tn?ld(e,null,s):t===Mi?Zs(e,null,s,.5):t===Di?Zs(e,null,s,i||1):t===Aa?ev(e,null,s,o||1):Xs(e,null,s);return e=e.slice(),e[0]=c[0],e[e.length-1]=c[1],e}function _m(t,e,n){if(E0(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: "+Wo(e))}return e}function qD(t,e,n){let r=e.bins;if(r&&!Ze(r)){const i=(r.start==null||r.stop==null)&&t.domain(),o=r.start==null?i[0]:r.start,a=r.stop==null?rt(i):r.stop,s=r.step;s||ce("Scale bins parameter missing step property."),r=_t(o,a+s,s)}return r?t.bins=r:t.bins&&delete t.bins,t.type===hu&&(r?!e.domain&&!e.domainRaw&&(t.domain(r),n=r.length):t.bins=t.domain()),n}function KD(t,e,n){var r=t.type,i=e.round||!1,o=e.range;if(e.rangeStep!=null)o=JD(r,e,n);else if(e.scheme&&(o=$D(r,e,n),Be(o))){if(t.interpolator)return t.interpolator(o);ce(`Scale type ${r} does not support interpolating color schemes.`)}if(o&&wa(r))return t.interpolator(Ca(pl(o,e.reverse),e.interpolate,e.interpolateGamma));o&&e.interpolate&&t.interpolate?t.interpolate(D0(e.interpolate,e.interpolateGamma)):Be(t.round)?t.round(i):Be(t.rangeRound)&&t.interpolate(i?Si:$t),o&&t.range(pl(o,e.reverse))}function JD(t,e,n){t!==x0&&t!==du&&ce("Only band and point scales support rangeStep.");var r=(e.paddingOuter!=null?e.paddingOuter:e.padding)||0,i=t===du?1:(e.paddingInner!=null?e.paddingInner:e.padding)||0;return[0,e.rangeStep*uu(n,i,r)]}function $D(t,e,n){var r=e.schemeExtent,i,o;return Ze(e.scheme)?o=Ca(e.scheme,e.interpolate,e.interpolateGamma):(i=e.scheme.toLowerCase(),o=mu(i),o||ce(`Unrecognized scheme name: ${e.scheme}`)),n=t===A0?n+1:t===hu?n-1:t===lu||t===b0?+e.schemeCount||GD:n,wa(t)?Wm(o,r,e.reverse):Be(o)?Kx(Wm(o,r),n):t===fu?o:o.slice(0,n)}function Wm(t,e,n){return Be(t)&&(e||n)?qx(t,pl(e||[0,1],n)):t}function pl(t,e){return e?t.slice().reverse():t}const ml=he(",d");function eM(t){return t.chrom+":"+ml(Math.floor(t.pos+1))}function tM(t,e){return t.chrom+":"+ml(Math.floor(t.pos+1))+"-"+(t.chrom!=e.chrom?e.chrom+":":"")+ml(Math.ceil(e.pos))}const nM="https://genomespy.app/data/genomes/";class rM{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=nM;try{this.setChromSizes(iM(await Ai({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=U(T({},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=fr(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 tM(...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,o,a;let[n,r]=e;return r||(r=n),[this.toContinuous(n.chrom,(i=n.pos)!=null?i:0),this.toContinuous(r.chrom,(a=r.pos)!=null?a:(o=this.chromosomesByName.get(r.chrom))==null?void 0:o.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 iM(t){return bv(t).filter(e=>/^chr[0-9A-Z]+$/.test(e[0])).map(([e,n])=>({name:e,size:parseInt(n)}))}function Xm(t){return je(t)&&"chrom"in t}function oM(t){return t.every(Xm)}class so extends Array{constructor(){super(),this.type=void 0}extend(e){return this}extendAll(e){if(e instanceof so&&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 gl extends so{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 Zm extends so{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 qm extends Zm{constructor(){super(),this.type="nominal"}}class aM extends so{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 Km={quantitative:gl,index:gl,locus:gl,nominal:qm,ordinal:Zm};function Jm(t,e){if(t=="quantitative"&&sM(e)){const n=new aM(e);return n.type=t,n}else if(Km[t]){const n=new Km[t];return n.type=t,e&&n.extendAll(e),n}throw new Error("Unknown type: "+t)}function sM(t){return t&&t.length>0&&t.length!=2&&t.every(e=>typeof e=="number")}function $m(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function cM(t){return--t*t*t+1}function uM(t){return(Math.pow(2,-10*t)-.0009765625)*1.0009775171065494}function lM(t){return 1-uM(t)}const eg="quantitative",yl="ordinal",vl="nominal",tg="locus",fM="index";class dM{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=Du(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&&!_i(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 Fr(this,"mergedScaleProps",()=>{const e=this.members.map(n=>Du(n.view,n.channel).scale).filter(n=>n!==void 0);return rs(e,"scale",["domain"])})}getScaleProps(){return Fr(this,"scaleProps",()=>{var i,o;const e=this._getMergedScaleProps();if(e===null||e.type=="null")return{type:"null"};const n=T(T({},this._getDefaultScaleProperties(this.type)),e);n.type||(n.type=hM(this.channel,this.type));const r=this.getInitialDomain();return r&&r.length>0?n.domain=r:nn(n.type)&&(n.domain=new qm),!n.domain&&n.domainMid!==void 0&&(n.domain=[(i=n.domainMin)!=null?i:0,(o=n.domainMax)!=null?o: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),pM(n,this.channel),n})}getInitialDomain(){var e;return(e=this.getConfiguredDomain())!=null?e:this.type==tg?this.getGenome().getExtent():this.getDataDomain()}getConfiguredDomain(){return this._reduceDomains(e=>_i(e.channel)?void 0:e.view.getConfiguredDomain(e.channel))}getDataDomain(){return this._reduceDomains(e=>_i(e.channel)?void 0:e.view.extractDataDomain(e.channel))}reconfigure(){if(this._scale&&this._scale.type!="null"){Dm(this,"scaleProps");const e=this.getScaleProps();Ym(e,this._scale),Ue(this._scale.type)&&(this._zoomExtent=this._getZoomExtent())}}getScale(){if(this._scale)return this._scale;const e=this.getScaleProps(),n=VD(e);return this._scale=n,RA(n)&&n.genome(this.getGenome()),Ue(n.type)&&(this._zoomExtent=this._getZoomExtent()),n}getDomain(){return this.getScale().domain()}getComplexDomain(){var e,n;return(n=(e=this.getGenome())==null?void 0:e.toChromosomalInterval(this.getDomain()))!=null?n:this.getDomain()}isZoomed(){return this.isZoomable()&&U0(this.getInitialDomain(),this.getDomain())}isZoomable(){if(!tp(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=K2(a,r||0),a=Xs(a,s,e);break;case"log":a=J2(a,r||0),a=ld(a,s,e);break;case"pow":case"sqrt":{const c=i;a=$2(a,r||0,c.exponent()),a=Zs(a,s,e,c.exponent());break}default:throw new Error("Zooming is not implemented for: "+i.type)}return this._zoomExtent&&(a=tv(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(Yo(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=_h([u,0,c],[l,0,f]).rho(.7);await i.transition({duration:n/1e3*d.duration,easingFunction:$m,onUpdate:h=>{const[p,,m]=d(h);o.domain([p-m/2,p+m/2]),this._notifyDomainListeners()}}),o.domain(r),this._notifyDomainListeners()}else o.domain(r),i==null||i.requestRender(),this._notifyDomainListeners()}getZoomLevel(){return this.isZoomable()?_o(this._zoomExtent)/_o(this.getScale().domain()):1}_getZoomExtent(){const e=this.getScaleProps(),n=e.zoom;if(mM(n)&&Ze(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),Yi(n)?r.nice=!this.isExplicitDomain():_n(n)?r.scheme=e==vl?"tableau10":e==yl?"blues":"viridis":Na(n)?r.range=rp(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 Xm(e)?this.getGenome().toContinuous(e.chrom,e.pos):e}fromComplexInterval(e){return this.type==="locus"&&oM(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 hM(t,e){if(e==fM||e==tg){if(tp(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][[vl,yl,eg].indexOf(e)]:e==eg?"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 pM(t,e){Yi(e)&&t.type!=="ordinal"&&(t.range=[0,1]),e=="opacity"&&Ue(t.type)&&(t.clamp=!0)}function mM(t){return je(t)}function bl(...t){for(const e of t)if(e!==void 0)return e}class gM{constructor(e){this.channel=e,this.members=[]}get scaleResolution(){var e;return(e=He(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 Fr(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:rs(e.filter(n=>n!==void 0),"axis",["title"])})}getTitle(){const e=o=>{var s;const a=Du(o.view,o.channel);if(!st(a))return{member:o,explicitTitle:bl((s=a.axis)==null?void 0:s.title,a.title),implicitTitle:bl(Yn(a)?a.field:void 0,Mu(a)?a.expr:void 0)}},n=this.members.map(e),r=n.filter(o=>{var a;if(_i(o.member.channel)&&!o.explicitTitle){const s=Er(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=>bl(o.explicitTitle,o.implicitTitle)).filter(re));return i.size?[...i].join(", "):null}}class ng extends jm{constructor(e,n,r,i){super(e,n,r,i),this.spec=e}}class Ot extends Jn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e,this.children=(e.layer||[]).map((o,a)=>{if(Sl(o)||Cl(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 rg{constructor(e,n){this.n=e,this.maxCols=n!=null?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 Pt(t){return()=>t}const Yt=class{static create(e,n,r,i){return new Yt(Pt(e),Pt(n),Pt(r),Pt(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"?Pt(i):typeof i=="function"?i:this._passThrough(r)};return new Yt(n("x"),n("y"),n("width"),n("height"))}translate(e,n){return e===0&&n===0?this:new Yt(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 Yt(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 Yt(()=>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 Yt(Pt(this.x),Pt(this.y),Pt(this.width),Pt(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 hn=Yt;U2(hn,"ZERO",Yt.create(0,0,0,0));function ig(t,e,n){return n=(n-t)/(e-t),n=Math.max(0,Math.min(1,n)),n*n*(3-2*n)}class $n extends ue{get identifier(){}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}}function og(t){var n,r;const e=T({},t.format);if((n=e.type)!=null||(e.type=AM(t)&&yM(t.url)),(r=e.parse)!=null||(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 yM(t){var e;if(Array.isArray(t)&&(t=t[0]),t)return(e=t.match(/\.(csv|tsv|json)/))==null?void 0:e[1]}const is=t=>typeof t!="object"?vM:bM,vM=t=>({data:t}),bM=t=>t;function AM(t){return"url"in t}function xM(t){return"dynamicCallbackSource"in t}class ag extends $n{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=is(r)),this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}const sg="chromosome_ticks_and_labels",cg={x:"width",y:"height"};function Al(t){return t=="x"?"y":"x"}const xl={x:["bottom","top"],y:["left","right"]},ug=Object.fromEntries(Object.entries(xl).map(([t,e])=>e.map(n=>[n,t])).flat(1));function er(t){return ug[t]}class lg extends Ot{constructor(e,n,r,i){const o=n=="locus",a=T(T(T({},o?SM:fg),CM(n,e)),e);if(super(o?EM(a):dg(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 ag(()=>this.ticks),o){const s=er(this.axisProps.orient),c=this.getScaleResolution(s).getGenome();this.findChildByName(sg).getDynamicDataSource=()=>new ag(()=>c.chromosomes)}this.blockEncodingInheritance=!0}getOrient(){return this.axisProps.orient}getSize(){const e={px:this.getPerpendicularSize()},n={grow:1};return ug[this.axisProps.orient]=="x"?new Kn(n,e):new Kn(e,n)}getPerpendicularSize(){return wl(this.axisProps)}getDynamicDataSource(){return this.tickSource}_updateAxisData(){const e=er(this.axisProps.orient),n=this.getScaleResolution(e).getScale(),r=n.domain();if(U0(r,this.previousScaleDomain)&&!this.axisUpdateRequested)return;this.previousScaleDomain=r;const i=this.ticks,o=wM(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[cg[er(this.getOrient())]],super.render(e,n,r))}isPickingSupported(){return!1}}function wl(t){const e=er(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 wM(t,e,n,r=[]){const i=s=>25+60*ig(100,700,s);let o=le(t.tickCount)?t.tickCount:Math.round(n/i(n));o=Gm(e,o,t.tickMinStep);const a=t.values?Hm(e,t.values,o):LD(e,o);if(dw(a,r,s=>s,s=>s.value))return r;{const s=OD(e,o,t.format);return a.map(c=>({value:c,label:s(c)}))}}const fg={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 CM(t,e){var s;const n=e.orient,r=t=="nominal"||t=="ordinal";let i="center",o="middle",a=(s=e.labelAngle)!=null?s:(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 dg(t){const e=U(T({},t),{extent:wl(t)}),n=er(e.orient),r=Al(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={[cg[Al(er(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 SM=U(T({},fg),{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 EM(t){const e=U(T({},t),{extent:wl(t)}),n=er(e.orient),r=Al(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:T({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=dg(T(T({},t),s));if(t.chromTicks||t.chromLabels){const u={name:sg,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 hg={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"},DM={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},MM={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},TM={start:0,middle:.5,end:1},IM={start:"left",middle:"center",end:"right"};function kM(t){var u,f,l;if(!t)return;const e=re(t)?{text:t}:t;if(!e.text||e.orient=="none")return;const n=(u={"track-title":DM,overlay:MM}[e.style])!=null?u:{},r=T(T(T({},hg),n),e);let i={},o={x:0,y:0};const a=TM[(f=r.anchor)!=null?f:"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=T(T(T(T({},hg),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:U(T(T({type:"text",tooltip:null,clip:!1},o),c),{text:s.text,align:(l=s.align)!=null?l:IM[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 pg(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&&(a=+c.x(r.datum)*e.width+e.x),c.y&&!c.y2&&(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 mg extends Jn{constructor(n,r,i,o,a){var s;super(n,r,i,o);ke(this,Bo);ke(this,Dt);ke(this,Us);ke(this,Gs);ke(this,ur);ke(this,Oo);ke(this,Po);ke(this,Fo);ke(this,Hs);ke(this,ei,1/0);ke(this,ti,10);ke(this,nt,[]);ke(this,ni,0);this.spec=n,jo(this,ti,(s=n.spacing)!=null?s:10),jo(this,ei,a),jo(this,nt,[]),this.wrappingFacet=!1,this._createChildren()}_createChildren(){}appendChild(n){var r;(r=n.parent)!=null||(n.parent=this),se(this,nt).push(xe(this,Bo,id).call(this,n)),G2(this,ni)._++}setChildren(n){for(const r of n)this.appendChild(r)}replaceChild(n,r){const i=se(this,nt).findIndex(o=>o.view==n);if(i>=0)se(this,nt)[i]=xe(this,Bo,id).call(this,r);else throw new Error("Not my child view!")}get children(){return se(this,nt).map(n=>n.view)}get childCount(){return se(this,nt).length}onScalesResolved(){super.onScalesResolved(),xe(this,Gs,Q2).call(this)}*[Symbol.iterator](){for(const n of se(this,nt)){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=xe(this,ur,Uo).call(this,"column"),r=xe(this,ur,Uo).call(this,"row");return!n.length||!r.length?et.zero():new et(r.at(0).axisBefore,n.at(-1).axisAfter,r.at(-1).axisAfter,n.at(0).axisBefore)}getSize(){return this._cache("size",()=>new Kn(xe(this,Po,ad).call(this,"column"),xe(this,Po,ad).call(this,"row")).subtractPadding(this.getOverhang()).addPadding(this.getPadding()))}render(n,r,i={}){var u;if(!this.isVisible())return;r=r.shrink(this.getPadding()),n.pushView(this,r);const o={devicePixelRatio:this.context.glHelper.dpr},a=oo(xe(this,Oo,od).call(this,"column"),r.width,o),s=oo(xe(this,Oo,od).call(this,"row"),r.height,o),c=new rg(se(this,Dt,Sn).length,(u=se(this,ei))!=null?u:1/0);for(const[f,l]of se(this,Dt,Sn).entries()){const{view:d,axes:h,background:p,title:m}=l,[y,g]=c.getCellCoords(f),A=a[xe(this,Fo,sd).call(this,"column",y)],x=s[xe(this,Fo,sd).call(this,"row",g)],C=d.getSize(),b=d.getPadding().subtract(d.getOverhang()),v=A.location+b.left,w=x.location+b.top,E=(C.width.grow?A.size:C.width.px)-b.width,k=(C.height.grow?x.size:C.height.px)-b.height,L=new hn(()=>r.x+v,()=>r.y+w,()=>E,()=>k);l.coords=L,p==null||p.render(n,L,i);const I=BM(d);I&&d.render(n,L,i);for(const[P,Z]of Object.entries(h)){const Q=Z.axisProps;let fe;const Se=Z.getPerpendicularSize();P=="bottom"?fe=L.translate(0,L.height+Q.offset).modify({height:Se}):P=="top"?fe=L.translate(0,-Se-Q.offset).modify({height:Se}):P=="left"?fe=L.translate(-Se-Q.offset,0).modify({width:Se}):P=="right"&&(fe=L.translate(L.width+Q.offset,0).modify({width:Se})),Z.render(n,fe)}I||d.render(n,L,i),m==null||m.render(n,L,U(T({},i),{clipRect:void 0}))}n.popView(this)}propagateInteractionEvent(n){if(this.handleInteractionEvent(void 0,n,!0),n.stopped)return;const r=se(this,Dt,Sn).find(o=>o.coords.containsPoint(n.point.x,n.point.y)),i=r==null?void 0:r.view;i&&(i.propagateInteractionEvent(n),(i instanceof Ae||i instanceof Ot)&&pg(n,r.coords,o=>xe(this,Hs,V2).call(this,r.coords,r.view,o),this.context.getCurrentHover())),!n.stopped&&this.handleInteractionEvent(void 0,n,!1)}getDefaultResolution(n,r){return"independent"}}ei=new WeakMap,ti=new WeakMap,nt=new WeakMap,ni=new WeakMap,Bo=new WeakSet,id=function(n){var i;const r={view:n,background:void 0,axes:{},coords:hn.ZERO};if(n instanceof Ae||n instanceof Ot){const o=(i=n.spec)==null?void 0:i.view;if((o==null?void 0:o.fill)||(o==null?void 0:o.stroke)){const s=new Ae(NM(o),this.context,n,"background"+se(this,ni));s.blockEncodingInheritance=!0,r.background=s}const a=kM(n.spec.title);if(a){const s=new Ae(a,this.context,n,"title"+se(this,ni));s.blockEncodingInheritance=!0,r.title=s}}return r},Dt=new WeakSet,Sn=function(){return se(this,nt).filter(n=>n.view.isVisible())},Us=new WeakSet,H2=function(){var n;return new rg(se(this,Dt,Sn).length,(n=se(this,ei))!=null?n:1/0)},Gs=new WeakSet,Q2=function(){if(Object.keys(this.resolutions.axis).length)throw new Error("ConcatView does not (currently) support shared axes!");for(const n of se(this,nt)){const{view:r,axes:i}=n,o=(a,s,c)=>{var f;const u=a.getAxisProps();if(u!==null){if(!u.orient){for(const l of xl[s])if(!i[l]){u.orient=l;break}if(!u.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if((f=u.title)!=null||(u.title=a.getTitle()),!xl[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 lg(u,a.scaleResolution.type,this.context,c)}};if(r instanceof Ae||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)}}}},ur=new WeakSet,Uo=function(n){const r=n=="column"?["left","right"]:["top","bottom"],i=n=="column"?"width":"height",o=(a,s)=>a.map(c=>{const u=se(this,Dt,Sn)[c].axes[r[s]];if(u)return Math.max(u.getPerpendicularSize()+u.axisProps.offset,0);const f=se(this,Dt,Sn)[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 se(this,Us,H2)[n=="column"?"colIndices":"rowIndices"].map(a=>({axisBefore:o(a,0),axisAfter:o(a,1),view:xD(a.map(s=>se(this,Dt,Sn)[s].view.getSize()[i]))}))},Oo=new WeakSet,od=function(n){const r=xe(this,ur,Uo).call(this,n),i=[];i.push(ao);for(const[o,a]of r.entries())o>0&&i.push({px:se(this,ti),grow:0}),(o==0||this.wrappingFacet)&&i.push(ao),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(ao);return i},Po=new WeakSet,ad=function(n){var a,s;let r=0,i=0;const o=xe(this,ur,Uo).call(this,n);for(const[c,u]of o.entries())c>0&&(i+=se(this,ti)),(c==0||this.wrappingFacet)&&(i+=0),i+=u.axisBefore,i+=(a=u.view.px)!=null?a:0,r+=(s=u.view.grow)!=null?s:0,i+=u.axisAfter,(c==o.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},Fo=new WeakSet,sd=function(n,r){return n=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},Hs=new WeakSet,V2=function(n,r,i){for(const[o,a]of Object.entries(LM(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 NM(t){return{configurableVisibility:!1,data:{values:[{}]},mark:U(T({fill:null,strokeWidth:1,fillOpacity:t.fill?1:0},t),{type:"rect",clip:!1,tooltip:null})}}function LM(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 BM(t){let e=!0;return t.visit(n=>{n instanceof Ae&&e&&(e=n.mark.properties.clip)}),e}class jr extends mg{constructor(e,n,r,i){super(e,n,r,i,Dl(e)?e.columns:El(e)?1:1/0),this.spec=e}_createChildren(){const e=this.spec,n=Dl(e)?e.concat:El(e)?e.vconcat:e.hconcat;this.setChildren(n.map((r,i)=>this.context.createView(r,this,"grid"+i)))}}class OM{constructor(){this.types=[];const e=n=>(r,i,o,a)=>{var s;return new n(r,i,o,(s=r.name)!=null?s:a)};this.addViewType(PM,e(ng)),this.addViewType(Sl,e(Ot)),this.addViewType(Cl,e(Ae)),this.addViewType(El,e(jr)),this.addViewType(FM,e(jr)),this.addViewType(Dl,e(jr))}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!=null?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 Cl(t){return"mark"in t&&(re(t.mark)||je(t.mark))}function Sl(t){return"layer"in t&&je(t.layer)}function gg(t){return t&&(Cl(t)||Sl(t))&&"aggregateSamples"in t}function PM(t){return"import"in t}function El(t){return"vconcat"in t&&Ze(t.vconcat)}function FM(t){return"hconcat"in t&&Ze(t.hconcat)}function Dl(t){return"concat"in t&&Ze(t.concat)}const zM={point:sD,rect:tD,rule:lD,link:pD,text:AD};class Ae extends Jn{constructor(e,n,r,i){super(e,n,r,i),this.spec=e;const o=zM[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){var r;const n=this.mark.encoding;for(const[i,o]of Object.entries(n)){if(!$e(o))continue;let a=Er((r=o.resolutionChannel)!=null?r:i);if(e=="axis"&&!Yi(a))continue;let s=this;for(;s.parent instanceof Jn&&["shared","excluded"].includes(s.parent.getConfiguredOrDefaultResolution(a,e))&&s.getConfiguredOrDefaultResolution(a,e)!="excluded";)s=s.parent;s.resolutions[e][a]||(s.resolutions[e][a]=e=="scale"?new dM(a):new gM(a)),Yi(i)?s.resolutions[e][a].pushUnitView(this,i):e=="scale"&&s.resolutions[e][a].pushUnitView(this,i)}}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(_i(e))throw new Error(`getDomain(${e}), must only be called for primary channels!`);const n=this.mark.encoding[e];if(!$e(n))throw new Error("The channel has no scale, cannot get domain!");return n}getConfiguredDomain(e){var i,o;const n=this._validateDomainQuery(e),r=n&&n.scale&&n.scale.domain;if(r){const a=this.getScaleResolution((i=n.resolutionChannel)!=null?i:e);return Jm((o=n.type)!=null?o:"nominal",a.fromComplexInterval(r))}}extractDataDomain(e){var s;const r=(s=this._validateDomainQuery(e).type)!=null?s:"nominal",i=c=>{let u;const f=this.mark.encoding[c];if(f){const l=this.context.accessorFactory.createAccessor(f);if(l)if(u=Jm(r),l.constant)u.extend(l({}));else{const d=this.getCollector();d!=null&&d.completed&&d.visitData(h=>u.extend(l(h)))}}return u};let o=i(e);const a=Tu[e];if(a){const c=i(a);c&&o.extendAll(c)}return o}getZoomLevel(){const e=n=>{var r,i;return(i=(r=this.getScaleResolution(n))==null?void 0:r.getZoomLevel())!=null?i:1};return Vi.map(e).reduce((n,r)=>n*r,1)}_initializeAggregateViews(){var e,n;if(gg(this.spec))for(const r of this.spec.aggregateSamples){const i=(e=r.transform)!=null?e:[];i.length&&He(i).type!="collect"&&i.push({type:"collect"}),i.push({type:"mergeFacets"}),r.transform=i,r.encoding=U(T({},(n=r.encoding)!=null?n:{}),{sample:null});const o=this.context.createView(r,this,"summaryView");o.getFacetFields=a=>{},this.sampleAggregateViews.push(o)}}propagateInteractionEvent(e){e.target=this}getDefaultResolution(e,n){return e=="x"?"shared":"independent"}}function*Ml(t,e=[]){for(const[n,r]of t.entries())if(r instanceof Map)for(const i of Ml(r,[...e,n]))yield i;else yield[[...e,n],r]}class Ur extends ue{constructor(e){super(),this.params=e!=null?e:{type:"collect"},this.observers=[],this.facetBatches=void 0,this._init()}_init(){this._data=[],this.facetBatches=new Mn([],JSON.stringify),this.facetBatches.set(void 0,this._data)}reset(){super.reset(),this._init()}handle(e){this._data.push(e)}beginBatch(e){oD(e)&&(this._data=[],this.facetBatches.set(Je(e.facetId),this._data))}complete(){var i,o;const e=(i=this.params)==null?void 0:i.sort,n=e?fd(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=>J(c)),s=oi(this._data,...a);this.facetBatches.clear();for(const[c,u]of Ml(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 co{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 RM extends ue{get behavior(){return Bt}constructor(e){super(),this.params=e,this.startAccessor=J(e.start),this.endAccessor=J(e.end),this.chromAccessor=e.chrom?J(e.chrom):n=>{},this.weightAccessor=e.weight?J(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 co}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 h=this.ends;h.clear();const p=(y,g,A)=>{if(y==g)return;let x=!1;c&&(c[e]===A?(c[n]=g,x=!0):c[e]!=0&&this._propagate(c)),x||(c=this.createSegment(y,g,A,f))},m=()=>{let y;for(;(y=h.peekValue())!==void 0;)p(d,y,l),d=y,l-=h.pop();d=void 0,c&&(this._propagate(c),c=void 0)};this.handle=y=>{const g=i(y);let A;for(;(A=h.peekValue())!==void 0&&A<g;)p(d,A,l),d=A,l-=h.pop();if(r){let C=a(y);C!==u&&(m(),f=C,u=f)}d!==void 0&&p(d,g,l),d=g;const x=s(y);l+=x,h.push(x,o(y))},this.complete=()=>{m(),super.complete()}}}function jM(t,e,n=0,r=t.length){const i=new co,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 UM{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 GM extends ue{constructor(e,n){var i,o;if(super(),this.params=e,this._data=[],this.channel=(i=e.channel)!=null?i:"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.posAccessor=J(this.params.pos),this.posBisector=Zo(this.posAccessor),this.scoreAccessor=J(this.params.score),this.widthAccessor=J(this.params.width),this.laneAccessor=this.params.lane?J(this.params.lane):a=>0,this.padding=(o=this.params.padding)!=null?o: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",a=>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 UM(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=jM(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 HM extends ue{constructor(e){super(),this.params=e,this.predicate=void 0}initialize(){this.predicate=Eu(this.params.expr,this.getGlobalObject())}handle(e){this.predicate(e)&&this._propagate(e)}}const QM="0".charCodeAt(0);function*VM(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-QM}yield r}class YM extends ue{get behavior(){return Bt}constructor(e){var a,s;super();const n=J((a=e.exons)!=null?a:"exons"),r=J((s=e.start)!=null?s:"start"),[i,o]=e.as||["exonStart","exonEnd"];this.handle=c=>{let u=r(c),f=u,l=!0;const d=n(c);for(const h of VM(d)){if(l)f=u+h;else{u=f+h;const p=Object.assign({},c);p[i]=f,p[o]=u,this._propagate(p)}l=!l}}}}class _M extends ue{get behavior(){return Bt}constructor(e){super();const n=Je(e.field).map(o=>J(o)),r=Je(e.separator),i=Je(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]));WM(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 WM(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 XM extends ue{get behavior(){return dn}constructor(e){super(),this.params=e,this.as=e.as,this.fn=void 0}initialize(){this.fn=Eu(this.params.expr,this.getGlobalObject())}handle(e){e[this.as]=this.fn(e),this._propagate(e)}}class yg extends ue{get behavior(){return dn}constructor(e,n){var p;super();const r=(p=e.channel)!=null?p:"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=J(e.chrom),a=Je(e.pos).map(m=>J(m)),s=Je(e.as);if(a.length!=s.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=Je(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((m,y)=>`datum[${JSON.stringify(m)}] = chromOffset + +posAccessors[${y}](datum) - ${u[y]};`).join(`
1340
+ `));let l,d=0;const h=m=>{if(m!==l){if(d=i.cumulativeChromPositions.get(m),d===void 0)throw new Error("Unknown chromosome/contig: "+m);l=m}return d};this.handle=m=>{f(m,h(o(m)),a),this._propagate(m)}}}var vg={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 ZM extends ue{get behavior(){return dn}constructor(e){super();const n=ul(vg),r=J(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 qM=65536;class KM extends ue{get behavior(){return dn}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=J(e.start),o=J(e.end);if(!e.preference!=!e.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(e.preference){const a=new Float64Array(qM),s=J(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 h=-1;if(d>=0&&a[d]<l)h=d;else{const p=i(f);for(h=0;h<a.length&&!(a[h]<p);h++);if(h>=a.length)throw new Error("Out of lanes!")}a[h]=o(f)+r,f[n]=h,this._propagate(f)}}else{const a=new co,s=new co;let c=-1/0,u=0;this.handle=f=>{const l=i(f);for(;a.length&&(a.peekValue()<=l||l<c);){const h=a.pop();s.push(h,h)}c=l;let d=s.pop();d===void 0&&(d=u++),f[n]=d,this._propagate(f),a.push(d,o(f)+r)}}}}class JM 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=>J(i)),r=e.as?e.as:n.map(V);this.handle=i=>{const o={};for(let a=0;a<n.length;a++)o[r[a]]=n[a](i);this._propagate(o)}}}class $M extends ue{get behavior(){return dn}constructor(e){super();const n=new RegExp(e.regex),r=typeof e.as=="string"?[e.as]:e.as,i=J(e.field);this.handle=o=>{const a=i(o);if(re(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 e8 extends ue{get behavior(){return Bt}constructor(e){super();const n=Je(e.columnRegex).map(d=>new RegExp(d)),r=Je(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 y;const h=Object.keys(d),p=new Map;for(const[g,A]of n.entries())for(const x of h){const C=(y=A.exec(x))==null?void 0:y[1];if(C!==void 0){let b=p.get(C);b||(b=[],p.set(C,b)),b[g]=x}}a=[...p.entries()],s=h.filter(g=>!n.some(A=>A.test(g))&&!(i&&i.test(g)));const m=[...s.map(g=>JSON.stringify(g)+": datum["+JSON.stringify(g)+"]"),JSON.stringify(o)+": sampleId",...r.map(g=>JSON.stringify(g)+": null")];c=new Function("datum","sampleId",`return {
1341
+ `+m.join(`,
1550
1342
  `)+`
1551
- };`)},f=d=>{s||u(d);for(const[h,p]of s){const g=c(d,h);for(let m=0;m<p.length;m++)g[r[m]]=d[p[m]];this._propagate(g)}},l=d=>{u(d),f(d),this.handle=f};this.handle=l,this.beginBatch=d=>{Vp(d)&&(this.handle=l),super.beginBatch(d)}}}class eM extends se{get behavior(){return rn}constructor(e){super();this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){var f;const e=this.params,n=e.as||["y0","y1"],r=e.sort?af(e.sort.field,e.sort.order):void 0,i=e.field?Z(e.field):()=>1,o=e.groupby.map(l=>Z(l)),s=db(this.buffer,l=>o.map(d=>d(l)).join()).map(l=>l[1]);let a=l=>!0;if(e.baseField){const l=Z(e.baseField);a=d=>l(d)!==null}let c,u;switch(e.offset){case"normalize":c=(l,d)=>l/d,u=(l,d)=>To(l,d);break;case"center":c=(l,d)=>l-d/2,u=(l,d)=>To(l,d);break;case"information":{const l=Math.log2((f=e.cardinality)!=null?f:4);c=(d,h)=>d/h,u=(d,h)=>{const g=To(d,v=>+!a(v)),m=To(d,h),y=m-g;let x=0;for(let v=0;v<d.length;v++){const S=d[v];if(a(S)){const b=h(S)/y;x-=b*Math.log2(b)}}return y/(l-(x+0))*(y/m)}}break;default:c=(l,d)=>l,u=(l,d)=>1}for(const l of s){r&&l.sort(r);const d=u(l,i);let h=0;for(const p of l){const g=h+i(p);a(p)&&(p[n[0]]=c(h,d),p[n[1]]=c(g,d),this._propagate(p),h=g)}}super.complete()}}class tM extends se{get behavior(){return Nt}constructor(e){super();var o,s;const n=Z((o=e.field)!=null?o:"sequence"),[r,i]=(s=e.as)!=null?s:["pos","sequence"];this.handle=a=>{const c=Object.assign({},a,{[i]:"",[r]:0}),u=n(a);for(let f=0;f<u.length;f++){const l=Object.assign({},c);l[r]=f,l[i]=u.charAt(f),this._propagate(l)}}}}class nM extends se{get behavior(){return Nt}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=>Z(o)),i=Mo(this.buffer,...r);for(const[o,s]of Xu(i)){const a={count:s.length};for(let c=0;c<n.length;c++)a[n[c]]=o[c];this._propagate(a)}super.complete()}}const rM="_uniqueId",Mg=1e4,Ig=[null];class Tg extends se{get behavior(){return rn}constructor(e){super();var n;this.params=e,this.as=(n=e.as)!=null?n:rM,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%Mg==0&&(this._id=this._getBlock()*Mg),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=Ig.length;return Ig[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const Ng={aggregate:nM,collect:Ar,coverage:zD,filterScoredLabels:jD,filter:GD,flattenCompressedExons:VD,flattenDelimited:_D,flattenSequence:tM,formula:WD,identifier:Tg,linearizeGenomicCoordinate:Cg,measureText:XD,pileup:ZD,project:KD,regexExtract:JD,regexFold:$D,sample:_p,stack:eM};function iM(t,e){const n=Ng[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function oM(t){return"values"in t}class sM extends On{constructor(e){super();var n;if(this.params=e,typeof e.values=="string"&&!((n=e==null?void 0:e.format)==null?void 0: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=Ms(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=od(e,Ag(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 aM(t){return"url"in t}class cM extends On{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=>Wr({baseURL:this.baseUrl}).load(o).catch(s=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${s.message}`)}),i=(o,s)=>{try{const a=od(o,Ag(this.params));this.beginBatch({type:"file",url:s});for(const c of a)this._propagate(c)}catch(a){throw new Error(`Cannot parse: ${s}: ${a.message}`)}};this.reset(),await Promise.all(n.map(o=>r(o).then(i))),this.complete()}}function uM(t){return"sequence"in t}class lM extends On{constructor(e){super();if(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 fM(t){return"dynamicSource"in t}class dM extends On{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=Ms(r)),this._propagate(n(r));this.complete()}async load(){}}function Lg(t,e){if(oM(t))return new sM(t);if(aM(t))return new cM(t,e);if(uM(t))return new lM(t);if(fM(t))return new dM;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function hM(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(`,
1552
- `)+" };");return n.properties=e,n}class kg extends se{get behavior(){return Nt}constructor(){super();const e=n=>{const r=hM(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{Vp(n)&&(this.handle=e),super.beginBatch(n)}}}class Og{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)}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 pM(t){return"name"in t}class gM extends On{constructor(e,n){super();this.getNamedData=n,this.params=e}get identifier(){return this.params.name}_getValues(){const e=this.getNamedData(this.params.name);if(e)return e;throw new Error("Cannot find named data: "+this.params.name)}loadSynchronously(){const e=this._getValues();let n=r=>r;if(Array.isArray(e))e.length>0&&(n=Ms(e[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const r of e)this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}function Bg(t,e){const n=[];let r;const i=e!=null?e:new Og,o=[];function s(f,l=()=>{}){if(!r)throw l()||new Error("Cannot append data flow node, no parent exist!");return r.addChild(f),r=f,f}function a(f,l){return s(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 h;try{h=iM(d,l)}catch(p){throw console.warn(p),new Error(`Cannot initialize "${d.type}" transform: ${p}`)}h.behavior&rn&&a(new kg),a(h)}}const u=f=>{if(n.push(r),f.spec.data){const l=ND(f.spec.data)?f.getDynamicDataSource():pM(f.spec.data)?new gM(f.spec.data,f.context.getNamedData):Lg(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=mM(f);if(l){o.push(l.rewrite);for(const h of l.transforms)a(h)}f.mark.isPickingParticipant()&&a(new Tg({type:"identifier"}));const d=new Ar({type:"collect",groupby:f.getFacetFields(),sort:yM(f,l==null?void 0:l.rewrittenEncoding)});s(d),i.addCollector(d,f)}gg(f.spec)};return u.postOrder=f=>{r=n.pop()},t.visit(u),o.forEach(f=>f()),i}function mM(t){var o,s,a,c;const e=[],n={},r=[];for(const[u,f]of Object.entries(t.getEncoding())){const l=u;bi(l)&&o0(f)&&r.push({channel:l,chromPosDef:f})}const i=Mo(r,u=>nr(u.channel),u=>u.chromPosDef.chrom);for(const[u,f]of i.entries())for(const[l,d]of f.entries()){const h=[],p=[],g=[];for(const{channel:m,chromPosDef:y}of d){const x=b=>b.replace(/[^A-Za-z0-9_]/g,""),v=["_linearized_",x(y.chrom),"_",x(y.pos)].join(""),S=F(T({},(a=(s=(o=t.spec.encoding)==null?void 0:o[m])!=null?s:t.getEncoding()[m])!=null?a:{}),{field:v});delete S.chrom,delete S.pos,!S.type&&y.type&&(S.type=y.type),n[m]=S,h.push(y.pos),g.push((c=y.offset)!=null?c:0),p.push(v)}e.push(new Cg({type:"linearizeGenomicCoordinate",channel:u,chrom:l,pos:h,offset:g,as:p},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding=T(T({},t.spec.encoding),n),Fp(t.mark,"encoding")}}:void 0}function yM(t,e){var r;const n=T(T({},t.getEncoding()),e).x;if(Ke(n)&&((r=t.getScaleResolution("x"))==null?void 0:r.isZoomable())){if(Mn(n))return{field:n.field};if(!yi(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function AM(t,...e){let n=t;for(const o of e)n.addChild(o),n=o;let r;n instanceof Ar?r=n:(r=new Ar,n.addChild(r));let i;return t instanceof On?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 Pg(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!Pg(n,t))return!1;return!0}function qu(t,e=!1){if(t instanceof Ar&&(e=!0),t instanceof kg)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&qu(n,e);return}t.behavior&Nt&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)qu(t.children[n],e||n<r-1)}function bM(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 xM(t){if(qu(t),!Pg(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function vM(t){for(const e of t.dataSources)xM(e);bM(t)}function wM(t){const e=[];return t.visit(n=>{e.push(n)}),e}function Fg(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 EM(t){for(const e of Ai){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}function SM(t){let e=t;const n=r=>r&&!Ze(r);return t.visit(r=>{if(r instanceof ji||r instanceof Pe){const i=r.getEncoding();if(r instanceof Pe&&!n(i.x)&&!n(i.y))return gr;const o=r.parent,s=new Wu(r.context,o);if(r.parent=s,s.child=r,s.name=r.name+"_decorator",o)if(o instanceof At)o.replaceChild(r,s);else{let a;if(t.visit(MM((c,u)=>{if(c===r)return a=fe(u),kn})),a instanceof At)a.replaceChild(r,s);else throw new Error("Cannot find parent while decorating: "+r.getPathString())}return s.resolutions=r.resolutions,r.resolutions={scale:{},axis:{}},s.spec.height=r.spec.height,r.spec.height="container",s.spec.width=r.spec.width,r.spec.width="container",s.spec.padding=r.spec.padding,r.spec.padding=void 0,r===t&&(e=s),s.initialize(),gr}}),e}function CM(t){const e=[];return t.visit(n=>{if(n instanceof Pe){const r=n.getEncoding();for(const[i,o]of Object.entries(r))Mn(o)&&"type"in o&&e.push({view:n,channel:i,field:o.field,type:o.type});return gr}}),e}async function DM(t,e,n){var s;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=Wr({baseURL:e}),i=t.import.url,o=JSON.parse(await r.load(i).catch(a=>{throw new Error(`Could not load imported view spec: ${i}
1553
- Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]*\//))==null?void 0:s[0],o;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(t)}`)}async function zg(t){const e=[];t.visit(n=>{if(n instanceof hg)return e.push(n),gr});for(const n of e){const r=n.context,i=await DM(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await zg(o)}}function MM(t){const e=[],n=r=>t(r,e);return n.beforeChildren=r=>{e.push(r)},n.afterChildren=r=>{e.pop()},n}function IM(t){const e=[];return t.visit(n=>{e.push(n)}),new Set([...hb(e,n=>n.length,n=>n.name)].filter(([n,r])=>r==1&&n!==void 0).map(([n,r])=>n))}const TM=t=>!/^(layer|concat)\d+$/.test(t);class Zu{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Rg extends Zu{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=s=>()=>{e&&s()},i=s=>()=>{e&&n&&s()},o=Mo(this.buffer,s=>s.mark);for(const[s,a]of o.entries()){if(!s.isReady())continue;this.batch.push(()=>{e=s.unitView.getEffectiveOpacity()>0}),this.batch.push(r(()=>s.prepareRender(this.globalOptions)));let c;for(const u of a){const f=u.coords;f.equals(c)||this.batch.push(r(()=>{n=s.setViewport(f,u.clipRect)})),this.batch.push(i(u.callback)),c=u.coords}}}}class NM extends Zu{constructor(e){super(e);this.root=void 0,this.stack=[],this.lastAddition=void 0}pushView(e,n){const r=new LM(e,n);this.root?fe(this.stack).addChild(r):this.root=r,this.stack.push(r)}popView(e){this.stack.pop()}getLayout(){return this.root}}class LM{constructor(e,n){this.view=e,this.coords=n,this.children=[]}addChild(e){const n=fe(this.children);n&&e.view===n.view&&e.coords.equals(n.coords)||this.children.push(e)}dispatchInteractionEvent(e){if(this.coords.containsPoint(e.point.x,e.point.y)){if(this.view.handleInteractionEvent(this.coords,e,!0),e.stopped)return;if(this.children.length==0)e.target=this.view;else for(const n of this.children){if(n.dispatchInteractionEvent(e),e.target)break;if(e.stopped)return}this.view.handleInteractionEvent(this.coords,e,!1)}}}class kM extends Zu{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 OM{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 BM{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 PM=t=>new Promise(e=>setTimeout(e,t));function Is(t){const e=t.requestAnimationFrame||window.requestAnimationFrame,n=t.signal,r=()=>new Promise((i,o)=>{if(n==null?void 0:n.aborted)return o("aborted");const s=performance.now(),a=s+(t.duration||1e3),c=typeof t.from=="number"?t.from:0,u=typeof t.to=="number"?t.to:1,f=t.easingFunction||(g=>g),l=g=>(g-s)/(a-s),d=g=>g*(u-c)+c,h=g=>Math.max(0,Math.min(1,g)),p=g=>{(n==null?void 0:n.aborted)?o("aborted"):(t.onUpdate(d(f(h(l(g))))),g<a?e(p):(t.onUpdate(d(f(1))),i()))};e(p)});return t.delay?(n==null?void 0:n.aborted)?Promise.reject("aborted"):PM(t.delay).then(r):r()}class FM{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 Is(T({requestAnimationFrame:n=>this.requestTransition(n)},e))}}function Ug(){const t=e=>e;return t.invert=e=>e,t.copy=Ug,t.invertRange=()=>{},t}class zM{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new cD(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}}}var RM="data:image/png;base64,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";const UM={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class jM{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Co([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:Tu(Dg),texture:this._createTextureNow(RM)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(oe(r)&&(r=UM[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=HM(r,n),o=this.fontRepository+jg(n.family)+"/"+i.replace(/\.\w+/,""),s=this._createTexture(o+".png"),a=this._loadFont(o+".json");e.texture=await s,e.metrics=await a}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=>Tu(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=jg(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=>GM(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)=>{Di(n,{src:e,min:n.LINEAR},(o,s,a)=>{o?i(o):r(s)})})}_createTextureNow(e){const n=this._webGLHelper.gl;let r;const i=new Promise((o,s)=>{r=Di(n,{src:e,min:n.LINEAR},(a,c,u)=>{a?s(a):o(c)})});return this._promises.push(i),r}}function jg(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function GM(t){const e=t.split(`
1554
- `),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 s=o[1];r[s]=o[2]}if(o=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),o){const s=o[1];r[s]=+o[2]}}return n}function HM(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 QM(t,e){const n=[];let r;for(const i of t.split(`
1555
- `))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 VM{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=Py([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 _M(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 Ts(t,e,n=!0){let r,i=s=>{};return function(...a){return new Promise((c,u)=>{const f=()=>{clearTimeout(r),i=l=>{},c(t(...a))};n&&i("debounced"),clearTimeout(r),i=u,r=setTimeout(f,e)})}}const Gg=new Map;async function YM(t,e,n){var o;const r=t.symbol;let i=(o=Gg.get(r))!=null?o:await qM(t.symbol);return i?(Gg.set(r,i),M`<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 WM(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(s=>s.json())).result[r]:null}const XM=Ts(WM,500);function qM(t){return XM(t)}const ZM=Le(".4~r"),KM=Le(".4~e");function Hg(t){return t===null?M`<span class="na">NA</span>`:oe(t)?t.substring(0,30):Number.isInteger(t)?""+t:ae(t)?Math.abs(t)>Math.pow(10,8)||Math.abs(t)<Math.pow(10,-8)?KM(t):ZM(t):co(t)?t?"True":"False":"?"+typeof t+" "+t}async function JM(t,e,n){const r=(s,a)=>{var c;for(const[u,f]of Object.entries(e.encoders))if((c=f==null?void 0:f.accessor)==null?void 0:c.fields.includes(s))switch(u){case"color":case"fill":case"stroke":return M`<span class="color-legend" style="${`background-color: ${f(a)}`}"></span>`}return""},i=M`<table class="attributes">${Object.entries(t).filter(([s,a])=>!s.startsWith("_")).map(([s,a])=>M`<tr><th>${s}</th><td>${Hg(a)} ${r(s,t)}</td></tr>`)}</table>`,o=e.unitView.spec.title?M`<div class="title"><strong>${e.unitView.spec.title}</strong></div>`:"";return M`${o}${i}`}W("index",Wa,["continuous"]),W("locus",Db,["continuous"]),W("null",Ug,[]),id("fasta",QM);class Qg{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new vw,this.viewFactory=new wD,this.namedDataProviders=[],this.animator=new FM(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=o=>o.isVisibleInSpec(),this._renderingContext=void 0,this._pickingContext=void 0,this._dirtyPickingBuffer=!1,this._currentHover=void 0,this._wheelInertia=new VM(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers=T({default:JM,refseqgene:YM},(i=r.tooltipHandlers)!=null?i:{}),this.viewRoot=void 0}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedData(e){for(const n of this.namedDataProviders){const r=n(e);if(r)return r}}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 nC(this.container,()=>{if(this.viewRoot){const e=this.viewRoot.getSize(),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 ev(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 zM(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new Og,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new jM(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedData:this.getNamedData.bind(this),getCurrentHover:()=>this._currentHover,addKeyboardListener:(a,c)=>{document.addEventListener(a,c);let u=this._keyboardListeners.get(a);u||(u=[],this._keyboardListeners.set(a,u)),u.push(c)},isViewVisible:e.viewVisibilityPredicate,isViewSpec:a=>e.viewFactory.isViewSpec(a),createView:function(a,c,u){return e.viewFactory.createView(a,n,c,u)}},r=this.spec;r.datasets&&this.registerNamedDataProvider(a=>r.datasets[a]),this.viewRoot=n.createView(r,null,"viewRoot"),await zg(this.viewRoot),Fg(this.viewRoot),EM(this.viewRoot),this.viewRoot=SM(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(a=>{a instanceof Pe&&i.push(a)});const o=Bg(this.viewRoot,n.dataFlow);vM(o),this.broadcast("dataFlowBuilt",o),o.dataSources.forEach(a=>console.log(a.subtreeToString())),i.forEach(a=>a.mark.initializeEncoders());const s=Promise.all(i.map(a=>a.mark.initializeGraphics()));for(const a of i)o.addObserver(c=>{a.mark.initializeData(),a.mark.updateGraphicsData()},a);await n.fontManager.waitUntilReady(),o.initialize(),await Promise.all(o.dataSources.map(a=>a.load())),this.viewRoot.visit(a=>{for(const c of Object.values(a.resolutions.scale))c.reconfigure()}),this.broadcast("dataLoaded"),await s,this.viewRoot.visit(a=>{for(const c of Object.values(a.resolutions.scale))this._glHelper.createRangeTexture(c)});for(const a of i)a.mark.finalizeGraphicsInitialization();n.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(a=>Bi(a,"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),$M(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(this.layout&&r instanceof MouseEvent){r.type=="mousemove"&&(this.tooltip.handleMouseMove(r),this._tooltipUpdateRequested=!1,r.buttons==0&&this.renderPickingFramebuffer());const o=e.getBoundingClientRect(),s=new BM(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),a=c=>{this.layout.dispatchInteractionEvent(new OM(s,c)),this._tooltipUpdateRequested||this.tooltip.clear()};if(r.type!="wheel"&&this._wheelInertia.cancel(),r.type=="mousemove")this._handlePicking(s.x,s.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=_M(c);this._wheelInertia.setMomentum(c.deltaY*(c.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",F(T({},u),{deltaMode:0,deltaX:0,deltaY:f}));a(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))}a(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(s=>{if(s instanceof Pe){if(s.mark.isPickingParticipant()){const a=s.mark.encoders.uniqueId.accessor;s.getCollector().visitData(c=>{a(c)==i&&(this._currentHover={mark:s.mark,datum:c,uniqueId:i})})}if(this._currentHover)return kn}}),this._currentHover){const s=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async a=>{var u;if(!s.isPickingParticipant())return;const c=s.properties.tooltip;if(c!==null){const f=(u=c==null?void 0:c.handler)!=null?u:"default",l=this.tooltipHandlers[f];if(!l)throw new Error("No such tooltip handler: "+f);return l(a,s,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 Rg({picking:!1},this._glHelper),this._pickingContext=new Rg({picking:!0},this._glHelper);const r=new NM({});e.render(new kM(this._renderingContext,this._pickingContext,r),bt.create(0,0,n.width,n.height)),this.layout=r.getLayout(),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 $M(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)}var LT="",e8="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";/**
1343
+ };`)},f=d=>{a||u(d);for(const[h,p]of a){const m=c(d,h);for(let y=0;y<p.length;y++)m[r[y]]=d[p[y]];this._propagate(m)}},l=d=>{u(d),f(d),this.handle=f};this.handle=l,this.beginBatch=d=>{Om(d)&&(this.handle=l),super.beginBatch(d)}}}class t8 extends ue{get behavior(){return dn}constructor(e){super(),this.params=e,this.buffer=[]}reset(){this.buffer=[]}handle(e){this.buffer.push(e)}complete(){var f;const e=this.params,n=e.as||["y0","y1"],r=e.sort?fd(e.sort.field,e.sort.order):void 0,i=e.field?J(e.field):()=>1,o=e.groupby.map(l=>J(l)),a=Ov(this.buffer,l=>o.map(d=>d(l)).join()).map(l=>l[1]);let s=l=>!0;if(e.baseField){const l=J(e.baseField);s=d=>l(d)!==null}let c,u;switch(e.offset){case"normalize":c=(l,d)=>l/d,u=(l,d)=>Jo(l,d);break;case"center":c=(l,d)=>l-d/2,u=(l,d)=>Jo(l,d);break;case"information":{const l=Math.log2((f=e.cardinality)!=null?f:4);c=(d,h)=>d/h,u=(d,h)=>{const m=Jo(d,x=>+!s(x)),y=Jo(d,h),g=y-m;let A=0;for(let x=0;x<d.length;x++){const C=d[x];if(s(C)){const b=h(C)/g;A-=b*Math.log2(b)}}return g/(l-(A+0))*(g/y)}}break;default:c=(l,d)=>l,u=(l,d)=>1}for(const l of a){r&&l.sort(r);const d=u(l,i);let h=0;for(const p of l){const m=h+i(p);s(p)&&(p[n[0]]=c(h,d),p[n[1]]=c(m,d),this._propagate(p),h=m)}}super.complete()}}class n8 extends ue{get behavior(){return Bt}constructor(e){var o,a;super();const n=J((o=e.field)!=null?o:"sequence"),[r,i]=(a=e.as)!=null?a:["pos","sequence"];this.handle=s=>{const c=Object.assign({},s,{[i]:"",[r]:0}),u=n(s);for(let f=0;f<u.length;f++){const l=Object.assign({},c);l[r]=f,l[i]=u.charAt(f),this._propagate(l)}}}}class r8 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=>J(o)),i=oi(this.buffer,...r);for(const[o,a]of Ml(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 i8="_uniqueId",bg=1e4,Ag=[null];class xg extends ue{get behavior(){return dn}constructor(e){var n;super(),this.params=e,this.as=(n=e.as)!=null?n:i8,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%bg==0&&(this._id=this._getBlock()*bg),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const e=Ag.length;return Ag[e]=this,this._blocks.push(e),this._usedBlocks++,e}}const wg={aggregate:r8,collect:Ur,coverage:RM,filterScoredLabels:GM,filter:HM,flattenCompressedExons:YM,flattenDelimited:_M,flattenSequence:n8,formula:XM,identifier:xg,linearizeGenomicCoordinate:yg,measureText:ZM,pileup:KM,project:JM,regexExtract:$M,regexFold:e8,sample:Pm,stack:t8};function o8(t,e){const n=wg[t.type];if(n)return new n(t,e);throw new Error("Unknown transform: "+t.type)}function a8(t){return"values"in t}class s8 extends $n{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=is(e[0]));else if(typeof e=="object")n=[e];else if(typeof e=="string")n=ch(e,og(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 c8(t){return"url"in t}class u8 extends $n{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=>Ai({baseURL:this.baseUrl}).load(o).catch(a=>{throw new Error(`Cannot fetch: ${this.baseUrl}${o}: ${a.message}`)}),i=(o,a)=>{try{const s=ch(o,og(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 l8(t){return"sequence"in t}class f8 extends $n{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 d8(t){return"dynamicSource"in t}class h8 extends $n{publishData(e){this.reset(),this.beginBatch({type:"file"});let n;for(const r of e)n||(n=is(r)),this._propagate(n(r));this.complete()}async load(){}}function Cg(t,e){if(a8(t))return new s8(t);if(c8(t))return new u8(t,e);if(l8(t))return new f8(t);if(d8(t))return new h8;throw new Error("Cannot figure out the data source type: "+JSON.stringify(t))}function p8(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(`,
1344
+ `)+" };");return n.properties=e,n}class Sg extends ue{get behavior(){return Bt}constructor(){super();const e=n=>{const r=p8(n);this.handle=i=>this._propagate(r(i)),this.handle(n)};this.handle=e,this.beginBatch=n=>{Om(n)&&(this.handle=e),super.beginBatch(n)}}}class Eg{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)}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 m8(t){return"name"in t}class g8 extends $n{constructor(e,n){super(),this.getNamedData=n,this.params=e}get identifier(){return this.params.name}_getValues(){const e=this.getNamedData(this.params.name);if(e)return e;throw new Error("Cannot find named data: "+this.params.name)}loadSynchronously(){const e=this._getValues();let n=r=>r;if(Array.isArray(e))e.length>0&&(n=is(e[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const r of e)this._propagate(n(r));this.complete()}async load(){this.loadSynchronously()}}function Dg(t,e){const n=[];let r;const i=e!=null?e:new Eg,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 h;try{h=o8(d,l)}catch(p){throw console.warn(p),new Error(`Cannot initialize "${d.type}" transform: ${p}`)}h.behavior&dn&&s(new Sg),s(h)}}const u=f=>{if(n.push(r),f.spec.data){const l=xM(f.spec.data)?f.getDynamicDataSource():m8(f.spec.data)?new g8(f.spec.data,f.context.getNamedData):Cg(f.spec.data,f.getBaseUrl());r=l,i.addDataSource(l,f)}if(f.spec.transform&&c(f.spec.transform,f),f instanceof Ae){if(!r)throw new Error("A unit view has no (inherited) data source");const l=y8(f);if(l){o.push(l.rewrite);for(const h of l.transforms)s(h)}f.mark.isPickingParticipant()&&s(new xg({type:"identifier"}));const d=new Ur({type:"collect",groupby:f.getFacetFields(),sort:v8(f,l==null?void 0:l.rewrittenEncoding)});a(d),i.addCollector(d,f)}gg(f.spec)};return u.postOrder=f=>{r=n.pop()},t.visit(u),o.forEach(f=>f()),i}function y8(t){var o,a,s,c;const e=[],n={},r=[];for(const[u,f]of Object.entries(t.getEncoding())){const l=u;Yi(l)&&ep(f)&&r.push({channel:l,chromPosDef:f})}const i=oi(r,u=>Er(u.channel),u=>u.chromPosDef.chrom);for(const[u,f]of i.entries())for(const[l,d]of f.entries()){const h=[],p=[],m=[];for(const{channel:y,chromPosDef:g}of d){const A=b=>b.replace(/[^A-Za-z0-9_]/g,""),x=["_linearized_",A(g.chrom),"_",A(g.pos)].join(""),C=U(T({},(s=(a=(o=t.spec.encoding)==null?void 0:o[y])!=null?a:t.getEncoding()[y])!=null?s:{}),{field:x});delete C.chrom,delete C.pos,!C.type&&g.type&&(C.type=g.type),n[y]=C,h.push(g.pos),m.push((c=g.offset)!=null?c:0),p.push(x)}e.push(new yg({type:"linearizeGenomicCoordinate",channel:u,chrom:l,pos:h,offset:m,as:p},t))}return e.length?{transforms:e,rewrittenEncoding:n,rewrite:()=>{t.spec.encoding=T(T({},t.spec.encoding),n),Dm(t.mark,"encoding")}}:void 0}function v8(t,e){var r;const n=T(T({},t.getEncoding()),e).x;if($e(n)&&(r=t.getScaleResolution("x"))!=null&&r.isZoomable()){if(Yn(n))return{field:n.field};if(!Qi(n))throw new Error("A zoomable x channel must be mapped to a field.")}}function b8(t,...e){let n=t;for(const o of e)n.addChild(o),n=o;let r;n instanceof Ur?r=n:(r=new Ur,n.addChild(r));let i;return t instanceof $n?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 Mg(t,e=void 0){if(t.parent!==e)return!1;for(const n of t.children)if(!Mg(n,t))return!1;return!0}function Tl(t,e=!1){if(t instanceof Ur&&(e=!0),t instanceof Sg)if(e)e=!1;else{const n=t.children[0];t.excise(),n&&Tl(n,e);return}t.behavior&Bt&&(e=!1);for(let n=0,r=t.children.length;n<r;n++)Tl(t.children[n],e||n<r-1)}function A8(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 x8(t){if(Tl(t),!Mg(t))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function w8(t){for(const e of t.dataSources)x8(e);A8(t)}function Tg(t){t.visit(n=>{n instanceof Ae&&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 Ae&&n.resolve("axis")}),t.visit(n=>n.onScalesResolved())}function C8(t){for(const e of Vi){const n=t.getScaleResolution(e);n&&!n.name&&n.isZoomable()&&(n.name=`${e}_at_root`)}}function S8(t){const e=[];return t.visit(n=>{if(n instanceof Ae){const r=n.getEncoding();for(const[i,o]of Object.entries(r))Yn(o)&&"type"in o&&e.push({view:n,channel:i,field:o.field,type:o.type});return ns}}),e}async function E8(t,e,n){var a;if(!t.import.url)throw new Error("Cannot import, not an import spec: "+JSON.stringify(t));const r=Ai({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}
1345
+ 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 Ig(t){const e=[];t.visit(n=>{if(n instanceof ng)return e.push(n),ns});for(const n of e){const r=n.context,i=await E8(n.spec,n.getBaseUrl(),r),o=r.createView(i,n.parent,n.name);n.parent.replaceChild(n,o),await Ig(o)}}function kg(t){const e=[];return t.visit(n=>{e.push(n)}),new Set([...Pv(e,n=>n.length,n=>n.name)].filter(([n,r])=>r==1&&n!==void 0).map(([n,r])=>n))}const D8=t=>!/^(layer|concat)\d+$/.test(t);class Ng{constructor(e){this.globalOptions=e}pushView(e,n){}popView(e){}renderMark(e,n){}}class Lg extends Ng{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=oi(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 M8 extends Ng{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 T8{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 I8{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 k8=t=>new Promise(e=>setTimeout(e,t));function os(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,h=m=>Math.max(0,Math.min(1,m)),p=m=>{n!=null&&n.aborted?o("aborted"):(t.onUpdate(d(f(h(l(m))))),m<s?e(p):(t.onUpdate(d(f(1))),i()))};e(p)});return t.delay?n!=null&&n.aborted?Promise.reject("aborted"):k8(t.delay).then(r):r()}class N8{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 os(T({requestAnimationFrame:n=>this.requestTransition(n)},e))}}function Bg(){const t=e=>e;return t.invert=e=>e,t.copy=Bg,t.invertRange=()=>{},t}class L8{constructor(e){this.genomes=new Map,this.genomeSpy=e}async initialize(e){const n=new rM(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}}}var B8="data:image/png;base64,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";const O8={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class P8{constructor(e){this._webGLHelper=e,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Mn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:ul(vg),texture:this._createTextureNow(B8)}}async waitUntilReady(){await Promise.all(this._promises)}getFont(e,n="normal",r="regular"){if(re(r)&&(r=O8[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=z8(r,n),o=this.fontRepository+Og(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=>ul(r)),this._fontPromises.set(e,n)),n}_loadMetadata(e){const n=Og(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=>F8(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)=>{Ji(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=Ji(n,{src:e,min:n.LINEAR},(s,c,u)=>{s?a(s):o(c)})});return this._promises.push(i),r}}function Og(t){return t.toLowerCase().replaceAll(/[^\w]/g,"")}function F8(t){const e=t.split(`
1346
+ `),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 z8(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 R8(t,e){const n=[];let r;for(const i of t.split(`
1347
+ `))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 j8{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=lv([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 U8(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 as(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 Pg=new Map;async function G8(t,e,n){var o;const r=t.symbol;let i=(o=Pg.get(r))!=null?o:await V8(t.symbol);return i?(Pg.set(r,i),D`<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 H8(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 Q8=as(H8,500);function V8(t){return Q8(t)}const Y8=he(".4~r"),_8=he(".4~e");function Fg(t){return t===null?D`<span class="na">NA</span>`:re(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)?_8(t):Y8(t):Yo(t)?t?"True":"False":"?"+typeof t+" "+t}async function W8(t,e,n){const r=(s,c)=>{var u;for(const[f,l]of Object.entries(e.encoders))if((u=l==null?void 0:l.accessor)!=null&&u.fields.includes(s))switch(f){case"color":case"fill":case"stroke":return D`<span class="color-legend" style="${`background-color: ${l(c)}`}"></span>`}return""},i=D`<table class="attributes">${Object.entries(t).filter(([s,c])=>!s.startsWith("_")).map(([s,c])=>D`<tr><th>${s}</th><td>${Fg(c)} ${r(s,t)}</td></tr>`)}</table>`,o=e.unitView.getTitleText(),a=o?D`<div class="title"><strong>${o}</strong></div>`:"";return D`${a}${i}`}class X8 extends mg{constructor(e,n){super({vconcat:[]},e,void 0,"implicitRoot",1),n.parent=this,this.appendChild(n)}}q("index",Nc,["continuous"]),q("locus",zA,["continuous"]),q("null",Bg,[]),sh("fasta",R8);class zg{constructor(e,n,r={}){var i;this.container=e,this.spec=n,this.accessorFactory=new O4,this.viewFactory=new OM,this.namedDataProviders=[],this.animator=new N8(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=o=>o.isVisibleInSpec(),this._renderingContext=void 0,this._pickingContext=void 0,this._dirtyPickingBuffer=!1,this._currentHover=void 0,this._wheelInertia=new j8(this.animator),this._keyboardListeners=new Map,this._eventListeners=new Map,this.tooltipHandlers=T({default:W8,refseqgene:G8},(i=r.tooltipHandlers)!=null?i:{}),this.viewRoot=void 0}registerNamedDataProvider(e){this.namedDataProviders.unshift(e)}getNamedData(e){for(const n of this.namedDataProviders){const r=n(e);if(r)return r}}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 XE(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 hw(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 L8(this),await this.genomeStore.initialize(this.spec.genome));const e=this,n={dataFlow:new Eg,accessorFactory:this.accessorFactory,glHelper:this._glHelper,animator:this.animator,genomeStore:this.genomeStore,fontManager:new P8(this._glHelper),requestLayoutReflow:()=>{},updateTooltip:this.updateTooltip.bind(this),getNamedData:this.getNamedData.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 Ig(this.viewRoot),(this.viewRoot instanceof Ae||this.viewRoot instanceof Ot)&&(this.viewRoot=new X8(n,this.viewRoot)),Tg(this.viewRoot),C8(this.viewRoot),this._glHelper.invalidateSize();const i=[];this.viewRoot.visit(s=>{s instanceof Ae&&i.push(s)});const o=Dg(this.viewRoot,n.dataFlow);w8(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=>to(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),Z8(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 I8(r.clientX-o.left-e.clientLeft,r.clientY-o.top-e.clientTop),s=c=>{this.viewRoot.propagateInteractionEvent(new T8(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=U8(c);this._wheelInertia.setMomentum(c.deltaY*(c.deltaMode?80:1),f=>{const l=new WheelEvent("wheel",U(T({},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 Ae){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 zr}}),this._currentHover){const a=this._currentHover.mark;this.updateTooltip(this._currentHover.datum,async s=>{var u;if(!a.isPickingParticipant())return;const c=a.properties.tooltip;if(c!==null){const f=(u=c==null?void 0:c.handler)!=null?u:"default",l=this.tooltipHandlers[f];if(!l)throw new Error("No such tooltip handler: "+f);return l(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 Lg({picking:!1},this._glHelper),this._pickingContext=new Lg({picking:!0},this._glHelper),e.render(new M8(this._renderingContext,this._pickingContext),hn.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 Ae&&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 Z8(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)}var Vk="",q8="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDY0IDY0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS41OyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjEwMjIxLDAuMDA2ODM4MjUsLTAuMDA2NzEzNiwwLjEwMDM0NywtOC4wMzQyNCwtMTMuMjIyMikiPgogICAgICAgIDxwYXRoIGQ9Ik0yMDguNjI5LDU0OC4xN0MyMDguNjI5LDU0OC4xNyAyMTkuNzY4LDU5NC4zODkgMjM5LjgxNCw2MTkuMjIyQzI1OS44Niw2NDQuMDU1IDMxOS4xMTksNjgwLjgzMSAzMTkuMTE5LDY4MC44MzFDMzE5LjExOSw2ODAuODMxIDM4NS41NTcsNjIyLjkxNSA0MzcuODcsNDk4LjM0NkM0MzcuODcsNDk4LjM0NiA0NTYuMDIxLDQ5OS4yMzYgNDczLjgwOCw0ODYuNDQ2QzQ5MS41OTQsNDczLjY1NiA0OTAuMjM5LDQ3OC41MzQgNDk0Ljg4Myw0NjEuNjJDNDk0Ljg4Myw0NjEuNjIgNTUxLjg0OCw0NjcuOTM3IDYyNS44MjYsNDUxLjg2M0M2NjcuNjM0LDQ0Mi43NzggNzEwLjIzOCw0MjUuNjQ5IDc0Ny4zODIsMzkzLjE0MkM3NDcuMzgyLDM5My4xNDIgNzIxLjk5MiwzNjAuMjQ0IDY4OS40MjIsMjkxLjQ1QzY3Ny4wMjksMjY1LjI3NSA2NDcuNTE4LDI1Ny4wOTggNTkwLjc0NywyMDMuMzA5TDQzOC4wODMsMzkxLjI3M0wyMDguNjI5LDU0OC4xN1oiIHN0eWxlPSJmaWxsLW9wYWNpdHk6MC4xMTsiLz4KICAgIDwvZz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDgxOTg1LC0wLjA1ODI0OTMsMC4wNTgyNDkzLDAuMDgxOTg1LC00MC40NzU0LDM0Ljc2NjgpIj4KICAgICAgICA8cGF0aCBkPSJNNTYxLjU4OCwzNDkuMTU1QzU2MS41ODgsMzQ5LjE1NSA1MTYuMjk3LDI3MS4zNDEgMzI4Ljg0MSwyNTIuMDQ0QzMyOC44NDEsMjUyLjA0NCAzMDIuMzQyLDMyNS4xODkgMzA3LjY4NiwzNjguMDU2QzMxMy4wMzEsNDEwLjkyMiAzMDMuMDAxLDQ1Ni4xNDcgMzI5LjEzMiw1MDEuMTc0QzMyOS4xMzIsNTAxLjE3NCA0NDMuMTE0LDUwNi43NDMgNTU0LjY0OSw0MjguNDY5TDYyOS4yMDQsNDMyLjExMkM2MjkuMjA0LDQzMi4xMTIgNjczLjc1NSw1MzQuMzUxIDg1Ni45NjQsNTU0LjM3NUM4NTYuOTY0LDU1NC4zNzUgODg2LjcxNyw0OTEuNzY4IDg3OS4xOTMsNDE3LjQ3OEM4NzEuMjExLDMzOC42NzMgODcxLjcxNiwyOTMuNDQzIDg3MS43MTYsMjkzLjQ0M0M4NzEuNzE2LDI5My40NDMgNzc1LjQ4NSwyODMuOTI4IDYzNS40MTgsMzYxLjc5NUw1NjEuNTg4LDM0OS4xNTVaIiBzdHlsZT0iZmlsbDpyZ2IoMTI3LDE4NywyMjEpOyIvPgogICAgICAgIDxjbGlwUGF0aCBpZD0iX2NsaXAxIj4KICAgICAgICAgICAgPHBhdGggZD0iTTU2MS41ODgsMzQ5LjE1NUM1NjEuNTg4LDM0OS4xNTUgNTE2LjI5NywyNzEuMzQxIDMyOC44NDEsMjUyLjA0NEMzMjguODQxLDI1Mi4wNDQgMzAyLjM0MiwzMjUuMTg5IDMwNy42ODYsMzY4LjA1NkMzMTMuMDMxLDQxMC45MjIgMzAzLjAwMSw0NTYuMTQ3IDMyOS4xMzIsNTAxLjE3NEMzMjkuMTMyLDUwMS4xNzQgNDQzLjExNCw1MDYuNzQzIDU1NC42NDksNDI4LjQ2OUw2MjkuMjA0LDQzMi4xMTJDNjI5LjIwNCw0MzIuMTEyIDY3My43NTUsNTM0LjM1MSA4NTYuOTY0LDU1NC4zNzVDODU2Ljk2NCw1NTQuMzc1IDg4Ni43MTcsNDkxLjc2OCA4NzkuMTkzLDQxNy40NzhDODcxLjIxMSwzMzguNjczIDg3MS43MTYsMjkzLjQ0MyA4NzEuNzE2LDI5My40NDNDODcxLjcxNiwyOTMuNDQzIDc3NS40ODUsMjgzLjkyOCA2MzUuNDE4LDM2MS43OTVMNTYxLjU4OCwzNDkuMTU1WiIvPgogICAgICAgIDwvY2xpcFBhdGg+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI19jbGlwMSkiPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1ODYzNywwLjQ1ODkyLC0wLjQ1ODkyLDAuNzU4NjM3LDQyNS42MzUsLTEyMS4yMTMpIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zODYuODczLDM5Ny4yNDFDMzcxLjM0NSwzODMuNjI4IDMzNS4xMzgsMzc0Ljc4MiAyOTAuNjQ0LDM4MC41NDNDMjQ2LjE0OSwzODYuMzA0IDE5Ni44MjcsNDAyLjI2NiAxNzguODAyLDQxMi4wNjVDMTY4LjIwMiw0MTcuODI4IDE1MS40OTQsNDI5LjM1NCAxNTAuNjgyLDQzOS4zMzRDMTQ5LjUyNyw0NTMuNTI4IDE1My41OTMsNDc3LjA2NiAxNjUuNjI1LDQ5MS4yODRDMTcxLjY5LDQ5OC40NTEgMTc5LjkyNyw1MDMuNDQ1IDE5My44MzgsNTA1LjQyM0MyMTEuNzAxLDUwNy45NjMgMjUyLjcxNCw0ODAuNjI3IDI3NS4zOTksNDY5LjIyQzI5OS4zMzIsNDU3LjE4NyAzMTMuOTgxLDQ1NC41NiAzMzguMzg2LDQ0Ny4wMTRDMzM4LjM4Niw0NDcuMDE0IDI5MS4zNDYsNDc4LjU4NyAyNzAuMjA1LDQ5NC4zOTNDMjM5LjYxLDUxNy4yNjggMjE4LjU3NSw1MjIuNDQ0IDIxMi44NTksNTM5Ljg5N0MyMDkuNzY2LDU0OS4zNCAyMTIuMjM3LDU2Ny43NjcgMjIwLjM1NCw1NzcuNTM4QzIyOS40MjcsNTg4LjQ2MSAyMzMuMTk3LDU5NS4wNjkgMjU0LjU5MSw1OTcuNjI0QzI2Ny4zMDMsNTk5LjE0MyAyNzYuNjg1LDU5OC44MDIgMzE0LjM3LDU2OC45NUMzMzYuMDYsNTUxLjc2NyAzNzAuMjk3LDUwOS44MTcgMzgxLjQxMiw0OTQuNjE2QzM5Ny41ODEsNDcyLjUwNiA0MDUuMTY1LDQ1MS40NjIgNDAyLjY1Niw0MzUuMDRDMzk5LjA0NSw0MTEuMzkxIDM5NC4yNTksNDAzLjcxNiAzODYuODczLDM5Ny4yNDFaIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4KICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1MjE0NSwwLjQ1NDk5MywtMC40NTQ5OTMsMC43NTIxNDUsNDY4LjM2LC0xMDguMjkzKSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjczMywzNzguOTM0QzQ3OS4zMywzNjcuODg2IDQ2Ny4wOTIsMzUwLjQ1MiA0ODMuODg2LDMyNS4yMDVDNTAyLjE3MiwyOTcuNzE3IDUxNC44OTgsMjgwLjkzOCA1MjguMTE3LDI2NC42MzJDNTQxLjMzNSwyNDguMzI2IDU3NC43OTMsMjE4LjQ0NyA1ODcuNzM5LDIxMi41M0M2MDAuNjg0LDIwNi42MTMgNjIxLjAyNiwyMDMuODUyIDYzMS44ODksMjEyLjg0MUM2NDIuODc0LDIyMS45MyA2NDguNDE2LDIzMy4zNzcgNjU0LjkyLDI0NS40NzhDNjYyLjMzMSwyNTkuMjY3IDY2Ny4zMTgsMjc0LjgwOCA2NTYuNTE4LDI4OC4yNzhDNjQxLjA5MywzMDcuNTE1IDYyMi4yNDIsMzA1LjI5NCA1OTQuOTEyLDMxOS44NDRDNTY3LjI0NCwzMzQuNTczIDU1Mi42NDQsMzQyLjk0MyA1MzkuMjQ0LDM1NS43MDNDNTM5LjI0NCwzNTUuNzAzIDU5MS40MzEsMzM0LjExNCA2MjEuMjI5LDMyNC40NzRDNjUxLjAyNywzMTQuODMzIDY4MC45NTIsMzA0LjQ2MSA2OTUuOTk1LDMxNS45NzVDNzExLjAzOCwzMjcuNDkgNzEwLjYzMSwzMzEuNDYzIDcxNC40MjUsMzQ3LjE4N0M3MTkuMTA3LDM2Ni41OSA3MDcuMjMxLDM4NS4xNjUgNjk0LjI5NCwzOTUuODM4QzY4MS4zNTYsNDA2LjUxIDY1OS45NTgsNDExLjc1NiA2MzYuODc1LDQxNi44NTJDNjA2LjQyLDQyMy41NzYgNTQwLjI3OCw0MzEuOTE3IDUxMi44MTksNDE5LjM2NkM0ODUuMzYxLDQwNi44MTUgNDg4LjQ4OCwzODYuNjEzIDQ4NC43MzMsMzc4LjkzNFoiIHN0eWxlPSJmaWxsOndoaXRlOyIvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik01NjEuNTg4LDM0OS4xNTVDNTYxLjU4OCwzNDkuMTU1IDUxNi4yOTcsMjcxLjM0MSAzMjguODQxLDI1Mi4wNDRDMzI4Ljg0MSwyNTIuMDQ0IDMwMi4zNDIsMzI1LjE4OSAzMDcuNjg2LDM2OC4wNTZDMzEzLjAzMSw0MTAuOTIyIDMwMy4wMDEsNDU2LjE0NyAzMjkuMTMyLDUwMS4xNzRDMzI5LjEzMiw1MDEuMTc0IDQ0My4xMTQsNTA2Ljc0MyA1NTQuNjQ5LDQyOC40NjlMNjI5LjIwNCw0MzIuMTEyQzYyOS4yMDQsNDMyLjExMiA2NzMuNzU1LDUzNC4zNTEgODU2Ljk2NCw1NTQuMzc1Qzg1Ni45NjQsNTU0LjM3NSA4ODYuNzE3LDQ5MS43NjggODc5LjE5Myw0MTcuNDc4Qzg3MS4yMTEsMzM4LjY3MyA4NzEuNzE2LDI5My40NDMgODcxLjcxNiwyOTMuNDQzQzg3MS43MTYsMjkzLjQ0MyA3NzUuNDg1LDI4My45MjggNjM1LjQxOCwzNjEuNzk1TDU2MS41ODgsMzQ5LjE1NVoiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDoxNi41N3B4OyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4xMDAyOTgsLTAuMDA3NDA0ODgsMC4wMDc0MDQ4OCwwLjEwMDI5OCwtMTUuNzQ1NywtNS4xNzUyOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0zODQuOTE2LDM4NS40NTlDMzg0LjkxNiwzODUuNDU5IDQzMC43ODEsMzQ3Ljg2OCA0NTAuMDI3LDM1MC4wOTNDNDcxLjY4NSwzNTIuNTk2IDQ5MC40OSw0MDcuNzQ3IDQ5MC4yMDgsNDI0LjQxNkM0ODkuOTI3LDQ0MS4wODUgNDQyLjk0OCw0NjkuODY2IDQyMi41MzcsNDY2LjI0QzQyMi41MzcsNDY2LjI0IDQyNS41MjUsNDQyLjEyOSA0MTIuMTE0LDQxMy4zMzVDMzk4LjcwMiwzODQuNTQgMzg0LjkxNiwzODUuNDU5IDM4NC45MTYsMzg1LjQ1OVoiIHN0eWxlPSJmaWxsOnJnYigxMjcsMTg3LDIyMSk7Ii8+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJfY2xpcDIiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzg0LjkxNiwzODUuNDU5QzM4NC45MTYsMzg1LjQ1OSA0MzAuNzgxLDM0Ny44NjggNDUwLjAyNywzNTAuMDkzQzQ3MS42ODUsMzUyLjU5NiA0OTAuNDksNDA3Ljc0NyA0OTAuMjA4LDQyNC40MTZDNDg5LjkyNyw0NDEuMDg1IDQ0Mi45NDgsNDY5Ljg2NiA0MjIuNTM3LDQ2Ni4yNEM0MjIuNTM3LDQ2Ni4yNCA0MjUuNTI1LDQ0Mi4xMjkgNDEyLjExNCw0MTMuMzM1QzM5OC43MDIsMzg0LjU0IDM4NC45MTYsMzg1LjQ1OSAzODQuOTE2LDM4NS40NTlaIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8ZyBjbGlwLXBhdGg9InVybCgjX2NsaXAyKSI+CiAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuOTA5MDY5LDMuNjc2NDFlLTE3LC0zLjc5ODE4ZS0xNywwLjg1ODUyLDM3LjA1MSw1Mi4xODI5KSI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDEzLjI4Miw0MDIuNjk3QzQzMC43Nyw0MjEuNTggNDIzLjMwNyw0NDguNDI2IDQ0MS42ODMsNDQ2LjEzN0M0NjMuNDA5LDQ0My40MzEgNDcyLjYwNCw0MzAuMzU2IDQ3My4zMTYsNDEzLjQwMkM0NzQuMDI4LDM5Ni40NDggNDcyLjI0NSwzOTMuOTExIDQ2Ni4xNzIsMzc1LjMyMUM0NjAuMDk5LDM1Ni43MzEgNDQ3Ljk1MywzNTIuMTc2IDQyMi44NDIsMzU3LjE3OUM0MDEuOTU3LDM2MS4zMzkgNDA1LjAzOSwzNjAuMjE1IDM5OC43MzUsMzY3LjIyOEMzOTIuNDMsMzc0LjI0MiAzODQuMzE1LDM5My4xODIgMzg0LjMxNSwzOTMuMTgyQzM4NC4zMTUsMzkzLjE4MiAzOTIuNzE1LDM4MC40OTIgNDEzLjI4Miw0MDIuNjk3WiIgc3R5bGU9ImZpbGw6d2hpdGU7Ii8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPHBhdGggZD0iTTM4NC45MTYsMzg1LjQ1OUMzODQuOTE2LDM4NS40NTkgNDMwLjc4MSwzNDcuODY4IDQ1MC4wMjcsMzUwLjA5M0M0NzEuNjg1LDM1Mi41OTYgNDkwLjQ5LDQwNy43NDcgNDkwLjIwOCw0MjQuNDE2QzQ4OS45MjcsNDQxLjA4NSA0NDIuOTQ4LDQ2OS44NjYgNDIyLjUzNyw0NjYuMjRDNDIyLjUzNyw0NjYuMjQgNDI1LjUyNSw0NDIuMTI5IDQxMi4xMTQsNDEzLjMzNUMzOTguNzAyLDM4NC41NCAzODQuOTE2LDM4NS40NTkgMzg0LjkxNiwzODUuNDU5WiIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6YmxhY2s7c3Ryb2tlLXdpZHRoOjE2LjU3cHg7Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=";/**
1556
1348
  * @license
1557
1349
  * Copyright 2019 Google LLC
1558
1350
  * SPDX-License-Identifier: BSD-3-Clause
1559
- */const Ku=window.ShadowRoot&&(window.ShadyCSS===void 0||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Vg=Symbol(),_g=new Map;class t8{constructor(e,n){if(this._$cssResult$=!0,n!==Vg)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e}get styleSheet(){let e=_g.get(this.cssText);return Ku&&e===void 0&&(_g.set(this.cssText,e=new CSSStyleSheet),e.replaceSync(this.cssText)),e}toString(){return this.cssText}}const n8=t=>new t8(typeof t=="string"?t:t+"",Vg),r8=(t,e)=>{Ku?t.adoptedStyleSheets=e.map(n=>n instanceof CSSStyleSheet?n:n.styleSheet):e.forEach(n=>{const r=document.createElement("style"),i=window.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=n.cssText,t.appendChild(r)})},Yg=Ku?t=>t:t=>t instanceof CSSStyleSheet?(e=>{let n="";for(const r of e.cssRules)n+=r.cssText;return n8(n)})(t):t;/**
1351
+ */const Il=window.ShadowRoot&&(window.ShadyCSS===void 0||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Rg=Symbol(),jg=new Map;class K8{constructor(e,n){if(this._$cssResult$=!0,n!==Rg)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e}get styleSheet(){let e=jg.get(this.cssText);return Il&&e===void 0&&(jg.set(this.cssText,e=new CSSStyleSheet),e.replaceSync(this.cssText)),e}toString(){return this.cssText}}const J8=t=>new K8(typeof t=="string"?t:t+"",Rg),$8=(t,e)=>{Il?t.adoptedStyleSheets=e.map(n=>n instanceof CSSStyleSheet?n:n.styleSheet):e.forEach(n=>{const r=document.createElement("style"),i=window.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=n.cssText,t.appendChild(r)})},Ug=Il?t=>t:t=>t instanceof CSSStyleSheet?(e=>{let n="";for(const r of e.cssRules)n+=r.cssText;return J8(n)})(t):t;/**
1560
1352
  * @license
1561
1353
  * Copyright 2017 Google LLC
1562
1354
  * SPDX-License-Identifier: BSD-3-Clause
1563
- */var Ju;const Wg=window.reactiveElementPolyfillSupport,$u={toAttribute(t,e){switch(e){case Boolean:t=t?"":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}},Xg=(t,e)=>e!==t&&(e==e||t==t),el={attribute:!0,type:String,converter:$u,reflect:!1,hasChanged:Xg};class br extends HTMLElement{constructor(){super(),this._$Et=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Ei=null,this.o()}static addInitializer(e){var n;(n=this.l)!==null&&n!==void 0||(this.l=[]),this.l.push(e)}static get observedAttributes(){this.finalize();const e=[];return this.elementProperties.forEach((n,r)=>{const i=this._$Eh(r,n);i!==void 0&&(this._$Eu.set(i,r),e.push(i))}),e}static createProperty(e,n=el){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)||el}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._$Eu=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(Yg(i))}else e!==void 0&&n.push(Yg(e));return n}static _$Eh(e,n){const r=n.attribute;return r===!1?void 0:typeof r=="string"?r:typeof e=="string"?e.toLowerCase():void 0}o(){var e;this._$Ev=new Promise(n=>this.enableUpdating=n),this._$AL=new Map,this._$Ep(),this.requestUpdate(),(e=this.constructor.l)===null||e===void 0||e.forEach(n=>n(this))}addController(e){var n,r;((n=this._$Em)!==null&&n!==void 0?n:this._$Em=[]).push(e),this.renderRoot!==void 0&&this.isConnected&&((r=e.hostConnected)===null||r===void 0||r.call(e))}removeController(e){var n;(n=this._$Em)===null||n===void 0||n.splice(this._$Em.indexOf(e)>>>0,1)}_$Ep(){this.constructor.elementProperties.forEach((e,n)=>{this.hasOwnProperty(n)&&(this._$Et.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 r8(n,this.constructor.elementStyles),n}connectedCallback(){var e;this.renderRoot===void 0&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(e=this._$Em)===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._$Em)===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)}_$Eg(e,n,r=el){var i,o;const s=this.constructor._$Eh(e,r);if(s!==void 0&&r.reflect===!0){const a=((o=(i=r.converter)===null||i===void 0?void 0:i.toAttribute)!==null&&o!==void 0?o:$u.toAttribute)(n,r.type);this._$Ei=e,a==null?this.removeAttribute(s):this.setAttribute(s,a),this._$Ei=null}}_$AK(e,n){var r,i,o;const s=this.constructor,a=s._$Eu.get(e);if(a!==void 0&&this._$Ei!==a){const c=s.getPropertyOptions(a),u=c.converter,f=(o=(i=(r=u)===null||r===void 0?void 0:r.fromAttribute)!==null&&i!==void 0?i:typeof u=="function"?u:null)!==null&&o!==void 0?o:$u.fromAttribute;this._$Ei=a,this[a]=f(n,c.type),this._$Ei=null}}requestUpdate(e,n,r){let i=!0;e!==void 0&&(((r=r||this.constructor.getPropertyOptions(e)).hasChanged||Xg)(this[e],n)?(this._$AL.has(e)||this._$AL.set(e,n),r.reflect===!0&&this._$Ei!==e&&(this._$ES===void 0&&(this._$ES=new Map),this._$ES.set(e,r))):i=!1),!this.isUpdatePending&&i&&(this._$Ev=this._$EC())}async _$EC(){this.isUpdatePending=!0;try{await this._$Ev}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._$Et&&(this._$Et.forEach((i,o)=>this[o]=i),this._$Et=void 0);let n=!1;const r=this._$AL;try{n=this.shouldUpdate(r),n?(this.willUpdate(r),(e=this._$Em)===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._$EU()}catch(i){throw n=!1,this._$EU(),i}n&&this._$AE(r)}willUpdate(e){}_$AE(e){var n;(n=this._$Em)===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)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Ev}shouldUpdate(e){return!0}update(e){this._$ES!==void 0&&(this._$ES.forEach((n,r)=>this._$Eg(r,this[r],n)),this._$ES=void 0),this._$EU()}updated(e){}firstUpdated(e){}}br.finalized=!0,br.elementProperties=new Map,br.elementStyles=[],br.shadowRootOptions={mode:"open"},Wg==null||Wg({ReactiveElement:br}),((Ju=globalThis.reactiveElementVersions)!==null&&Ju!==void 0?Ju:globalThis.reactiveElementVersions=[]).push("1.0.1");/**
1355
+ */var kl;const Gg=window.trustedTypes,e5=Gg?Gg.emptyScript:"",Hg=window.reactiveElementPolyfillSupport,Nl={toAttribute(t,e){switch(e){case Boolean:t=t?e5: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}},Qg=(t,e)=>e!==t&&(e==e||t==t),Ll={attribute:!0,type:String,converter:Nl,reflect:!1,hasChanged:Qg};class Gr extends HTMLElement{constructor(){super(),this._$Et=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Ei=null,this.o()}static addInitializer(e){var n;(n=this.l)!==null&&n!==void 0||(this.l=[]),this.l.push(e)}static get observedAttributes(){this.finalize();const e=[];return this.elementProperties.forEach((n,r)=>{const i=this._$Eh(r,n);i!==void 0&&(this._$Eu.set(i,r),e.push(i))}),e}static createProperty(e,n=Ll){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)||Ll}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._$Eu=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(Ug(i))}else e!==void 0&&n.push(Ug(e));return n}static _$Eh(e,n){const r=n.attribute;return r===!1?void 0:typeof r=="string"?r:typeof e=="string"?e.toLowerCase():void 0}o(){var e;this._$Ep=new Promise(n=>this.enableUpdating=n),this._$AL=new Map,this._$Em(),this.requestUpdate(),(e=this.constructor.l)===null||e===void 0||e.forEach(n=>n(this))}addController(e){var n,r;((n=this._$Eg)!==null&&n!==void 0?n:this._$Eg=[]).push(e),this.renderRoot!==void 0&&this.isConnected&&((r=e.hostConnected)===null||r===void 0||r.call(e))}removeController(e){var n;(n=this._$Eg)===null||n===void 0||n.splice(this._$Eg.indexOf(e)>>>0,1)}_$Em(){this.constructor.elementProperties.forEach((e,n)=>{this.hasOwnProperty(n)&&(this._$Et.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 $8(n,this.constructor.elementStyles),n}connectedCallback(){var e;this.renderRoot===void 0&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(e=this._$Eg)===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._$Eg)===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)}_$ES(e,n,r=Ll){var i,o;const a=this.constructor._$Eh(e,r);if(a!==void 0&&r.reflect===!0){const s=((o=(i=r.converter)===null||i===void 0?void 0:i.toAttribute)!==null&&o!==void 0?o:Nl.toAttribute)(n,r.type);this._$Ei=e,s==null?this.removeAttribute(a):this.setAttribute(a,s),this._$Ei=null}}_$AK(e,n){var r,i,o;const a=this.constructor,s=a._$Eu.get(e);if(s!==void 0&&this._$Ei!==s){const c=a.getPropertyOptions(s),u=c.converter,f=(o=(i=(r=u)===null||r===void 0?void 0:r.fromAttribute)!==null&&i!==void 0?i:typeof u=="function"?u:null)!==null&&o!==void 0?o:Nl.fromAttribute;this._$Ei=s,this[s]=f(n,c.type),this._$Ei=null}}requestUpdate(e,n,r){let i=!0;e!==void 0&&(((r=r||this.constructor.getPropertyOptions(e)).hasChanged||Qg)(this[e],n)?(this._$AL.has(e)||this._$AL.set(e,n),r.reflect===!0&&this._$Ei!==e&&(this._$EC===void 0&&(this._$EC=new Map),this._$EC.set(e,r))):i=!1),!this.isUpdatePending&&i&&(this._$Ep=this._$E_())}async _$E_(){this.isUpdatePending=!0;try{await this._$Ep}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._$Et&&(this._$Et.forEach((i,o)=>this[o]=i),this._$Et=void 0);let n=!1;const r=this._$AL;try{n=this.shouldUpdate(r),n?(this.willUpdate(r),(e=this._$Eg)===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._$EU()}catch(i){throw n=!1,this._$EU(),i}n&&this._$AE(r)}willUpdate(e){}_$AE(e){var n;(n=this._$Eg)===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)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Ep}shouldUpdate(e){return!0}update(e){this._$EC!==void 0&&(this._$EC.forEach((n,r)=>this._$ES(r,this[r],n)),this._$EC=void 0),this._$EU()}updated(e){}firstUpdated(e){}}Gr.finalized=!0,Gr.elementProperties=new Map,Gr.elementStyles=[],Gr.shadowRootOptions={mode:"open"},Hg==null||Hg({ReactiveElement:Gr}),((kl=globalThis.reactiveElementVersions)!==null&&kl!==void 0?kl:globalThis.reactiveElementVersions=[]).push("1.3.2");/**
1564
1356
  * @license
1565
1357
  * Copyright 2017 Google LLC
1566
1358
  * SPDX-License-Identifier: BSD-3-Clause
1567
- */var tl,nl;class kt extends br{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=Re(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 xe}}kt.finalized=!0,kt._$litElement$=!0,(tl=globalThis.litElementHydrateSupport)===null||tl===void 0||tl.call(globalThis,{LitElement:kt});const qg=globalThis.litElementPolyfillSupport;qg==null||qg({LitElement:kt}),((nl=globalThis.litElementVersions)!==null&&nl!==void 0?nl:globalThis.litElementVersions=[]).push("3.0.1");/**
1359
+ */var Bl,Ol;class Ft extends Gr{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=Ge(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 Ee}}Ft.finalized=!0,Ft._$litElement$=!0,(Bl=globalThis.litElementHydrateSupport)===null||Bl===void 0||Bl.call(globalThis,{LitElement:Ft});const Vg=globalThis.litElementPolyfillSupport;Vg==null||Vg({LitElement:Ft}),((Ol=globalThis.litElementVersions)!==null&&Ol!==void 0?Ol:globalThis.litElementVersions=[]).push("3.2.0");/**
1568
1360
  * @license
1569
1361
  * Copyright 2017 Google LLC
1570
1362
  * SPDX-License-Identifier: BSD-3-Clause
1571
- */const Ot={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},xr=t=>(...e)=>({_$litDirective$:t,values:e});class Hi{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)}}/**
1363
+ */const zt={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},Hr=t=>(...e)=>({_$litDirective$:t,values:e});class uo{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)}}/**
1572
1364
  * @license
1573
1365
  * Copyright 2018 Google LLC
1574
1366
  * SPDX-License-Identifier: BSD-3-Clause
1575
- */const i8=xr(class extends Hi{constructor(t){var e;if(super(t),t.type!==Ot.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.st===void 0){this.st=new Set,t.strings!==void 0&&(this.et=new Set(t.strings.join(" ").split(/\s/).filter(o=>o!=="")));for(const o in e)e[o]&&!((n=this.et)===null||n===void 0?void 0:n.has(o))&&this.st.add(o);return this.render(e)}const i=t.element.classList;this.st.forEach(o=>{o in e||(i.remove(o),this.st.delete(o))});for(const o in e){const s=!!e[o];s===this.st.has(o)||((r=this.et)===null||r===void 0?void 0:r.has(o))||(s?(i.add(o),this.st.add(o)):(i.remove(o),this.st.delete(o)))}return xe}});/*!
1576
- * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
1367
+ */const t5=Hr(class extends uo{constructor(t){var e;if(super(t),t.type!==zt.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.et===void 0){this.et=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.et.add(o);return this.render(e)}const i=t.element.classList;this.et.forEach(o=>{o in e||(i.remove(o),this.et.delete(o))});for(const o in e){const a=!!e[o];a===this.et.has(o)||((r=this.st)===null||r===void 0?void 0:r.has(o))||(a?(i.add(o),this.et.add(o)):(i.remove(o),this.et.delete(o)))}return Ee}});/*!
1368
+ * Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com
1577
1369
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
1578
- */var o8={prefix:"fas",iconName:"arrows-alt-v",icon:[256,512,[],"f338","M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z"]},Zg={prefix:"fas",iconName:"bookmark",icon:[384,512,[],"f02e","M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z"]},s8={prefix:"fas",iconName:"check",icon:[512,512,[],"f00c","M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"]},a8={prefix:"fas",iconName:"chevron-down",icon:[448,512,[],"f078","M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"]},Kg={prefix:"fas",iconName:"circle",icon:[512,512,[],"f111","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"]},c8={prefix:"fas",iconName:"ellipsis-h",icon:[512,512,[],"f141","M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"]},u8={prefix:"fas",iconName:"ellipsis-v",icon:[192,512,[],"f142","M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z"]},l8={prefix:"fas",iconName:"exclamation-circle",icon:[512,512,[],"f06a","M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"]},f8={prefix:"fas",iconName:"expand-arrows-alt",icon:[448,512,[],"f31e","M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z"]},Qi={prefix:"fas",iconName:"filter",icon:[512,512,[],"f0b0","M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z"]},Jg={prefix:"fas",iconName:"info-circle",icon:[512,512,[],"f05a","M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"]},d8={prefix:"fas",iconName:"medal",icon:[512,512,[],"f5a2","M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z"]},Vi={prefix:"fas",iconName:"object-group",icon:[512,512,[],"f247","M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z"]},h8={prefix:"fas",iconName:"pen",icon:[512,512,[],"f304","M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z"]},p8={prefix:"fas",iconName:"question-circle",icon:[512,512,[],"f059","M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z"]},g8={prefix:"fas",iconName:"redo",icon:[512,512,[],"f01e","M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z"]},rl={prefix:"fas",iconName:"share",icon:[512,512,[],"f064","M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z"]},m8={prefix:"fas",iconName:"sliders-h",icon:[512,512,[],"f1de","M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z"]},y8={prefix:"fas",iconName:"sort-amount-down",icon:[512,512,[],"f160","M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},A8={prefix:"fas",iconName:"step-backward",icon:[448,512,[],"f048","M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z"]},b8={prefix:"fas",iconName:"step-forward",icon:[448,512,[],"f051","M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z"]},x8={prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"]},il={prefix:"fas",iconName:"trash-alt",icon:[448,512,[],"f2ed","M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},v8={prefix:"fas",iconName:"undo",icon:[512,512,[],"f0e2","M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"]};/*!
1579
- * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
1370
+ * Copyright 2022 Fonticons, Inc.
1371
+ */var n5={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"]},r5=n5,i5={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"]},o5=i5,a5={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"]},s5=a5,c5={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"]},u5=c5,Yg={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"]},l5={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"]},f5={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"]},_g={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"]},d5={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"]},h5=d5,p5={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"]},Wg=p5,m5={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"]},g5=m5,y5={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"]},v5=y5,b5={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"]},A5=b5,lo={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"]},x5={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"]},w5=x5,C5={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"]},S5=C5,E5={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"]},fo={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"]},D5={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"]},Pl={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"]},M5={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"]},T5=M5,I5={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"]},k5={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"]},Fl=k5,N5={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"]},L5=N5;/*!
1372
+ * Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com
1580
1373
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
1581
- */function w8(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function $g(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 E8(t,e,n){return e&&$g(t.prototype,e),n&&$g(t,n),t}function S8(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function _(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{},r=Object.keys(n);typeof Object.getOwnPropertySymbols=="function"&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(i){return Object.getOwnPropertyDescriptor(n,i).enumerable}))),r.forEach(function(i){S8(t,i,n[i])})}return t}function em(t,e){return C8(t)||D8(t,e)||M8()}function C8(t){if(Array.isArray(t))return t}function D8(t,e){var n=[],r=!0,i=!1,o=void 0;try{for(var s=t[Symbol.iterator](),a;!(r=(a=s.next()).done)&&(n.push(a.value),!(e&&n.length===e));r=!0);}catch(c){i=!0,o=c}finally{try{!r&&s.return!=null&&s.return()}finally{if(i)throw o}}return n}function M8(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}var tm=function(){},ol={},nm={},I8=null,rm={mark:tm,measure:tm};try{typeof window!="undefined"&&(ol=window),typeof document!="undefined"&&(nm=document),typeof MutationObserver!="undefined"&&(I8=MutationObserver),typeof performance!="undefined"&&(rm=performance)}catch{}var T8=ol.navigator||{},im=T8.userAgent,om=im===void 0?"":im,Ns=ol,Ie=nm,Ls=rm;Ns.document;var sl=!!Ie.documentElement&&!!Ie.head&&typeof Ie.addEventListener=="function"&&typeof Ie.createElement=="function";~om.indexOf("MSIE")||~om.indexOf("Trident/");var Bt="___FONT_AWESOME___",sm="fa",am="svg-inline--fa",N8="data-fa-i2svg";(function(){try{return!0}catch{return!1}})();var al={GROUP:"group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},cm=Ns.FontAwesomeConfig||{};function L8(t){var e=Ie.querySelector("script["+t+"]");if(e)return e.getAttribute(t)}function k8(t){return t===""?!0:t==="false"?!1:t==="true"?!0:t}if(Ie&&typeof Ie.querySelector=="function"){var O8=[["data-family-prefix","familyPrefix"],["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"]];O8.forEach(function(t){var e=em(t,2),n=e[0],r=e[1],i=k8(L8(n));i!=null&&(cm[r]=i)})}var B8={familyPrefix:sm,replacementClass:am,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},cl=_({},B8,cm);cl.autoReplaceSvg||(cl.observeMutations=!1);var je=_({},cl);Ns.FontAwesomeConfig=je;var Pt=Ns||{};Pt[Bt]||(Pt[Bt]={}),Pt[Bt].styles||(Pt[Bt].styles={}),Pt[Bt].hooks||(Pt[Bt].hooks={}),Pt[Bt].shims||(Pt[Bt].shims=[]);var xt=Pt[Bt],P8=[],F8=function t(){Ie.removeEventListener("DOMContentLoaded",t),ul=1,P8.map(function(e){return e()})},ul=!1;sl&&(ul=(Ie.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(Ie.readyState),ul||Ie.addEventListener("DOMContentLoaded",F8)),typeof global!="undefined"&&typeof global.process!="undefined"&&global.process.emit,typeof setImmediate=="undefined"||setImmediate;var vr={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function z8(t){if(!(!t||!sl)){var e=Ie.createElement("style");e.setAttribute("type","text/css"),e.innerHTML=t;for(var n=Ie.head.childNodes,r=null,i=n.length-1;i>-1;i--){var o=n[i],s=(o.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(s)>-1&&(r=o)}return Ie.head.insertBefore(e,r),t}}var R8="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function ks(){for(var t=12,e="";t-- >0;)e+=R8[Math.random()*62|0];return e}function um(t){return"".concat(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function U8(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,'="').concat(um(t[n]),'" ')},"").trim()}function lm(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,": ").concat(t[n],";")},"")}function fm(t){return t.size!==vr.size||t.x!==vr.x||t.y!==vr.y||t.rotate!==vr.rotate||t.flipX||t.flipY}function dm(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,") "),s="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),a="rotate(".concat(e.rotate," 0 0)"),c={transform:"".concat(o," ").concat(s," ").concat(a)},u={transform:"translate(".concat(r/2*-1," -256)")};return{outer:i,inner:c,path:u}}var ll={x:0,y:0,width:"100%",height:"100%"};function hm(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 j8(t){return t.tag==="g"?t.children:[t]}function G8(t){var e=t.children,n=t.attributes,r=t.main,i=t.mask,o=t.maskId,s=t.transform,a=r.width,c=r.icon,u=i.width,f=i.icon,l=dm({transform:s,containerWidth:u,iconWidth:a}),d={tag:"rect",attributes:_({},ll,{fill:"white"})},h=c.children?{children:c.children.map(hm)}:{},p={tag:"g",attributes:_({},l.inner),children:[hm(_({tag:c.tag,attributes:_({},c.attributes,l.path)},h))]},g={tag:"g",attributes:_({},l.outer),children:[p]},m="mask-".concat(o||ks()),y="clip-".concat(o||ks()),x={tag:"mask",attributes:_({},ll,{id:m,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[d,g]},v={tag:"defs",children:[{tag:"clipPath",attributes:{id:y},children:j8(f)},x]};return e.push(v,{tag:"rect",attributes:_({fill:"currentColor","clip-path":"url(#".concat(y,")"),mask:"url(#".concat(m,")")},ll)}),{children:e,attributes:n}}function H8(t){var e=t.children,n=t.attributes,r=t.main,i=t.transform,o=t.styles,s=lm(o);if(s.length>0&&(n.style=s),fm(i)){var a=dm({transform:i,containerWidth:r.width,iconWidth:r.width});e.push({tag:"g",attributes:_({},a.outer),children:[{tag:"g",attributes:_({},a.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:_({},r.icon.attributes,a.path)}]}]})}else e.push(r.icon);return{children:e,attributes:n}}function Q8(t){var e=t.children,n=t.main,r=t.mask,i=t.attributes,o=t.styles,s=t.transform;if(fm(s)&&n.found&&!r.found){var a=n.width,c=n.height,u={x:a/c/2,y:.5};i.style=lm(_({},o,{"transform-origin":"".concat(u.x+s.x/16,"em ").concat(u.y+s.y/16,"em")}))}return[{tag:"svg",attributes:i,children:e}]}function V8(t){var e=t.prefix,n=t.iconName,r=t.children,i=t.attributes,o=t.symbol,s=o===!0?"".concat(e,"-").concat(je.familyPrefix,"-").concat(n):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:_({},i,{id:s}),children:r}]}]}function _8(t){var e=t.icons,n=e.main,r=e.mask,i=t.prefix,o=t.iconName,s=t.transform,a=t.symbol,c=t.title,u=t.maskId,f=t.titleId,l=t.extra,d=t.watchable,h=d===void 0?!1:d,p=r.found?r:n,g=p.width,m=p.height,y=i==="fak",x=y?"":"fa-w-".concat(Math.ceil(g/m*16)),v=[je.replacementClass,o?"".concat(je.familyPrefix,"-").concat(o):"",x].filter(function(O){return l.classes.indexOf(O)===-1}).filter(function(O){return O!==""||!!O}).concat(l.classes).join(" "),S={children:[],attributes:_({},l.attributes,{"data-prefix":i,"data-icon":o,class:v,role:l.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(g," ").concat(m)})},b=y&&!~l.classes.indexOf("fa-fw")?{width:"".concat(g/m*16*.0625,"em")}:{};h&&(S.attributes[N8]=""),c&&S.children.push({tag:"title",attributes:{id:S.attributes["aria-labelledby"]||"title-".concat(f||ks())},children:[c]});var A=_({},S,{prefix:i,iconName:o,main:n,mask:r,maskId:u,transform:s,symbol:a,styles:_({},b,l.styles)}),w=r.found&&n.found?G8(A):H8(A),E=w.children,B=w.attributes;return A.children=E,A.attributes=B,a?V8(A):Q8(A)}var pm=function(){};je.measurePerformance&&Ls&&Ls.mark&&Ls.measure;var Y8=function(e,n){return function(r,i,o,s){return e.call(n,r,i,o,s)}},fl=function(e,n,r,i){var o=Object.keys(e),s=o.length,a=i!==void 0?Y8(n,i):n,c,u,f;for(r===void 0?(c=1,f=e[o[0]]):(c=0,f=r);c<s;c++)u=o[c],f=a(f,e[u],u,e);return f};function gm(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,i=r===void 0?!1:r,o=Object.keys(e).reduce(function(s,a){var c=e[a],u=!!c.icon;return u?s[c.iconName]=c.icon:s[a]=c,s},{});typeof xt.hooks.addPack=="function"&&!i?xt.hooks.addPack(t,o):xt.styles[t]=_({},xt.styles[t]||{},o),t==="fas"&&gm("fa",e)}var mm=xt.styles,W8=xt.shims,ym=function(){var e=function(i){return fl(mm,function(o,s,a){return o[a]=fl(s,i,{}),o},{})};e(function(r,i,o){return i[3]&&(r[i[3]]=o),r}),e(function(r,i,o){var s=i[2];return r[o]=o,s.forEach(function(a){r[a]=o}),r});var n="far"in mm;fl(W8,function(r,i){var o=i[0],s=i[1],a=i[2];return s==="far"&&!n&&(s="fas"),r[o]={prefix:s,iconName:a},r},{})};ym(),xt.styles;function Am(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}function bm(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"?um(t):"<".concat(e," ").concat(U8(r),">").concat(o.map(bm).join(""),"</").concat(e,">")}function dl(t){this.name="MissingIcon",this.message=t||"Icon unavailable",this.stack=new Error().stack}dl.prototype=Object.create(Error.prototype),dl.prototype.constructor=dl;var Os={fill:"currentColor"},xm={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};_({},Os,{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 hl=_({},xm,{attributeName:"opacity"});_({},Os,{cx:"256",cy:"364",r:"28"}),_({},xm,{attributeName:"r",values:"28;14;28;28;14;28;"}),_({},hl,{values:"1;0;1;1;0;1;"}),_({},Os,{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"}),_({},hl,{values:"1;0;0;0;0;1;"}),_({},Os,{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"}),_({},hl,{values:"0;0;1;1;0;0;"}),xt.styles;function vm(t){var e=t[0],n=t[1],r=t.slice(4),i=em(r,1),o=i[0],s=null;return Array.isArray(o)?s={tag:"g",attributes:{class:"".concat(je.familyPrefix,"-").concat(al.GROUP)},children:[{tag:"path",attributes:{class:"".concat(je.familyPrefix,"-").concat(al.SECONDARY),fill:"currentColor",d:o[0]}},{tag:"path",attributes:{class:"".concat(je.familyPrefix,"-").concat(al.PRIMARY),fill:"currentColor",d:o[1]}}]}:s={tag:"path",attributes:{fill:"currentColor",d:o}},{found:!0,width:e,height:n,icon:s}}xt.styles;var X8=`svg:not(:root).svg-inline--fa {
1374
+ * Copyright 2022 Fonticons, Inc.
1375
+ */function Xg(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 N(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Xg(Object(n),!0).forEach(function(r){P5(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Xg(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function ss(t){return ss=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},ss(t)}function B5(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Zg(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 O5(t,e,n){return e&&Zg(t.prototype,e),n&&Zg(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function P5(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function zl(t,e){return z5(t)||j5(t,e)||qg(t,e)||G5()}function cs(t){return F5(t)||R5(t)||qg(t)||U5()}function F5(t){if(Array.isArray(t))return Rl(t)}function z5(t){if(Array.isArray(t))return t}function R5(t){if(typeof Symbol!="undefined"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function j5(t,e){var n=t==null?null:typeof Symbol!="undefined"&&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 qg(t,e){if(!!t){if(typeof t=="string")return Rl(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 Rl(t,e)}}function Rl(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 U5(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
1376
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function G5(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
1377
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var Kg=function(){},jl={},Jg={},$g=null,e1={mark:Kg,measure:Kg};try{typeof window!="undefined"&&(jl=window),typeof document!="undefined"&&(Jg=document),typeof MutationObserver!="undefined"&&($g=MutationObserver),typeof performance!="undefined"&&(e1=performance)}catch{}var H5=jl.navigator||{},t1=H5.userAgent,n1=t1===void 0?"":t1,pn=jl,te=Jg,r1=$g,us=e1;pn.document;var Rt=!!te.documentElement&&!!te.head&&typeof te.addEventListener=="function"&&typeof te.createElement=="function",i1=~n1.indexOf("MSIE")||~n1.indexOf("Trident/"),jt="___FONT_AWESOME___",Ul=16,o1="fa",a1="svg-inline--fa",tr="data-fa-i2svg",Gl="data-fa-pseudo-element",Q5="data-fa-pseudo-element-pending",Hl="data-prefix",Ql="data-icon",s1="fontawesome-i2svg",V5="async",Y5=["HTML","HEAD","STYLE","SCRIPT"],c1=function(){try{return!0}catch{return!1}}(),Vl={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"},ls={solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"},u1={fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"},_5={"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"},W5=/fa[srltdbk\-\ ]/,l1="fa-layers-text",X5=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Kit)?.*/i,Z5={"900":"fas","400":"far",normal:"far","300":"fal","100":"fat"},f1=[1,2,3,4,5,6,7,8,9,10],q5=f1.concat([11,12,13,14,15,16,17,18,19,20]),K5=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],nr={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},J5=[].concat(cs(Object.keys(ls)),["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",nr.GROUP,nr.SWAP_OPACITY,nr.PRIMARY,nr.SECONDARY]).concat(f1.map(function(t){return"".concat(t,"x")})).concat(q5.map(function(t){return"w-".concat(t)})),d1=pn.FontAwesomeConfig||{};function $5(t){var e=te.querySelector("script["+t+"]");if(e)return e.getAttribute(t)}function eT(t){return t===""?!0:t==="false"?!1:t==="true"?!0:t}if(te&&typeof te.querySelector=="function"){var tT=[["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"]];tT.forEach(function(t){var e=zl(t,2),n=e[0],r=e[1],i=eT($5(n));i!=null&&(d1[r]=i)})}var nT={familyPrefix:o1,styleDefault:"solid",replacementClass:a1,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},ho=N(N({},nT),d1);ho.autoReplaceSvg||(ho.observeMutations=!1);var F={};Object.keys(ho).forEach(function(t){Object.defineProperty(F,t,{enumerable:!0,set:function(n){ho[t]=n,fs.forEach(function(r){return r(F)})},get:function(){return ho[t]}})}),pn.FontAwesomeConfig=F;var fs=[];function rT(t){return fs.push(t),function(){fs.splice(fs.indexOf(t),1)}}var mn=Ul,At={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function iT(t){if(!(!t||!Rt)){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 oT="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function po(){for(var t=12,e="";t-- >0;)e+=oT[Math.random()*62|0];return e}function Qr(t){for(var e=[],n=(t||[]).length>>>0;n--;)e[n]=t[n];return e}function Yl(t){return t.classList?Qr(t.classList):(t.getAttribute("class")||"").split(" ").filter(function(e){return e})}function h1(t){return"".concat(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function aT(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,'="').concat(h1(t[n]),'" ')},"").trim()}function ds(t){return Object.keys(t||{}).reduce(function(e,n){return e+"".concat(n,": ").concat(t[n].trim(),";")},"")}function _l(t){return t.size!==At.size||t.x!==At.x||t.y!==At.y||t.rotate!==At.rotate||t.flipX||t.flipY}function sT(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 cT(t){var e=t.transform,n=t.width,r=n===void 0?Ul:n,i=t.height,o=i===void 0?Ul:i,a=t.startCentered,s=a===void 0?!1:a,c="";return s&&i1?c+="translate(".concat(e.x/mn-r/2,"em, ").concat(e.y/mn-o/2,"em) "):s?c+="translate(calc(-50% + ".concat(e.x/mn,"em), calc(-50% + ").concat(e.y/mn,"em)) "):c+="translate(".concat(e.x/mn,"em, ").concat(e.y/mn,"em) "),c+="scale(".concat(e.size/mn*(e.flipX?-1:1),", ").concat(e.size/mn*(e.flipY?-1:1),") "),c+="rotate(".concat(e.rotate,"deg) "),c}var uT=`:root, :host {
1378
+ --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid";
1379
+ --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular";
1380
+ --fa-font-light: normal 300 1em/1 "Font Awesome 6 Light";
1381
+ --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Thin";
1382
+ --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone";
1383
+ --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands";
1384
+ }
1385
+
1386
+ svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
1582
1387
  overflow: visible;
1388
+ box-sizing: content-box;
1583
1389
  }
1584
1390
 
1585
1391
  .svg-inline--fa {
1586
- display: inline-block;
1587
- font-size: inherit;
1392
+ display: var(--fa-display, inline-block);
1588
1393
  height: 1em;
1589
1394
  overflow: visible;
1590
1395
  vertical-align: -0.125em;
1591
1396
  }
1592
- .svg-inline--fa.fa-lg {
1593
- vertical-align: -0.225em;
1397
+ .svg-inline--fa.fa-2xs {
1398
+ vertical-align: 0.1em;
1594
1399
  }
1595
- .svg-inline--fa.fa-w-1 {
1596
- width: 0.0625em;
1400
+ .svg-inline--fa.fa-xs {
1401
+ vertical-align: 0em;
1597
1402
  }
1598
- .svg-inline--fa.fa-w-2 {
1599
- width: 0.125em;
1403
+ .svg-inline--fa.fa-sm {
1404
+ vertical-align: -0.0714285705em;
1600
1405
  }
1601
- .svg-inline--fa.fa-w-3 {
1602
- width: 0.1875em;
1603
- }
1604
- .svg-inline--fa.fa-w-4 {
1605
- width: 0.25em;
1606
- }
1607
- .svg-inline--fa.fa-w-5 {
1608
- width: 0.3125em;
1609
- }
1610
- .svg-inline--fa.fa-w-6 {
1611
- width: 0.375em;
1612
- }
1613
- .svg-inline--fa.fa-w-7 {
1614
- width: 0.4375em;
1615
- }
1616
- .svg-inline--fa.fa-w-8 {
1617
- width: 0.5em;
1618
- }
1619
- .svg-inline--fa.fa-w-9 {
1620
- width: 0.5625em;
1621
- }
1622
- .svg-inline--fa.fa-w-10 {
1623
- width: 0.625em;
1624
- }
1625
- .svg-inline--fa.fa-w-11 {
1626
- width: 0.6875em;
1627
- }
1628
- .svg-inline--fa.fa-w-12 {
1629
- width: 0.75em;
1630
- }
1631
- .svg-inline--fa.fa-w-13 {
1632
- width: 0.8125em;
1633
- }
1634
- .svg-inline--fa.fa-w-14 {
1635
- width: 0.875em;
1636
- }
1637
- .svg-inline--fa.fa-w-15 {
1638
- width: 0.9375em;
1639
- }
1640
- .svg-inline--fa.fa-w-16 {
1641
- width: 1em;
1642
- }
1643
- .svg-inline--fa.fa-w-17 {
1644
- width: 1.0625em;
1645
- }
1646
- .svg-inline--fa.fa-w-18 {
1647
- width: 1.125em;
1406
+ .svg-inline--fa.fa-lg {
1407
+ vertical-align: -0.2em;
1648
1408
  }
1649
- .svg-inline--fa.fa-w-19 {
1650
- width: 1.1875em;
1409
+ .svg-inline--fa.fa-xl {
1410
+ vertical-align: -0.25em;
1651
1411
  }
1652
- .svg-inline--fa.fa-w-20 {
1653
- width: 1.25em;
1412
+ .svg-inline--fa.fa-2xl {
1413
+ vertical-align: -0.3125em;
1654
1414
  }
1655
1415
  .svg-inline--fa.fa-pull-left {
1656
- margin-right: 0.3em;
1416
+ margin-right: var(--fa-pull-margin, 0.3em);
1657
1417
  width: auto;
1658
1418
  }
1659
1419
  .svg-inline--fa.fa-pull-right {
1660
- margin-left: 0.3em;
1420
+ margin-left: var(--fa-pull-margin, 0.3em);
1661
1421
  width: auto;
1662
1422
  }
1663
- .svg-inline--fa.fa-border {
1664
- height: 1.5em;
1665
- }
1666
1423
  .svg-inline--fa.fa-li {
1667
- width: 2em;
1424
+ width: var(--fa-li-width, 2em);
1425
+ top: 0.25em;
1668
1426
  }
1669
1427
  .svg-inline--fa.fa-fw {
1670
- width: 1.25em;
1428
+ width: var(--fa-fw-width, 1.25em);
1671
1429
  }
1672
1430
 
1673
1431
  .fa-layers svg.svg-inline--fa {
@@ -1679,6 +1437,12 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1679
1437
  top: 0;
1680
1438
  }
1681
1439
 
1440
+ .fa-layers-counter, .fa-layers-text {
1441
+ display: inline-block;
1442
+ position: absolute;
1443
+ text-align: center;
1444
+ }
1445
+
1682
1446
  .fa-layers {
1683
1447
  display: inline-block;
1684
1448
  height: 1em;
@@ -1692,12 +1456,6 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1692
1456
  transform-origin: center center;
1693
1457
  }
1694
1458
 
1695
- .fa-layers-counter, .fa-layers-text {
1696
- display: inline-block;
1697
- position: absolute;
1698
- text-align: center;
1699
- }
1700
-
1701
1459
  .fa-layers-text {
1702
1460
  left: 50%;
1703
1461
  top: 50%;
@@ -1708,80 +1466,64 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1708
1466
  }
1709
1467
 
1710
1468
  .fa-layers-counter {
1711
- background-color: #ff253a;
1712
- border-radius: 1em;
1713
- -webkit-box-sizing: border-box;
1714
- box-sizing: border-box;
1715
- color: #fff;
1716
- height: 1.5em;
1717
- line-height: 1;
1718
- max-width: 5em;
1719
- min-width: 1.5em;
1469
+ background-color: var(--fa-counter-background-color, #ff253a);
1470
+ border-radius: var(--fa-counter-border-radius, 1em);
1471
+ box-sizing: border-box;
1472
+ color: var(--fa-inverse, #fff);
1473
+ line-height: var(--fa-counter-line-height, 1);
1474
+ max-width: var(--fa-counter-max-width, 5em);
1475
+ min-width: var(--fa-counter-min-width, 1.5em);
1720
1476
  overflow: hidden;
1721
- padding: 0.25em;
1722
- right: 0;
1477
+ padding: var(--fa-counter-padding, 0.25em 0.5em);
1478
+ right: var(--fa-right, 0);
1723
1479
  text-overflow: ellipsis;
1724
- top: 0;
1725
- -webkit-transform: scale(0.25);
1726
- transform: scale(0.25);
1480
+ top: var(--fa-top, 0);
1481
+ -webkit-transform: scale(var(--fa-counter-scale, 0.25));
1482
+ transform: scale(var(--fa-counter-scale, 0.25));
1727
1483
  -webkit-transform-origin: top right;
1728
1484
  transform-origin: top right;
1729
1485
  }
1730
1486
 
1731
1487
  .fa-layers-bottom-right {
1732
- bottom: 0;
1733
- right: 0;
1488
+ bottom: var(--fa-bottom, 0);
1489
+ right: var(--fa-right, 0);
1734
1490
  top: auto;
1735
- -webkit-transform: scale(0.25);
1736
- transform: scale(0.25);
1491
+ -webkit-transform: scale(var(--fa-layers-scale, 0.25));
1492
+ transform: scale(var(--fa-layers-scale, 0.25));
1737
1493
  -webkit-transform-origin: bottom right;
1738
1494
  transform-origin: bottom right;
1739
1495
  }
1740
1496
 
1741
1497
  .fa-layers-bottom-left {
1742
- bottom: 0;
1743
- left: 0;
1498
+ bottom: var(--fa-bottom, 0);
1499
+ left: var(--fa-left, 0);
1744
1500
  right: auto;
1745
1501
  top: auto;
1746
- -webkit-transform: scale(0.25);
1747
- transform: scale(0.25);
1502
+ -webkit-transform: scale(var(--fa-layers-scale, 0.25));
1503
+ transform: scale(var(--fa-layers-scale, 0.25));
1748
1504
  -webkit-transform-origin: bottom left;
1749
1505
  transform-origin: bottom left;
1750
1506
  }
1751
1507
 
1752
1508
  .fa-layers-top-right {
1753
- right: 0;
1754
- top: 0;
1755
- -webkit-transform: scale(0.25);
1756
- transform: scale(0.25);
1509
+ top: var(--fa-top, 0);
1510
+ right: var(--fa-right, 0);
1511
+ -webkit-transform: scale(var(--fa-layers-scale, 0.25));
1512
+ transform: scale(var(--fa-layers-scale, 0.25));
1757
1513
  -webkit-transform-origin: top right;
1758
1514
  transform-origin: top right;
1759
1515
  }
1760
1516
 
1761
1517
  .fa-layers-top-left {
1762
- left: 0;
1518
+ left: var(--fa-left, 0);
1763
1519
  right: auto;
1764
- top: 0;
1765
- -webkit-transform: scale(0.25);
1766
- transform: scale(0.25);
1520
+ top: var(--fa-top, 0);
1521
+ -webkit-transform: scale(var(--fa-layers-scale, 0.25));
1522
+ transform: scale(var(--fa-layers-scale, 0.25));
1767
1523
  -webkit-transform-origin: top left;
1768
1524
  transform-origin: top left;
1769
1525
  }
1770
1526
 
1771
- .fa-lg {
1772
- font-size: 1.3333333333em;
1773
- line-height: 0.75em;
1774
- vertical-align: -0.0667em;
1775
- }
1776
-
1777
- .fa-xs {
1778
- font-size: 0.75em;
1779
- }
1780
-
1781
- .fa-sm {
1782
- font-size: 0.875em;
1783
- }
1784
-
1785
1527
  .fa-1x {
1786
1528
  font-size: 1em;
1787
1529
  }
@@ -1822,6 +1564,42 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1822
1564
  font-size: 10em;
1823
1565
  }
1824
1566
 
1567
+ .fa-2xs {
1568
+ font-size: 0.625em;
1569
+ line-height: 0.1em;
1570
+ vertical-align: 0.225em;
1571
+ }
1572
+
1573
+ .fa-xs {
1574
+ font-size: 0.75em;
1575
+ line-height: 0.0833333337em;
1576
+ vertical-align: 0.125em;
1577
+ }
1578
+
1579
+ .fa-sm {
1580
+ font-size: 0.875em;
1581
+ line-height: 0.0714285718em;
1582
+ vertical-align: 0.0535714295em;
1583
+ }
1584
+
1585
+ .fa-lg {
1586
+ font-size: 1.25em;
1587
+ line-height: 0.05em;
1588
+ vertical-align: -0.075em;
1589
+ }
1590
+
1591
+ .fa-xl {
1592
+ font-size: 1.5em;
1593
+ line-height: 0.0416666682em;
1594
+ vertical-align: -0.125em;
1595
+ }
1596
+
1597
+ .fa-2xl {
1598
+ font-size: 2em;
1599
+ line-height: 0.03125em;
1600
+ vertical-align: -0.1875em;
1601
+ }
1602
+
1825
1603
  .fa-fw {
1826
1604
  text-align: center;
1827
1605
  width: 1.25em;
@@ -1829,7 +1607,7 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1829
1607
 
1830
1608
  .fa-ul {
1831
1609
  list-style-type: none;
1832
- margin-left: 2.5em;
1610
+ margin-left: var(--fa-li-margin, 2.5em);
1833
1611
  padding-left: 0;
1834
1612
  }
1835
1613
  .fa-ul > li {
@@ -1837,52 +1615,376 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1837
1615
  }
1838
1616
 
1839
1617
  .fa-li {
1840
- left: -2em;
1618
+ left: calc(var(--fa-li-width, 2em) * -1);
1841
1619
  position: absolute;
1842
1620
  text-align: center;
1843
- width: 2em;
1621
+ width: var(--fa-li-width, 2em);
1844
1622
  line-height: inherit;
1845
1623
  }
1846
1624
 
1847
1625
  .fa-border {
1848
- border: solid 0.08em #eee;
1849
- border-radius: 0.1em;
1850
- padding: 0.2em 0.25em 0.15em;
1626
+ border-color: var(--fa-border-color, #eee);
1627
+ border-radius: var(--fa-border-radius, 0.1em);
1628
+ border-style: var(--fa-border-style, solid);
1629
+ border-width: var(--fa-border-width, 0.08em);
1630
+ padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);
1851
1631
  }
1852
1632
 
1853
1633
  .fa-pull-left {
1854
1634
  float: left;
1635
+ margin-right: var(--fa-pull-margin, 0.3em);
1855
1636
  }
1856
1637
 
1857
1638
  .fa-pull-right {
1858
1639
  float: right;
1640
+ margin-left: var(--fa-pull-margin, 0.3em);
1641
+ }
1642
+
1643
+ .fa-beat {
1644
+ -webkit-animation-name: fa-beat;
1645
+ animation-name: fa-beat;
1646
+ -webkit-animation-delay: var(--fa-animation-delay, 0);
1647
+ animation-delay: var(--fa-animation-delay, 0);
1648
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
1649
+ animation-direction: var(--fa-animation-direction, normal);
1650
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
1651
+ animation-duration: var(--fa-animation-duration, 1s);
1652
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1653
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1654
+ -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
1655
+ animation-timing-function: var(--fa-animation-timing, ease-in-out);
1656
+ }
1657
+
1658
+ .fa-bounce {
1659
+ -webkit-animation-name: fa-bounce;
1660
+ animation-name: fa-bounce;
1661
+ -webkit-animation-delay: var(--fa-animation-delay, 0);
1662
+ animation-delay: var(--fa-animation-delay, 0);
1663
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
1664
+ animation-direction: var(--fa-animation-direction, normal);
1665
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
1666
+ animation-duration: var(--fa-animation-duration, 1s);
1667
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1668
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1669
+ -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
1670
+ animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
1671
+ }
1672
+
1673
+ .fa-fade {
1674
+ -webkit-animation-name: fa-fade;
1675
+ animation-name: fa-fade;
1676
+ -webkit-animation-delay: var(--fa-animation-delay, 0);
1677
+ animation-delay: var(--fa-animation-delay, 0);
1678
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
1679
+ animation-direction: var(--fa-animation-direction, normal);
1680
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
1681
+ animation-duration: var(--fa-animation-duration, 1s);
1682
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1683
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1684
+ -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
1685
+ animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
1686
+ }
1687
+
1688
+ .fa-beat-fade {
1689
+ -webkit-animation-name: fa-beat-fade;
1690
+ animation-name: fa-beat-fade;
1691
+ -webkit-animation-delay: var(--fa-animation-delay, 0);
1692
+ animation-delay: var(--fa-animation-delay, 0);
1693
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
1694
+ animation-direction: var(--fa-animation-direction, normal);
1695
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
1696
+ animation-duration: var(--fa-animation-duration, 1s);
1697
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1698
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1699
+ -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
1700
+ animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
1701
+ }
1702
+
1703
+ .fa-flip {
1704
+ -webkit-animation-name: fa-flip;
1705
+ animation-name: fa-flip;
1706
+ -webkit-animation-delay: var(--fa-animation-delay, 0);
1707
+ animation-delay: var(--fa-animation-delay, 0);
1708
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
1709
+ animation-direction: var(--fa-animation-direction, normal);
1710
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
1711
+ animation-duration: var(--fa-animation-duration, 1s);
1712
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1713
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1714
+ -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
1715
+ animation-timing-function: var(--fa-animation-timing, ease-in-out);
1716
+ }
1717
+
1718
+ .fa-shake {
1719
+ -webkit-animation-name: fa-shake;
1720
+ animation-name: fa-shake;
1721
+ -webkit-animation-delay: var(--fa-animation-delay, 0);
1722
+ animation-delay: var(--fa-animation-delay, 0);
1723
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
1724
+ animation-direction: var(--fa-animation-direction, normal);
1725
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
1726
+ animation-duration: var(--fa-animation-duration, 1s);
1727
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1728
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1729
+ -webkit-animation-timing-function: var(--fa-animation-timing, linear);
1730
+ animation-timing-function: var(--fa-animation-timing, linear);
1859
1731
  }
1860
1732
 
1861
- .fa.fa-pull-left,
1862
- .fas.fa-pull-left,
1863
- .far.fa-pull-left,
1864
- .fal.fa-pull-left,
1865
- .fab.fa-pull-left {
1866
- margin-right: 0.3em;
1733
+ .fa-spin {
1734
+ -webkit-animation-name: fa-spin;
1735
+ animation-name: fa-spin;
1736
+ -webkit-animation-delay: var(--fa-animation-delay, 0);
1737
+ animation-delay: var(--fa-animation-delay, 0);
1738
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
1739
+ animation-direction: var(--fa-animation-direction, normal);
1740
+ -webkit-animation-duration: var(--fa-animation-duration, 2s);
1741
+ animation-duration: var(--fa-animation-duration, 2s);
1742
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1743
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1744
+ -webkit-animation-timing-function: var(--fa-animation-timing, linear);
1745
+ animation-timing-function: var(--fa-animation-timing, linear);
1746
+ }
1747
+
1748
+ .fa-spin-reverse {
1749
+ --fa-animation-direction: reverse;
1750
+ }
1751
+
1752
+ .fa-pulse,
1753
+ .fa-spin-pulse {
1754
+ -webkit-animation-name: fa-spin;
1755
+ animation-name: fa-spin;
1756
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
1757
+ animation-direction: var(--fa-animation-direction, normal);
1758
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
1759
+ animation-duration: var(--fa-animation-duration, 1s);
1760
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1761
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
1762
+ -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));
1763
+ animation-timing-function: var(--fa-animation-timing, steps(8));
1764
+ }
1765
+
1766
+ @media (prefers-reduced-motion: reduce) {
1767
+ .fa-beat,
1768
+ .fa-bounce,
1769
+ .fa-fade,
1770
+ .fa-beat-fade,
1771
+ .fa-flip,
1772
+ .fa-pulse,
1773
+ .fa-shake,
1774
+ .fa-spin,
1775
+ .fa-spin-pulse {
1776
+ -webkit-animation-delay: -1ms;
1777
+ animation-delay: -1ms;
1778
+ -webkit-animation-duration: 1ms;
1779
+ animation-duration: 1ms;
1780
+ -webkit-animation-iteration-count: 1;
1781
+ animation-iteration-count: 1;
1782
+ transition-delay: 0s;
1783
+ transition-duration: 0s;
1784
+ }
1867
1785
  }
1868
- .fa.fa-pull-right,
1869
- .fas.fa-pull-right,
1870
- .far.fa-pull-right,
1871
- .fal.fa-pull-right,
1872
- .fab.fa-pull-right {
1873
- margin-left: 0.3em;
1786
+ @-webkit-keyframes fa-beat {
1787
+ 0%, 90% {
1788
+ -webkit-transform: scale(1);
1789
+ transform: scale(1);
1790
+ }
1791
+ 45% {
1792
+ -webkit-transform: scale(var(--fa-beat-scale, 1.25));
1793
+ transform: scale(var(--fa-beat-scale, 1.25));
1794
+ }
1874
1795
  }
1875
-
1876
- .fa-spin {
1877
- -webkit-animation: fa-spin 2s infinite linear;
1878
- animation: fa-spin 2s infinite linear;
1796
+ @keyframes fa-beat {
1797
+ 0%, 90% {
1798
+ -webkit-transform: scale(1);
1799
+ transform: scale(1);
1800
+ }
1801
+ 45% {
1802
+ -webkit-transform: scale(var(--fa-beat-scale, 1.25));
1803
+ transform: scale(var(--fa-beat-scale, 1.25));
1804
+ }
1879
1805
  }
1880
-
1881
- .fa-pulse {
1882
- -webkit-animation: fa-spin 1s infinite steps(8);
1883
- animation: fa-spin 1s infinite steps(8);
1806
+ @-webkit-keyframes fa-bounce {
1807
+ 0% {
1808
+ -webkit-transform: scale(1, 1) translateY(0);
1809
+ transform: scale(1, 1) translateY(0);
1810
+ }
1811
+ 10% {
1812
+ -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
1813
+ transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
1814
+ }
1815
+ 30% {
1816
+ -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
1817
+ transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
1818
+ }
1819
+ 50% {
1820
+ -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
1821
+ transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
1822
+ }
1823
+ 57% {
1824
+ -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
1825
+ transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
1826
+ }
1827
+ 64% {
1828
+ -webkit-transform: scale(1, 1) translateY(0);
1829
+ transform: scale(1, 1) translateY(0);
1830
+ }
1831
+ 100% {
1832
+ -webkit-transform: scale(1, 1) translateY(0);
1833
+ transform: scale(1, 1) translateY(0);
1834
+ }
1835
+ }
1836
+ @keyframes fa-bounce {
1837
+ 0% {
1838
+ -webkit-transform: scale(1, 1) translateY(0);
1839
+ transform: scale(1, 1) translateY(0);
1840
+ }
1841
+ 10% {
1842
+ -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
1843
+ transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
1844
+ }
1845
+ 30% {
1846
+ -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
1847
+ transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
1848
+ }
1849
+ 50% {
1850
+ -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
1851
+ transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
1852
+ }
1853
+ 57% {
1854
+ -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
1855
+ transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
1856
+ }
1857
+ 64% {
1858
+ -webkit-transform: scale(1, 1) translateY(0);
1859
+ transform: scale(1, 1) translateY(0);
1860
+ }
1861
+ 100% {
1862
+ -webkit-transform: scale(1, 1) translateY(0);
1863
+ transform: scale(1, 1) translateY(0);
1864
+ }
1865
+ }
1866
+ @-webkit-keyframes fa-fade {
1867
+ 50% {
1868
+ opacity: var(--fa-fade-opacity, 0.4);
1869
+ }
1870
+ }
1871
+ @keyframes fa-fade {
1872
+ 50% {
1873
+ opacity: var(--fa-fade-opacity, 0.4);
1874
+ }
1875
+ }
1876
+ @-webkit-keyframes fa-beat-fade {
1877
+ 0%, 100% {
1878
+ opacity: var(--fa-beat-fade-opacity, 0.4);
1879
+ -webkit-transform: scale(1);
1880
+ transform: scale(1);
1881
+ }
1882
+ 50% {
1883
+ opacity: 1;
1884
+ -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
1885
+ transform: scale(var(--fa-beat-fade-scale, 1.125));
1886
+ }
1887
+ }
1888
+ @keyframes fa-beat-fade {
1889
+ 0%, 100% {
1890
+ opacity: var(--fa-beat-fade-opacity, 0.4);
1891
+ -webkit-transform: scale(1);
1892
+ transform: scale(1);
1893
+ }
1894
+ 50% {
1895
+ opacity: 1;
1896
+ -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
1897
+ transform: scale(var(--fa-beat-fade-scale, 1.125));
1898
+ }
1899
+ }
1900
+ @-webkit-keyframes fa-flip {
1901
+ 50% {
1902
+ -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
1903
+ transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
1904
+ }
1905
+ }
1906
+ @keyframes fa-flip {
1907
+ 50% {
1908
+ -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
1909
+ transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
1910
+ }
1911
+ }
1912
+ @-webkit-keyframes fa-shake {
1913
+ 0% {
1914
+ -webkit-transform: rotate(-15deg);
1915
+ transform: rotate(-15deg);
1916
+ }
1917
+ 4% {
1918
+ -webkit-transform: rotate(15deg);
1919
+ transform: rotate(15deg);
1920
+ }
1921
+ 8%, 24% {
1922
+ -webkit-transform: rotate(-18deg);
1923
+ transform: rotate(-18deg);
1924
+ }
1925
+ 12%, 28% {
1926
+ -webkit-transform: rotate(18deg);
1927
+ transform: rotate(18deg);
1928
+ }
1929
+ 16% {
1930
+ -webkit-transform: rotate(-22deg);
1931
+ transform: rotate(-22deg);
1932
+ }
1933
+ 20% {
1934
+ -webkit-transform: rotate(22deg);
1935
+ transform: rotate(22deg);
1936
+ }
1937
+ 32% {
1938
+ -webkit-transform: rotate(-12deg);
1939
+ transform: rotate(-12deg);
1940
+ }
1941
+ 36% {
1942
+ -webkit-transform: rotate(12deg);
1943
+ transform: rotate(12deg);
1944
+ }
1945
+ 40%, 100% {
1946
+ -webkit-transform: rotate(0deg);
1947
+ transform: rotate(0deg);
1948
+ }
1949
+ }
1950
+ @keyframes fa-shake {
1951
+ 0% {
1952
+ -webkit-transform: rotate(-15deg);
1953
+ transform: rotate(-15deg);
1954
+ }
1955
+ 4% {
1956
+ -webkit-transform: rotate(15deg);
1957
+ transform: rotate(15deg);
1958
+ }
1959
+ 8%, 24% {
1960
+ -webkit-transform: rotate(-18deg);
1961
+ transform: rotate(-18deg);
1962
+ }
1963
+ 12%, 28% {
1964
+ -webkit-transform: rotate(18deg);
1965
+ transform: rotate(18deg);
1966
+ }
1967
+ 16% {
1968
+ -webkit-transform: rotate(-22deg);
1969
+ transform: rotate(-22deg);
1970
+ }
1971
+ 20% {
1972
+ -webkit-transform: rotate(22deg);
1973
+ transform: rotate(22deg);
1974
+ }
1975
+ 32% {
1976
+ -webkit-transform: rotate(-12deg);
1977
+ transform: rotate(-12deg);
1978
+ }
1979
+ 36% {
1980
+ -webkit-transform: rotate(12deg);
1981
+ transform: rotate(12deg);
1982
+ }
1983
+ 40%, 100% {
1984
+ -webkit-transform: rotate(0deg);
1985
+ transform: rotate(0deg);
1986
+ }
1884
1987
  }
1885
-
1886
1988
  @-webkit-keyframes fa-spin {
1887
1989
  0% {
1888
1990
  -webkit-transform: rotate(0deg);
@@ -1893,7 +1995,6 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1893
1995
  transform: rotate(360deg);
1894
1996
  }
1895
1997
  }
1896
-
1897
1998
  @keyframes fa-spin {
1898
1999
  0% {
1899
2000
  -webkit-transform: rotate(0deg);
@@ -1905,53 +2006,44 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1905
2006
  }
1906
2007
  }
1907
2008
  .fa-rotate-90 {
1908
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
1909
2009
  -webkit-transform: rotate(90deg);
1910
2010
  transform: rotate(90deg);
1911
2011
  }
1912
2012
 
1913
2013
  .fa-rotate-180 {
1914
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
1915
2014
  -webkit-transform: rotate(180deg);
1916
2015
  transform: rotate(180deg);
1917
2016
  }
1918
2017
 
1919
2018
  .fa-rotate-270 {
1920
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
1921
2019
  -webkit-transform: rotate(270deg);
1922
2020
  transform: rotate(270deg);
1923
2021
  }
1924
2022
 
1925
2023
  .fa-flip-horizontal {
1926
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
1927
2024
  -webkit-transform: scale(-1, 1);
1928
2025
  transform: scale(-1, 1);
1929
2026
  }
1930
2027
 
1931
2028
  .fa-flip-vertical {
1932
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
1933
2029
  -webkit-transform: scale(1, -1);
1934
2030
  transform: scale(1, -1);
1935
2031
  }
1936
2032
 
1937
- .fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
1938
- -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
2033
+ .fa-flip-both,
2034
+ .fa-flip-horizontal.fa-flip-vertical {
1939
2035
  -webkit-transform: scale(-1, -1);
1940
2036
  transform: scale(-1, -1);
1941
2037
  }
1942
2038
 
1943
- :root .fa-rotate-90,
1944
- :root .fa-rotate-180,
1945
- :root .fa-rotate-270,
1946
- :root .fa-flip-horizontal,
1947
- :root .fa-flip-vertical,
1948
- :root .fa-flip-both {
1949
- -webkit-filter: none;
1950
- filter: none;
2039
+ .fa-rotate-by {
2040
+ -webkit-transform: rotate(var(--fa-rotate-angle, none));
2041
+ transform: rotate(var(--fa-rotate-angle, none));
1951
2042
  }
1952
2043
 
1953
2044
  .fa-stack {
1954
2045
  display: inline-block;
2046
+ vertical-align: middle;
1955
2047
  height: 2em;
1956
2048
  position: relative;
1957
2049
  width: 2.5em;
@@ -1965,6 +2057,7 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1965
2057
  position: absolute;
1966
2058
  right: 0;
1967
2059
  top: 0;
2060
+ z-index: var(--fa-stack-z-index, auto);
1968
2061
  }
1969
2062
 
1970
2063
  .svg-inline--fa.fa-stack-1x {
@@ -1977,48 +2070,50 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
1977
2070
  }
1978
2071
 
1979
2072
  .fa-inverse {
1980
- color: #fff;
2073
+ color: var(--fa-inverse, #fff);
1981
2074
  }
1982
2075
 
1983
- .sr-only {
1984
- border: 0;
1985
- clip: rect(0, 0, 0, 0);
2076
+ .sr-only,
2077
+ .fa-sr-only {
2078
+ position: absolute;
2079
+ width: 1px;
1986
2080
  height: 1px;
2081
+ padding: 0;
1987
2082
  margin: -1px;
1988
2083
  overflow: hidden;
1989
- padding: 0;
1990
- position: absolute;
1991
- width: 1px;
2084
+ clip: rect(0, 0, 0, 0);
2085
+ white-space: nowrap;
2086
+ border-width: 0;
1992
2087
  }
1993
2088
 
1994
- .sr-only-focusable:active, .sr-only-focusable:focus {
1995
- clip: auto;
1996
- height: auto;
1997
- margin: 0;
1998
- overflow: visible;
1999
- position: static;
2000
- width: auto;
2089
+ .sr-only-focusable:not(:focus),
2090
+ .fa-sr-only-focusable:not(:focus) {
2091
+ position: absolute;
2092
+ width: 1px;
2093
+ height: 1px;
2094
+ padding: 0;
2095
+ margin: -1px;
2096
+ overflow: hidden;
2097
+ clip: rect(0, 0, 0, 0);
2098
+ white-space: nowrap;
2099
+ border-width: 0;
2001
2100
  }
2002
2101
 
2003
2102
  .svg-inline--fa .fa-primary {
2004
2103
  fill: var(--fa-primary-color, currentColor);
2005
- opacity: 1;
2006
2104
  opacity: var(--fa-primary-opacity, 1);
2007
2105
  }
2008
2106
 
2009
2107
  .svg-inline--fa .fa-secondary {
2010
2108
  fill: var(--fa-secondary-color, currentColor);
2011
- opacity: 0.4;
2012
2109
  opacity: var(--fa-secondary-opacity, 0.4);
2013
2110
  }
2014
2111
 
2015
2112
  .svg-inline--fa.fa-swap-opacity .fa-primary {
2016
- opacity: 0.4;
2017
2113
  opacity: var(--fa-secondary-opacity, 0.4);
2018
2114
  }
2019
2115
 
2020
2116
  .svg-inline--fa.fa-swap-opacity .fa-secondary {
2021
- opacity: 1;
2022
2117
  opacity: var(--fa-primary-opacity, 1);
2023
2118
  }
2024
2119
 
@@ -2027,40 +2122,43 @@ Reason: ${a.message}`)}));if(n.isViewSpec(o))return o.baseUrl=(s=i.match(/^[^?#]
2027
2122
  fill: black;
2028
2123
  }
2029
2124
 
2030
- .fad.fa-inverse {
2031
- color: #fff;
2032
- }`;function q8(){var t=sm,e=am,n=je.familyPrefix,r=je.replacementClass,i=X8;if(n!==t||r!==e){var o=new RegExp("\\.".concat(t,"\\-"),"g"),s=new RegExp("\\--".concat(t,"\\-"),"g"),a=new RegExp("\\.".concat(e),"g");i=i.replace(o,".".concat(n,"-")).replace(s,"--".concat(n,"-")).replace(a,".".concat(r))}return i}var Z8=function(){function t(){w8(this,t),this.definitions={}}return E8(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 s=i.reduce(this._pullDefinitions,{});Object.keys(s).forEach(function(a){n.definitions[a]=_({},n.definitions[a]||{},s[a]),gm(a,s[a]),ym()})}},{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 s=i[o],a=s.prefix,c=s.iconName,u=s.icon;n[a]||(n[a]={}),n[a][c]=u}),n}}]),t}();function K8(){je.autoAddCss&&!Em&&(z8(q8()),Em=!0)}function J8(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map(function(r){return bm(r)})}}),Object.defineProperty(t,"node",{get:function(){if(!!sl){var r=Ie.createElement("div");return r.innerHTML=t.html,r.children}}}),t}function wm(t){var e=t.prefix,n=e===void 0?"fa":e,r=t.iconName;if(!!r)return Am(e6.definitions,n,r)||Am(xt.styles,n,r)}function $8(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=(e||{}).icon?e:wm(e||{}),i=n.mask;return i&&(i=(i||{}).icon?i:wm(i||{})),t(r,_({},n,{mask:i}))}}var e6=new Z8,Em=!1,$=$8(function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.transform,r=n===void 0?vr:n,i=e.symbol,o=i===void 0?!1:i,s=e.mask,a=s===void 0?null:s,c=e.maskId,u=c===void 0?null:c,f=e.title,l=f===void 0?null:f,d=e.titleId,h=d===void 0?null:d,p=e.classes,g=p===void 0?[]:p,m=e.attributes,y=m===void 0?{}:m,x=e.styles,v=x===void 0?{}:x;if(!!t){var S=t.prefix,b=t.iconName,A=t.icon;return J8(_({type:"icon"},t),function(){return K8(),je.autoA11y&&(l?y["aria-labelledby"]="".concat(je.replacementClass,"-title-").concat(h||ks()):(y["aria-hidden"]="true",y.focusable="false")),_8({icons:{main:vm(A),mask:a?vm(a.icon):{found:!1,width:null,height:null,icon:{}}},prefix:S,iconName:b,transform:_({},vr,r),symbol:o,title:l,maskId:u,titleId:h,extra:{attributes:y,styles:v,classes:g}})})}});/**
2125
+ .fad.fa-inverse,
2126
+ .fa-duotone.fa-inverse {
2127
+ color: var(--fa-inverse, #fff);
2128
+ }`;function p1(){var t=o1,e=a1,n=F.familyPrefix,r=F.replacementClass,i=uT;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 m1=!1;function Wl(){F.autoAddCss&&!m1&&(iT(p1()),m1=!0)}var lT={mixout:function(){return{dom:{css:p1,insertCss:Wl}}},hooks:function(){return{beforeDOMElementCreation:function(){Wl()},beforeI2svg:function(){Wl()}}}},Ut=pn||{};Ut[jt]||(Ut[jt]={}),Ut[jt].styles||(Ut[jt].styles={}),Ut[jt].hooks||(Ut[jt].hooks={}),Ut[jt].shims||(Ut[jt].shims=[]);var lt=Ut[jt],g1=[],fT=function t(){te.removeEventListener("DOMContentLoaded",t),hs=1,g1.map(function(e){return e()})},hs=!1;Rt&&(hs=(te.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(te.readyState),hs||te.addEventListener("DOMContentLoaded",fT));function dT(t){!Rt||(hs?setTimeout(t,0):g1.push(t))}function mo(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"?h1(t):"<".concat(e," ").concat(aT(r),">").concat(o.map(mo).join(""),"</").concat(e,">")}function y1(t,e,n){if(t&&t[e]&&t[e][n])return{prefix:e,iconName:n,icon:t[e][n]}}var hT=function(e,n){return function(r,i,o,a){return e.call(n,r,i,o,a)}},Xl=function(e,n,r,i){var o=Object.keys(e),a=o.length,s=i!==void 0?hT(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 pT(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 Zl(t){var e=pT(t);return e.length===1?e[0].toString(16):null}function mT(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 v1(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 ql(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,i=r===void 0?!1:r,o=v1(e);typeof lt.hooks.addPack=="function"&&!i?lt.hooks.addPack(t,v1(e)):lt.styles[t]=N(N({},lt.styles[t]||{}),o),t==="fas"&&ql("fa",e)}var go=lt.styles,gT=lt.shims,yT=Object.values(u1),Kl=null,b1={},A1={},x1={},w1={},C1={},vT=Object.keys(Vl);function bT(t){return~J5.indexOf(t)}function AT(t,e){var n=e.split("-"),r=n[0],i=n.slice(1).join("-");return r===t&&i!==""&&!bT(i)?i:null}var S1=function(){var e=function(o){return Xl(go,function(a,s,c){return a[c]=Xl(s,o,{}),a},{})};b1=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}),A1=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}),C1=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 go||F.autoFetchSvg,r=Xl(gT,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:{}});x1=r.names,w1=r.unicodes,Kl=ps(F.styleDefault)};rT(function(t){Kl=ps(t.styleDefault)}),S1();function Jl(t,e){return(b1[t]||{})[e]}function xT(t,e){return(A1[t]||{})[e]}function Vr(t,e){return(C1[t]||{})[e]}function E1(t){return x1[t]||{prefix:null,iconName:null}}function wT(t){var e=w1[t],n=Jl("fas",t);return e||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function gn(){return Kl}var $l=function(){return{prefix:null,iconName:null,rest:[]}};function ps(t){var e=Vl[t],n=ls[t]||ls[e],r=t in lt.styles?t:null;return n||r||null}function ms(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=AT(F.familyPrefix,s);if(go[s]?(s=yT.includes(s)?_5[s]:s,i=s,a.prefix=s):vT.indexOf(s)>-1?(i=s,a.prefix=ps(s)):c?a.iconName=c:s!==F.replacementClass&&a.rest.push(s),!r&&a.prefix&&a.iconName){var u=i==="fa"?E1(a.iconName):{},f=Vr(a.prefix,a.iconName);u.prefix&&(i=null),a.iconName=u.iconName||f||a.iconName,a.prefix=u.prefix||a.prefix,a.prefix==="far"&&!go.far&&go.fas&&!F.autoFetchSvg&&(a.prefix="fas")}return a},$l());return(o.prefix==="fa"||i==="fa")&&(o.prefix=gn()||"fas"),o}var CT=function(){function t(){B5(this,t),this.definitions={}}return O5(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]=N(N({},n.definitions[s]||{}),a[s]),ql(s,a[s]);var c=u1[s];c&&ql(c,a[s]),S1()})}},{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}(),D1=[],Yr={},_r={},ST=Object.keys(_r);function ET(t,e){var n=e.mixoutsTo;return D1=t,Yr={},Object.keys(_r).forEach(function(r){ST.indexOf(r)===-1&&delete _r[r]}),D1.forEach(function(r){var i=r.mixout?r.mixout():{};if(Object.keys(i).forEach(function(a){typeof i[a]=="function"&&(n[a]=i[a]),ss(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){Yr[a]||(Yr[a]=[]),Yr[a].push(o[a])})}r.provides&&r.provides(_r)}),n}function ef(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=Yr[t]||[];return o.forEach(function(a){e=a.apply(null,[e].concat(r))}),e}function rr(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=Yr[t]||[];i.forEach(function(o){o.apply(null,n)})}function Gt(){var t=arguments[0],e=Array.prototype.slice.call(arguments,1);return _r[t]?_r[t].apply(null,e):void 0}function tf(t){t.prefix==="fa"&&(t.prefix="fas");var e=t.iconName,n=t.prefix||gn();if(!!e)return e=Vr(n,e)||e,y1(M1.definitions,n,e)||y1(lt.styles,n,e)}var M1=new CT,DT=function(){F.autoReplaceSvg=!1,F.observeMutations=!1,rr("noAuto")},MT={i2svg:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Rt?(rr("beforeI2svg",e),Gt("pseudoElements2svg",e),Gt("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,dT(function(){IT({autoReplaceSvgRoot:n}),rr("watch",e)})}},TT={icon:function(e){if(e===null)return null;if(ss(e)==="object"&&e.prefix&&e.iconName)return{prefix:e.prefix,iconName:Vr(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=ps(e[0]);return{prefix:r,iconName:Vr(r,n)||n}}if(typeof e=="string"&&(e.indexOf("".concat(F.familyPrefix,"-"))>-1||e.match(W5))){var i=ms(e.split(" "),{skipLookups:!0});return{prefix:i.prefix||gn(),iconName:Vr(i.prefix,i.iconName)||i.iconName}}if(typeof e=="string"){var o=gn();return{prefix:o,iconName:Vr(o,e)||e}}}},Ve={noAuto:DT,config:F,dom:MT,parse:TT,library:M1,findIconDefinition:tf,toHtml:mo},IT=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.autoReplaceSvgRoot,r=n===void 0?te:n;(Object.keys(lt.styles).length>0||F.autoFetchSvg)&&Rt&&F.autoReplaceSvg&&Ve.dom.i2svg({node:r})};function gs(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map(function(r){return mo(r)})}}),Object.defineProperty(t,"node",{get:function(){if(!!Rt){var r=te.createElement("div");return r.innerHTML=t.html,r.children}}}),t}function kT(t){var e=t.children,n=t.main,r=t.mask,i=t.attributes,o=t.styles,a=t.transform;if(_l(a)&&n.found&&!r.found){var s=n.width,c=n.height,u={x:s/c/2,y:.5};i.style=ds(N(N({},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 NT(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:N(N({},i),{},{id:a}),children:r}]}]}function nf(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,h=d===void 0?!1:d,p=r.found?r:n,m=p.width,y=p.height,g=i==="fak",A=[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(" "),x={children:[],attributes:N(N({},l.attributes),{},{"data-prefix":i,"data-icon":o,class:A,role:l.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(m," ").concat(y)})},C=g&&!~l.classes.indexOf("fa-fw")?{width:"".concat(m/y*16*.0625,"em")}:{};h&&(x.attributes[tr]=""),c&&(x.children.push({tag:"title",attributes:{id:x.attributes["aria-labelledby"]||"title-".concat(f||po())},children:[c]}),delete x.attributes.title);var b=N(N({},x),{},{prefix:i,iconName:o,main:n,mask:r,maskId:u,transform:a,symbol:s,styles:N(N({},C),l.styles)}),v=r.found&&n.found?Gt("generateAbstractMask",b)||{children:[],attributes:{}}:Gt("generateAbstractIcon",b)||{children:[],attributes:{}},w=v.children,E=v.attributes;return b.children=w,b.attributes=E,s?NT(b):kT(b)}function T1(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=N(N(N({},a.attributes),o?{title:o}:{}),{},{class:a.classes.join(" ")});c&&(u[tr]="");var f=N({},a.styles);_l(i)&&(f.transform=cT({transform:i,startCentered:!0,width:n,height:r}),f["-webkit-transform"]=f.transform);var l=ds(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 LT(t){var e=t.content,n=t.title,r=t.extra,i=N(N(N({},r.attributes),n?{title:n}:{}),{},{class:r.classes.join(" ")}),o=ds(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 rf=lt.styles;function of(t){var e=t[0],n=t[1],r=t.slice(4),i=zl(r,1),o=i[0],a=null;return Array.isArray(o)?a={tag:"g",attributes:{class:"".concat(F.familyPrefix,"-").concat(nr.GROUP)},children:[{tag:"path",attributes:{class:"".concat(F.familyPrefix,"-").concat(nr.SECONDARY),fill:"currentColor",d:o[0]}},{tag:"path",attributes:{class:"".concat(F.familyPrefix,"-").concat(nr.PRIMARY),fill:"currentColor",d:o[1]}}]}:a={tag:"path",attributes:{fill:"currentColor",d:o}},{found:!0,width:e,height:n,icon:a}}var BT={found:!1,width:512,height:512};function OT(t,e){!c1&&!F.showMissingIcons&&t&&console.error('Icon with name "'.concat(t,'" and prefix "').concat(e,'" is missing.'))}function af(t,e){var n=e;return e==="fa"&&F.styleDefault!==null&&(e=gn()),new Promise(function(r,i){if(Gt("missingIconAbstract"),n==="fa"){var o=E1(t)||{};t=o.iconName||t,e=o.prefix||e}if(t&&e&&rf[e]&&rf[e][t]){var a=rf[e][t];return r(of(a))}OT(t,e),r(N(N({},BT),{},{icon:F.showMissingIcons&&t?Gt("missingIconAbstract")||{}:{}}))})}var I1=function(){},sf=F.measurePerformance&&us&&us.mark&&us.measure?us:{mark:I1,measure:I1},yo='FA "6.1.1"',PT=function(e){return sf.mark("".concat(yo," ").concat(e," begins")),function(){return k1(e)}},k1=function(e){sf.mark("".concat(yo," ").concat(e," ends")),sf.measure("".concat(yo," ").concat(e),"".concat(yo," ").concat(e," begins"),"".concat(yo," ").concat(e," ends"))},cf={begin:PT,end:k1},ys=function(){};function N1(t){var e=t.getAttribute?t.getAttribute(tr):null;return typeof e=="string"}function FT(t){var e=t.getAttribute?t.getAttribute(Hl):null,n=t.getAttribute?t.getAttribute(Ql):null;return e&&n}function zT(t){return t&&t.classList&&t.classList.contains&&t.classList.contains(F.replacementClass)}function RT(){if(F.autoReplaceSvg===!0)return vs.replace;var t=vs[F.autoReplaceSvg];return t||vs.replace}function jT(t){return te.createElementNS("http://www.w3.org/2000/svg",t)}function UT(t){return te.createElement(t)}function L1(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.ceFn,r=n===void 0?t.tag==="svg"?jT:UT: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(L1(a,{ceFn:r}))}),i}function GT(t){var e=" ".concat(t.outerHTML," ");return e="".concat(e,"Font Awesome fontawesome.com "),e}var vs={replace:function(e){var n=e[0];if(n.parentNode)if(e[1].forEach(function(i){n.parentNode.insertBefore(L1(i),n)}),n.getAttribute(tr)===null&&F.keepOriginalSource){var r=te.createComment(GT(n));n.parentNode.replaceChild(r,n)}else n.remove()},nest:function(e){var n=e[0],r=e[1];if(~Yl(n).indexOf(F.replacementClass))return vs.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 mo(s)}).join(`
2129
+ `);n.setAttribute(tr,""),n.innerHTML=a}};function B1(t){t()}function O1(t,e){var n=typeof e=="function"?e:ys;if(t.length===0)n();else{var r=B1;F.mutateApproach===V5&&(r=pn.requestAnimationFrame||B1),r(function(){var i=RT(),o=cf.begin("mutate");t.map(i),o(),n()})}}var uf=!1;function P1(){uf=!0}function lf(){uf=!1}var bs=null;function F1(t){if(!!r1&&!!F.observeMutations){var e=t.treeCallback,n=e===void 0?ys:e,r=t.nodeCallback,i=r===void 0?ys:r,o=t.pseudoElementsCallback,a=o===void 0?ys:o,s=t.observeMutationsRoot,c=s===void 0?te:s;bs=new r1(function(u){if(!uf){var f=gn();Qr(u).forEach(function(l){if(l.type==="childList"&&l.addedNodes.length>0&&!N1(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"&&N1(l.target)&&~K5.indexOf(l.attributeName))if(l.attributeName==="class"&&FT(l.target)){var d=ms(Yl(l.target)),h=d.prefix,p=d.iconName;l.target.setAttribute(Hl,h||f),p&&l.target.setAttribute(Ql,p)}else zT(l.target)&&i(l.target)})}}),Rt&&bs.observe(c,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function HT(){!bs||bs.disconnect()}function QT(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 VT(t){var e=t.getAttribute("data-prefix"),n=t.getAttribute("data-icon"),r=t.innerText!==void 0?t.innerText.trim():"",i=ms(Yl(t));return i.prefix||(i.prefix=gn()),e&&n&&(i.prefix=e,i.iconName=n),i.iconName&&i.prefix||i.prefix&&r.length>0&&(i.iconName=xT(i.prefix,t.innerText)||Jl(i.prefix,Zl(t.innerText))),i}function YT(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||po()):(e["aria-hidden"]="true",e.focusable="false")),e}function _T(){return{iconName:null,title:null,titleId:null,prefix:null,transform:At,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}}function z1(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0},n=VT(t),r=n.iconName,i=n.prefix,o=n.rest,a=YT(t),s=ef("parseNodeAttributes",{},t),c=e.styleParser?QT(t):[];return N({iconName:r,title:t.getAttribute("title"),titleId:t.getAttribute("data-fa-title-id"),prefix:i,transform:At,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:o,styles:c,attributes:a}},s)}var WT=lt.styles;function R1(t){var e=F.autoReplaceSvg==="nest"?z1(t,{styleParser:!1}):z1(t);return~e.extra.classes.indexOf(l1)?Gt("generateLayersText",t,e):Gt("generateSvgReplacementMutation",t,e)}function j1(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!Rt)return Promise.resolve();var n=te.documentElement.classList,r=function(l){return n.add("".concat(s1,"-").concat(l))},i=function(l){return n.remove("".concat(s1,"-").concat(l))},o=F.autoFetchSvg?Object.keys(Vl):Object.keys(WT),a=[".".concat(l1,":not([").concat(tr,"])")].concat(o.map(function(f){return".".concat(f,":not([").concat(tr,"])")})).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=cf.begin("onTree"),u=s.reduce(function(f,l){try{var d=R1(l);d&&f.push(d)}catch(h){c1||h.name==="MissingIcon"&&console.error(h)}return f},[]);return new Promise(function(f,l){Promise.all(u).then(function(d){O1(d,function(){r("active"),r("complete"),i("pending"),typeof e=="function"&&e(),c(),f()})}).catch(function(d){c(),l(d)})})}function XT(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;R1(t).then(function(n){n&&O1([n],e)})}function ZT(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=(e||{}).icon?e:tf(e||{}),i=n.mask;return i&&(i=(i||{}).icon?i:tf(i||{})),t(r,N(N({},n),{},{mask:i}))}}var qT=function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.transform,i=r===void 0?At: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,h=n.titleId,p=h===void 0?null:h,m=n.classes,y=m===void 0?[]:m,g=n.attributes,A=g===void 0?{}:g,x=n.styles,C=x===void 0?{}:x;if(!!e){var b=e.prefix,v=e.iconName,w=e.icon;return gs(N({type:"icon"},e),function(){return rr("beforeDOMElementCreation",{iconDefinition:e,params:n}),F.autoA11y&&(d?A["aria-labelledby"]="".concat(F.replacementClass,"-title-").concat(p||po()):(A["aria-hidden"]="true",A.focusable="false")),nf({icons:{main:of(w),mask:c?of(c.icon):{found:!1,width:null,height:null,icon:{}}},prefix:b,iconName:v,transform:N(N({},At),i),symbol:a,title:d,maskId:f,titleId:p,extra:{attributes:A,styles:C,classes:y}})})}},KT={mixout:function(){return{icon:ZT(qT)}},hooks:function(){return{mutationObserverCallbacks:function(n){return n.treeCallback=j1,n.nodeCallback=XT,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 j1(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(h,p){Promise.all([af(i,s),f.iconName?af(f.iconName,f.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(function(m){var y=zl(m,2),g=y[0],A=y[1];h([n,nf({icons:{main:g,mask:A},prefix:s,iconName:i,transform:c,symbol:u,maskId:l,title:o,titleId:a,extra:d,watchable:!0})])}).catch(p)})},e.generateAbstractIcon=function(n){var r=n.children,i=n.attributes,o=n.main,a=n.transform,s=n.styles,c=ds(s);c.length>0&&(i.style=c);var u;return _l(a)&&(u=Gt("generateAbstractTransformGrouping",{main:o,transform:a,containerWidth:o.width,iconWidth:o.width})),r.push(u||o.icon),{children:r,attributes:i}}}},JT={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 gs({type:"layer"},function(){rr("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(cs(o)).join(" ")},children:a}]})}}}},$T={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 gs({type:"counter",content:n},function(){return rr("beforeDOMElementCreation",{content:n,params:r}),LT({content:n.toString(),title:o,extra:{attributes:u,styles:l,classes:["".concat(F.familyPrefix,"-layers-counter")].concat(cs(s))}})})}}}},e6={mixout:function(){return{text:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.transform,o=i===void 0?At: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,h=d===void 0?{}:d;return gs({type:"text",content:n},function(){return rr("beforeDOMElementCreation",{content:n,params:r}),T1({content:n,transform:N(N({},At),o),title:s,extra:{attributes:l,styles:h,classes:["".concat(F.familyPrefix,"-layers-text")].concat(cs(u))}})})}}},provides:function(e){e.generateLayersText=function(n,r){var i=r.title,o=r.transform,a=r.extra,s=null,c=null;if(i1){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,T1({content:n.innerHTML,width:s,height:c,transform:o,title:i,extra:a,watchable:!0})])}}},t6=new RegExp('"',"ug"),U1=[1105920,1112319];function n6(t){var e=t.replace(t6,""),n=mT(e,0),r=n>=U1[0]&&n<=U1[1],i=e.length===2?e[0]===e[1]:!1;return{value:Zl(i?e[0]:e),isSecondary:r||i}}function G1(t,e){var n="".concat(Q5).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(Gl)===e})[0],s=pn.getComputedStyle(t,e),c=s.getPropertyValue("font-family").match(X5),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])?ls[c[2].toLowerCase()]:Z5[u],h=n6(l),p=h.value,m=h.isSecondary,y=c[0].startsWith("FontAwesome"),g=Jl(d,p),A=g;if(y){var x=wT(p);x.iconName&&x.prefix&&(g=x.iconName,d=x.prefix)}if(g&&!m&&(!a||a.getAttribute(Hl)!==d||a.getAttribute(Ql)!==A)){t.setAttribute(n,A),a&&t.removeChild(a);var C=_T(),b=C.extra;b.attributes[Gl]=e,af(g,d).then(function(v){var w=nf(N(N({},C),{},{icons:{main:v,mask:$l()},prefix:d,iconName:A,extra:b,watchable:!0})),E=te.createElement("svg");e==="::before"?t.insertBefore(E,t.firstChild):t.appendChild(E),E.outerHTML=w.map(function(k){return mo(k)}).join(`
2130
+ `),t.removeAttribute(n),r()}).catch(i)}else r()}else r()})}function r6(t){return Promise.all([G1(t,"::before"),G1(t,"::after")])}function i6(t){return t.parentNode!==document.head&&!~Y5.indexOf(t.tagName.toUpperCase())&&!t.getAttribute(Gl)&&(!t.parentNode||t.parentNode.tagName!=="svg")}function H1(t){if(!!Rt)return new Promise(function(e,n){var r=Qr(t.querySelectorAll("*")).filter(i6).map(r6),i=cf.begin("searchPseudoElements");P1(),Promise.all(r).then(function(){i(),lf(),e()}).catch(function(){i(),lf(),n()})})}var o6={hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=H1,n}}},provides:function(e){e.pseudoElements2svg=function(n){var r=n.node,i=r===void 0?te:r;F.searchPseudoElements&&H1(i)}}},Q1=!1,a6={mixout:function(){return{dom:{unwatch:function(){P1(),Q1=!0}}}},hooks:function(){return{bootstrap:function(){F1(ef("mutationObserverCallbacks",{}))},noAuto:function(){HT()},watch:function(n){var r=n.observeMutationsRoot;Q1?lf():F1(ef("mutationObserverCallbacks",{observeMutationsRoot:r}))}}}},V1=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)},s6={mixout:function(){return{parse:{transform:function(n){return V1(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,r){var i=r.getAttribute("data-fa-transform");return i&&(n.transform=V1(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)")},h={outer:s,inner:l,path:d};return{tag:"g",attributes:N({},h.outer),children:[{tag:"g",attributes:N({},h.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:N(N({},r.icon.attributes),h.path)}]}]}}}},ff={x:0,y:0,width:"100%",height:"100%"};function Y1(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 c6(t){return t.tag==="g"?t.children:[t]}var u6={hooks:function(){return{parseNodeAttributes:function(n,r){var i=r.getAttribute("data-fa-mask"),o=i?ms(i.split(" ").map(function(a){return a.trim()})):$l();return o.prefix||(o.prefix=gn()),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,h=sT({transform:c,containerWidth:l,iconWidth:u}),p={tag:"rect",attributes:N(N({},ff),{},{fill:"white"})},m=f.children?{children:f.children.map(Y1)}:{},y={tag:"g",attributes:N({},h.inner),children:[Y1(N({tag:f.tag,attributes:N(N({},f.attributes),h.path)},m))]},g={tag:"g",attributes:N({},h.outer),children:[y]},A="mask-".concat(s||po()),x="clip-".concat(s||po()),C={tag:"mask",attributes:N(N({},ff),{},{id:A,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[p,g]},b={tag:"defs",children:[{tag:"clipPath",attributes:{id:x},children:c6(d)},C]};return r.push(b,{tag:"rect",attributes:N({fill:"currentColor","clip-path":"url(#".concat(x,")"),mask:"url(#".concat(A,")")},ff)}),{children:r,attributes:i}}}},l6={provides:function(e){var n=!1;pn.matchMedia&&(n=pn.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:N(N({},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=N(N({},o),{},{attributeName:"opacity"}),s={tag:"circle",attributes:N(N({},i),{},{cx:"256",cy:"364",r:"28"}),children:[]};return n||s.children.push({tag:"animate",attributes:N(N({},o),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:N(N({},a),{},{values:"1;0;1;1;0;1;"})}),r.push(s),r.push({tag:"path",attributes:N(N({},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:N(N({},a),{},{values:"1;0;0;0;0;1;"})}]}),n||r.push({tag:"path",attributes:N(N({},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:N(N({},a),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:r}}}},f6={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}}}},d6=[lT,KT,JT,$T,e6,o6,a6,s6,u6,l6,f6];ET(d6,{mixoutsTo:Ve}),Ve.noAuto,Ve.config,Ve.library,Ve.dom,Ve.parse,Ve.findIconDefinition,Ve.toHtml;var ne=Ve.icon;Ve.layer,Ve.text,Ve.counter;/**
2033
2131
  * @license
2034
2132
  * Copyright 2018 Google LLC
2035
2133
  * SPDX-License-Identifier: BSD-3-Clause
2036
- */const t6=xr(class extends Hi{constructor(t){var e;if(super(t),t.type!==Ot.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.ut===void 0){this.ut=new Set;for(const r in e)this.ut.add(r);return this.render(e)}this.ut.forEach(r=>{e[r]==null&&(this.ut.delete(r),r.includes("-")?n.removeProperty(r):n[r]="")});for(const r in e){const i=e[r];i!=null&&(this.ut.add(r),r.includes("-")?n.setProperty(r,i):n[r]=i)}return xe}}),Sm="close-dialog";function n6(){return new CustomEvent(Sm,{bubbles:!0})}function wr(t="default"){const e=document.createElement("div");e.classList.add("gs-modal"),t!="default"&&e.classList.add(t);const n=i=>{var o;switch(i.key){case"Escape":{e.querySelector(".btn-cancel").click(),i.stopPropagation();break}case"Enter":{if(((o=i.target)==null?void 0:o.tagName)=="TEXTAREA")return;e.querySelector(".btn-primary").click(),i.stopPropagation();break}}};e.addEventListener("keydown",n),Re(M`<div class="backdrop"></div><div class="content"></div>`,e);const r=()=>{e.querySelector(".backdrop").addEventListener("transitionend",()=>e.remove()),e.classList.remove("visible"),document.body.classList.remove(En)};return e.addEventListener("keydown",i=>{i.stopPropagation()}),e.addEventListener(Sm,r),document.body.appendChild(e),window.requestAnimationFrame(()=>e.classList.add("visible")),t!="tour"&&document.body.classList.add(En),{content:e.querySelector(".content"),close:r}}function st(t,e={}){var i;const n=wr(),r=e.title;return(i=e.okLabel)!=null||(e.okLabel="OK"),new Promise((o,s)=>{const a=()=>{n.close(),o(!0)},c=M`${r?M`<div class="modal-title">${r}</div>`:R}<div class="modal-body" style="max-width:700px">${t}</div><div class="modal-buttons">${e.cancelButton?M`<button @click="${()=>{n.close(),o(!1)}}">Cancel</button>`:R} <button @click="${a}">${e.okLabel}</button></div>`;Re(c,n.content)})}function r6(t,e){var n,r;Xt((n=t.scale)==null?void 0:n.type)?i6(t,e):nt((r=t.scale)==null?void 0:r.type)?o6(t,e):st("Not implemented (yet).")}function i6(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=t.scale,i=wr(),o=M`<div class="modal-title">Filter by <em>${t.name}</em></div>`,s=new Set,a=h=>{n(e.actions.filterByNominal({values:r.domain().filter(p=>s.has(p)),attribute:t.attribute,remove:h})),i.close()},c=h=>{const p=h.target;p.checked?s.add(p.value):s.delete(p.value),d()},u=()=>M`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button ?disabled="${!s.size}" @click="${()=>a(!1)}">${$(Qi).node[0]} Retain</button> <button ?disabled="${!s.size}" @click="${()=>a(!0)}">${$(il).node[0]} Remove</button></div>`,f=r,l=M`<p>Please select one or more categories and choose an action.</p><ul class="gs-checkbox-list" @input="${c}" tabindex="0">${r.domain().map(h=>M`<li><label class="checkbox"><span class="color" style="${t6({backgroundColor:f(h).toString()})}"></span> <input type="checkbox" .value="${h}"> ${h}</label></li>`)}</ul>`;function d(){Re(M`${o}<div class="modal-body">${l}</div>${u()}`,i.content)}d(),i.content.querySelector(".gs-checkbox-list input[type='checkbox']").focus()}function o6(t,e){const n=e.provenance.storeHelper.getDispatcher();let r="lt",i;const o=wr(),s=M`<div class="modal-title">Filter by <em>${t.name}</em></div>`,a=h=>{n(e.actions.filterByQuantitative({attribute:t.attribute,operator:r,operand:i})),o.close()},c=()=>M`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>o.close()}">Cancel</button> <button class="btn-primary" ?disabled="${typeof i=="undefined"}" @click="${()=>a()}">${$(Qi).node[0]} Retain</button></div>`,u=h=>{r=h.target.value,d()},f=h=>{const p=h.target.value;i=p.length>0?+p:void 0,d()},l=M`<div class="gs-form-group"><label>Select samples where <em>${t.name}</em> is</label> <select .value="${r}" @change="${u}">${Object.entries(s6).map(([h,p])=>M`<option .value="${h}">${p}</option>`)}</select> <input type="number" placeholder="Please enter a numeric value" @input="${f}"></div>`;function d(){Re(M`${s}<div class="modal-body">${l}</div>${c()}`,o.content)}d(),o.content.querySelector("select").focus()}const s6={lt:"less than",lte:"less than or equal to",eq:"equal to",gte:"greater than or equal to",gt:"greater than"};function a6(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=[{operand:void 0,operator:"lt"}],i=wr(),o=M`<div class="modal-title">Group by threshold on <em>${t.name}</em></div>`,s=d=>{n(e.actions.groupByThresholds({attribute:t.attribute,thresholds:r})),i.close()},a=()=>M`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button class="btn-primary" ?disabled="${!c6(r)}" @click="${()=>s()}">${$(Vi).node[0]} Group</button></div>`,c=d=>{const h=d.target.value;r[0].operator=h,l()},u=d=>{const h=d.target.value;r[0].operand=h.length>0?+h:void 0,l()},f=M`<div class="gs-form-group"><label>Split into 2 groups using the threshold:</label><div class="threshold-flex"><select .value="${r[0].operator}" @change="${c}"><option value="lt">${"<"}</option><option value="lte">${"\u2264"}</option></select> <input .value="${""+r[0].operand}" type="number" placeholder="Numeric value" @input="${u}"></div></div>`;function l(){Re(M`${o}<div class="modal-body">${f}</div>${a()}`,i.content)}l(),i.content.querySelector("select").focus()}function c6(t){return t[0].operator&&typeof t[0].operand=="number"}function pl(t,e,n,r){var l;const i=r.actions,o=e.attribute,s=r.provenance.storeHelper.getDispatcher(),a=[];t&&a.push({label:t,type:"header"});const c=d=>{const h=r.provenance.getActionInfo(d);return{label:h.title,icon:h.icon,callback:()=>s(d)}},u=(...d)=>a.push(...d.map(c));u(i.sortBy({attribute:o}));const f=(l=e==null?void 0:e.type)!=null?l:"identifier";return f!="quantitative"?(f!="identifier"&&u(i.groupByNominal({attribute:o}),i.retainFirstOfEach({attribute:o})),u(i.filterByNominal({attribute:o,values:[n]}),i.filterByNominal({attribute:o,remove:!0,values:[n]}))):(u(i.groupToQuartiles({attribute:o})),a.push({icon:Vi,label:"Group by thresholds...",callback:()=>a6(e,r)}),u6(n)?u(i.filterByQuantitative({attribute:o,operator:"gte",operand:+n}),i.filterByQuantitative({attribute:o,operator:"lte",operand:+n})):u(i.removeUndefined({attribute:o}))),f!=="identifier"&&a.push({icon:Qi,label:"Advanced filter...",callback:()=>r6(e,r)}),a}function u6(t){return t!=null&&t!==""&&!(typeof t=="number"&&isNaN(t))}function l6(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var sn={},Pn={};Object.defineProperty(Pn,"__esModule",{value:!0}),Pn.ActionCreators=Pn.ActionTypes=void 0;var Fn={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"};Pn.ActionTypes=Fn;var f6={undo:function(){return{type:Fn.UNDO}},redo:function(){return{type:Fn.REDO}},jumpToFuture:function(e){return{type:Fn.JUMP_TO_FUTURE,index:e}},jumpToPast:function(e){return{type:Fn.JUMP_TO_PAST,index:e}},jump:function(e){return{type:Fn.JUMP,index:e}},clearHistory:function(){return{type:Fn.CLEAR_HISTORY}}};Pn.ActionCreators=f6;var vt={};Object.defineProperty(vt,"__esModule",{value:!0}),vt.parseActions=Bs,vt.isHistory=d6,vt.includeAction=h6,vt.excludeAction=p6,vt.combineFilters=g6,vt.groupByActionTypes=m6,vt.newHistory=y6;function Bs(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Array.isArray(t)?t:typeof t=="string"?[t]:e}function d6(t){return typeof t.present!="undefined"&&typeof t.future!="undefined"&&typeof t.past!="undefined"&&Array.isArray(t.future)&&Array.isArray(t.past)}function h6(t){var e=Bs(t);return function(n){return e.indexOf(n.type)>=0}}function p6(t){var e=Bs(t);return function(n){return e.indexOf(n.type)<0}}function g6(){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,s,a){return r(o,s,a)&&i(o,s,a)}},function(){return!0})}function m6(t){var e=Bs(t);return function(n){return e.indexOf(n.type)>=0?n.type:null}}function y6(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 Cm={},Er={};Object.defineProperty(Er,"__esModule",{value:!0}),Er.set=D6,Er.start=E6,Er.end=S6,Er.log=C6;function wt(t){return x6(t)||b6(t)||A6()}function A6(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function b6(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function x6(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 Ps,$e,gl={prevState:"#9E9E9E",action:"#03A9F4",nextState:"#4CAF50"};function v6(){$e={header:[],prev:[],action:[],next:[],msgs:[]}}function w6(){var t=$e,e=t.header,n=t.prev,r=t.next,i=t.action,o=t.msgs;if(console.group){var s,a,c,u,f;(s=console).groupCollapsed.apply(s,wt(e)),(a=console).log.apply(a,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,h,p,g;(l=console).log.apply(l,wt(e)),(d=console).log.apply(d,wt(n)),(h=console).log.apply(h,wt(i)),(p=console).log.apply(p,wt(r)),(g=console).log.apply(g,wt(o))}}function ml(t,e,n){return["%c".concat(t),"color: ".concat(e,"; font-weight: bold"),n]}function E6(t,e){v6(),Ps&&(console.group?($e.header=["%credux-undo","font-style: italic","action",t.type],$e.action=ml("action",gl.action,t),$e.prev=ml("prev history",gl.prevState,e)):($e.header=["redux-undo action",t.type],$e.action=["action",t],$e.prev=["prev history",e]))}function S6(t){Ps&&(console.group?$e.next=ml("next history",gl.nextState,t):$e.next=["next history",t],w6())}function C6(){if(Ps){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];$e.msgs=$e.msgs.concat([].concat(e,[`
2037
- `]))}}function D6(t){Ps=t}(function(t){function e(b){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e=function(w){return typeof w}:e=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},e(b)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=S;var n=s(Er),r=Pn,i=vt;function o(){if(typeof WeakMap!="function")return null;var b=new WeakMap;return o=function(){return b},b}function s(b){if(b&&b.__esModule)return b;if(b===null||e(b)!=="object"&&typeof b!="function")return{default:b};var A=o();if(A&&A.has(b))return A.get(b);var w={},E=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var B in b)if(Object.prototype.hasOwnProperty.call(b,B)){var O=E?Object.getOwnPropertyDescriptor(b,B):null;O&&(O.get||O.set)?Object.defineProperty(w,B,O):w[B]=b[B]}return w.default=b,A&&A.set(b,w),w}function a(b,A){var w=Object.keys(b);if(Object.getOwnPropertySymbols){var E=Object.getOwnPropertySymbols(b);A&&(E=E.filter(function(B){return Object.getOwnPropertyDescriptor(b,B).enumerable})),w.push.apply(w,E)}return w}function c(b){for(var A=1;A<arguments.length;A++){var w=arguments[A]!=null?arguments[A]:{};A%2?a(Object(w),!0).forEach(function(E){u(b,E,w[E])}):Object.getOwnPropertyDescriptors?Object.defineProperties(b,Object.getOwnPropertyDescriptors(w)):a(Object(w)).forEach(function(E){Object.defineProperty(b,E,Object.getOwnPropertyDescriptor(w,E))})}return b}function u(b,A,w){return A in b?Object.defineProperty(b,A,{value:w,enumerable:!0,configurable:!0,writable:!0}):b[A]=w,b}function f(b){return h(b)||d(b)||l()}function l(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function d(b){if(Symbol.iterator in Object(b)||Object.prototype.toString.call(b)==="[object Arguments]")return Array.from(b)}function h(b){if(Array.isArray(b)){for(var A=0,w=new Array(b.length);A<b.length;A++)w[A]=b[A];return w}}function p(b,A){var w=(0,i.newHistory)([],b,[]);return A&&(w._latestUnfiltered=null),w}function g(b,A,w,E){var B=b.past.length+1;n.log("inserting",A),n.log("new free: ",w-B);var O=b.past,D=b._latestUnfiltered,k=w&&w<=B,z=O.slice(k?1:0),G=D!=null?[].concat(f(z),[D]):z;return(0,i.newHistory)(G,A,[],E)}function m(b,A){if(A<0||A>=b.future.length)return b;var w=b.past,E=b.future,B=b._latestUnfiltered,O=[].concat(f(w),[B],f(E.slice(0,A))),D=E[A],k=E.slice(A+1);return(0,i.newHistory)(O,D,k)}function y(b,A){if(A<0||A>=b.past.length)return b;var w=b.past,E=b.future,B=b._latestUnfiltered,O=w.slice(0,A),D=[].concat(f(w.slice(A+1)),[B],f(E)),k=w[A];return(0,i.newHistory)(O,k,D)}function x(b,A){return A>0?m(b,A-1):A<0?y(b,b.past.length+A):b}function v(b,A){return A.indexOf(b)>-1?b:!b}function S(b){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.set(A.debug);var w=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},A,{initTypes:(0,i.parseActions)(A.initTypes,["@@redux-undo/INIT"]),clearHistoryType:(0,i.parseActions)(A.clearHistoryType,[r.ActionTypes.CLEAR_HISTORY])}),E=w.neverSkipReducer?function(O,D){for(var k=arguments.length,z=new Array(k>2?k-2:0),G=2;G<k;G++)z[G-2]=arguments[G];return c({},O,{present:b.apply(void 0,[O.present,D].concat(z))})}:function(O){return O},B;return function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:B,D=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.start(D,O);for(var k=O,z=arguments.length,G=new Array(z>2?z-2:0),ue=2;ue<z;ue++)G[ue-2]=arguments[ue];if(!B)if(n.log("history is uninitialized"),O===void 0){var Ae={type:"@@redux-undo/CREATE_HISTORY"},He=b.apply(void 0,[O,Ae].concat(G));return k=p(He,w.ignoreInitialState),n.log("do not set initialState on probe actions"),n.end(k),k}else(0,i.isHistory)(O)?(k=B=w.ignoreInitialState?O:(0,i.newHistory)(O.past,O.present,O.future),n.log("initialHistory initialized: initialState is a history",B)):(k=B=p(O,w.ignoreInitialState),n.log("initialHistory initialized: initialState is not a history",B));var U;switch(D.type){case void 0:return k;case w.undoType:return U=x(k,-1),n.log("perform undo"),n.end(U),E.apply(void 0,[U,D].concat(G));case w.redoType:return U=x(k,1),n.log("perform redo"),n.end(U),E.apply(void 0,[U,D].concat(G));case w.jumpToPastType:return U=y(k,D.index),n.log("perform jumpToPast to ".concat(D.index)),n.end(U),E.apply(void 0,[U,D].concat(G));case w.jumpToFutureType:return U=m(k,D.index),n.log("perform jumpToFuture to ".concat(D.index)),n.end(U),E.apply(void 0,[U,D].concat(G));case w.jumpType:return U=x(k,D.index),n.log("perform jump to ".concat(D.index)),n.end(U),E.apply(void 0,[U,D].concat(G));case v(D.type,w.clearHistoryType):return U=p(k.present,w.ignoreInitialState),n.log("perform clearHistory"),n.end(U),E.apply(void 0,[U,D].concat(G));default:if(U=b.apply(void 0,[k.present,D].concat(G)),w.initTypes.some(function(nf){return nf===D.type}))return n.log("reset history due to init action"),n.end(B),B;if(k._latestUnfiltered===U)return k;var ie=typeof w.filter=="function"&&!w.filter(D,U,k);if(ie){var to=(0,i.newHistory)(k.past,U,k.future,k.group);return w.syncFilter||(to._latestUnfiltered=k._latestUnfiltered),n.log("filter ignored action, not storing it in past"),n.end(to),to}var no=w.groupBy(D,U,k);if(no!=null&&no===k.group){var ta=(0,i.newHistory)(k.past,U,k.future,k.group);return n.log("groupBy grouped the action with the previous action"),n.end(ta),ta}return k=g(k,U,w.limit,no),n.log("inserted new state into history"),n.end(k),k}}}})(Cm),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=Pn,n=vt,r=i(Cm);function i(o){return o&&o.__esModule?o:{default:o}}}(sn);var M6=l6(sn);function yl(t){return t.split("-")[0]}function Dm(t){return t.split("-")[1]}function Mm(t){return["top","bottom"].includes(yl(t))?"x":"y"}function Im(t){return t==="y"?"height":"width"}function Tm(t){let{reference:e,floating:n,placement:r}=t;const i=e.x+e.width/2-n.width/2,o=e.y+e.height/2-n.height/2;let s;switch(yl(r)){case"top":s={x:i,y:e.y-n.height};break;case"bottom":s={x:i,y:e.y+e.height};break;case"right":s={x:e.x+e.width,y:o};break;case"left":s={x:e.x-n.width,y:o};break;default:s={x:e.x,y:e.y}}const a=Mm(r),c=Im(a);switch(Dm(r)){case"start":s[a]=s[a]-(e[c]/2-n[c]/2);break;case"end":s[a]=s[a]+(e[c]/2-n[c]/2);break}return s}const I6=async(t,e,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:s}=n;let a=await s.getElementRects({reference:t,floating:e,strategy:i}),{x:c,y:u}=Tm(F(T({},a),{placement:r})),f=r,l={};for(let d=0;d<o.length;d++){const{name:h,fn:p}=o[d],{x:g,y:m,data:y,reset:x}=await p({x:c,y:u,initialPlacement:r,placement:f,strategy:i,middlewareData:l,rects:a,platform:s,elements:{reference:t,floating:e}});if(c=g!=null?g:c,u=m!=null?m:u,l=F(T({},l),{[h]:y!=null?y:{}}),x){typeof x=="object"&&(x.placement&&(f=x.placement),x.rects&&(a=x.rects===!0?await s.getElementRects({reference:t,floating:e,strategy:i}):x.rects),{x:c,y:u}=Tm(F(T({},a),{placement:f}))),d=-1;continue}}return{x:c,y:u,placement:f,strategy:i,middlewareData:l}};function T6(t){return T({top:0,right:0,bottom:0,left:0},t)}function N6(t){return typeof t!="number"?T6(t):{top:t,right:t,bottom:t,left:t}}function Al(t){return F(T({},t),{top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height})}async function L6(t,e){e===void 0&&(e={});const{x:n,y:r,platform:i,rects:o,elements:s,strategy:a}=t,{boundary:c="clippingParents",rootBoundary:u="viewport",elementContext:f="floating",altBoundary:l=!1,padding:d=0}=e,h=N6(d),g=s[l?f==="floating"?"reference":"floating":f],m=await i.getClippingClientRect({element:await i.isElement(g)?g:g.contextElement||await i.getDocumentElement({element:s.floating}),boundary:c,rootBoundary:u}),y=Al(await i.convertOffsetParentRelativeRectToViewportRelativeRect({rect:f==="floating"?F(T({},o.floating),{x:n,y:r}):o.reference,offsetParent:await i.getOffsetParent({element:s.floating}),strategy:a}));return{top:m.top-y.top+h.top,bottom:y.bottom-m.bottom+h.bottom,left:m.left-y.left+h.left,right:y.right-m.right+h.right}}const k6={left:"right",right:"left",bottom:"top",top:"bottom"};function Fs(t){return t.replace(/left|right|bottom|top/g,e=>k6[e])}function O6(t,e){const n=Dm(t)==="start",r=Mm(t),i=Im(r);let o=r==="x"?n?"right":"left":n?"bottom":"top";return e.reference[i]>e.floating[i]&&(o=Fs(o)),{main:o,cross:Fs(o)}}const B6={start:"end",end:"start"};function Nm(t){return t.replace(/start|end/g,e=>B6[e])}function P6(t){const e=Fs(t);return[Nm(t),e,Nm(e)]}const F6=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(e){var n,r;const{placement:i,middlewareData:o,rects:s,initialPlacement:a}=e;if((n=o.flip)!=null&&n.skip)return{};const E=t,{mainAxis:c=!0,crossAxis:u=!0,fallbackPlacements:f,fallbackStrategy:l="bestFit",flipAlignment:d=!0}=E,h=gy(E,["mainAxis","crossAxis","fallbackPlacements","fallbackStrategy","flipAlignment"]),p=yl(i),m=f||(p===a||!d?[Fs(a)]:P6(a)),y=[a,...m],x=await L6(e,h),v=[];let S=((r=o.flip)==null?void 0:r.overflows)||[];if(c&&v.push(x[p]),u){const{main:B,cross:O}=O6(i,s);v.push(x[B],x[O])}if(S=[...S,{placement:i,overflows:v}],!v.every(B=>B<=0)){var b,A;const B=((b=(A=o.flip)==null?void 0:A.index)!=null?b:0)+1,O=y[B];if(O)return{data:{index:B,overflows:S},reset:{placement:O}};let D="bottom";switch(l){case"bestFit":{var w;const k=(w=S.slice().sort((z,G)=>z.overflows.filter(ue=>ue>0).reduce((ue,Ae)=>ue+Ae,0)-G.overflows.filter(ue=>ue>0).reduce((ue,Ae)=>ue+Ae,0))[0])==null?void 0:w.placement;k&&(D=k);break}case"initialPlacement":D=a;break}return{data:{skip:!0},reset:{placement:D}}}return{}}}};function bl(t){return(t==null?void 0:t.toString())==="[object Window]"}function an(t){if(t==null)return window;if(!bl(t)){const e=t.ownerDocument;return e&&e.defaultView||window}return t}function zs(t){return an(t).getComputedStyle(t)}function Ft(t){return bl(t)?"":t?(t.nodeName||"").toLowerCase():""}function zt(t){return t instanceof an(t).HTMLElement}function Rs(t){return t instanceof an(t).Element}function z6(t){return t instanceof an(t).Node}function Lm(t){const e=an(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Us(t){const{overflow:e,overflowX:n,overflowY:r}=zs(t);return/auto|scroll|overlay|hidden/.test(e+r+n)}function R6(t){return["table","td","th"].includes(Ft(t))}function km(t){const e=navigator.userAgent.toLowerCase().includes("firefox"),n=zs(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":!1)}const Om=Math.min,_i=Math.max,js=Math.round;function Sr(t,e){e===void 0&&(e=!1);const n=t.getBoundingClientRect();let r=1,i=1;return e&&zt(t)&&(r=t.offsetWidth>0&&js(n.width)/t.offsetWidth||1,i=t.offsetHeight>0&&js(n.height)/t.offsetHeight||1),{width:n.width/r,height:n.height/i,top:n.top/i,right:n.right/r,bottom:n.bottom/i,left:n.left/r,x:n.left/r,y:n.top/i}}function cn(t){return((z6(t)?t.ownerDocument:t.document)||window.document).documentElement}function Gs(t){return bl(t)?{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}:{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function Bm(t){return Sr(cn(t)).left+Gs(t).scrollLeft}function U6(t){const e=Sr(t);return js(e.width)!==t.offsetWidth||js(e.height)!==t.offsetHeight}function j6(t,e,n){const r=zt(e),i=cn(e),o=Sr(t,r&&U6(e));let s={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if(r||!r&&n!=="fixed")if((Ft(e)!=="body"||Us(i))&&(s=Gs(e)),zt(e)){const c=Sr(e,!0);a.x=c.x+e.clientLeft,a.y=c.y+e.clientTop}else i&&(a.x=Bm(i));return{x:o.left+s.scrollLeft-a.x,y:o.top+s.scrollTop-a.y,width:o.width,height:o.height}}function Hs(t){return Ft(t)==="html"?t:t.assignedSlot||t.parentNode||(Lm(t)?t.host:null)||cn(t)}function Pm(t){return!zt(t)||getComputedStyle(t).position==="fixed"?null:t.offsetParent}function G6(t){let e=Hs(t);for(;zt(e)&&!["html","body"].includes(Ft(e));){if(km(e))return e;e=e.parentNode}return null}function xl(t){const e=an(t);let n=Pm(t);for(;n&&R6(n)&&getComputedStyle(n).position==="static";)n=Pm(n);return n&&(Ft(n)==="html"||Ft(n)==="body"&&getComputedStyle(n).position==="static"&&!km(n))?e:n||G6(t)||e}function Fm(t){return{width:t.offsetWidth,height:t.offsetHeight}}function H6(t){let{rect:e,offsetParent:n,strategy:r}=t;const i=zt(n),o=cn(n);if(n===o)return e;let s={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if((i||!i&&r!=="fixed")&&((Ft(n)!=="body"||Us(o))&&(s=Gs(n)),zt(n))){const c=Sr(n,!0);a.x=c.x+n.clientLeft,a.y=c.y+n.clientTop}return F(T({},e),{x:e.x-s.scrollLeft+a.x,y:e.y-s.scrollTop+a.y})}function Q6(t){const e=an(t),n=cn(t),r=e.visualViewport;let i=n.clientWidth,o=n.clientHeight,s=0,a=0;return r&&(i=r.width,o=r.height,Math.abs(e.innerWidth/r.scale-r.width)<.01&&(s=r.offsetLeft,a=r.offsetTop)),{width:i,height:o,x:s,y:a}}function V6(t){var e;const n=cn(t),r=Gs(t),i=(e=t.ownerDocument)==null?void 0:e.body,o=_i(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),s=_i(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0);let a=-r.scrollLeft+Bm(t);const c=-r.scrollTop;return zs(i||n).direction==="rtl"&&(a+=_i(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:s,x:a,y:c}}function zm(t){return["html","body","#document"].includes(Ft(t))?t.ownerDocument.body:zt(t)&&Us(t)?t:zm(Hs(t))}function Rm(t,e){var n;e===void 0&&(e=[]);const r=zm(t),i=r===((n=t.ownerDocument)==null?void 0:n.body),o=an(r),s=i?[o].concat(o.visualViewport||[],Us(r)?r:[]):r,a=e.concat(s);return i?a:a.concat(Rm(Hs(s)))}function _6(t,e){const n=e.getRootNode==null?void 0:e.getRootNode();if(t.contains(e))return!0;if(n&&Lm(n)){let r=e;do{if(r&&t===r)return!0;r=r.parentNode||r.host}while(r)}return!1}function Y6(t){const e=Sr(t),n=e.top+t.clientTop,r=e.left+t.clientLeft;return{top:n,left:r,x:r,y:n,right:r+t.clientWidth,bottom:n+t.clientHeight,width:t.clientWidth,height:t.clientHeight}}function Um(t,e){return e==="viewport"?Al(Q6(t)):Rs(e)?Y6(e):Al(V6(cn(t)))}function W6(t){const e=Rm(Hs(t)),r=["absolute","fixed"].includes(zs(t).position)&&zt(t)?xl(t):t;return Rs(r)?e.filter(i=>Rs(i)&&_6(i,r)&&Ft(i)!=="body"):[]}function X6(t){let{element:e,boundary:n,rootBoundary:r}=t;const o=[...n==="clippingParents"?W6(e):[].concat(n),r],s=o[0],a=o.reduce((c,u)=>{const f=Um(e,u);return c.top=_i(f.top,c.top),c.right=Om(f.right,c.right),c.bottom=Om(f.bottom,c.bottom),c.left=_i(f.left,c.left),c},Um(e,s));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}const q6={getElementRects:t=>{let{reference:e,floating:n,strategy:r}=t;return{reference:j6(e,xl(n),r),floating:F(T({},Fm(n)),{x:0,y:0})}},convertOffsetParentRelativeRectToViewportRelativeRect:t=>H6(t),getOffsetParent:t=>{let{element:e}=t;return xl(e)},isElement:t=>Rs(t),getDocumentElement:t=>{let{element:e}=t;return cn(e)},getClippingClientRect:t=>X6(t),getDimensions:t=>{let{element:e}=t;return Fm(e)},getClientRects:t=>{let{element:e}=t;return e.getClientRects()}},Z6=(t,e,n)=>I6(t,e,T({platform:q6},n));let Et;const Yi=[],vl=Ts(t=>t(),150,!1);function Wi(t){if((t==null?void 0:t.type)=="contextmenu"){t.preventDefault();return}Et&&(Et.remove(),Et=void 0,document.body.classList.remove(En))}function jm(t){var e;if(!(t<1)){for(let n=t;n<Yi.length;n++)(e=Yi[n])==null||e.remove(),Yi[n]=void 0;for(const n of Yi[t-1].querySelectorAll("li.active"))n.classList.remove("active")}}const K6=()=>M`<li class="menu-divider"></li>`,J6=t=>M`<li class="menu-header">${t.label||"-"}</li>`,$6=(t,e)=>M`<li><a class="submenu-item" @click="${n=>n.stopPropagation()}" @mouseup="${n=>n.stopPropagation()}" @mouseenter="${n=>vl(()=>{const r=n.target.closest("li");n5(t.submenu,r,e+1),n.stopPropagation()})}" @mouseleave="${()=>vl(()=>jm(e+1))}"><span>${t.label}</span></a></li>`,e5=t=>M`<li><a @mouseup="${()=>{Wi(),t.callback()}}">${t.icon?$(t.icon).node[0]:""} ${t.label}</a> ${t.ellipsisCallback?M`<a class="menu-ellipsis" @click="${t.ellipsisCallback}">${$(u8).node[0]}</a>`:R}</li>`,t5=t=>M`<li><span class="disabled-item">${t.icon?$(t.icon).node[0]:""} ${t.label||"-"}</span></li>`;function Gm(t,e=1){switch(t.type){case"divider":return K6();case"header":return J6(t);default:return t.submenu?$6(t,e):t.callback?e5(t):t5(t)}}function n5(t,e,n){Hm(t,e,n,"right-start"),e.classList.add("active")}function Hm(t,e,n,r){const i=document.createElement("ul");i.classList.add("gs-context-menu"),i.addEventListener("mouseenter",()=>{vl(()=>{})}),Re(t.map(o=>Gm(o,n)),i),Et.appendChild(i),jm(n),Yi[n]=i,Z6(e,i,{placement:r!=null?r:"right-start",middleware:[F6()]}).then(({x:o,y:s})=>{const a=i.querySelector(":scope > li");a&&(s-=a.getBoundingClientRect().top),i.style.left=`${o}px`,i.style.top=`${s}px`})}function Qm(t,e,n){n!=null||(n="bottom-start"),Wi();const r=performance.now(),i=document.body;Et=document.createElement("div"),Et.classList.add("gs-context-menu-backdrop"),Et.addEventListener("click",Wi),Et.addEventListener("contextmenu",Wi),Et.addEventListener("mouseup",()=>{performance.now()-r>500&&Wi()},{once:!0}),i.appendChild(Et),document.body.classList.add(En),Hm(t.items,e,0,n)}function Vm(t,e){Qm(t,r5(e),"right-start"),e.preventDefault()}function r5(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 wl={NOMINAL:"nominal",ORDINAL:"ordinal",QUANTITATIVE:"quantitative"},Qs="SAMPLE_ATTRIBUTE",_m="SAMPLE_NAME",i5=/^attribute-(.*)$/;class Ym extends yr{constructor(e){super({title:"Sample metadata",data:{dynamicSource:!0},hconcat:[],spacing: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(Qs,n=>this.children.map(this.getAttributeInfoFromView.bind(this)).find(r=>r&&r.name==n.specifier)),this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(_m,n=>Wm),this.addInteractionEventListener("contextmenu",this.handleContextMenu.bind(this)),this.addInteractionEventListener("mousemove",(n,r)=>{var a;const i=r.target,o=this._findSampleForMouseEvent(n,r),s=i&&((a=this.getAttributeInfoFromView(i))==null?void 0:a.name)||void 0;if(o){const c=JSON.stringify([o.id,s]);this.context.updateTooltip(c,u=>Promise.resolve(this.sampleToTooltip(u)))}this._handleAttributeHighlight(s)}),fe([...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(e){return{}}render(e,n,r={}){!this.isVisible()||super.render(e,n,F(T({},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(T({from:n.backgroundOpacity,onUpdate:r=>{n.backgroundOpacity=r},easingFunction:fg,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-e.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=[],s=this.getAttributeInfoFromView(n.target);if(s){const a=i.attributes[s.name];o.push(...pl(M`Attribute: <strong>${s.name}</strong>`,s,a,this.sampleView))}else o.push(...pl(M`Sample: <strong>${i.displayName}</strong>`,Wm,i.id,this.sampleView));Vm({items:o},r)}_setSamples(e){if(this.children.length)throw new Error("Children are already created!");this._createViews();const n=this.context.dataFlow;Bg(this,n);const r=n.findDataSourceByKey(this);r.visit(o=>o.initialize());const i=[];this.visit(o=>{if(o instanceof Pe){const s=o.mark;i.push(s.initializeGraphics().then(a=>s)),n.addObserver(a=>{s.initializeEncoders(),s.initializeData(),s.updateGraphicsData()},o)}}),Promise.allSettled(i).then(o=>{for(const s of o)"value"in s?s.value.finalizeGraphicsInitialization():"reason"in s&&console.error(s.reason)}),r.publishData(e)}_createViews(){this.addChildBySpec(s5());for(const e of this._getAttributeNames()){const n=this.addChildBySpec(this._createAttributeViewSpec(e));n.opacityFunction=r=>r*this._getAttributeOpacity(e)}Fg(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(td(i.map(o=>o.attributes[e]))){case"integer":case"number":r=wl.QUANTITATIVE;break;default:r=wl.NOMINAL}}return o5(e,F(T({},n||{}),{type:r}))}_findViewForAttribute(e){return this.children[this._getAttributeNames().indexOf(e)+1]}getAttributeInfoFromView(e){const n=e.name.match(i5);if(n){const r=e.getScaleResolution("color"),i=n[1];return{name:i,attribute:{type:Qs,specifier:i},accessor:(o,s)=>s.sampleData.entities[o].attributes[i],type:r.type,scale:r.getScale(),title:M`<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=(a,c)=>a5(c)?this.getAttributeInfo(a).scale(c):"transparent",s=M`<table class="attributes">${Object.entries(i.attributes).map(([a,c])=>M`<tr class="${i8({hovered:a==r})}"><th>${a}</th><td>${Hg(c)}</td><td class="color" .style="background-color: ${o(a,c)}"></td></tr>`)}</table>`;return M`<div class="title"><strong>${i.displayName||i.id}</strong></div>${s}`}getDefaultResolution(e,n){return"independent"}handleVerboseCommand(e){const n=e;for(const r of this._getAttributeNames()){const i=this.getAttributeInfo(r);if((i.type==zu||i.type==Ru)&&this.sampleView.getSamples().find(s=>s.attributes[i.name]==n)){const s=this.sampleView.actions.filterByNominal({attribute:{type:Qs,specifier:r},values:[n]}),a=this.sampleView.provenance.getPresentState().lastAction,c=this.sampleView.actions.filterByNominal.match(a)&&!a.payload.remove&&a.payload.attribute.type==Qs&&a.payload.attribute.specifier==r&&a.payload.values.length==1;return this.sampleView.provenance.storeHelper.dispatch(c?[sn.ActionCreators.undo(),s]:s),!0}}return!1}isPickingSupported(){return!1}}function o5(t,e){var i,o;const n=`attributes["${t}"]`,r={name:`attribute-${t}`,title:t,visible:(i=e.visible)!=null?i:!0,width:(o=e.width)!=null?o:10,transform:[{type:"filter",expr:`datum.${n} != null`}],mark:{type:"rect"},encoding:{facetIndex:{field:"indexNumber"},color:{field:n,type:e.type,scale:e.scale}},opacity:1};return e.barScale&&e.type==wl.QUANTITATIVE&&(r.encoding.x={field:`attributes["${t}"]`,type:e.type,scale:e.barScale}),r}function s5(){return{name:"metadata-sample-name",title:"Sample name",width:140,mark:{type:"text",align:"left",baseline:"middle",size:11,flushY:!1},encoding:{facetIndex:{field:"indexNumber"},x:{value:0},x2:{value:1},y:{value:0},y2:{value:1},text:{field:"displayName"}}}}function a5(t){return t!==""&&!(typeof t=="number"&&isNaN(t))&&t!==null}const Wm=Object.freeze({name:"sample",attribute:{type:_m},accessor:t=>t,type:"identifier",scale:void 0});class c5 extends ji{constructor(e){super({title:"Groups",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:"_NA",expr:"datum.label == null"},{type:"formula",as:"label",expr:"datum.label != null ? datum.label: 'NA'"}],encoding:{x:{field:"_depth",type:"ordinal",scale:{align:0,padding:.2272727},axis:null},y:{field:"_y1",type:"nominal",scale:{type:"ordinal",domain:po(500)},axis:null},y2:{field:"_y2"}},layer:[{title:"Group",mark:{type:"rect",clip:!0,dynamicData:!0,color:"#e8e8e8"}},{mark:{type:"text",clip:!0,dynamicData:!0,angle:-90,paddingY:5,tooltip:null},encoding:{text:{field:"label"},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()})}updateRange(){var o,s,a;const e=(o=this.sampleView.getLocations())==null?void 0:o.groups;if(!(e==null?void 0:e.length))return;const n=(a=(s=this.sampleView)==null?void 0:s._coords.height)!=null?a:0,r=this.getScaleResolution("y"),i=[];for(const c of e)i.push(1-(c.locSize.location+c.locSize.size)/n),i.push(1-c.locSize.location/n);r.getScale().range(i),this.context.glHelper.createRangeTexture(r,!0)}updateGroups(){var i,o;const e=(o=(i=this.sampleView.getLocations())==null?void 0:i.groups)!=null?o:[],n=this.context.dataFlow.findDataSourceByKey(this);if(!n)return;const r=e.map(s=>({_index:s.key.index,_name:s.key.group.name,_depth:s.key.depth,attribute:s.key.attributeLabel,label:s.key.group.label,n:s.key.n}));n.publishData(r),this.getScaleResolution("x").reconfigure(),this.getScaleResolution("y").reconfigure(),e.length&&this.updateRange(),fe([...this.getAncestors()]).visit(s=>Bi(s,"size"))}}function at(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 un(t){return!!t&&!!t[ne]}function ln(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)===y5}(t)||Array.isArray(t)||!!t[r1]||!!t.constructor[r1]||El(t)||Sl(t))}function zn(t,e,n){n===void 0&&(n=!1),Cr(t)===0?(n?Object.keys:Mr)(t).forEach(function(r){n&&typeof r=="symbol"||e(r,t[r],t)}):t.forEach(function(r,i){return e(i,r,t)})}function Cr(t){var e=t[ne];return e?e.i>3?e.i-4:e.i:Array.isArray(t)?1:El(t)?2:Sl(t)?3:0}function Dr(t,e){return Cr(t)===2?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function u5(t,e){return Cr(t)===2?t.get(e):t[e]}function Xm(t,e,n){var r=Cr(t);r===2?t.set(e,n):r===3?(t.delete(e),t.add(n)):t[e]=n}function qm(t,e){return t===e?t!==0||1/t==1/e:t!=t&&e!=e}function El(t){return g5&&t instanceof Map}function Sl(t){return m5&&t instanceof Set}function Rn(t){return t.o||t.t}function Cl(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var e=i1(t);delete e[ne];for(var n=Mr(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 Dl(t,e){return e===void 0&&(e=!1),Ml(t)||un(t)||!ln(t)||(Cr(t)>1&&(t.set=t.add=t.clear=t.delete=l5),Object.freeze(t),e&&zn(t,function(n,r){return Dl(r,!0)},!0)),t}function l5(){at(2)}function Ml(t){return t==null||typeof t!="object"||Object.isFrozen(t)}function Rt(t){var e=Fl[t];return e||at(18,t),e}function f5(t,e){Fl[t]||(Fl[t]=e)}function Il(){return Xi}function Tl(t,e){e&&(Rt("Patches"),t.u=[],t.s=[],t.v=e)}function Vs(t){Nl(t),t.p.forEach(d5),t.p=null}function Nl(t){t===Xi&&(Xi=t.l)}function Zm(t){return Xi={p:[],l:Xi,h:t,m:!0,_:0}}function d5(t){var e=t[ne];e.i===0||e.i===1?e.j():e.O=!0}function Ll(t,e){e._=e.p.length;var n=e.p[0],r=t!==void 0&&t!==n;return e.h.g||Rt("ES5").S(e,t,r),r?(n[ne].P&&(Vs(e),at(4)),ln(t)&&(t=_s(e,t),e.l||Ys(e,t)),e.u&&Rt("Patches").M(n[ne],t,e.u,e.s)):t=_s(e,n,[]),Vs(e),e.u&&e.v(e.u,e.s),t!==n1?t:void 0}function _s(t,e,n){if(Ml(e))return e;var r=e[ne];if(!r)return zn(e,function(o,s){return Km(t,r,e,o,s,n)},!0),e;if(r.A!==t)return e;if(!r.P)return Ys(t,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=Cl(r.k):r.o;zn(r.i===3?new Set(i):i,function(o,s){return Km(t,r,i,o,s,n)}),Ys(t,i,!1),n&&t.u&&Rt("Patches").R(r,n,t.u,t.s)}return r.o}function Km(t,e,n,r,i,o){if(un(i)){var s=_s(t,i,o&&e&&e.i!==3&&!Dr(e.D,r)?o.concat(r):void 0);if(Xm(n,r,s),!un(s))return;t.m=!1}if(ln(i)&&!Ml(i)){if(!t.h.F&&t._<1)return;_s(t,i),e&&e.A.l||Ys(t,i)}}function Ys(t,e,n){n===void 0&&(n=!1),t.h.F&&t.m&&Dl(e,n)}function kl(t,e){var n=t[ne];return(n?Rn(n):t)[e]}function Jm(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 fn(t){t.P||(t.P=!0,t.l&&fn(t.l))}function Ol(t){t.o||(t.o=Cl(t.t))}function Bl(t,e,n){var r=El(e)?Rt("MapSet").N(e,n):Sl(e)?Rt("MapSet").T(e,n):t.g?function(i,o){var s=Array.isArray(i),a={i:s?1:0,A:o?o.A:Il(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},c=a,u=Ir;s&&(c=[a],u=Ws);var f=Proxy.revocable(c,u),l=f.revoke,d=f.proxy;return a.k=d,a.j=l,d}(e,n):Rt("ES5").J(e,n);return(n?n.A:Il()).p.push(r),r}function h5(t){return un(t)||at(22,t),function e(n){if(!ln(n))return n;var r,i=n[ne],o=Cr(n);if(i){if(!i.P&&(i.i<4||!Rt("ES5").K(i)))return i.t;i.I=!0,r=$m(n,o),i.I=!1}else r=$m(n,o);return zn(r,function(s,a){i&&u5(i.t,s)===a||Xm(r,s,e(a))}),o===3?new Set(r):r}(t)}function $m(t,e){switch(e){case 2:return new Map(t);case 3:return Array.from(t)}return Cl(t)}function p5(){function t(o,s){var a=i[o];return a?a.enumerable=s:i[o]=a={configurable:!0,enumerable:s,get:function(){var c=this[ne];return Ir.get(c,o)},set:function(c){var u=this[ne];Ir.set(u,o,c)}},a}function e(o){for(var s=o.length-1;s>=0;s--){var a=o[s][ne];if(!a.P)switch(a.i){case 5:r(a)&&fn(a);break;case 4:n(a)&&fn(a)}}}function n(o){for(var s=o.t,a=o.k,c=Mr(a),u=c.length-1;u>=0;u--){var f=c[u];if(f!==ne){var l=s[f];if(l===void 0&&!Dr(s,f))return!0;var d=a[f],h=d&&d[ne];if(h?h.t!==l:!qm(d,l))return!0}}var p=!!s[ne];return c.length!==Mr(s).length+(p?0:1)}function r(o){var s=o.k;if(s.length!==o.t.length)return!0;var a=Object.getOwnPropertyDescriptor(s,s.length-1);return!(!a||a.get)}var i={};f5("ES5",{J:function(o,s){var a=Array.isArray(o),c=function(f,l){if(f){for(var d=Array(l.length),h=0;h<l.length;h++)Object.defineProperty(d,""+h,t(h,!0));return d}var p=i1(l);delete p[ne];for(var g=Mr(p),m=0;m<g.length;m++){var y=g[m];p[y]=t(y,f||!!p[y].enumerable)}return Object.create(Object.getPrototypeOf(l),p)}(a,o),u={i:a?5:4,A:s?s.A:Il(),P:!1,I:!1,D:{},l:s,t:o,k:c,o:null,O:!1,C:!1};return Object.defineProperty(c,ne,{value:u,writable:!0}),c},S:function(o,s,a){a?un(s)&&s[ne].A===o&&e(o.p):(o.u&&function c(u){if(u&&typeof u=="object"){var f=u[ne];if(f){var l=f.t,d=f.k,h=f.D,p=f.i;if(p===4)zn(d,function(v){v!==ne&&(l[v]!==void 0||Dr(l,v)?h[v]||c(d[v]):(h[v]=!0,fn(f)))}),zn(l,function(v){d[v]!==void 0||Dr(d,v)||(h[v]=!1,fn(f))});else if(p===5){if(r(f)&&(fn(f),h.length=!0),d.length<l.length)for(var g=d.length;g<l.length;g++)h[g]=!1;else for(var m=l.length;m<d.length;m++)h[m]=!0;for(var y=Math.min(d.length,l.length),x=0;x<y;x++)h[x]===void 0&&c(d[x])}}}}(o.p[0]),e(o.p))},K:function(o){return o.i===4?n(o):r(o)}})}var e1,Xi,Pl=typeof Symbol!="undefined"&&typeof Symbol("x")=="symbol",g5=typeof Map!="undefined",m5=typeof Set!="undefined",t1=typeof Proxy!="undefined"&&Proxy.revocable!==void 0&&typeof Reflect!="undefined",n1=Pl?Symbol.for("immer-nothing"):((e1={})["immer-nothing"]=!0,e1),r1=Pl?Symbol.for("immer-draftable"):"__$immer_draftable",ne=Pl?Symbol.for("immer-state"):"__$immer_state",y5=""+Object.prototype.constructor,Mr=typeof Reflect!="undefined"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,i1=Object.getOwnPropertyDescriptors||function(t){var e={};return Mr(t).forEach(function(n){e[n]=Object.getOwnPropertyDescriptor(t,n)}),e},Fl={},Ir={get:function(t,e){if(e===ne)return t;var n=Rn(t);if(!Dr(n,e))return function(i,o,s){var a,c=Jm(o,s);return c?"value"in c?c.value:(a=c.get)===null||a===void 0?void 0:a.call(i.k):void 0}(t,n,e);var r=n[e];return t.I||!ln(r)?r:r===kl(t.t,e)?(Ol(t),t.o[e]=Bl(t.A.h,r,t)):r},has:function(t,e){return e in Rn(t)},ownKeys:function(t){return Reflect.ownKeys(Rn(t))},set:function(t,e,n){var r=Jm(Rn(t),e);if(r==null?void 0:r.set)return r.set.call(t.k,n),!0;if(!t.P){var i=kl(Rn(t),e),o=i==null?void 0:i[ne];if(o&&o.t===n)return t.o[e]=n,t.D[e]=!1,!0;if(qm(n,i)&&(n!==void 0||Dr(t.t,e)))return!0;Ol(t),fn(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 kl(t.t,e)!==void 0||e in t.t?(t.D[e]=!1,Ol(t),fn(t)):delete t.D[e],t.o&&delete t.o[e],!0},getOwnPropertyDescriptor:function(t,e){var n=Rn(t),r=Reflect.getOwnPropertyDescriptor(n,e);return r&&{writable:!0,configurable:t.i!==1||e!=="length",enumerable:r.enumerable,value:n[e]}},defineProperty:function(){at(11)},getPrototypeOf:function(t){return Object.getPrototypeOf(t.t)},setPrototypeOf:function(){at(12)}},Ws={};zn(Ir,function(t,e){Ws[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),Ws.deleteProperty=function(t,e){return Ir.deleteProperty.call(this,t[0],e)},Ws.set=function(t,e,n){return Ir.set.call(this,t[0],e,n,t[0])};var A5=function(){function t(n){var r=this;this.g=t1,this.F=!0,this.produce=function(i,o,s){if(typeof i=="function"&&typeof o!="function"){var a=o;o=i;var c=r;return function(h){var p=this;h===void 0&&(h=a);for(var g=arguments.length,m=Array(g>1?g-1:0),y=1;y<g;y++)m[y-1]=arguments[y];return c.produce(h,function(x){var v;return(v=o).call.apply(v,[p,x].concat(m))})}}var u;if(typeof o!="function"&&at(6),s!==void 0&&typeof s!="function"&&at(7),ln(i)){var f=Zm(r),l=Bl(r,i,void 0),d=!0;try{u=o(l),d=!1}finally{d?Vs(f):Nl(f)}return typeof Promise!="undefined"&&u instanceof Promise?u.then(function(h){return Tl(f,s),Ll(h,f)},function(h){throw Vs(f),h}):(Tl(f,s),Ll(u,f))}if(!i||typeof i!="object")return(u=o(i))===n1?void 0:(u===void 0&&(u=i),r.F&&Dl(u,!0),u);at(21,i)},this.produceWithPatches=function(i,o){return typeof i=="function"?function(c){for(var u=arguments.length,f=Array(u>1?u-1:0),l=1;l<u;l++)f[l-1]=arguments[l];return r.produceWithPatches(c,function(d){return i.apply(void 0,[d].concat(f))})}:[r.produce(i,o,function(c,u){s=c,a=u}),s,a];var s,a},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){ln(n)||at(8),un(n)&&(n=h5(n));var r=Zm(this),i=Bl(this,n,void 0);return i[ne].C=!0,Nl(r),i},e.finishDraft=function(n,r){var i=n&&n[ne],o=i.A;return Tl(o,r),Ll(void 0,o)},e.setAutoFreeze=function(n){this.F=n},e.setUseProxies=function(n){n&&!t1&&at(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}}var s=Rt("Patches").$;return un(n)?s(n,r):this.produce(n,function(a){return s(a,r.slice(i+1))})},t}(),Ge=new A5,b5=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);var o1=b5;function x5(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function s1(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 a1(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?s1(Object(n),!0).forEach(function(r){x5(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):s1(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Ce(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 c1=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),zl=function(){return Math.random().toString(36).substring(7).split("").join(".")},Xs={INIT:"@@redux/INIT"+zl(),REPLACE:"@@redux/REPLACE"+zl(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+zl()}};function v5(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 u1(t,e,n){var r;if(typeof e=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(Ce(0));if(typeof e=="function"&&typeof n=="undefined"&&(n=e,e=void 0),typeof n!="undefined"){if(typeof n!="function")throw new Error(Ce(1));return n(u1)(t,e)}if(typeof t!="function")throw new Error(Ce(2));var i=t,o=e,s=[],a=s,c=!1;function u(){a===s&&(a=s.slice())}function f(){if(c)throw new Error(Ce(3));return o}function l(g){if(typeof g!="function")throw new Error(Ce(4));if(c)throw new Error(Ce(5));var m=!0;return u(),a.push(g),function(){if(!!m){if(c)throw new Error(Ce(6));m=!1,u();var x=a.indexOf(g);a.splice(x,1),s=null}}}function d(g){if(!v5(g))throw new Error(Ce(7));if(typeof g.type=="undefined")throw new Error(Ce(8));if(c)throw new Error(Ce(9));try{c=!0,o=i(o,g)}finally{c=!1}for(var m=s=a,y=0;y<m.length;y++){var x=m[y];x()}return g}function h(g){if(typeof g!="function")throw new Error(Ce(10));i=g,d({type:Xs.REPLACE})}function p(){var g,m=l;return g={subscribe:function(x){if(typeof x!="object"||x===null)throw new Error(Ce(11));function v(){x.next&&x.next(f())}v();var S=m(v);return{unsubscribe:S}}},g[c1]=function(){return this},g}return d({type:Xs.INIT}),r={dispatch:d,subscribe:l,getState:f,replaceReducer:h},r[c1]=p,r}function w5(t){Object.keys(t).forEach(function(e){var n=t[e],r=n(void 0,{type:Xs.INIT});if(typeof r=="undefined")throw new Error(Ce(12));if(typeof n(void 0,{type:Xs.PROBE_UNKNOWN_ACTION()})=="undefined")throw new Error(Ce(13))})}function Rl(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),s;try{w5(n)}catch(a){s=a}return function(c,u){if(c===void 0&&(c={}),s)throw s;for(var f=!1,l={},d=0;d<o.length;d++){var h=o[d],p=n[h],g=c[h],m=p(g,u);if(typeof m=="undefined")throw u&&u.type,new Error(Ce(14));l[h]=m,f=f||m!==g}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 E5(){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(Ce(15))},s={getState:i.getState,dispatch:function(){return o.apply(void 0,arguments)}},a=e.map(function(c){return c(s)});return o=qs.apply(void 0,a)(i.dispatch),a1(a1({},i),{},{dispatch:o})}}}function S5(t,e){return t===e}function C5(t,e,n){if(e===null||n===null||e.length!==n.length)return!1;for(var r=e.length,i=0;i<r;i++)if(!t(e[i],n[i]))return!1;return!0}function D5(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:S5,n=null,r=null;return function(){return C5(e,n,arguments)||(r=t.apply(null,arguments)),n=arguments,r}}function M5(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}).join(", ");throw new Error("Selector creators expect all input-selectors to be functions, "+("instead received the following types: ["+n+"]"))}return e}function I5(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return function(){for(var i=arguments.length,o=Array(i),s=0;s<i;s++)o[s]=arguments[s];var a=0,c=o.pop(),u=M5(o),f=t.apply(void 0,[function(){return a++,c.apply(null,arguments)}].concat(n)),l=t(function(){for(var d=[],h=u.length,p=0;p<h;p++)d.push(u[p].apply(null,arguments));return f.apply(null,d)});return l.resultFunc=c,l.dependencies=u,l.recomputations=function(){return a},l.resetRecomputations=function(){return a=0},l}}var T5=I5(D5);function l1(t){return function(e){var n=e.dispatch,r=e.getState;return function(i){return function(o){return typeof o=="function"?o(n,r,t):i(o)}}}}var Ul=l1();Ul.withExtraArgument=l1;var N5=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 Zs=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},L5=Object.defineProperty,f1=Object.getOwnPropertySymbols,k5=Object.prototype.hasOwnProperty,O5=Object.prototype.propertyIsEnumerable,d1=function(t,e,n){return e in t?L5(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},qi=function(t,e){for(var n in e||(e={}))k5.call(e,n)&&d1(t,n,e[n]);if(f1)for(var r=0,i=f1(e);r<i.length;r++){var n=i[r];O5.call(e,n)&&d1(t,n,e[n])}return t},B5=typeof window!="undefined"&&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 P5(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}var F5=function(t){N5(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,Zs([void 0],n[0].concat(this)))):new(e.bind.apply(e,Zs([void 0],n.concat(this))))},e}(Array);function z5(t){return typeof t=="boolean"}function R5(){return function(e){return U5(e)}}function U5(t){t===void 0&&(t={});var e=t.thunk,n=e===void 0?!0:e;t.immutableCheck,t.serializableCheck;var r=new F5;return n&&(z5(n)?r.push(Ul):r.push(Ul.withExtraArgument(n.extraArgument))),r}var j5=!0;function G5(t){var e=R5(),n=t||{},r=n.reducer,i=r===void 0?void 0:r,o=n.middleware,s=o===void 0?e():o,a=n.devTools,c=a===void 0?!0:a,u=n.preloadedState,f=u===void 0?void 0:u,l=n.enhancers,d=l===void 0?void 0:l,h;if(typeof i=="function")h=i;else if(P5(i))h=Rl(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 p=s;typeof p=="function"&&(p=p(e));var g=E5.apply(void 0,p),m=qs;c&&(m=B5(qi({trace:!j5},typeof c=="object"&&c)));var y=[g];Array.isArray(d)?y=Zs([g],d):typeof d=="function"&&(y=d(y));var x=m.apply(void 0,y);return u1(h,f,x)}function h1(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 qi(qi({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 p1(t){var e={},n=[],r,i={addCase:function(o,s){var a=typeof o=="string"?o:o.type;if(a in e)throw new Error("addCase cannot be called with two reducers for the same action type");return e[a]=s,i},addMatcher:function(o,s){return n.push({matcher:o,reducer:s}),i},addDefaultCase:function(o){return r=o,i}};return t(i),[e,n,r]}function H5(t,e,n,r){n===void 0&&(n=[]);var i=typeof e=="function"?p1(e):[e,n,r],o=i[0],s=i[1],a=i[2],c=o1(t,function(){});return function(u,f){u===void 0&&(u=c);var l=Zs([o[f.type]],s.filter(function(d){var h=d.matcher;return h(f)}).map(function(d){var h=d.reducer;return h}));return l.filter(function(d){return!!d}).length===0&&(l=[a]),l.reduce(function(d,h){if(h)if(un(d)){var p=d,g=h(p,f);return typeof g=="undefined"?d:g}else{if(ln(d))return o1(d,function(m){return h(m,f)});var g=h(d,f);if(typeof g=="undefined"){if(d===null)return d;throw Error("A case reducer on a non-draftable value must not return undefined")}return g}return d},u)}}function Q5(t,e){return t+"/"+e}function g1(t){var e=t.name,n=t.initialState;if(!e)throw new Error("`name` is a required option for createSlice");var r=t.reducers||{},i=typeof t.extraReducers=="function"?p1(t.extraReducers):[t.extraReducers],o=i[0],s=o===void 0?{}:o,a=i[1],c=a===void 0?[]:a,u=i[2],f=u===void 0?void 0:u,l=Object.keys(r),d={},h={},p={};l.forEach(function(y){var x=r[y],v=Q5(e,y),S,b;"reducer"in x?(S=x.reducer,b=x.prepare):S=x,d[y]=S,h[v]=S,p[y]=b?h1(v,b):h1(v)});var g=qi(qi({},s),h),m=H5(n,g,c,f);return{name:e,reducer:m,actions:p,caseReducers:d}}p5();function m1(t,e,n,r){if(r&&!n)throw new Error("Custom labels need explicit group order!");const i=iA(t.samples,e),o=n?n.map(c=>[c,i.get(c)]).filter(c=>c[1]):[...i],a=t;a.groups=o.map(([c,u],f)=>({name:""+c,label:r?r[f]:c,samples:u})),delete t.samples}function y1(t,e,n){const r=Qn(".3~r"),i=s=>`${n[s].operator=="lt"?"[":"("}${r(n[s].operand)}, ${r(n[s+1].operand)}${n[s+1].operator=="lte"?"]":")"}`,o=po(n.length-1).reverse();m1(t,Y5(e,n.slice(1,n.length-1)),o,o.map(i))}function V5(t,e,n){y1(t,e,[{operator:"lt",operand:-1/0},...n,{operator:"lte",operand:1/0}])}function _5(t,e){const n=X5(W5(t.samples,e,[0,.25,.5,.75,1]));n.length==1&&n.push(n[0]),y1(t,e,n.map((r,i,o)=>({operator:i==o.length-1?"lte":"lt",operand:r})))}function Y5(t,e){return r=>{const i=t(r);if(!(!ae(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 W5(t,e,n){const r=aA(t.map(e).filter(i=>ae(i)&&!isNaN(i)));return n.map(i=>bf(r,i))}function X5(t){const e=[t[0]];for(let n=1;n<t.length;n++)t[n]!=t[n-1]&&e.push(t[n]);return e}function q5(t,e){var n=t+"",r=e+"";return n<r?-1:n==r?0:1}var Z5=[].forEach;function K5(t,e,n){if(typeof e!="function")throw new TypeError(e+" is not a function");var r,i=[],o=[],s=[];Z5.call(t,function(c,u,f){if(r=e(c,u,f),r===void 0)return void s.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=q5),i.sort(function(c,u){return n(o[c],o[u])});var a=i.map(function(c){return t[c]}).concat(s);return a.length!=t.length&&(a.length=t.length),a}function J5(t,e){const n=i=>i.copy().range(po(0,i.domain().length)).unknown(-1);let r;switch(e.type){case"quantitative":r=i=>ae(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 $5(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 eI(t,e,n=!1){return K5(t,e,(r,i)=>(n&&([r,i]=[i,r]),r<i?-1:r>i?1:0))}const tI={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 nI(t,e,n,r){const i=tI[n];return t.filter(o=>i(e(o),r))}function rI(t,e,n,r){const i=new Set(r),o=a=>i.has(a),s=n=="remove"?a=>!o(a):o;return t.filter(a=>s(e(a)))}function iI(t,e){const n=r=>r!=null;return t.filter(r=>n(e(r)))}const A1="setSamples",b1="sortBy",x1="retainFirstOfEach",v1="filterByNominal",w1="filterByQuantitative",E1="removeUndefined",S1="groupByNominal",C1="groupToQuartiles",D1="groupByThresholds",Tr="sampleView";function oI(){return{sampleData:void 0,groupMetadata:[],rootGroup:{name:"ROOT",label:"Root",samples:[]}}}function sI(t){const e=(n,r)=>{const i=t(n.attribute).accessor;return o=>i(o,r)};return g1({name:Tr,initialState:oI(),reducers:{[A1]:(n,r)=>{const i=r.payload.samples;if(n.sampleData)throw new Error("Samples have already been set!");if(i.some(s=>s.id===void 0||s.id===null))throw new Error('The sample metadata contains missing sample ids or the "sample" column is missing!');if(new Set(i.map(s=>s.id)).size!=i.length)throw new Error("The sample metadata contains duplicate sample ids!");const o=i.map((s,a)=>F(T({},s),{indexNumber:a}));n.sampleData={ids:o.map(s=>s.id),entities:Object.fromEntries(o.map(s=>[s.id,s]))},n.rootGroup={name:"ROOT",label:"Root",samples:n.sampleData.ids}},[b1]:(n,r)=>{Zi(n,i=>eI(i,J5(e(r.payload,n),t(r.payload.attribute)),!1))},[x1]:(n,r)=>{Zi(n,i=>$5(i,e(r.payload,n)))},[w1]:(n,r)=>{Zi(n,i=>nI(i,e(r.payload,n),r.payload.operator,r.payload.operand))},[v1]:(n,r)=>{Zi(n,i=>rI(i,e(r.payload,n),r.payload.remove?"remove":"retain",r.payload.values))},[E1]:(n,r)=>{Zi(n,i=>iI(i,e(r.payload,n)))},[S1]:(n,r)=>{jl(n,i=>m1(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[C1]:(n,r)=>{jl(n,i=>_5(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[D1]:(n,r)=>{jl(n,i=>V5(i,e(r.payload,n),r.payload.thresholds)),n.groupMetadata.push({attribute:r.payload.attribute})}}})}function Zi(t,e){for(const n of M1(t))n.samples=e(n.samples)}function jl(t,e){for(const n of M1(t))e(n)}function M1(t){return I1(t).map(e=>fe(e))}function Gl(t){return t.provenance.present[Tr]}function I1(t){const e=[],n=[],r=i=>{if(e.push(i),N1(i))for(const o of i.groups)r(o);else n.push([...e]);e.pop()};return r(t.rootGroup),n}function T1(t){return"samples"in t}function N1(t){return"groups"in t}function*L1(t){if(yield[t],N1(t))for(const e of t.groups)for(const n of L1(e))yield[t,...n]}const aI=Qn(".4"),k1={lt:"<",lte:"\u2264",eq:"=",gte:"\u2265",gt:">"};function O1(t){return t.length>1?M`{${t.map((e,n)=>M`${n>0?", ":""}<strong>${e}</strong>`)}}`:M`<strong>${t[0]}</strong>`}function cI(t,e){if(!t.type.startsWith(Tr))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)||M`<em>${i}</em>`,s={attributeName:i};switch(t.type.substring(Tr.length+1)){case A1:return F(T({},s),{title:"The initial state",icon:s8});case b1:return F(T({},s),{title:"Sort by",provenanceTitle:M`Sort by ${o}`,icon:y8});case x1:return F(T({},s),{title:M`Retain first sample of each unique <em>${i}</em>`,provenanceTitle:M`Retain first sample of each unique ${o}`,icon:d8});case v1:{const c=n.values,u=f=>M`${n.remove?"Remove":"Retain"} samples having ${c[0]===void 0||c[0]===null?M`undefined ${f}`:M`${f} ${c.length>1?"in":M`<span class="operator">=</span>`} ${O1(c)}`}`;return F(T({},s),{title:u(M`<em>${i}</em>`),provenanceTitle:u(o),icon:n.remove?il:Qi})}case w1:{const c=u=>M`Retain samples having ${u} <span class="operator">${k1[n.operator]}</span> <strong>${aI(n.operand)}</strong>`;return F(T({},s),{title:c(M`<em>${i}</em>`),provenanceTitle:c(o),icon:Qi})}case E1:return F(T({},s),{title:"Remove samples having missing attribute",provenanceTitle:M`Remove samples having missing ${o}`,icon:il});case S1:return F(T({},s),{title:"Group by",provenanceTitle:M`Group by ${o}`,icon:Vi});case C1:return F(T({},s),{title:"Group by quartiles",provenanceTitle:M`Group by quartiles on ${o}`,icon:Vi});case D1:return F(T({},s),{title:"Group by thresholds",provenanceTitle:M`Group by thresholds {${O1(n.thresholds.map(c=>`${k1[c.operator]} ${c.operand}`))}} on ${o}`,icon:Vi});default:return F(T({},s),{title:JSON.stringify(t),icon:Kg})}}class uI{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 Ks(t,e,n){let r=n&&t(n);return i=>{const o=t(i);o!==r&&(e(o,r),r=o)}}function B1(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=>fe(d),s=t.map(d=>({path:d,sampleGroup:o(d),samples:o(d).samples})).filter(d=>d.samples.length),a=n?d=>({px:d.length*n+i,grow:0}):d=>({px:i,grow:d.length}),c=[];Ss(s.map(d=>a(d.samples)),e,{spacing:r}).forEach((d,h)=>{c.push({key:s[h].path,locSize:d})});const u=[];for(const[d,h]of s.entries()){const p={grow:1},g=h.samples;Ss(g.map(m=>p),Math.max(0,c[d].locSize.size-i),{offset:c[d].locSize.location+i}).forEach((m,y)=>{const{size:x,location:v}=m,S=x*.1*yg(15,22,x);m.location=v+S,m.size=x-2*S,u.push({key:g[y],locSize:m})})}function*f(){const d=[];for(const h of c){const p=h.key,g=fe(p);for(;d.length<=p.length&&d.length&&p[d.length-1]!=d[d.length-1].group;)yield d.pop();for(let m=0;m<d.length;m++){const y=d[m];y.locSize.size=h.locSize.location-y.locSize.location+h.locSize.size}for(let m=d.length;m<p.length;m++)d.push({group:p[m],locSize:T({},h.locSize),depth:d.length,n:0});for(const m of d)m.n+=g.samples.length}for(;d.length;)yield d.pop()}const l=[...f()].sort((d,h)=>d.depth-h.depth).map((d,h)=>({key:{index:h,group:d.group,depth:d.depth,n:d.n,attributeLabel:void 0},locSize:d.locSize}));return{samples:u,summaries:c,groups:l}}function lI(t,e){return e.find(n=>qp(n.locSize,t))}const P1="VALUE_AT_LOCUS",F1=10;class Hl extends At{constructor(e,n,r,i,o){super(e,n,r,i);var u;this.provenance=o,this.spec=e,this.stickySummaries=(u=e.stickySummaries)!=null?u:!0,this.compositeAttributeInfoSource=new uI,this.child=n.createView(e.spec,this,"sample-facets"),this.summaryViews=new yr({vconcat:[]},n,this,"sampleSummaries"),this.child.visit(f=>{f instanceof Pe&&this.summaryViews.children.push(...f.sampleAggregateViews)}),this.facetTexture=void 0,this.facetTextureData=void 0,this.peripheryView=new yr({title:"Sidebar",resolve:{scale:{default:"independent"},axis:{default:"independent"}},hconcat:[],spacing:0},n,this,"sample-sidebar"),this.groupPanel=new c5(this),this.peripheryView.addChild(this.groupPanel),this.attributePanel=new Ym(this),this.peripheryView.addChild(this.attributePanel),this.child.addInteractionEventListener("contextmenu",this._handleContextMenu.bind(this)),this.provenance.storeHelper.subscribe(Ks(f=>Gl(f).rootGroup,f=>{this._locations=void 0,this.groupPanel.updateGroups(),this._peekState=0,this.context.requestLayoutReflow(),this.context.animator.requestRender()})),this.provenance.storeHelper.subscribe(Ks(f=>Gl(f).sampleData,f=>{const l=f&&Object.values(f.entities);!l||(this.attributePanel._setSamples(l),this.facetTextureData=new Float32Array(Math.ceil(l.length*2/4)*4),this.groupPanel.updateGroups())})),this.compositeAttributeInfoSource.addAttributeInfoSource(P1,f=>{var v;const l=f.specifier,d=this.findDescendantByPath(l.path);let h;if(ae(l.locus))h=l.locus;else{const S=this.getScaleResolution("x").getGenome();if(S)h=S.toContinuous(l.locus.chrom,l.locus.pos);else throw new Error("Encountered a complex locus but no genome is available!")}const p=S=>{var b;return(b=d.mark.findDatumAt(S,h))==null?void 0:b[l.field]},[g,m]=Object.entries(d.getEncoding()).find(([S,b])=>"field"in b&&b.field==l.field),y=g?(v=d.getScaleResolution(g))==null?void 0:v.getScale():void 0;return{name:l.field,attribute:f,title:M`<em class="attribute">${l.field}</em> <span class="viewTitle">(${d.spec.title||d.name})</span> at <span class="locus">${z1(l.locus)}</span>`,accessor:p,type:"type"in m?m.type:void 0,scale:y}}),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",(f,l)=>{this._lastMouseY=l.point.y-f.y}),this.addInteractionEventListener("wheel",(f,l)=>{const d=l.uiEvent;this._peekState&&!d.ctrlKey&&(this._scrollOffset=Nu(this._scrollOffset+d.deltaY,0,this._scrollableHeight-this._coords.height),this.groupPanel.updateRange(),this.context.animator.requestRender(),l.uiEvent={type:d.type,deltaX:d.deltaX,preventDefault:d.preventDefault.bind(d)})},!0),n.addKeyboardListener("keydown",f=>{f.code=="KeyE"&&!f.repeat&&this._togglePeek()}),n.addKeyboardListener("keyup",f=>{f.code=="KeyE"&&this._togglePeek(!1)});const s=f=>this.compositeAttributeInfoSource.getAttributeInfo(f),a=sI(s);this.provenance.addReducer(a.name,a.reducer),this.provenance.addActionInfoSource(f=>cI(f,s)),this.actions=a.actions;const c=T5(f=>{var l;return(l=f.sampleData)==null?void 0:l.entities},f=>f&&Object.values(f));this.getSamples=()=>c(this.sampleHierarchy),this.spec.samples.data&&this.loadSamples()}getEffectivePadding(){return this._cache("size/effectivePadding",()=>{const e=this.peripheryView.isVisible()?this.peripheryView.getSize().width.px+F1:0,n=this.child.getEffectivePadding();return this.getPadding().add(new Je(0,n.right,0,n.left+e))})}*[Symbol.iterator](){yield this.child,yield this.peripheryView}replaceChild(e,n){const r=n;if(e===this.child)this.child=r;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:e,collector:n}=AM(Lg(this.spec.samples.data,this.getBaseUrl()),new fI);n.observers.push(i=>{const o=i.getData();this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:o}))});const r="samples "+this.getPathString();this.context.dataFlow.addDataSource(e,r)}extractSamplesFromData(){if(this.getSamples())return;const e=this.getScaleResolution("sample");if(e){const n=e.getDataDomain().map((r,i)=>({id:r,displayName:r,indexNumber:i,attributes:[]}));this.provenance.storeHelper.dispatch(this.actions.setSamples({samples:n}))}else throw new Error("No explicit sample data nor sample channels found!")}get sampleHierarchy(){return this.provenance.getPresentState()[Tr]}getLocations(){var e,n,r;if(!this._locations){if(!this._coords)return;const i=this.sampleHierarchy,o=I1(i),s=[null,...i.groupMetadata],a=(r=((e=this.summaryViews)==null?void 0:e.isVisible())&&((n=this.summaryViews)==null?void 0:n.getSize().height.px))!=null?r:0,c=B1(o,{viewHeight:this._coords.height,groupSpacing:5,summaryHeight:a}),u=B1(o,{sampleHeight:35,groupSpacing:15,summaryHeight:a}),f=()=>-this._scrollOffset,l=()=>this._peekState;this._scrollableLocations=u,this._scrollableHeight=u.summaries.map(g=>g.locSize.location+g.locSize.size).reduce((g,m)=>Math.max(g,m),0);const d=(g,m)=>{const y=[];for(let x=0;x<g.length;x++){const v=g[x].key;y.push({key:v,locSize:NC(g[x].locSize,LC(m[x].locSize,f),l)})}return y},h=d(c.groups,u.groups),p=document.createElement("div");h.forEach(g=>{if(g.key.depth==0)return;const m=s[g.key.depth].attribute,y=this.compositeAttributeInfoSource.getAttributeInfo(m).title;y?oe(y)?g.key.attributeLabel=y:(Re(y,p),g.key.attributeLabel=p.textContent.replace(/\s+/g," ").trim()):g.key.attributeLabel="unknown"}),this._locations={samples:d(c.samples,u.samples),summaries:d(c.summaries,u.summaries),groups:h}}return this._locations}getSampleAt(e){const n=lI(e,this.getLocations().samples);if(n)return this.sampleHierarchy.sampleData.entities[n.key]}getSummaryAt(e){const n=this.getLocations().summaries,r=n.findIndex(i=>qp(i.locSize,e));return r>=0?{index:r,location:n[r]}:void 0}_clipBySummary(e){if(this.stickySummaries&&this.summaryViews.children.length){const n=this.summaryViews.getSize().height.px;return e.modify({y:()=>e.y+n,height:()=>e.height-n})}}renderChild(e,n,r={}){const i=1/n.height,o=()=>i,s=this._clipBySummary(n);for(const a of this.getLocations().samples)this.child.render(e,n,F(T({},r),{sampleFacetRenderingOptions:{locSize:kC(a.locSize,o)},facetId:[a.key],clipRect:s}))}renderSummaries(e,n,r={}){r=F(T({},r),{clipRect:n});const i=this.summaryViews.getSize().height.px;for(const[o,s]of this.getLocations().summaries.entries()){const a=()=>{const c=s.locSize.location;let u=n.y+c;return this.stickySummaries?u+Nu(-c,0,s.locSize.size-i):u};this.summaryViews.render(e,n.modify({y:a,height:i}),F(T({},r),{facetId:[o]}))}}render(e,n,r={}){if(!this.isVisible())return;n=n.shrink(this.getPadding()),e.pushView(this,n),this._coords=n;const i=Ss([this.peripheryView.isVisible()?this.peripheryView.getSize().width:{px:0},{grow:1}],n.width,{spacing:F1}),o=s=>n.modify({x:s.location+n.x,width:s.size});this.peripheryView.render(e,o(i[0]),r),this.renderChild(e,o(i[1]),r),this.renderSummaries(e,o(i[1]),r),e.popView(this)}onBeforeRender(){this._updateFacetTexture()}_updateFacetTexture(){var i;const e=this.facetTextureData;e.fill(0);const n=(i=this.sampleHierarchy.sampleData)==null?void 0:i.entities;if(n){const o=this.getLocations().samples,s=this._coords.height;for(const a of o){const c=n[a.key].indexNumber;e[c*2+0]=a.locSize.location/s,e[c*2+1]=a.locSize.size/s}}const r=this.context.glHelper.gl;this.facetTexture=Fi(r,{internalFormat:r.RG32F,format:r.RG,height:1},e,this.facetTexture)}_togglePeek(e){var r;if(this._peekState>0&&this._peekState<1||e!==void 0&&e==!!this._peekState)return;const n={requestAnimationFrame:i=>this.context.animator.requestTransition(i),onUpdate:i=>{this._peekState=Math.pow(i,2),this.groupPanel.updateRange(),this.context.animator.requestRender()},from:this._peekState};if(this._peekState==0){const i=this._lastMouseY,o=(r=this.getSampleAt(i))==null?void 0:r.id;let s;if(o)s=(c=>c.location+c.size/2)(this._scrollableLocations.samples.find(c=>c.key==o).locSize);else{const a=this.getSummaryAt(i);a&&(s=this._scrollableLocations.summaries[a.index].locSize.location-(a.location.locSize.location-i))}if(s?this._scrollOffset=s-i:this._scrollOffset=(this._scrollableHeight-this._coords.height)/2,this._scrollableHeight>this._coords.height)Is(F(T({},n),{to:1,duration:500,easingFunction:gD}));else{const a=c=>(1-Math.pow(c*2-1,2))*.5;Is(F(T({},n),{from:0,to:1,duration:300,easingFunction:a}))}}else Is(F(T({},n),{to:0,duration:400,easingFunction:hD}))}_handleContextMenu(e,n){const r=n.uiEvent,i=e.normalizePoint(n.point.x,n.point.y).x,o=this.getScaleResolution("x").invertToComplex(i),s=CM(this.child).filter(u=>!["sample","x","x2"].includes(u.channel)).filter(u=>["rect","rule"].includes(u.view.getMarkType()));let a=[{label:`Locus: ${z1(o)}`,type:"header"},{type:"divider"}],c="";for(const[u,f]of s.entries()){let l=[...f.view.getAncestors()];l=l.slice(0,l.findIndex(g=>g===this));const d={path:l.map(g=>g.name).reverse(),field:f.field,locus:o},h=this.compositeAttributeInfoSource.getAttributeInfo({type:P1,specifier:d}),p=f.view.spec.title||f.view.spec.name;p!=c&&(u>0&&a.push({type:"divider"}),a.push({label:p,type:"header"}),c=p),a.push({label:f.field,submenu:pl(null,h,void 0,this)})}Vm({items:a},r)}getSampleFacetTexture(){return this.facetTexture}getDefaultResolution(e,n){switch(e){case"x":case"sample":return"shared";default:return"independent"}}}function z1(t){return!ae(t)&&"chrom"in t?oD(t):""+t}class fI extends se{constructor(){super();this.reset()}reset(){this._index=0}handle(e){this._propagate({id:e.sample,displayName:e.displayName||e.sample,indexNumber:this._index++,attributes:dI(e)})}}function dI(t){const e=Object.assign({},t);return delete e.sample,delete e.displayName,e}function hI(t){return"samples"in t&&ze(t.samples)&&"spec"in t&&ze(t.spec)}const pI=(t,e)=>e.some(n=>t instanceof n);let R1,U1;function gI(){return R1||(R1=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function mI(){return U1||(U1=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const j1=new WeakMap,Ql=new WeakMap,G1=new WeakMap,Vl=new WeakMap,_l=new WeakMap;function yI(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",o),t.removeEventListener("error",s)},o=()=>{n(dn(t.result)),i()},s=()=>{r(t.error),i()};t.addEventListener("success",o),t.addEventListener("error",s)});return e.then(n=>{n instanceof IDBCursor&&j1.set(n,t)}).catch(()=>{}),_l.set(e,t),e}function AI(t){if(Ql.has(t))return;const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("complete",o),t.removeEventListener("error",s),t.removeEventListener("abort",s)},o=()=>{n(),i()},s=()=>{r(t.error||new DOMException("AbortError","AbortError")),i()};t.addEventListener("complete",o),t.addEventListener("error",s),t.addEventListener("abort",s)});Ql.set(t,e)}let Yl={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return Ql.get(t);if(e==="objectStoreNames")return t.objectStoreNames||G1.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return dn(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 bI(t){Yl=t(Yl)}function xI(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(Wl(this),e,...n);return G1.set(r,e.sort?e.sort():[e]),dn(r)}:mI().includes(t)?function(...e){return t.apply(Wl(this),e),dn(j1.get(this))}:function(...e){return dn(t.apply(Wl(this),e))}}function vI(t){return typeof t=="function"?xI(t):(t instanceof IDBTransaction&&AI(t),pI(t,gI())?new Proxy(t,Yl):t)}function dn(t){if(t instanceof IDBRequest)return yI(t);if(Vl.has(t))return Vl.get(t);const e=vI(t);return e!==t&&(Vl.set(t,e),_l.set(e,t)),e}const Wl=t=>_l.get(t);function wI(t,e,{blocked:n,upgrade:r,blocking:i,terminated:o}={}){const s=indexedDB.open(t,e),a=dn(s);return r&&s.addEventListener("upgradeneeded",c=>{r(dn(s.result),c.oldVersion,c.newVersion,dn(s.transaction))}),n&&s.addEventListener("blocked",()=>n()),a.then(c=>{o&&c.addEventListener("close",()=>o()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),a}const EI=["get","getKey","getAll","getAllKeys","count"],SI=["put","add","delete","clear"],Xl=new Map;function H1(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(Xl.get(e))return Xl.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=SI.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||EI.includes(n)))return;const o=async function(s,...a){const c=this.transaction(s,i?"readwrite":"readonly");let u=c.store;return r&&(u=u.index(a.shift())),(await Promise.all([u[n](...a),i&&c.done]))[0]};return Xl.set(e,o),o}bI(t=>F(T({},t),{get:(e,n,r)=>H1(e,n)||t.get(e,n,r),has:(e,n)=>!!H1(e,n)||t.has(e,n)}));class Q1{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 Ki="bookmarks";class CI extends Q1{constructor(e){super();this.specId=e,this._db=void 0}async _getDB(){if(!this._db){const e=`GenomeSpy: ${this.specId}`;this._db=wI(e,1,{upgrade(n,r,i,o){n.createObjectStore(Ki,{keyPath:"name"})},blocked(){},blocking(){},terminated(){}})}return this._db}isReadonly(){return!1}async put(e,n){const i=(await this._getDB()).transaction(Ki,"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(Ki,e)}async getNames(){return(await this._getDB()).getAllKeys(Ki)}async get(e){return(await this._getDB()).get(Ki,e)}}/**
2134
+ */const h6=Hr(class extends uo{constructor(t){var e;if(super(t),t.type!==zt.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.ct===void 0){this.ct=new Set;for(const r in e)this.ct.add(r);return this.render(e)}this.ct.forEach(r=>{e[r]==null&&(this.ct.delete(r),r.includes("-")?n.removeProperty(r):n[r]="")});for(const r in e){const i=e[r];i!=null&&(this.ct.add(r),r.includes("-")?n.setProperty(r,i):n[r]=i)}return Ee}}),_1="close-dialog";function p6(){return new CustomEvent(_1,{bubbles:!0})}function Wr(t="default"){const e=document.createElement("div");e.classList.add("gs-modal"),t!="default"&&e.classList.add(t);const n=i=>{var o;switch(i.key){case"Escape":{e.querySelector(".btn-cancel").click(),i.stopPropagation();break}case"Enter":{if(((o=i.target)==null?void 0:o.tagName)=="TEXTAREA")return;e.querySelector(".btn-primary").click(),i.stopPropagation();break}}};e.addEventListener("keydown",n),Ge(D`<div class="backdrop"></div><div class="content"></div>`,e);const r=()=>{e.querySelector(".backdrop").addEventListener("transitionend",()=>e.remove()),e.classList.remove("visible"),document.body.classList.remove(Gn)};return e.addEventListener("keydown",i=>{i.stopPropagation()}),e.addEventListener(_1,r),document.body.appendChild(e),window.requestAnimationFrame(()=>e.classList.add("visible")),t!="tour"&&document.body.classList.add(Gn),{content:e.querySelector(".content"),close:r}}function ft(t,e={}){var i;const n=Wr(),r=e.title;return(i=e.okLabel)!=null||(e.okLabel="OK"),new Promise((o,a)=>{const s=()=>{n.close(),o(!0)},c=D`${r?D`<div class="modal-title">${r}</div>`:G}<div class="modal-body" style="max-width:700px">${t}</div><div class="modal-buttons">${e.cancelButton?D`<button @click="${()=>{n.close(),o(!1)}}">Cancel</button>`:G} <button @click="${s}">${e.okLabel}</button></div>`;Ge(c,n.content)})}function m6(t,e){var n,r;nn((n=t.scale)==null?void 0:n.type)?g6(t,e):Ue((r=t.scale)==null?void 0:r.type)?y6(t,e):ft("Not implemented (yet).")}function g6(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=t.scale,i=Wr(),o=D`<div class="modal-title">Filter by <em>${t.name}</em></div>`,a=new Set,s=h=>{n(e.actions.filterByNominal({values:r.domain().filter(p=>a.has(p)),attribute:t.attribute,remove:h})),i.close()},c=h=>{const p=h.target;p.checked?a.add(p.value):a.delete(p.value),d()},u=()=>D`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button ?disabled="${!a.size}" @click="${()=>s(!1)}">${ne(lo).node[0]} Retain</button> <button ?disabled="${!a.size}" @click="${()=>s(!0)}">${ne(Fl).node[0]} Remove</button></div>`,f=r,l=D`<p>Please select one or more categories and choose an action.</p><ul class="gs-checkbox-list" @input="${c}" tabindex="0">${r.domain().map(h=>D`<li><label class="checkbox"><span class="color" style="${h6({backgroundColor:f(h).toString()})}"></span> <input type="checkbox" .value="${h}"> ${h}</label></li>`)}</ul>`;function d(){Ge(D`${o}<div class="modal-body">${l}</div>${u()}`,i.content)}d(),i.content.querySelector(".gs-checkbox-list input[type='checkbox']").focus()}function y6(t,e){const n=e.provenance.storeHelper.getDispatcher();let r="lt",i;const o=Wr(),a=D`<div class="modal-title">Filter by <em>${t.name}</em></div>`,s=h=>{n(e.actions.filterByQuantitative({attribute:t.attribute,operator:r,operand:i})),o.close()},c=()=>D`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>o.close()}">Cancel</button> <button class="btn-primary" ?disabled="${typeof i=="undefined"}" @click="${()=>s()}">${ne(lo).node[0]} Retain</button></div>`,u=h=>{r=h.target.value,d()},f=h=>{const p=h.target.value;i=p.length>0?+p:void 0,d()},l=D`<div class="gs-form-group"><label>Select samples where <em>${t.name}</em> is</label> <select .value="${r}" @change="${u}">${Object.entries(v6).map(([h,p])=>D`<option .value="${h}">${p}</option>`)}</select> <input type="number" placeholder="Please enter a numeric value" @input="${f}"></div>`;function d(){Ge(D`${a}<div class="modal-body">${l}</div>${c()}`,o.content)}d(),o.content.querySelector("select").focus()}const v6={lt:"less than",lte:"less than or equal to",eq:"equal to",gte:"greater than or equal to",gt:"greater than"};function b6(t,e){const n=e.provenance.storeHelper.getDispatcher(),r=[{operand:void 0,operator:"lt"}],i=Wr(),o=D`<div class="modal-title">Group by threshold on <em>${t.name}</em></div>`,a=d=>{n(e.actions.groupByThresholds({attribute:t.attribute,thresholds:r})),i.close()},s=()=>D`<div class="modal-buttons"><button class="btn-cancel" @click="${()=>i.close()}">Cancel</button> <button class="btn-primary" ?disabled="${!A6(r)}" @click="${()=>a()}">${ne(fo).node[0]} Group</button></div>`,c=d=>{const h=d.target.value;r[0].operator=h,l()},u=d=>{const h=d.target.value;r[0].operand=h.length>0?+h:void 0,l()},f=D`<div class="gs-form-group"><label>Split into 2 groups using the threshold:</label><div class="threshold-flex"><select .value="${r[0].operator}" @change="${c}"><option value="lt">${"<"}</option><option value="lte">${"\u2264"}</option></select> <input .value="${""+r[0].operand}" type="number" placeholder="Numeric value" @input="${u}"></div></div>`;function l(){Ge(D`${o}<div class="modal-body">${f}</div>${s()}`,i.content)}l(),i.content.querySelector("select").focus()}function A6(t){return t[0].operator&&typeof t[0].operand=="number"}function df(t,e,n,r){var l;const i=r.actions,o=e.attribute,a=r.provenance.storeHelper.getDispatcher(),s=[];t&&s.push({label:t,type:"header"});const c=d=>{const h=r.provenance.getActionInfo(d);return{label:h.title,icon:h.icon,callback:()=>a(d)}},u=(...d)=>s.push(...d.map(c));u(i.sortBy({attribute:o}));const f=(l=e==null?void 0:e.type)!=null?l:"identifier";return f!="quantitative"?(f!="identifier"&&u(i.groupByNominal({attribute:o}),i.retainFirstOfEach({attribute:o})),u(i.filterByNominal({attribute:o,values:[n]}),i.filterByNominal({attribute:o,remove:!0,values:[n]}))):(u(i.groupToQuartiles({attribute:o})),s.push({icon:fo,label:"Group by thresholds...",callback:()=>b6(e,r)}),x6(n)?u(i.filterByQuantitative({attribute:o,operator:"gte",operand:+n}),i.filterByQuantitative({attribute:o,operator:"lte",operand:+n})):u(i.removeUndefined({attribute:o}))),f!=="identifier"&&s.push({icon:lo,label:"Advanced filter...",callback:()=>m6(e,r)}),s}function x6(t){return t!=null&&t!==""&&!(typeof t=="number"&&isNaN(t))}function w6(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var yn={},ir={};Object.defineProperty(ir,"__esModule",{value:!0}),ir.ActionCreators=ir.ActionTypes=void 0;var or={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"};ir.ActionTypes=or;var C6={undo:function(){return{type:or.UNDO}},redo:function(){return{type:or.REDO}},jumpToFuture:function(e){return{type:or.JUMP_TO_FUTURE,index:e}},jumpToPast:function(e){return{type:or.JUMP_TO_PAST,index:e}},jump:function(e){return{type:or.JUMP,index:e}},clearHistory:function(){return{type:or.CLEAR_HISTORY}}};ir.ActionCreators=C6;var xt={};Object.defineProperty(xt,"__esModule",{value:!0}),xt.parseActions=As,xt.isHistory=S6,xt.includeAction=E6,xt.excludeAction=D6,xt.combineFilters=M6,xt.groupByActionTypes=T6,xt.newHistory=I6;function As(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Array.isArray(t)?t:typeof t=="string"?[t]:e}function S6(t){return typeof t.present!="undefined"&&typeof t.future!="undefined"&&typeof t.past!="undefined"&&Array.isArray(t.future)&&Array.isArray(t.past)}function E6(t){var e=As(t);return function(n){return e.indexOf(n.type)>=0}}function D6(t){var e=As(t);return function(n){return e.indexOf(n.type)<0}}function M6(){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 T6(t){var e=As(t);return function(n){return e.indexOf(n.type)>=0?n.type:null}}function I6(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 W1={},Xr={};Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.set=R6,Xr.start=P6,Xr.end=F6,Xr.log=z6;function wt(t){return L6(t)||N6(t)||k6()}function k6(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function N6(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function L6(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,tt,hf={prevState:"#9E9E9E",action:"#03A9F4",nextState:"#4CAF50"};function B6(){tt={header:[],prev:[],action:[],next:[],msgs:[]}}function O6(){var t=tt,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,h,p,m;(l=console).log.apply(l,wt(e)),(d=console).log.apply(d,wt(n)),(h=console).log.apply(h,wt(i)),(p=console).log.apply(p,wt(r)),(m=console).log.apply(m,wt(o))}}function pf(t,e,n){return["%c".concat(t),"color: ".concat(e,"; font-weight: bold"),n]}function P6(t,e){B6(),xs&&(console.group?(tt.header=["%credux-undo","font-style: italic","action",t.type],tt.action=pf("action",hf.action,t),tt.prev=pf("prev history",hf.prevState,e)):(tt.header=["redux-undo action",t.type],tt.action=["action",t],tt.prev=["prev history",e]))}function F6(t){xs&&(console.group?tt.next=pf("next history",hf.nextState,t):tt.next=["next history",t],O6())}function z6(){if(xs){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];tt.msgs=tt.msgs.concat([].concat(e,[`
2135
+ `]))}}function R6(t){xs=t}(function(t){function e(b){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e=function(w){return typeof w}:e=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},e(b)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=C;var n=a(Xr),r=ir,i=xt;function o(){if(typeof WeakMap!="function")return null;var b=new WeakMap;return o=function(){return b},b}function a(b){if(b&&b.__esModule)return b;if(b===null||e(b)!=="object"&&typeof b!="function")return{default:b};var v=o();if(v&&v.has(b))return v.get(b);var w={},E=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var k in b)if(Object.prototype.hasOwnProperty.call(b,k)){var L=E?Object.getOwnPropertyDescriptor(b,k):null;L&&(L.get||L.set)?Object.defineProperty(w,k,L):w[k]=b[k]}return w.default=b,v&&v.set(b,w),w}function s(b,v){var w=Object.keys(b);if(Object.getOwnPropertySymbols){var E=Object.getOwnPropertySymbols(b);v&&(E=E.filter(function(k){return Object.getOwnPropertyDescriptor(b,k).enumerable})),w.push.apply(w,E)}return w}function c(b){for(var v=1;v<arguments.length;v++){var w=arguments[v]!=null?arguments[v]:{};v%2?s(Object(w),!0).forEach(function(E){u(b,E,w[E])}):Object.getOwnPropertyDescriptors?Object.defineProperties(b,Object.getOwnPropertyDescriptors(w)):s(Object(w)).forEach(function(E){Object.defineProperty(b,E,Object.getOwnPropertyDescriptor(w,E))})}return b}function u(b,v,w){return v in b?Object.defineProperty(b,v,{value:w,enumerable:!0,configurable:!0,writable:!0}):b[v]=w,b}function f(b){return h(b)||d(b)||l()}function l(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function d(b){if(Symbol.iterator in Object(b)||Object.prototype.toString.call(b)==="[object Arguments]")return Array.from(b)}function h(b){if(Array.isArray(b)){for(var v=0,w=new Array(b.length);v<b.length;v++)w[v]=b[v];return w}}function p(b,v){var w=(0,i.newHistory)([],b,[]);return v&&(w._latestUnfiltered=null),w}function m(b,v,w,E){var k=b.past.length+1;n.log("inserting",v),n.log("new free: ",w-k);var L=b.past,I=b._latestUnfiltered,P=w&&w<=k,Z=L.slice(P?1:0),Q=I!=null?[].concat(f(Z),[I]):Z;return(0,i.newHistory)(Q,v,[],E)}function y(b,v){if(v<0||v>=b.future.length)return b;var w=b.past,E=b.future,k=b._latestUnfiltered,L=[].concat(f(w),[k],f(E.slice(0,v))),I=E[v],P=E.slice(v+1);return(0,i.newHistory)(L,I,P)}function g(b,v){if(v<0||v>=b.past.length)return b;var w=b.past,E=b.future,k=b._latestUnfiltered,L=w.slice(0,v),I=[].concat(f(w.slice(v+1)),[k],f(E)),P=w[v];return(0,i.newHistory)(L,P,I)}function A(b,v){return v>0?y(b,v-1):v<0?g(b,b.past.length+v):b}function x(b,v){return v.indexOf(b)>-1?b:!b}function C(b){var v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.set(v.debug);var w=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])}),E=w.neverSkipReducer?function(L,I){for(var P=arguments.length,Z=new Array(P>2?P-2:0),Q=2;Q<P;Q++)Z[Q-2]=arguments[Q];return c({},L,{present:b.apply(void 0,[L.present,I].concat(Z))})}:function(L){return L},k;return function(){var L=arguments.length>0&&arguments[0]!==void 0?arguments[0]:k,I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};n.start(I,L);for(var P=L,Z=arguments.length,Q=new Array(Z>2?Z-2:0),fe=2;fe<Z;fe++)Q[fe-2]=arguments[fe];if(!k)if(n.log("history is uninitialized"),L===void 0){var Se={type:"@@redux-undo/CREATE_HISTORY"},Cn=b.apply(void 0,[L,Se].concat(Q));return P=p(Cn,w.ignoreInitialState),n.log("do not set initialState on probe actions"),n.end(P),P}else(0,i.isHistory)(L)?(P=k=w.ignoreInitialState?L:(0,i.newHistory)(L.past,L.present,L.future),n.log("initialHistory initialized: initialState is a history",k)):(P=k=p(L,w.ignoreInitialState),n.log("initialHistory initialized: initialState is not a history",k));var W;switch(I.type){case void 0:return P;case w.undoType:return W=A(P,-1),n.log("perform undo"),n.end(W),E.apply(void 0,[W,I].concat(Q));case w.redoType:return W=A(P,1),n.log("perform redo"),n.end(W),E.apply(void 0,[W,I].concat(Q));case w.jumpToPastType:return W=g(P,I.index),n.log("perform jumpToPast to ".concat(I.index)),n.end(W),E.apply(void 0,[W,I].concat(Q));case w.jumpToFutureType:return W=y(P,I.index),n.log("perform jumpToFuture to ".concat(I.index)),n.end(W),E.apply(void 0,[W,I].concat(Q));case w.jumpType:return W=A(P,I.index),n.log("perform jump to ".concat(I.index)),n.end(W),E.apply(void 0,[W,I].concat(Q));case x(I.type,w.clearHistoryType):return W=p(P.present,w.ignoreInitialState),n.log("perform clearHistory"),n.end(W),E.apply(void 0,[W,I].concat(Q));default:if(W=b.apply(void 0,[P.present,I].concat(Q)),w.initTypes.some(function(ed){return ed===I.type}))return n.log("reset history due to init action"),n.end(k),k;if(P._latestUnfiltered===W)return P;var _e=typeof w.filter=="function"&&!w.filter(I,W,P);if(_e){var zo=(0,i.newHistory)(P.past,W,P.future,P.group);return w.syncFilter||(zo._latestUnfiltered=P._latestUnfiltered),n.log("filter ignored action, not storing it in past"),n.end(zo),zo}var Ro=w.groupBy(I,W,P);if(Ro!=null&&Ro===P.group){var Vs=(0,i.newHistory)(P.past,W,P.future,P.group);return n.log("groupBy grouped the action with the previous action"),n.end(Vs),Vs}return P=m(P,W,w.limit,Ro),n.log("inserted new state into history"),n.end(P),P}}}})(W1),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=ir,n=xt,r=i(W1);function i(o){return o&&o.__esModule?o:{default:o}}}(yn);var j6=w6(yn);function mf(t){return t.split("-")[0]}function X1(t){return t.split("-")[1]}function Z1(t){return["top","bottom"].includes(mf(t))?"x":"y"}function q1(t){return t==="y"?"height":"width"}function K1(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=Z1(e),c=q1(s),u=r[c]/2-i[c]/2,f=mf(e),l=s==="x";let d;switch(f){case"top":d={x:o,y:r.y-i.height};break;case"bottom":d={x:o,y:r.y+r.height};break;case"right":d={x:r.x+r.width,y:a};break;case"left":d={x:r.x-i.width,y:a};break;default:d={x:r.x,y:r.y}}switch(X1(e)){case"start":d[s]-=u*(n&&l?-1:1);break;case"end":d[s]+=u*(n&&l?-1:1);break}return d}const U6=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}=K1(c,r,s),l=r,d={};for(let h=0;h<o.length;h++){const{name:p,fn:m}=o[h],{x:y,y:g,data:A,reset:x}=await m({x:u,y:f,initialPlacement:r,placement:l,strategy:i,middlewareData:d,rects:c,platform:a,elements:{reference:t,floating:e}});if(u=y!=null?y:u,f=g!=null?g:f,d=U(T({},d),{[p]:T(T({},d[p]),A)}),x){typeof x=="object"&&(x.placement&&(l=x.placement),x.rects&&(c=x.rects===!0?await a.getElementRects({reference:t,floating:e,strategy:i}):x.rects),{x:u,y:f}=K1(c,l,s)),h=-1;continue}}return{x:u,y:f,placement:l,strategy:i,middlewareData:d}};function G6(t){return T({top:0,right:0,bottom:0,left:0},t)}function H6(t){return typeof t!="number"?G6(t):{top:t,right:t,bottom:t,left:t}}function ws(t){return U(T({},t),{top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height})}async function Q6(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:h=0}=e,p=H6(h),y=s[d?l==="floating"?"reference":"floating":l],g=ws(await o.getClippingRect({element:(n=await(o.isElement==null?void 0:o.isElement(y)))==null||n?y:y.contextElement||await(o.getDocumentElement==null?void 0:o.getDocumentElement(s.floating)),boundary:u,rootBoundary:f,strategy:c})),A=ws(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({rect:l==="floating"?U(T({},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-A.top+p.top,bottom:A.bottom-g.bottom+p.bottom,left:g.left-A.left+p.left,right:A.right-g.right+p.right}}const V6={left:"right",right:"left",bottom:"top",top:"bottom"};function Cs(t){return t.replace(/left|right|bottom|top/g,e=>V6[e])}function Y6(t,e,n){n===void 0&&(n=!1);const r=X1(t),i=Z1(t),o=q1(i);let a=i==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return e.reference[o]>e.floating[o]&&(a=Cs(a)),{main:a,cross:Cs(a)}}const _6={start:"end",end:"start"};function J1(t){return t.replace(/start|end/g,e=>_6[e])}function W6(t){const e=Cs(t);return[J1(t),e,J1(e)]}const X6=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,k=t,{mainAxis:u=!0,crossAxis:f=!0,fallbackPlacements:l,fallbackStrategy:d="bestFit",flipAlignment:h=!0}=k,p=j2(k,["mainAxis","crossAxis","fallbackPlacements","fallbackStrategy","flipAlignment"]),m=mf(r),g=l||(m===a||!h?[Cs(a)]:W6(a)),A=[a,...g],x=await Q6(e,p),C=[];let b=((n=i.flip)==null?void 0:n.overflows)||[];if(u&&C.push(x[m]),f){const{main:L,cross:I}=Y6(r,o,await(s.isRTL==null?void 0:s.isRTL(c.floating)));C.push(x[L],x[I])}if(b=[...b,{placement:r,overflows:C}],!C.every(L=>L<=0)){var v,w;const L=((v=(w=i.flip)==null?void 0:w.index)!=null?v:0)+1,I=A[L];if(I)return{data:{index:L,overflows:b},reset:{placement:I}};let P="bottom";switch(d){case"bestFit":{var E;const Z=(E=b.map(Q=>[Q,Q.overflows.filter(fe=>fe>0).reduce((fe,Se)=>fe+Se,0)]).sort((Q,fe)=>Q[1]-fe[1])[0])==null?void 0:E[0].placement;Z&&(P=Z);break}case"initialPlacement":P=a;break}if(r!==P)return{reset:{placement:P}}}return{}}}};function $1(t){return t&&t.document&&t.location&&t.alert&&t.setInterval}function Ht(t){if(t==null)return window;if(!$1(t)){const e=t.ownerDocument;return e&&e.defaultView||window}return t}function vo(t){return Ht(t).getComputedStyle(t)}function Qt(t){return $1(t)?"":t?(t.nodeName||"").toLowerCase():""}function ey(){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 Ht(t).HTMLElement}function Zr(t){return t instanceof Ht(t).Element}function Z6(t){return t instanceof Ht(t).Node}function gf(t){if(typeof ShadowRoot=="undefined")return!1;const e=Ht(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Ss(t){const{overflow:e,overflowX:n,overflowY:r}=vo(t);return/auto|scroll|overlay|hidden/.test(e+r+n)}function q6(t){return["table","td","th"].includes(Qt(t))}function ty(t){const e=/firefox/i.test(ey()),n=vo(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":!1)}function ny(){return!/^((?!chrome|android).)*safari/i.test(ey())}const ry=Math.min,bo=Math.max,Es=Math.round;function ar(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&&Es(s.width)/t.offsetWidth||1,u=t.offsetHeight>0&&Es(s.height)/t.offsetHeight||1);const f=Zr(t)?Ht(t):window,l=!ny()&&n,d=(s.left+(l&&(r=(i=f.visualViewport)==null?void 0:i.offsetLeft)!=null?r:0))/c,h=(s.top+(l&&(o=(a=f.visualViewport)==null?void 0:a.offsetTop)!=null?o:0))/u,p=s.width/c,m=s.height/u;return{width:p,height:m,top:h,right:d+p,bottom:h+m,left:d,x:d,y:h}}function vn(t){return((Z6(t)?t.ownerDocument:t.document)||window.document).documentElement}function Ds(t){return Zr(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function iy(t){return ar(vn(t)).left+Ds(t).scrollLeft}function K6(t){const e=ar(t);return Es(e.width)!==t.offsetWidth||Es(e.height)!==t.offsetHeight}function J6(t,e,n){const r=Ct(e),i=vn(e),o=ar(t,r&&K6(e),n==="fixed");let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if(r||!r&&n!=="fixed")if((Qt(e)!=="body"||Ss(i))&&(a=Ds(e)),Ct(e)){const c=ar(e,!0);s.x=c.x+e.clientLeft,s.y=c.y+e.clientTop}else i&&(s.x=iy(i));return{x:o.left+a.scrollLeft-s.x,y:o.top+a.scrollTop-s.y,width:o.width,height:o.height}}function oy(t){return Qt(t)==="html"?t:t.assignedSlot||t.parentNode||(gf(t)?t.host:null)||vn(t)}function ay(t){return!Ct(t)||getComputedStyle(t).position==="fixed"?null:t.offsetParent}function $6(t){let e=oy(t);for(gf(e)&&(e=e.host);Ct(e)&&!["html","body"].includes(Qt(e));){if(ty(e))return e;e=e.parentNode}return null}function yf(t){const e=Ht(t);let n=ay(t);for(;n&&q6(n)&&getComputedStyle(n).position==="static";)n=ay(n);return n&&(Qt(n)==="html"||Qt(n)==="body"&&getComputedStyle(n).position==="static"&&!ty(n))?e:n||$6(t)||e}function sy(t){if(Ct(t))return{width:t.offsetWidth,height:t.offsetHeight};const e=ar(t);return{width:e.width,height:e.height}}function eI(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"||Ss(o))&&(a=Ds(n)),Ct(n))){const c=ar(n,!0);s.x=c.x+n.clientLeft,s.y=c.y+n.clientTop}return U(T({},e),{x:e.x-a.scrollLeft+s.x,y:e.y-a.scrollTop+s.y})}function tI(t,e){const n=Ht(t),r=vn(t),i=n.visualViewport;let o=r.clientWidth,a=r.clientHeight,s=0,c=0;if(i){o=i.width,a=i.height;const u=ny();(u||!u&&e==="fixed")&&(s=i.offsetLeft,c=i.offsetTop)}return{width:o,height:a,x:s,y:c}}function nI(t){var e;const n=vn(t),r=Ds(t),i=(e=t.ownerDocument)==null?void 0:e.body,o=bo(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=bo(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0);let s=-r.scrollLeft+iy(t);const c=-r.scrollTop;return vo(i||n).direction==="rtl"&&(s+=bo(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:a,x:s,y:c}}function cy(t){const e=oy(t);return["html","body","#document"].includes(Qt(e))?t.ownerDocument.body:Ct(e)&&Ss(e)?e:cy(e)}function uy(t,e){var n;e===void 0&&(e=[]);const r=cy(t),i=r===((n=t.ownerDocument)==null?void 0:n.body),o=Ht(r),a=i?[o].concat(o.visualViewport||[],Ss(r)?r:[]):r,s=e.concat(a);return i?s:s.concat(uy(a))}function rI(t,e){const n=e==null||e.getRootNode==null?void 0:e.getRootNode();if(t!=null&&t.contains(e))return!0;if(n&&gf(n)){let r=e;do{if(r&&t===r)return!0;r=r.parentNode||r.host}while(r)}return!1}function iI(t,e){const n=ar(t,!1,e==="fixed"),r=n.top+t.clientTop,i=n.left+t.clientLeft;return{top:r,left:i,x:i,y:r,right:i+t.clientWidth,bottom:r+t.clientHeight,width:t.clientWidth,height:t.clientHeight}}function ly(t,e,n){return e==="viewport"?ws(tI(t,n)):Zr(e)?iI(e,n):ws(nI(vn(t)))}function oI(t){const e=uy(t),r=["absolute","fixed"].includes(vo(t).position)&&Ct(t)?yf(t):t;return Zr(r)?e.filter(i=>Zr(i)&&rI(i,r)&&Qt(i)!=="body"):[]}function aI(t){let{element:e,boundary:n,rootBoundary:r,strategy:i}=t;const a=[...n==="clippingAncestors"?oI(e):[].concat(n),r],s=a[0],c=a.reduce((u,f)=>{const l=ly(e,f,i);return u.top=bo(l.top,u.top),u.right=ry(l.right,u.right),u.bottom=ry(l.bottom,u.bottom),u.left=bo(l.left,u.left),u},ly(e,s,i));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}}const sI={getClippingRect:aI,convertOffsetParentRelativeRectToViewportRelativeRect:eI,isElement:Zr,getDimensions:sy,getOffsetParent:yf,getDocumentElement:vn,getElementRects:t=>{let{reference:e,floating:n,strategy:r}=t;return{reference:J6(e,yf(n),r),floating:U(T({},sy(n)),{x:0,y:0})}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>vo(t).direction==="rtl"},cI=(t,e,n)=>U6(t,e,T({platform:sI},n));let St;const Ao=[],vf=as(t=>t(),150,!1);function xo(t){if((t==null?void 0:t.type)=="contextmenu"){t.preventDefault();return}St&&(St.remove(),St=void 0,document.body.classList.remove(Gn))}function fy(t){var e;if(!(t<1)){for(let n=t;n<Ao.length;n++)(e=Ao[n])==null||e.remove(),Ao[n]=void 0;for(const n of Ao[t-1].querySelectorAll("li.active"))n.classList.remove("active")}}const uI=()=>D`<li class="menu-divider"></li>`,lI=t=>D`<li class="menu-header">${t.label||"-"}</li>`,fI=(t,e)=>D`<li><a class="submenu-item" @click="${n=>n.stopPropagation()}" @mouseup="${n=>n.stopPropagation()}" @mouseenter="${n=>vf(()=>{const r=n.target.closest("li");pI(t.submenu,r,e+1),n.stopPropagation()})}" @mouseleave="${()=>vf(()=>fy(e+1))}"><span>${t.label}</span></a></li>`,dI=t=>D`<li><a @mouseup="${()=>{xo(),t.callback()}}">${t.icon?ne(t.icon).node[0]:""} ${t.label}</a> ${t.ellipsisCallback?D`<a class="menu-ellipsis" @click="${t.ellipsisCallback}">${ne(A5).node[0]}</a>`:G}</li>`,hI=t=>D`<li><span class="disabled-item">${t.icon?ne(t.icon).node[0]:""} ${t.label||"-"}</span></li>`;function dy(t,e=1){switch(t.type){case"divider":return uI();case"header":return lI(t);default:return t.submenu?fI(t,e):t.callback?dI(t):hI(t)}}function pI(t,e,n){hy(t,e,n,"right-start"),e.classList.add("active")}function hy(t,e,n,r){const i=document.createElement("ul");i.classList.add("gs-context-menu"),i.addEventListener("mouseenter",()=>{vf(()=>{})}),Ge(t.map(o=>dy(o,n)),i),St.appendChild(i),fy(n),Ao[n]=i,cI(e,i,{placement:r!=null?r:"right-start",middleware:[X6()]}).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 py(t,e,n){n!=null||(n="bottom-start"),xo();const r=performance.now(),i=document.body;St=document.createElement("div"),St.classList.add("gs-context-menu-backdrop"),St.addEventListener("click",xo),St.addEventListener("contextmenu",xo),St.addEventListener("mouseup",()=>{performance.now()-r>500&&xo()},{once:!0}),i.appendChild(St),document.body.classList.add(Gn),hy(t.items,e,0,n)}function my(t,e){py(t,mI(e),"right-start"),e.preventDefault()}function mI(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 bf={NOMINAL:"nominal",ORDINAL:"ordinal",QUANTITATIVE:"quantitative"},Ms="SAMPLE_ATTRIBUTE",gy="SAMPLE_NAME",gI=/^attribute-(.*)$/;class yy extends jr{constructor(e){super({title:"Sample metadata",data:{dynamicSource:!0},hconcat:[],spacing: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(Ms,n=>this.children.map(this.getAttributeInfoFromView.bind(this)).find(r=>r&&r.name==n.specifier)),this.sampleView.compositeAttributeInfoSource.addAttributeInfoSource(gy,n=>vy),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)}),He([...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,U(T({},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(T({from:n.backgroundOpacity,onUpdate:r=>{n.backgroundOpacity=r},easingFunction:$m,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=[],a=this.getAttributeInfoFromView(n.target);if(a){const s=i.attributes[a.name];o.push(...df(D`Attribute: <strong>${a.name}</strong>`,a,s,this.sampleView))}else o.push(...df(D`Sample: <strong>${i.displayName}</strong>`,vy,i.id,this.sampleView));my({items:o},r)}_setSamples(e){if(this.childCount)throw new Error("Children are already created!");this._createViews();const n=this.context.dataFlow;Dg(this,n);const r=n.findDataSourceByKey(this);r.visit(o=>o.initialize());const i=[];this.visit(o=>{if(o instanceof Ae){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(vI(),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),Tg(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(ih(i.map(o=>o.attributes[e]))){case"integer":case"number":r=bf.QUANTITATIVE;break;default:r=bf.NOMINAL}}return yI(e,U(T({},n||{}),{type:r}))}_findViewForAttribute(e){return this.children[this._getAttributeNames().indexOf(e)+1]}getAttributeInfoFromView(e){const n=e==null?void 0:e.name.match(gI);if(n){const r=e.getScaleResolution("color"),i=n[1];return{name:i,attribute:{type:Ms,specifier:i},accessor:(o,a)=>a.sampleData.entities[o].attributes[i],type:r.type,scale:r.getScale(),title:D`<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)=>bI(c)?this.getAttributeInfo(s).scale(c):"transparent",a=D`<table class="attributes">${Object.entries(i.attributes).map(([s,c])=>D`<tr class="${t5({hovered:s==r})}"><th>${s}</th><td>${Fg(c)}</td><td class="color" .style="background-color: ${o(s,c)}"></td></tr>`)}</table>`;return D`<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==yl||i.type==vl)&&this.sampleView.getSamples().find(a=>a.attributes[i.name]==n)){const a=this.sampleView.actions.filterByNominal({attribute:{type:Ms,specifier:r},values:[n]}),s=this.sampleView.provenance.getPresentState().lastAction,c=this.sampleView.actions.filterByNominal.match(s)&&!s.payload.remove&&s.payload.attribute.type==Ms&&s.payload.attribute.specifier==r&&s.payload.values.length==1;return this.sampleView.provenance.storeHelper.dispatch(c?[yn.ActionCreators.undo(),a]:a),!0}}return!1}isPickingSupported(){return!1}}function yI(t,e){var i,o;const n=`attributes["${t}"]`,r={name:`attribute-${t}`,title:{text:t,orient:"bottom",align:"right",baseline:"middle",offset:5,angle:-90,dy:-.5,fontSize:11},visible:(i=e.visible)!=null?i:!0,width:(o=e.width)!=null?o:10,transform:[{type:"filter",expr:`datum.${n} != null`}],mark:{type:"rect",xOffset:-.5},encoding:{facetIndex:{field:"indexNumber"},color:{field:n,type:e.type,scale:e.scale}},opacity:1};return e.barScale&&e.type==bf.QUANTITATIVE&&(r.encoding.x={field:`attributes["${t}"]`,type:e.type,scale:e.barScale,axis:null}),r}function vI(){return{name:"metadata-sample-name",title:{text:"Sample name",orient:"bottom",anchor:"start",offset:5,fontSize:11},width:140,mark:{type:"text",align:"left",baseline:"middle",size:11,flushY:!1},encoding:{facetIndex:{field:"indexNumber"},x:{value:0},x2:{value:1},y:{value:0},y2:{value:1},text:{field:"displayName"}}}}function bI(t){return t!==""&&!(typeof t=="number"&&isNaN(t))&&t!==null}const vy=Object.freeze({name:"sample",attribute:{type:gy},accessor:t=>t,type:"identifier",scale:void 0});class AI 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:"_NA",expr:"datum.label == null"},{type:"formula",as:"label",expr:"datum.label != null ? datum.label: '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"}},{mark:{type:"text",clip:!0,angle:-90,paddingY:5,tooltip:null},encoding:{text:{field:"label"},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()})}updateRange(){var o,a,s;const e=(o=this.sampleView.getLocations())==null?void 0:o.groups;if(!(e!=null&&e.length))return;const n=(s=(a=this.sampleView)==null?void 0:a.childCoords.height)!=null?s:0,r=this.getScaleResolution("y"),i=[];for(const c of e)i.push(1-(c.locSize.location+c.locSize.size)/n),i.push(1-c.locSize.location/n);r.getScale().range(i),this.context.glHelper.createRangeTexture(r,!0)}updateGroups(){var i,o;const e=(o=(i=this.sampleView.getLocations())==null?void 0:i.groups)!=null?o:[],n=this.context.dataFlow.findDataSourceByKey(this);if(!n)return;const r=e.map(a=>({_index:a.key.index,_name:a.key.group.name,_depth:a.key.depth,attribute:a.key.attributeLabel,label:a.key.group.label,n:a.key.n}));n.publishData(r),this.getScaleResolution("x").reconfigure(),this.getScaleResolution("y").reconfigure(),e.length&&this.updateRange(),He([...this.getAncestors()]).visit(a=>to(a,"size"))}}function dt(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 bn(t){return!!t&&!!t[ae]}function An(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)===II}(t)||Array.isArray(t)||!!t[Ty]||!!t.constructor[Ty]||Af(t)||xf(t))}function sr(t,e,n){n===void 0&&(n=!1),qr(t)===0?(n?Object.keys:Jr)(t).forEach(function(r){n&&typeof r=="symbol"||e(r,t[r],t)}):t.forEach(function(r,i){return e(i,r,t)})}function qr(t){var e=t[ae];return e?e.i>3?e.i-4:e.i:Array.isArray(t)?1:Af(t)?2:xf(t)?3:0}function Kr(t,e){return qr(t)===2?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function xI(t,e){return qr(t)===2?t.get(e):t[e]}function by(t,e,n){var r=qr(t);r===2?t.set(e,n):r===3?(t.delete(e),t.add(n)):t[e]=n}function Ay(t,e){return t===e?t!==0||1/t==1/e:t!=t&&e!=e}function Af(t){return MI&&t instanceof Map}function xf(t){return TI&&t instanceof Set}function cr(t){return t.o||t.t}function wf(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var e=Iy(t);delete e[ae];for(var n=Jr(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 Cf(t,e){return e===void 0&&(e=!1),Sf(t)||bn(t)||!An(t)||(qr(t)>1&&(t.set=t.add=t.clear=t.delete=wI),Object.freeze(t),e&&sr(t,function(n,r){return Cf(r,!0)},!0)),t}function wI(){dt(2)}function Sf(t){return t==null||typeof t!="object"||Object.isFrozen(t)}function Et(t){var e=Bf[t];return e||dt(18,t),e}function CI(t,e){Bf[t]||(Bf[t]=e)}function Ef(){return wo}function Df(t,e){e&&(Et("Patches"),t.u=[],t.s=[],t.v=e)}function Ts(t){Mf(t),t.p.forEach(SI),t.p=null}function Mf(t){t===wo&&(wo=t.l)}function xy(t){return wo={p:[],l:wo,h:t,m:!0,_:0}}function SI(t){var e=t[ae];e.i===0||e.i===1?e.j():e.O=!0}function Tf(t,e){e._=e.p.length;var n=e.p[0],r=t!==void 0&&t!==n;return e.h.g||Et("ES5").S(e,t,r),r?(n[ae].P&&(Ts(e),dt(4)),An(t)&&(t=Is(e,t),e.l||ks(e,t)),e.u&&Et("Patches").M(n[ae].t,t,e.u,e.s)):t=Is(e,n,[]),Ts(e),e.u&&e.v(e.u,e.s),t!==My?t:void 0}function Is(t,e,n){if(Sf(e))return e;var r=e[ae];if(!r)return sr(e,function(o,a){return wy(t,r,e,o,a,n)},!0),e;if(r.A!==t)return e;if(!r.P)return ks(t,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=wf(r.k):r.o;sr(r.i===3?new Set(i):i,function(o,a){return wy(t,r,i,o,a,n)}),ks(t,i,!1),n&&t.u&&Et("Patches").R(r,n,t.u,t.s)}return r.o}function wy(t,e,n,r,i,o){if(bn(i)){var a=Is(t,i,o&&e&&e.i!==3&&!Kr(e.D,r)?o.concat(r):void 0);if(by(n,r,a),!bn(a))return;t.m=!1}if(An(i)&&!Sf(i)){if(!t.h.F&&t._<1)return;Is(t,i),e&&e.A.l||ks(t,i)}}function ks(t,e,n){n===void 0&&(n=!1),t.h.F&&t.m&&Cf(e,n)}function If(t,e){var n=t[ae];return(n?cr(n):t)[e]}function Cy(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 xn(t){t.P||(t.P=!0,t.l&&xn(t.l))}function kf(t){t.o||(t.o=wf(t.t))}function Nf(t,e,n){var r=Af(e)?Et("MapSet").N(e,n):xf(e)?Et("MapSet").T(e,n):t.g?function(i,o){var a=Array.isArray(i),s={i:a?1:0,A:o?o.A:Ef(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},c=s,u=Co;a&&(c=[s],u=So);var f=Proxy.revocable(c,u),l=f.revoke,d=f.proxy;return s.k=d,s.j=l,d}(e,n):Et("ES5").J(e,n);return(n?n.A:Ef()).p.push(r),r}function EI(t){return bn(t)||dt(22,t),function e(n){if(!An(n))return n;var r,i=n[ae],o=qr(n);if(i){if(!i.P&&(i.i<4||!Et("ES5").K(i)))return i.t;i.I=!0,r=Sy(n,o),i.I=!1}else r=Sy(n,o);return sr(r,function(a,s){i&&xI(i.t,a)===s||by(r,a,e(s))}),o===3?new Set(r):r}(t)}function Sy(t,e){switch(e){case 2:return new Map(t);case 3:return Array.from(t)}return wf(t)}function DI(){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[ae];return Co.get(c,o)},set:function(c){var u=this[ae];Co.set(u,o,c)}},s}function e(o){for(var a=o.length-1;a>=0;a--){var s=o[a][ae];if(!s.P)switch(s.i){case 5:r(s)&&xn(s);break;case 4:n(s)&&xn(s)}}}function n(o){for(var a=o.t,s=o.k,c=Jr(s),u=c.length-1;u>=0;u--){var f=c[u];if(f!==ae){var l=a[f];if(l===void 0&&!Kr(a,f))return!0;var d=s[f],h=d&&d[ae];if(h?h.t!==l:!Ay(d,l))return!0}}var p=!!a[ae];return c.length!==Jr(a).length+(p?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={};CI("ES5",{J:function(o,a){var s=Array.isArray(o),c=function(f,l){if(f){for(var d=Array(l.length),h=0;h<l.length;h++)Object.defineProperty(d,""+h,t(h,!0));return d}var p=Iy(l);delete p[ae];for(var m=Jr(p),y=0;y<m.length;y++){var g=m[y];p[g]=t(g,f||!!p[g].enumerable)}return Object.create(Object.getPrototypeOf(l),p)}(s,o),u={i:s?5:4,A:a?a.A:Ef(),P:!1,I:!1,D:{},l:a,t:o,k:c,o:null,O:!1,C:!1};return Object.defineProperty(c,ae,{value:u,writable:!0}),c},S:function(o,a,s){s?bn(a)&&a[ae].A===o&&e(o.p):(o.u&&function c(u){if(u&&typeof u=="object"){var f=u[ae];if(f){var l=f.t,d=f.k,h=f.D,p=f.i;if(p===4)sr(d,function(x){x!==ae&&(l[x]!==void 0||Kr(l,x)?h[x]||c(d[x]):(h[x]=!0,xn(f)))}),sr(l,function(x){d[x]!==void 0||Kr(d,x)||(h[x]=!1,xn(f))});else if(p===5){if(r(f)&&(xn(f),h.length=!0),d.length<l.length)for(var m=d.length;m<l.length;m++)h[m]=!1;else for(var y=l.length;y<d.length;y++)h[y]=!0;for(var g=Math.min(d.length,l.length),A=0;A<g;A++)d.hasOwnProperty(A)||(h[A]=!0),h[A]===void 0&&c(d[A])}}}}(o.p[0]),e(o.p))},K:function(o){return o.i===4?n(o):r(o)}})}var Ey,wo,Lf=typeof Symbol!="undefined"&&typeof Symbol("x")=="symbol",MI=typeof Map!="undefined",TI=typeof Set!="undefined",Dy=typeof Proxy!="undefined"&&Proxy.revocable!==void 0&&typeof Reflect!="undefined",My=Lf?Symbol.for("immer-nothing"):((Ey={})["immer-nothing"]=!0,Ey),Ty=Lf?Symbol.for("immer-draftable"):"__$immer_draftable",ae=Lf?Symbol.for("immer-state"):"__$immer_state",II=""+Object.prototype.constructor,Jr=typeof Reflect!="undefined"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,Iy=Object.getOwnPropertyDescriptors||function(t){var e={};return Jr(t).forEach(function(n){e[n]=Object.getOwnPropertyDescriptor(t,n)}),e},Bf={},Co={get:function(t,e){if(e===ae)return t;var n=cr(t);if(!Kr(n,e))return function(i,o,a){var s,c=Cy(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||!An(r)?r:r===If(t.t,e)?(kf(t),t.o[e]=Nf(t.A.h,r,t)):r},has:function(t,e){return e in cr(t)},ownKeys:function(t){return Reflect.ownKeys(cr(t))},set:function(t,e,n){var r=Cy(cr(t),e);if(r!=null&&r.set)return r.set.call(t.k,n),!0;if(!t.P){var i=If(cr(t),e),o=i==null?void 0:i[ae];if(o&&o.t===n)return t.o[e]=n,t.D[e]=!1,!0;if(Ay(n,i)&&(n!==void 0||Kr(t.t,e)))return!0;kf(t),xn(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 If(t.t,e)!==void 0||e in t.t?(t.D[e]=!1,kf(t),xn(t)):delete t.D[e],t.o&&delete t.o[e],!0},getOwnPropertyDescriptor:function(t,e){var n=cr(t),r=Reflect.getOwnPropertyDescriptor(n,e);return r&&{writable:!0,configurable:t.i!==1||e!=="length",enumerable:r.enumerable,value:n[e]}},defineProperty:function(){dt(11)},getPrototypeOf:function(t){return Object.getPrototypeOf(t.t)},setPrototypeOf:function(){dt(12)}},So={};sr(Co,function(t,e){So[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),So.deleteProperty=function(t,e){return So.set.call(this,t,e,void 0)},So.set=function(t,e,n){return Co.set.call(this,t[0],e,n,t[0])};var kI=function(){function t(n){var r=this;this.g=Dy,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 y=this;m===void 0&&(m=s);for(var g=arguments.length,A=Array(g>1?g-1:0),x=1;x<g;x++)A[x-1]=arguments[x];return c.produce(m,function(C){var b;return(b=o).call.apply(b,[y,C].concat(A))})}}var u;if(typeof o!="function"&&dt(6),a!==void 0&&typeof a!="function"&&dt(7),An(i)){var f=xy(r),l=Nf(r,i,void 0),d=!0;try{u=o(l),d=!1}finally{d?Ts(f):Mf(f)}return typeof Promise!="undefined"&&u instanceof Promise?u.then(function(m){return Df(f,a),Tf(m,f)},function(m){throw Ts(f),m}):(Df(f,a),Tf(u,f))}if(!i||typeof i!="object"){if((u=o(i))===void 0&&(u=i),u===My&&(u=void 0),r.F&&Cf(u,!0),a){var h=[],p=[];Et("Patches").M(i,u,h,p),a(h,p)}return u}dt(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(h){return i.apply(void 0,[h].concat(l))})};var a,s,c=r.produce(i,o,function(u,f){a=u,s=f});return typeof Promise!="undefined"&&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){An(n)||dt(8),bn(n)&&(n=EI(n));var r=xy(this),i=Nf(this,n,void 0);return i[ae].C=!0,Mf(r),i},e.finishDraft=function(n,r){var i=n&&n[ae],o=i.A;return Df(o,r),Tf(void 0,o)},e.setAutoFreeze=function(n){this.F=n},e.setUseProxies=function(n){n&&!Dy&&dt(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=Et("Patches").$;return bn(n)?a(n,r):this.produce(n,function(s){return a(s,r)})},t}(),Ye=new kI,NI=Ye.produce;Ye.produceWithPatches.bind(Ye),Ye.setAutoFreeze.bind(Ye),Ye.setUseProxies.bind(Ye),Ye.applyPatches.bind(Ye),Ye.createDraft.bind(Ye),Ye.finishDraft.bind(Ye);var Ns=NI;function LI(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function ky(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 Ny(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?ky(Object(n),!0).forEach(function(r){LI(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ky(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Ie(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 Ly=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),Of=function(){return Math.random().toString(36).substring(7).split("").join(".")},Ls={INIT:"@@redux/INIT"+Of(),REPLACE:"@@redux/REPLACE"+Of(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+Of()}};function BI(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 By(t,e,n){var r;if(typeof e=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(Ie(0));if(typeof e=="function"&&typeof n=="undefined"&&(n=e,e=void 0),typeof n!="undefined"){if(typeof n!="function")throw new Error(Ie(1));return n(By)(t,e)}if(typeof t!="function")throw new Error(Ie(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(Ie(3));return o}function l(m){if(typeof m!="function")throw new Error(Ie(4));if(c)throw new Error(Ie(5));var y=!0;return u(),s.push(m),function(){if(!!y){if(c)throw new Error(Ie(6));y=!1,u();var A=s.indexOf(m);s.splice(A,1),a=null}}}function d(m){if(!BI(m))throw new Error(Ie(7));if(typeof m.type=="undefined")throw new Error(Ie(8));if(c)throw new Error(Ie(9));try{c=!0,o=i(o,m)}finally{c=!1}for(var y=a=s,g=0;g<y.length;g++){var A=y[g];A()}return m}function h(m){if(typeof m!="function")throw new Error(Ie(10));i=m,d({type:Ls.REPLACE})}function p(){var m,y=l;return m={subscribe:function(A){if(typeof A!="object"||A===null)throw new Error(Ie(11));function x(){A.next&&A.next(f())}x();var C=y(x);return{unsubscribe:C}}},m[Ly]=function(){return this},m}return d({type:Ls.INIT}),r={dispatch:d,subscribe:l,getState:f,replaceReducer:h},r[Ly]=p,r}function OI(t){Object.keys(t).forEach(function(e){var n=t[e],r=n(void 0,{type:Ls.INIT});if(typeof r=="undefined")throw new Error(Ie(12));if(typeof n(void 0,{type:Ls.PROBE_UNKNOWN_ACTION()})=="undefined")throw new Error(Ie(13))})}function Pf(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{OI(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 h=o[d],p=n[h],m=c[h],y=p(m,u);if(typeof y=="undefined")throw u&&u.type,new Error(Ie(14));l[h]=y,f=f||y!==m}return f=f||o.length!==Object.keys(c).length,f?l:c}}function Bs(){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 PI(){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(Ie(15))},a={getState:i.getState,dispatch:function(){return o.apply(void 0,arguments)}},s=e.map(function(c){return c(a)});return o=Bs.apply(void 0,s)(i.dispatch),Ny(Ny({},i),{},{dispatch:o})}}}var Os="NOT_FOUND";function FI(t){var e;return{get:function(r){return e&&t(e.key,r)?e.value:Os},put:function(r,i){e={key:r,value:i}},getEntries:function(){return e?[e]:[]},clear:function(){e=void 0}}}function zI(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 Os}function i(s,c){r(s)===Os&&(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 RI=function(e,n){return e===n};function jI(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 UI(t,e){var n=typeof e=="object"?e:{equalityCheck:e},r=n.equalityCheck,i=r===void 0?RI:r,o=n.maxSize,a=o===void 0?1:o,s=n.resultEqualityCheck,c=jI(i),u=a===1?FI(c):zI(a,c);function f(){var l=u.get(arguments);if(l===Os){if(l=t.apply(null,arguments),s){var d=u.getEntries(),h=d.find(function(p){return s(p.value,l)});h&&(l=h.value)}u.put(arguments,l)}return l}return f.clearCache=function(){return u.clear()},f}function GI(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 HI(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 h=l,p=h.memoizeOptions,m=p===void 0?n:p,y=Array.isArray(m)?m:[m],g=GI(s),A=t.apply(void 0,[function(){return u++,d.apply(null,arguments)}].concat(y)),x=t(function(){for(var C=[],b=g.length,v=0;v<b;v++)C.push(g[v].apply(null,arguments));return f=A.apply(null,C),f});return Object.assign(x,{resultFunc:d,memoizedResultFunc:A,dependencies:g,lastResult:function(){return f},recomputations:function(){return u},resetRecomputations:function(){return u=0}}),x};return i}var QI=HI(UI);function Oy(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 Py=Oy();Py.withExtraArgument=Oy;var Fy=Py,VI=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 Ps=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},YI=Object.defineProperty,zy=Object.getOwnPropertySymbols,_I=Object.prototype.hasOwnProperty,WI=Object.prototype.propertyIsEnumerable,Ry=function(t,e,n){return e in t?YI(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},Eo=function(t,e){for(var n in e||(e={}))_I.call(e,n)&&Ry(t,n,e[n]);if(zy)for(var r=0,i=zy(e);r<i.length;r++){var n=i[r];WI.call(e,n)&&Ry(t,n,e[n])}return t},XI=typeof window!="undefined"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Bs:Bs.apply(null,arguments)};function ZI(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 qI=function(t){VI(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,Ps([void 0],n[0].concat(this)))):new(e.bind.apply(e,Ps([void 0],n.concat(this))))},e}(Array);function KI(t){return typeof t=="boolean"}function JI(){return function(e){return $I(e)}}function $I(t){t===void 0&&(t={});var e=t.thunk,n=e===void 0?!0:e;t.immutableCheck,t.serializableCheck;var r=new qI;return n&&(KI(n)?r.push(Fy):r.push(Fy.withExtraArgument(n.extraArgument))),r}var e9=!0;function t9(t){var e=JI(),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,h;if(typeof i=="function")h=i;else if(ZI(i))h=Pf(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 p=a;typeof p=="function"&&(p=p(e));var m=PI.apply(void 0,p),y=Bs;c&&(y=XI(Eo({trace:!e9},typeof c=="object"&&c)));var g=[m];Array.isArray(d)?g=Ps([m],d):typeof d=="function"&&(g=d(g));var A=y.apply(void 0,g);return By(h,f,A)}function Do(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 Eo(Eo({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 jy(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 n9(t){return typeof t=="function"}function r9(t,e,n,r){n===void 0&&(n=[]);var i=typeof e=="function"?jy(e):[e,n,r],o=i[0],a=i[1],s=i[2],c;if(n9(t))c=function(){return Ns(t(),function(){})};else{var u=Ns(t,function(){});c=function(){return u}}function f(l,d){l===void 0&&(l=c());var h=Ps([o[d.type]],a.filter(function(p){var m=p.matcher;return m(d)}).map(function(p){var m=p.reducer;return m}));return h.filter(function(p){return!!p}).length===0&&(h=[s]),h.reduce(function(p,m){if(m)if(bn(p)){var y=p,g=m(y,d);return typeof g=="undefined"?p:g}else{if(An(p))return Ns(p,function(A){return m(A,d)});var g=m(p,d);if(typeof g=="undefined"){if(p===null)return p;throw Error("A case reducer on a non-draftable value must not return undefined")}return g}return p},l)}return f.getInitialState=c,f}function i9(t,e){return t+"/"+e}function Uy(t){var e=t.name;if(!e)throw new Error("`name` is a required option for createSlice");var n=typeof t.initialState=="function"?t.initialState:Ns(t.initialState,function(){}),r=t.reducers||{},i=Object.keys(r),o={},a={},s={};i.forEach(function(f){var l=r[f],d=i9(e,f),h,p;"reducer"in l?(h=l.reducer,p=l.prepare):h=l,o[f]=h,a[d]=h,s[f]=p?Do(d,p):Do(d)});function c(){var f=typeof t.extraReducers=="function"?jy(t.extraReducers):[t.extraReducers],l=f[0],d=l===void 0?{}:l,h=f[1],p=h===void 0?[]:h,m=f[2],y=m===void 0?void 0:m,g=Eo(Eo({},d),a);return r9(n,g,p,y)}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 Ff="listenerMiddleware";Do(Ff+"/add"),Do(Ff+"/removeAll"),Do(Ff+"/remove"),DI();function Gy(t,e,n,r){if(r&&!n)throw new Error("Custom labels need explicit group order!");const i=oi(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,label:r?r[f]:c,samples:u})),delete t.samples}function Hy(t,e,n){const r=he(".3~r"),i=a=>`${n[a].operator=="lt"?"[":"("}${r(n[a].operand)}, ${r(n[a+1].operand)}${n[a+1].operator=="lte"?"]":")"}`,o=_t(n.length-1).reverse();Gy(t,s9(e,n.slice(1,n.length-1)),o,o.map(i))}function o9(t,e,n){Hy(t,e,[{operator:"lt",operand:-1/0},...n,{operator:"lte",operand:1/0}])}function a9(t,e){const n=u9(c9(t.samples,e,[0,.25,.5,.75,1]));n.length==1&&n.push(n[0]),Hy(t,e,n.map((r,i,o)=>({operator:i==o.length-1?"lte":"lt",operand:r})))}function s9(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 c9(t,e,n){const r=zv(t.map(e).filter(i=>le(i)&&!isNaN(i)));return n.map(i=>sc(r,i))}function u9(t){const e=[t[0]];for(let n=1;n<t.length;n++)t[n]!=t[n-1]&&e.push(t[n]);return e}function l9(t,e){var n=t+"",r=e+"";return n<r?-1:n==r?0:1}var f9=[].forEach;function d9(t,e,n){if(typeof e!="function")throw new TypeError(e+" is not a function");var r,i=[],o=[],a=[];f9.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=l9),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 h9(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 p9(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 m9(t,e,n=!1){return d9(t,e,(r,i)=>(n&&([r,i]=[i,r]),r<i?-1:r>i?1:0))}const g9={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 y9(t,e,n,r){const i=g9[n];return t.filter(o=>i(e(o),r))}function v9(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 b9(t,e){const n=r=>r!=null;return t.filter(r=>n(e(r)))}const Qy="setSamples",Vy="sortBy",Yy="retainFirstOfEach",_y="filterByNominal",Wy="filterByQuantitative",Xy="removeUndefined",Zy="groupByNominal",qy="groupToQuartiles",Ky="groupByThresholds",$r="sampleView";function A9(){return{sampleData:void 0,groupMetadata:[],rootGroup:{name:"ROOT",label:"Root",samples:[]}}}function x9(t){const e=(n,r)=>{const i=t(n.attribute).accessor;return o=>i(o,r)};return Uy({name:$r,initialState:A9(),reducers:{[Qy]:(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)=>U(T({},a),{indexNumber:s}));n.sampleData={ids:o.map(a=>a.id),entities:Object.fromEntries(o.map(a=>[a.id,a]))},n.rootGroup={name:"ROOT",label:"Root",samples:n.sampleData.ids}},[Vy]:(n,r)=>{Mo(n,i=>m9(i,h9(e(r.payload,n),t(r.payload.attribute)),!1))},[Yy]:(n,r)=>{Mo(n,i=>p9(i,e(r.payload,n)))},[Wy]:(n,r)=>{Mo(n,i=>y9(i,e(r.payload,n),r.payload.operator,r.payload.operand))},[_y]:(n,r)=>{Mo(n,i=>v9(i,e(r.payload,n),r.payload.remove?"remove":"retain",r.payload.values))},[Xy]:(n,r)=>{Mo(n,i=>b9(i,e(r.payload,n)))},[Zy]:(n,r)=>{zf(n,i=>Gy(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[qy]:(n,r)=>{zf(n,i=>a9(i,e(r.payload,n))),n.groupMetadata.push({attribute:r.payload.attribute})},[Ky]:(n,r)=>{zf(n,i=>o9(i,e(r.payload,n),r.payload.thresholds)),n.groupMetadata.push({attribute:r.payload.attribute})}}})}function Mo(t,e){for(const n of Jy(t))n.samples=e(n.samples)}function zf(t,e){for(const n of Jy(t))e(n)}function Jy(t){return $y(t).map(e=>He(e))}function Rf(t){return t.provenance.present[$r]}function $y(t){const e=[],n=[],r=i=>{if(e.push(i),t2(i))for(const o of i.groups)r(o);else n.push([...e]);e.pop()};return r(t.rootGroup),n}function e2(t){return"samples"in t}function t2(t){return"groups"in t}function*n2(t){if(yield[t],t2(t))for(const e of t.groups)for(const n of n2(e))yield[t,...n]}const w9=he(".4"),r2={lt:"<",lte:"\u2264",eq:"=",gte:"\u2265",gt:">"};function i2(t){return t.length>1?D`{${t.map((e,n)=>D`${n>0?", ":""}<strong>${e}</strong>`)}}`:D`<strong>${t[0]}</strong>`}function C9(t,e){if(!t.type.startsWith($r))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)||D`<em>${i}</em>`,a={attributeName:i};switch(t.type.substring($r.length+1)){case Qy:return U(T({},a),{title:"The initial state",icon:l5});case Vy:return U(T({},a),{title:"Sort by",provenanceTitle:D`Sort by ${o}`,icon:r5});case Yy:return U(T({},a),{title:D`Retain first sample of each unique <em>${i}</em>`,provenanceTitle:D`Retain first sample of each unique ${o}`,icon:E5});case _y:{const c=n.values,u=f=>D`${n.remove?"Remove":"Retain"} samples having ${c[0]===void 0||c[0]===null?D`undefined ${f}`:D`${f} ${c.length>1?"in":D`<span class="operator">=</span>`} ${i2(c)}`}`;return U(T({},a),{title:u(D`<em>${i}</em>`),provenanceTitle:u(o),icon:n.remove?Fl:lo})}case Wy:{const c=u=>D`Retain samples having ${u} <span class="operator">${r2[n.operator]}</span> <strong>${w9(n.operand)}</strong>`;return U(T({},a),{title:c(D`<em>${i}</em>`),provenanceTitle:c(o),icon:lo})}case Xy:return U(T({},a),{title:"Remove samples having missing attribute",provenanceTitle:D`Remove samples having missing ${o}`,icon:Fl});case Zy:return U(T({},a),{title:"Group by",provenanceTitle:D`Group by ${o}`,icon:fo});case qy:return U(T({},a),{title:"Group by quartiles",provenanceTitle:D`Group by quartiles on ${o}`,icon:fo});case Ky:return U(T({},a),{title:"Group by thresholds",provenanceTitle:D`Group by thresholds {${i2(n.thresholds.map(c=>`${r2[c.operator]} ${c.operand}`))}} on ${o}`,icon:fo});default:return U(T({},a),{title:JSON.stringify(t),icon:_g})}}class S9{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 Fs(t,e,n){let r=n&&t(n);return i=>{const o=t(i);o!==r&&(e(o,r),r=o)}}function o2(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=>He(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=[];oo(a.map(d=>s(d.samples)),e,{spacing:r}).forEach((d,h)=>{c.push({key:a[h].path,locSize:d})});const u=[];for(const[d,h]of a.entries()){const p={grow:1},m=h.samples;oo(m.map(y=>p),Math.max(0,c[d].locSize.size-i),{offset:c[d].locSize.location+i}).forEach((y,g)=>{const{size:A,location:x}=y,C=A*.1*ig(15,22,A);y.location=x+C,y.size=A-2*C,u.push({key:m[g],locSize:y})})}function*f(){const d=[];for(const h of c){const p=h.key,m=He(p);for(;d.length<=p.length&&d.length&&p[d.length-1]!=d[d.length-1].group;)yield d.pop();for(let y=0;y<d.length;y++){const g=d[y];g.locSize.size=h.locSize.location-g.locSize.location+h.locSize.size}for(let y=d.length;y<p.length;y++)d.push({group:p[y],locSize:T({},h.locSize),depth:d.length,n:0});for(const y of d)y.n+=m.samples.length}for(;d.length;)yield d.pop()}const l=[...f()].sort((d,h)=>d.depth-h.depth).map((d,h)=>({key:{index:h,group:d.group,depth:d.depth,n:d.n,attributeLabel:void 0},locSize:d.locSize}));return{samples:u,summaries:c,groups:l}}function E9(t,e){return e.find(n=>zm(n.locSize,t))}const a2="VALUE_AT_LOCUS",s2=10;class jf extends Jn{constructor(n,r,i,o,a){var f;super(n,r,i,o);ke(this,Qs);this.provenance=a,this.spec=n,this.stickySummaries=(f=n.stickySummaries)!=null?f:!0,this.compositeAttributeInfoSource=new S9,this.child=r.createView(n.spec,this,"sample-facets"),this.summaryViews=new jr({vconcat:[]},r,this,"sampleSummaries"),this.child.visit(l=>{l instanceof Ae&&this.summaryViews.setChildren(l.sampleAggregateViews)}),this.childCoords=hn.ZERO,this.facetTexture=void 0,this.facetTextureData=void 0,this.peripheryView=new jr({title:"Sidebar",resolve:{scale:{default:"independent"},axis:{default:"independent"}},hconcat:[],spacing:0},r,this,"sample-sidebar"),this.peripheryCoords=hn.ZERO,this.groupPanel=new AI(this),this.attributePanel=new yy(this),this.peripheryView.setChildren([this.groupPanel,this.attributePanel]),this.child.addInteractionEventListener("contextmenu",this._handleContextMenu.bind(this)),this.provenance.storeHelper.subscribe(Fs(l=>Rf(l).rootGroup,l=>{this._locations=void 0,this.groupPanel.updateGroups(),this._peekState=0,this.context.requestLayoutReflow(),this.context.animator.requestRender()})),this.provenance.storeHelper.subscribe(Fs(l=>Rf(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(a2,l=>{var C,b;const d=l.specifier,h=this.findDescendantByPath(d.path);let p;if(le(d.locus))p=d.locus;else{const v=this.getScaleResolution("x").getGenome();if(v)p=v.toContinuous(d.locus.chrom,d.locus.pos);else throw new Error("Encountered a complex locus but no genome is available!")}const m=v=>{var w;return(w=h.mark.findDatumAt(v,p))==null?void 0:w[d.field]},[y,g]=Object.entries(h.getEncoding()).find(([v,w])=>"field"in w&&w.field==d.field),A=y?(C=h.getScaleResolution(y))==null?void 0:C.getScale():void 0;return{name:d.field,attribute:l,title:D`<em class="attribute">${d.field}</em> <span class="viewTitle">(${(b=h.getTitleText())!=null?b:h.name})</span> at <span class="locus">${c2(d.locus)}</span>`,accessor:m,type:"type"in g?g.type:void 0,scale:A}}),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 h=d.uiEvent;this._peekState&&!h.ctrlKey&&(this._scrollOffset=ll(this._scrollOffset+h.deltaY,0,this._scrollableHeight-this.childCoords.height),this.groupPanel.updateRange(),this.context.animator.requestRender(),d.uiEvent={type:h.type,deltaX:h.deltaX,preventDefault:h.preventDefault.bind(h)})},!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=x9(s);this.provenance.addReducer(c.name,c.reducer),this.provenance.addActionInfoSource(l=>C9(l,s)),this.actions=c.actions;const u=QI(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+=s2),new et(0,0,0,n)}*[Symbol.iterator](){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}=b8(Cg(this.spec.samples.data,this.getBaseUrl()),new D9);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()[$r]}getLocations(){var n,r,i,o;if(!this._locations){if(!((n=this.childCoords)!=null&&n.height))return;const a=this.sampleHierarchy,s=$y(a),c=[null,...a.groupMetadata],u=(o=((r=this.summaryViews)==null?void 0:r.isVisible())&&((i=this.summaryViews)==null?void 0:i.getSize().height.px))!=null?o:0,f=o2(s,{viewHeight:this.childCoords.height,groupSpacing:5,summaryHeight:u}),l=o2(s,{sampleHeight:35,groupSpacing:15,summaryHeight:u}),d=()=>-this._scrollOffset,h=()=>this._peekState;this._scrollableLocations=l,this._scrollableHeight=l.summaries.map(g=>g.locSize.location+g.locSize.size).reduce((g,A)=>Math.max(g,A),0);const p=(g,A)=>{const x=[];for(let C=0;C<g.length;C++){const b=g[C].key;x.push({key:b,locSize:ED(g[C].locSize,DD(A[C].locSize,d),h)})}return x},m=p(f.groups,l.groups),y=document.createElement("div");m.forEach(g=>{if(g.key.depth==0)return;const A=c[g.key.depth].attribute,x=this.compositeAttributeInfoSource.getAttributeInfo(A).title;x?re(x)?g.key.attributeLabel=x:(Ge(x,y),g.key.attributeLabel=y.textContent.replace(/\s+/g," ").trim()):g.key.attributeLabel="unknown"}),this._locations={samples:p(f.samples,l.samples),summaries:p(f.summaries,l.summaries),groups:m}}return this._locations}getSampleAt(n){const r=E9(n,this.getLocations().samples);if(r)return this.sampleHierarchy.sampleData.entities[r.key]}getSummaryAt(n){const r=this.getLocations().summaries,i=r.findIndex(o=>zm(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={}){const o=1/r.height,a=()=>o,s=this._clipBySummary(r);for(const c of this.getLocations().samples)this.child.render(n,r,U(T({},i),{sampleFacetRenderingOptions:{locSize:MD(c.locSize,a)},facetId:[c.key],clipRect:s}))}renderSummaries(n,r,i={}){i=U(T({},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+ll(-u,0,s.locSize.size-o):f};this.summaryViews.render(n,r.modify({y:c,height:o}),U(T({},i),{facetId:[a]}))}}render(n,r,i={}){if(!this.isVisible())return;n.pushView(this,r);const o=oo([this.peripheryView.isVisible()?this.peripheryView.getSize().width:{px:0},{grow:1}],r.width,{spacing:s2}),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=ro(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))}if(s?this._scrollOffset=s-o:this._scrollOffset=(this._scrollableHeight-this.childCoords.height)/2,this._scrollableHeight>this.childCoords.height)os(U(T({},r),{to:1,duration:500,easingFunction:lM}));else{const c=u=>(1-Math.pow(u*2-1,2))*.5;os(U(T({},r),{from:0,to:1,duration:300,easingFunction:c}))}}else os(U(T({},r),{to:0,duration:400,easingFunction:cM}))}_handleContextMenu(n,r){var l;const i=r.uiEvent,o=this.childCoords.normalizePoint(r.point.x,r.point.y).x,a=this.getScaleResolution("x").invertToComplex(o),s=kg([...this.getAncestors()].at(-1)),c=S8(this.child).filter(d=>!["sample","x","x2"].includes(d.channel)).filter(d=>["rect","rule"].includes(d.view.getMarkType())).filter(d=>s.has(d.view.name));let u=[{label:`Locus: ${c2(a)}`,type:"header"},{type:"divider"}],f="";for(const[d,h]of c.entries()){let p=[...h.view.getAncestors()];p=p.slice(0,p.findIndex(A=>A===this));const m={path:p.map(A=>A.name).reverse(),field:h.field,locus:a},y=this.compositeAttributeInfoSource.getAttributeInfo({type:a2,specifier:m}),g=(l=h.view.getTitleText())!=null?l:h.view.spec.name;g!=f&&(d>0&&u.push({type:"divider"}),u.push({label:g,type:"header"}),f=g),u.push({label:h.field,submenu:df(null,y,void 0,this)})}my({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),pg(n,this.childCoords,r=>xe(this,Qs,Y2).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"}}}Qs=new WeakSet,Y2=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 c2(t){return!le(t)&&"chrom"in t?eM(t):""+t}class D9 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:M9(e)})}}function M9(t){const e=Object.assign({},t);return delete e.sample,delete e.displayName,e}function T9(t){return"samples"in t&&je(t.samples)&&"spec"in t&&je(t.spec)}const I9=(t,e)=>e.some(n=>t instanceof n);let u2,l2;function k9(){return u2||(u2=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function N9(){return l2||(l2=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const f2=new WeakMap,Uf=new WeakMap,d2=new WeakMap,Gf=new WeakMap,Hf=new WeakMap;function L9(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",o),t.removeEventListener("error",a)},o=()=>{n(wn(t.result)),i()},a=()=>{r(t.error),i()};t.addEventListener("success",o),t.addEventListener("error",a)});return e.then(n=>{n instanceof IDBCursor&&f2.set(n,t)}).catch(()=>{}),Hf.set(e,t),e}function B9(t){if(Uf.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)});Uf.set(t,e)}let Qf={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return Uf.get(t);if(e==="objectStoreNames")return t.objectStoreNames||d2.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return wn(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 O9(t){Qf=t(Qf)}function P9(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(Vf(this),e,...n);return d2.set(r,e.sort?e.sort():[e]),wn(r)}:N9().includes(t)?function(...e){return t.apply(Vf(this),e),wn(f2.get(this))}:function(...e){return wn(t.apply(Vf(this),e))}}function F9(t){return typeof t=="function"?P9(t):(t instanceof IDBTransaction&&B9(t),I9(t,k9())?new Proxy(t,Qf):t)}function wn(t){if(t instanceof IDBRequest)return L9(t);if(Gf.has(t))return Gf.get(t);const e=F9(t);return e!==t&&(Gf.set(t,e),Hf.set(e,t)),e}const Vf=t=>Hf.get(t);function z9(t,e,{blocked:n,upgrade:r,blocking:i,terminated:o}={}){const a=indexedDB.open(t,e),s=wn(a);return r&&a.addEventListener("upgradeneeded",c=>{r(wn(a.result),c.oldVersion,c.newVersion,wn(a.transaction))}),n&&a.addEventListener("blocked",()=>n()),s.then(c=>{o&&c.addEventListener("close",()=>o()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),s}const R9=["get","getKey","getAll","getAllKeys","count"],j9=["put","add","delete","clear"],Yf=new Map;function h2(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(Yf.get(e))return Yf.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=j9.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||R9.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 Yf.set(e,o),o}O9(t=>U(T({},t),{get:(e,n,r)=>h2(e,n)||t.get(e,n,r),has:(e,n)=>!!h2(e,n)||t.has(e,n)}));class p2{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 To="bookmarks";class U9 extends p2{constructor(e){super(),this.specId=e,this._db=void 0}async _getDB(){if(!this._db){const e=`GenomeSpy: ${this.specId}`;this._db=z9(e,1,{upgrade(n,r,i,o){n.createObjectStore(To,{keyPath:"name"})},blocked(){},blocking(){},terminated(){}})}return this._db}isReadonly(){return!1}async put(e,n){const i=(await this._getDB()).transaction(To,"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(To,e)}async getNames(){return(await this._getDB()).getAllKeys(To)}async get(e){return(await this._getDB()).get(To,e)}}/**
2038
2136
  * @license
2039
2137
  * Copyright 2020 Google LLC
2040
2138
  * SPDX-License-Identifier: BSD-3-Clause
2041
- */const DI=t=>t===null||typeof t!="object"&&typeof t!="function",V1=t=>t.strings===void 0,MI={},II=(t,e=MI)=>t._$AH=e;/**
2139
+ */const G9=t=>t===null||typeof t!="object"&&typeof t!="function",m2=t=>t.strings===void 0,H9={},Q9=(t,e=H9)=>t._$AH=e;/**
2042
2140
  * @license
2043
2141
  * Copyright 2017 Google LLC
2044
2142
  * SPDX-License-Identifier: BSD-3-Clause
2045
- */const Ji=(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),Ji(o,e);return!0},Js=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)},_1=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),LI(e)}};function TI(t){this._$AN!==void 0?(Js(this),this._$AM=t,_1(this)):this._$AM=t}function NI(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++)Ji(r[o],!1),Js(r[o]);else r!=null&&(Ji(r,!1),Js(r));else Ji(this,t)}const LI=t=>{var e,n,r,i;t.type==Ot.CHILD&&((e=(r=t)._$AP)!==null&&e!==void 0||(r._$AP=NI),(n=(i=t)._$AQ)!==null&&n!==void 0||(i._$AQ=TI))};class Y1 extends Hi{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,n,r){super._$AT(e,n,r),_1(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&&(Ji(this,e),Js(this))}setValue(e){if(V1(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(){}}/**
2143
+ */const Io=(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),Io(o,e);return!0},zs=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)},g2=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),_9(e)}};function V9(t){this._$AN!==void 0?(zs(this),this._$AM=t,g2(this)):this._$AM=t}function Y9(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++)Io(r[o],!1),zs(r[o]);else r!=null&&(Io(r,!1),zs(r));else Io(this,t)}const _9=t=>{var e,n,r,i;t.type==zt.CHILD&&((e=(r=t)._$AP)!==null&&e!==void 0||(r._$AP=Y9),(n=(i=t)._$AQ)!==null&&n!==void 0||(i._$AQ=V9))};class y2 extends uo{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,n,r){super._$AT(e,n,r),g2(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&&(Io(this,e),zs(this))}setValue(e){if(m2(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(){}}/**
2046
2144
  * @license
2047
2145
  * Copyright 2020 Google LLC
2048
2146
  * SPDX-License-Identifier: BSD-3-Clause
2049
- */const W1=()=>new kI;class kI{}const ql=new WeakMap,X1=xr(class extends Y1{render(t){return R}update(t,[e]){var n;const r=e!==this.U;return r&&this.U!==void 0&&this.nt(void 0),(r||this.rt!==this.lt)&&(this.U=e,this.ht=(n=t.options)===null||n===void 0?void 0:n.host,this.nt(this.lt=t.element)),R}nt(t){typeof this.U=="function"?(ql.get(this.U)!==void 0&&this.U.call(this.ht,void 0),ql.set(this.U,t),t!==void 0&&this.U.call(this.ht,t)):this.U.value=t}get rt(){var t;return typeof this.U=="function"?ql.get(this.U):(t=this.U)===null||t===void 0?void 0:t.value}disconnected(){this.rt===this.lt&&this.nt(void 0)}reconnected(){this.nt(this.lt)}});/**
2147
+ */const v2=()=>new W9;class W9{}const _f=new WeakMap,b2=Hr(class extends y2{render(t){return G}update(t,[e]){var n;const r=e!==this.U;return r&&this.U!==void 0&&this.ot(void 0),(r||this.rt!==this.lt)&&(this.U=e,this.ht=(n=t.options)===null||n===void 0?void 0:n.host,this.ot(this.lt=t.element)),G}ot(t){var e;if(typeof this.U=="function"){const n=(e=this.ht)!==null&&e!==void 0?e:globalThis;let r=_f.get(n);r===void 0&&(r=new WeakMap,_f.set(n,r)),r.get(this.U)!==void 0&&this.U.call(this.ht,void 0),r.set(this.U,t),t!==void 0&&this.U.call(this.ht,t)}else this.U.value=t}get rt(){var t,e,n;return typeof this.U=="function"?(e=_f.get((t=this.ht)!==null&&t!==void 0?t:globalThis))===null||e===void 0?void 0:e.get(this.U):(n=this.U)===null||n===void 0?void 0:n.value}disconnected(){this.rt===this.lt&&this.ot(void 0)}reconnected(){this.ot(this.lt)}});/**
2050
2148
  * @license
2051
2149
  * Copyright 2018 Google LLC
2052
2150
  * SPDX-License-Identifier: BSD-3-Clause
2053
- */const OI={},BI=xr(class extends Hi{constructor(){super(...arguments),this.ot=OI}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 xe}else if(this.ot===e)return xe;return this.ot=Array.isArray(e)?Array.from(e):e,this.render(e,n)}});class PI extends kt{constructor(){super();this.inputRef=W1(),this.genomeSpy=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 _inputField(){return this.inputRef.value}static get properties(){return{genomeSpy:{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=q1(this.genomeSpy.viewRoot);e&&(this._genomeResolution=e,this._genome=this.genomeSpy.genomeStore.getGenome(),this.getDefaultValue=()=>this._genome.formatInterval(e.getDomain()),e.addEventListener("domain",Ts(()=>this.requestUpdate(),60,!1)))}async searchViews(e){var r,i;const n=new Intl.Collator("en",{usage:"search",sensitivity:"base"});for(const o of this.genomeSpy.getSearchableViews()){const s=o.getAccessor("search"),a=o.getAccessor("x"),c=o.getAccessor("x2"),u=o.getScaleResolution("x");if(!(!a||!c||!(u==null?void 0:u.isZoomable()))){for(const f of(i=(r=o.getCollector())==null?void 0:r.getData())!=null?i:[])if(n.compare(s(f),e)===0){const l=ao([a(f),c(f)],null,1.2);return await u.zoomTo(l),!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 Ym&&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){FI(e,this._inputField).then(()=>{this._inputField.blur(),this.search(e)})}_getSearchHelp(){var n,r;const e=[];e.push(M`<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 i of((n=this.genomeSpy)==null?void 0:n.getSearchableViews())||[]){const o=(r=i.spec.title)!=null?r:i.spec.name,s=i.getAccessor("search"),a=s.fields.join(", "),c=Yp(3,i.getCollector().getData(),s);e.push(M`<p>Search <em>${o}</em> (${a}). Examples:</p><ul>${c.map(u=>M`<li>${u}</li>`)}</ul>`)}return M`<div class="search-help" @click="${this._onSearchHelpClicked}">${e}</div>`}updated(e){this._focused&&this._inputField.select()}render(){return M`<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}" ${X1(this.inputRef)}> ${BI([123],()=>this._getSearchHelp())}</div>`}}customElements.define("genome-spy-search-field",PI);function FI(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 q1(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,kn}}),e}var Z1="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+";/**
2151
+ */const X9={},Z9=Hr(class extends uo{constructor(){super(...arguments),this.nt=X9}render(t,e){return e()}update(t,[e,n]){if(Array.isArray(e)){if(Array.isArray(this.nt)&&this.nt.length===e.length&&e.every((r,i)=>r===this.nt[i]))return Ee}else if(this.nt===e)return Ee;return this.nt=Array.isArray(e)?Array.from(e):e,this.render(e,n)}});class q9 extends Ft{constructor(){super(),this.inputRef=v2(),this.genomeSpy=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 _inputField(){return this.inputRef.value}static get properties(){return{genomeSpy:{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=A2(this.genomeSpy.viewRoot);e&&(this._genomeResolution=e,this._genome=this.genomeSpy.genomeStore.getGenome(),this.getDefaultValue=()=>this._genome.formatInterval(e.getDomain()),e.addEventListener("domain",as(()=>this.requestUpdate(),60,!1)))}async searchViews(e){var r,i;const n=new Intl.Collator("en",{usage:"search",sensitivity:"base"});for(const o of this.genomeSpy.getSearchableViews()){const a=o.getAccessor("search"),s=o.getAccessor("x"),c=o.getAccessor("x2"),u=o.getScaleResolution("x");if(!(!s||!c||!(u!=null&&u.isZoomable()))){for(const f of(i=(r=o.getCollector())==null?void 0:r.getData())!=null?i:[])if(n.compare(a(f),e)===0){const l=Xs([s(f),c(f)],null,1.2);return await u.zoomTo(l),!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 yy&&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){K9(e,this._inputField).then(()=>{this._inputField.blur(),this.search(e)})}_getSearchHelp(){var n,r;const e=[];e.push(D`<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 i of((n=this.genomeSpy)==null?void 0:n.getSearchableViews())||[]){const o=(r=i.getTitleText())!=null?r:i.spec.name,a=i.getAccessor("search"),s=a.fields.join(", "),c=Fm(3,i.getCollector().getData(),a);e.push(D`<p>Search <em>${o}</em> (${s}). Examples:</p><ul>${c.map(u=>D`<li>${u}</li>`)}</ul>`)}return D`<div class="search-help" @click="${this._onSearchHelpClicked}">${e}</div>`}updated(e){this._focused&&this._inputField.select()}render(){return D`<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}" ${b2(this.inputRef)}> ${Z9([123],()=>this._getSearchHelp())}</div>`}}customElements.define("genome-spy-search-field",q9);function K9(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 A2(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,zr}}),e}var x2="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEuNSI+PHBhdGggZD0iTTQuNyAyMS4ycy40IDIuMyAxLjMgMy42QzcgMjYgOS44IDI4IDkuOCAyOHMzLjQtMi42IDYuNC04LjVjMCAwIDEgLjEgMS45LS40LjktLjYuOC0uNCAxLTEuMiAwIDAgMi45LjUgNi42IDAgMi4xLS4zIDQuMy0xIDYuMi0yLjUgMCAwLTEuMS0xLjctMi41LTUuMS0uNS0xLjMtMi0xLjgtNC42LTQuNmwtOC4yIDguNi0xMS45IDYuOXoiIGZpbGwtb3BhY2l0eT0iLjEiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSIjN2ZiYmRkIi8+PHBhdGggZD0iTTEyLjQgMTUuNWMtLjctLjUtMi40LS44LTQuNC0uNC0yIC40LTQgMS4zLTQuOCAxLjgtLjUuMy0xLjIgMS0xLjIgMS40IDAgLjcuMyAxLjguOCAyLjQuMy4zLjcuNSAxLjQuNi44IDAgMi41LTEuNCAzLjUtMiAxLS42IDEuNi0uOCAyLjctMS4ybC0yLjkgMi40Yy0xLjMgMS4yLTIuMiAxLjUtMi40IDIuMyAwIC41IDAgMS40LjUgMS44LjQuNS42LjggMS42LjguNiAwIDEgMCAyLjYtMS41LjktLjkgMi4zLTMgMi43LTMuNy42LTEuMSAxLTIuMi43LTMtLjItMS0uNC0xLjQtLjgtMS43ek0xNy40IDE0LjJjLS4zLS41LS45LTEuMi0uMi0yLjVsMS45LTNjLjUtLjggMi0yLjMgMi42LTIuNi42LS40IDEuNS0uNiAyLS4yLjYuNCAxIDEgMS4zIDEuNS40LjYuNyAxLjMuMiAyLS43IDEtMS42LjktMi44IDEuNy0xLjIuOC0xLjkgMS4yLTIuNSAxLjlsMy44LTEuOGMxLjMtLjYgMi43LTEuMSAzLjQtLjcuOC41LjguNyAxIDEuNC4zIDEtLjIgMS45LS44IDIuNC0uNS42LTEuNS45LTIuNiAxLjItMS40LjQtNC41IDEtNS44LjUtMS4zLS41LTEuMy0xLjQtMS41LTEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNyAxNC44cy00LTEuOC0xMiAyLjdjMCAwIDEgMy43IDIuNSA1LjMgMS40IDEuNSAyLjMgMy42IDQuNiA0LjYgMCAwIDQuNy0zIDYuOS05LjJsMy0yczQuNyAyLjggMTIuNi0xLjZjMCAwLS42LTMuMy0zLTYtMi42LTMtMy44LTQuNy0zLjgtNC43cy00LjEgMi4zLTcuNSA5LjNsLTMuMyAxLjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iLjUiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0iIzdmYmJkZCIvPjxwYXRoIGQ9Ik0xMy44IDE1LjNjLjkuOC42IDIgMS40IDEuOCAxLS4yIDEuNC0uOCAxLjMtMS41IDAtLjcgMC0uOC0uNC0xLjYtLjMtLjctMS0xLjEtMi0uNS0uNy41LTEuNCAxLjMtMS40IDEuM3MuMi0uMyAxLjEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIuNCAxNC45czIuMS0yIDMtMmMxLjEgMCAyLjMgMi43IDIuMyAzLjUgMCAuOC0yLjEgMi40LTMuMSAyLjMgMCAwIDAtMS4yLS43LTIuNi0uOC0xLjMtMS41LTEuMi0xLjUtMS4yeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9Ii41Ii8+PC9zdmc+";/**
2054
2152
  * @license
2055
2153
  * Copyright 2020 Google LLC
2056
2154
  * SPDX-License-Identifier: BSD-3-Clause
2057
- */const zI=xr(class extends Hi{constructor(t){if(super(t),t.type!==Ot.PROPERTY&&t.type!==Ot.ATTRIBUTE&&t.type!==Ot.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!V1(t))throw Error("`live` bindings can only contain a single expression")}render(t){return t}update(t,[e]){if(e===xe||e===R)return e;const n=t.element,r=t.name;if(t.type===Ot.PROPERTY){if(e===n[r])return xe}else if(t.type===Ot.BOOLEAN_ATTRIBUTE){if(!!e===n.hasAttribute(r))return xe}else if(t.type===Ot.ATTRIBUTE&&n.getAttribute(r)===e+"")return xe;return II(t),e}});function K1(t,e){return new CustomEvent("query-dependency",{detail:{name:t,setter:e},bubbles:!0})}function RI(t){if(!(t==null?void 0:t.length))throw new Error("Can't nest an empty array!");const e=J1(null);for(const n of t){if(!(n==null?void 0:n.length))throw new Error("Cannot nest, element has no path!");let r=e;for(const i of n){let o=r.children.find(s=>s.item===i);o||(o=J1(i),r.children.push(o)),r=o}}return e.children[0]}const J1=t=>({item:t,children:[]}),Zl=new Set;function Kl(t){const n=t.currentTarget.parentNode,r=!n.classList.contains("show");for(const i of Zl)i.classList.remove("show"),document.body.classList.remove(En);return Zl.clear(),t.stopPropagation(),r?(Zl.add(n),n.classList.add("show"),document.body.classList.add(En),window.addEventListener("click",i=>{n.classList.contains("show")&&(n.classList.remove("show"),document.body.classList.remove(En),i.preventDefault())},{once:!0})):window.dispatchEvent(new MouseEvent("click")),r}const Jl={visibilities:{}},$i=g1({name:"viewSettings",initialState:Jl,reducers:{setVisibility:(t,e)=>{t.visibilities[e.payload.name]=e.payload.visibility},restoreDefaultVisibility:(t,e)=>{delete t.visibilities[e.payload]},restoreDefaultVisibilities:(t,e)=>Jl,setViewSettings:(t,e)=>T(T({},Jl),e.payload?e.payload:{})}});class UI extends kt{constructor(){super();this.app=void 0,this.nestedPaths=void 0,this.sateWatcher=Ks(e=>e.viewSettings,(e,n)=>this.requestUpdate()),this.style.display="none"}connectedCallback(){super.connectedCallback(),this.dispatchEvent(K1("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){Kl(e)}handleCheckboxClick(e,n){const r=e.target.checked;this.app.storeHelper.dispatch(r!=n.isVisibleInSpec()?$i.actions.setVisibility({name:n.name,visibility:r}):$i.actions.restoreDefaultVisibility(n.name)),this.requestUpdate(),e.stopPropagation()}handleResetClick(){this.app.storeHelper.dispatch($i.actions.restoreDefaultVisibilities())}updateToggles(){const e=this.app.genomeSpy.viewRoot;if(!e)return;const n=[];e.visit(i=>{if(i instanceof _u)return gr;n.push(i)});const r=n.filter(i=>!(i instanceof Wu)&&TM(i.name)&&$1(i)).map(i=>[...i.getAncestors()].filter(o=>!(o instanceof Wu)).reverse());this.nestedPaths=RI(r)}renderToggles(){const e=this.getVisibilities(),n=this.app.genomeSpy.viewRoot,r=IM(n);var i=(s,a=!0)=>s.length?M`<ul class="${a?null:"unchecked"}">${s.map(o)}</ul>`:R,o=s=>{var u,f;const a=s.item,c=(u=e[a.name])!=null?u:a.isVisibleInSpec();return M`<li><label class="checkbox"><input type="checkbox" ?disabled="${!r.has(a.name)||!$1(a)}" .checked="${zI(c)}" @change="${l=>this.handleCheckboxClick(l,a)}">${(f=a.spec.title)!=null?f:a.name}</label> ${i(s.children,c)}</li>`};return i(this.nestedPaths.children)}render(){const e=!Object.keys(this.getVisibilities()).length;return M`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Toggle view visibilities" @click="${this.toolButtonClicked.bind(this)}">${$(m8).node[0]}</button><ul class="gs-dropdown-menu" @click="${n=>n.stopPropagation()}"><li class="menu-header">View visibility</li><li>${e?M`<span class="disabled-item">Restore defaults</span>`:M`<a @click="${()=>this.handleResetClick()}">Restore defaults</a>`}</li><li class="menu-divider"></li><li>${this.nestedPaths?this.renderToggles():R}</li></ul></div>`}getVisibilities(){return this.app.storeHelper.state.viewSettings.visibilities}}const $1=t=>{var e;return(e=t.spec.configurableVisibility)!=null?e:!(t.parent&&t.parent instanceof ji)};customElements.define("genome-spy-view-visibility",UI);class jI extends kt{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)=>{var s,a;const o=this.provenance.getActionInfo(r);return o?M`<li><a @click="${()=>this.provenance.activateState(i)}" class="${i==this.provenance.getCurrentIndex()?"active":""}">${$((s=o.icon)!=null?s:Kg).node[0]} ${(a=o.provenanceTitle)!=null?a:o.title}</a></li>`:R},n=()=>M`<div class="dropdown provenance-dropdown"><button class="tool-btn" title="Provenance" ?disabled="${this.provenance.isEmpty()}" @click="${Kl}">${$(c8).node[0]}</button><ol class="gs-dropdown-menu provenance-menu">${this.provenance.getFullActionHistory().map(e)}</ol></div>`;return M`<div class="btn-group" @click="${r=>r.stopPropagation()}"><button class="tool-btn" title="Backtrack samples (B)" ?disabled="${!this.provenance.isUndoable()}" @click="${()=>this.provenance.undo()}">${$(v8).node[0]}</button> ${n()} <button class="tool-btn" title="Redo" ?disabled="${!this.provenance.isRedoable()}" @click="${()=>this.provenance.redo()}">${$(g8).node[0]}</button></div>`}}customElements.define("genome-spy-provenance-buttons",jI);/**
2155
+ */const J9=Hr(class extends uo{constructor(t){if(super(t),t.type!==zt.PROPERTY&&t.type!==zt.ATTRIBUTE&&t.type!==zt.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!m2(t))throw Error("`live` bindings can only contain a single expression")}render(t){return t}update(t,[e]){if(e===Ee||e===G)return e;const n=t.element,r=t.name;if(t.type===zt.PROPERTY){if(e===n[r])return Ee}else if(t.type===zt.BOOLEAN_ATTRIBUTE){if(!!e===n.hasAttribute(r))return Ee}else if(t.type===zt.ATTRIBUTE&&n.getAttribute(r)===e+"")return Ee;return Q9(t),e}});function w2(t,e){return new CustomEvent("query-dependency",{detail:{name:t,setter:e},bubbles:!0})}function $9(t){if(!(t!=null&&t.length))throw new Error("Can't nest an empty array!");const e=C2(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=C2(i),r.children.push(o)),r=o}}return e.children[0]}const C2=t=>({item:t,children:[]}),Wf=new Set;function Xf(t){const n=t.currentTarget.parentNode,r=!n.classList.contains("show");for(const i of Wf)i.classList.remove("show"),document.body.classList.remove(Gn);return Wf.clear(),t.stopPropagation(),r?(Wf.add(n),n.classList.add("show"),document.body.classList.add(Gn),window.addEventListener("click",i=>{n.classList.contains("show")&&(n.classList.remove("show"),document.body.classList.remove(Gn),i.preventDefault())},{once:!0})):window.dispatchEvent(new MouseEvent("click")),r}const Zf={visibilities:{}},ko=Uy({name:"viewSettings",initialState:Zf,reducers:{setVisibility:(t,e)=>{t.visibilities[e.payload.name]=e.payload.visibility},restoreDefaultVisibility:(t,e)=>{delete t.visibilities[e.payload]},restoreDefaultVisibilities:(t,e)=>Zf,setViewSettings:(t,e)=>T(T({},Zf),e.payload?e.payload:{})}});class ek extends Ft{constructor(){super(),this.app=void 0,this.nestedPaths=void 0,this.sateWatcher=Fs(e=>e.viewSettings,(e,n)=>this.requestUpdate()),this.style.display="none"}connectedCallback(){super.connectedCallback(),this.dispatchEvent(w2("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){Xf(e)}handleCheckboxClick(e,n){const r=e.target.checked;this.app.storeHelper.dispatch(r!=n.isVisibleInSpec()?ko.actions.setVisibility({name:n.name,visibility:r}):ko.actions.restoreDefaultVisibility(n.name)),this.requestUpdate(),e.stopPropagation()}handleResetClick(){this.app.storeHelper.dispatch(ko.actions.restoreDefaultVisibilities())}updateToggles(){const e=this.app.genomeSpy.viewRoot;if(!e)return;const n=[];e.visit(i=>{if(i instanceof lg)return ns;n.push(i)});const r=n.filter(i=>D8(i.name)&&S2(i)).map(i=>[...i.getAncestors()].reverse());this.nestedPaths=$9(r)}renderToggles(){const e=this.getVisibilities(),n=this.app.genomeSpy.viewRoot,r=kg(n);var i=(a,s=!0)=>a.length?D`<ul class="${s?null:"unchecked"}">${a.map(o)}</ul>`:G,o=a=>{var u,f;const s=a.item,c=(u=e[s.name])!=null?u:s.isVisibleInSpec();return D`<li><label class="checkbox"><input type="checkbox" ?disabled="${!r.has(s.name)||!S2(s)}" .checked="${J9(c)}" @change="${l=>this.handleCheckboxClick(l,s)}">${(f=s.getTitleText())!=null?f:s.name}</label> ${i(a.children,c)}</li>`};return i(this.nestedPaths.children)}render(){const e=!Object.keys(this.getVisibilities()).length;return D`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Toggle view visibilities" @click="${this.toolButtonClicked.bind(this)}">${ne(T5).node[0]}</button><ul class="gs-dropdown-menu" @click="${n=>n.stopPropagation()}"><li class="menu-header">View visibility</li><li>${e?D`<span class="disabled-item">Restore defaults</span>`:D`<a @click="${()=>this.handleResetClick()}">Restore defaults</a>`}</li><li class="menu-divider"></li><li>${this.nestedPaths?this.renderToggles():G}</li></ul></div>`}getVisibilities(){return this.app.storeHelper.state.viewSettings.visibilities}}const S2=t=>{var e;return(e=t.spec.configurableVisibility)!=null?e:!(t.parent&&t.parent instanceof Ot)};customElements.define("genome-spy-view-visibility",ek);class tk extends Ft{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)=>{var a,s;const o=this.provenance.getActionInfo(r);return o?D`<li><a @click="${()=>this.provenance.activateState(i)}" class="${i==this.provenance.getCurrentIndex()?"active":""}">${ne((a=o.icon)!=null?a:_g).node[0]} ${(s=o.provenanceTitle)!=null?s:o.title}</a></li>`:G},n=()=>D`<div class="dropdown provenance-dropdown"><button class="tool-btn" title="Provenance" ?disabled="${this.provenance.isEmpty()}" @click="${Xf}">${ne(v5).node[0]}</button><ol class="gs-dropdown-menu provenance-menu">${this.provenance.getFullActionHistory().map(e)}</ol></div>`;return D`<div class="btn-group" @click="${r=>r.stopPropagation()}"><button class="tool-btn" title="Backtrack samples (B)" ?disabled="${!this.provenance.isUndoable()}" @click="${()=>this.provenance.undo()}">${ne(o5).node[0]}</button> ${n()} <button class="tool-btn" title="Redo" ?disabled="${!this.provenance.isRedoable()}" @click="${()=>this.provenance.redo()}">${ne(s5).node[0]}</button></div>`}}customElements.define("genome-spy-provenance-buttons",tk);/**
2058
2156
  * @license
2059
2157
  * Copyright 2021 Google LLC
2060
2158
  * SPDX-License-Identifier: BSD-3-Clause
2061
- */class GI{constructor(e){this.U=e}disconnect(){this.U=void 0}reconnect(e){this.U=e}deref(){return this.U}}class HI{constructor(){this.Y=void 0,this.q=void 0}get(){return this.Y}pause(){var e;(e=this.Y)!==null&&e!==void 0||(this.Y=new Promise(n=>this.q=n))}resume(){var e;(e=this.q)===null||e===void 0||e.call(this),this.Y=this.q=void 0}}/**
2159
+ */class nk{constructor(e){this.U=e}disconnect(){this.U=void 0}reconnect(e){this.U=e}deref(){return this.U}}class rk{constructor(){this.Y=void 0,this.q=void 0}get(){return this.Y}pause(){var e;(e=this.Y)!==null&&e!==void 0||(this.Y=new Promise(n=>this.q=n))}resume(){var e;(e=this.q)===null||e===void 0||e.call(this),this.Y=this.q=void 0}}/**
2062
2160
  * @license
2063
2161
  * Copyright 2017 Google LLC
2064
2162
  * SPDX-License-Identifier: BSD-3-Clause
2065
- */const ey=t=>!DI(t)&&typeof t.then=="function";class QI extends Y1{constructor(){super(...arguments),this._$Cft=1073741823,this._$Cwt=[],this._$CG=new GI(this),this._$CK=new HI}render(...e){var n;return(n=e.find(r=>!ey(r)))!==null&&n!==void 0?n:xe}update(e,n){const r=this._$Cwt;let i=r.length;this._$Cwt=n;const o=this._$CG,s=this._$CK;this.isConnected||this.disconnected();for(let a=0;a<n.length&&!(a>this._$Cft);a++){const c=n[a];if(!ey(c))return this._$Cft=a,c;a<i&&c===r[a]||(this._$Cft=1073741823,i=0,Promise.resolve(c).then(async u=>{for(;s.get();)await s.get();const f=o.deref();if(f!==void 0){const l=f._$Cwt.indexOf(c);l>-1&&l<f._$Cft&&(f._$Cft=l,f.setValue(u))}}))}return xe}disconnected(){this._$CG.disconnect(),this._$CK.pause()}reconnected(){this._$CG.reconnect(this),this._$CK.resume()}}const VI=xr(QI);var _I={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function ty(t){return t.replace(RegExp("^"+(t.match(/^(\t| )+/)||"")[0],"gm"),"")}function eo(t){return(t+"").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function $l(t,e){var n,r,i,o,s,a=/((?:^|\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(p){var g=_I[p[1]||""],m=c[c.length-1]==p;return g?g[1]?(m?c.pop():c.push(p),g[0|m]):g[0]:p}function h(){for(var p="";c.length;)p+=d(c[c.length-1]);return p}for(t=t.replace(/^\[(.+?)\]:\s*(.+)$/gm,function(p,g,m){return f[g.toLowerCase()]=m,""}).replace(/^\n+|\n+$/g,"");i=a.exec(t);)r=t.substring(l,i.index),l=a.lastIndex,n=i[0],r.match(/[^\\](\\\\)*\\$/)||((s=i[3]||i[4])?n='<pre class="code '+(i[4]?"poetry":i[2].toLowerCase())+'"><code'+(i[2]?' class="language-'+i[2].toLowerCase()+'"':"")+">"+ty(eo(s).replace(/^\n+|\n+$/g,""))+"</code></pre>":(s=i[6])?(s.match(/\./)&&(i[5]=i[5].replace(/^\d+/gm,"")),o=$l(ty(i[5].replace(/^\s*[>*+.-]/gm,""))),s==">"?s="blockquote":(s=s.match(/\./)?"ol":"ul",o=o.replace(/^(.*)(\n|$)/gm,"<li>$1</li>")),n="<"+s+">"+o+"</"+s+">"):i[8]?n='<img src="'+eo(i[8])+'" alt="'+eo(i[7])+'">':i[10]?(u=u.replace("<a>",'<a href="'+eo(i[11]||f[r.toLowerCase()])+'">'),n=h()+"</a>"):i[9]?n="<a>":i[12]||i[14]?n="<"+(s="h"+(i[14]?i[14].length:i[13]>"="?1:2))+">"+$l(i[12]||i[15],f)+"</"+s+">":i[16]?n="<code>"+eo(i[16])+"</code>":(i[17]||i[1])&&(n=d(i[17]||"--"))),u+=r,u+=n;return(u+t.substring(l)+h()).replace(/^\n+|\n+$/g,"")}function ny(t,e){return!e||/^(data:|([A-Za-z]+:)?\/\/)/.test(t)||t.startsWith("/")?t:(e.endsWith("/")||(e+="/"),e+t)}function YI(t,e={}){const n=$l(t),r=new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${n}</div></body></html>`,"text/html");r.normalize(),ry(r.body);for(const o of r.querySelectorAll("a[href]"))o.setAttribute("target","blank"),o.setAttribute("rel","noopener noreferrer"),o.setAttribute("href",ny(o.getAttribute("href"),e.baseUrl));for(const o of r.querySelectorAll("img[src]"))o.setAttribute("src",ny(o.getAttribute("src"),e.baseUrl));const i=r.body.removeChild(r.querySelector("body > div"));return i.className="snarkdown",i}function ry(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--;)ry(t.childNodes[e])}}function WI(t){t.stopPropagation(),t.preventDefault();const n=t.target.parentElement,r=n.parentElement,o=r.parentElement.querySelector(".panes"),s=[...r.children].findIndex(a=>a==n);for(const a of r.children)a.classList.remove("active-tab");for(const a of o.children)a.classList.remove("active-tab");r.children.item(s).classList.add("active-tab"),o.children.item(s).classList.add("active-tab")}var ef={exports:{}};(function(t){var e=function(){var n=String.fromCharCode,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",o={};function s(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 a={compressToBase64:function(c){if(c==null)return"";var u=a._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:a._decompress(c.length,32,function(u){return s(r,c.charAt(u))})},compressToUTF16:function(c){return c==null?"":a._compress(c,15,function(u){return n(u+32)})+" "},decompressFromUTF16:function(c){return c==null?"":c==""?null:a._decompress(c.length,16384,function(u){return c.charCodeAt(u)-32})},compressToUint8Array:function(c){for(var u=a.compress(c),f=new Uint8Array(u.length*2),l=0,d=u.length;l<d;l++){var h=u.charCodeAt(l);f[l*2]=h>>>8,f[l*2+1]=h%256}return f},decompressFromUint8Array:function(c){if(c==null)return a.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(h){d.push(n(h))}),a.decompress(d.join(""))},compressToEncodedURIComponent:function(c){return c==null?"":a._compress(c,6,function(u){return i.charAt(u)})},decompressFromEncodedURIComponent:function(c){return c==null?"":c==""?null:(c=c.replace(/ /g,"+"),a._decompress(c.length,32,function(u){return s(i,c.charAt(u))}))},compress:function(c){return a._compress(c,16,function(u){return n(u)})},_compress:function(c,u,f){if(c==null)return"";var l,d,h={},p={},g="",m="",y="",x=2,v=3,S=2,b=[],A=0,w=0,E;for(E=0;E<c.length;E+=1)if(g=c.charAt(E),Object.prototype.hasOwnProperty.call(h,g)||(h[g]=v++,p[g]=!0),m=y+g,Object.prototype.hasOwnProperty.call(h,m))y=m;else{if(Object.prototype.hasOwnProperty.call(p,y)){if(y.charCodeAt(0)<256){for(l=0;l<S;l++)A=A<<1,w==u-1?(w=0,b.push(f(A)),A=0):w++;for(d=y.charCodeAt(0),l=0;l<8;l++)A=A<<1|d&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,d=d>>1}else{for(d=1,l=0;l<S;l++)A=A<<1|d,w==u-1?(w=0,b.push(f(A)),A=0):w++,d=0;for(d=y.charCodeAt(0),l=0;l<16;l++)A=A<<1|d&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,d=d>>1}x--,x==0&&(x=Math.pow(2,S),S++),delete p[y]}else for(d=h[y],l=0;l<S;l++)A=A<<1|d&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,d=d>>1;x--,x==0&&(x=Math.pow(2,S),S++),h[m]=v++,y=String(g)}if(y!==""){if(Object.prototype.hasOwnProperty.call(p,y)){if(y.charCodeAt(0)<256){for(l=0;l<S;l++)A=A<<1,w==u-1?(w=0,b.push(f(A)),A=0):w++;for(d=y.charCodeAt(0),l=0;l<8;l++)A=A<<1|d&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,d=d>>1}else{for(d=1,l=0;l<S;l++)A=A<<1|d,w==u-1?(w=0,b.push(f(A)),A=0):w++,d=0;for(d=y.charCodeAt(0),l=0;l<16;l++)A=A<<1|d&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,d=d>>1}x--,x==0&&(x=Math.pow(2,S),S++),delete p[y]}else for(d=h[y],l=0;l<S;l++)A=A<<1|d&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,d=d>>1;x--,x==0&&(x=Math.pow(2,S),S++)}for(d=2,l=0;l<S;l++)A=A<<1|d&1,w==u-1?(w=0,b.push(f(A)),A=0):w++,d=d>>1;for(;;)if(A=A<<1,w==u-1){b.push(f(A));break}else w++;return b.join("")},decompress:function(c){return c==null?"":c==""?null:a._decompress(c.length,32768,function(u){return c.charCodeAt(u)})},_decompress:function(c,u,f){var l=[],d=4,h=4,p=3,g="",m=[],y,x,v,S,b,A,w,E={val:f(0),position:u,index:1};for(y=0;y<3;y+=1)l[y]=y;for(v=0,b=Math.pow(2,2),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;switch(v){case 0:for(v=0,b=Math.pow(2,8),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;w=n(v);break;case 1:for(v=0,b=Math.pow(2,16),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;w=n(v);break;case 2:return""}for(l[3]=w,x=w,m.push(w);;){if(E.index>c)return"";for(v=0,b=Math.pow(2,p),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;switch(w=v){case 0:for(v=0,b=Math.pow(2,8),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;l[h++]=n(v),w=h-1,d--;break;case 1:for(v=0,b=Math.pow(2,16),A=1;A!=b;)S=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),v|=(S>0?1:0)*A,A<<=1;l[h++]=n(v),w=h-1,d--;break;case 2:return m.join("")}if(d==0&&(d=Math.pow(2,p),p++),l[w])g=l[w];else if(w===h)g=x+x.charAt(0);else return null;m.push(g),l[h++]=x+g.charAt(0),d--,x=g,d==0&&(d=Math.pow(2,p),p++)}}};return a}();t!=null&&(t.exports=e)})(ef);function XI(){const t=typeof process!="undefined"?require("util").TextEncoder:TextEncoder;return new t}let $s;function qI(){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 ZI(t){$s!=null||($s=qI());let e=-1;const n=XI().encode(t);for(let r=0;r<n.length;r++)e=e>>>8^$s[(e^n[r])&255];return(e^-1)>>>0}function iy(t){return("00000000"+ZI(t).toString(16)).slice(-8)}function oy(t){const e=ef.exports.compressToEncodedURIComponent(JSON.stringify(t));return"#"+e+iy(e)}function KI(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(iy(e)!==n)throw new Error("The state string in the URL is corrupted.");return JSON.parse(ef.exports.decompressFromEncodedURIComponent(e))}let Ut;async function sy(t,e){var n;try{t.actions&&e.provenance.dispatchBookmark(t.actions),e.storeHelper.dispatch($i.actions.setViewSettings(t.viewSettings));const r=[];for(const[i,o]of Object.entries((n=t.scaleDomains)!=null?n:{})){const s=e.genomeSpy.getNamedScaleResolutions().get(i);s?r.push(s.zoomTo(o)):console.warn(`Cannot restore scale domain. Unknown name: ${i}`)}await Promise.all(r)}catch(r){console.error(r),st(M`<p>Cannot restore the state:</p><p>${r}</p>`),e.provenance.activateState(0)}}async function ea(t,e,n={}){await sy(t,e),(Ut||t.notes||n.mode=="shared"&&(t.name||t.notes))&&await JI(t,e,n)}async function JI(t,e,n={}){Ut!=null||(Ut=wr("tour")),await $I(t,e,n)}async function $I(t,e,n){var g;const r=n.database,i=r?await r.getNames():[],o=i.indexOf(t.name),s=r?` ${o+1} of ${i.length}`:"",a=`${n.mode=="shared"?"Shared bookmark":"Bookmark"}${s}: ${(g=t.name)!=null?g:"Unnamed"}`,c=t.notes?YI(t.notes,{baseUrl:e.genomeSpy.spec.baseUrl}):M`<span class="no-notes">No notes provided</span>`,u=()=>{Ut==null||Ut.close(),Ut=void 0},f=async m=>{const y=await r.get(i[m]);ea(y,e,n)},l=async()=>{if(await tf(e.localBookmarkDatabase,t,"add"))try{await e.localBookmarkDatabase.put(t)}catch(m){console.warn(m),st(`Cannot import bookmark: ${m}`)}},d=M`<button @click="${u}">${n.mode=="tour"?"End tour":"Close"}</button> ${n.mode=="shared"&&e.localBookmarkDatabase?M`<button @click="${l}">${$(Zg).node[0]} Import bookmark</button>`:R} ${r?M`<button @click="${()=>f(o-1)}" ?disabled="${o<=0}">${$(A8).node[0]} Previous</button> <button @click="${()=>f(o+1)}" ?disabled="${o>=i.length-1}">Next ${$(b8).node[0]}</button>`:R}`,p=M`<button title="Collapse" class="collapse" @click="${m=>m.target.closest(".gs-modal").classList.toggle("collapsed")}">${$(a8).node[0]}</button><div class="modal-title">${a}</div><div class="modal-body markdown" style="max-width:600px">${c}</div><div class="modal-buttons">${d}</div>`;Re(p,Ut.content)}function ay(t){const e=JSON.stringify(t,void 0,2),n=window.location,r=n.origin+n.pathname+n.search+oy(t);st(M`<div class="gs-tabs" style="width:600px"><ul class="tabs" @click="${WI}"><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="${r}"> <button @click="${o=>navigator.clipboard.writeText(r).then(()=>o.target.dispatchEvent(n6())).catch(()=>st("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">
2066
- ${e}</textarea> <small>The JSON-formatted bookmark is currently available for development purposes.</small></div></div></div>`,{title:"Share a bookmark",okLabel:"Close"})}function tf(t,e,n){const r={add:"Add bookmark",edit:"Edit bookmark",share:"Share the current view state as a bookmark"}[n],i=(c,u)=>{var f,l;return M`<div class="modal-title">${r}</div><div class="modal-body" style="width:500px">${n=="edit"?M`<div class="gs-alert warning">${$(l8).node[0]} The current visualization state will be updated to the bookmark you are editing.</div>`:R} ${n=="share"?M`<div class="gs-alert info">${$(Jg).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>`:R}<div class="gs-form-group"><label for="bookmark-title">Title</label> <input id="bookmark-title" type="text" ?required="${n=="add"||n=="edit"}" .value="${(f=e.name)!=null?f:""}" .placeholder="${n=="share"?"Add an optional title":""}" @change="${d=>{e.name=cy(d.target.value)}}"></div><div class="gs-form-group"><label for="bookmark-notes">Notes</label> <textarea id="bookmark-notes" rows="4" .value="${(l=e.notes)!=null?l:""}" .placeholder="${n=="share"?"... and notes":""}" @change="${d=>{e.notes=cy(d.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-cancel" @click="${c}">Cancel</button> <button class="btn-primary" @click="${u}">${n=="share"?M`${$(rl).node[0]} Create a link`:"Save"}</button></div>`},o=e.name,s=()=>!!e.name,a=wr();return new Promise(c=>{const u=()=>{a.close(),c(!1)},f=async()=>{if(!s()){st("Name is missing!",{title:"Error"});return}let d=!0;t&&!(n&&e.name==o)&&await t.get(e.name)&&(d=await st(M`A bookmark with the name <em>${e.name}</em> already exists. It will be overwritten.`,{title:"Bookmark already exists",cancelButton:!0})),d&&(a.close(),c(!0))},l=()=>{a.close(),c(!0)};Re(i(u,n=="share"?l:f),a.content),a.content.querySelector("#bookmark-title").focus()})}function cy(t){if(t!==void 0&&(t=t.trim(),t.length))return t}class eT extends kt{constructor(){super();this.app=void 0}connectedCallback(){super.connectedCallback(),this.dispatchEvent(K1("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 tf(void 0,e,"share")&&ay(e)}async _addBookmark(e,n){var s,a;const r=n?await e.get(n):void 0,i=!!r,o=this._createBookmarkWithCurrentState();if((s=o.name)!=null||(o.name=r==null?void 0:r.name),(a=o.notes)!=null||(o.notes=r==null?void 0:r.notes),await tf(e,o,i?"edit":"add"))try{await e.put(o,r==null?void 0:r.name),this.requestUpdate()}catch(c){st(`${c}`,{title:"Cannot save the bookmark!"})}}async _loadBookmark(e,n){const r=await e.get(n);r&&ea(r,this.app,{database:e})}_createContextMenu(e,n,r){r.stopPropagation();const i=r.target.closest("li");Qm({items:[{label:"Edit and replace...",icon:h8,callback:()=>this._addBookmark(e,n)},{label:"Delete",icon:x8,callback:()=>st(M`The bookmark <em>${n}</em> will be deleted.`,{title:"Are you sure?",cancelButton:!0}).then(async a=>{a&&(await e.delete(n),this.requestUpdate())})},{label:"Share...",icon:rl,callback:async()=>ay(await e.get(n))}]},i,"right-start")}async _makeBookmarkMenuItems(e,n){const i=(await e.getNames()).map(o=>({label:o,callback:()=>this._loadBookmark(e,o),ellipsisCallback:e.isReadonly()?void 0:s=>this._createContextMenu(e,o,s)}));return i.length?[{type:"divider"},{label:n,type:"header"},...i].map(o=>Gm(o)):R}_getBookmarks(){const e=(n,r)=>n?VI(this._makeBookmarkMenuItems(n,r),M`Loading...`):R;return[e(this.app.globalBookmarkDatabase,"Global bookmarks"),e(this.app.localBookmarkDatabase,"Local bookmarks")]}render(){const e=this.app.localBookmarkDatabase,n=e?M`<li><a @click="${()=>this._addBookmark(e)}">Add bookmark...</a></li>`:R,r=e||this.app.globalBookmarkDatabase?M`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Bookmarks" @click="${i=>{Kl(i)&&this.requestUpdate()}}">${$(Zg).node[0]}</button><ul class="gs-dropdown-menu">${n} ${this._getBookmarks()}</ul></div>`:R;return M`<div class="btn-group">${r} <button class="tool-btn" title="Share" @click="${()=>this._shareCurrentState()}">${$(rl).node[0]}</button></div>`}}customElements.define("genome-spy-bookmark-button",eT);class tT extends kt{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.getSampleView(),n=this.app.provenance,r=[];n.isEnabled()&&r.push(M`<genome-spy-provenance-buttons .provenance="${n}"></genome-spy-provenance-buttons>`),r.push(M`<genome-spy-view-visibility></genome-spy-view-visibility>`),e&&r.push(M`<button class="tool-btn" title="Peek (E)" @click="${()=>e._togglePeek()}">${$(o8).node[0]}</button>`),r.push(M`<genome-spy-bookmark-button></genome-spy-bookmark-button>`);const i=this.app.config.description?qe(this.app.config.description):[];return i.length>1&&r.push(M`<button class="tool-btn" title="Show a description of the visualization" @click="${()=>st(M`${i.slice(1).map(o=>M`<p>${o}</p>`)}`,{title:i[0]})}">${$(Jg).node[0]}</button>`),i.length>0&&r.push(M`<span class="vis-title">${i[0]}</span>`),r.push(M`<span class="spacer"></span> ${this.app.appContainer.requestFullscreen?M`<button class="tool-btn" title="Fullscreen" @click="${()=>this.app.toggleFullScreen()}">${$(f8).node[0]}</button>`:R} <button class="tool-btn" title="Help" @click="${()=>window.open("https://genomespy.app/docs/","_blank")}">${$(p8).node[0]}</button>`),r}render(){const e=this.app.genomeSpy;return M`<nav class="gs-toolbar"><a href="https://genomespy.app" target="_blank" class="logo"><img title="GenomeSpy" alt="GenomeSpy" src="${Z1}"> </a>${this.appInitialized&&q1(e.viewRoot)?M`<genome-spy-search-field .genomeSpy="${e}"></genome-spy-search-field>`:R} ${this._getToolButtons()}</nav>`}}customElements.define("genome-spy-toolbar",tT);class nT{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!=null?n:{})}addReducer(e,n){this._reducers[e]=n;const r=o=>Object.keys(this._reducers).some(s=>o.type.startsWith(s)),i=(o,s)=>r(s)?s:o!=null?o:null;this._reducer=M6(Rl(F(T({},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()?[sn.ActionCreators.jumpToPast(0)]:[],...e])}isRedoable(){return this.isEnabled()&&this._provenanceState.future.length>0}redo(){this.storeHelper.dispatch(sn.ActionCreators.redo())}isUndoable(){return this.isEnabled()&&this._provenanceState.past.length>0}undo(){this.storeHelper.dispatch(sn.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(sn.ActionCreators.jumpToPast(e)):e>n&&this.storeHelper.dispatch(sn.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*rT(t,e=n=>+n){const n=t.length,r=new Gi,i=new Array(n).fill(0);for(const[s,a]of t.entries())a.length&&r.push(s,e(a[0]));let o=0;for(;(o=r.pop())!==void 0;){const s=t[o];let a=i[o];if(yield s[a++],a<s.length){const u=e(s[a]);r.push(o,u),i[o]=a}}}const iT="sampleCount";class oT extends se{constructor(e,n){super();this.view=n;const r=n.context.animator;for(const i of n.getAncestors())i instanceof Hl&&(this.provenance=i.provenance,this.provenance.storeHelper.subscribe(o=>r.requestTransition(()=>{this.reset(),this._mergeAndPropagate(Gl(o)),this.complete()})));if(!this.provenance)throw new Error("No SampleView was found!");this.contextObject=void 0}initialize(){this.contextObject=Object.create(super.getGlobalObject());const e=this.view.getEncoding().x;if(Mn(e))this.xAccessor=Z(e.field);else throw new Error("Crash!")}handle(e){}getGlobalObject(){return this.contextObject}_getCollector(){if(this.parent instanceof Ar)return this.parent;throw new Error("MergeFacetsTransform must be a direct child of a Collector")}complete(){this._mergeAndPropagate(this.provenance.getPresentState()[Tr]),super.complete()}_mergeAndPropagate(e){const n=[...L1(e.rootGroup)].filter(r=>T1(fe(r)));for(const[r,i]of n.entries()){const o=fe(i);if(T1(o)){this.contextObject[iT]=o.samples.length,this.beginBatch({type:"facet",facetId:[r]});const s=o.samples,a=this._getCollector(),c=rT(s.map(u=>{var f;return(f=a.facetBatches.get([u]))!=null?f:[]}),this.xAccessor);for(const u of c)this._propagate(u)}}this._updateScales()}setParent(e){super.setParent(e)}_updateScales(){const e=new Set;this.view.visit(n=>{if(n instanceof Pe&&n.mark.encoding.y){const r=n.getScaleResolution("y");r&&e.add(r)}});for(const n of e)n.reconfigure()}}var sT="BATCHING_REDUCER.BATCH";function aT(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:sT;return{type:e,meta:{batch:!0},payload:t}}function cT(t){return function e(n,r){return r&&r.meta&&r.meta.batch?r.payload.reduce(e,n):t(n,r)}}class uT{constructor(e){this._reducers=e!=null?e:{},this.store=G5({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(cT(Rl(this._reducers)))}subscribe(e){this._listeners.add(e)}unsubscribe(e){this._listeners.delete(e)}dispatch(e){Array.isArray(e)?this.store.dispatch(aT(e)):this.store.dispatch(e)}getDispatcher(){return e=>this.dispatch(e)}}class lT extends Q1{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)}}Ng.mergeFacets=oT;class uy{constructor(e,n,r={}){const i=this;this.config=n,this.storeHelper=new uT,this.storeHelper.addReducer("viewSettings",$i.reducer),this.provenance=new nT(this.storeHelper),this._initializationListeners=[],this.toolbarRef=W1(),this.appContainer=e,this._configureContainer(),this.localBookmarkDatabase=typeof n.specId=="string"?new CI(n.specId):void 0,this.globalBookmarkDatabase=void 0,Re(M`<div class="genome-spy-app"><genome-spy-toolbar ${X1(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",a=>{a.detail.name=="app"&&(a.detail.setter(i),a.stopPropagation())});const o=a=>this.appContainer.getElementsByClassName(a)[0];this.genomeSpy=new Qg(o("genome-spy-container"),this.config,r),this.genomeSpy.viewFactory.addViewType(hI,(a,c,u,f)=>new Hl(a,c,u,f,this.provenance));const s=this.genomeSpy.viewVisibilityPredicate;this.genomeSpy.viewVisibilityPredicate=a=>{var c,u;return(u=(c=this.storeHelper.state.viewSettings)==null?void 0:c.visibilities[a.name])!=null?u:s(a)}}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 s,a;const e=((s=this.config.bookmarks)==null?void 0:s.remote)?Wr({baseURL:this.config.baseUrl}).load(this.config.bookmarks.remote.url).then(c=>Promise.resolve(JSON.parse(c))):Promise.resolve([]);if(!await this.genomeSpy.launch())return;this.storeHelper.subscribe(Ks(c=>{var u;return(u=c.viewSettings)==null?void 0:u.visibilities},(c,u)=>{var l,d;this.genomeSpy.viewRoot._invalidateCacheByPrefix("size","progeny"),(d=(l=this.getSampleView())==null?void 0:l.summaryViews)==null||d._invalidateCacheByPrefix("size","self");const f=this.genomeSpy.viewRoot.context;f.requestLayoutReflow(),f.animator.requestRender()},this.storeHelper.store.getState()));try{const c=await e;c.length&&(this.globalBookmarkDatabase=new lT(c))}catch(c){throw new Error(`Cannot load remote bookmarks: ${c}`)}await this._restoreStateFromUrlOrBookmark(),this.storeHelper.subscribe(()=>{this._updateStateToUrl()}),window.addEventListener("hashchange",()=>this._restoreStateFromUrl(),!1);const r=Ts(()=>this._updateStateToUrl(),500,!1);for(const[,c]of this.genomeSpy.getNamedScaleResolutions())c.isZoomable()&&c.addEventListener("domain",r);const i=this.toolbarRef.value;i.appInitialized=!0;const o=qe((a=this.genomeSpy.spec.description)!=null?a:[]);this.isFullPage()&&o.length>0&&(document.title="GenomeSpy - "+o);for(const c of this._initializationListeners)c();this._initializationListeners=void 0}async _restoreStateFromUrlOrBookmark(){var i,o;const e=this._restoreStateFromUrl(),n=(i=this.config.bookmarks)==null?void 0:i.remote,r=this.globalBookmarkDatabase;if(!e&&n&&r){const s=(o=n.initialBookmark)!=null?o:n.tour&&(await r.getNames())[0];if(s){const a=await r.get(s);if(!a)throw new Error(`No such bookmark: ${s}`);n.tour?await ea(a,this,{mode:"tour",database:r}):await sy(a,this)}}}_updateStateToUrl(){const e={actions:[],scaleDomains:{}},n=this.provenance.getBookmarkableActionHistory();(n==null?void 0:n.length)&&(e.actions=n);for(const[o,s]of this.genomeSpy.getNamedScaleResolutions().entries())s.isZoomed()||(e.scaleDomains[o]=s.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?oy(e):"";window.history.replaceState(void 0,document.title,window.location.pathname+window.location.search+i)}_restoreStateFromUrl(){const e=window.location.hash;if(e&&e.length>0)try{const n=KI(e);return ea(n,this,{mode:"shared"}),!0}catch(n){console.error(n),st(M`<p>Cannot restore the state:</p><p>${n}</p>`)}return!1}_configureContainer(){this.isFullPage()?(this.appContainer.style.margin="0",this.appContainer.style.padding="0",this.appContainer.style.overflow="hidden",fT(e8)):this.appContainer.style.position="relative"}getSampleView(){var n;if(!((n=this.genomeSpy)==null?void 0:n.viewRoot))return;let e;return this.genomeSpy.viewRoot.visit(r=>{if(r instanceof Hl)return e=r,kn}),e}}function fT(t){const e=document.querySelector("head"),n=document.createElement("link");n.setAttribute("rel","shortcut icon"),n.setAttribute("href",t),e.appendChild(n)}async function dT(t,e,n={}){var o,s,a;let r;if(oe(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 c=ze(e)?e:await ly(e);(o=c.baseUrl)!=null||(c.baseUrl=""),(s=c.width)!=null||(c.width="container"),(a=c.padding)!=null||(c.padding=10);const u=new uy(r,c,n);i=u.genomeSpy,hT(i,n),await u.launch()}catch(c){r.innerText=c.toString(),console.error(c)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(c,u){const f=i._eventListeners;let l=f.get(c);l||(l=new Set,f.set(c,l)),l.add(u)},removeEventListener(c,u){var l;(l=i._eventListeners.get(c))==null||l.delete(u)},getScaleResolutionByName(c){return i.getNamedScaleResolutions().get(c)}}}function hT(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function ly(t){let e;try{e=JSON.parse(await Wr().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}Y.GenomeSpy=Qg,Y.GenomeSpyApp=uy,Y.embed=dT,Y.html=M,Y.icon=Z1,Y.loadSpec=ly,Object.defineProperty(Y,"__esModule",{value:!0}),Y[Symbol.toStringTag]="Module"});
2163
+ */const E2=t=>!G9(t)&&typeof t.then=="function";class ik extends y2{constructor(){super(...arguments),this._$Cwt=1073741823,this._$Cyt=[],this._$CG=new nk(this),this._$CK=new rk}render(...e){var n;return(n=e.find(r=>!E2(r)))!==null&&n!==void 0?n:Ee}update(e,n){const r=this._$Cyt;let i=r.length;this._$Cyt=n;const o=this._$CG,a=this._$CK;this.isConnected||this.disconnected();for(let s=0;s<n.length&&!(s>this._$Cwt);s++){const c=n[s];if(!E2(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 Ee}disconnected(){this._$CG.disconnect(),this._$CK.pause()}reconnected(){this._$CG.reconnect(this),this._$CK.resume()}}const ok=Hr(ik);var ak={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function D2(t){return t.replace(RegExp("^"+(t.match(/^(\t| )+/)||"")[0],"gm"),"")}function No(t){return(t+"").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function qf(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(p){var m=ak[p[1]||""],y=c[c.length-1]==p;return m?m[1]?(y?c.pop():c.push(p),m[0|y]):m[0]:p}function h(){for(var p="";c.length;)p+=d(c[c.length-1]);return p}for(t=t.replace(/^\[(.+?)\]:\s*(.+)$/gm,function(p,m,y){return f[m.toLowerCase()]=y,""}).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()+'"':"")+">"+D2(No(a).replace(/^\n+|\n+$/g,""))+"</code></pre>":(a=i[6])?(a.match(/\./)&&(i[5]=i[5].replace(/^\d+/gm,"")),o=qf(D2(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="'+No(i[8])+'" alt="'+No(i[7])+'">':i[10]?(u=u.replace("<a>",'<a href="'+No(i[11]||f[r.toLowerCase()])+'">'),n=h()+"</a>"):i[9]?n="<a>":i[12]||i[14]?n="<"+(a="h"+(i[14]?i[14].length:i[13]>"="?1:2))+">"+qf(i[12]||i[15],f)+"</"+a+">":i[16]?n="<code>"+No(i[16])+"</code>":(i[17]||i[1])&&(n=d(i[17]||"--"))),u+=r,u+=n;return(u+t.substring(l)+h()).replace(/^\n+|\n+$/g,"")}function M2(t,e){return!e||/^(data:|([A-Za-z]+:)?\/\/)/.test(t)||t.startsWith("/")?t:(e.endsWith("/")||(e+="/"),e+t)}function sk(t,e={}){const n=qf(t),r=new DOMParser().parseFromString(`<!DOCTYPE html><html><body><div>${n}</div></body></html>`,"text/html");r.normalize(),T2(r.body);for(const o of r.querySelectorAll("a[href]"))o.setAttribute("target","blank"),o.setAttribute("rel","noopener noreferrer"),o.setAttribute("href",M2(o.getAttribute("href"),e.baseUrl));for(const o of r.querySelectorAll("img[src]"))o.setAttribute("src",M2(o.getAttribute("src"),e.baseUrl));const i=r.body.removeChild(r.querySelector("body > div"));return i.className="snarkdown",i}function T2(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--;)T2(t.childNodes[e])}}function ck(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 Kf={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 h=u.charCodeAt(l);f[l*2]=h>>>8,f[l*2+1]=h%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(h){d.push(n(h))}),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,h={},p={},m="",y="",g="",A=2,x=3,C=2,b=[],v=0,w=0,E;for(E=0;E<c.length;E+=1)if(m=c.charAt(E),Object.prototype.hasOwnProperty.call(h,m)||(h[m]=x++,p[m]=!0),y=g+m,Object.prototype.hasOwnProperty.call(h,y))g=y;else{if(Object.prototype.hasOwnProperty.call(p,g)){if(g.charCodeAt(0)<256){for(l=0;l<C;l++)v=v<<1,w==u-1?(w=0,b.push(f(v)),v=0):w++;for(d=g.charCodeAt(0),l=0;l<8;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1}else{for(d=1,l=0;l<C;l++)v=v<<1|d,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=0;for(d=g.charCodeAt(0),l=0;l<16;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1}A--,A==0&&(A=Math.pow(2,C),C++),delete p[g]}else for(d=h[g],l=0;l<C;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1;A--,A==0&&(A=Math.pow(2,C),C++),h[y]=x++,g=String(m)}if(g!==""){if(Object.prototype.hasOwnProperty.call(p,g)){if(g.charCodeAt(0)<256){for(l=0;l<C;l++)v=v<<1,w==u-1?(w=0,b.push(f(v)),v=0):w++;for(d=g.charCodeAt(0),l=0;l<8;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1}else{for(d=1,l=0;l<C;l++)v=v<<1|d,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=0;for(d=g.charCodeAt(0),l=0;l<16;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1}A--,A==0&&(A=Math.pow(2,C),C++),delete p[g]}else for(d=h[g],l=0;l<C;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1;A--,A==0&&(A=Math.pow(2,C),C++)}for(d=2,l=0;l<C;l++)v=v<<1|d&1,w==u-1?(w=0,b.push(f(v)),v=0):w++,d=d>>1;for(;;)if(v=v<<1,w==u-1){b.push(f(v));break}else w++;return b.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,h=4,p=3,m="",y=[],g,A,x,C,b,v,w,E={val:f(0),position:u,index:1};for(g=0;g<3;g+=1)l[g]=g;for(x=0,b=Math.pow(2,2),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),x|=(C>0?1:0)*v,v<<=1;switch(x){case 0:for(x=0,b=Math.pow(2,8),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),x|=(C>0?1:0)*v,v<<=1;w=n(x);break;case 1:for(x=0,b=Math.pow(2,16),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),x|=(C>0?1:0)*v,v<<=1;w=n(x);break;case 2:return""}for(l[3]=w,A=w,y.push(w);;){if(E.index>c)return"";for(x=0,b=Math.pow(2,p),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),x|=(C>0?1:0)*v,v<<=1;switch(w=x){case 0:for(x=0,b=Math.pow(2,8),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),x|=(C>0?1:0)*v,v<<=1;l[h++]=n(x),w=h-1,d--;break;case 1:for(x=0,b=Math.pow(2,16),v=1;v!=b;)C=E.val&E.position,E.position>>=1,E.position==0&&(E.position=u,E.val=f(E.index++)),x|=(C>0?1:0)*v,v<<=1;l[h++]=n(x),w=h-1,d--;break;case 2:return y.join("")}if(d==0&&(d=Math.pow(2,p),p++),l[w])m=l[w];else if(w===h)m=A+A.charAt(0);else return null;y.push(m),l[h++]=A+m.charAt(0),d--,A=m,d==0&&(d=Math.pow(2,p),p++)}}};return s}();t!=null&&(t.exports=e)})(Kf);function uk(){const t=typeof process!="undefined"?require("util").TextEncoder:TextEncoder;return new t}let Rs;function lk(){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 fk(t){Rs!=null||(Rs=lk());let e=-1;const n=uk().encode(t);for(let r=0;r<n.length;r++)e=e>>>8^Rs[(e^n[r])&255];return(e^-1)>>>0}function I2(t){return("00000000"+fk(t).toString(16)).slice(-8)}function k2(t){const e=Kf.exports.compressToEncodedURIComponent(JSON.stringify(t));return"#"+e+I2(e)}function dk(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(I2(e)!==n)throw new Error("The state string in the URL is corrupted.");return JSON.parse(Kf.exports.decompressFromEncodedURIComponent(e))}let Vt;async function N2(t,e){var n;try{t.actions&&e.provenance.dispatchBookmark(t.actions),e.storeHelper.dispatch(ko.actions.setViewSettings(t.viewSettings));const r=[];for(const[i,o]of Object.entries((n=t.scaleDomains)!=null?n:{})){const a=e.genomeSpy.getNamedScaleResolutions().get(i);a?r.push(a.zoomTo(o)):console.warn(`Cannot restore scale domain. Unknown name: ${i}`)}await Promise.all(r)}catch(r){console.error(r),ft(D`<p>Cannot restore the state:</p><p>${r}</p>`),e.provenance.activateState(0)}}async function js(t,e,n={}){await N2(t,e),(Vt||t.notes||n.mode=="shared"&&(t.name||t.notes))&&await hk(t,e,n)}async function hk(t,e,n={}){Vt!=null||(Vt=Wr("tour")),await pk(t,e,n)}async function pk(t,e,n){var m;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}: ${(m=t.name)!=null?m:"Unnamed"}`,c=t.notes?sk(t.notes,{baseUrl:e.genomeSpy.spec.baseUrl}):D`<span class="no-notes">No notes provided</span>`,u=()=>{Vt==null||Vt.close(),Vt=void 0},f=async y=>{const g=await r.get(i[y]);js(g,e,n)},l=async()=>{if(await Jf(e.localBookmarkDatabase,t,"add"))try{await e.localBookmarkDatabase.put(t)}catch(y){console.warn(y),ft(`Cannot import bookmark: ${y}`)}},d=D`<button @click="${u}">${n.mode=="tour"?"End tour":"Close"}</button> ${n.mode=="shared"&&e.localBookmarkDatabase?D`<button @click="${l}">${ne(Yg).node[0]} Import bookmark</button>`:G} ${r?D`<button @click="${()=>f(o-1)}" ?disabled="${o<=0}">${ne(u5).node[0]} Previous</button> <button @click="${()=>f(o+1)}" ?disabled="${o>=i.length-1}">Next ${ne(w5).node[0]}</button>`:G}`,p=D`<button title="Collapse" class="collapse" @click="${y=>y.target.closest(".gs-modal").classList.toggle("collapsed")}">${ne(f5).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>`;Ge(p,Vt.content)}function L2(t){const e=JSON.stringify(t,void 0,2),n=window.location,r=n.origin+n.pathname+n.search+k2(t);ft(D`<div class="gs-tabs" style="width:600px"><ul class="tabs" @click="${ck}"><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="${r}"> <button @click="${o=>navigator.clipboard.writeText(r).then(()=>o.target.dispatchEvent(p6())).catch(()=>ft("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">
2164
+ ${e}</textarea> <small>The JSON-formatted bookmark is currently available for development purposes.</small></div></div></div>`,{title:"Share a bookmark",okLabel:"Close"})}function Jf(t,e,n){const r={add:"Add bookmark",edit:"Edit bookmark",share:"Share the current view state as a bookmark"}[n],i=(c,u)=>{var f,l;return D`<div class="modal-title">${r}</div><div class="modal-body" style="width:500px">${n=="edit"?D`<div class="gs-alert warning">${ne(h5).node[0]} The current visualization state will be updated to the bookmark you are editing.</div>`:G} ${n=="share"?D`<div class="gs-alert info">${ne(Wg).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>`:G}<div class="gs-form-group"><label for="bookmark-title">Title</label> <input id="bookmark-title" type="text" ?required="${n=="add"||n=="edit"}" .value="${(f=e.name)!=null?f:""}" .placeholder="${n=="share"?"Add an optional title":""}" @change="${d=>{e.name=B2(d.target.value)}}"></div><div class="gs-form-group"><label for="bookmark-notes">Notes</label> <textarea id="bookmark-notes" rows="4" .value="${(l=e.notes)!=null?l:""}" .placeholder="${n=="share"?"... and notes":""}" @change="${d=>{e.notes=B2(d.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-cancel" @click="${c}">Cancel</button> <button class="btn-primary" @click="${u}">${n=="share"?D`${ne(Pl).node[0]} Create a link`:"Save"}</button></div>`},o=e.name,a=()=>!!e.name,s=Wr();return new Promise(c=>{const u=()=>{s.close(),c(!1)},f=async()=>{if(!a()){ft("Name is missing!",{title:"Error"});return}let d=!0;t&&!(n&&e.name==o)&&await t.get(e.name)&&(d=await ft(D`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)};Ge(i(u,n=="share"?l:f),s.content),s.content.querySelector("#bookmark-title").focus()})}function B2(t){if(t!==void 0&&(t=t.trim(),t.length))return t}class mk extends Ft{constructor(){super(),this.app=void 0}connectedCallback(){super.connectedCallback(),this.dispatchEvent(w2("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 Jf(void 0,e,"share")&&L2(e)}async _addBookmark(e,n){var a,s;const r=n?await e.get(n):void 0,i=!!r,o=this._createBookmarkWithCurrentState();if((a=o.name)!=null||(o.name=r==null?void 0:r.name),(s=o.notes)!=null||(o.notes=r==null?void 0:r.notes),await Jf(e,o,i?"edit":"add"))try{await e.put(o,r==null?void 0:r.name),this.requestUpdate()}catch(c){ft(`${c}`,{title:"Cannot save the bookmark!"})}}async _loadBookmark(e,n){const r=await e.get(n);r&&js(r,this.app,{database:e})}_createContextMenu(e,n,r){r.stopPropagation();const i=r.target.closest("li");py({items:[{label:"Edit and replace...",icon:D5,callback:()=>this._addBookmark(e,n)},{label:"Delete",icon:I5,callback:()=>ft(D`The bookmark <em>${n}</em> will be deleted.`,{title:"Are you sure?",cancelButton:!0}).then(async s=>{s&&(await e.delete(n),this.requestUpdate())})},{label:"Share...",icon:Pl,callback:async()=>L2(await e.get(n))}]},i,"right-start")}async _makeBookmarkMenuItems(e,n){const i=(await e.getNames()).map(o=>({label:o,callback:()=>this._loadBookmark(e,o),ellipsisCallback:e.isReadonly()?void 0:a=>this._createContextMenu(e,o,a)}));return i.length?[{type:"divider"},{label:n,type:"header"},...i].map(o=>dy(o)):G}_getBookmarks(){const e=(n,r)=>n?ok(this._makeBookmarkMenuItems(n,r),D`Loading...`):G;return[e(this.app.globalBookmarkDatabase,"Global bookmarks"),e(this.app.localBookmarkDatabase,"Local bookmarks")]}render(){const e=this.app.localBookmarkDatabase,n=e?D`<li><a @click="${()=>this._addBookmark(e)}">Add bookmark...</a></li>`:G,r=e||this.app.globalBookmarkDatabase?D`<div class="dropdown bookmark-dropdown"><button class="tool-btn" title="Bookmarks" @click="${i=>{Xf(i)&&this.requestUpdate()}}">${ne(Yg).node[0]}</button><ul class="gs-dropdown-menu">${n} ${this._getBookmarks()}</ul></div>`:G;return D`<div class="btn-group">${r} <button class="tool-btn" title="Share" @click="${()=>this._shareCurrentState()}">${ne(Pl).node[0]}</button></div>`}}customElements.define("genome-spy-bookmark-button",mk);class gk extends Ft{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.getSampleView(),n=this.app.provenance,r=[];n.isEnabled()&&r.push(D`<genome-spy-provenance-buttons .provenance="${n}"></genome-spy-provenance-buttons>`),r.push(D`<genome-spy-view-visibility></genome-spy-view-visibility>`),e&&r.push(D`<button class="tool-btn" title="Peek (E)" @click="${()=>e._togglePeek()}">${ne(L5).node[0]}</button>`),r.push(D`<genome-spy-bookmark-button></genome-spy-bookmark-button>`);const i=this.app.config.description?Je(this.app.config.description):[];return i.length>1&&r.push(D`<button class="tool-btn" title="Show a description of the visualization" @click="${()=>ft(D`${i.slice(1).map(o=>D`<p>${o}</p>`)}`,{title:i[0]})}">${ne(Wg).node[0]}</button>`),i.length>0&&r.push(D`<span class="vis-title">${i[0]}</span>`),r.push(D`<span class="spacer"></span> ${this.app.appContainer.requestFullscreen?D`<button class="tool-btn" title="Fullscreen" @click="${()=>this.app.toggleFullScreen()}">${ne(S5).node[0]}</button>`:G} <button class="tool-btn" title="Help" @click="${()=>window.open("https://genomespy.app/docs/","_blank")}">${ne(g5).node[0]}</button>`),r}render(){const e=this.app.genomeSpy;return D`<nav class="gs-toolbar"><a href="https://genomespy.app" target="_blank" class="logo"><img title="GenomeSpy" alt="GenomeSpy" src="${x2}"> </a>${this.appInitialized&&A2(e.viewRoot)?D`<genome-spy-search-field .genomeSpy="${e}"></genome-spy-search-field>`:G} ${this._getToolButtons()}</nav>`}}customElements.define("genome-spy-toolbar",gk);class yk{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!=null?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?o:null;this._reducer=j6(Pf(U(T({},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()?[yn.ActionCreators.jumpToPast(0)]:[],...e])}isRedoable(){return this.isEnabled()&&this._provenanceState.future.length>0}redo(){this.storeHelper.dispatch(yn.ActionCreators.redo())}isUndoable(){return this.isEnabled()&&this._provenanceState.past.length>0}undo(){this.storeHelper.dispatch(yn.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(yn.ActionCreators.jumpToPast(e)):e>n&&this.storeHelper.dispatch(yn.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*vk(t,e=n=>+n){const n=t.length,r=new co,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 bk="sampleCount";class Ak extends ue{constructor(e,n){super(),this.view=n;const r=n.context.animator;for(const i of n.getAncestors())i instanceof jf&&(this.provenance=i.provenance,this.provenance.storeHelper.subscribe(o=>r.requestTransition(()=>{this.reset(),this._mergeAndPropagate(Rf(o)),this.complete()})));if(!this.provenance)throw new Error("No SampleView was found!");this.contextObject=void 0}initialize(){this.contextObject=Object.create(super.getGlobalObject());const e=this.view.getEncoding().x;if(Yn(e))this.xAccessor=J(e.field);else throw new Error("Crash!")}handle(e){}getGlobalObject(){return this.contextObject}_getCollector(){if(this.parent instanceof Ur)return this.parent;throw new Error("MergeFacetsTransform must be a direct child of a Collector")}complete(){this._mergeAndPropagate(this.provenance.getPresentState()[$r]),super.complete()}_mergeAndPropagate(e){const n=[...n2(e.rootGroup)].filter(r=>e2(He(r)));for(const[r,i]of n.entries()){const o=He(i);if(e2(o)){this.contextObject[bk]=o.samples.length,this.beginBatch({type:"facet",facetId:[r]});const a=o.samples,s=this._getCollector(),c=vk(a.map(u=>{var f;return(f=s.facetBatches.get([u]))!=null?f:[]}),this.xAccessor);for(const u of c)this._propagate(u)}}this._updateScales()}setParent(e){super.setParent(e)}_updateScales(){const e=new Set;this.view.visit(n=>{if(n instanceof Ae&&n.mark.encoding.y){const r=n.getScaleResolution("y");r&&e.add(r)}});for(const n of e)n.reconfigure()}}var xk="BATCHING_REDUCER.BATCH";function wk(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:xk;return{type:e,meta:{batch:!0},payload:t}}function Ck(t){return function e(n,r){return r&&r.meta&&r.meta.batch?r.payload.reduce(e,n):t(n,r)}}class Sk{constructor(e){this._reducers=e!=null?e:{},this.store=t9({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(Ck(Pf(this._reducers)))}subscribe(e){this._listeners.add(e)}unsubscribe(e){this._listeners.delete(e)}dispatch(e){Array.isArray(e)?this.store.dispatch(wk(e)):this.store.dispatch(e)}getDispatcher(){return e=>this.dispatch(e)}}class Ek extends p2{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)}}wg.mergeFacets=Ak;class O2{constructor(e,n,r={}){const i=this;this.config=n,this.storeHelper=new Sk,this.storeHelper.addReducer("viewSettings",ko.reducer),this.provenance=new yk(this.storeHelper),this._initializationListeners=[],this.toolbarRef=v2(),this.appContainer=e,this._configureContainer(),this.localBookmarkDatabase=typeof n.specId=="string"?new U9(n.specId):void 0,this.globalBookmarkDatabase=void 0,Ge(D`<div class="genome-spy-app"><genome-spy-toolbar ${b2(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 zg(o("genome-spy-container"),this.config,r),this.genomeSpy.viewFactory.addViewType(T9,(s,c,u,f)=>new jf(s,c,u,f,this.provenance));const a=this.genomeSpy.viewVisibilityPredicate;this.genomeSpy.viewVisibilityPredicate=s=>{var c,u;return(u=(c=this.storeHelper.state.viewSettings)==null?void 0:c.visibilities[s.name])!=null?u: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,s;const e=(a=this.config.bookmarks)!=null&&a.remote?Ai({baseURL:this.config.baseUrl}).load(this.config.bookmarks.remote.url).then(c=>Promise.resolve(JSON.parse(c))):Promise.resolve([]);if(!await this.genomeSpy.launch())return;this.storeHelper.subscribe(Fs(c=>{var u;return(u=c.viewSettings)==null?void 0:u.visibilities},(c,u)=>{var l,d;this.genomeSpy.viewRoot._invalidateCacheByPrefix("size","progeny"),(d=(l=this.getSampleView())==null?void 0:l.summaryViews)==null||d._invalidateCacheByPrefix("size","self");const f=this.genomeSpy.viewRoot.context;f.requestLayoutReflow(),f.animator.requestRender()},this.storeHelper.store.getState()));try{const c=await e;c.length&&(this.globalBookmarkDatabase=new Ek(c))}catch(c){throw new Error(`Cannot load remote bookmarks: ${c}`)}await this._restoreStateFromUrlOrBookmark(),this.storeHelper.subscribe(()=>{this._updateStateToUrl()}),window.addEventListener("hashchange",()=>this._restoreStateFromUrl(),!1);const r=as(()=>this._updateStateToUrl(),500,!1);for(const[,c]of this.genomeSpy.getNamedScaleResolutions())c.isZoomable()&&c.addEventListener("domain",r);const i=this.toolbarRef.value;i.appInitialized=!0;const o=Je((s=this.genomeSpy.spec.description)!=null?s:[]);this.isFullPage()&&o.length>0&&(document.title="GenomeSpy - "+o);for(const c of this._initializationListeners)c();this._initializationListeners=void 0}async _restoreStateFromUrlOrBookmark(){var i,o;const e=this._restoreStateFromUrl(),n=(i=this.config.bookmarks)==null?void 0:i.remote,r=this.globalBookmarkDatabase;if(!e&&n&&r){const a=(o=n.initialBookmark)!=null?o:n.tour&&(await r.getNames())[0];if(a){const s=await r.get(a);if(!s)throw new Error(`No such bookmark: ${a}`);n.tour?await js(s,this,{mode:"tour",database:r}):await N2(s,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?k2(e):"";window.history.replaceState(void 0,document.title,window.location.pathname+window.location.search+i)}_restoreStateFromUrl(){const e=window.location.hash;if(e&&e.length>0)try{const n=dk(e);return js(n,this,{mode:"shared"}),!0}catch(n){console.error(n),ft(D`<p>Cannot restore the state:</p><p>${n}</p>`)}return!1}_configureContainer(){this.isFullPage()?(this.appContainer.style.margin="0",this.appContainer.style.padding="0",this.appContainer.style.overflow="hidden",Dk(q8)):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 jf)return e=r,zr}),e}}function Dk(t){const e=document.querySelector("head"),n=document.createElement("link");n.setAttribute("rel","shortcut icon"),n.setAttribute("href",t),e.appendChild(n)}async function Mk(t,e,n={}){var o,a,s;let r;if(re(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 c=je(e)?e:await P2(e);(o=c.baseUrl)!=null||(c.baseUrl=""),(a=c.width)!=null||(c.width="container"),(s=c.padding)!=null||(c.padding=10);const u=new O2(r,c,n);i=u.genomeSpy,Tk(i,n),await u.launch()}catch(c){r.innerText=c.toString(),console.error(c)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(c,u){const f=i._eventListeners;let l=f.get(c);l||(l=new Set,f.set(c,l)),l.add(u)},removeEventListener(c,u){var l;(l=i._eventListeners.get(c))==null||l.delete(u)},getScaleResolutionByName(c){return i.getNamedScaleResolutions().get(c)}}}function Tk(t,e){e.namedDataProvider&&t.registerNamedDataProvider(e.namedDataProvider)}async function P2(t){let e;try{e=JSON.parse(await Ai().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}z.GenomeSpy=zg,z.GenomeSpyApp=O2,z.embed=Mk,z.html=D,z.icon=x2,z.loadSpec=P2,Object.defineProperties(z,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});