crossnote 0.9.13 → 0.9.14

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/out/esm/index.mjs CHANGED
@@ -10,7 +10,7 @@ var VU=Object.create;var cD=Object.defineProperty;var YU=Object.getOwnPropertyDe
10
10
  : (u > v || v == null) && u != null ? ${v}
11
11
  : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? ${g}
12
12
  : v !== v && u === u ? ${v} : `}(u,c,-o,o)}).join("")+"0;");return n?a.bind(n):a}}};function DI(e,t,n){if(!e||!ye(e))return e;for(let a,r=0,i=MI.length;r<i;++r)if(a=MI[r],et(e,a.key))return a.parse(e,t,n);return e}var MI=[{key:"$ref",parse:function(e,t){return t.get(e.$ref)||F("Operator not defined: "+e.$ref)}},{key:"$key",parse:function(e,t){let n="k:"+e.$key+"_"+!!e.$flat;return t.fn[n]||(t.fn[n]=ki(e.$key,e.$flat,t.expr.codegen))}},{key:"$expr",parse:function(e,t,n){e.$params&&t.parseParameters(e.$params,n);let a="e:"+e.$expr.code;return t.fn[a]||(t.fn[a]=b(t.parameterExpression(e.$expr),e.$fields))}},{key:"$field",parse:function(e,t){if(!e.$field)return null;let n="f:"+e.$field+"_"+e.$name;return t.fn[n]||(t.fn[n]=W(e.$field,e.$name,t.expr.codegen))}},{key:"$encode",parse:function(e,t){let n=e.$encode,a={};for(let r in n){let i=n[r];a[r]=b(t.encodeExpression(i.$expr),i.$fields),a[r].output=i.$output}return a}},{key:"$compare",parse:function(e,t){let n="c:"+e.$compare+"_"+e.$order,a=Re(e.$compare).map(r=>r&&r.$tupleid?at:r);return t.fn[n]||(t.fn[n]=Ml(a,e.$order,t.expr.codegen))}},{key:"$context",parse:function(e,t){return t}},{key:"$subflow",parse:function(e,t){let n=e.$subflow;return function(a,r,i){let o=t.fork().parse(n),u=o.get(n.operators[0].id),c=o.signals.parent;return c&&c.set(i),u.detachSubflow=()=>t.detach(o),u}}},{key:"$tupleid",parse:function(){return at}}];let A$={skip:!0};function LI(e,t,n,a){return new FI(e,t,n,a)}function FI(e,t,n,a){this.dataflow=e,this.transforms=t,this.events=e.events.bind(e),this.expr=a||S$,this.signals={},this.scales={},this.nodes={},this.data={},this.fn={},n&&(this.functions=Object.create(n),this.functions.context=this)}function PI(e){this.dataflow=e.dataflow,this.transforms=e.transforms,this.events=e.events,this.expr=e.expr,this.signals=Object.create(e.signals),this.scales=Object.create(e.scales),this.nodes=Object.create(e.nodes),this.data=Object.create(e.data),this.fn=Object.create(e.fn),e.functions&&(this.functions=Object.create(e.functions),this.functions.context=this)}function $I(e,t){e&&(t==null?e.removeAttribute("aria-label"):e.setAttribute("aria-label",t))}FI.prototype=PI.prototype={fork(){let e=new PI(this);return(this.subcontext||(this.subcontext=[])).push(e),e},detach(e){this.subcontext=this.subcontext.filter(n=>n!==e);let t=Object.keys(e.nodes);for(let n of t)e.nodes[n]._targets=null;for(let n of t)e.nodes[n].detach();e.nodes=null},get(e){return this.nodes[e]},set(e,t){return this.nodes[e]=t},add(e,t){let n=this,a=n.dataflow,r=e.value;if(n.set(e.id,t),function(i){return hS(i)==="collect"}(e.type)&&r&&(r.$ingest?a.ingest(t,r.$ingest,r.$format):r.$request?a.preload(t,r.$request,r.$format):a.pulse(t,a.changeset().insert(r))),e.root&&(n.root=t),e.parent){let i=n.get(e.parent.$ref);i?(a.connect(i,[t]),t.targets().add(i)):(n.unresolved=n.unresolved||[]).push(()=>{i=n.get(e.parent.$ref),a.connect(i,[t]),t.targets().add(i)})}if(e.signal&&(n.signals[e.signal]=t),e.scale&&(n.scales[e.scale]=t),e.data)for(let i in e.data){let o=n.data[i]||(n.data[i]={});e.data[i].forEach(u=>o[u]=t)}},resolve(){return(this.unresolved||[]).forEach(e=>e()),delete this.unresolved,this},operator(e,t){this.add(e,this.dataflow.add(e.value,t))},transform(e,t){this.add(e,this.dataflow.add(this.transforms[hS(t)]))},stream(e,t){this.set(e.id,t)},update(e,t,n,a,r){this.dataflow.on(t,n,a,r,e.options)},operatorExpression(e){return this.expr.operator(this,e)},parameterExpression(e){return this.expr.parameter(this,e)},eventExpression(e){return this.expr.event(this,e)},handlerExpression(e){return this.expr.handler(this,e)},encodeExpression(e){return this.expr.encode(this,e)},parse:function(e){let t=this,n=e.operators||[];return e.background&&(t.background=e.background),e.eventConfig&&(t.eventConfig=e.eventConfig),e.locale&&(t.locale=e.locale),n.forEach(a=>t.parseOperator(a)),n.forEach(a=>t.parseOperatorParameters(a)),(e.streams||[]).forEach(a=>t.parseStream(a)),(e.updates||[]).forEach(a=>t.parseUpdate(a)),t.resolve()},parseOperator:function(e){let t=this;!function(n){return hS(n)==="operator"}(e.type)&&e.type?t.transform(e,e.type):t.operator(e,e.update?t.operatorExpression(e.update):null)},parseOperatorParameters:function(e){let t=this;if(e.params){let n=t.get(e.id);n||F("Invalid operator id: "+e.id),t.dataflow.connect(n,n.parameters(t.parseParameters(e.params),e.react,e.initonly))}},parseParameters:function(e,t){t=t||{};let n=this;for(let a in e){let r=e[a];t[a]=Ee(r)?r.map(i=>DI(i,n,t)):DI(r,n,t)}return t},parseStream:function(e){var t,n=this,a=e.filter!=null?n.eventExpression(e.filter):void 0,r=e.stream!=null?n.get(e.stream):void 0;e.source?r=n.events(e.source,e.type,a):e.merge&&(r=(t=e.merge.map(i=>n.get(i)))[0].merge.apply(t[0],t.slice(1))),e.between&&(t=e.between.map(i=>n.get(i)),r=r.between(t[0],t[1])),e.filter&&(r=r.filter(a)),e.throttle!=null&&(r=r.throttle(+e.throttle)),e.debounce!=null&&(r=r.debounce(+e.debounce)),r==null&&F("Invalid stream definition: "+JSON.stringify(e)),e.consume&&r.consume(!0),n.stream(e,r)},parseUpdate:function(e){var t,n=this,a=ye(a=e.source)?a.$ref:a,r=n.get(a),i=e.update,o=void 0;r||F("Source not defined: "+e.source),t=e.target&&e.target.$expr?n.eventExpression(e.target.$expr):n.get(e.target),i&&i.$expr&&(i.$params&&(o=n.parseParameters(i.$params)),i=n.handlerExpression(i.$expr)),n.update(e,r,t,i,o)},getState:function(e){var t=this,n={};if(e.signals){var a=n.signals={};Object.keys(t.signals).forEach(i=>{let o=t.signals[i];e.signals(i,o)&&(a[i]=o.value)})}if(e.data){var r=n.data={};Object.keys(t.data).forEach(i=>{let o=t.data[i];e.data(i,o)&&(r[i]=o.input.value)})}return t.subcontext&&e.recurse!==!1&&(n.subcontext=t.subcontext.map(i=>i.getState(e))),n},setState:function(e){var t=this,n=t.dataflow,a=e.data,r=e.signals;Object.keys(r||{}).forEach(i=>{n.update(t.signals[i],r[i],A$)}),Object.keys(a||{}).forEach(i=>{n.pulse(t.data[i].input,n.changeset().remove(Z).insert(a[i]))}),(e.subcontext||[]).forEach((i,o)=>{let u=t.subcontext[o];u&&u.setState(i)})}};let mS="default";function gS(e,t){let n=e.globalCursor()?typeof document<"u"&&document.body:e.container();if(n)return t==null?n.style.removeProperty("cursor"):n.style.cursor=t}function iw(e,t){var n=e._runtime.data;return et(n,t)||F("Unrecognized data set: "+t),n[t]}function ow(e,t){iu(t)||F("Second argument to changes must be a changeset.");let n=iw(this,e);return n.modified=!0,this.pulse(n.input,t)}function BI(e){var t=e.padding();return Math.max(0,e._viewWidth+t.left+t.right)}function UI(e){var t=e.padding();return Math.max(0,e._viewHeight+t.top+t.bottom)}function sw(e){var t=e.padding(),n=e._origin;return[t.left+n[0],t.top+n[1]]}function T$(e,t,n){var a,r,i=e._renderer,o=i&&i.canvas();return o&&(r=sw(e),(a=Dv(t.changedTouches?t.changedTouches[0]:t,o))[0]-=r[0],a[1]-=r[1]),t.dataflow=e,t.item=n,t.vega=function(u,c,f){let m=c?c.mark.marktype==="group"?c:c.mark.group:null;function g(E){var k,_=m;if(E){for(k=c;k;k=k.mark.group)if(k.mark.name===E){_=k;break}}return _&&_.mark&&_.mark.interactive?_:{}}function v(E){if(!E)return f;Mt(E)&&(E=g(E));let k=f.slice();for(;E;)k[0]-=E.x||0,k[1]-=E.y||0,E=E.mark&&E.mark.group;return k}return{view:dn(u),item:dn(c||{}),group:g,xy:v,x:E=>v(E)[0],y:E=>v(E)[1]}}(e,n,a),t}let zI="view",C$="timer",R$="window",N$={trap:!1};function GI(e,t,n,a){e._eventListeners.push({type:n,sources:Re(t),handler:a})}function lw(e,t,n){let a=e._eventConfig&&e._eventConfig[t];return!(a===!1||ye(a)&&!a[n])||(e.warn(`Blocked ${t} ${n} event listener.`),!1)}function jI(e){return e.item}function HI(e){return e.item.mark.source}function qI(e){return function(t,n){return n.vega.view().changeset().encode(n.item,e)}}function yi(e,t,n){let a=document.createElement(e);for(let r in t)a.setAttribute(r,t[r]);return n!=null&&(a.textContent=n),a}let I$="vega-bind",O$="vega-bind-name",D$="vega-bind-radio";function M$(e,t,n,a){let r=n.event||"input",i=()=>e.update(t.value);a.signal(n.signal,t.value),t.addEventListener(r,i),GI(a,t,r,i),e.set=o=>{t.value=o,t.dispatchEvent(function(u){return typeof Event<"u"?new Event(u):{type:u}}(r))}}function L$(e,t,n,a){let r=a.signal(n.signal),i=yi("div",{class:I$}),o=n.input==="radio"?i:i.appendChild(yi("label"));o.appendChild(yi("span",{class:O$},n.name||n.signal)),t.appendChild(i);let u=F$;switch(n.input){case"checkbox":u=P$;break;case"select":u=$$;break;case"radio":u=B$;break;case"range":u=U$}u(e,o,n,r)}function F$(e,t,n,a){let r=yi("input");for(let i in n)i!=="signal"&&i!=="element"&&r.setAttribute(i==="input"?"type":i,n[i]);r.setAttribute("name",n.signal),r.value=a,t.appendChild(r),r.addEventListener("input",()=>e.update(r.value)),e.elements=[r],e.set=i=>r.value=i}function P$(e,t,n,a){let r={type:"checkbox",name:n.signal};a&&(r.checked=!0);let i=yi("input",r);t.appendChild(i),i.addEventListener("change",()=>e.update(i.checked)),e.elements=[i],e.set=o=>i.checked=!!o||null}function $$(e,t,n,a){let r=yi("select",{name:n.signal}),i=n.labels||[];n.options.forEach((o,u)=>{let c={value:o};uw(o,a)&&(c.selected=!0),r.appendChild(yi("option",c,(i[u]||o)+""))}),t.appendChild(r),r.addEventListener("change",()=>{e.update(n.options[r.selectedIndex])}),e.elements=[r],e.set=o=>{for(let u=0,c=n.options.length;u<c;++u)if(uw(n.options[u],o))return void(r.selectedIndex=u)}}function B$(e,t,n,a){let r=yi("span",{class:D$}),i=n.labels||[];t.appendChild(r),e.elements=n.options.map((o,u)=>{let c={type:"radio",name:n.signal,value:o};uw(o,a)&&(c.checked=!0);let f=yi("input",c);f.addEventListener("change",()=>e.update(o));let m=yi("label",{},(i[u]||o)+"");return m.prepend(f),r.appendChild(m),f}),e.set=o=>{let u=e.elements,c=u.length;for(let f=0;f<c;++f)uw(u[f].value,o)&&(u[f].checked=!0)}}function U$(e,t,n,a){a=a!==void 0?a:(+n.max+ +n.min)/2;let r=n.max!=null?n.max:Math.max(100,+a)||100,i=n.min||Math.min(0,r,+a)||0,o=n.step||Ai(i,r,100),u=yi("input",{type:"range",name:n.signal,min:i,max:r,step:o});u.value=a;let c=yi("span",{},+a);t.appendChild(u),t.appendChild(c);let f=()=>{c.textContent=u.value,e.update(+u.value)};u.addEventListener("input",f),u.addEventListener("change",f),e.elements=[u],e.set=m=>{u.value=m,c.textContent=m}}function uw(e,t){return e===t||e+""==t+""}function WI(e,t,n,a,r,i){return(t=t||new a(e.loader())).initialize(n,BI(e),UI(e),sw(e),r,i).background(e.background())}function bS(e,t){return t?function(){try{t.apply(this,arguments)}catch(n){e.error(n)}}:null}function yS(e,t,n){if(typeof t=="string"){if(typeof document>"u")return e.error("DOM document instance not found."),null;if(!(t=document.querySelector(t)))return e.error("Signal bind element not found: "+t),null}if(t&&n)try{t.textContent=""}catch(a){t=null,e.error(a)}return t}let qb=e=>+e||0,z$=e=>({top:e,bottom:e,left:e,right:e});function VI(e){return ye(e)?{top:qb(e.top),bottom:qb(e.bottom),left:qb(e.left),right:qb(e.right)}:z$(qb(e))}async function vS(e,t,n,a){let r=Hv(t),i=r&&r.headless;return i||F("Unrecognized renderer type: "+t),await e.runAsync(),WI(e,null,null,i,n,a).renderAsync(e._scenegraph.root)}var YI="width",KI="height",ES="padding",XI={skip:!0};function ZI(e,t){var n=e.autosize(),a=e.padding();return t-(n&&n.contains===ES?a.left+a.right:0)}function JI(e,t){var n=e.autosize(),a=e.padding();return t-(n&&n.contains===ES?a.top+a.bottom:0)}function G$(e,t){return t.modified&&Ee(t.input.value)&&e.indexOf("_:vega:_")}function j$(e,t){return!(e==="parent"||t instanceof Js.proxy)}function H$(e,t,n,a){let r=e.element();r&&r.setAttribute("title",function(i){return i==null?"":Ee(i)?QI(i):ye(i)&&!En(i)?(o=i,Object.keys(o).map(u=>{let c=o[u];return u+": "+(Ee(c)?QI(c):eO(c))}).join(`
13
- `)):i+"";var o}(a))}function QI(e){return"["+e.map(eO).join(", ")+"]"}function eO(e){return Ee(e)?"[\u2026]":ye(e)&&!En(e)?"{\u2026}":e}function tO(e,t){let n=this;if(t=t||{},Zs.call(n),t.loader&&n.loader(t.loader),t.logger&&n.logger(t.logger),t.logLevel!=null&&n.logLevel(t.logLevel),t.locale||e.locale){let i=pt({},e.locale,t.locale);n.locale(Xh(i.number,i.time))}n._el=null,n._elBind=null,n._renderType=t.renderer||Lu.Canvas,n._scenegraph=new F1;let a=n._scenegraph.root;n._renderer=null,n._tooltip=t.tooltip||H$,n._redraw=!0,n._handler=new rb().scene(a),n._globalCursor=!1,n._preventDefault=!1,n._timers=[],n._eventListeners=[],n._resizeListeners=[],n._eventConfig=function(i){let o=pt({defaults:{}},i),u=(c,f)=>{f.forEach(m=>{Ee(c[m])&&(c[m]=rr(c[m]))})};return u(o.defaults,["prevent","allow"]),u(o,["view","window","selector"]),o}(e.eventConfig),n.globalCursor(n._eventConfig.globalCursor);let r=function(i,o,u){return LI(i,Js,jb,u).parse(o)}(n,e,t.expr);n._runtime=r,n._signals=r.signals,n._bind=(e.bindings||[]).map(i=>({state:null,param:pt({},i)})),r.root&&r.root.set(a),a.source=r.data.root.input,n.pulse(r.data.root.input,n.changeset().insert(a.items)),n._width=n.width(),n._height=n.height(),n._viewWidth=ZI(n,n._width),n._viewHeight=JI(n,n._height),n._origin=[0,0],n._resize=0,n._autosize=1,function(i){var o=i._signals,u=o[YI],c=o[KI],f=o[ES];function m(){i._autosize=i._resize=1}i._resizeWidth=i.add(null,v=>{i._width=v.size,i._viewWidth=ZI(i,v.size),m()},{size:u}),i._resizeHeight=i.add(null,v=>{i._height=v.size,i._viewHeight=JI(i,v.size),m()},{size:c});let g=i.add(null,m,{pad:f});i._resizeWidth.rank=u.rank+1,i._resizeHeight.rank=c.rank+1,g.rank=f.rank+1}(n),function(i){i.add(null,o=>(i._background=o.bg,i._resize=1,o.bg),{bg:i._signals.background})}(n),function(i){let o=i._signals.cursor||(i._signals.cursor=i.add({user:mS,item:null}));i.on(i.events("view","mousemove"),o,(u,c)=>{let f=o.value,m=f?Mt(f)?f:f.user:mS,g=c.item&&c.item.cursor||null;return f&&m===f.user&&g==f.item?f:{user:m,item:g}}),i.add(null,function(u){let c=u.cursor,f=this.value;return Mt(c)||(f=c.item,c=c.user),gS(i,c&&c!==mS?c:f||c),f},{cursor:o})}(n),n.description(e.description),t.hover&&n.hover(),t.container&&n.initialize(t.container,t.bind)}function cw(e,t){return et(e._signals,t)?e._signals[t]:F("Unrecognized signal name: "+it(t))}function nO(e,t){let n=(e._targets||[]).filter(a=>a._update&&a._update.handler===t);return n.length?n[0]:null}function aO(e,t,n,a){let r=nO(n,a);return r||(r=bS(e,()=>a(t,n.value)),r.handler=a,e.on(n,null,r)),e}function rO(e,t,n){let a=nO(t,n);return a&&t._targets.remove(a),e}Me(tO,Zs,{async evaluate(e,t,n){if(await Zs.prototype.evaluate.call(this,e,t),this._redraw||this._resize)try{this._renderer&&(this._resize&&(this._resize=0,function(a){var r=sw(a),i=BI(a),o=UI(a);a._renderer.background(a.background()),a._renderer.resize(i,o,r),a._handler.origin(r),a._resizeListeners.forEach(u=>{try{u(i,o)}catch(c){a.error(c)}})}(this)),await this._renderer.renderAsync(this._scenegraph.root)),this._redraw=!1}catch(a){this.error(a)}return n&&mn(this,n),this},dirty(e){this._redraw=!0,this._renderer&&this._renderer.dirty(e)},description(e){if(arguments.length){let t=e!=null?e+"":null;return t!==this._desc&&$I(this._el,this._desc=t),this}return this._desc},container(){return this._el},scenegraph(){return this._scenegraph},origin(){return this._origin.slice()},signal(e,t,n){let a=cw(this,e);return arguments.length===1?a.value:this.update(a,t,n)},width(e){return arguments.length?this.signal("width",e):this.signal("width")},height(e){return arguments.length?this.signal("height",e):this.signal("height")},padding(e){return arguments.length?this.signal("padding",VI(e)):VI(this.signal("padding"))},autosize(e){return arguments.length?this.signal("autosize",e):this.signal("autosize")},background(e){return arguments.length?this.signal("background",e):this.signal("background")},renderer(e){return arguments.length?(Hv(e)||F("Unrecognized renderer type: "+e),e!==this._renderType&&(this._renderType=e,this._resetRenderer()),this):this._renderType},tooltip(e){return arguments.length?(e!==this._tooltip&&(this._tooltip=e,this._resetRenderer()),this):this._tooltip},loader(e){return arguments.length?(e!==this._loader&&(Zs.prototype.loader.call(this,e),this._resetRenderer()),this):this._loader},resize(){return this._autosize=1,this.touch(cw(this,"autosize"))},_resetRenderer(){this._renderer&&(this._renderer=null,this.initialize(this._el,this._elBind))},_resizeView:function(e,t,n,a,r,i){this.runAfter(o=>{let u=0;o._autosize=0,o.width()!==n&&(u=1,o.signal(YI,n,XI),o._resizeWidth.skip(!0)),o.height()!==a&&(u=1,o.signal(KI,a,XI),o._resizeHeight.skip(!0)),o._viewWidth!==e&&(o._resize=1,o._viewWidth=e),o._viewHeight!==t&&(o._resize=1,o._viewHeight=t),o._origin[0]===r[0]&&o._origin[1]===r[1]||(o._resize=1,o._origin=r),u&&o.run("enter"),i&&o.runAfter(c=>c.resize())},!1,1)},addEventListener(e,t,n){let a=t;return n&&n.trap===!1||(a=bS(this,t),a.raw=t),this._handler.on(e,a),this},removeEventListener(e,t){for(var n,a,r=this._handler.handlers(e),i=r.length;--i>=0;)if(a=r[i].type,n=r[i].handler,e===a&&(t===n||t===n.raw)){this._handler.off(a,n);break}return this},addResizeListener(e){let t=this._resizeListeners;return t.indexOf(e)<0&&t.push(e),this},removeResizeListener(e){var t=this._resizeListeners,n=t.indexOf(e);return n>=0&&t.splice(n,1),this},addSignalListener(e,t){return aO(this,e,cw(this,e),t)},removeSignalListener(e,t){return rO(this,cw(this,e),t)},addDataListener(e,t){return aO(this,e,iw(this,e).values,t)},removeDataListener(e,t){return rO(this,iw(this,e).values,t)},globalCursor(e){if(arguments.length){if(this._globalCursor!==!!e){let t=gS(this,null);this._globalCursor=!!e,t&&gS(this,t)}return this}return this._globalCursor},preventDefault(e){return arguments.length?(this._preventDefault=e,this):this._preventDefault},timer:function(e,t){this._timers.push(function(n,a,r){var i=new PE,o=a;return a==null?(i.restart(n,a,r),i):(i._restart=i.restart,i.restart=function(u,c,f){c=+c,f=f==null?lx():+f,i._restart(function m(g){g+=o,i._restart(m,o+=c,f),u(g)},c,f)},i.restart(n,a,r),i)}(function(n){e({timestamp:Date.now(),elapsed:n})},t))},events:function(e,t,n){var a,r=this,i=new Pi(n),o=function(f,m){r.runAsync(null,()=>{e===zI&&function(g,v){var E=g._eventConfig.defaults,k=E.prevent,_=E.allow;return k!==!1&&_!==!0&&(k===!0||_===!1||(k?k[v]:_?!_[v]:g.preventDefault()))}(r,t)&&f.preventDefault(),i.receive(T$(r,f,m))})};if(e===C$)lw(r,"timer",t)&&r.timer(o,t);else if(e===zI)lw(r,"view",t)&&r.addEventListener(t,o,N$);else if(e===R$?lw(r,"window",t)&&typeof window<"u"&&(a=[window]):typeof document<"u"&&lw(r,"selector",t)&&(a=Array.from(document.querySelectorAll(e))),a){for(var u=0,c=a.length;u<c;++u)a[u].addEventListener(t,o);GI(r,a,t,o)}else r.warn("Can not resolve event source: "+e);return i},finalize:function(){var e,t,n,a=this._tooltip,r=this._timers,i=this._eventListeners;for(e=r.length;--e>=0;)r[e].stop();for(e=i.length;--e>=0;)for(t=(n=i[e]).sources.length;--t>=0;)n.sources[t].removeEventListener(n.type,n.handler);return a&&a.call(this,this._handler,null,null,null),this},hover:function(e,t){return t=[t||"update",(e=[e||"hover"])[0]],this.on(this.events("view","mouseover",jI),HI,qI(e)),this.on(this.events("view","mouseout",jI),HI,qI(t)),this},data:function(e,t){return arguments.length<2?iw(this,e).values.value:ow.call(this,e,ss().remove(Z).insert(t))},change:ow,insert:function(e,t){return ow.call(this,e,ss().insert(t))},remove:function(e,t){return ow.call(this,e,ss().remove(t))},scale:function(e){var t=this._runtime.scales;return et(t,e)||F("Unrecognized scale or projection: "+e),t[e].value},initialize:function(e,t){let n=this,a=n._renderType,r=n._eventConfig.bind,i=Hv(a);e=n._el=e?yS(n,e,!0):null,function(c){let f=c.container();f&&(f.setAttribute("role","graphics-document"),f.setAttribute("aria-roleDescription","visualization"),$I(f,c.description()))}(n),i||n.error("Unrecognized renderer type: "+a);let o=i.handler||rb,u=e?i.renderer:i.headless;return n._renderer=u?WI(n,n._renderer,e,u):null,n._handler=function(c,f,m,g){let v=new g(c.loader(),bS(c,c.tooltip())).scene(c.scenegraph().root).initialize(m,sw(c),c);return f&&f.handlers().forEach(E=>{v.on(E.type,E.handler)}),v}(n,n._handler,e,o),n._redraw=!0,e&&r!=="none"&&(t=t?n._elBind=yS(n,t,!0):e.appendChild(yi("form",{class:"vega-bindings"})),n._bind.forEach(c=>{c.param.element&&r!=="container"&&(c.element=yS(n,c.param.element,!!c.param.input))}),n._bind.forEach(c=>{(function(f,m,g){if(!m)return;let v=g.param,E=g.state;E||(E=g.state={elements:null,active:!1,set:null,update:k=>{k!=f.signal(v.signal)&&f.runAsync(null,()=>{E.source=!0,f.signal(v.signal,k)})}},v.debounce&&(E.update=Ko(v.debounce,E.update))),(v.input==null&&v.element?M$:L$)(E,m,v,f),E.active||(f.on(f._signals[v.signal],null,()=>{E.source?E.source=!1:E.set(f.signal(v.signal))}),E.active=!0)})(n,c.element||t,c)})),n},toImageURL:async function(e,t){e!==Lu.Canvas&&e!==Lu.SVG&&e!==Lu.PNG&&F("Unrecognized image type: "+e);let n=await vS(this,e,t);return e===Lu.SVG?function(a,r){let i=new Blob([a],{type:r});return window.URL.createObjectURL(i)}(n.svg(),"image/svg+xml"):n.canvas().toDataURL("image/png")},toCanvas:async function(e,t){return(await vS(this,Lu.Canvas,e,t)).canvas()},toSVG:async function(e){return(await vS(this,Lu.SVG,e)).svg()},getState:function(e){return this._runtime.getState(e||{data:G$,signals:j$,recurse:!0})},setState:function(e){return this.runAsync(null,t=>{t._trigger=!1,t._runtime.setState(e)},t=>{t._trigger=!0}),this}});let q$="view",dw="[",fw="]",iO="{",oO="}",W$=":",sO=",",V$="@",Y$=">",K$=/[[\]{}]/,X$={"*":1,arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1},lO,uO;function cO(e,t,n){return lO=t||q$,uO=n||X$,dO(e.trim()).map(wS)}function Wb(e,t,n,a,r){let i=e.length,o,u=0;for(;t<i;++t){if(o=e[t],!u&&o===n)return t;r&&r.indexOf(o)>=0?--u:a&&a.indexOf(o)>=0&&++u}return t}function dO(e){let t=[],n=e.length,a=0,r=0;for(;r<n;)r=Wb(e,r,sO,dw+iO,fw+oO),t.push(e.substring(a,r).trim()),a=++r;if(t.length===0)throw"Empty event selector: "+e;return t}function wS(e){return e[0]==="["?function(t){let n=t.length,a,r=1;if(r=Wb(t,r,fw,dw,fw),r===n)throw"Empty between selector: "+t;if(a=dO(t.substring(1,r)),a.length!==2)throw"Between selector must have two elements: "+t;if(t=t.slice(r+1).trim(),t[0]!==Y$)throw"Expected '>' after between selector: "+t;a=a.map(wS);let i=wS(t.slice(1).trim());return i.between?{between:a,stream:i}:(i.between=a,i)}(e):function(t){let n={source:lO},a=[],r,i,o=[0,0],u=0,c=0,f=t.length,m=0;if(t[f-1]===oO){if(m=t.lastIndexOf(iO),!(m>=0))throw"Unmatched right brace: "+t;try{o=function(g){let v=g.split(sO);if(!g.length||v.length>2)throw g;return v.map(E=>{let k=+E;if(k!=k)throw g;return k})}(t.substring(m+1,f-1))}catch{throw"Invalid throttle specification: "+t}f=(t=t.slice(0,m).trim()).length,m=0}if(!f)throw t;if(t[0]===V$&&(u=++m),r=Wb(t,m,W$),r<f&&(a.push(t.substring(c,r).trim()),c=m=++r),m=Wb(t,m,dw),m===f)a.push(t.substring(c,f).trim());else if(a.push(t.substring(c,m).trim()),i=[],c=++m,c===f)throw"Unmatched left bracket: "+t;for(;m<f;){if(m=Wb(t,m,fw),m===f)throw"Unmatched left bracket: "+t;if(i.push(t.substring(c,m).trim()),m<f-1&&t[++m]!==dw)throw"Expected left bracket: "+t;c=++m}if(!(f=a.length)||K$.test(a[f-1]))throw"Invalid event selector: "+t;return f>1?(n.type=a[1],u?n.markname=a[0].slice(1):function(g){return uO[g]}(a[0])?n.marktype=a[0]:n.source=a[0]):n.type=a[0],n.type.slice(-1)==="!"&&(n.consume=!0,n.type=n.type.slice(0,-1)),i!=null&&(n.filter=i),o[0]&&(n.throttle=o[0]),o[1]&&(n.debounce=o[1]),n}(e)}function Z$(e){return ye(e)?e:{type:e||"pad"}}let Vb=e=>+e||0,J$=e=>({top:e,bottom:e,left:e,right:e});function Q$(e){return ye(e)?e.signal?e:{top:Vb(e.top),bottom:Vb(e.bottom),left:Vb(e.left),right:Vb(e.right)}:J$(Vb(e))}let ba=e=>ye(e)&&!Ee(e)?pt({},e):{value:e};function fO(e,t,n,a){return n!=null?(ye(n)&&!Ee(n)||Ee(n)&&n.length&&ye(n[0])?e.update[t]=n:e[a||"enter"][t]={value:n},1):0}function Ma(e,t,n){for(let a in t)fO(e,a,t[a]);for(let a in n)fO(e,a,n[a],"update")}function Zp(e,t,n){for(let a in t)n&&et(n,a)||(e[a]=pt(e[a]||{},t[a]));return e}function Jp(e,t){return t&&(t.enter&&t.enter[e]||t.update&&t.update[e])}let _S="mark",kS="frame",xS="scope",eB="axis",tB="axis-domain",nB="axis-grid",aB="axis-label",rB="axis-tick",iB="axis-title",oB="legend",sB="legend-band",lB="legend-entry",uB="legend-gradient",pO="legend-label",cB="legend-symbol",dB="legend-title",fB="title",pB="title-text",hB="title-subtitle";function SS(e,t,n){e[t]=n&&n.signal?{signal:n.signal}:{value:n}}let hO=e=>Mt(e)?it(e):e.signal?`(${e.signal})`:mO(e);function pw(e){if(e.gradient!=null)return function(n){let a=[n.start,n.stop,n.count].map(r=>r==null?null:it(r));for(;a.length&&Pe(a)==null;)a.pop();return a.unshift(hO(n.gradient)),`gradient(${a.join(",")})`}(e);let t=e.signal?`(${e.signal})`:e.color?function(n){return n.c?hw("hcl",n.h,n.c,n.l):n.h||n.s?hw("hsl",n.h,n.s,n.l):n.l||n.a?hw("lab",n.l,n.a,n.b):n.r||n.g||n.b?hw("rgb",n.r,n.g,n.b):null}(e.color):e.field!=null?mO(e.field):e.value!==void 0?it(e.value):void 0;return e.scale!=null&&(t=function(n,a){let r=hO(n.scale);return n.range!=null?a=`lerp(_range(${r}), ${+n.range})`:(a!==void 0&&(a=`_scale(${r}, ${a})`),n.band&&(a=(a?a+"+":"")+`_bandwidth(${r})`+(+n.band==1?"":"*"+mw(n.band)),n.extra&&(a=`(datum.extra ? _scale(${r}, datum.extra.value) : ${a})`)),a==null&&(a="0")),a}(e,t)),t===void 0&&(t=null),e.exponent!=null&&(t=`pow(${t},${mw(e.exponent)})`),e.mult!=null&&(t+=`*${mw(e.mult)}`),e.offset!=null&&(t+=`+${mw(e.offset)}`),e.round&&(t=`round(${t})`),t}let hw=(e,t,n,a)=>`(${e}(${[t,n,a].map(pw).join(",")})+'')`;function mw(e){return ye(e)?"("+pw(e)+")":e}function mO(e){return gO(ye(e)?e:{datum:e})}function gO(e){let t,n,a;if(e.signal)t="datum",a=e.signal;else if(e.group||e.parent){for(n=Math.max(1,e.level||1),t="item";n-- >0;)t+=".mark.group";e.parent?(a=e.parent,t+=".datum"):a=e.group}else e.datum?(t="datum",a=e.datum):F("Invalid field reference: "+it(e));return e.signal||(a=Mt(a)?j(a).map(it).join("]["):gO(a)),t+"["+a+"]"}function bO(e,t,n,a,r,i){let o={};(i=i||{}).encoders={$encode:o},e=function(u,c,f,m,g){let v={},E={},k,_,R,O;for(_ in _="lineBreak",c!=="text"||g[_]==null||Jp(_,u)||SS(v,_,g[_]),(f=="legend"||String(f).startsWith("axis"))&&(f=null),O=f===kS?g.group:f===_S?pt({},g.mark,g[c]):null,O)R=Jp(_,u)||(_==="fill"||_==="stroke")&&(Jp("fill",u)||Jp("stroke",u)),R||SS(v,_,O[_]);for(_ in Re(m).forEach(N=>{let $=g.style&&g.style[N];for(let M in $)Jp(M,u)||SS(v,M,$[M])}),u=pt({},u),v)O=v[_],O.signal?(k=k||{})[_]=O:E[_]=O;return u.enter=pt(E,u.enter),k&&(u.update=pt(k,u.update)),u}(e,t,n,a,r.config);for(let u in e)o[u]=mB(e[u],t,i,r);return i}function mB(e,t,n,a){let r={},i={};for(let u in e)e[u]!=null&&(r[u]=gB((o=e[u],Ee(o)?function(c){let f="";return c.forEach(m=>{let g=pw(m);f+=m.test?`(${m.test})?${g}:`:g}),Pe(f)===":"&&(f+="null"),f}(o):pw(o)),a,n,i));var o;return{$expr:{marktype:t,channels:r},$fields:Object.keys(i),$output:Object.keys(e)}}function gB(e,t,n,a){let r=Os(e,t);return r.$fields.forEach(i=>a[i]=1),pt(n,r.$params),r.$expr}let bB="outer",yB=["value","update","init","react","bind"];function yO(e,t){F(e+' for "outer" push: '+it(t))}function vO(e,t){let n=e.name;if(e.push===bB)t.signals[n]||yO("No prior signal definition",n),yB.forEach(a=>{e[a]!==void 0&&yO("Invalid property ",a)});else{let a=t.addSignal(n,e.value);e.react===!1&&(a.react=!1),e.bind&&t.addBinding(n,e.bind)}}function AS(e,t,n,a){this.id=-1,this.type=e,this.value=t,this.params=n,a&&(this.parent=a)}function gw(e,t,n,a){return new AS(e,t,n,a)}function bw(e,t){return gw("operator",e,t)}function dt(e){let t={$ref:e.id};return e.id<0&&(e.refs=e.refs||[]).push(t),t}function Yb(e,t){return t?{$field:e,$name:t}:{$field:e}}let TS=Yb("key");function EO(e,t){return{$compare:e,$order:t}}let vB="descending";function yw(e,t){return(e&&e.signal?"$"+e.signal:e||"")+(e&&t?"_":"")+(t&&t.signal?"$"+t.signal:t||"")}let CS="scope",RS="view";function la(e){return e&&e.signal}function vw(e){if(la(e))return!0;if(ye(e)){for(let t in e)if(vw(e[t]))return!0}return!1}function jo(e,t){return e??t}function wd(e){return e&&e.signal||e}let wO="timer";function Kb(e,t){return(e.merge?EB:e.stream?wB:e.type?_B:F("Invalid stream specification: "+it(e)))(e,t)}function EB(e,t){let n=NS({merge:e.merge.map(a=>Kb(a,t))},e,t);return t.addStream(n).id}function wB(e,t){let n=NS({stream:Kb(e.stream,t)},e,t);return t.addStream(n).id}function _B(e,t){let n;e.type===wO?(n=t.event(wO,e.throttle),e={between:e.between,filter:e.filter}):n=t.event(function(r){return r===CS?RS:r||RS}(e.source),e.type);let a=NS({stream:n},e,t);return Object.keys(a).length===1?n:t.addStream(a).id}function NS(e,t,n){let a=t.between;return a&&(a.length!==2&&F('Stream "between" parameter must have 2 entries: '+it(t)),e.between=[Kb(a[0],n),Kb(a[1],n)]),a=t.filter?[].concat(t.filter):[],(t.marktype||t.markname||t.markrole)&&a.push(function(r,i,o){let u="event.item";return u+(r&&r!=="*"?"&&"+u+".mark.marktype==='"+r+"'":"")+(o?"&&"+u+".mark.role==='"+o+"'":"")+(i?"&&"+u+".mark.name==='"+i+"'":"")}(t.marktype,t.markname,t.markrole)),t.source===CS&&a.push("inScope(event.item)"),a.length&&(e.filter=Os("("+a.join(")&&(")+")",n).$expr),(a=t.throttle)!=null&&(e.throttle=+a),(a=t.debounce)!=null&&(e.debounce=+a),t.consume&&(e.consume=!0),e}let kB={code:"_.$value",ast:{type:"Identifier",value:"value"}};function xB(e,t,n){let a=e.encode,r={target:n},i=e.events,o=e.update,u=[];i||F("Signal update missing events specification."),Mt(i)&&(i=cO(i,t.isSubscope()?CS:RS)),i=Re(i).filter(c=>c.signal||c.scale?(u.push(c),0):1),u.length>1&&(u=[SB(u)]),i.length&&u.push(i.length>1?{merge:i}:i[0]),a!=null&&(o&&F("Signal encode and update are mutually exclusive."),o="encode(item(),"+it(a)+")"),r.update=Mt(o)?Os(o,t):o.expr!=null?Os(o.expr,t):o.value!=null?o.value:o.signal!=null?{$expr:kB,$params:{$value:t.signalRef(o.signal)}}:F("Invalid signal update specification."),e.force&&(r.options={force:!0}),u.forEach(c=>t.addUpdate(pt(function(f,m){return{source:f.signal?m.signalRef(f.signal):f.scale?m.scaleRef(f.scale):Kb(f,m)}}(c,t),r)))}function SB(e){return{signal:"["+e.map(t=>t.scale?'scale("'+t.scale+'")':t.signal)+"]"}}let nn=e=>(t,n,a)=>gw(e,n,t||void 0,a),_O=nn("aggregate"),AB=nn("axisticks"),kO=nn("bound"),Ho=nn("collect"),xO=nn("compare"),TB=nn("datajoin"),SO=nn("encode"),CB=nn("expression"),RB=nn("facet"),NB=nn("field"),IB=nn("key"),OB=nn("legendentries"),DB=nn("load"),MB=nn("mark"),LB=nn("multiextent"),FB=nn("multivalues"),PB=nn("overlap"),$B=nn("params"),AO=nn("prefacet"),BB=nn("projection"),UB=nn("proxy"),zB=nn("relay"),TO=nn("render"),GB=nn("scale"),_d=nn("sieve"),jB=nn("sortitems"),CO=nn("viewlayout"),HB=nn("values"),qB=0,RO={min:"min",max:"max",count:"sum"};function WB(e,t){let n=t.getScale(e.name).params,a;for(a in n.domain=NO(e.domain,e,t),e.range!=null&&(n.range=OO(e,t,n)),e.interpolate!=null&&function(r,i){i.interpolate=ao(r.type||r),r.gamma!=null&&(i.interpolateGamma=ao(r.gamma))}(e.interpolate,n),e.nice!=null&&(n.nice=function(r){return ye(r)?{interval:ao(r.interval),step:ao(r.step)}:ao(r)}(e.nice)),e.bins!=null&&(n.bins=function(r,i){return r.signal||Ee(r)?Ew(r,i):i.objectProperty(r)}(e.bins,t)),e)et(n,a)||a==="name"||(n[a]=ao(e[a],t))}function ao(e,t){return ye(e)?e.signal?t.signalRef(e.signal):F("Unsupported object: "+it(e)):e}function Ew(e,t){return e.signal?t.signalRef(e.signal):e.map(n=>ao(n,t))}function ww(e){F("Can not find data set: "+it(e))}function NO(e,t,n){if(e)return e.signal?n.signalRef(e.signal):(Ee(e)?VB:e.fields?KB:YB)(e,t,n);t.domainMin==null&&t.domainMax==null||F("No scale domain defined for domainMin/domainMax to override.")}function VB(e,t,n){return e.map(a=>ao(a,n))}function YB(e,t,n){let a=n.getData(e.data);return a||ww(e.data),ku(t.type)?a.valuesRef(n,e.field,IO(e.sort,!1)):fv(t.type)?a.domainRef(n,e.field):a.extentRef(n,e.field)}function KB(e,t,n){let a=e.data,r=e.fields.reduce((i,o)=>(o=Mt(o)?{data:a,field:o}:Ee(o)||o.signal?function(u,c){let f="_:vega:_"+qB++,m=Ho({});if(Ee(u))m.value={$ingest:u};else if(u.signal){let g="setdata("+it(f)+","+u.signal+")";m.params.input=c.signalRef(g)}return c.addDataPipeline(f,[m,_d({})]),{data:f,field:"data"}}(o,n):o,i.push(o),i),[]);return(ku(t.type)?XB:fv(t.type)?ZB:JB)(e,n,r)}function XB(e,t,n){let a=IO(e.sort,!0),r,i,o=n.map(f=>{let m=t.getData(f.data);return m||ww(f.data),m.countsRef(t,f.field,a)}),u={groupby:TS,pulse:o};a&&(r=a.op||"count",i=a.field?yw(r,a.field):"count",u.ops=[RO[r]],u.fields=[t.fieldRef(i)],u.as=[i]),r=t.add(_O(u));let c=t.add(Ho({pulse:dt(r)}));return i=t.add(HB({field:TS,sort:t.sortRef(a),pulse:dt(c)})),dt(i)}function IO(e,t){return e&&(e.field||e.op?e.field||e.op==="count"?t&&e.field&&e.op&&!RO[e.op]&&F("Multiple domain scales can not be sorted using "+e.op):F("No field provided for sort aggregate op: "+e.op):ye(e)?e.field="key":e={field:"key"}),e}function ZB(e,t,n){let a=n.map(r=>{let i=t.getData(r.data);return i||ww(r.data),i.domainRef(t,r.field)});return dt(t.add(FB({values:a})))}function JB(e,t,n){let a=n.map(r=>{let i=t.getData(r.data);return i||ww(r.data),i.extentRef(t,r.field)});return dt(t.add(LB({extents:a})))}function OO(e,t,n){let a=t.config.range,r=e.range;if(r.signal)return t.signalRef(r.signal);if(Mt(r)){if(a&&et(a,r))return OO(e=pt({},e,{range:a[r]}),t,n);r==="width"?r=[0,{signal:"width"}]:r==="height"?r=ku(e.type)?[0,{signal:"height"}]:[{signal:"height"},0]:F("Unrecognized scale range value: "+it(r))}else{if(r.scheme)return n.scheme=Ee(r.scheme)?Ew(r.scheme,t):ao(r.scheme,t),r.extent&&(n.schemeExtent=Ew(r.extent,t)),void(r.count&&(n.schemeCount=ao(r.count,t)));if(r.step)return void(n.rangeStep=ao(r.step,t));if(ku(e.type)&&!Ee(r))return NO(r,e,t);Ee(r)||F("Unsupported range type: "+it(r))}return r.map(i=>(Ee(i)?Ew:ao)(i,t))}function IS(e,t,n){return Ee(e)?e.map(a=>IS(a,t,n)):ye(e)?e.signal?n.signalRef(e.signal):t==="fit"?e:F("Unsupported parameter object: "+it(e)):e}let qo="top",Qp="left",eh="right",qu="bottom",DO="center",QB="vertical",eU="start",tU="end",OS="index",DS="label",nU="offset",th="perc",aU="perc2",ro="value",Xb="guide-label",MS="guide-title",rU="group-title",iU="group-subtitle",MO="symbol",_w="gradient",LS="discrete",FS="size",PS=[FS,"shape","fill","stroke","strokeWidth","strokeDash","opacity"],Zb={name:1,style:1,interactive:1},Ut={value:0},io={value:1},kw="group",LO="rect",$S="rule",oU="symbol",kd="text";function Jb(e){return e.type=kw,e.interactive=e.interactive||!1,e}function qr(e,t){let n=(a,r)=>jo(e[a],jo(t[a],r));return n.isVertical=a=>QB===jo(e.direction,t.direction||(a?t.symbolDirection:t.gradientDirection)),n.gradientLength=()=>jo(e.gradientLength,t.gradientLength||t.gradientWidth),n.gradientThickness=()=>jo(e.gradientThickness,t.gradientThickness||t.gradientHeight),n.entryColumns=()=>jo(e.columns,jo(t.columns,+n.isVertical(!0))),n}function FO(e,t){let n=t&&(t.update&&t.update[e]||t.enter&&t.enter[e]);return n&&n.signal?n:n?n.value:null}function xw(e,t,n){return`item.anchor === '${eU}' ? ${e} : item.anchor === '${tU}' ? ${t} : ${n}`}let BS=xw(it(Qp),it(eh),it(DO));function PO(e,t){return t?e?ye(e)?Object.assign({},e,{offset:PO(e.offset,t)}):{value:e,offset:t}:t:e}function vi(e,t){return t?(e.name=t.name,e.style=t.style||e.style,e.interactive=!!t.interactive,e.encode=Zp(e.encode,t,Zb)):e.interactive=!1,e}function sU(e,t,n,a){let r=qr(e,n),i=r.isVertical(),o=r.gradientThickness(),u=r.gradientLength(),c,f,m,g,v;i?(f=[0,1],m=[0,0],g=o,v=u):(f=[0,0],m=[1,0],g=u,v=o);let E={enter:c={opacity:Ut,x:Ut,y:Ut,width:ba(g),height:ba(v)},update:pt({},c,{opacity:io,fill:{gradient:t,start:f,stop:m}}),exit:{opacity:Ut}};return Ma(E,{stroke:r("gradientStrokeColor"),strokeWidth:r("gradientStrokeWidth")},{opacity:r("gradientOpacity")}),vi({type:LO,role:uB,encode:E},a)}function lU(e,t,n,a,r){let i=qr(e,n),o=i.isVertical(),u=i.gradientThickness(),c=i.gradientLength(),f,m,g,v,E="";o?(f="y",g="y2",m="x",v="width",E="1-"):(f="x",g="x2",m="y",v="height");let k={opacity:Ut,fill:{scale:t,field:ro}};k[f]={signal:E+"datum."+th,mult:c},k[m]=Ut,k[g]={signal:E+"datum."+aU,mult:c},k[v]=ba(u);let _={enter:k,update:pt({},k,{opacity:io}),exit:{opacity:Ut}};return Ma(_,{stroke:i("gradientStrokeColor"),strokeWidth:i("gradientStrokeWidth")},{opacity:i("gradientOpacity")}),vi({type:LO,role:sB,key:ro,from:r,encode:_},a)}let uU=`datum.${th}<=0?"${Qp}":datum.${th}>=1?"${eh}":"${DO}"`,cU=`datum.${th}<=0?"${qu}":datum.${th}>=1?"${qo}":"middle"`;function $O(e,t,n,a){let r=qr(e,t),i=r.isVertical(),o=ba(r.gradientThickness()),u=r.gradientLength(),c,f,m,g,v=r("labelOverlap"),E="",k={enter:c={opacity:Ut},update:f={opacity:io,text:{field:DS}},exit:{opacity:Ut}};return Ma(k,{fill:r("labelColor"),fillOpacity:r("labelOpacity"),font:r("labelFont"),fontSize:r("labelFontSize"),fontStyle:r("labelFontStyle"),fontWeight:r("labelFontWeight"),limit:jo(e.labelLimit,t.gradientLabelLimit)}),i?(c.align={value:"left"},c.baseline=f.baseline={signal:cU},m="y",g="x",E="1-"):(c.align=f.align={signal:uU},c.baseline={value:"top"},m="x",g="y"),c[m]=f[m]={signal:E+"datum."+th,mult:u},c[g]=f[g]=o,o.offset=jo(e.labelOffset,t.gradientLabelOffset)||0,v=v?{separation:r("labelSeparation"),method:v,order:"datum."+OS}:void 0,vi({type:kd,role:pO,style:Xb,key:ro,from:a,encode:k,overlap:v},n)}function dU(e,t,n,a,r){let i=qr(e,t),o=n.entries,u=!(!o||!o.interactive),c=o?o.name:void 0,f=i("clipHeight"),m=i("symbolOffset"),g={data:"value"},v=`(${r}) ? datum.${nU} : datum.${FS}`,E=f?ba(f):{field:FS},k=`datum.${OS}`,_=`max(1, ${r})`,R,O,N,$,M;E.mult=.5,R={enter:O={opacity:Ut,x:{signal:v,mult:.5,offset:m},y:E},update:N={opacity:io,x:O.x,y:O.y},exit:{opacity:Ut}};let U=null,z=null;e.fill||(U=t.symbolBaseFillColor,z=t.symbolBaseStrokeColor),Ma(R,{fill:i("symbolFillColor",U),shape:i("symbolType"),size:i("symbolSize"),stroke:i("symbolStrokeColor",z),strokeDash:i("symbolDash"),strokeDashOffset:i("symbolDashOffset"),strokeWidth:i("symbolStrokeWidth")},{opacity:i("symbolOpacity")}),PS.forEach(ne=>{e[ne]&&(N[ne]=O[ne]={scale:e[ne],field:ro})});let q=vi({type:oU,role:cB,key:ro,from:g,clip:!!f||void 0,encode:R},n.symbols),Y=ba(m);Y.offset=i("labelOffset"),R={enter:O={opacity:Ut,x:{signal:v,offset:Y},y:E},update:N={opacity:io,text:{field:DS},x:O.x,y:O.y},exit:{opacity:Ut}},Ma(R,{align:i("labelAlign"),baseline:i("labelBaseline"),fill:i("labelColor"),fillOpacity:i("labelOpacity"),font:i("labelFont"),fontSize:i("labelFontSize"),fontStyle:i("labelFontStyle"),fontWeight:i("labelFontWeight"),limit:i("labelLimit")});let K=vi({type:kd,role:pO,style:Xb,key:ro,from:g,encode:R},n.labels);return R={enter:{noBound:{value:!f},width:Ut,height:f?ba(f):Ut,opacity:Ut},exit:{opacity:Ut},update:N={opacity:io,row:{signal:null},column:{signal:null}}},i.isVertical(!0)?($=`ceil(item.mark.items.length / ${_})`,N.row.signal=`${k}%${$}`,N.column.signal=`floor(${k} / ${$})`,M={field:["row",k]}):(N.row.signal=`floor(${k} / ${_})`,N.column.signal=`${k} % ${_}`,M={field:k}),N.column.signal=`(${r})?${N.column.signal}:${k}`,Jb({role:xS,from:a={facet:{data:a,name:"value",groupby:OS}},encode:Zp(R,o,Zb),marks:[q,K],name:c,interactive:u,sort:M})}let US='item.orient === "left"',zS='item.orient === "right"',Sw=`(${US} || ${zS})`,fU=`datum.vgrad && ${Sw}`,pU=xw('"top"','"bottom"','"middle"'),hU=`datum.vgrad && ${zS} ? (${xw('"right"','"left"','"center"')}) : (${Sw} && !(datum.vgrad && ${US})) ? "left" : ${BS}`,mU=`item._anchor || (${Sw} ? "middle" : "start")`,gU=`${fU} ? (${US} ? -90 : 90) : 0`,bU=`${Sw} ? (datum.vgrad ? (${zS} ? "bottom" : "top") : ${pU}) : "top"`;function yU(e,t){let n;return ye(e)&&(e.signal?n=e.signal:e.path?n="pathShape("+BO(e.path)+")":e.sphere&&(n="geoShape("+BO(e.sphere)+', {type: "Sphere"})')),n?t.signalRef(n):!!e}function BO(e){return ye(e)&&e.signal?e.signal:it(e)}function UO(e){let t=e.role||"";return t.indexOf("axis")&&t.indexOf("legend")&&t.indexOf("title")?e.type===kw?xS:t||_S:t}function vU(e){return{marktype:e.type,name:e.name||void 0,role:e.role||UO(e),zindex:+e.zindex||void 0,aria:e.aria,description:e.description}}function EU(e,t){return e&&e.signal?t.signalRef(e.signal):e!==!1}function GS(e,t){let n=am(e.type);n||F("Unrecognized transform type: "+it(e.type));let a=gw(n.type.toLowerCase(),null,zO(n,e,t));return e.signal&&t.addSignal(e.signal,t.proxy(a)),a.metadata=n.metadata||{},a}function zO(e,t,n){let a={},r=e.params.length;for(let i=0;i<r;++i){let o=e.params[i];a[o.name]=wU(o,t,n)}return a}function wU(e,t,n){let a=e.type,r=t[e.name];return a==="index"?function(i,o,u){return Mt(o.from)||F('Lookup "from" parameter must be a string literal.'),u.getData(o.from).lookupRef(u,o.key)}(0,t,n):r!==void 0?a==="param"?function(i,o,u){let c=o[i.name];return i.array?(Ee(c)||F("Expected an array of sub-parameters. Instead: "+it(c)),c.map(f=>jO(i,f,u))):jO(i,c,u)}(e,t,n):a==="projection"?n.projectionRef(t[e.name]):e.array&&!la(r)?r.map(i=>GO(e,i,n)):GO(e,r,n):void(e.required&&F("Missing required "+it(t.type)+" parameter: "+it(e.name)))}function GO(e,t,n){let a=e.type;if(la(t))return HO(a)?F("Expression references can not be signals."):jS(a)?n.fieldRef(t):qO(a)?n.compareRef(t):n.signalRef(t.signal);{let r=e.expr||jS(a);return r&&_U(t)?n.exprRef(t.expr,t.as):r&&kU(t)?Yb(t.field,t.as):HO(a)?Os(t,n):xU(a)?dt(n.getData(t).values):jS(a)?Yb(t):qO(a)?n.compareRef(t):t}}function jO(e,t,n){let a=e.params.length,r;for(let o=0;o<a;++o){r=e.params[o];for(let u in r.key)if(r.key[u]!==t[u]){r=null;break}if(r)break}r||F("Unsupported parameter: "+it(t));let i=pt(zO(r,t,n),r.key);return dt(n.add($B(i)))}let _U=e=>e&&e.expr,kU=e=>e&&e.field,xU=e=>e==="data",HO=e=>e==="expr",jS=e=>e==="field",qO=e=>e==="compare";function Aw(e,t){return e.$ref?e:e.data&&e.data.$ref?e.data:dt(t.getData(e.data).output)}function xd(e,t,n,a,r){this.scope=e,this.input=t,this.output=n,this.values=a,this.aggregate=r,this.index={}}function WO(e){return Mt(e)?e:null}function VO(e,t,n){let a=yw(n.op,n.field),r;if(t.ops){for(let i=0,o=t.as.length;i<o;++i)if(t.as[i]===a)return}else t.ops=["count"],t.fields=[null],t.as=["count"];n.op&&(t.ops.push((r=n.op.signal)?e.signalRef(r):n.op),t.fields.push(e.fieldRef(n.field)),t.as.push(a))}function Qb(e,t,n,a,r,i,o){let u=t[n]||(t[n]={}),c=function(v){return ye(v)?(v.order===vB?"-":"+")+yw(v.op,v.field):""}(i),f,m,g=WO(r);if(g!=null&&(e=t.scope,g+=c?"|"+c:"",f=u[g]),!f){let v=i?{field:TS,pulse:t.countsRef(e,r,i)}:{field:e.fieldRef(r),pulse:dt(t.output)};c&&(v.sort=e.sortRef(i)),m=e.add(gw(a,void 0,v)),o&&(t.index[r]=m),f=dt(m),g!=null&&(u[g]=f)}return f}function YO(e,t,n){let a=e.remove,r=e.insert,i=e.toggle,o=e.modify,u=e.values,c=t.add(bw()),f=Os("if("+e.trigger+',modify("'+n+'",'+[r,a,i,o,u].map(m=>m??"null").join(",")+"),0)",t);c.update=f.$expr,c.params=f.$params}function Tw(e,t){let n=UO(e),a=e.type===kw,r=e.from&&e.from.facet,i=e.overlap,o,u,c,f,m,g,v,E=e.layout||n===xS||n===kS,k=n===_S||E||r,_=function(z,q,Y){let K,ne,X,ie,oe;return z?(K=z.facet)&&(q||F("Only group marks can be faceted."),K.field!=null?ie=oe=Aw(K,Y):(z.data?oe=dt(Y.getData(z.data).aggregate):(X=GS(pt({type:"aggregate",groupby:Re(K.groupby)},K.aggregate),Y),X.params.key=Y.keyRef(K.groupby),X.params.pulse=Aw(K,Y),ie=oe=dt(Y.add(X))),ne=Y.keyRef(K.groupby,!0))):ie=dt(Y.add(Ho(null,[{}]))),ie||(ie=Aw(z,Y)),{key:ne,pulse:ie,parent:oe}}(e.from,a,t);u=t.add(TB({key:_.key||(e.key?Yb(e.key):void 0),pulse:_.pulse,clean:!a}));let R=dt(u);u=c=t.add(Ho({pulse:R})),u=t.add(MB({markdef:vU(e),interactive:EU(e.interactive,t),clip:yU(e.clip,t),context:{$context:!0},groups:t.lookup(),parent:t.signals.parent?t.signalRef("parent"):null,index:t.markpath(),pulse:dt(u)}));let O=dt(u);u=f=t.add(SO(bO(e.encode,e.type,n,e.style,t,{mod:!1,pulse:O}))),u.params.parent=t.encode(),e.transform&&e.transform.forEach(z=>{let q=GS(z,t),Y=q.metadata;(Y.generates||Y.changes)&&F("Mark transforms should not generate new data."),Y.nomod||(f.params.mod=!0),q.params.pulse=dt(u),t.add(u=q)}),e.sort&&(u=t.add(jB({sort:t.compareRef(e.sort),pulse:dt(u)})));let N=dt(u);(r||E)&&(E=t.add(CO({layout:t.objectProperty(e.layout),legends:t.legends,mark:O,pulse:N})),g=dt(E));let $=t.add(kO({mark:O,pulse:g||N}));v=dt($),a&&(k&&(o=t.operators,o.pop(),E&&o.pop()),t.pushState(N,g||v,R),r?function(z,q,Y){let K=z.from.facet,ne=K.name,X=Aw(K,q),ie;K.name||F("Facet must have a name: "+it(K)),K.data||F("Facet must reference a data set: "+it(K)),K.field?ie=q.add(AO({field:q.fieldRef(K.field),pulse:X})):K.groupby?ie=q.add(RB({key:q.keyRef(K.groupby),group:dt(q.proxy(Y.parent)),pulse:X})):F("Facet must specify groupby or field: "+it(K));let oe=q.fork(),ue=oe.add(Ho()),ce=oe.add(_d({pulse:dt(ue)}));oe.addData(ne,new xd(oe,ue,ue,ce)),oe.addSignal("parent",null),ie.params.subflow={$subflow:oe.parse(z).toRuntime()}}(e,t,_):k?function(z,q,Y){let K=q.add(AO({pulse:Y.pulse})),ne=q.fork();ne.add(_d()),ne.addSignal("parent",null),K.params.subflow={$subflow:ne.parse(z).toRuntime()}}(e,t,_):t.parse(e),t.popState(),k&&(E&&o.push(E),o.push($))),i&&(v=function(z,q,Y){let K=z.method,ne=z.bound,X=z.separation,ie={separation:la(X)?Y.signalRef(X.signal):X,method:la(K)?Y.signalRef(K.signal):K,pulse:q};if(z.order&&(ie.sort=Y.compareRef({field:z.order})),ne){let oe=ne.tolerance;ie.boundTolerance=la(oe)?Y.signalRef(oe.signal):+oe,ie.boundScale=Y.scaleRef(ne.scale),ie.boundOrient=ne.orient}return dt(Y.add(PB(ie)))}(i,v,t));let M=t.add(TO({pulse:v})),U=t.add(_d({pulse:dt(M)},void 0,t.parent()));e.name!=null&&(m=e.name,t.addData(m,new xd(t,c,M,U)),e.on&&e.on.forEach(z=>{(z.insert||z.remove||z.toggle)&&F("Marks only support modify triggers."),YO(z,t,m)}))}function SU(e,t){let n=t.config.legend,a=e.encode||{},r=qr(e,n),i=a.legend||{},o=i.name||void 0,u=i.interactive,c=i.style,f={},m,g,v,E=0;PS.forEach(N=>e[N]?(f[N]=e[N],E=E||e[N]):0),E||F("Missing valid scale for legend.");let k=function(N,$){let M=N.type||MO;return N.type||function(U){return PS.reduce((z,q)=>z+(U[q]?1:0),0)}(N)!==1||!N.fill&&!N.stroke||(M=Bg($)?_w:Ug($)?LS:MO),M!==_w?M:Ug($)?LS:_w}(e,t.scaleType(E)),_={title:e.title!=null,scales:f,type:k,vgrad:k!=="symbol"&&r.isVertical()},R=dt(t.add(Ho(null,[_]))),O=dt(t.add(OB(g={type:k,scale:t.scaleRef(E),count:t.objectProperty(r("tickCount")),limit:t.property(r("symbolLimit")),values:t.objectProperty(e.values),minstep:t.property(e.tickMinStep),formatType:t.property(e.formatType),formatSpecifier:t.property(e.format)})));return k===_w?(v=[sU(e,E,n,a.gradient),$O(e,n,a.labels,O)],g.count=g.count||t.signalRef(`max(2,2*floor((${wd(r.gradientLength())})/100))`)):k===LS?v=[lU(e,E,n,a.gradient,O),$O(e,n,a.labels,O)]:(m=function(N,$){let M=qr(N,$);return{align:M("gridAlign"),columns:M.entryColumns(),center:{row:!0,column:!1},padding:{row:M("rowPadding"),column:M("columnPadding")}}}(e,n),v=[dU(e,n,a,O,wd(m.columns))],g.size=function(N,$,M){let U=wd(KO("size",N,M)),z=wd(KO("strokeWidth",N,M)),q=wd(function(Y,K,ne){return FO("fontSize",Y)||function(X,ie,oe){let ue=ie.config.style[oe];return ue&&ue[X]}("fontSize",K,ne)}(M[1].encode,$,Xb));return Os(`max(ceil(sqrt(${U})+${z}),${q})`,$)}(e,t,v[0].marks)),v=[Jb({role:lB,from:R,encode:{enter:{x:{value:0},y:{value:0}}},marks:v,layout:m,interactive:u})],_.title&&v.push(function(N,$,M,U){let z=qr(N,$),q={enter:{opacity:Ut},update:{opacity:io,x:{field:{group:"padding"}},y:{field:{group:"padding"}}},exit:{opacity:Ut}};return Ma(q,{orient:z("titleOrient"),_anchor:z("titleAnchor"),anchor:{signal:mU},angle:{signal:gU},align:{signal:hU},baseline:{signal:bU},text:N.title,fill:z("titleColor"),fillOpacity:z("titleOpacity"),font:z("titleFont"),fontSize:z("titleFontSize"),fontStyle:z("titleFontStyle"),fontWeight:z("titleFontWeight"),limit:z("titleLimit"),lineHeight:z("titleLineHeight")},{align:z("titleAlign"),baseline:z("titleBaseline")}),vi({type:kd,role:dB,style:MS,from:U,encode:q},M)}(e,n,a.title,R)),Tw(Jb({role:oB,from:R,encode:Zp(AU(r,e,n),i,Zb),marks:v,aria:r("aria"),description:r("description"),zindex:r("zindex"),name:o,interactive:u,style:c}),t)}function AU(e,t,n){let a={enter:{},update:{}};return Ma(a,{orient:e("orient"),offset:e("offset"),padding:e("padding"),titlePadding:e("titlePadding"),cornerRadius:e("cornerRadius"),fill:e("fillColor"),stroke:e("strokeColor"),strokeWidth:n.strokeWidth,strokeDash:n.strokeDash,x:e("legendX"),y:e("legendY"),format:t.format,formatType:t.formatType}),a}function KO(e,t,n){return t[e]?`scale("${t[e]}",datum)`:FO(e,n[0].encode)}xd.fromEntries=function(e,t){let n=t.length,a=t[n-1],r=t[n-2],i=t[0],o=null,u=1;for(i&&i.type==="load"&&(i=t[1]),e.add(t[0]);u<n;++u)t[u].params.pulse=dt(t[u-1]),e.add(t[u]),t[u].type==="aggregate"&&(o=t[u]);return new xd(e,i,r,a,o)},xd.prototype={countsRef(e,t,n){let a=this,r=a.counts||(a.counts={}),i=WO(t),o,u,c;return i!=null&&(e=a.scope,o=r[i]),o?n&&n.field&&VO(e,o.agg.params,n):(c={groupby:e.fieldRef(t,"key"),pulse:dt(a.output)},n&&n.field&&VO(e,c,n),u=e.add(_O(c)),o=e.add(Ho({pulse:dt(u)})),o={agg:u,ref:dt(o)},i!=null&&(r[i]=o)),o.ref},tuplesRef(){return dt(this.values)},extentRef(e,t){return Qb(e,this,"extent","extent",t,!1)},domainRef(e,t){return Qb(e,this,"domain","values",t,!1)},valuesRef(e,t,n){return Qb(e,this,"vals","values",t,n||!0)},lookupRef(e,t){return Qb(e,this,"lookup","tupleindex",t,!1)},indataRef(e,t){return Qb(e,this,"indata","tupleindex",t,!0,!0)}};let TU=`item.orient==="${Qp}"?-90:item.orient==="${eh}"?90:0`;function CU(e,t){let n=qr(e=Mt(e)?{text:e}:e,t.config.title),a=e.encode||{},r=a.group||{},i=r.name||void 0,o=r.interactive,u=r.style,c=[],f=dt(t.add(Ho(null,[{}])));return c.push(function(m,g,v,E){let k={value:0},_=m.text,R={enter:{opacity:k},update:{opacity:{value:1}},exit:{opacity:k}};return Ma(R,{text:_,align:{signal:"item.mark.group.align"},angle:{signal:"item.mark.group.angle"},limit:{signal:"item.mark.group.limit"},baseline:"top",dx:g("dx"),dy:g("dy"),fill:g("color"),font:g("font"),fontSize:g("fontSize"),fontStyle:g("fontStyle"),fontWeight:g("fontWeight"),lineHeight:g("lineHeight")},{align:g("align"),angle:g("angle"),baseline:g("baseline")}),vi({type:kd,role:pB,style:rU,from:E,encode:R},v)}(e,n,function(m){let g=m.encode;return g&&g.title||pt({name:m.name,interactive:m.interactive,style:m.style},g)}(e),f)),e.subtitle&&c.push(function(m,g,v,E){let k={value:0},_=m.subtitle,R={enter:{opacity:k},update:{opacity:{value:1}},exit:{opacity:k}};return Ma(R,{text:_,align:{signal:"item.mark.group.align"},angle:{signal:"item.mark.group.angle"},limit:{signal:"item.mark.group.limit"},baseline:"top",dx:g("dx"),dy:g("dy"),fill:g("subtitleColor"),font:g("subtitleFont"),fontSize:g("subtitleFontSize"),fontStyle:g("subtitleFontStyle"),fontWeight:g("subtitleFontWeight"),lineHeight:g("subtitleLineHeight")},{align:g("align"),angle:g("angle"),baseline:g("baseline")}),vi({type:kd,role:hB,style:iU,from:E,encode:R},v)}(e,n,a.subtitle,f)),Tw(Jb({role:fB,from:f,encode:RU(n,r),marks:c,aria:n("aria"),description:n("description"),zindex:n("zindex"),name:i,interactive:o,style:u}),t)}function RU(e,t){let n={enter:{},update:{}};return Ma(n,{orient:e("orient"),anchor:e("anchor"),align:{signal:BS},angle:{signal:TU},limit:e("limit"),frame:e("frame"),offset:e("offset")||0,padding:e("subtitlePadding")}),Zp(n,t,Zb)}function NU(e,t){let n=[];e.transform&&e.transform.forEach(a=>{n.push(GS(a,t))}),e.on&&e.on.forEach(a=>{YO(a,t,e.name)}),t.addDataPipeline(e.name,function(a,r,i){let o=[],u,c,f,m,g,v=null,E=!1,k=!1;for(a.values?la(a.values)||vw(a.format)?(o.push(XO(r,a)),o.push(v=Sd())):o.push(v=Sd({$ingest:a.values,$format:a.format})):a.url?vw(a.url)||vw(a.format)?(o.push(XO(r,a)),o.push(v=Sd())):o.push(v=Sd({$request:a.url,$format:a.format})):a.source&&(v=u=Re(a.source).map(_=>dt(r.getData(_).output)),o.push(null)),c=0,f=i.length;c<f;++c)m=i[c],g=m.metadata,v||g.source||o.push(v=Sd()),o.push(m),g.generates&&(k=!0),g.modifies&&!k&&(E=!0),g.source?v=m:g.changes&&(v=null);return u&&(f=u.length-1,o[0]=zB({derive:E,pulse:f?u:u[0]}),(E||f)&&o.splice(1,0,Sd())),v||o.push(Sd()),o.push(_d({})),o}(e,t,n))}function Sd(e){let t=Ho({},e);return t.metadata={source:!0},t}function XO(e,t){return DB({url:t.url?e.property(t.url):void 0,async:t.async?e.property(t.async):void 0,values:t.values?e.property(t.values):void 0,format:e.objectProperty(t.format)})}let ZO=e=>e===qu||e===qo,Cw=(e,t,n)=>la(e)?MU(e.signal,t,n):e===Qp||e===qo?t:n,ya=(e,t,n)=>la(e)?OU(e.signal,t,n):ZO(e)?t:n,Wo=(e,t,n)=>la(e)?DU(e.signal,t,n):ZO(e)?n:t,JO=(e,t,n)=>la(e)?LU(e.signal,t,n):e===qo?{value:t}:{value:n},IU=(e,t,n)=>la(e)?FU(e.signal,t,n):e===eh?{value:t}:{value:n},OU=(e,t,n)=>QO(`${e} === '${qo}' || ${e} === '${qu}'`,t,n),DU=(e,t,n)=>QO(`${e} !== '${qo}' && ${e} !== '${qu}'`,t,n),MU=(e,t,n)=>HS(`${e} === '${Qp}' || ${e} === '${qo}'`,t,n),LU=(e,t,n)=>HS(`${e} === '${qo}'`,t,n),FU=(e,t,n)=>HS(`${e} === '${eh}'`,t,n),QO=(e,t,n)=>(t=t!=null?ba(t):t,n=n!=null?ba(n):n,eD(t)&&eD(n)?{signal:`${e} ? (${t=t?t.signal||it(t.value):null}) : (${n=n?n.signal||it(n.value):null})`}:[pt({test:e},t)].concat(n||[])),eD=e=>e==null||Object.keys(e).length===1,HS=(e,t,n)=>({signal:`${e} ? (${nh(t)}) : (${nh(n)})`}),PU=(e,t,n,a,r)=>({signal:(a!=null?`${e} === '${Qp}' ? (${nh(a)}) : `:"")+(n!=null?`${e} === '${qu}' ? (${nh(n)}) : `:"")+(r!=null?`${e} === '${eh}' ? (${nh(r)}) : `:"")+(t!=null?`${e} === '${qo}' ? (${nh(t)}) : `:"")+"(null)"}),nh=e=>la(e)?e.signal:e==null?null:it(e),$U=(e,t)=>t===0?0:la(e)?{signal:`(${e.signal}) * ${t}`}:{value:e*t},ah=(e,t)=>{let n=e.signal;return n&&n.endsWith("(null)")?{signal:n.slice(0,-6)+t.signal}:e};function rh(e,t,n,a){let r;if(t&&et(t,e))return t[e];if(et(n,e))return n[e];if(e.startsWith("title")){switch(e){case"titleColor":r="fill";break;case"titleFont":case"titleFontSize":case"titleFontWeight":r=e[5].toLowerCase()+e.slice(6)}return a[MS][r]}if(e.startsWith("label")){switch(e){case"labelColor":r="fill";break;case"labelFont":case"labelFontSize":r=e[5].toLowerCase()+e.slice(6)}return a[Xb][r]}return null}function tD(e){let t={};for(let n of e)if(n)for(let a in n)t[a]=1;return Object.keys(t)}function nD(e,t){return{scale:e.scale,range:t}}function BU(e,t,n,a,r){let i=qr(e,t),o=e.orient,u=e.gridScale,c=Cw(o,1,-1),f=function(N,$){if($!==1)if(ye(N)){let M=N=pt({},N);for(;M.mult!=null;){if(!ye(M.mult))return M.mult=la($)?{signal:`(${M.mult}) * (${$.signal})`}:M.mult*$,N;M=M.mult=pt({},M.mult)}M.mult=$}else N=la($)?{signal:`(${$.signal}) * (${N||0})`}:$*(N||0);return N}(e.offset,c),m,g,v,E={enter:m={opacity:Ut},update:v={opacity:io},exit:g={opacity:Ut}};Ma(E,{stroke:i("gridColor"),strokeCap:i("gridCap"),strokeDash:i("gridDash"),strokeDashOffset:i("gridDashOffset"),strokeOpacity:i("gridOpacity"),strokeWidth:i("gridWidth")});let k={scale:e.scale,field:ro,band:r.band,extra:r.extra,offset:r.offset,round:i("tickRound")},_=ya(o,{signal:"height"},{signal:"width"}),R=u?{scale:u,range:0,mult:c,offset:f}:{value:0,offset:f},O=u?{scale:u,range:1,mult:c,offset:f}:pt(_,{mult:c,offset:f});return m.x=v.x=ya(o,k,R),m.y=v.y=Wo(o,k,R),m.x2=v.x2=Wo(o,O),m.y2=v.y2=ya(o,O),g.x=ya(o,k),g.y=Wo(o,k),vi({type:$S,role:nB,key:ro,from:a,encode:E},n)}function qS(e,t,n,a,r){return{signal:'flush(range("'+e+'"), scale("'+e+'", datum.value), '+t+","+n+","+a+","+r+")"}}function UU(e,t,n,a){let r=qr(e,t),i=e.orient,o=Cw(i,-1,1),u,c,f={enter:u={opacity:Ut,anchor:ba(r("titleAnchor",null)),align:{signal:BS}},update:c=pt({},u,{opacity:io,text:ba(e.title)}),exit:{opacity:Ut}},m={signal:`lerp(range("${e.scale}"), ${xw(0,1,.5)})`};return c.x=ya(i,m),c.y=Wo(i,m),u.angle=ya(i,Ut,$U(o,90)),u.baseline=ya(i,JO(i,qu,qo),{value:qu}),c.angle=u.angle,c.baseline=u.baseline,Ma(f,{fill:r("titleColor"),fillOpacity:r("titleOpacity"),font:r("titleFont"),fontSize:r("titleFontSize"),fontStyle:r("titleFontStyle"),fontWeight:r("titleFontWeight"),limit:r("titleLimit"),lineHeight:r("titleLineHeight")},{align:r("titleAlign"),angle:r("titleAngle"),baseline:r("titleBaseline")}),function(g,v,E,k){let _=(N,$)=>N!=null?(E.update[$]=ah(ba(N),E.update[$]),!1):!Jp($,k),R=_(g("titleX"),"x"),O=_(g("titleY"),"y");E.enter.auto=O===R?ba(O):ya(v,ba(O),ba(R))}(r,i,f,n),f.update.align=ah(f.update.align,u.align),f.update.angle=ah(f.update.angle,u.angle),f.update.baseline=ah(f.update.baseline,u.baseline),vi({type:kd,role:iB,style:MS,from:a,encode:f},n)}function zU(e,t){let n=function(_,R){var O,N,$,M=R.config,U=M.style,z=M.axis,q=R.scaleType(_.scale)==="band"&&M.axisBand,Y=_.orient;if(la(Y)){let K=tD([M.axisX,M.axisY]),ne=tD([M.axisTop,M.axisBottom,M.axisLeft,M.axisRight]);for($ of(O={},K))O[$]=ya(Y,rh($,M.axisX,z,U),rh($,M.axisY,z,U));for($ of(N={},ne))N[$]=PU(Y.signal,rh($,M.axisTop,z,U),rh($,M.axisBottom,z,U),rh($,M.axisLeft,z,U),rh($,M.axisRight,z,U))}else O=Y===qo||Y===qu?M.axisX:M.axisY,N=M["axis"+Y[0].toUpperCase()+Y.slice(1)];return O||N||q?pt({},z,O,N,q):z}(e,t),a=e.encode||{},r=a.axis||{},i=r.name||void 0,o=r.interactive,u=r.style,c=qr(e,n),f=function(_){let R=_("tickBand"),O,N,$=_("tickOffset");return R?R.signal?(O={signal:`(${R.signal}) === 'extent' ? 1 : 0.5`},N={signal:`(${R.signal}) === 'extent'`},ye($)||($={signal:`(${R.signal}) === 'extent' ? 0 : ${$}`})):R==="extent"?(O=1,N=!0,$=0):(O=.5,N=!1):(O=_("bandPosition"),N=_("tickExtra")),{extra:N,band:O,offset:$}}(c),m={scale:e.scale,ticks:!!c("ticks"),labels:!!c("labels"),grid:!!c("grid"),domain:!!c("domain"),title:e.title!=null},g=dt(t.add(Ho({},[m]))),v=dt(t.add(AB({scale:t.scaleRef(e.scale),extra:t.property(f.extra),count:t.objectProperty(e.tickCount),values:t.objectProperty(e.values),minstep:t.property(e.tickMinStep),formatType:t.property(e.formatType),formatSpecifier:t.property(e.format)}))),E=[],k;return m.grid&&E.push(BU(e,n,a.grid,v,f)),m.ticks&&(k=c("tickSize"),E.push(function(_,R,O,N,$,M){let U=qr(_,R),z=_.orient,q=Cw(z,-1,1),Y,K,ne,X={enter:Y={opacity:Ut},update:ne={opacity:io},exit:K={opacity:Ut}};Ma(X,{stroke:U("tickColor"),strokeCap:U("tickCap"),strokeDash:U("tickDash"),strokeDashOffset:U("tickDashOffset"),strokeOpacity:U("tickOpacity"),strokeWidth:U("tickWidth")});let ie=ba($);ie.mult=q;let oe={scale:_.scale,field:ro,band:M.band,extra:M.extra,offset:M.offset,round:U("tickRound")};return ne.y=Y.y=ya(z,Ut,oe),ne.y2=Y.y2=ya(z,ie),K.x=ya(z,oe),ne.x=Y.x=Wo(z,Ut,oe),ne.x2=Y.x2=Wo(z,ie),K.y=Wo(z,oe),vi({type:$S,role:rB,key:ro,from:N,encode:X},O)}(e,n,a.ticks,v,k,f))),m.labels&&(k=m.ticks?k:0,E.push(function(_,R,O,N,$,M){let U=qr(_,R),z=_.orient,q=_.scale,Y=Cw(z,-1,1),K=wd(U("labelFlush")),ne=wd(U("labelFlushOffset")),X=U("labelAlign"),ie=U("labelBaseline"),oe,ue=K===0||!!K,ce=ba($);ce.mult=Y,ce.offset=ba(U("labelPadding")||0),ce.offset.mult=Y;let ve={scale:q,field:ro,band:.5,offset:PO(M.offset,U("labelOffset"))},_e=ya(z,ue?qS(q,K,'"left"','"right"','"center"'):{value:"center"},IU(z,"left","right")),Ie=ya(z,JO(z,"bottom","top"),ue?qS(q,K,'"top"','"bottom"','"middle"'):{value:"middle"}),Be=qS(q,K,`-(${ne})`,ne,0);ue=ue&&ne;let je={opacity:Ut,x:ya(z,ve,ce),y:Wo(z,ve,ce)},Oe={enter:je,update:oe={opacity:io,text:{field:DS},x:je.x,y:je.y,align:_e,baseline:Ie},exit:{opacity:Ut,x:je.x,y:je.y}};Ma(Oe,{dx:!X&&ue?ya(z,Be):null,dy:!ie&&ue?Wo(z,Be):null}),Ma(Oe,{angle:U("labelAngle"),fill:U("labelColor"),fillOpacity:U("labelOpacity"),font:U("labelFont"),fontSize:U("labelFontSize"),fontWeight:U("labelFontWeight"),fontStyle:U("labelFontStyle"),limit:U("labelLimit"),lineHeight:U("labelLineHeight")},{align:X,baseline:ie});let ot=U("labelBound"),st=U("labelOverlap");return st=st||ot?{separation:U("labelSeparation"),method:st,order:"datum.index",bound:ot?{scale:q,orient:z,tolerance:ot}:null}:void 0,oe.align!==_e&&(oe.align=ah(oe.align,_e)),oe.baseline!==Ie&&(oe.baseline=ah(oe.baseline,Ie)),vi({type:kd,role:aB,style:Xb,key:ro,from:N,encode:Oe,overlap:st},O)}(e,n,a.labels,v,k,f))),m.domain&&E.push(function(_,R,O,N){let $=qr(_,R),M=_.orient,U,z,q={enter:U={opacity:Ut},update:z={opacity:io},exit:{opacity:Ut}};Ma(q,{stroke:$("domainColor"),strokeCap:$("domainCap"),strokeDash:$("domainDash"),strokeDashOffset:$("domainDashOffset"),strokeWidth:$("domainWidth"),strokeOpacity:$("domainOpacity")});let Y=nD(_,0),K=nD(_,1);return U.x=z.x=ya(M,Y,Ut),U.x2=z.x2=ya(M,K),U.y=z.y=Wo(M,Y,Ut),U.y2=z.y2=Wo(M,K),vi({type:$S,role:tB,from:N,encode:q},O)}(e,n,a.domain,g)),m.title&&E.push(UU(e,n,a.title,g)),Tw(Jb({role:eB,from:g,encode:Zp(GU(c,e),r,Zb),marks:E,aria:c("aria"),description:c("description"),zindex:c("zindex"),name:i,interactive:o,style:u}),t)}function GU(e,t){let n={enter:{},update:{}};return Ma(n,{orient:e("orient"),offset:e("offset")||0,position:jo(t.position,0),titlePadding:e("titlePadding"),minExtent:e("minExtent"),maxExtent:e("maxExtent"),range:{signal:`abs(span(range("${t.scale}")))`},translate:e("translate"),format:t.format,formatType:t.formatType}),n}function aD(e,t,n){let a=Re(e.signals),r=Re(e.scales);return n||a.forEach(i=>vO(i,t)),Re(e.projections).forEach(i=>function(o,u){let c=u.config.projection||{},f={};for(let m in o)m!=="name"&&(f[m]=IS(o[m],m,u));for(let m in c)f[m]==null&&(f[m]=IS(c[m],m,u));u.addProjection(o.name,f)}(i,t)),r.forEach(i=>function(o,u){let c=o.type||"linear";cv(c)||F("Unrecognized scale type: "+it(c)),u.addScale(o.name,{type:c,domain:void 0})}(i,t)),Re(e.data).forEach(i=>NU(i,t)),r.forEach(i=>WB(i,t)),(n||a).forEach(i=>function(o,u){let c=u.getSignal(o.name),f=o.update;o.init&&(f?F("Signals can not include both init and update expressions."):(f=o.init,c.initonly=!0)),f&&(f=Os(f,u),c.update=f.$expr,c.params=f.$params),o.on&&o.on.forEach(m=>xB(m,u,c.id))}(i,t)),Re(e.axes).forEach(i=>zU(i,t)),Re(e.marks).forEach(i=>Tw(i,t)),Re(e.legends).forEach(i=>SU(i,t)),e.title&&CU(e.title,t),t.parseLambdas(),t}let jU=e=>Zp({enter:{x:{value:0},y:{value:0}},update:{width:{signal:"width"},height:{signal:"height"}}},e);function HU(e,t){let n=t.config,a=dt(t.root=t.add(bw())),r=function(f,m){let g=_=>jo(f[_],m[_]),v=[e0("background",g("background")),e0("autosize",Z$(g("autosize"))),e0("padding",Q$(g("padding"))),e0("width",g("width")||0),e0("height",g("height")||0)],E=v.reduce((_,R)=>(_[R.name]=R,_),{}),k={};return Re(f.signals).forEach(_=>{et(E,_.name)?_=pt(E[_.name],_):v.push(_),k[_.name]=_}),Re(m.signals).forEach(_=>{et(k,_.name)||et(E,_.name)||v.push(_)}),v}(e,n);r.forEach(f=>vO(f,t)),t.description=e.description||n.description,t.eventConfig=n.events,t.legends=t.objectProperty(n.legend&&n.legend.layout),t.locale=n.locale;let i=t.add(Ho()),o=t.add(SO(bO(jU(e.encode),kw,kS,e.style,t,{pulse:dt(i)}))),u=t.add(CO({layout:t.objectProperty(e.layout),legends:t.legends,autosize:t.signalRef("autosize"),mark:a,pulse:dt(o)}));t.operators.pop(),t.pushState(dt(o),dt(u),null),aD(e,t,r),t.operators.push(u);let c=t.add(kO({mark:a,pulse:dt(u)}));return c=t.add(TO({pulse:dt(c)})),c=t.add(_d({pulse:dt(c)})),t.addData("root",new xd(t,i,i,c)),t}function e0(e,t){return t&&t.signal?{name:e,update:t.signal}:{name:e,value:t}}function rD(e,t){this.config=e||{},this.options=t||{},this.bindings=[],this.field={},this.signals={},this.lambdas={},this.scales={},this.events={},this.data={},this.streams=[],this.updates=[],this.operators=[],this.eventConfig=null,this.locale=null,this._id=0,this._subid=0,this._nextsub=[0],this._parent=[],this._encode=[],this._lookup=[],this._markpath=[]}function iD(e){this.config=e.config,this.options=e.options,this.legends=e.legends,this.field=Object.create(e.field),this.signals=Object.create(e.signals),this.lambdas=Object.create(e.lambdas),this.scales=Object.create(e.scales),this.events=Object.create(e.events),this.data=Object.create(e.data),this.streams=[],this.updates=[],this.operators=[],this._id=0,this._subid=++e._nextsub[0],this._nextsub=e._nextsub,this._parent=e._parent.slice(),this._encode=e._encode.slice(),this._lookup=e._lookup.slice(),this._markpath=e._markpath}function WS(e){return(Ee(e)?qU:WU)(e)}function qU(e){let t=e.length,n="[";for(let a=0;a<t;++a){let r=e[a];n+=(a>0?",":"")+(ye(r)?r.signal||WS(r):it(r))}return n+"]"}function WU(e){let t,n,a="{",r=0;for(t in e)n=e[t],a+=(++r>1?",":"")+it(t)+":"+(ye(n)?n.signal||WS(n):it(n));return a+"}"}rD.prototype=iD.prototype={parse(e){return aD(e,this)},fork(){return new iD(this)},isSubscope(){return this._subid>0},toRuntime(){return this.finish(),{description:this.description,operators:this.operators,streams:this.streams,updates:this.updates,bindings:this.bindings,eventConfig:this.eventConfig,locale:this.locale}},id(){return(this._subid?this._subid+":":0)+this._id++},add(e){return this.operators.push(e),e.id=this.id(),e.refs&&(e.refs.forEach(t=>{t.$ref=e.id}),e.refs=null),e},proxy(e){let t=e instanceof AS?dt(e):e;return this.add(UB({value:t}))},addStream(e){return this.streams.push(e),e.id=this.id(),e},addUpdate(e){return this.updates.push(e),e},finish(){let e,t;for(e in this.root&&(this.root.root=!0),this.signals)this.signals[e].signal=e;for(e in this.scales)this.scales[e].scale=e;function n(a,r,i){let o,u;a&&(o=a.data||(a.data={}),u=o[r]||(o[r]=[]),u.push(i))}for(e in this.data){t=this.data[e],n(t.input,e,"input"),n(t.output,e,"output"),n(t.values,e,"values");for(let a in t.index)n(t.index[a],e,"index:"+a)}return this},pushState(e,t,n){this._encode.push(dt(this.add(_d({pulse:e})))),this._parent.push(t),this._lookup.push(n?dt(this.proxy(n)):null),this._markpath.push(-1)},popState(){this._encode.pop(),this._parent.pop(),this._lookup.pop(),this._markpath.pop()},parent(){return Pe(this._parent)},encode(){return Pe(this._encode)},lookup(){return Pe(this._lookup)},markpath(){let e=this._markpath;return++e[e.length-1]},fieldRef(e,t){if(Mt(e))return Yb(e,t);e.signal||F("Unsupported field reference: "+it(e));let n=e.signal,a=this.field[n];if(!a){let r={name:this.signalRef(n)};t&&(r.as=t),this.field[n]=a=dt(this.add(NB(r)))}return a},compareRef(e){let t=!1,n=i=>la(i)?(t=!0,this.signalRef(i.signal)):function(o){return o&&o.expr}(i)?(t=!0,this.exprRef(i.expr)):i,a=Re(e.field).map(n),r=Re(e.order).map(n);return t?dt(this.add(xO({fields:a,orders:r}))):EO(a,r)},keyRef(e,t){let n=!1,a=this.signals;return e=Re(e).map(r=>la(r)?(n=!0,dt(a[r.signal])):r),n?dt(this.add(IB({fields:e,flat:t}))):function(r,i){let o={$key:r};return i&&(o.$flat=!0),o}(e,t)},sortRef(e){if(!e)return e;let t=yw(e.op,e.field),n=e.order||"ascending";return n.signal?dt(this.add(xO({fields:t,orders:this.signalRef(n.signal)}))):EO(t,n)},event(e,t){let n=e+":"+t;if(!this.events[n]){let a=this.id();this.streams.push({id:a,source:e,type:t}),this.events[n]=a}return this.events[n]},hasOwnSignal(e){return et(this.signals,e)},addSignal(e,t){this.hasOwnSignal(e)&&F("Duplicate signal name: "+it(e));let n=t instanceof AS?t:this.add(bw(t));return this.signals[e]=n},getSignal(e){return this.signals[e]||F("Unrecognized signal name: "+it(e)),this.signals[e]},signalRef(e){return this.signals[e]?dt(this.signals[e]):(et(this.lambdas,e)||(this.lambdas[e]=this.add(bw(null))),dt(this.lambdas[e]))},parseLambdas(){let e=Object.keys(this.lambdas);for(let t=0,n=e.length;t<n;++t){let a=e[t],r=Os(a,this),i=this.lambdas[a];i.params=r.$params,i.update=r.$expr}},property(e){return e&&e.signal?this.signalRef(e.signal):e},objectProperty(e){return e&&ye(e)?this.signalRef(e.signal||WS(e)):e},exprRef(e,t){let n={expr:Os(e,this)};return t&&(n.expr.$name=t),dt(this.add(CB(n)))},addBinding(e,t){this.bindings||F("Nested signals do not support binding: "+it(e)),this.bindings.push(pt({signal:e},t))},addScaleProj(e,t){et(this.scales,e)&&F("Duplicate scale or projection name: "+it(e)),this.scales[e]=this.add(t)},addScale(e,t){this.addScaleProj(e,GB(t))},addProjection(e,t){this.addScaleProj(e,BB(t))},getScale(e){return this.scales[e]||F("Unrecognized scale name: "+it(e)),this.scales[e]},scaleRef(e){return dt(this.getScale(e))},scaleType(e){return this.getScale(e).params.type},projectionRef(e){return this.scaleRef(e)},projectionType(e){return this.scaleType(e)},addData(e,t){return et(this.data,e)&&F("Duplicate data set name: "+it(e)),this.data[e]=t},getData(e){return this.data[e]||F("Undefined data set name: "+it(e)),this.data[e]},addDataPipeline(e,t){return et(this.data,e)&&F("Duplicate data set name: "+it(e)),this.addData(e,xd.fromEntries(this,t))}},pt(Js,Vf,G2,Q2,BL,oF,UF,NF,zF,nP,cP,pP),p.Bounds=Rn,p.CanvasHandler=rb,p.CanvasRenderer=Uv,p.DATE=pa,p.DAY=ta,p.DAYOFYEAR=Ni,p.Dataflow=Zs,p.Debug=Le,p.Error=me,p.EventStream=Pi,p.Gradient=ut,p.GroupItem=gl,p.HOURS=za,p.Handler=Du,p.Info=Ne,p.Item=Oo,p.MILLISECONDS=Or,p.MINUTES=sr,p.MONTH=ea,p.Marks=mi,p.MultiPulse=gc,p.None=pe,p.Operator=Vt,p.Parameters=hc,p.Pulse=ii,p.QUARTER=Sa,p.RenderType=Lu,p.Renderer=As,p.ResourceLoader=bl,p.SECONDS=lr,p.SVGHandler=z1,p.SVGRenderer=Y1,p.SVGStringRenderer=X1,p.Scenegraph=F1,p.TIME_UNITS=Bd,p.Transform=xe,p.View=tO,p.WEEK=An,p.Warn=Ae,p.YEAR=Qn,p.accessor=b,p.accessorFields=T,p.accessorName=x,p.array=Re,p.ascending=Jt,p.bandwidthNRD=om,p.bin=sm,p.bootstrapCI=lm,p.boundClip=GT,p.boundContext=Kg,p.boundItem=L1,p.boundMark=iT,p.boundStroke=vl,p.changeset=ss,p.clampRange=Ye,p.codegenExpression=pI,p.compare=Ml,p.constant=dn,p.cumulativeLogNormal=dr,p.cumulativeNormal=yc,p.cumulativeUniform=wc,p.dayofyear=C0,p.debounce=Ko,p.defaultLocale=cf,p.definition=am,p.densityLogNormal=Af,p.densityNormal=um,p.densityUniform=Rf,p.domChild=Br,p.domClear=Fo,p.domCreate=Ou,p.domFind=P1,p.dotbin=xf,p.error=F,p.expressionFunction=Kn,p.extend=pt,p.extent=$n,p.extentIndex=nr,p.falsy=te,p.fastmap=ca,p.field=W,p.flush=ar,p.font=Iv,p.fontFamily=eb,p.fontSize=Ss,p.format=fc,p.formatLocale=cc,p.formats=is,p.hasOwnProperty=et,p.id=V,p.identity=Q,p.inferType=Zh,p.inferTypes=Jh,p.ingest=Rt,p.inherits=Me,p.inrange=_a,p.interpolate=zg,p.interpolateColors=Sp,p.interpolateRange=pv,p.intersect=$T,p.intersectBoxLine=Np,p.intersectPath=v1,p.intersectPoint=E1,p.intersectRule=HA,p.isArray=Ee,p.isBoolean=Xr,p.isDate=En,p.isFunction=Je,p.isIterable=wi,p.isNumber=Pa,p.isObject=ye,p.isRegExp=_i,p.isString=Mt,p.isTuple=nu,p.key=ki,p.lerp=lo,p.lineHeight=Nu,p.loader=Ks,p.locale=Xh,p.logger=ze,p.lruCache=Ll,p.markup=V1,p.merge=Fs,p.mergeConfig=Se,p.multiLineOffset=O1,p.one=he,p.pad=Vu,p.panLinear=_t,p.panLog=St,p.panPow=Kt,p.panSymlog=Ve,p.parse=function(e,t,n){return ye(e)||F("Input Vega specification must be an object."),HU(e,new rD(t=Se(function(){let a="sans-serif",r="#4c78a8",i="#000",o="#888",u="#ddd";return{description:"Vega visualization",padding:0,autosize:"pad",background:null,events:{defaults:{allow:["wheel"]}},group:null,mark:null,arc:{fill:r},area:{fill:r},image:null,line:{stroke:r,strokeWidth:2},path:{stroke:r},rect:{fill:r},rule:{stroke:i},shape:{stroke:r},symbol:{fill:r,size:64},text:{fill:i,font:a,fontSize:11},trail:{fill:r,size:2},style:{"guide-label":{fill:i,font:a,fontSize:10},"guide-title":{fill:i,font:a,fontSize:11,fontWeight:"bold"},"group-title":{fill:i,font:a,fontSize:13,fontWeight:"bold"},"group-subtitle":{fill:i,font:a,fontSize:12},point:{size:30,strokeWidth:2,shape:"circle"},circle:{size:30,strokeWidth:2},square:{size:30,strokeWidth:2,shape:"square"},cell:{fill:"transparent",stroke:u},view:{fill:"transparent"}},title:{orient:"top",anchor:"middle",offset:4,subtitlePadding:3},axis:{minExtent:0,maxExtent:200,bandPosition:.5,domain:!0,domainWidth:1,domainColor:o,grid:!1,gridWidth:1,gridColor:u,labels:!0,labelAngle:0,labelLimit:180,labelOffset:0,labelPadding:2,ticks:!0,tickColor:o,tickOffset:0,tickRound:!0,tickSize:5,tickWidth:1,titlePadding:4},axisBand:{tickOffset:-.5},projection:{type:"mercator"},legend:{orient:"right",padding:0,gridAlign:"each",columnPadding:10,rowPadding:2,symbolDirection:"vertical",gradientDirection:"vertical",gradientLength:200,gradientThickness:16,gradientStrokeColor:u,gradientStrokeWidth:0,gradientLabelOffset:2,labelAlign:"left",labelBaseline:"middle",labelLimit:160,labelOffset:4,labelOverlap:!0,symbolLimit:30,symbolType:"circle",symbolSize:100,symbolOffset:0,symbolStrokeWidth:1.5,symbolBaseFillColor:"transparent",symbolBaseStrokeColor:o,titleLimit:180,titleOrient:"top",titlePadding:5,layout:{offset:18,direction:"horizontal",left:{direction:"vertical"},right:{direction:"vertical"}}},range:{category:{scheme:"tableau10"},ordinal:{scheme:"blues"},heatmap:{scheme:"yellowgreenblue"},ramp:{scheme:"blues"},diverging:{scheme:"blueorange",extent:[1,0]},symbol:["circle","square","triangle-up","cross","diamond","triangle-right","triangle-down","triangle-left"]}}}(),t,e.config),n)).toRuntime()},p.parseExpression=cI,p.parseSelector=cO,p.path=Nc,p.pathCurves=Xe,p.pathEqual=jT,p.pathParse=Bt,p.pathRectangle=Wg,p.pathRender=Ya,p.pathSymbols=Ka,p.pathTrail=Vg,p.peek=Pe,p.point=Dv,p.projection=Vk,p.quantileLogNormal=fm,p.quantileNormal=vc,p.quantileUniform=uu,p.quantiles=im,p.quantizeInterpolator=hv,p.quarter=At,p.quartiles=kf,p.randomInteger=function(e,t){let n,a,r;t==null&&(t=e,e=0);let i={min(o){return arguments.length?(n=o||0,r=a-n,i):n},max(o){return arguments.length?(a=o||0,r=a-n,i):a},sample:()=>n+Math.floor(r*p.random()),pdf:o=>o===Math.floor(o)&&o>=n&&o<a?1/r:0,cdf(o){let u=Math.floor(o);return u<n?0:u>=a?1:(u-n+1)/r},icdf:o=>o>=0&&o<=1?n-1+Math.floor(o*r):NaN};return i.min(e).max(t)},p.randomKDE=dm,p.randomLCG=function(e){return function(){return(e=(1103515245*e+12345)%2147483647)/2147483647}},p.randomLogNormal=Tf,p.randomMixture=Cf,p.randomNormal=cm,p.randomUniform=Nf,p.read=mf,p.regressionConstant=If,p.regressionExp=pm,p.regressionLinear=cu,p.regressionLoess=gm,p.regressionLog=xc,p.regressionPoly=hm,p.regressionPow=uy,p.regressionQuad=oi,p.renderModule=Hv,p.repeat=uo,p.resetDefaultLocale=function(){return Yh(),dc(),cf()},p.resetSVGClipId=vv,p.resetSVGDefIds=function(){vv(),we=0},p.responseType=hf,p.runtimeContext=LI,p.sampleCurve=Of,p.sampleLogNormal=Sf,p.sampleNormal=lu,p.sampleUniform=Ec,p.scale=Pt,p.sceneEqual=J1,p.sceneFromJSON=sT,p.scenePickVisit=Av,p.sceneToJSON=oT,p.sceneVisit=Mo,p.sceneZOrder=w1,p.scheme=Tp,p.serializeXML=RT,p.setRandom=function(e){p.random=e},p.span=Zr,p.splitAccessPath=j,p.stringValue=it,p.textMetrics=Lo,p.timeBin=ni,p.timeFloor=D0,p.timeFormatLocale=Ys,p.timeInterval=ts,p.timeOffset=Wd,p.timeSequence=Oh,p.timeUnitSpecifier=zd,p.timeUnits=Ud,p.toBoolean=Fl,p.toDate=Od,p.toNumber=De,p.toSet=rr,p.toString=Dd,p.transform=rm,p.transforms=Js,p.truncate=ph,p.truthy=Z,p.tupleid=at,p.typeParsers=ur,p.utcFloor=qd,p.utcInterval=Dr,p.utcOffset=F0,p.utcSequence=Dh,p.utcdayofyear=Rh,p.utcquarter=ft,p.utcweek=Nh,p.version="5.25.0",p.visitArray=Zo,p.week=Gd,p.writeConfig=ke,p.zero=ae,p.zoomLinear=Xt,p.zoomLog=yt,p.zoomPow=Zt,p.zoomSymlog=Dt})});var XD=YS((Bw,KD)=>{(function(p,b){typeof Bw=="object"&&typeof KD<"u"?b(Bw,uA()):typeof define=="function"&&define.amd?define(["exports","vega"],b):b((p=typeof globalThis<"u"?globalThis:p||self).vegaLite={},p.vega)})(Bw,function(p,b){"use strict";var x="5.16.1";function T(l){return!!l.or}function I(l){return!!l.and}function B(l){return!!l.not}function P(l,s){if(B(l))P(l.not,s);else if(I(l))for(let d of l.and)P(d,s);else if(T(l))for(let d of l.or)P(d,s);else s(l)}function F(l,s){return B(l)?{not:F(l.not,s)}:I(l)?{and:l.and.map(d=>F(d,s))}:T(l)?{or:l.or.map(d=>F(d,s))}:s(l)}let j=globalThis.structuredClone;function W(l){throw new Error(l)}function V(l,s){let d={};for(let h of s)b.hasOwnProperty(l,h)&&(d[h]=l[h]);return d}function Q(l,s){let d={...l};for(let h of s)delete d[h];return d}function ae(l){if(b.isNumber(l))return l;let s=b.isString(l)?l:Ye(l);if(s.length<250)return s;let d=0;for(let h=0;h<s.length;h++)d=(d<<5)-d+s.charCodeAt(h),d&=d;return d}function he(l){return l===!1||l===null}function Z(l,s){return l.includes(s)}function te(l,s){let d=0;for(let[h,y]of l.entries())if(s(y,h,d++))return!0;return!1}function le(l,s){let d=0;for(let[h,y]of l.entries())if(!s(y,h,d++))return!1;return!0}function pe(l){for(var s=arguments.length,d=new Array(s>1?s-1:0),h=1;h<s;h++)d[h-1]=arguments[h];for(let y of d)me(l,y??{});return l}function me(l,s){for(let d of be(s))b.writeConfig(l,d,s[d],!0)}function Ae(l,s){let d=[],h={},y;for(let w of l)y=s(w),y in h||(h[y]=1,d.push(w));return d}function Ne(l,s){if(l.size!==s.size)return!1;for(let d of l)if(!s.has(d))return!1;return!0}function Le(l,s){for(let d of l)if(s.has(d))return!0;return!1}function ze(l){let s=new Set;for(let d of l){let h=b.splitAccessPath(d).map((w,S)=>S===0?w:`[${w}]`),y=h.map((w,S)=>h.slice(0,S+1).join(""));for(let w of y)s.add(w)}return s}function Ee(l,s){return l===void 0||s===void 0||Le(ze(l),ze(s))}function ye(l){return be(l).length===0}Set.prototype.toJSON=function(){return`Set(${[...this].map(l=>Ye(l)).join(",")})`};let be=Object.keys,Se=Object.values,ke=Object.entries;function We(l){return l===!0||l===!1}function Pe(l){let s=l.replace(/\W/g,"_");return(l.match(/^\d+/)?"_":"")+s}function De(l,s){return B(l)?`!(${De(l.not,s)})`:I(l)?`(${l.and.map(d=>De(d,s)).join(") && (")})`:T(l)?`(${l.or.map(d=>De(d,s)).join(") || (")})`:s(l)}function lt(l,s){if(s.length===0)return!0;let d=s.shift();return d in l&&lt(l[d],s)&&delete l[d],ye(l)}function gt(l){return l.charAt(0).toUpperCase()+l.substr(1)}function kt(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"datum",d=b.splitAccessPath(l),h=[];for(let y=1;y<=d.length;y++){let w=`[${d.slice(0,y).map(b.stringValue).join("][")}]`;h.push(`${s}${w}`)}return h.join(" && ")}function an(l){return`${arguments.length>1&&arguments[1]!==void 0?arguments[1]:"datum"}[${b.stringValue(b.splitAccessPath(l).join("."))}]`}function cn(l){return l.replace(/(\[|\]|\.|'|")/g,"\\$1")}function Gt(l){return`${b.splitAccessPath(l).map(cn).join("\\.")}`}function _t(l,s,d){return l.replace(new RegExp(s.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"g"),d)}function St(l){return`${b.splitAccessPath(l).join(".")}`}function Kt(l){return l?b.splitAccessPath(l).length:0}function Ve(){for(var l=arguments.length,s=new Array(l),d=0;d<l;d++)s[d]=arguments[d];for(let h of s)if(h!==void 0)return h}let Ze=42;function Xt(l){let s=++Ze;return l?String(l)+s:s}function yt(l){return Zt(l)?l:`__${l}`}function Zt(l){return l.startsWith("__")}function Dt(l){if(l!==void 0)return(l%360+360)%360}function At(l){return!!b.isNumber(l)||!isNaN(l)&&!isNaN(parseFloat(l))}let ft=Object.getPrototypeOf(globalThis.structuredClone({}));function Re(l,s){if(l===s)return!0;if(l&&s&&typeof l=="object"&&typeof s=="object"){if(l.constructor.name!==s.constructor.name)return!1;let d,h;if(Array.isArray(l)){if(d=l.length,d!=s.length)return!1;for(h=d;h--!=0;)if(!Re(l[h],s[h]))return!1;return!0}if(l instanceof Map&&s instanceof Map){if(l.size!==s.size)return!1;for(h of l.entries())if(!s.has(h[0]))return!1;for(h of l.entries())if(!Re(h[1],s.get(h[0])))return!1;return!0}if(l instanceof Set&&s instanceof Set){if(l.size!==s.size)return!1;for(h of l.entries())if(!s.has(h[0]))return!1;return!0}if(ArrayBuffer.isView(l)&&ArrayBuffer.isView(s)){if(d=l.length,d!=s.length)return!1;for(h=d;h--!=0;)if(l[h]!==s[h])return!1;return!0}if(l.constructor===RegExp)return l.source===s.source&&l.flags===s.flags;if(l.valueOf!==Object.prototype.valueOf&&l.valueOf!==ft.valueOf)return l.valueOf()===s.valueOf();if(l.toString!==Object.prototype.toString&&l.toString!==ft.toString)return l.toString()===s.toString();let y=Object.keys(l);if(d=y.length,d!==Object.keys(s).length)return!1;for(h=d;h--!=0;)if(!Object.prototype.hasOwnProperty.call(s,y[h]))return!1;for(h=d;h--!=0;){let w=y[h];if(!Re(l[w],s[w]))return!1}return!0}return l!=l&&s!=s}function Ye(l){let s=[];return function d(h){if(h&&h.toJSON&&typeof h.toJSON=="function"&&(h=h.toJSON()),h===void 0)return;if(typeof h=="number")return isFinite(h)?""+h:"null";if(typeof h!="object")return JSON.stringify(h);let y,w;if(Array.isArray(h)){for(w="[",y=0;y<h.length;y++)y&&(w+=","),w+=d(h[y])||"null";return w+"]"}if(h===null)return"null";if(s.includes(h))throw new TypeError("Converting circular structure to JSON");let S=s.push(h)-1,A=Object.keys(h).sort();for(w="",y=0;y<A.length;y++){let C=A[y],L=d(h[C]);L&&(w&&(w+=","),w+=JSON.stringify(C)+":"+L)}return s.splice(S,1),`{${w}}`}(l)}let Je="row",Yr="column",Ml="facet",Jt="x",Pn="y",Kr="x2",Ei="y2",dn="xOffset",Ko="yOffset",pt="radius",$n="radius2",nr="theta",so="theta2",et="latitude",Fa="longitude",ca="latitude2",ar="longitude2",Me="color",_a="fill",Xr="stroke",En="shape",wi="size",Pa="angle",_i="opacity",Mt="fillOpacity",ki="strokeOpacity",lo="strokeWidth",Xo="strokeDash",Ll="text",Fs="order",uo="detail",Vu="key",Zr="tooltip",it="href",Fl="url",Id="description",Od={theta:1,theta2:1,radius:1,radius2:1};function Dd(l){return l in Od}let rr={longitude:1,longitude2:1,latitude:1,latitude2:1};function ph(l){switch(l){case et:return"y";case ca:return"y2";case Fa:return"x";case ar:return"x2"}}function Zo(l){return l in rr}let u0=be(rr),Yu={x:1,y:1,x2:1,y2:1,...Od,...rr,xOffset:1,yOffset:1,color:1,fill:1,stroke:1,opacity:1,fillOpacity:1,strokeOpacity:1,strokeWidth:1,strokeDash:1,size:1,angle:1,shape:1,order:1,text:1,detail:1,key:1,tooltip:1,href:1,url:1,description:1};function Jo(l){return l===Me||l===_a||l===Xr}let Pl={row:1,column:1,facet:1},$a=be(Pl),Md={...Yu,...Pl},c0=be(Md),{order:ir,detail:SA,tooltip:AA,...a_}=Md,{row:TA,column:r_,facet:i_,...o_}=a_;function d0(l){return!!Md[l]}let s_=[Kr,Ei,ca,ar,so,$n];function xi(l){return Ps(l)!==l}function Ps(l){switch(l){case Kr:return Jt;case Ei:return Pn;case ca:return et;case ar:return Fa;case so:return nr;case $n:return pt}return l}function or(l){if(Dd(l))switch(l){case nr:return"startAngle";case so:return"endAngle";case pt:return"outerRadius";case $n:return"innerRadius"}return l}function Si(l){switch(l){case Jt:return Kr;case Pn:return Ei;case et:return ca;case Fa:return ar;case nr:return so;case pt:return $n}}function ka(l){switch(l){case Jt:case Kr:return"width";case Pn:case Ei:return"height"}}function hh(l){switch(l){case Jt:return"xOffset";case Pn:return"yOffset";case Kr:return"x2Offset";case Ei:return"y2Offset";case nr:return"thetaOffset";case pt:return"radiusOffset";case so:return"theta2Offset";case $n:return"radius2Offset"}}function $l(l){switch(l){case Jt:return"xOffset";case Pn:return"yOffset"}}function l_(l){switch(l){case"xOffset":return"x";case"yOffset":return"y"}}let Ku=be(Yu),{x:Ba,y:u_,x2:mh,y2:f0,xOffset:c_,yOffset:d_,latitude:f_,longitude:p_,latitude2:CA,longitude2:RA,theta:NA,theta2:gh,radius:p0,radius2:h0,...Ai}=Yu,$s=be(Ai),Xu={x:1,y:1},Jr=be(Xu);function sn(l){return l in Xu}let Zu={theta:1,radius:1},m0=be(Zu);function Ju(l){return l==="width"?Jt:Pn}let bh={xOffset:1,yOffset:1};function Zn(l){return l in bh}let{text:h_,tooltip:IA,href:yh,url:Qu,description:m_,detail:OA,key:Bl,order:g0,...vh}=Ai,b0=be(vh),Eh={...Xu,...Zu,...bh,...vh},Ul=be(Eh);function Rr(l){return!!Eh[l]}function wh(l,s){return function(d){switch(d){case Me:case _a:case Xr:case Id:case uo:case Vu:case Zr:case it:case Fs:case _i:case Mt:case ki:case lo:case Ml:case Je:case Yr:return _h;case Jt:case Pn:case dn:case Ko:case et:case Fa:return y0;case Kr:case Ei:case ca:case ar:return{area:"always",bar:"always",image:"always",rect:"always",rule:"always",circle:"binned",point:"binned",square:"binned",tick:"binned",line:"binned",trail:"binned"};case wi:return{point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",text:"always",line:"always",trail:"always"};case Xo:return{line:"always",point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",geoshape:"always"};case En:return{point:"always",geoshape:"always"};case Ll:return{text:"always"};case Pa:return{point:"always",square:"always",text:"always"};case Fl:return{image:"always"};case nr:case pt:return{text:"always",arc:"always"};case so:case $n:return{arc:"always"}}}(l)[s]}let _h={arc:"always",area:"always",bar:"always",circle:"always",geoshape:"always",image:"always",line:"always",rule:"always",point:"always",rect:"always",square:"always",trail:"always",text:"always",tick:"always"},{geoshape:g_,...y0}=_h;function Ld(l){switch(l){case Jt:case Pn:case nr:case pt:case dn:case Ko:case wi:case Pa:case lo:case _i:case Mt:case ki:case Kr:case Ei:case so:case $n:return;case Ml:case Je:case Yr:case En:case Xo:case Ll:case Zr:case it:case Fl:case Id:return"discrete";case Me:case _a:case Xr:return"flexible";case et:case Fa:case ca:case ar:case uo:case Vu:case Fs:return}}let v0={argmax:1,argmin:1,average:1,count:1,distinct:1,product:1,max:1,mean:1,median:1,min:1,missing:1,q1:1,q3:1,ci0:1,ci1:1,stderr:1,stdev:1,stdevp:1,sum:1,valid:1,values:1,variance:1,variancep:1},E0={count:1,min:1,max:1};function Qr(l){return!!l&&!!l.argmin}function Ti(l){return!!l&&!!l.argmax}function wn(l){return b.isString(l)&&!!v0[l]}let zl=new Set(["count","valid","missing","distinct"]);function Ci(l){return b.isString(l)&&zl.has(l)}let Nr=new Set(["count","sum","distinct","valid","missing"]),co=new Set(["mean","average","median","q1","q3","min","max"]);function Ri(l){return b.isBoolean(l)&&(l=at(l,void 0)),"bin"+be(l).map(s=>Ir(l[s])?Pe(`_${s}_${ke(l[s])}`):Pe(`_${s}_${l[s]}`)).join("")}function Wt(l){return l===!0||fo(l)&&!l.binned}function Bn(l){return l==="binned"||fo(l)&&l.binned===!0}function fo(l){return b.isObject(l)}function Ir(l){return l?.param}function ec(l){switch(l){case Je:case Yr:case wi:case Me:case _a:case Xr:case lo:case _i:case Mt:case ki:case En:return 6;case Xo:return 4;default:return 10}}function Qo(l){return!!l?.expr}function Jn(l){let s=be(l||{}),d={};for(let h of s)d[h]=Un(l[h]);return d}function tc(l){let{anchor:s,frame:d,offset:h,orient:y,angle:w,limit:S,color:A,subtitleColor:C,subtitleFont:L,subtitleFontSize:G,subtitleFontStyle:H,subtitleFontWeight:J,subtitleLineHeight:re,subtitlePadding:ee,...se}=l,de={...s?{anchor:s}:{},...d?{frame:d}:{},...h?{offset:h}:{},...y?{orient:y}:{},...w!==void 0?{angle:w}:{},...S!==void 0?{limit:S}:{}},fe={...C?{subtitleColor:C}:{},...L?{subtitleFont:L}:{},...G?{subtitleFontSize:G}:{},...H?{subtitleFontStyle:H}:{},...J?{subtitleFontWeight:J}:{},...re?{subtitleLineHeight:re}:{},...ee?{subtitlePadding:ee}:{}};return{titleMarkConfig:{...se,...A?{fill:A}:{}},subtitleMarkConfig:V(l,["align","baseline","dx","dy","limit"]),nonMarkTitleProperties:de,subtitle:fe}}function da(l){return b.isString(l)||b.isArray(l)&&b.isString(l[0])}function Ke(l){return!!l?.signal}function po(l){return!!l.step}function xa(l){return!b.isArray(l)&&"field"in l&&"data"in l}let Gl=be({aria:1,description:1,ariaRole:1,ariaRoleDescription:1,blend:1,opacity:1,fill:1,fillOpacity:1,stroke:1,strokeCap:1,strokeWidth:1,strokeOpacity:1,strokeDash:1,strokeDashOffset:1,strokeJoin:1,strokeOffset:1,strokeMiterLimit:1,startAngle:1,endAngle:1,padAngle:1,innerRadius:1,outerRadius:1,size:1,shape:1,interpolate:1,tension:1,orient:1,align:1,baseline:1,text:1,dir:1,dx:1,dy:1,ellipsis:1,limit:1,radius:1,theta:1,angle:1,font:1,fontSize:1,fontWeight:1,fontStyle:1,lineBreak:1,lineHeight:1,cursor:1,href:1,tooltip:1,cornerRadius:1,cornerRadiusTopLeft:1,cornerRadiusTopRight:1,cornerRadiusBottomLeft:1,cornerRadiusBottomRight:1,aspect:1,width:1,height:1,url:1,smooth:1}),Fd={arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1},kh=["cornerRadius","cornerRadiusTopLeft","cornerRadiusTopRight","cornerRadiusBottomLeft","cornerRadiusBottomRight"];function w0(l){let s=b.isArray(l.condition)?l.condition.map(_0):_0(l.condition);return{...Un(l),condition:s}}function Un(l){if(Qo(l)){let{expr:s,...d}=l;return{signal:s,...d}}return l}function _0(l){if(Qo(l)){let{expr:s,...d}=l;return{signal:s,...d}}return l}function rn(l){if(Qo(l)){let{expr:s,...d}=l;return{signal:s,...d}}return Ke(l)?l:l!==void 0?{value:l}:void 0}function es(l){return Ke(l)?l.signal:b.stringValue(l.value)}function fa(l){return Ke(l)?l.signal:l==null?null:b.stringValue(l)}function Pd(l,s,d){for(let h of d){let y=Ua(h,s.markDef,s.config);y!==void 0&&(l[h]=rn(y))}return l}function k0(l){return[].concat(l.type,l.style??[])}function jt(l,s,d){let h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},{vgChannel:y,ignoreVgConfig:w}=h;return y&&s[y]!==void 0?s[y]:s[l]!==void 0?s[l]:!w||y&&y!==l?Ua(l,s,d,h):void 0}function Ua(l,s,d){let{vgChannel:h}=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return Ve(h?$d(l,s,d.style):void 0,$d(l,s,d.style),h?d[s.type][h]:void 0,d[s.type][l],h?d.mark[h]:d.mark[l])}function $d(l,s,d){return x0(l,k0(s),d)}function x0(l,s,d){let h;s=b.array(s);for(let y of s){let w=d[y];w&&w[l]!==void 0&&(h=w[l])}return h}function jl(l,s){return b.array(l).reduce((d,h)=>(d.field.push(Ge(h,s)),d.order.push(h.sort??"ascending"),d),{field:[],order:[]})}function Hl(l,s){let d=[...l];return s.forEach(h=>{for(let y of d)if(Re(y,h))return;d.push(h)}),d}function ei(l,s){return Re(l,s)||!s?l:l?[...b.array(l),...b.array(s)].join(", "):s}function ti(l,s){let d=l.value,h=s.value;if(d==null||h===null)return{explicit:l.explicit,value:null};if((da(d)||Ke(d))&&(da(h)||Ke(h)))return{explicit:l.explicit,value:ei(d,h)};if(da(d)||Ke(d))return{explicit:l.explicit,value:d};if(da(h)||Ke(h))return{explicit:l.explicit,value:h};if(!(da(d)||Ke(d)||da(h)||Ke(h)))return{explicit:l.explicit,value:Hl(d,h)};throw new Error("It should never reach here")}function nt(l,s,d){return(s=function(h){var y=function(w,S){if(typeof w!="object"||w===null)return w;var A=w[Symbol.toPrimitive];if(A!==void 0){var C=A.call(w,S||"default");if(typeof C!="object")return C;throw new TypeError("@@toPrimitive must return a primitive value.")}return(S==="string"?String:Number)(w)}(h,"string");return typeof y=="symbol"?y:String(y)}(s))in l?Object.defineProperty(l,s,{value:d,enumerable:!0,configurable:!0,writable:!0}):l[s]=d,l}function S0(l,s,d){return function(h,y,w){if(y.set)y.set.call(h,w);else{if(!y.writable)throw new TypeError("attempted to set read only private field");y.value=w}}(l,A0(l,s,"set"),d),d}function A0(l,s,d){if(!s.has(l))throw new TypeError("attempted to "+d+" private field on non-instance");return s.get(l)}function b_(l,s,d){(function(h,y){if(y.has(h))throw new TypeError("Cannot initialize the same private elements twice on an object")})(l,s),s.set(l,d)}function xh(l){return`Invalid specification ${Ye(l)}. Make sure the specification includes at least one of the following properties: "mark", "layer", "facet", "hconcat", "vconcat", "concat", or "repeat".`}let Qn='Autosize "fit" only works for single views and layered views.';function Sa(l){return`${l=="width"?"Width":"Height"} "container" only works for single views and layered views.`}function ea(l){return`${l=="width"?"Width":"Height"} "container" only works well with autosize "fit" or "fit-${l=="width"?"x":"y"}".`}function An(l){return l?`Dropping "fit-${l}" because spec has discrete ${ka(l)}.`:'Dropping "fit" because spec has discrete size.'}function pa(l){return`Unknown field for ${l}. Cannot calculate view size.`}function ta(l){return`Cannot project a selection on encoding channel "${l}", which has no field.`}function Ni(l,s){return`Cannot project a selection on encoding channel "${l}" as it uses an aggregate function ("${s}").`}function za(l){return`Selection not supported for ${l} yet.`}let sr="The same selection must be used to override scale domains in a layered view.";function lr(l){return`The "columns" property cannot be used when "${l}" has nested row/column.`}function Or(l,s,d){return`An ancestor parsed field "${l}" as ${d} but a child wants to parse the field as ${s}.`}function Bd(l){return`Config.customFormatTypes is not true, thus custom format type and format for channel ${l} are dropped.`}function Sh(l){return`${l}Offset dropped because ${l} is continuous`}function Ud(l){return`Invalid field type "${l}".`}function T0(l,s){let{fill:d,stroke:h}=s;return`Dropping color ${l} as the plot also has ${d&&h?"fill and stroke":d?"fill":"stroke"}.`}function zd(l,s){return`Dropping ${Ye(l)} from channel "${s}" since it does not contain any data field, datum, value, or signal.`}function Ii(l,s,d){return`${l} dropped as it is incompatible with "${s}"${d?` when ${d}`:""}.`}function Ah(l){return`${l} encoding should be discrete (ordinal / nominal / binned).`}function C0(l){return`${l} encoding should be discrete (ordinal / nominal / binned) or use a discretizing scale (e.g. threshold).`}function Gd(l,s){return`Using discrete channel "${l}" to encode "${s}" field can be misleading as it does not encode ${s==="ordinal"?"order":"magnitude"}.`}function R0(l){return`Using unaggregated domain with raw field has no effect (${Ye(l)}).`}function Th(l){return`Unaggregated domain not applicable for "${l}" since it produces values outside the origin domain of the source data.`}function Ch(l){return`Unaggregated domain is currently unsupported for log scale (${Ye(l)}).`}function N0(l,s,d){return`${d}-scale's "${s}" is dropped as it does not work with ${l} scale.`}function Rh(l){return`The step for "${l}" is dropped because the ${l==="width"?"x":"y"} is continuous.`}let Nh="Domains that should be unioned has conflicting sort properties. Sort will be set to true.";function nc(l,s){return`Invalid ${l}: ${Ye(s)}.`}function jd(l){return`1D error band does not support ${l}.`}function Hd(l){return`Channel ${l} is required for "binned" bin.`}let I0=b.logger(b.Warn),ac=I0;function $e(){ac.warn(...arguments)}function Bs(l){if(l&&b.isObject(l)){for(let s of ts)if(s in l)return!0}return!1}let O0=["january","february","march","april","may","june","july","august","september","october","november","december"],D0=O0.map(l=>l.substr(0,3)),M0=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],y_=M0.map(l=>l.substr(0,3));function qd(l,s){let d=[];if(s&&l.day!==void 0&&be(l).length>1&&($e(function(h){return`Dropping day from datetime ${Ye(h)} as day cannot be combined with other units.`}(l)),delete(l=j(l)).day),l.year!==void 0?d.push(l.year):d.push(2012),l.month!==void 0){let h=s?function(y){if(At(y)&&(y=+y),b.isNumber(y))return y-1;{let w=y.toLowerCase(),S=O0.indexOf(w);if(S!==-1)return S;let A=w.substr(0,3),C=D0.indexOf(A);if(C!==-1)return C;throw new Error(nc("month",y))}}(l.month):l.month;d.push(h)}else if(l.quarter!==void 0){let h=s?function(y){if(At(y)&&(y=+y),b.isNumber(y))return y>4&&$e(nc("quarter",y)),y-1;throw new Error(nc("quarter",y))}(l.quarter):l.quarter;d.push(b.isNumber(h)?3*h:`${h}*3`)}else d.push(0);if(l.date!==void 0)d.push(l.date);else if(l.day!==void 0){let h=s?function(y){if(At(y)&&(y=+y),b.isNumber(y))return y%7;{let w=y.toLowerCase(),S=M0.indexOf(w);if(S!==-1)return S;let A=w.substr(0,3),C=y_.indexOf(A);if(C!==-1)return C;throw new Error(nc("day",y))}}(l.day):l.day;d.push(b.isNumber(h)?h+1:`${h}+1`)}else d.push(1);for(let h of["hours","minutes","seconds","milliseconds"]){let y=l[h];d.push(y===void 0?0:y)}return d}function Us(l){let s=qd(l,!0).join(", ");return l.utc?`utc(${s})`:`datetime(${s})`}let L0={year:1,quarter:1,month:1,week:1,day:1,dayofyear:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1},ts=be(L0);function Dr(l){return b.isObject(l)?l.binned:Ih(l)}function Ih(l){return l&&l.startsWith("binned")}function Wd(l){return l.startsWith("utc")}let F0={"year-month":"%b %Y ","year-month-date":"%b %d, %Y "};function rc(l){return ts.filter(s=>Dh(l,s))}function Oh(l){let s=rc(l);return s[s.length-1]}function Dh(l,s){let d=l.indexOf(s);return!(d<0)&&!(d>0&&s==="seconds"&&l.charAt(d-1)==="i")&&!(l.length>d+3&&s==="day"&&l.charAt(d+3)==="o")&&!(d>0&&s==="year"&&l.charAt(d-1)==="f")}function v_(l,s){let{end:d}=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{end:!1},h=kt(s),y=Wd(l)?"utc":"",w,S={};for(let C of ts)Dh(l,C)&&(S[C]=(A=C)==="quarter"?`(${y}quarter(${h})-1)`:`${y}${A}(${h})`,w=C);var A;return d&&(S[w]+="+1"),function(C){let L=qd(C,!1).join(", ");return C.utc?`utc(${L})`:`datetime(${L})`}(S)}function P0(l){if(l)return`timeUnitSpecifier(${Ye(rc(l))}, ${Ye(F0)})`}function zn(l){if(!l)return;let s;return b.isString(l)?s=Ih(l)?{unit:l.substring(6),binned:!0}:{unit:l}:b.isObject(l)&&(s={...l,...l.unit?{unit:l.unit}:{}}),Wd(s.unit)&&(s.utc=!0,s.unit=s.unit.substring(3)),s}function $0(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:y=>y,d=zn(l),h=Oh(d.unit);if(h&&h!=="day"){let y={year:2001,month:1,date:1,hours:0,minutes:0,seconds:0,milliseconds:0},{step:w,part:S}=Vd(h,d.step);return`${s(Us({...y,[S]:+y[S]+w}))} - ${s(Us(y))}`}}let E_={year:1,month:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1};function Vd(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;if(function(d){return!!E_[d]}(l))return{part:l,step:s};switch(l){case"day":case"dayofyear":return{part:"date",step:s};case"quarter":return{part:"month",step:3*s};case"week":return{part:"date",step:7*s}}}function Yd(l){return!!l?.field&&l.equal!==void 0}function zs(l){return!!l?.field&&l.lt!==void 0}function Gs(l){return!!l?.field&&l.lte!==void 0}function js(l){return!!l?.field&&l.gt!==void 0}function Mh(l){return!!l?.field&&l.gte!==void 0}function Kd(l){return!!(l?.field&&(b.isArray(l.range)&&l.range.length===2||Ke(l.range)))}function Xd(l){return!!l?.field&&(b.isArray(l.oneOf)||b.isArray(l.in))}function ql(l){return Xd(l)||Yd(l)||Kd(l)||zs(l)||js(l)||Gs(l)||Mh(l)}function ni(l,s){return au(l,{timeUnit:s,wrapTime:!0})}function Zd(l){let s=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],{field:d}=l,h=zn(l.timeUnit),{unit:y,binned:w}=h||{},S=Ge(l,{expr:"datum"}),A=y?`time(${w?S:v_(y,d)})`:S;if(Yd(l))return`${A}===${ni(l.equal,y)}`;if(zs(l))return`${A}<${ni(l.lt,y)}`;if(js(l))return`${A}>${ni(l.gt,y)}`;if(Gs(l))return`${A}<=${ni(l.lte,y)}`;if(Mh(l))return`${A}>=${ni(l.gte,y)}`;if(Xd(l))return`indexof([${function(C,L){return C.map(G=>ni(G,L))}(l.oneOf,y).join(",")}], ${A}) !== -1`;if(function(C){return!!C?.field&&C.valid!==void 0}(l))return ic(A,l.valid);if(Kd(l)){let{range:C}=l,L=Ke(C)?{signal:`${C.signal}[0]`}:C[0],G=Ke(C)?{signal:`${C.signal}[1]`}:C[1];if(L!==null&&G!==null&&s)return"inrange("+A+", ["+ni(L,y)+", "+ni(G,y)+"])";let H=[];return L!==null&&H.push(`${A} >= ${ni(L,y)}`),G!==null&&H.push(`${A} <= ${ni(G,y)}`),H.length>0?H.join(" && "):"true"}throw new Error(`Invalid field predicate: ${Ye(l)}`)}function ic(l){return!(arguments.length>1&&arguments[1]!==void 0)||arguments[1]?`isValid(${l}) && isFinite(+${l})`:`!isValid(${l}) || !isFinite(+${l})`}function oc(l){return ql(l)&&l.timeUnit?{...l,timeUnit:zn(l.timeUnit)}:l}function B0(l){return l==="quantitative"||l==="temporal"}function Wl(l){return l==="ordinal"||l==="nominal"}let ho="quantitative",Jd="ordinal",ns="temporal",Qd="nominal",Hs="geojson",zt={LINEAR:"linear",LOG:"log",POW:"pow",SQRT:"sqrt",SYMLOG:"symlog",IDENTITY:"identity",SEQUENTIAL:"sequential",TIME:"time",UTC:"utc",QUANTILE:"quantile",QUANTIZE:"quantize",THRESHOLD:"threshold",BIN_ORDINAL:"bin-ordinal",ORDINAL:"ordinal",POINT:"point",BAND:"band"},Lh={linear:"numeric",log:"numeric",pow:"numeric",sqrt:"numeric",symlog:"numeric",identity:"numeric",sequential:"numeric",time:"time",utc:"time",ordinal:"ordinal","bin-ordinal":"bin-ordinal",point:"ordinal-position",band:"ordinal-position",quantile:"discretizing",quantize:"discretizing",threshold:"discretizing"};function w_(l,s){let d=Lh[l],h=Lh[s];return d===h||d==="ordinal-position"&&h==="time"||h==="ordinal-position"&&d==="time"}let Lt={linear:0,log:1,pow:1,sqrt:1,symlog:1,identity:1,sequential:1,time:0,utc:0,point:10,band:11,ordinal:0,"bin-ordinal":0,quantile:0,quantize:0,threshold:0};function U0(l){return Lt[l]}let Vl=new Set(["linear","log","pow","sqrt","symlog"]),Yl=new Set([...Vl,"time","utc"]);function z0(l){return Vl.has(l)}let G0=new Set(["quantile","quantize","threshold"]),__=new Set([...Yl,...G0,"sequential","identity"]),k_=new Set(["ordinal","bin-ordinal","point","band"]);function Gn(l){return k_.has(l)}function Ga(l){return __.has(l)}function Mr(l){return Yl.has(l)}function Kl(l){return G0.has(l)}function j0(l){return l?.param}let{type:DA,domain:x_,range:MA,rangeMax:S_,rangeMin:LA,scheme:FA,...A_}={type:1,domain:1,domainMax:1,domainMin:1,domainMid:1,domainRaw:1,align:1,range:1,rangeMax:1,rangeMin:1,scheme:1,bins:1,reverse:1,round:1,clamp:1,nice:1,base:1,exponent:1,constant:1,interpolate:1,zero:1,padding:1,paddingInner:1,paddingOuter:1},T_=be(A_);function Fh(l,s){switch(s){case"type":case"domain":case"reverse":case"range":return!0;case"scheme":case"interpolate":return!["point","band","identity"].includes(l);case"bins":return!["point","band","identity","ordinal"].includes(l);case"round":return Mr(l)||l==="band"||l==="point";case"padding":case"rangeMin":case"rangeMax":return Mr(l)||["point","band"].includes(l);case"paddingOuter":case"align":return["point","band"].includes(l);case"paddingInner":return l==="band";case"domainMax":case"domainMid":case"domainMin":case"domainRaw":case"clamp":return Mr(l);case"nice":return Mr(l)||l==="quantize"||l==="threshold";case"exponent":return l==="pow";case"base":return l==="log";case"constant":return l==="symlog";case"zero":return Ga(l)&&!Z(["log","time","utc","threshold","quantile"],l)}}function H0(l,s){switch(s){case"interpolate":case"scheme":case"domainMid":return Jo(l)?void 0:`Cannot use the scale property "${s}" with non-color channel.`;case"align":case"type":case"bins":case"domain":case"domainMax":case"domainMin":case"domainRaw":case"range":case"base":case"exponent":case"constant":case"nice":case"padding":case"paddingInner":case"paddingOuter":case"rangeMax":case"rangeMin":case"reverse":case"round":case"clamp":case"zero":return}}let Aa={arc:"arc",area:"area",bar:"bar",image:"image",line:"line",point:"point",rect:"rect",rule:"rule",text:"text",tick:"tick",trail:"trail",circle:"circle",square:"square",geoshape:"geoshape"},Ph=Aa.arc,ef=Aa.area,tf=Aa.bar,C_=Aa.image,sc=Aa.line,nf=Aa.point,R_=Aa.rect,af=Aa.rule,q0=Aa.text,$h=Aa.tick,N_=Aa.trail,rf=Aa.circle,Bh=Aa.square,W0=Aa.geoshape;function as(l){return["line","area","trail"].includes(l)}function lc(l){return["rect","bar","image","arc"].includes(l)}let I_=new Set(be(Aa));function Oi(l){return l.type}let O_=["stroke","strokeWidth","strokeDash","strokeDashOffset","strokeOpacity","strokeJoin","strokeMiterLimit","fill","fillOpacity"],V0=be({color:1,filled:1,invalid:1,order:1,radius2:1,theta2:1,timeUnitBandSize:1,timeUnitBandPosition:1}),Uh=be({mark:1,arc:1,area:1,bar:1,circle:1,image:1,line:1,point:1,rect:1,rule:1,square:1,text:1,tick:1,trail:1,geoshape:1});function qs(l){return l&&l.band!=null}let D_={horizontal:["cornerRadiusTopRight","cornerRadiusBottomRight"],vertical:["cornerRadiusTopLeft","cornerRadiusTopRight"]},M_={binSpacing:1,continuousBandSize:5,minBandSize:.25,timeUnitBandPosition:.5},Y0={binSpacing:0,continuousBandSize:5,minBandSize:.25,timeUnitBandPosition:.5};function zh(l){let{channel:s,channelDef:d,markDef:h,scale:y,config:w}=l,S=jh(l);return Ue(d)&&!Ci(d.aggregate)&&y&&Mr(y.get("type"))?function(A){let{fieldDef:C,channel:L,markDef:G,ref:H,config:J}=A;return as(G.type)?H:jt("invalid",G,J)===null?[L_(C,L),H]:H}({fieldDef:d,channel:s,markDef:h,ref:S,config:w}):S}function L_(l,s){return{test:Gh(l,!0),...Ps(s)==="y"?{field:{group:"height"}}:{value:0}}}function Gh(l){let s=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return ic(b.isString(l)?l:Ge(l,{expr:"datum"}),!s)}function Ws(l,s,d,h){let y={};if(s&&(y.scale=s),Mi(l)){let{datum:w}=l;Bs(w)?y.signal=Us(w):Ke(w)?y.signal=w.signal:Qo(w)?y.signal=w.expr:y.value=w}else y.field=Ge(l,d);if(h){let{offset:w,band:S}=h;w&&(y.offset=w),S&&(y.band=S)}return y}function of(l){let{scaleName:s,fieldOrDatumDef:d,fieldOrDatumDef2:h,offset:y,startSuffix:w,endSuffix:S="end",bandPosition:A=.5}=l,C=!Ke(A)&&0<A&&A<1?"datum":void 0,L=Ge(d,{expr:C,suffix:w}),G=h!==void 0?Ge(h,{expr:C}):Ge(d,{suffix:S,expr:C}),H={};if(A===0||A===1){H.scale=s;let J=A===0?L:G;H.field=J}else{let J=Ke(A)?`(1-${A.signal}) * ${L} + ${A.signal} * ${G}`:`${1-A} * ${L} + ${A} * ${G}`;H.signal=`scale("${s}", ${J})`}return y&&(H.offset=y),H}function jh(l){let{channel:s,channelDef:d,channel2Def:h,markDef:y,config:w,scaleName:S,scale:A,stack:C,offset:L,defaultRef:G,bandPosition:H}=l;if(d){if(vt(d)){let J=A?.get("type");if(ha(d)){H??=Di({fieldDef:d,fieldDef2:h,markDef:y,config:w});let{bin:re,timeUnit:ee,type:se}=d;if(Wt(re)||H&&ee&&se===ns)return C?.impute?Ws(d,S,{binSuffix:"mid"},{offset:L}):H&&!Gn(J)?of({scaleName:S,fieldOrDatumDef:d,bandPosition:H,offset:L}):Ws(d,S,ru(d,s)?{binSuffix:"range"}:{},{offset:L});if(Bn(re)){if(Ue(h))return of({scaleName:S,fieldOrDatumDef:d,fieldOrDatumDef2:h,bandPosition:H,offset:L});$e(Hd(s===Jt?Kr:Ei))}}return Ws(d,S,Gn(J)?{binSuffix:"range"}:{},{offset:L,band:J==="band"?H??d.bandPosition??.5:void 0})}if(ur(d)){let J=L?{offset:L}:{};return{...Xl(s,d.value),...J}}}return b.isFunction(G)&&(G=G()),G&&{...G,...L?{offset:L}:{}}}function Xl(l,s){return Z(["x","x2"],l)&&s==="width"?{field:{group:"width"}}:Z(["y","y2"],l)&&s==="height"?{field:{group:"height"}}:rn(s)}function Vs(l){return l&&l!=="number"&&l!=="time"}function K0(l,s,d){return`${l}(${s}${d?`, ${Ye(d)}`:""})`}let F_=" \u2013 ";function Hh(l){let{fieldOrDatumDef:s,format:d,formatType:h,expr:y,normalizeStack:w,config:S}=l;if(Vs(h))return ai({fieldOrDatumDef:s,format:d,formatType:h,expr:y,config:S});let A=X0(s,y,w),C=Ql(s);if(d===void 0&&h===void 0&&S.customFormatTypes){if(C==="quantitative"){if(w&&S.normalizedNumberFormatType)return ai({fieldOrDatumDef:s,format:S.normalizedNumberFormat,formatType:S.normalizedNumberFormatType,expr:y,config:S});if(S.numberFormatType)return ai({fieldOrDatumDef:s,format:S.numberFormat,formatType:S.numberFormatType,expr:y,config:S})}if(C==="temporal"&&S.timeFormatType&&Ue(s)&&s.timeUnit===void 0)return ai({fieldOrDatumDef:s,format:S.timeFormat,formatType:S.timeFormatType,expr:y,config:S})}if(Rt(s)){let L=function(G){let{field:H,timeUnit:J,format:re,formatType:ee,rawTimeFormat:se,isUTCScale:de}=G;return!J||re?!J&&ee?`${ee}(${H}, '${re}')`:(re=b.isString(re)?re:se,`${de?"utc":"time"}Format(${H}, '${re}')`):function(fe,ge,we){if(!fe)return;let Te=P0(fe);return`${we||Wd(fe)?"utc":"time"}Format(${ge}, ${Te})`}(J,H,de)}({field:A,timeUnit:Ue(s)?zn(s.timeUnit)?.unit:void 0,format:d,formatType:S.timeFormatType,rawTimeFormat:S.timeFormat,isUTCScale:Li(s)&&s.scale?.type===zt.UTC});return L?{signal:L}:void 0}return d=sf({type:C,specifiedFormat:d,config:S,normalizeStack:w}),Ue(s)&&Wt(s.bin)?{signal:mo(A,Ge(s,{expr:y,binSuffix:"end"}),d,h,S)}:d||Ql(s)==="quantitative"?{signal:`${qh(A,d)}`}:{signal:`isValid(${A}) ? ${A} : ""+${A}`}}function X0(l,s,d){return Ue(l)?d?`${Ge(l,{expr:s,suffix:"end"})}-${Ge(l,{expr:s,suffix:"start"})}`:Ge(l,{expr:s}):function(h){let{datum:y}=h;return Bs(y)?Us(y):`${Ye(y)}`}(l)}function ai(l){let{fieldOrDatumDef:s,format:d,formatType:h,expr:y,normalizeStack:w,config:S,field:A}=l;return A??=X0(s,y,w),A!=="datum.value"&&Ue(s)&&Wt(s.bin)?{signal:mo(A,Ge(s,{expr:y,binSuffix:"end"}),d,h,S)}:{signal:K0(h,A,d)}}function Z0(l,s,d,h,y,w){if(!b.isString(h)||!Vs(h)){if(d===void 0&&h===void 0&&y.customFormatTypes&&Ql(l)==="quantitative"&&(y.normalizedNumberFormatType&&eu(l)&&l.stack==="normalize"||y.numberFormatType))return;if(eu(l)&&l.stack==="normalize"&&y.normalizedNumberFormat)return sf({type:"quantitative",config:y,normalizeStack:!0});if(Rt(l)){let S=Ue(l)?zn(l.timeUnit)?.unit:void 0;return S===void 0&&y.customFormatTypes&&y.timeFormatType?void 0:function(A){let{specifiedFormat:C,timeUnit:L,config:G,omitTimeFormatConfig:H}=A;return C||(L?{signal:P0(L)}:H?void 0:G.timeFormat)}({specifiedFormat:d,timeUnit:S,config:y,omitTimeFormatConfig:w})}return sf({type:s,specifiedFormat:d,config:y})}}function J0(l,s,d){return l&&(Ke(l)||l==="number"||l==="time")?l:Rt(s)&&d!=="time"&&d!=="utc"?Ue(s)&&zn(s?.timeUnit)?.utc?"utc":"time":void 0}function sf(l){let{type:s,specifiedFormat:d,config:h,normalizeStack:y}=l;return b.isString(d)?d:s===ho?y?h.normalizedNumberFormat:h.numberFormat:void 0}function qh(l,s){return`format(${l}, "${s||""}")`}function Wh(l,s,d,h){return Vs(d)?K0(d,l,s):qh(l,(b.isString(s)?s:void 0)??h.numberFormat)}function mo(l,s,d,h,y){if(d===void 0&&h===void 0&&y.customFormatTypes&&y.numberFormatType)return mo(l,s,y.numberFormat,y.numberFormatType,y);let w=Wh(l,d,h,y),S=Wh(s,d,h,y);return`${ic(l,!1)} ? "null" : ${w} + "${F_}" + ${S}`}let uc="min",Vh={x:1,y:1,color:1,fill:1,stroke:1,strokeWidth:1,size:1,shape:1,fillOpacity:1,strokeOpacity:1,opacity:1,text:1};function lf(l){return l in Vh}function Yh(l){return!!l?.encoding}function ri(l){return l&&(l.op==="count"||!!l.field)}function cc(l){return l&&b.isArray(l)}function Zl(l){return"row"in l||"column"in l}function uf(l){return!!l&&"header"in l}function dc(l){return"facet"in l}function Kh(l){let{field:s,timeUnit:d,bin:h,aggregate:y}=l;return{...d?{timeUnit:d}:{},...h?{bin:h}:{},...y?{aggregate:y}:{},field:s}}function Ys(l){return"sort"in l}function Di(l){let{fieldDef:s,fieldDef2:d,markDef:h,config:y}=l;if(vt(s)&&s.bandPosition!==void 0)return s.bandPosition;if(Ue(s)){let{timeUnit:w,bin:S}=s;if(w&&!d)return Ua("timeUnitBandPosition",h,y);if(Wt(S))return .5}}function Xh(l){let{channel:s,fieldDef:d,fieldDef2:h,markDef:y,config:w,scaleType:S,useVlSizeChannel:A}=l,C=ka(s),L=jt(A?"size":C,y,w,{vgChannel:C});if(L!==void 0)return L;if(Ue(d)){let{timeUnit:G,bin:H}=d;if(G&&!h)return{band:Ua("timeUnitBandSize",y,w)};if(Wt(H)&&!Gn(S))return{band:1}}return lc(y.type)?S?Gn(S)?w[y.type]?.discreteBandSize||{band:1}:w[y.type]?.continuousBandSize:w[y.type]?.discreteBandSize:void 0}function cf(l,s,d,h){return!!(Wt(l.bin)||l.timeUnit&&ha(l)&&l.type==="temporal")&&Di({fieldDef:l,fieldDef2:s,markDef:d,config:h})!==void 0}function Q0(l){return l&&!!l.sort&&!l.field}function df(l){return l&&"condition"in l}function ff(l){let s=l?.condition;return!!s&&!b.isArray(s)&&Ue(s)}function Jl(l){let s=l?.condition;return!!s&&!b.isArray(s)&&vt(s)}function Ue(l){return l&&(!!l.field||l.aggregate==="count")}function Ql(l){return l?.type}function Mi(l){return l&&"datum"in l}function rs(l){return ha(l)&&!tu(l)||pf(l)}function ey(l){return ha(l)&&l.type==="quantitative"&&!l.bin||pf(l)}function pf(l){return Mi(l)&&b.isNumber(l.datum)}function vt(l){return Ue(l)||Mi(l)}function ha(l){return l&&("field"in l||l.aggregate==="count")&&"type"in l}function ur(l){return l&&"value"in l&&"value"in l}function Li(l){return l&&("scale"in l||"sort"in l)}function eu(l){return l&&("axis"in l||"stack"in l||"impute"in l)}function Zh(l){return l&&"legend"in l}function Jh(l){return l&&("format"in l||"formatType"in l)}function ty(l){return Q(l,["legend","axis","header","scale"])}function Ge(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=l.field,h=s.prefix,y=s.suffix,w="";if(function(S){return S.aggregate==="count"}(l))d=yt("count");else{let S;if(!s.nofn)if(function(A){return"op"in A}(l))S=l.op;else{let{bin:A,aggregate:C,timeUnit:L}=l;Wt(A)?(S=Ri(A),y=(s.binSuffix??"")+(s.suffix??"")):C?Ti(C)?(w=`["${d}"]`,d=`argmax_${C.argmax}`):Qr(C)?(w=`["${d}"]`,d=`argmin_${C.argmin}`):S=String(C):L&&!Dr(L)&&(S=function(G){let{utc:H,...J}=zn(G);return J.unit?(H?"utc":"")+be(J).map(re=>Pe(`${re==="unit"?"":`_${re}_`}${J[re]}`)).join(""):(H?"utc":"")+"timeunit"+be(J).map(re=>Pe(`_${re}_${J[re]}`)).join("")}(L),y=(!["range","mid"].includes(s.binSuffix)&&s.binSuffix||"")+(s.suffix??""))}S&&(d=d?`${S}_${d}`:S)}return y&&(d=`${d}_${y}`),h&&(d=`${h}_${d}`),s.forAs?St(d):s.expr?an(d,s.expr)+w:Gt(d)+w}function tu(l){switch(l.type){case"nominal":case"ordinal":case"geojson":return!0;case"quantitative":return Ue(l)&&!!l.bin;case"temporal":return!1}throw new Error(Ud(l.type))}let ny=(l,s)=>{switch(s.fieldTitle){case"plain":return l.field;case"functional":return function(d){let{aggregate:h,bin:y,timeUnit:w,field:S}=d;if(Ti(h))return`${S} for argmax(${h.argmax})`;if(Qr(h))return`${S} for argmin(${h.argmin})`;let A=w&&!Dr(w)?zn(w):void 0,C=h||A?.unit||A?.maxbins&&"timeunit"||Wt(y)&&"bin";return C?`${C.toUpperCase()}(${S})`:S}(l);default:return function(d,h){let{field:y,bin:w,timeUnit:S,aggregate:A}=d;if(A==="count")return h.countTitle;if(Wt(w))return`${y} (binned)`;if(S&&!Dr(S)){let C=zn(S)?.unit;if(C)return`${y} (${rc(C).join("-")})`}else if(A)return Ti(A)?`${y} for max ${A.argmax}`:Qr(A)?`${y} for min ${A.argmin}`:`${gt(A)} of ${y}`;return y}(l,s)}},Qh=ny;function fc(l){Qh=l}function is(l,s,d){let{allowDisabling:h,includeDefault:y=!0}=d,w=hf(l)?.title;if(!Ue(l))return w??l.title;let S=l,A=y?mf(S,s):void 0;return h?Ve(w,S.title,A):w??S.title??A}function hf(l){return eu(l)&&l.axis?l.axis:Zh(l)&&l.legend?l.legend:uf(l)&&l.header?l.header:void 0}function mf(l,s){return Qh(l,s)}function Ks(l){if(Jh(l)){let{format:s,formatType:d}=l;return{format:s,formatType:d}}{let s=hf(l)??{},{format:d,formatType:h}=s;return{format:d,formatType:h}}}function cr(l){return Ue(l)?l:ff(l)?l.condition:void 0}function mn(l){return vt(l)?l:Jl(l)?l.condition:void 0}function em(l,s,d){let h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return b.isString(l)||b.isNumber(l)||b.isBoolean(l)?($e(function(y,w,S){return`Channel ${y} is a ${w}. Converted to {value: ${Ye(S)}}.`}(s,b.isString(l)?"string":b.isNumber(l)?"number":"boolean",l)),{value:l}):vt(l)?gf(l,s,d,h):Jl(l)?{...l,condition:gf(l.condition,s,d,h)}:l}function gf(l,s,d,h){if(Jh(l)){let{format:y,formatType:w,...S}=l;if(Vs(w)&&!d.customFormatTypes)return $e(Bd(s)),gf(S,s,d,h)}else{let y=eu(l)?"axis":Zh(l)?"legend":uf(l)?"header":null;if(y&&l[y]){let{format:w,formatType:S,...A}=l[y];if(Vs(S)&&!d.customFormatTypes)return $e(Bd(s)),gf({...l,[y]:A},s,d,h)}}return Ue(l)?nu(l,s,h):function(y){let w=y.type;if(w)return y;let{datum:S}=y;return w=b.isNumber(S)?"quantitative":b.isString(S)?"nominal":Bs(S)?"temporal":void 0,{...y,type:w}}(l)}function nu(l,s){let{compositeMark:d=!1}=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},{aggregate:h,timeUnit:y,bin:w,field:S}=l,A={...l};if(d||!h||wn(h)||Ti(h)||Qr(h)||($e(function(C){return`Invalid aggregation operator "${C}".`}(h)),delete A.aggregate),y&&(A.timeUnit=zn(y)),S&&(A.field=`${S}`),Wt(w)&&(A.bin=at(w,s)),Bn(w)&&!sn(s)&&$e(function(C){return`Channel ${C} should not be used with "binned" bin.`}(s)),ha(A)){let{type:C}=A,L=function(G){if(G)switch(G=G.toLowerCase()){case"q":case ho:return"quantitative";case"t":case ns:return"temporal";case"o":case Jd:return"ordinal";case"n":case Qd:return"nominal";case Hs:return"geojson"}}(C);C!==L&&(A.type=L),C!=="quantitative"&&Ci(h)&&($e(function(G,H){return`Invalid field type "${G}" for aggregate: "${H}", using "quantitative" instead.`}(C,h)),A.type="quantitative")}else if(!xi(s)){let C=function(L,G){switch(G){case"latitude":case"longitude":return"quantitative";case"row":case"column":case"facet":case"shape":case"strokeDash":return"nominal";case"order":return"ordinal"}if(Ys(L)&&b.isArray(L.sort))return"ordinal";let{aggregate:H,bin:J,timeUnit:re}=L;if(re)return"temporal";if(J||H&&!Ti(H)&&!Qr(H))return"quantitative";if(Li(L)&&L.scale?.type)switch(Lh[L.scale.type]){case"numeric":case"discretizing":return"quantitative";case"time":return"temporal"}return"nominal"}(A,s);A.type=C}if(ha(A)){let{compatible:C,warning:L}=function(G,H){let J=G.type;if(J==="geojson"&&H!=="shape")return{compatible:!1,warning:`Channel ${H} should not be used with a geojson data.`};switch(H){case Je:case Yr:case Ml:return tu(G)?Xs:{compatible:!1,warning:Ah(H)};case Jt:case Pn:case dn:case Ko:case Me:case _a:case Xr:case Ll:case uo:case Vu:case Zr:case it:case Fl:case Pa:case nr:case pt:case Id:return Xs;case Fa:case ar:case et:case ca:return J!==ho?{compatible:!1,warning:`Channel ${H} should be used with a quantitative field only, not ${G.type} field.`}:Xs;case _i:case Mt:case ki:case lo:case wi:case so:case $n:case Kr:case Ei:return J!=="nominal"||G.sort?Xs:{compatible:!1,warning:`Channel ${H} should not be used with an unsorted discrete field.`};case En:case Xo:return tu(G)||Li(re=G)&&Kl(re.scale?.type)?Xs:{compatible:!1,warning:C0(H)};case Fs:return G.type!=="nominal"||"sort"in G?Xs:{compatible:!1,warning:"Channel order is inappropriate for nominal field, which has no inherent order."}}var re}(A,s)||{};C===!1&&$e(L)}if(Ys(A)&&b.isString(A.sort)){let{sort:C}=A;if(lf(C))return{...A,sort:{encoding:C}};let L=C.substr(1);if(C.charAt(0)==="-"&&lf(L))return{...A,sort:{encoding:L,order:"descending"}}}if(uf(A)){let{header:C}=A;if(C){let{orient:L,...G}=C;if(L)return{...A,header:{...G,labelOrient:C.labelOrient||L,titleOrient:C.titleOrient||L}}}}return A}function at(l,s){return b.isBoolean(l)?{maxbins:ec(s)}:l==="binned"?{binned:!0}:l.maxbins||l.step?l:{...l,maxbins:ec(s)}}let Xs={compatible:!0};function Rt(l){let{formatType:s}=Ks(l);return s==="time"||!s&&(d=l)&&(d.type==="temporal"||Ue(d)&&!!d.timeUnit);var d}function au(l,s){let{timeUnit:d,type:h,wrapTime:y,undefinedIfExprNotRequired:w}=s,S=d&&zn(d)?.unit,A,C=S||h==="temporal";return Qo(l)?A=l.expr:Ke(l)?A=l.signal:Bs(l)?(C=!0,A=Us(l)):(b.isString(l)||b.isNumber(l))&&C&&(A=`datetime(${Ye(l)})`,function(L){return!!L0[L]}(S)&&(b.isNumber(l)&&l<1e4||b.isString(l)&&isNaN(Date.parse(l)))&&(A=Us({[S]:l}))),A?y&&C?`time(${A})`:A:w?void 0:Ye(l)}function pc(l,s){let{type:d}=l;return s.map(h=>{let y=au(h,{timeUnit:Ue(l)&&!Dr(l.timeUnit)?l.timeUnit:void 0,type:d,undefinedIfExprNotRequired:!0});return y!==void 0?{signal:y}:h})}function ru(l,s){return Wt(l.bin)?Rr(s)&&["ordinal","nominal"].includes(l.type):(console.warn("Only call this method for binned field defs."),!1)}let os={labelAlign:{part:"labels",vgProp:"align"},labelBaseline:{part:"labels",vgProp:"baseline"},labelColor:{part:"labels",vgProp:"fill"},labelFont:{part:"labels",vgProp:"font"},labelFontSize:{part:"labels",vgProp:"fontSize"},labelFontStyle:{part:"labels",vgProp:"fontStyle"},labelFontWeight:{part:"labels",vgProp:"fontWeight"},labelOpacity:{part:"labels",vgProp:"opacity"},labelOffset:null,labelPadding:null,gridColor:{part:"grid",vgProp:"stroke"},gridDash:{part:"grid",vgProp:"strokeDash"},gridDashOffset:{part:"grid",vgProp:"strokeDashOffset"},gridOpacity:{part:"grid",vgProp:"opacity"},gridWidth:{part:"grid",vgProp:"strokeWidth"},tickColor:{part:"ticks",vgProp:"stroke"},tickDash:{part:"ticks",vgProp:"strokeDash"},tickDashOffset:{part:"ticks",vgProp:"strokeDashOffset"},tickOpacity:{part:"ticks",vgProp:"opacity"},tickSize:null,tickWidth:{part:"ticks",vgProp:"strokeWidth"}};function iu(l){return l?.condition}let ss=["domain","grid","labels","ticks","title"],bf={grid:"grid",gridCap:"grid",gridColor:"grid",gridDash:"grid",gridDashOffset:"grid",gridOpacity:"grid",gridScale:"grid",gridWidth:"grid",orient:"main",bandPosition:"both",aria:"main",description:"main",domain:"main",domainCap:"main",domainColor:"main",domainDash:"main",domainDashOffset:"main",domainOpacity:"main",domainWidth:"main",format:"main",formatType:"main",labelAlign:"main",labelAngle:"main",labelBaseline:"main",labelBound:"main",labelColor:"main",labelFlush:"main",labelFlushOffset:"main",labelFont:"main",labelFontSize:"main",labelFontStyle:"main",labelFontWeight:"main",labelLimit:"main",labelLineHeight:"main",labelOffset:"main",labelOpacity:"main",labelOverlap:"main",labelPadding:"main",labels:"main",labelSeparation:"main",maxExtent:"main",minExtent:"main",offset:"both",position:"main",tickCap:"main",tickColor:"main",tickDash:"main",tickDashOffset:"main",tickMinStep:"both",tickOffset:"both",tickOpacity:"main",tickRound:"both",ticks:"main",tickSize:"main",tickWidth:"both",title:"main",titleAlign:"main",titleAnchor:"main",titleAngle:"main",titleBaseline:"main",titleColor:"main",titleFont:"main",titleFontSize:"main",titleFontStyle:"main",titleFontWeight:"main",titleLimit:"main",titleLineHeight:"main",titleOpacity:"main",titlePadding:"main",titleX:"main",titleY:"main",encode:"both",scale:"both",tickBand:"both",tickCount:"both",tickExtra:"both",translate:"both",values:"both",zindex:"both"},hc={orient:1,aria:1,bandPosition:1,description:1,domain:1,domainCap:1,domainColor:1,domainDash:1,domainDashOffset:1,domainOpacity:1,domainWidth:1,format:1,formatType:1,grid:1,gridCap:1,gridColor:1,gridDash:1,gridDashOffset:1,gridOpacity:1,gridWidth:1,labelAlign:1,labelAngle:1,labelBaseline:1,labelBound:1,labelColor:1,labelFlush:1,labelFlushOffset:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelLineHeight:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labels:1,labelSeparation:1,maxExtent:1,minExtent:1,offset:1,position:1,tickBand:1,tickCap:1,tickColor:1,tickCount:1,tickDash:1,tickDashOffset:1,tickExtra:1,tickMinStep:1,tickOffset:1,tickOpacity:1,tickRound:1,ticks:1,tickSize:1,tickWidth:1,title:1,titleAlign:1,titleAnchor:1,titleAngle:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleLineHeight:1,titleOpacity:1,titlePadding:1,titleX:1,titleY:1,translate:1,values:1,zindex:1},P_={...hc,style:1,labelExpr:1,encoding:1};function ay(l){return!!P_[l]}let Vt=be({axis:1,axisBand:1,axisBottom:1,axisDiscrete:1,axisLeft:1,axisPoint:1,axisQuantitative:1,axisRight:1,axisTemporal:1,axisTop:1,axisX:1,axisXBand:1,axisXDiscrete:1,axisXPoint:1,axisXQuantitative:1,axisXTemporal:1,axisY:1,axisYBand:1,axisYDiscrete:1,axisYPoint:1,axisYQuantitative:1,axisYTemporal:1});function Fi(l){return"mark"in l}class yf{constructor(s,d){this.name=s,this.run=d}hasMatchingType(s){return!!Fi(s)&&(Oi(d=s.mark)?d.type:d)===this.name;var d}}function Pi(l,s){let d=l&&l[s];return!!d&&(b.isArray(d)?te(d,h=>!!h.field):Ue(d)||ff(d))}function go(l,s){let d=l&&l[s];return!!d&&(b.isArray(d)?te(d,h=>!!h.field):Ue(d)||Mi(d)||Jl(d))}function ry(l,s){if(sn(s)){let d=l[s];if((Ue(d)||Mi(d))&&(Wl(d.type)||Ue(d)&&d.timeUnit))return go(l,$l(s))}return!1}function tm(l){return te(c0,s=>{if(Pi(l,s)){let d=l[s];if(b.isArray(d))return te(d,h=>!!h.aggregate);{let h=cr(d);return h&&!!h.aggregate}}return!1})}function iy(l,s){let d=[],h=[],y=[],w=[],S={};return mc(l,(A,C)=>{if(Ue(A)){let{field:L,aggregate:G,bin:H,timeUnit:J,...re}=A;if(G||J||H){let ee=hf(A),se=ee?.title,de=Ge(A,{forAs:!0}),fe={...se?[]:{title:is(A,s,{allowDisabling:!0})},...re,field:de};if(G){let ge;if(Ti(G)?(ge="argmax",de=Ge({op:"argmax",field:G.argmax},{forAs:!0}),fe.field=`${de}.${L}`):Qr(G)?(ge="argmin",de=Ge({op:"argmin",field:G.argmin},{forAs:!0}),fe.field=`${de}.${L}`):G!=="boxplot"&&G!=="errorbar"&&G!=="errorband"&&(ge=G),ge){let we={op:ge,as:de};L&&(we.field=L),w.push(we)}}else if(d.push(de),ha(A)&&Wt(H)){if(h.push({bin:H,field:L,as:de}),d.push(Ge(A,{binSuffix:"end"})),ru(A,C)&&d.push(Ge(A,{binSuffix:"range"})),sn(C)){let ge={field:`${de}_end`};S[`${C}2`]=ge}fe.bin="binned",xi(C)||(fe.type=ho)}else if(J&&!Dr(J)){y.push({timeUnit:J,field:L,as:de});let ge=ha(A)&&A.type!==ns&&"time";ge&&(C===Ll||C===Zr?fe.formatType=ge:function(we){return!!Ai[we]}(C)?fe.legend={formatType:ge,...fe.legend}:sn(C)&&(fe.axis={formatType:ge,...fe.axis}))}S[C]=fe}else d.push(L),S[C]=l[C]}else S[C]=l[C]}),{bins:h,timeUnits:y,aggregate:w,groupby:d,encoding:S}}function vf(l,s,d){let h=wh(s,d);if(!h)return!1;if(h==="binned"){let y=l[s===Kr?Jt:Pn];return!!(Ue(y)&&Ue(l[s])&&Bn(y.bin))}return!0}function ii(l,s){let d={};for(let h of be(l)){let y=em(l[h],h,s,{compositeMark:!0});d[h]=y}return d}function mc(l,s,d){if(l)for(let h of be(l)){let y=l[h];if(b.isArray(y))for(let w of y)s.call(d,w,h);else s.call(d,y,h)}}function nm(l,s){return be(s).reduce((d,h)=>{switch(h){case Jt:case Pn:case it:case Id:case Fl:case Kr:case Ei:case dn:case Ko:case nr:case so:case pt:case $n:case et:case Fa:case ca:case ar:case Ll:case En:case Pa:case Zr:return d;case Fs:if(l==="line"||l==="trail")return d;case uo:case Vu:{let y=s[h];if(b.isArray(y)||Ue(y))for(let w of b.array(y))w.aggregate||d.push(Ge(w,{}));return d}case wi:if(l==="trail")return d;case Me:case _a:case Xr:case _i:case Mt:case ki:case Xo:case lo:{let y=cr(s[h]);return y&&!y.aggregate&&d.push(Ge(y,{})),d}}},[])}function ou(l,s,d){let h=!(arguments.length>3&&arguments[3]!==void 0)||arguments[3];return"tooltip"in d?{tooltip:d.tooltip}:{tooltip:[...l.map(y=>{let{fieldPrefix:w,titlePrefix:S}=y,A=h?` of ${gc(s)}`:"";return{field:w+s.field,type:s.type,title:Ke(S)?{signal:`${S}"${escape(A)}"`}:S+A}}),...Ae(function(y){let w=[];for(let S of be(y))if(Pi(y,S)){let A=y[S],C=b.array(A);for(let L of C)Ue(L)?w.push(L):ff(L)&&w.push(L.condition)}return w}(d).map(ty),ae)]}}function gc(l){let{title:s,field:d}=l;return Ve(s,d)}function Ef(l,s,d,h,y){let{scale:w,axis:S}=d;return A=>{let{partName:C,mark:L,positionPrefix:G,endPositionPrefix:H,extraEncoding:J={}}=A,re=gc(d);return wf(l,C,y,{mark:L,encoding:{[s]:{field:`${G}_${d.field}`,type:d.type,...re!==void 0?{title:re}:{},...w!==void 0?{scale:w}:{},...S!==void 0?{axis:S}:{}},...b.isString(H)?{[`${s}2`]:{field:`${H}_${d.field}`}}:{},...h,...J}})}}function wf(l,s,d,h){let{clip:y,color:w,opacity:S}=l,A=l.type;return l[s]||l[s]===void 0&&d[s]?[{...h,mark:{...d[s],...y?{clip:y}:{},...w?{color:w}:{},...S?{opacity:S}:{},...Oi(h.mark)?h.mark:{type:h.mark},style:`${A}-${String(s)}`,...b.isBoolean(l[s])?{}:l[s]}}]:[]}function oy(l,s,d){let{encoding:h}=l,y=s==="vertical"?"y":"x",w=h[y],S=h[`${y}2`],A=h[`${y}Error`],C=h[`${y}Error2`];return{continuousAxisChannelDef:bc(w,d),continuousAxisChannelDef2:bc(S,d),continuousAxisChannelDefError:bc(A,d),continuousAxisChannelDefError2:bc(C,d),continuousAxis:y}}function bc(l,s){if(l?.aggregate){let{aggregate:d,...h}=l;return d!==s&&$e(function(y,w){return`Continuous axis should not have customized aggregation function ${y}; ${w} already agregates the axis.`}(d,s)),h}return l}function Zs(l,s){let{mark:d,encoding:h}=l,{x:y,y:w}=h;if(Oi(d)&&d.orient)return d.orient;if(rs(y)){if(rs(w)){let S=Ue(y)&&y.aggregate,A=Ue(w)&&w.aggregate;if(S||A!==s){if(A||S!==s){if(S===s&&A===s)throw new Error("Both x and y cannot have aggregate");return Rt(w)&&!Rt(y)?"horizontal":"vertical"}return"horizontal"}return"vertical"}return"horizontal"}if(rs(w))return"vertical";throw new Error(`Need a valid continuous axis for ${s}s`)}let ls="boxplot",xe=new yf(ls,am);function Js(l){return b.isNumber(l)?"tukey":l}function am(l,s){let{config:d}=s;l={...l,encoding:ii(l.encoding,d)};let{mark:h,encoding:y,params:w,projection:S,...A}=l,C=Oi(h)?h:{type:h};w&&$e(za("boxplot"));let L=C.extent??d.boxplot.extent,G=jt("size",C,d),H=C.invalid,J=Js(L),{bins:re,timeUnits:ee,transform:se,continuousAxisChannelDef:de,continuousAxis:fe,groupby:ge,aggregate:we,encodingWithoutContinuousAxis:Te,ticksOrient:Fe,boxOrient:He,customTooltipWithoutAggregatedField:tt}=function(id,qg,Io){let Au=Zs(id,ls),{continuousAxisChannelDef:Wg,continuousAxis:Vg}=oy(id,Au,ls),bn=Wg.field,xs=Js(qg),od=[...rm(bn),{op:"median",field:bn,as:`mid_box_${bn}`},{op:"min",field:bn,as:(xs==="min-max"?"lower_whisker_":"min_")+bn},{op:"max",field:bn,as:(xs==="min-max"?"upper_whisker_":"max_")+bn}],Cp=xs==="min-max"||xs==="tukey"?[]:[{calculate:`datum["upper_box_${bn}"] - datum["lower_box_${bn}"]`,as:`iqr_${bn}`},{calculate:`min(datum["upper_box_${bn}"] + datum["iqr_${bn}"] * ${qg}, datum["max_${bn}"])`,as:`upper_whisker_${bn}`},{calculate:`max(datum["lower_box_${bn}"] - datum["iqr_${bn}"] * ${qg}, datum["min_${bn}"])`,as:`lower_whisker_${bn}`}],{[Vg]:PA,...c1}=id.encoding,{customTooltipWithoutAggregatedField:d1,filteredEncoding:f1}=function(Rn){let{tooltip:Oo,...gl}=Rn;if(!Oo)return{filteredEncoding:gl};let bl,eo;if(b.isArray(Oo)){for(let yl of Oo)yl.aggregate?(bl||(bl=[]),bl.push(yl)):(eo||(eo=[]),eo.push(yl));bl&&(gl.tooltip=bl)}else Oo.aggregate?gl.tooltip=Oo:eo=Oo;return b.isArray(eo)&&eo.length===1&&(eo=eo[0]),{customTooltipWithoutAggregatedField:eo,filteredEncoding:gl}}(c1),{bins:mv,timeUnits:gv,aggregate:bv,groupby:Rp,encoding:Tu}=iy(f1,Io),yv=Au==="vertical"?"horizontal":"vertical",vv=Au,Yg=[...mv,...gv,{aggregate:[...bv,...od],groupby:Rp},...Cp];return{bins:mv,timeUnits:gv,transform:Yg,groupby:Rp,aggregate:bv,continuousAxisChannelDef:Wg,continuousAxis:Vg,encodingWithoutContinuousAxis:Tu,ticksOrient:yv,boxOrient:vv,customTooltipWithoutAggregatedField:d1}}(l,L,d),{color:ut,size:Qe,...Xe}=Te,xt=id=>Ef(C,fe,de,id,d.boxplot),$t=xt(Xe),Mn=xt(Te),_n=xt({...Xe,...Qe?{size:Qe}:{}}),kn=ou([{fieldPrefix:J==="min-max"?"upper_whisker_":"max_",titlePrefix:"Max"},{fieldPrefix:"upper_box_",titlePrefix:"Q3"},{fieldPrefix:"mid_box_",titlePrefix:"Median"},{fieldPrefix:"lower_box_",titlePrefix:"Q1"},{fieldPrefix:J==="min-max"?"lower_whisker_":"min_",titlePrefix:"Min"}],de,Te),Bt={type:"tick",color:"black",opacity:1,orient:Fe,invalid:H,aria:!1},It=J==="min-max"?kn:ou([{fieldPrefix:"upper_whisker_",titlePrefix:"Upper Whisker"},{fieldPrefix:"lower_whisker_",titlePrefix:"Lower Whisker"}],de,Te),gn=[...$t({partName:"rule",mark:{type:"rule",invalid:H,aria:!1},positionPrefix:"lower_whisker",endPositionPrefix:"lower_box",extraEncoding:It}),...$t({partName:"rule",mark:{type:"rule",invalid:H,aria:!1},positionPrefix:"upper_box",endPositionPrefix:"upper_whisker",extraEncoding:It}),...$t({partName:"ticks",mark:Bt,positionPrefix:"lower_whisker",extraEncoding:It}),...$t({partName:"ticks",mark:Bt,positionPrefix:"upper_whisker",extraEncoding:It})],Cn=[...J!=="tukey"?gn:[],...Mn({partName:"box",mark:{type:"bar",...G?{size:G}:{},orient:He,invalid:H,ariaRoleDescription:"box"},positionPrefix:"lower_box",endPositionPrefix:"upper_box",extraEncoding:kn}),..._n({partName:"median",mark:{type:"tick",invalid:H,...b.isObject(d.boxplot.median)&&d.boxplot.median.color?{color:d.boxplot.median.color}:{},...G?{size:G}:{},orient:Fe,aria:!1},positionPrefix:"mid_box",extraEncoding:kn})];if(J==="min-max")return{...A,transform:(A.transform??[]).concat(se),layer:Cn};let un=`datum["lower_box_${de.field}"]`,Na=`datum["upper_box_${de.field}"]`,Ia=`(${Na} - ${un})`,$r=`${un} - ${L} * ${Ia}`,Yn=`${Na} + ${L} * ${Ia}`,oa=`datum["${de.field}"]`,on={joinaggregate:rm(de.field),groupby:ge},wt={transform:[{filter:`(${$r} <= ${oa}) && (${oa} <= ${Yn})`},{aggregate:[{op:"min",field:de.field,as:`lower_whisker_${de.field}`},{op:"max",field:de.field,as:`upper_whisker_${de.field}`},{op:"min",field:`lower_box_${de.field}`,as:`lower_box_${de.field}`},{op:"max",field:`upper_box_${de.field}`,as:`upper_box_${de.field}`},...we],groupby:ge}],layer:gn},{tooltip:Ya,...ks}=Xe,{scale:Qi,axis:Su}=de,Ka=gc(de),hr=Q(Su,["title"]),ma=wf(C,"outliers",d.boxplot,{transform:[{filter:`(${oa} < ${$r}) || (${oa} > ${Yn})`}],mark:"point",encoding:{[fe]:{field:de.field,type:de.type,...Ka!==void 0?{title:Ka}:{},...Qi!==void 0?{scale:Qi}:{},...ye(hr)?{}:{axis:hr}},...ks,...ut?{color:ut}:{},...tt?{tooltip:tt}:{}}})[0],hi,No=[...re,...ee,on];return ma?hi={transform:No,layer:[ma,wt]}:(hi=wt,hi.transform.unshift(...No)),{...A,layer:[hi,{transform:se,layer:Cn}]}}function rm(l){return[{op:"q1",field:l,as:`lower_box_${l}`},{op:"q3",field:l,as:`upper_box_${l}`}]}let _f="errorbar",im=new yf(_f,kf);function kf(l,s){let{config:d}=s;l={...l,encoding:ii(l.encoding,d)};let{transform:h,continuousAxisChannelDef:y,continuousAxis:w,encodingWithoutContinuousAxis:S,ticksOrient:A,markDef:C,outerSpec:L,tooltipEncoding:G}=sm(l,_f,d);delete S.size;let H=Ef(C,w,y,S,d.errorbar),J=C.thickness,re=C.size,ee={type:"tick",orient:A,aria:!1,...J!==void 0?{thickness:J}:{},...re!==void 0?{size:re}:{}},se=[...H({partName:"ticks",mark:ee,positionPrefix:"lower",extraEncoding:G}),...H({partName:"ticks",mark:ee,positionPrefix:"upper",extraEncoding:G}),...H({partName:"rule",mark:{type:"rule",ariaRoleDescription:"errorbar",...J!==void 0?{size:J}:{}},positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:G})];return{...L,transform:h,...se.length>1?{layer:se}:{...se[0]}}}function om(l,s){let{encoding:d}=l;if(function(A){return(vt(A.x)||vt(A.y))&&!vt(A.x2)&&!vt(A.y2)&&!vt(A.xError)&&!vt(A.xError2)&&!vt(A.yError)&&!vt(A.yError2)}(d))return{orient:Zs(l,s),inputType:"raw"};let h=function(A){return vt(A.x2)||vt(A.y2)}(d),y=function(A){return vt(A.xError)||vt(A.xError2)||vt(A.yError)||vt(A.yError2)}(d),w=d.x,S=d.y;if(h){if(y)throw new Error(`${s} cannot be both type aggregated-upper-lower and aggregated-error`);let A=d.x2,C=d.y2;if(vt(A)&&vt(C))throw new Error(`${s} cannot have both x2 and y2`);if(vt(A)){if(rs(w))return{orient:"horizontal",inputType:"aggregated-upper-lower"};throw new Error(`Both x and x2 have to be quantitative in ${s}`)}if(vt(C)){if(rs(S))return{orient:"vertical",inputType:"aggregated-upper-lower"};throw new Error(`Both y and y2 have to be quantitative in ${s}`)}throw new Error("No ranged axis")}{let A=d.xError,C=d.xError2,L=d.yError,G=d.yError2;if(vt(C)&&!vt(A))throw new Error(`${s} cannot have xError2 without xError`);if(vt(G)&&!vt(L))throw new Error(`${s} cannot have yError2 without yError`);if(vt(A)&&vt(L))throw new Error(`${s} cannot have both xError and yError with both are quantiative`);if(vt(A)){if(rs(w))return{orient:"horizontal",inputType:"aggregated-error"};throw new Error("All x, xError, and xError2 (if exist) have to be quantitative")}if(vt(L)){if(rs(S))return{orient:"vertical",inputType:"aggregated-error"};throw new Error("All y, yError, and yError2 (if exist) have to be quantitative")}throw new Error("No ranged axis")}}function sm(l,s,d){let{mark:h,encoding:y,params:w,projection:S,...A}=l,C=Oi(h)?h:{type:h};w&&$e(za(s));let{orient:L,inputType:G}=om(l,s),{continuousAxisChannelDef:H,continuousAxisChannelDef2:J,continuousAxisChannelDefError:re,continuousAxisChannelDefError2:ee,continuousAxis:se}=oy(l,L,s),{errorBarSpecificAggregate:de,postAggregateCalculates:fe,tooltipSummary:ge,tooltipTitleWithFieldName:we}=function(It,gn,Cn,un,Na,Ia,$r,Yn){let oa=[],on=[],wt=gn.field,Ya,ks=!1;if(Ia==="raw"){let Ka=It.center?It.center:It.extent?It.extent==="iqr"?"median":"mean":Yn.errorbar.center,hr=It.extent?It.extent:Ka==="mean"?"stderr":"iqr";if(Ka==="median"!=(hr==="iqr")&&$e(function(ma,hi,No){return`${ma} is not usually used with ${hi} for ${No}.`}(Ka,hr,$r)),hr==="stderr"||hr==="stdev")oa=[{op:hr,field:wt,as:`extent_${wt}`},{op:Ka,field:wt,as:`center_${wt}`}],on=[{calculate:`datum["center_${wt}"] + datum["extent_${wt}"]`,as:`upper_${wt}`},{calculate:`datum["center_${wt}"] - datum["extent_${wt}"]`,as:`lower_${wt}`}],Ya=[{fieldPrefix:"center_",titlePrefix:gt(Ka)},{fieldPrefix:"upper_",titlePrefix:lm(Ka,hr,"+")},{fieldPrefix:"lower_",titlePrefix:lm(Ka,hr,"-")}],ks=!0;else{let ma,hi,No;hr==="ci"?(ma="mean",hi="ci0",No="ci1"):(ma="median",hi="q1",No="q3"),oa=[{op:hi,field:wt,as:`lower_${wt}`},{op:No,field:wt,as:`upper_${wt}`},{op:ma,field:wt,as:`center_${wt}`}],Ya=[{fieldPrefix:"upper_",titlePrefix:is({field:wt,aggregate:No,type:"quantitative"},Yn,{allowDisabling:!1})},{fieldPrefix:"lower_",titlePrefix:is({field:wt,aggregate:hi,type:"quantitative"},Yn,{allowDisabling:!1})},{fieldPrefix:"center_",titlePrefix:is({field:wt,aggregate:ma,type:"quantitative"},Yn,{allowDisabling:!1})}]}}else{(It.center||It.extent)&&$e((Qi=It.center,`${(Su=It.extent)?"extent ":""}${Su&&Qi?"and ":""}${Qi?"center ":""}${Su&&Qi?"are ":"is "}not needed when data are aggregated.`)),Ia==="aggregated-upper-lower"?(Ya=[],on=[{calculate:`datum["${Cn.field}"]`,as:`upper_${wt}`},{calculate:`datum["${wt}"]`,as:`lower_${wt}`}]):Ia==="aggregated-error"&&(Ya=[{fieldPrefix:"",titlePrefix:wt}],on=[{calculate:`datum["${wt}"] + datum["${un.field}"]`,as:`upper_${wt}`}],Na?on.push({calculate:`datum["${wt}"] + datum["${Na.field}"]`,as:`lower_${wt}`}):on.push({calculate:`datum["${wt}"] - datum["${un.field}"]`,as:`lower_${wt}`}));for(let Ka of on)Ya.push({fieldPrefix:Ka.as.substring(0,6),titlePrefix:_t(_t(Ka.calculate,'datum["',""),'"]',"")})}var Qi,Su;return{postAggregateCalculates:on,errorBarSpecificAggregate:oa,tooltipSummary:Ya,tooltipTitleWithFieldName:ks}}(C,H,J,re,ee,G,s,d),{[se]:Te,[se==="x"?"x2":"y2"]:Fe,[se==="x"?"xError":"yError"]:He,[se==="x"?"xError2":"yError2"]:tt,...ut}=y,{bins:Qe,timeUnits:Xe,aggregate:xt,groupby:$t,encoding:Mn}=iy(ut,d),_n=[...xt,...de],kn=G!=="raw"?[]:$t,Bt=ou(ge,H,Mn,we);return{transform:[...A.transform??[],...Qe,...Xe,..._n.length===0?[]:[{aggregate:_n,groupby:kn}],...fe],groupby:kn,continuousAxisChannelDef:H,continuousAxis:se,encodingWithoutContinuousAxis:Mn,ticksOrient:L==="vertical"?"horizontal":"vertical",markDef:C,outerSpec:A,tooltipEncoding:Bt}}function lm(l,s,d){return`${gt(l)} ${d} ${s}`}let xf="errorband",sy=new yf(xf,ly);function ly(l,s){let{config:d}=s;l={...l,encoding:ii(l.encoding,d)};let{transform:h,continuousAxisChannelDef:y,continuousAxis:w,encodingWithoutContinuousAxis:S,markDef:A,outerSpec:C,tooltipEncoding:L}=sm(l,xf,d),G=A,H=Ef(G,w,y,S,d.errorband),J=l.encoding.x!==void 0&&l.encoding.y!==void 0,re={type:J?"area":"rect"},ee={type:J?"line":"rule"},se={...G.interpolate?{interpolate:G.interpolate}:{},...G.tension&&G.interpolate?{tension:G.tension}:{}};return J?(re={...re,...se,ariaRoleDescription:"errorband"},ee={...ee,...se,aria:!1}):G.interpolate?$e(jd("interpolate")):G.tension&&$e(jd("tension")),{...C,transform:h,layer:[...H({partName:"band",mark:re,positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:L}),...H({partName:"borders",mark:ee,positionPrefix:"lower",extraEncoding:L}),...H({partName:"borders",mark:ee,positionPrefix:"upper",extraEncoding:L})]}}let su={};function lu(l,s,d){let h=new yf(l,s);su[l]={normalizer:h,parts:d}}lu(ls,am,["box","median","outliers","rule","ticks"]),lu(_f,kf,["ticks","rule"]),lu(xf,ly,["band","borders"]);let um=["gradientHorizontalMaxLength","gradientHorizontalMinLength","gradientVerticalMaxLength","gradientVerticalMinLength","unselectedOpacity"],yc={titleAlign:"align",titleAnchor:"anchor",titleAngle:"angle",titleBaseline:"baseline",titleColor:"color",titleFont:"font",titleFontSize:"fontSize",titleFontStyle:"fontStyle",titleFontWeight:"fontWeight",titleLimit:"limit",titleLineHeight:"lineHeight",titleOrient:"orient",titlePadding:"offset"},vc={labelAlign:"align",labelAnchor:"anchor",labelAngle:"angle",labelBaseline:"baseline",labelColor:"color",labelFont:"font",labelFontSize:"fontSize",labelFontStyle:"fontStyle",labelFontWeight:"fontWeight",labelLimit:"limit",labelLineHeight:"lineHeight",labelOrient:"orient",labelPadding:"offset"},cm=be(yc),dm=be(vc),Sf=be({header:1,headerRow:1,headerColumn:1,headerFacet:1}),Af=["size","shape","fill","stroke","strokeDash","strokeWidth","opacity"],dr="_vgsid_",fm={point:{on:"click",fields:[dr],toggle:"event.shiftKey",resolve:"global",clear:"dblclick"},interval:{on:"[pointerdown, window:pointerup] > window:pointermove!",encodings:["x","y"],translate:"[pointerdown, window:pointerup] > window:pointermove!",zoom:"wheel!",mark:{fill:"#333",fillOpacity:.125,stroke:"white"},resolve:"global",clear:"dblclick"}};function Tf(l){return l==="legend"||!!l?.legend}function Cf(l){return Tf(l)&&b.isObject(l)}function Ec(l){return!!l?.select}function Rf(l){let s=[];for(let d of l||[]){if(Ec(d))continue;let{expr:h,bind:y,...w}=d;if(y&&h){let S={...w,bind:y,init:h};s.push(S)}else{let S={...w,...h?{update:h}:{},...y?{bind:y}:{}};s.push(S)}}return s}function wc(l){return"concat"in l}function uu(l){return"vconcat"in l}function Nf(l){return"hconcat"in l}function If(l){let{step:s,offsetIsDiscrete:d}=l;return d?s.for??"offset":"position"}function ja(l){return b.isObject(l)&&l.step!==void 0}function _c(l){return l.view||l.width||l.height}let kc=be({align:1,bounds:1,center:1,columns:1,spacing:1});function us(l,s){return l[s]??l[s==="width"?"continuousWidth":"continuousHeight"]}function cu(l,s){let d=xc(l,s);return ja(d)?d.step:pm}function xc(l,s){return Ve(l[s]??l[s==="width"?"discreteWidth":"discreteHeight"],{step:l.step})}let pm=20,uy={background:"white",padding:5,timeFormat:"%b %d, %Y",countTitle:"Count of Records",view:{continuousWidth:200,continuousHeight:200,step:pm},mark:{color:"#4c78a8",invalid:"filter",timeUnitBandSize:1},arc:{},area:{},bar:M_,circle:{},geoshape:{},image:{},line:{},point:{},rect:Y0,rule:{color:"black"},square:{},text:{color:"black"},tick:{thickness:1},trail:{},boxplot:{size:14,extent:1.5,box:{},median:{color:"white"},outliers:{},rule:{},ticks:null},errorbar:{center:"mean",rule:!0,ticks:!1},errorband:{band:{opacity:.3},borders:!1},scale:{pointPadding:.5,barBandPaddingInner:.1,rectBandPaddingInner:0,bandWithNestedOffsetPaddingInner:.2,bandWithNestedOffsetPaddingOuter:.2,minBandSize:2,minFontSize:8,maxFontSize:40,minOpacity:.3,maxOpacity:.8,minSize:9,minStrokeWidth:1,maxStrokeWidth:4,quantileCount:4,quantizeCount:4,zero:!0},projection:{},legend:{gradientHorizontalMaxLength:200,gradientHorizontalMinLength:100,gradientVerticalMaxLength:200,gradientVerticalMinLength:64,unselectedOpacity:.35},header:{titlePadding:10,labelPadding:10},headerColumn:{},headerRow:{},headerFacet:{},selection:fm,style:{},title:{},facet:{spacing:20},concat:{spacing:20},normalizedNumberFormat:".0%"},oi=["#4c78a8","#f58518","#e45756","#72b7b2","#54a24b","#eeca3b","#b279a2","#ff9da6","#9d755d","#bab0ac"],hm={text:11,guideLabel:10,guideTitle:11,groupTitle:13,groupSubtitle:12},cy={blue:oi[0],orange:oi[1],red:oi[2],teal:oi[3],green:oi[4],yellow:oi[5],purple:oi[6],pink:oi[7],brown:oi[8],gray0:"#000",gray1:"#111",gray2:"#222",gray3:"#333",gray4:"#444",gray5:"#555",gray6:"#666",gray7:"#777",gray8:"#888",gray9:"#999",gray10:"#aaa",gray11:"#bbb",gray12:"#ccc",gray13:"#ddd",gray14:"#eee",gray15:"#fff"};function mm(l){let s=be(l||{}),d={};for(let h of s){let y=l[h];d[h]=iu(y)?w0(y):Un(y)}return d}let dy=[...Uh,...Vt,...Sf,"background","padding","legend","lineBreak","scale","style","title","view"];function gm(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{color:s,font:d,fontSize:h,selection:y,...w}=l,S=b.mergeConfig({},j(uy),d?function(C){return{text:{font:C},style:{"guide-label":{font:C},"guide-title":{font:C},"group-title":{font:C},"group-subtitle":{font:C}}}}(d):{},s?function(){let C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return{signals:[{name:"color",value:b.isObject(C)?{...cy,...C}:cy}],mark:{color:{signal:"color.blue"}},rule:{color:{signal:"color.gray0"}},text:{color:{signal:"color.gray0"}},style:{"guide-label":{fill:{signal:"color.gray0"}},"guide-title":{fill:{signal:"color.gray0"}},"group-title":{fill:{signal:"color.gray0"}},"group-subtitle":{fill:{signal:"color.gray0"}},cell:{stroke:{signal:"color.gray8"}}},axis:{domainColor:{signal:"color.gray13"},gridColor:{signal:"color.gray8"},tickColor:{signal:"color.gray13"}},range:{category:[{signal:"color.blue"},{signal:"color.orange"},{signal:"color.red"},{signal:"color.teal"},{signal:"color.green"},{signal:"color.yellow"},{signal:"color.purple"},{signal:"color.pink"},{signal:"color.brown"},{signal:"color.grey8"}]}}}(s):{},h?function(C){return{signals:[{name:"fontSize",value:b.isObject(C)?{...hm,...C}:hm}],text:{fontSize:{signal:"fontSize.text"}},style:{"guide-label":{fontSize:{signal:"fontSize.guideLabel"}},"guide-title":{fontSize:{signal:"fontSize.guideTitle"}},"group-title":{fontSize:{signal:"fontSize.groupTitle"}},"group-subtitle":{fontSize:{signal:"fontSize.groupSubtitle"}}}}}(h):{},w||{});y&&b.writeConfig(S,"selection",y,!0);let A=Q(S,dy);for(let C of["background","lineBreak","padding"])S[C]&&(A[C]=Un(S[C]));for(let C of Uh)S[C]&&(A[C]=Jn(S[C]));for(let C of Vt)S[C]&&(A[C]=mm(S[C]));for(let C of Sf)S[C]&&(A[C]=Jn(S[C]));return S.legend&&(A.legend=Jn(S.legend)),S.scale&&(A.scale=Jn(S.scale)),S.style&&(A.style=function(C){let L=be(C),G={};for(let H of L)G[H]=mm(C[H]);return G}(S.style)),S.title&&(A.title=Jn(S.title)),S.view&&(A.view=Jn(S.view)),A}let $_=new Set(["view",...I_]),B_=["color","fontSize","background","padding","facet","concat","numberFormat","numberFormatType","normalizedNumberFormat","normalizedNumberFormatType","timeFormat","countTitle","header","axisQuantitative","axisTemporal","axisDiscrete","axisPoint","axisXBand","axisXPoint","axisXDiscrete","axisXQuantitative","axisXTemporal","axisYBand","axisYPoint","axisYDiscrete","axisYQuantitative","axisYTemporal","scale","selection","overlay"],U_={view:["continuousWidth","continuousHeight","discreteWidth","discreteHeight","step"],area:["line","point"],bar:["binSpacing","continuousBandSize","discreteBandSize","minBandSize"],rect:["binSpacing","continuousBandSize","discreteBandSize","minBandSize"],line:["point"],tick:["bandSize","thickness"]};function Of(l){l=j(l);for(let s of B_)delete l[s];if(l.axis)for(let s in l.axis)iu(l.axis[s])&&delete l.axis[s];if(l.legend)for(let s of um)delete l.legend[s];if(l.mark){for(let s of V0)delete l.mark[s];l.mark.tooltip&&b.isObject(l.mark.tooltip)&&delete l.mark.tooltip}l.params&&(l.signals=(l.signals||[]).concat(Rf(l.params)),delete l.params);for(let s of $_){for(let h of V0)delete l[s][h];let d=U_[s];if(d)for(let h of d)delete l[s][h];z_(l,s)}for(let s of be(su))delete l[s];(function(s){let{titleMarkConfig:d,subtitleMarkConfig:h,subtitle:y}=tc(s.title);ye(d)||(s.style["group-title"]={...s.style["group-title"],...d}),ye(h)||(s.style["group-subtitle"]={...s.style["group-subtitle"],...h}),ye(y)?delete s.title:s.title=y})(l);for(let s in l)b.isObject(l[s])&&ye(l[s])&&delete l[s];return ye(l)?void 0:l}function z_(l,s,d,h){s==="view"&&(d="cell");let y={...h?l[s][h]:l[s],...l.style[d??s]};ye(y)||(l.style[d??s]=y),h||delete l[s]}function du(l){return"layer"in l}class Df{map(s,d){return dc(s)?this.mapFacet(s,d):function(h){return"repeat"in h}(s)?this.mapRepeat(s,d):Nf(s)?this.mapHConcat(s,d):uu(s)?this.mapVConcat(s,d):wc(s)?this.mapConcat(s,d):this.mapLayerOrUnit(s,d)}mapLayerOrUnit(s,d){if(du(s))return this.mapLayer(s,d);if(Fi(s))return this.mapUnit(s,d);throw new Error(xh(s))}mapLayer(s,d){return{...s,layer:s.layer.map(h=>this.mapLayerOrUnit(h,d))}}mapHConcat(s,d){return{...s,hconcat:s.hconcat.map(h=>this.map(h,d))}}mapVConcat(s,d){return{...s,vconcat:s.vconcat.map(h=>this.map(h,d))}}mapConcat(s,d){let{concat:h,...y}=s;return{...y,concat:h.map(w=>this.map(w,d))}}mapFacet(s,d){return{...s,spec:this.map(s.spec,d)}}mapRepeat(s,d){return{...s,spec:this.map(s.spec,d)}}}let bm={zero:1,center:1,normalize:1},G_=new Set([Ph,tf,ef,af,nf,rf,Bh,sc,q0,$h]),Sc=new Set([tf,ef,Ph]);function $i(l){return Ue(l)&&Ql(l)==="quantitative"&&!l.bin}function ym(l,s,d){let{orient:h,type:y}=d,w=s==="x"?"y":"radius",S=s==="x",A=l[s],C=l[w];if(Ue(A)&&Ue(C))if($i(A)&&$i(C)){if(A.stack)return s;if(C.stack)return w;let L=Ue(A)&&!!A.aggregate;if(L!==(Ue(C)&&!!C.aggregate))return L?s:w;if(S&&["bar","area"].includes(y)){if(h==="vertical")return w;if(h==="horizontal")return s}}else{if($i(A))return s;if($i(C))return w}else{if($i(A))return s;if($i(C))return w}}function vm(l,s){let d=Oi(l)?l:{type:l},h=d.type;if(!G_.has(h))return null;let y=ym(s,"x",d)||ym(s,"theta",d);if(!y)return null;let w=s[y],S=Ue(w)?Ge(w,{}):void 0,A=function(de){switch(de){case"x":return"y";case"y":return"x";case"theta":return"radius";case"radius":return"theta"}}(y),C=[],L=new Set;if(s[A]){let de=s[A],fe=Ue(de)?Ge(de,{}):void 0;fe&&fe!==S&&(C.push(A),L.add(fe))}let G=A==="x"?"xOffset":"yOffset",H=s[G],J=Ue(H)?Ge(H,{}):void 0;J&&J!==S&&(C.push(G),L.add(J));let re=$s.reduce((de,fe)=>{if(fe!=="tooltip"&&Pi(s,fe)){let ge=s[fe];for(let we of b.array(ge)){let Te=cr(we);if(Te.aggregate)continue;let Fe=Ge(Te,{});Fe&&L.has(Fe)||de.push({channel:fe,fieldDef:Te})}}return de},[]),ee;return w.stack!==void 0?ee=b.isBoolean(w.stack)?w.stack?"zero":null:w.stack:Sc.has(h)&&(ee="zero"),ee&&ee in bm?tm(s)&&re.length===0?null:w?.scale?.type&&w?.scale?.type!==zt.LINEAR?(w?.stack&&$e(function(de){return`Cannot stack non-linear scale (${de}).`}(w.scale.type)),null):vt(s[Si(y)])?(w.stack!==void 0&&$e(`Cannot stack "${se=y}" if there is already "${se}2".`),null):(Ue(w)&&w.aggregate&&!Nr.has(w.aggregate)&&$e(`Stacking is applied even though the aggregate function is non-summative ("${w.aggregate}").`),{groupbyChannels:C,groupbyFields:L,fieldChannel:y,impute:w.impute!==null&&as(h),stackBy:re,offset:ee}):null;var se}function fy(l,s,d){let h=Jn(l),y=jt("orient",h,d);if(h.orient=function(w,S,A){switch(w){case nf:case rf:case Bh:case q0:case R_:case C_:return}let{x:C,y:L,x2:G,y2:H}=S;switch(w){case tf:if(Ue(C)&&(Bn(C.bin)||Ue(L)&&L.aggregate&&!C.aggregate))return"vertical";if(Ue(L)&&(Bn(L.bin)||Ue(C)&&C.aggregate&&!L.aggregate))return"horizontal";if(H||G){if(A)return A;if(!G)return(Ue(C)&&C.type===ho&&!Wt(C.bin)||pf(C))&&Ue(L)&&Bn(L.bin)?"horizontal":"vertical";if(!H)return(Ue(L)&&L.type===ho&&!Wt(L.bin)||pf(L))&&Ue(C)&&Bn(C.bin)?"vertical":"horizontal"}case af:if(G&&(!Ue(C)||!Bn(C.bin))&&H&&(!Ue(L)||!Bn(L.bin)))return;case ef:if(H)return Ue(L)&&Bn(L.bin)?"horizontal":"vertical";if(G)return Ue(C)&&Bn(C.bin)?"vertical":"horizontal";if(w===af){if(C&&!L)return"vertical";if(L&&!C)return"horizontal"}case sc:case $h:{let J=ey(C),re=ey(L);if(A)return A;if(J&&!re)return w!=="tick"?"horizontal":"vertical";if(!J&&re)return w!=="tick"?"vertical":"horizontal";if(J&&re)return"vertical";{let ee=ha(C)&&C.type===ns,se=ha(L)&&L.type===ns;if(ee&&!se)return"vertical";if(!ee&&se)return"horizontal"}return}}return"vertical"}(h.type,s,y),y!==void 0&&y!==h.orient&&$e(`Specified orient "${h.orient}" overridden with "${y}".`),h.type==="bar"&&h.orient){let w=jt("cornerRadiusEnd",h,d);if(w!==void 0){let S=h.orient==="horizontal"&&s.x2||h.orient==="vertical"&&s.y2?["cornerRadius"]:D_[h.orient];for(let A of S)h[A]=w;h.cornerRadiusEnd!==void 0&&delete h.cornerRadiusEnd}}return jt("opacity",h,d)===void 0&&(h.opacity=function(w,S){if(Z([nf,$h,rf,Bh],w)&&!tm(S))return .7}(h.type,s)),jt("cursor",h,d)===void 0&&(h.cursor=function(w,S,A){return S.href||w.href||jt("href",w,A)?"pointer":w.cursor}(h,s,d)),h}function j_(l){let{point:s,line:d,...h}=l;return be(h).length>1?h:h.type}function H_(l){for(let s of["line","area","rule","trail"])l[s]&&(l={...l,[s]:Q(l[s],["point","line"])});return l}function Em(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=arguments.length>2?arguments[2]:void 0;return l.point==="transparent"?{opacity:0}:l.point?b.isObject(l.point)?l.point:{}:l.point!==void 0?null:s.point||d.shape?b.isObject(s.point)?s.point:{}:void 0}function wm(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return l.line?l.line===!0?{}:l.line:l.line!==void 0?null:s.line?s.line===!0?{}:s.line:void 0}class _m{constructor(){nt(this,"name","path-overlay")}hasMatchingType(s,d){if(Fi(s)){let{mark:h,encoding:y}=s,w=Oi(h)?h:{type:h};switch(w.type){case"line":case"rule":case"trail":return!!Em(w,d[w.type],y);case"area":return!!Em(w,d[w.type],y)||!!wm(w,d[w.type])}}return!1}run(s,d,h){let{config:y}=d,{params:w,projection:S,mark:A,name:C,encoding:L,...G}=s,H=ii(L,y),J=Oi(A)?A:{type:A},re=Em(J,y[J.type],H),ee=J.type==="area"&&wm(J,y[J.type]),se=[{name:C,...w?{params:w}:{},mark:j_({...J.type==="area"&&J.opacity===void 0&&J.fillOpacity===void 0?{opacity:.7}:{},...J}),encoding:Q(H,["shape"])}],de=vm(fy(J,H,y),H),fe=H;if(de){let{fieldChannel:ge,offset:we}=de;fe={...H,[ge]:{...H[ge],...we?{stack:we}:{}}}}return fe=Q(fe,["y2","x2"]),ee&&se.push({...S?{projection:S}:{},mark:{type:"line",...V(J,["clip","interpolate","tension","tooltip"]),...ee},encoding:fe}),re&&se.push({...S?{projection:S}:{},mark:{type:"point",opacity:1,filled:!0,...V(J,["clip","tooltip"]),...re},encoding:fe}),h({...G,layer:se},{...d,config:H_(y)})}}function na(l,s){return s?Zl(l)?py(l,s):km(l,s):l}function Bi(l,s){return s?py(l,s):l}function Ac(l,s,d){let h=s[l];return(y=h)&&!b.isString(y)&&"repeat"in y?h.repeat in d?{...s,[l]:d[h.repeat]}:void $e(function(w){return`Unknown repeated value "${w}".`}(h.repeat)):s;var y}function km(l,s){if((l=Ac("field",l,s))!==void 0){if(l===null)return null;if(Ys(l)&&ri(l.sort)){let d=Ac("field",l.sort,s);l={...l,...d?{sort:d}:{}}}return l}}function Mf(l,s){if(Ue(l))return km(l,s);{let d=Ac("datum",l,s);return d===l||d.type||(d.type="nominal"),d}}function xm(l,s){if(!vt(l)){if(Jl(l)){let d=Mf(l.condition,s);if(d)return{...l,condition:d};{let{condition:h,...y}=l;return y}}return l}{let d=Mf(l,s);if(d)return d;if(df(l))return{condition:l.condition}}}function py(l,s){let d={};for(let h in l)if(b.hasOwnProperty(l,h)){let y=l[h];if(b.isArray(y))d[h]=y.map(w=>xm(w,s)).filter(w=>w);else{let w=xm(y,s);w!==void 0&&(d[h]=w)}}return d}class Sm{constructor(){nt(this,"name","RuleForRangedLine")}hasMatchingType(s){if(Fi(s)){let{encoding:d,mark:h}=s;if(h==="line"||Oi(h)&&h.type==="line")for(let y of s_){let w=d[Ps(y)];if(d[y]&&(Ue(w)&&!Bn(w.bin)||Mi(w)))return!0}}return!1}run(s,d,h){let{encoding:y,mark:w}=s;var S,A;return $e((S=!!y.x2,A=!!y.y2,`Line mark is for continuous lines and thus cannot be used with ${S&&A?"x2 and y2":S?"x2":"y2"}. We will use the rule mark (line segments) instead.`)),h({...s,mark:b.isObject(w)?{...w,type:"rule"}:"rule"},d)}}function Lf(l){let{parentEncoding:s,encoding:d={},layer:h}=l,y={};if(s){let w=new Set([...be(s),...be(d)]);for(let S of w){let A=d[S],C=s[S];if(vt(A)){let L={...C,...A};y[S]=L}else Jl(A)?y[S]={...A,condition:{...C,...A.condition}}:A||A===null?y[S]=A:(h||ur(C)||Ke(C)||vt(C)||b.isArray(C))&&(y[S]=C)}}else y=d;return!y||ye(y)?void 0:y}function Am(l){let{parentProjection:s,projection:d}=l;return s&&d&&$e(function(h){let{parentProjection:y,projection:w}=h;return`Layer's shared projection ${Ye(y)} is overridden by a child projection ${Ye(w)}.`}({parentProjection:s,projection:d})),d??s}function Tm(l){return"filter"in l}function Cm(l){return"lookup"in l}function q_(l){return"pivot"in l}function hy(l){return"density"in l}function Rm(l){return"quantile"in l}function my(l){return"regression"in l}function W_(l){return"loess"in l}function gy(l){return"sample"in l}function Nm(l){return"window"in l}function Im(l){return"joinaggregate"in l}function by(l){return"flatten"in l}function V_(l){return"calculate"in l}function Ff(l){return"bin"in l}function Om(l){return"impute"in l}function Pf(l){return"timeUnit"in l}function yy(l){return"aggregate"in l}function Y_(l){return"stack"in l}function Dm(l){return"fold"in l}function Mm(l){return"extent"in l&&!("density"in l)}function $f(l,s){let{transform:d,...h}=l;return d?{...h,transform:d.map(y=>{if(Tm(y))return{filter:fu(y,s)};if(Ff(y)&&fo(y.bin))return{...y,bin:Lm(y.bin)};if(Cm(y)){let{selection:w,...S}=y.from;return w?{...y,from:{param:w,...S}}:y}return y})}:l}function Bf(l,s){let d=j(l);if(Ue(d)&&fo(d.bin)&&(d.bin=Lm(d.bin)),Li(d)&&d.scale?.domain?.selection){let{selection:h,...y}=d.scale.domain;d.scale.domain={...y,...h?{param:h}:{}}}if(df(d))if(b.isArray(d.condition))d.condition=d.condition.map(h=>{let{selection:y,param:w,test:S,...A}=h;return w?h:{...A,test:fu(h,s)}});else{let{selection:h,param:y,test:w,...S}=Bf(d.condition,s);d.condition=y?d.condition:{...S,test:fu(d.condition,s)}}return d}function Lm(l){let s=l.extent;if(s?.selection){let{selection:d,...h}=s;return{...l,extent:{...h,param:d}}}return l}function fu(l,s){let d=h=>F(h,y=>{let w={param:y,empty:s.emptySelections[y]??!0};return s.selectionPredicates[y]??=[],s.selectionPredicates[y].push(w),w});return l.selection?d(l.selection):F(l.test||l.filter,h=>h.selection?d(h.selection):h)}class Fm extends Df{map(s,d){let h=d.selections??[];if(s.params&&!Fi(s)){let y=[];for(let w of s.params)Ec(w)?h.push(w):y.push(w);s.params=y}return d.selections=h,super.map(s,d)}mapUnit(s,d){let h=d.selections;if(!h||!h.length)return s;let y=(d.path??[]).concat(s.name),w=[];for(let S of h)if(S.views&&S.views.length)for(let A of S.views)(b.isString(A)&&(A===s.name||y.includes(A))||b.isArray(A)&&A.map(C=>y.indexOf(C)).every((C,L,G)=>C!==-1&&(L===0||C>G[L-1])))&&w.push(S);else w.push(S);return w.length&&(s.params=w),s}}for(let l of["mapFacet","mapRepeat","mapHConcat","mapVConcat","mapLayer"]){let s=Fm.prototype[l];Fm.prototype[l]=function(d,h){return s.call(this,d,Pm(d,h))}}function Pm(l,s){return l.name?{...s,path:(s.path??[]).concat(l.name)}:s}function Uf(l,s){s===void 0&&(s=gm(l.config));let d=function(S){let C={config:arguments.length>1&&arguments[1]!==void 0?arguments[1]:{}};return K_.map($m.map(vy.map(S,C),C),C)}(l,s),{width:h,height:y}=l,w=function(S,A,C){let{width:L,height:G}=A,H=Fi(S)||du(S),J={};H?L=="container"&&G=="container"?(J.type="fit",J.contains="padding"):L=="container"?(J.type="fit-x",J.contains="padding"):G=="container"&&(J.type="fit-y",J.contains="padding"):(L=="container"&&($e(Sa("width")),L=void 0),G=="container"&&($e(Sa("height")),G=void 0));let re={type:"pad",...J,...C?Bm(C.autosize):{},...Bm(S.autosize)};if(re.type!=="fit"||H||($e(Qn),re.type="pad"),L=="container"&&re.type!="fit"&&re.type!="fit-x"&&$e(ea("width")),G=="container"&&re.type!="fit"&&re.type!="fit-y"&&$e(ea("height")),!Re(re,{type:"pad"}))return re}(d,{width:h,height:y,autosize:l.autosize},s);return{...d,...w?{autosize:w}:{}}}let $m=new class extends Df{constructor(){super(...arguments),nt(this,"nonFacetUnitNormalizers",[xe,im,sy,new _m,new Sm])}map(l,s){if(Fi(l)){let d=Pi(l.encoding,Je),h=Pi(l.encoding,Yr),y=Pi(l.encoding,Ml);if(d||h||y)return this.mapFacetedUnit(l,s)}return super.map(l,s)}mapUnit(l,s){let{parentEncoding:d,parentProjection:h}=s,y=Bi(l.encoding,s.repeater),w={...l,...l.name?{name:[s.repeaterPrefix,l.name].filter(A=>A).join("_")}:{},...y?{encoding:y}:{}};if(d||h)return this.mapUnitWithParentEncodingOrProjection(w,s);let S=this.mapLayerOrUnit.bind(this);for(let A of this.nonFacetUnitNormalizers)if(A.hasMatchingType(w,s.config))return A.run(w,s,S);return w}mapRepeat(l,s){return function(d){return!b.isArray(d.repeat)&&d.repeat.layer}(l)?this.mapLayerRepeat(l,s):this.mapNonLayerRepeat(l,s)}mapLayerRepeat(l,s){let{repeat:d,spec:h,...y}=l,{row:w,column:S,layer:A}=d,{repeater:C={},repeaterPrefix:L=""}=s;return w||S?this.mapRepeat({...l,repeat:{...w?{row:w}:{},...S?{column:S}:{}},spec:{repeat:{layer:A},spec:h}},s):{...y,layer:A.map(G=>{let H={...C,layer:G},J=`${(h.name?`${h.name}_`:"")+L}child__layer_${Pe(G)}`,re=this.mapLayerOrUnit(h,{...s,repeater:H,repeaterPrefix:J});return re.name=J,re})}}mapNonLayerRepeat(l,s){let{repeat:d,spec:h,data:y,...w}=l;!b.isArray(d)&&l.columns&&(l=Q(l,["columns"]),$e(lr("repeat")));let S=[],{repeater:A={},repeaterPrefix:C=""}=s,L=!b.isArray(d)&&d.row||[A?A.row:null],G=!b.isArray(d)&&d.column||[A?A.column:null],H=b.isArray(d)&&d||[A?A.repeat:null];for(let re of H)for(let ee of L)for(let se of G){let de={repeat:re,row:ee,column:se,layer:A.layer},fe=(h.name?`${h.name}_`:"")+C+"child__"+(b.isArray(d)?`${Pe(re)}`:(d.row?`row_${Pe(ee)}`:"")+(d.column?`column_${Pe(se)}`:"")),ge=this.map(h,{...s,repeater:de,repeaterPrefix:fe});ge.name=fe,S.push(Q(ge,["data"]))}let J=b.isArray(d)?l.columns:d.column?d.column.length:1;return{data:h.data??y,align:"all",...w,columns:J,concat:S}}mapFacet(l,s){let{facet:d}=l;return Zl(d)&&l.columns&&(l=Q(l,["columns"]),$e(lr("facet"))),super.mapFacet(l,s)}mapUnitWithParentEncodingOrProjection(l,s){let{encoding:d,projection:h}=l,{parentEncoding:y,parentProjection:w,config:S}=s,A=Am({parentProjection:w,projection:h}),C=Lf({parentEncoding:y,encoding:Bi(d,s.repeater)});return this.mapUnit({...l,...A?{projection:A}:{},...C?{encoding:C}:{}},{config:S})}mapFacetedUnit(l,s){let{row:d,column:h,facet:y,...w}=l.encoding,{mark:S,width:A,projection:C,height:L,view:G,params:H,encoding:J,...re}=l,{facetMapping:ee,layout:se}=this.getFacetMappingAndLayout({row:d,column:h,facet:y},s),de=Bi(w,s.repeater);return this.mapFacet({...re,...se,facet:ee,spec:{...A?{width:A}:{},...L?{height:L}:{},...G?{view:G}:{},...C?{projection:C}:{},mark:S,encoding:de,...H?{params:H}:{}}},s)}getFacetMappingAndLayout(l,s){let{row:d,column:h,facet:y}=l;if(d||h){y&&$e(`Facet encoding dropped as ${(w=[...d?[Je]:[],...h?[Yr]:[]]).join(" and ")} ${w.length>1?"are":"is"} also specified.`);let S={},A={};for(let C of[Je,Yr]){let L=l[C];if(L){let{align:G,center:H,spacing:J,columns:re,...ee}=L;S[C]=ee;for(let se of["align","center","spacing"])L[se]!==void 0&&(A[se]??={},A[se][C]=L[se])}}return{facetMapping:S,layout:A}}{let{align:S,center:A,spacing:C,columns:L,...G}=y;return{facetMapping:na(G,s.repeater),layout:{...S?{align:S}:{},...A?{center:A}:{},...C?{spacing:C}:{},...L?{columns:L}:{}}}}var w}mapLayer(l,s){let{parentEncoding:d,parentProjection:h,...y}=s,{encoding:w,projection:S,...A}=l,C={...y,parentEncoding:Lf({parentEncoding:d,encoding:w,layer:!0}),parentProjection:Am({parentProjection:h,projection:S})};return super.mapLayer({...A,...l.name?{name:[C.repeaterPrefix,l.name].filter(L=>L).join("_")}:{}},C)}},vy=new class extends Df{map(l,s){return s.emptySelections??={},s.selectionPredicates??={},l=$f(l,s),super.map(l,s)}mapLayerOrUnit(l,s){if((l=$f(l,s)).encoding){let d={};for(let[h,y]of ke(l.encoding))d[h]=Bf(y,s);l={...l,encoding:d}}return super.mapLayerOrUnit(l,s)}mapUnit(l,s){let{selection:d,...h}=l;return d?{...h,params:ke(d).map(y=>{let[w,S]=y,{init:A,bind:C,empty:L,...G}=S;G.type==="single"?(G.type="point",G.toggle=!1):G.type==="multi"&&(G.type="point"),s.emptySelections[w]=L!=="none";for(let H of Se(s.selectionPredicates[w]??{}))H.empty=L!=="none";return{name:w,value:A,select:G,bind:C}})}:l}},K_=new Fm;function Bm(l){return b.isString(l)?{type:l}:l??{}}let Um=["background","padding"];function zf(l,s){let d={};for(let h of Um)l&&l[h]!==void 0&&(d[h]=Un(l[h]));return s&&(d.params=l.params),d}class Ui{constructor(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.explicit=s,this.implicit=d}clone(){return new Ui(j(this.explicit),j(this.implicit))}combine(){return{...this.explicit,...this.implicit}}get(s){return Ve(this.explicit[s],this.implicit[s])}getWithExplicit(s){return this.explicit[s]!==void 0?{explicit:!0,value:this.explicit[s]}:this.implicit[s]!==void 0?{explicit:!1,value:this.implicit[s]}:{explicit:!1,value:void 0}}setWithExplicit(s,d){let{value:h,explicit:y}=d;h!==void 0&&this.set(s,h,y)}set(s,d,h){return delete this[h?"implicit":"explicit"][s],this[h?"explicit":"implicit"][s]=d,this}copyKeyFromSplit(s,d){let{explicit:h,implicit:y}=d;h[s]!==void 0?this.set(s,h[s],!0):y[s]!==void 0&&this.set(s,y[s],!1)}copyKeyFromObject(s,d){d[s]!==void 0&&this.set(s,d[s],!0)}copyAll(s){for(let d of be(s.combine())){let h=s.getWithExplicit(d);this.setWithExplicit(d,h)}}}function zi(l){return{explicit:!0,value:l}}function Lr(l){return{explicit:!1,value:l}}function Ey(l){return(s,d,h,y)=>{let w=l(s.value,d.value);return w>0?s:w<0?d:Tc(s,d,h,y)}}function Tc(l,s,d,h){return l.explicit&&s.explicit&&$e(function(y,w,S,A){return`Conflicting ${w.toString()} property "${y.toString()}" (${Ye(S)} and ${Ye(A)}). Using ${Ye(S)}.`}(d,h,l.value,s.value)),l}function Gi(l,s,d,h){let y=arguments.length>4&&arguments[4]!==void 0?arguments[4]:Tc;return l===void 0||l.value===void 0?s:l.explicit&&!s.explicit?l:s.explicit&&!l.explicit?s:Re(l.value,s.value)?l:y(l,s,d,h)}class wy extends Ui{constructor(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},h=arguments.length>2&&arguments[2]!==void 0&&arguments[2];super(s,d),this.explicit=s,this.implicit=d,this.parseNothing=h}clone(){let s=super.clone();return s.parseNothing=this.parseNothing,s}}function cs(l){return"url"in l}function pu(l){return"values"in l}function Gf(l){return"name"in l&&!cs(l)&&!pu(l)&&!bo(l)}function bo(l){return l&&(jf(l)||Hf(l)||qf(l))}function jf(l){return"sequence"in l}function Hf(l){return"sphere"in l}function qf(l){return"graticule"in l}let tn=function(l){return l[l.Raw=0]="Raw",l[l.Main=1]="Main",l[l.Row=2]="Row",l[l.Column=3]="Column",l[l.Lookup=4]="Lookup",l}({});function zm(l){let{signals:s,hasLegend:d,index:h,...y}=l;return y.field=Gt(y.field),y}function ds(l){let s=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],d=arguments.length>2&&arguments[2]!==void 0?arguments[2]:b.identity;if(b.isArray(l)){let h=l.map(y=>ds(y,s,d));return s?`[${h.join(", ")}]`:h}return Bs(l)?d(s?Us(l):function(h){let y=qd(h,!0);return h.utc?+new Date(Date.UTC(...y)):+new Date(...y)}(l)):s?d(Ye(l)):l}function _y(l,s){for(let d of Se(l.component.selection??{})){let h=d.name,y=`${h}${Eo}, ${d.resolve==="global"?"true":`{unit: ${Ha(l)}}`}`;for(let w of nl)w.defined(d)&&(w.signals&&(s=w.signals(l,d,s)),w.modifyExpr&&(y=w.modifyExpr(l,d,y)));s.push({name:h+Py,on:[{events:{signal:d.name+Eo},update:`modify(${b.stringValue(d.name+ps)}, ${y})`}]})}return Wf(s)}function Cc(l,s){if(l.component.selection&&be(l.component.selection).length){let d=b.stringValue(l.getName("cell"));s.unshift({name:"facet",value:{},on:[{events:b.parseSelector("pointermove","scope"),update:`isTuple(facet) ? facet : group(${d}).datum`}]})}return Wf(s)}function ky(l,s){for(let d of Se(l.component.selection??{}))for(let h of nl)h.defined(d)&&h.marks&&(s=h.marks(l,d,s));return s}function Wf(l){return l.map(s=>(s.on&&!s.on.length&&delete s.on,s))}class Ht{constructor(s,d){this.debugName=d,nt(this,"_children",[]),nt(this,"_parent",null),nt(this,"_hash",void 0),s&&(this.parent=s)}clone(){throw new Error("Cannot clone node")}get parent(){return this._parent}set parent(s){this._parent=s,s&&s.addChild(this)}get children(){return this._children}numChildren(){return this._children.length}addChild(s,d){this._children.includes(s)?$e("Attempt to add the same child twice."):d!==void 0?this._children.splice(d,0,s):this._children.push(s)}removeChild(s){let d=this._children.indexOf(s);return this._children.splice(d,1),d}remove(){let s=this._parent.removeChild(this);for(let d of this._children)d._parent=this._parent,this._parent.addChild(d,s++)}insertAsParentOf(s){let d=s.parent;d.removeChild(this),this.parent=d,s.parent=this}swapWithParent(){let s=this._parent,d=s.parent;for(let y of this._children)y.parent=s;this._children=[],s.removeChild(this);let h=s.parent.removeChild(s);this._parent=d,d.addChild(this,h),s.parent=this}}class aa extends Ht{clone(){let s=new this.constructor;return s.debugName=`clone_${this.debugName}`,s._source=this._source,s._name=`clone_${this._name}`,s.type=this.type,s.refCounts=this.refCounts,s.refCounts[s._name]=0,s}constructor(s,d,h,y){super(s,d),this.type=h,this.refCounts=y,nt(this,"_source",void 0),nt(this,"_name",void 0),this._source=this._name=d,this.refCounts&&!(this._name in this.refCounts)&&(this.refCounts[this._name]=0)}dependentFields(){return new Set}producedFields(){return new Set}hash(){return this._hash===void 0&&(this._hash=`Output ${Xt()}`),this._hash}getSource(){return this.refCounts[this._name]++,this._source}isRequired(){return!!this.refCounts[this._name]}setSource(s){this._source=s}}function Gm(l){return l.as!==void 0}function xy(l){return`${l}_end`}class ji extends Ht{clone(){return new ji(null,j(this.timeUnits))}constructor(s,d){super(s),this.timeUnits=d}static makeFromEncoding(s,d){let h=d.reduceFieldDef((y,w,S)=>{let{field:A,timeUnit:C}=w;if(C){let L;if(Dr(C)){if(ln(d)){let{mark:G,markDef:H,config:J}=d,re=Di({fieldDef:w,markDef:H,config:J});(lc(G)||re)&&(L={timeUnit:zn(C),field:A})}}else L={as:Ge(w,{forAs:!0}),field:A,timeUnit:C};if(ln(d)){let{mark:G,markDef:H,config:J}=d,re=Di({fieldDef:w,markDef:H,config:J});lc(G)&&sn(S)&&re!==.5&&(L.rectBandPosition=re)}L&&(y[ae(L)]=L)}return y},{});return ye(h)?null:new ji(s,h)}static makeFromTransform(s,d){let{timeUnit:h,...y}={...d},w={...y,timeUnit:zn(h)};return new ji(s,{[ae(w)]:w})}merge(s){this.timeUnits={...this.timeUnits};for(let d in s.timeUnits)this.timeUnits[d]||(this.timeUnits[d]=s.timeUnits[d]);for(let d of s.children)s.removeChild(d),d.parent=this;s.remove()}removeFormulas(s){let d={};for(let[h,y]of ke(this.timeUnits)){let w=Gm(y)?y.as:`${y.field}_end`;s.has(w)||(d[h]=y)}this.timeUnits=d}producedFields(){return new Set(Se(this.timeUnits).map(s=>Gm(s)?s.as:xy(s.field)))}dependentFields(){return new Set(Se(this.timeUnits).map(s=>s.field))}hash(){return`TimeUnit ${ae(this.timeUnits)}`}assemble(){let s=[];for(let d of Se(this.timeUnits)){let{rectBandPosition:h}=d,y=zn(d.timeUnit);if(Gm(d)){let{field:w,as:S}=d,{unit:A,utc:C,...L}=y,G=[S,`${S}_end`];s.push({field:Gt(w),type:"timeunit",...A?{units:rc(A)}:{},...C?{timezone:"utc"}:{},...L,as:G}),s.push(...ra(G,h,y))}else if(d){let{field:w}=d,S=w.replaceAll("\\.","."),A=jm({timeUnit:y,field:S}),C=xy(S);s.push({type:"formula",expr:A,as:C}),s.push(...ra([S,C],h,y))}}return s}}let Vf="offsetted_rect_start",Ft="offsetted_rect_end";function jm(l){let{timeUnit:s,field:d,reverse:h}=l,{unit:y,utc:w}=s,S=Oh(y),{part:A,step:C}=Vd(S,s.step);return`${w?"utcOffset":"timeOffset"}('${A}', datum['${d}'], ${h?-C:C})`}function ra(l,s,d){let[h,y]=l;if(s!==void 0&&s!==.5){let w=`datum['${h}']`,S=`datum['${y}']`;return[{type:"formula",expr:fs([jm({timeUnit:d,field:h,reverse:!0}),w],s+.5),as:`${h}_${Vf}`},{type:"formula",expr:fs([w,S],s+.5),as:`${h}_${Ft}`}]}return[]}function fs(l,s){let[d,h]=l;return`${1-s} * ${d} + ${s} * ${h}`}let Rc="_tuple_fields";class Hm{constructor(){nt(this,"hasChannel",void 0),nt(this,"hasField",void 0),nt(this,"hasSelectionId",void 0),nt(this,"timeUnit",void 0),nt(this,"items",void 0);for(var s=arguments.length,d=new Array(s),h=0;h<s;h++)d[h]=arguments[h];this.items=d,this.hasChannel={},this.hasField={},this.hasSelectionId=!1}}let Hi={defined:()=>!0,parse:(l,s,d)=>{let h=s.name,y=s.project??=new Hm,w={},S={},A=new Set,C=(ee,se)=>{let de=se==="visual"?ee.channel:ee.field,fe=Pe(`${h}_${de}`);for(let ge=1;A.has(fe);ge++)fe=Pe(`${h}_${de}_${ge}`);return A.add(fe),{[se]:fe}},L=s.type,G=l.config.selection[L],H=d.value!==void 0?b.array(d.value):null,{fields:J,encodings:re}=b.isObject(d.select)?d.select:{};if(!J&&!re&&H){for(let ee of H)if(b.isObject(ee))for(let se of be(ee))o_[se]?(re||(re=[])).push(se):L==="interval"?($e('Interval selections should be initialized using "x", "y", "longitude", or "latitude" keys.'),re=G.encodings):(J??=[]).push(se)}J||re||(re=G.encodings,"fields"in G&&(J=G.fields));for(let ee of re??[]){let se=l.fieldDef(ee);if(se){let de=se.field;if(se.aggregate){$e(Ni(ee,se.aggregate));continue}if(!de){$e(ta(ee));continue}if(se.timeUnit&&!Dr(se.timeUnit)){de=l.vgField(ee);let fe={timeUnit:se.timeUnit,as:de,field:se.field};S[ae(fe)]=fe}if(!w[de]){let fe={field:de,channel:ee,type:L==="interval"&&Rr(ee)&&Ga(l.getScaleComponent(ee).get("type"))?"R":se.bin?"R-RE":"E",index:y.items.length};fe.signals={...C(fe,"data"),...C(fe,"visual")},y.items.push(w[de]=fe),y.hasField[de]=w[de],y.hasSelectionId=y.hasSelectionId||de===dr,Zo(ee)?(fe.geoChannel=ee,fe.channel=ph(ee),y.hasChannel[fe.channel]=w[de]):y.hasChannel[ee]=w[de]}}else $e(ta(ee))}for(let ee of J??[]){if(y.hasField[ee])continue;let se={type:"E",field:ee,index:y.items.length};se.signals={...C(se,"data")},y.items.push(se),y.hasField[ee]=se,y.hasSelectionId=y.hasSelectionId||ee===dr}H&&(s.init=H.map(ee=>y.items.map(se=>b.isObject(ee)?ee[se.geoChannel||se.channel]!==void 0?ee[se.geoChannel||se.channel]:ee[se.field]:ee))),ye(S)||(y.timeUnit=new ji(null,S))},signals:(l,s,d)=>{let h=s.name+Rc;return d.filter(y=>y.name===h).length>0||s.project.hasSelectionId?d:d.concat({name:h,value:s.project.items.map(zm)})}},Ta={defined:l=>l.type==="interval"&&l.resolve==="global"&&l.bind&&l.bind==="scales",parse:(l,s)=>{let d=s.scales=[];for(let h of s.project.items){let y=h.channel;if(!Rr(y))continue;let w=l.getScaleComponent(y),S=w?w.get("type"):void 0;w&&Ga(S)?(w.set("selectionExtent",{param:s.name,field:h.field},!0),d.push(h)):$e("Scale bindings are currently only supported for scales with unbinned, continuous domains.")}},topLevelSignals:(l,s,d)=>{let h=s.scales.filter(S=>d.filter(A=>A.name===S.signals.data).length===0);if(!l.parent||Qs(l)||h.length===0)return d;let y=d.filter(S=>S.name===s.name)[0],w=y.update;if(w.indexOf(tg)>=0)y.update=`{${h.map(S=>`${b.stringValue(Gt(S.field))}: ${S.signals.data}`).join(", ")}}`;else{for(let S of h){let A=`${b.stringValue(Gt(S.field))}: ${S.signals.data}`;w.includes(A)||(w=`${w.substring(0,w.length-1)}, ${A}}`)}y.update=w}return d.concat(h.map(S=>({name:S.signals.data})))},signals:(l,s,d)=>{if(l.parent&&!Qs(l))for(let h of s.scales){let y=d.filter(w=>w.name===h.signals.data)[0];y.push="outer",delete y.value,delete y.update}return d}};function jn(l,s){return`domain(${b.stringValue(l.scaleName(s))})`}function Qs(l){return l.parent&&vs(l.parent)&&!l.parent.parent}let yo="_brush",qm="_scale_trigger",hu="geo_interval_init_tick",Yf="_init",Wm={defined:l=>l.type==="interval",parse:(l,s,d)=>{if(l.hasProjection){let h={...b.isObject(d.select)?d.select:{}};h.fields=[dr],h.encodings||(h.encodings=d.value?be(d.value):[Fa,et]),d.select={type:"interval",...h}}if(s.translate&&!Ta.defined(s)){let h=`!event.item || event.item.mark.name !== ${b.stringValue(s.name+yo)}`;for(let y of s.events){if(!y.between){$e(`${y} is not an ordered event stream for interval selections.`);continue}let w=b.array(y.between[0].filter??=[]);w.indexOf(h)<0&&w.push(h)}}},signals:(l,s,d)=>{let h=s.name,y=h+Eo,w=Se(s.project.hasChannel).filter(A=>A.channel===Jt||A.channel===Pn),S=s.init?s.init[0]:null;if(d.push(...w.reduce((A,C)=>A.concat(function(L,G,H,J){let re=!L.hasProjection,ee=H.channel,se=H.signals.visual,de=b.stringValue(re?L.scaleName(ee):L.projectionName()),fe=Fe=>`scale(${de}, ${Fe})`,ge=L.getSizeSignalRef(ee===Jt?"width":"height").signal,we=`${ee}(unit)`,Te=G.events.reduce((Fe,He)=>[...Fe,{events:He.between[0],update:`[${we}, ${we}]`},{events:He,update:`[${se}[0], clamp(${we}, 0, ${ge})]`}],[]);if(re){let Fe=H.signals.data,He=Ta.defined(G),tt=L.getScaleComponent(ee),ut=tt?tt.get("type"):void 0,Qe=J?{init:ds(J,!0,fe)}:{value:[]};return Te.push({events:{signal:G.name+qm},update:Ga(ut)?`[${fe(`${Fe}[0]`)}, ${fe(`${Fe}[1]`)}]`:"[0, 0]"}),He?[{name:Fe,on:[]}]:[{name:se,...Qe,on:Te},{name:Fe,...J?{init:ds(J)}:{},on:[{events:{signal:se},update:`${se}[0] === ${se}[1] ? null : invert(${de}, ${se})`}]}]}{let Fe=ee===Jt?0:1,He=G.name+Yf;return[{name:se,...J?{init:`[${He}[0][${Fe}], ${He}[1][${Fe}]]`}:{value:[]},on:Te}]}}(l,s,C,S&&S[C.index])),[])),l.hasProjection){let A=b.stringValue(l.projectionName()),C=l.projectionName()+"_center",{x:L,y:G}=s.project.hasChannel,H=L&&L.signals.visual,J=G&&G.signals.visual,re=L?S&&S[L.index]:`${C}[0]`,ee=G?S&&S[G.index]:`${C}[1]`,se=we=>l.getSizeSignalRef(we).signal,de=`[[${H?H+"[0]":"0"}, ${J?J+"[0]":"0"}],[${H?H+"[1]":se("width")}, ${J?J+"[1]":se("height")}]]`;S&&(d.unshift({name:h+Yf,init:`[scale(${A}, [${L?re[0]:re}, ${G?ee[0]:ee}]), scale(${A}, [${L?re[1]:re}, ${G?ee[1]:ee}])]`}),!L||!G)&&(d.find(we=>we.name===C)||d.unshift({name:C,update:`invert(${A}, [${se("width")}/2, ${se("height")}/2])`}));let fe=`vlSelectionTuples(${`intersect(${de}, {markname: ${b.stringValue(l.getName("marks"))}}, unit.mark)`}, ${`{unit: ${Ha(l)}}`})`,ge=w.map(we=>we.signals.visual);return d.concat({name:y,on:[{events:[...ge.length?[{signal:ge.join(" || ")}]:[],...S?[{signal:hu}]:[]],update:fe}]})}{if(!Ta.defined(s)){let L=h+qm,G=w.map(H=>{let J=H.channel,{data:re,visual:ee}=H.signals,se=b.stringValue(l.scaleName(J)),de=Ga(l.getScaleComponent(J).get("type"))?"+":"";return`(!isArray(${re}) || (${de}invert(${se}, ${ee})[0] === ${de}${re}[0] && ${de}invert(${se}, ${ee})[1] === ${de}${re}[1]))`});G.length&&d.push({name:L,value:{},on:[{events:w.map(H=>({scale:l.scaleName(H.channel)})),update:G.join(" && ")+` ? ${L} : {}`}]})}let A=w.map(L=>L.signals.data),C=`unit: ${Ha(l)}, fields: ${h+Rc}, values`;return d.concat({name:y,...S?{init:`{${C}: ${ds(S)}}`}:{},...A.length?{on:[{events:[{signal:A.join(" || ")}],update:`${A.join(" && ")} ? {${C}: [${A}]} : null`}]}:{}})}},topLevelSignals:(l,s,d)=>(ln(l)&&l.hasProjection&&s.init&&(d.filter(h=>h.name===hu).length||d.unshift({name:hu,value:null,on:[{events:"timer{1}",update:`${hu} === null ? {} : ${hu}`}]})),d),marks:(l,s,d)=>{let h=s.name,{x:y,y:w}=s.project.hasChannel,S=y?.signals.visual,A=w?.signals.visual,C=`data(${b.stringValue(s.name+ps)})`;if(Ta.defined(s)||!y&&!w)return d;let L={x:y!==void 0?{signal:`${S}[0]`}:{value:0},y:w!==void 0?{signal:`${A}[0]`}:{value:0},x2:y!==void 0?{signal:`${S}[1]`}:{field:{group:"width"}},y2:w!==void 0?{signal:`${A}[1]`}:{field:{group:"height"}}};if(s.resolve==="global")for(let se of be(L))L[se]=[{test:`${C}.length && ${C}[0].unit === ${Ha(l)}`,...L[se]},{value:0}];let{fill:G,fillOpacity:H,cursor:J,...re}=s.mark,ee=be(re).reduce((se,de)=>(se[de]=[{test:[y!==void 0&&`${S}[0] !== ${S}[1]`,w!==void 0&&`${A}[0] !== ${A}[1]`].filter(fe=>fe).join(" && "),value:re[de]},{value:null}],se),{});return[{name:`${h+yo}_bg`,type:"rect",clip:!0,encode:{enter:{fill:{value:G},fillOpacity:{value:H}},update:L}},...d,{name:h+yo,type:"rect",clip:!0,encode:{enter:{...J?{cursor:{value:J}}:{},fill:{value:"transparent"}},update:{...L,...ee}}}]}},el={defined:l=>l.type==="point",signals:(l,s,d)=>{let h=s.name,y=h+Rc,w=s.project,S="(item().isVoronoi ? datum.datum : datum)",A=Se(l.component.selection??{}).reduce((H,J)=>J.type==="interval"?H.concat(J.name+yo):H,[]).map(H=>`indexof(item().mark.name, '${H}') < 0`).join(" && "),C="datum && item().mark.marktype !== 'group' && indexof(item().mark.role, 'legend') < 0"+(A?` && ${A}`:""),L=`unit: ${Ha(l)}, `;s.project.hasSelectionId?L+=`${dr}: ${S}[${b.stringValue(dr)}]`:L+=`fields: ${y}, values: [${w.items.map(H=>l.fieldDef(H.channel)?.bin?`[${S}[${b.stringValue(l.vgField(H.channel,{}))}], ${S}[${b.stringValue(l.vgField(H.channel,{binSuffix:"end"}))}]]`:`${S}[${b.stringValue(H.field)}]`).join(", ")}]`;let G=s.events;return d.concat([{name:h+Eo,on:G?[{events:G,update:`${C} ? {${L}} : null`,force:!0}]:[]}])}};function mu(l,s,d,h){let y=df(s)&&s.condition,w=h(s);return y?{[d]:[...b.array(y).map(S=>{let A=h(S);if(function(C){return C.param}(S)){let{param:C,empty:L}=S;return{test:yu(l,{param:C,empty:L}),...A}}return{test:Wi(l,S.test),...A}}),...w!==void 0?[w]:[]]}:w!==void 0?{[d]:w}:{}}function Kf(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"text",d=l.encoding[s];return mu(l,d,s,h=>gu(h,l.config))}function gu(l,s){let d=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"datum";if(l){if(ur(l))return rn(l.value);if(vt(l)){let{format:h,formatType:y}=Ks(l);return Hh({fieldOrDatumDef:l,format:h,formatType:y,expr:d,config:s})}}}function Nc(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{encoding:d,markDef:h,config:y,stack:w}=l,S=d.tooltip;if(b.isArray(S))return{tooltip:Sy({tooltip:S},w,y,s)};{let A=s.reactiveGeom?"datum.datum":"datum";return mu(l,S,"tooltip",C=>{let L=gu(C,y,A);if(L)return L;if(C===null)return;let G=jt("tooltip",h,y);return G===!0&&(G={content:"encoding"}),b.isString(G)?{value:G}:b.isObject(G)?Ke(G)?G:G.content==="encoding"?Sy(d,w,y,s):{signal:A}:void 0})}}function Ic(l,s,d){let{reactiveGeom:h}=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},y={...d,...d.tooltipFormat},w={},S=h?"datum.datum":"datum",A=[];function C(G,H){let J=Ps(H),re=ha(G)?G:{...G,type:l[J].type},ee=re.title||mf(re,y),se=b.array(ee).join(", ").replaceAll(/"/g,'\\"'),de;if(sn(H)){let fe=H==="x"?"x2":"y2",ge=cr(l[fe]);if(Bn(re.bin)&&ge){let we=Ge(re,{expr:S}),Te=Ge(ge,{expr:S}),{format:Fe,formatType:He}=Ks(re);de=mo(we,Te,Fe,He,y),w[fe]=!0}}if((sn(H)||H===nr||H===pt)&&s&&s.fieldChannel===H&&s.offset==="normalize"){let{format:fe,formatType:ge}=Ks(re);de=Hh({fieldOrDatumDef:re,format:fe,formatType:ge,expr:S,config:y,normalizeStack:!0}).signal}de??=gu(re,y,S).signal,A.push({channel:H,key:se,value:de})}mc(l,(G,H)=>{Ue(G)?C(G,H):ff(G)&&C(G.condition,H)});let L={};for(let{channel:G,key:H,value:J}of A)w[G]||L[H]||(L[H]=J);return L}function Sy(l,s,d){let{reactiveGeom:h}=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},y=Ic(l,s,d,{reactiveGeom:h}),w=ke(y).map(S=>{let[A,C]=S;return`"${A}": ${C}`});return w.length>0?{signal:`{${w.join(", ")}}`}:void 0}function X_(l){let{markDef:s,config:d}=l,h=jt("aria",s,d);return h===!1?{}:{...h?{aria:h}:{},...Z_(l),...J_(l)}}function Z_(l){let{mark:s,markDef:d,config:h}=l;if(h.aria===!1)return{};let y=jt("ariaRoleDescription",d,h);return y!=null?{ariaRoleDescription:{value:y}}:s in Fd?{}:{ariaRoleDescription:{value:s}}}function J_(l){let{encoding:s,markDef:d,config:h,stack:y}=l,w=s.description;if(w)return mu(l,w,"description",C=>gu(C,l.config));let S=jt("description",d,h);if(S!=null)return{description:rn(S)};if(h.aria===!1)return{};let A=Ic(s,y,h);return ye(A)?void 0:{description:{signal:ke(A).map((C,L)=>{let[G,H]=C;return`"${L>0?"; ":""}${G}: " + (${H})`}).join(" + ")}}}function Hn(l,s){let d=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},{markDef:h,encoding:y,config:w}=s,{vgChannel:S}=d,{defaultRef:A,defaultValue:C}=d;A===void 0&&(C??=jt(l,h,w,{vgChannel:S,ignoreVgConfig:!0}),C!==void 0&&(A=rn(C)));let L=y[l];return mu(s,L,S??l,G=>jh({channel:l,channelDef:G,markDef:h,config:w,scaleName:s.scaleName(l),scale:s.getScaleComponent(l),stack:null,defaultRef:A}))}function Oc(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{filled:void 0},{markDef:d,encoding:h,config:y}=l,{type:w}=d,S=s.filled??jt("filled",d,y),A=Z(["bar","point","circle","square","geoshape"],w)?"transparent":void 0,C=jt(S===!0?"color":void 0,d,y,{vgChannel:"fill"})??y.mark[S===!0&&"color"]??A,L=jt(S===!1?"color":void 0,d,y,{vgChannel:"stroke"})??y.mark[S===!1&&"color"],G=S?"fill":"stroke",H={...C?{fill:rn(C)}:{},...L?{stroke:rn(L)}:{}};return d.color&&(S?d.fill:d.stroke)&&$e(T0("property",{fill:"fill"in d,stroke:"stroke"in d})),{...H,...Hn("color",l,{vgChannel:G,defaultValue:S?C:L}),...Hn("fill",l,{defaultValue:h.fill?C:void 0}),...Hn("stroke",l,{defaultValue:h.stroke?L:void 0})}}function Ay(l){let{encoding:s,mark:d}=l,h=s.order;return!as(d)&&ur(h)?mu(l,h,"zindex",y=>rn(y.value)):{}}function bu(l){let{channel:s,markDef:d,encoding:h={},model:y,bandPosition:w}=l,S=`${s}Offset`,A=d[S],C=h[S];if((S==="xOffset"||S==="yOffset")&&C)return{offsetType:"encoding",offset:jh({channel:S,channelDef:C,markDef:d,config:y?.config,scaleName:y.scaleName(S),scale:y.getScaleComponent(S),stack:null,defaultRef:rn(A),bandPosition:w})};let L=d[S];return L?{offsetType:"visual",offset:L}:{}}function qn(l,s,d){let{defaultPos:h,vgChannel:y}=d,{encoding:w,markDef:S,config:A,stack:C}=s,L=w[l],G=w[Si(l)],H=s.scaleName(l),J=s.getScaleComponent(l),{offset:re,offsetType:ee}=bu({channel:l,markDef:S,encoding:w,model:s,bandPosition:.5}),se=Xf({model:s,defaultPos:h,channel:l,scaleName:H,scale:J}),de=!L&&sn(l)&&(w.latitude||w.longitude)?{field:s.getName(l)}:function(fe){let{channel:ge,channelDef:we,scaleName:Te,stack:Fe,offset:He,markDef:tt}=fe;if(vt(we)&&Fe&&ge===Fe.fieldChannel){if(Ue(we)){let ut=we.bandPosition;if(ut!==void 0||tt.type!=="text"||ge!=="radius"&&ge!=="theta"||(ut=.5),ut!==void 0)return of({scaleName:Te,fieldOrDatumDef:we,startSuffix:"start",bandPosition:ut,offset:He})}return Ws(we,Te,{suffix:"end"},{offset:He})}return zh(fe)}({channel:l,channelDef:L,channel2Def:G,markDef:S,config:A,scaleName:H,scale:J,stack:C,offset:re,defaultRef:se,bandPosition:ee==="encoding"?0:void 0});return de?{[y||l]:de}:void 0}function Xf(l){let{model:s,defaultPos:d,channel:h,scaleName:y,scale:w}=l,{markDef:S,config:A}=s;return()=>{let C=Ps(h),L=or(h),G=jt(h,S,A,{vgChannel:L});if(G!==void 0)return Xl(h,G);switch(d){case"zeroOrMin":case"zeroOrMax":if(y){let H=w.get("type");if(!Z([zt.LOG,zt.TIME,zt.UTC],H)){if(w.domainDefinitelyIncludesZero())return{scale:y,value:0}}}if(d==="zeroOrMin")return C==="y"?{field:{group:"height"}}:{value:0};switch(C){case"radius":return{signal:`min(${s.width.signal},${s.height.signal})/2`};case"theta":return{signal:"2*PI"};case"x":return{field:{group:"width"}};case"y":return{value:0}}break;case"mid":return{...s[ka(h)],mult:.5}}}}let Ty={left:"x",center:"xc",right:"x2"},Cy={top:"y",middle:"yc",bottom:"y2"};function Vm(l,s,d){let h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"middle";if(l==="radius"||l==="theta")return or(l);let y=l==="x"?"align":"baseline",w=jt(y,s,d),S;return Ke(w)?($e(function(A){return`The ${A} for range marks cannot be an expression`}(y)),S=void 0):S=w,l==="x"?Ty[S||(h==="top"?"left":"center")]:Cy[S||h]}function Zf(l,s,d){let{defaultPos:h,defaultPos2:y,range:w}=d;return w?vo(l,s,{defaultPos:h,defaultPos2:y}):qn(l,s,{defaultPos:h})}function vo(l,s,d){let{defaultPos:h,defaultPos2:y}=d,{markDef:w,config:S}=s,A=Si(l),C=ka(l),L=function(G,H,J){let{encoding:re,mark:ee,markDef:se,stack:de,config:fe}=G,ge=Ps(J),we=ka(J),Te=or(J),Fe=re[ge],He=G.scaleName(ge),tt=G.getScaleComponent(ge),{offset:ut}=bu(J in re||J in se?{channel:J,markDef:se,encoding:re,model:G}:{channel:ge,markDef:se,encoding:re,model:G});if(!Fe&&(J==="x2"||J==="y2")&&(re.latitude||re.longitude)){let Xe=ka(J),xt=G.markDef[Xe];return xt!=null?{[Xe]:{value:xt}}:{[Te]:{field:G.getName(J)}}}let Qe=function(Xe){let{channel:xt,channelDef:$t,channel2Def:Mn,markDef:_n,config:kn,scaleName:Bt,scale:It,stack:gn,offset:Cn,defaultRef:un}=Xe;return vt($t)&&gn&&xt.charAt(0)===gn.fieldChannel.charAt(0)?Ws($t,Bt,{suffix:"start"},{offset:Cn}):zh({channel:xt,channelDef:Mn,scaleName:Bt,scale:It,stack:gn,markDef:_n,config:kn,offset:Cn,defaultRef:un})}({channel:J,channelDef:Fe,channel2Def:re[J],markDef:se,config:fe,scaleName:He,scale:tt,stack:de,offset:ut,defaultRef:void 0});return Qe!==void 0?{[Te]:Qe}:tl(J,se)||tl(J,{[J]:$d(J,se,fe.style),[we]:$d(we,se,fe.style)})||tl(J,fe[ee])||tl(J,fe.mark)||{[Te]:Xf({model:G,defaultPos:H,channel:J,scaleName:He,scale:tt})()}}(s,y,A);return{...qn(l,s,{defaultPos:h,vgChannel:L[C]?Vm(l,w,S):or(l)}),...L}}function tl(l,s){let d=ka(l),h=or(l);if(s[h]!==void 0)return{[h]:Xl(l,s[h])};if(s[l]!==void 0)return{[h]:Xl(l,s[l])};if(s[d]){let y=s[d];if(!qs(y))return{[d]:Xl(l,y)};$e(function(w){return`Position range does not support relative band size for ${w}.`}(d))}}function si(l,s){let{config:d,encoding:h,markDef:y}=l,w=y.type,S=Si(s),A=ka(s),C=h[s],L=h[S],G=l.getScaleComponent(s),H=G?G.get("type"):void 0,J=y.orient,re=h[A]??h.size??jt("size",y,d,{vgChannel:A}),ee=hh(s),se=w==="bar"&&(s==="x"?J==="vertical":J==="horizontal");return!Ue(C)||!(Wt(C.bin)||Bn(C.bin)||C.timeUnit&&!L)||re&&!qs(re)||h[ee]||Gn(H)?(vt(C)&&Gn(H)||se)&&!L?function(de,fe,ge){let{markDef:we,encoding:Te,config:Fe,stack:He}=ge,tt=we.orient,ut=ge.scaleName(fe),Qe=ge.getScaleComponent(fe),Xe=ka(fe),xt=Si(fe),$t=hh(fe),Mn=ge.scaleName($t),_n=ge.getScaleComponent($l(fe)),kn=tt==="horizontal"&&fe==="y"||tt==="vertical"&&fe==="x",Bt;(Te.size||we.size)&&(kn?Bt=Hn("size",ge,{vgChannel:Xe,defaultRef:rn(we.size)}):$e(function(oa){return`Cannot apply size to non-oriented mark "${oa}".`}(we.type)));let It=!!Bt,gn=Xh({channel:fe,fieldDef:de,markDef:we,config:Fe,scaleType:(Qe||_n)?.get("type"),useVlSizeChannel:kn});Bt=Bt||{[Xe]:Ry(Xe,Mn||ut,_n||Qe,Fe,gn,!!de,we.type)};let Cn=(Qe||_n)?.get("type")==="band"&&qs(gn)&&!It?"top":"middle",un=Vm(fe,we,Fe,Cn),Na=un==="xc"||un==="yc",{offset:Ia,offsetType:$r}=bu({channel:fe,markDef:we,encoding:Te,model:ge,bandPosition:Na?.5:0}),Yn=zh({channel:fe,channelDef:de,markDef:we,config:Fe,scaleName:ut,scale:Qe,stack:He,offset:Ia,defaultRef:Xf({model:ge,defaultPos:"mid",channel:fe,scaleName:ut,scale:Qe}),bandPosition:Na?$r==="encoding"?0:.5:Ke(gn)?{signal:`(1-${gn})/2`}:qs(gn)?(1-gn.band)/2:0});if(Xe)return{[un]:Yn,...Bt};{let oa=or(xt),on=Bt[Xe],wt=Ia?{...on,offset:Ia}:on;return{[un]:Yn,[oa]:b.isArray(Yn)?[Yn[0],{...Yn[1],offset:wt}]:{...Yn,offset:wt}}}}(C,s,l):vo(s,l,{defaultPos:"zeroOrMax",defaultPos2:"zeroOrMin"}):function(de){let{fieldDef:fe,fieldDef2:ge,channel:we,model:Te}=de,{config:Fe,markDef:He,encoding:tt}=Te,ut=Te.getScaleComponent(we),Qe=Te.scaleName(we),Xe=ut?ut.get("type"):void 0,xt=ut.get("reverse"),$t=Xh({channel:we,fieldDef:fe,markDef:He,config:Fe,scaleType:Xe}),Mn=Te.component.axes[we]?.[0],_n=Mn?.get("translate")??.5,kn=sn(we)?jt("binSpacing",He,Fe)??0:0,Bt=Si(we),It=or(we),gn=or(Bt),Cn=Ua("minBandSize",He,Fe),{offset:un}=bu({channel:we,markDef:He,encoding:tt,model:Te,bandPosition:0}),{offset:Na}=bu({channel:Bt,markDef:He,encoding:tt,model:Te,bandPosition:0}),Ia=function(wt){let{scaleName:Ya,fieldDef:ks}=wt,Qi=Ge(ks,{expr:"datum"});return`abs(scale("${Ya}", ${Ge(ks,{expr:"datum",suffix:"end"})}) - scale("${Ya}", ${Qi}))`}({fieldDef:fe,scaleName:Qe}),$r=Ym(we,kn,xt,_n,un,Cn,Ia),Yn=Ym(Bt,kn,xt,_n,Na??un,Cn,Ia),oa=Ke($t)?{signal:`(1-${$t.signal})/2`}:qs($t)?(1-$t.band)/2:.5,on=Di({fieldDef:fe,fieldDef2:ge,markDef:He,config:Fe});if(Wt(fe.bin)||fe.timeUnit){let wt=fe.timeUnit&&on!==.5;return{[gn]:Km({fieldDef:fe,scaleName:Qe,bandPosition:oa,offset:Yn,useRectOffsetField:wt}),[It]:Km({fieldDef:fe,scaleName:Qe,bandPosition:Ke(oa)?{signal:`1-${oa.signal}`}:1-oa,offset:$r,useRectOffsetField:wt})}}if(Bn(fe.bin)){let wt=Ws(fe,Qe,{},{offset:Yn});if(Ue(ge))return{[gn]:wt,[It]:Ws(ge,Qe,{},{offset:$r})};if(fo(fe.bin)&&fe.bin.step)return{[gn]:wt,[It]:{signal:`scale("${Qe}", ${Ge(fe,{expr:"datum"})} + ${fe.bin.step})`,offset:$r}}}return void $e(Hd(Bt))}({fieldDef:C,fieldDef2:L,channel:s,model:l})}function Ry(l,s,d,h,y,w,S){if(qs(y)){if(!d)return{mult:y.band,field:{group:l}};{let A=d.get("type");if(A==="band"){let C=`bandwidth('${s}')`;y.band!==1&&(C=`${y.band} * ${C}`);let L=Ua("minBandSize",{type:S},h);return{signal:L?`max(${fa(L)}, ${C})`:C}}y.band!==1&&($e(function(C){return`Cannot use the relative band size with ${C} scale.`}(A)),y=void 0)}}else{if(Ke(y))return y;if(y)return{value:y}}if(d){let A=d.get("range");if(po(A)&&b.isNumber(A.step))return{value:A.step-2}}if(!w){let{bandPaddingInner:A,barBandPaddingInner:C,rectBandPaddingInner:L}=h.scale,G=Ve(A,S==="bar"?C:L);if(Ke(G))return{signal:`(1 - (${G.signal})) * ${l}`};if(b.isNumber(G))return{signal:`${1-G} * ${l}`}}return{value:cu(h.view,l)-2}}function Ym(l,s,d,h,y,w,S){if(Dd(l))return 0;let A=l==="x"||l==="y2",C=A?-s/2:s/2;if(Ke(d)||Ke(y)||Ke(h)||w){let L=fa(d),G=fa(y),H=fa(h),J=fa(w),re=w?`(${S} < ${J} ? ${A?"":"-"}0.5 * (${J} - (${S})) : ${C})`:C;return{signal:(H?`${H} + `:"")+(L?`(${L} ? -1 : 1) * `:"")+(G?`(${G} + ${re})`:re)}}return y=y||0,h+(d?-y-C:+y+C)}function Km(l){let{fieldDef:s,scaleName:d,bandPosition:h,offset:y,useRectOffsetField:w}=l;return of({scaleName:d,fieldOrDatumDef:s,bandPosition:h,offset:y,...w?{startSuffix:Vf,endSuffix:Ft}:{}})}let Q_=new Set(["aria","width","height"]);function Ca(l,s){let{fill:d,stroke:h}=s.color==="include"?Oc(l):{};return{...e1(l.markDef,s),...Jf(l,"fill",d),...Jf(l,"stroke",h),...Hn("opacity",l),...Hn("fillOpacity",l),...Hn("strokeOpacity",l),...Hn("strokeWidth",l),...Hn("strokeDash",l),...Ay(l),...Nc(l),...Kf(l,"href"),...X_(l)}}function Jf(l,s,d){let{config:h,mark:y,markDef:w}=l;if(jt("invalid",w,h)==="hide"&&d&&!as(y)){let S=function(A,C){let{invalid:L=!1,channels:G}=C,H=G.reduce((re,ee)=>{let se=A.getScaleComponent(ee);if(se){let de=se.get("type"),fe=A.vgField(ee,{expr:"datum"});fe&&Ga(de)&&(re[fe]=!0)}return re},{}),J=be(H);if(J.length>0){let re=L?"||":"&&";return J.map(ee=>Gh(ee,L)).join(` ${re} `)}}(l,{invalid:!0,channels:Ul});if(S)return{[s]:[{test:S,value:null},...b.array(d)]}}return d?{[s]:d}:{}}function e1(l,s){return Gl.reduce((d,h)=>(Q_.has(h)||l[h]===void 0||s[h]==="ignore"||(d[h]=rn(l[h])),d),{})}function Dc(l){let{config:s,markDef:d}=l;if(jt("invalid",d,s)){let h=function(y,w){let{invalid:S=!1,channels:A}=w,C=A.reduce((G,H)=>{let J=y.getScaleComponent(H);if(J){let re=J.get("type"),ee=y.vgField(H,{expr:"datum",binSuffix:y.stack?.impute?"mid":void 0});ee&&Ga(re)&&(G[ee]=!0)}return G},{}),L=be(C);if(L.length>0){let G=S?"||":"&&";return L.map(H=>Gh(H,S)).join(` ${G} `)}}(l,{channels:Jr});if(h)return{defined:{signal:h}}}return{}}function Ny(l,s){if(s!==void 0)return{[l]:rn(s)}}let Mc="voronoi",Iy={defined:l=>l.type==="point"&&l.nearest,parse:(l,s)=>{if(s.events)for(let d of s.events)d.markname=l.getName(Mc)},marks:(l,s,d)=>{let{x:h,y}=s.project.hasChannel,w=l.mark;if(as(w))return $e(`The "nearest" transform is not supported for ${w} marks.`),d;let S={name:l.getName(Mc),type:"path",interactive:!0,from:{data:l.getName("marks")},encode:{update:{fill:{value:"transparent"},strokeWidth:{value:.35},stroke:{value:"transparent"},isVoronoi:{value:!0},...Nc(l,{reactiveGeom:!0})}},transform:[{type:"voronoi",x:{expr:h||!y?"datum.datum.x || 0":"0"},y:{expr:y||!h?"datum.datum.y || 0":"0"},size:[l.getSizeSignalRef("width"),l.getSizeSignalRef("height")]}]},A=0,C=!1;return d.forEach((L,G)=>{let H=L.name??"";H===l.component.mark[0].name?A=G:H.indexOf(Mc)>=0&&(C=!0)}),C||d.splice(A+1,0,S),d}},Qf={defined:l=>l.type==="point"&&l.resolve==="global"&&l.bind&&l.bind!=="scales"&&!Tf(l.bind),parse:(l,s,d)=>li(s,d),topLevelSignals:(l,s,d)=>{let h=s.name,y=s.project,w=s.bind,S=s.init&&s.init[0],A=Iy.defined(s)?"(item().isVoronoi ? datum.datum : datum)":"datum";return y.items.forEach((C,L)=>{let G=Pe(`${h}_${C.field}`);d.filter(H=>H.name===G).length||d.unshift({name:G,...S?{init:ds(S[L])}:{value:null},on:s.events?[{events:s.events,update:`datum && item().mark.marktype !== 'group' ? ${A}[${b.stringValue(C.field)}] : null`}]:[],bind:w[C.field]??w[C.channel]??w})}),d},signals:(l,s,d)=>{let h=s.name,y=s.project,w=d.filter(L=>L.name===h+Eo)[0],S=h+Rc,A=y.items.map(L=>Pe(`${h}_${L.field}`)),C=A.map(L=>`${L} !== null`).join(" && ");return A.length&&(w.update=`${C} ? {fields: ${S}, values: [${A.join(", ")}]} : null`),delete w.value,delete w.on,d}},Lc="_toggle",Oy={defined:l=>l.type==="point"&&!!l.toggle,signals:(l,s,d)=>d.concat({name:s.name+Lc,value:!1,on:[{events:s.events,update:s.toggle}]}),modifyExpr:(l,s)=>{let d=s.name+Eo,h=s.name+Lc;return`${h} ? null : ${d}, `+(s.resolve==="global"?`${h} ? null : true, `:`${h} ? null : {unit: ${Ha(l)}}, `)+`${h} ? ${d} : null`}},Dy={defined:l=>l.clear!==void 0&&l.clear!==!1,parse:(l,s)=>{s.clear&&(s.clear=b.isString(s.clear)?b.parseSelector(s.clear,"view"):s.clear)},topLevelSignals:(l,s,d)=>{if(Qf.defined(s))for(let h of s.project.items){let y=d.findIndex(w=>w.name===Pe(`${s.name}_${h.field}`));y!==-1&&d[y].on.push({events:s.clear,update:"null"})}return d},signals:(l,s,d)=>{function h(y,w){y!==-1&&d[y].on&&d[y].on.push({events:s.clear,update:w})}if(s.type==="interval")for(let y of s.project.items){let w=d.findIndex(S=>S.name===y.signals.visual);h(w,"[0, 0]"),w===-1&&h(d.findIndex(S=>S.name===y.signals.data),"null")}else{let y=d.findIndex(w=>w.name===s.name+Eo);h(y,"null"),Oy.defined(s)&&(y=d.findIndex(w=>w.name===s.name+Lc),h(y,"false"))}return d}},My={defined:l=>{let s=l.resolve==="global"&&l.bind&&Tf(l.bind),d=l.project.items.length===1&&l.project.items[0].field!==dr;return s&&!d&&$e("Legend bindings are only supported for selections over an individual field or encoding channel."),s&&d},parse:(l,s,d)=>{let h=j(d);if(h.select=b.isString(h.select)?{type:h.select,toggle:s.toggle}:{...h.select,toggle:s.toggle},li(s,h),b.isObject(d.select)&&(d.select.on||d.select.clear)){let S='event.item && indexof(event.item.mark.role, "legend") < 0';for(let A of s.events)A.filter=b.array(A.filter??[]),A.filter.includes(S)||A.filter.push(S)}let y=Cf(s.bind)?s.bind.legend:"click",w=b.isString(y)?b.parseSelector(y,"view"):b.array(y);s.bind={legend:{merge:w}}},topLevelSignals:(l,s,d)=>{let h=s.name,y=Cf(s.bind)&&s.bind.legend,w=S=>A=>{let C=j(A);return C.markname=S,C};for(let S of s.project.items){if(!S.hasLegend)continue;let A=`${Pe(S.field)}_legend`,C=`${h}_${A}`;if(d.filter(L=>L.name===C).length===0){let L=y.merge.map(w(`${A}_symbols`)).concat(y.merge.map(w(`${A}_labels`))).concat(y.merge.map(w(`${A}_entries`)));d.unshift({name:C,...s.init?{}:{value:null},on:[{events:L,update:"isDefined(datum.value) ? datum.value : item().items[0].items[0].datum.value",force:!0},{events:y.merge,update:`!event.item || !datum ? null : ${C}`,force:!0}]})}}return d},signals:(l,s,d)=>{let h=s.name,y=s.project,w=d.find(H=>H.name===h+Eo),S=h+Rc,A=y.items.filter(H=>H.hasLegend).map(H=>Pe(`${h}_${Pe(H.field)}_legend`)),C=`${A.map(H=>`${H} !== null`).join(" && ")} ? {fields: ${S}, values: [${A.join(", ")}]} : null`;s.events&&A.length>0?w.on.push({events:A.map(H=>({signal:H})),update:C}):A.length>0&&(w.update=C,delete w.value,delete w.on);let L=d.find(H=>H.name===h+Lc),G=Cf(s.bind)&&s.bind.legend;return L&&(s.events?L.on.push({...L.on[0],events:G}):L.on[0].events=G),d}},Xm="_translate_anchor",Ly="_translate_delta",Fy={defined:l=>l.type==="interval"&&l.translate,signals:(l,s,d)=>{let h=s.name,y=Ta.defined(s),w=h+Xm,{x:S,y:A}=s.project.hasChannel,C=b.parseSelector(s.translate,"scope");return y||(C=C.map(L=>(L.between[0].markname=h+yo,L))),d.push({name:w,value:{},on:[{events:C.map(L=>L.between[0]),update:"{x: x(unit), y: y(unit)"+(S!==void 0?`, extent_x: ${y?jn(l,Jt):`slice(${S.signals.visual})`}`:"")+(A!==void 0?`, extent_y: ${y?jn(l,Pn):`slice(${A.signals.visual})`}`:"")+"}"}]},{name:h+Ly,value:{},on:[{events:C,update:`{x: ${w}.x - x(unit), y: ${w}.y - y(unit)}`}]}),S!==void 0&&Zm(l,s,S,"width",d),A!==void 0&&Zm(l,s,A,"height",d),d}};function Zm(l,s,d,h,y){let w=s.name,S=w+Xm,A=w+Ly,C=d.channel,L=Ta.defined(s),G=y.filter(fe=>fe.name===d.signals[L?"data":"visual"])[0],H=l.getSizeSignalRef(h).signal,J=l.getScaleComponent(C),re=J&&J.get("type"),ee=J&&J.get("reverse"),se=`${S}.extent_${C}`,de=`${L&&J?re==="log"?"panLog":re==="symlog"?"panSymlog":re==="pow"?"panPow":"panLinear":"panLinear"}(${se}, ${`${L?C===Jt?ee?"":"-":ee?"-":"":""}${A}.${C} / ${L?`${H}`:`span(${se})`}`}${L?re==="pow"?`, ${J.get("exponent")??1}`:re==="symlog"?`, ${J.get("constant")??1}`:"":""})`;G.on.push({events:{signal:A},update:L?de:`clampRange(${de}, 0, ${H})`})}let Jm="_zoom_anchor",Qm="_zoom_delta",eg={defined:l=>l.type==="interval"&&l.zoom,signals:(l,s,d)=>{let h=s.name,y=Ta.defined(s),w=h+Qm,{x:S,y:A}=s.project.hasChannel,C=b.stringValue(l.scaleName(Jt)),L=b.stringValue(l.scaleName(Pn)),G=b.parseSelector(s.zoom,"scope");return y||(G=G.map(H=>(H.markname=h+yo,H))),d.push({name:h+Jm,on:[{events:G,update:y?"{"+[C?`x: invert(${C}, x(unit))`:"",L?`y: invert(${L}, y(unit))`:""].filter(H=>H).join(", ")+"}":"{x: x(unit), y: y(unit)}"}]},{name:w,on:[{events:G,force:!0,update:"pow(1.001, event.deltaY * pow(16, event.deltaMode))"}]}),S!==void 0&&Fc(l,s,S,"width",d),A!==void 0&&Fc(l,s,A,"height",d),d}};function Fc(l,s,d,h,y){let w=s.name,S=d.channel,A=Ta.defined(s),C=y.filter(se=>se.name===d.signals[A?"data":"visual"])[0],L=l.getSizeSignalRef(h).signal,G=l.getScaleComponent(S),H=G&&G.get("type"),J=A?jn(l,S):C.name,re=w+Qm,ee=`${A&&G?H==="log"?"zoomLog":H==="symlog"?"zoomSymlog":H==="pow"?"zoomPow":"zoomLinear":"zoomLinear"}(${J}, ${`${w}${Jm}.${S}`}, ${re}${A?H==="pow"?`, ${G.get("exponent")??1}`:H==="symlog"?`, ${G.get("constant")??1}`:"":""})`;C.on.push({events:{signal:re},update:A?ee:`clampRange(${ee}, 0, ${L})`})}let ps="_store",Eo="_tuple",Py="_modify",tg="vlSelectionResolve",nl=[el,Wm,Hi,Oy,Qf,Ta,My,Dy,Fy,eg,Iy];function Ha(l){let{escape:s}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{escape:!0},d=s?b.stringValue(l.name):l.name,h=function(y){let w=y.parent;for(;w&&!Wa(w);)w=w.parent;return w}(l);if(h){let{facet:y}=h;for(let w of $a)y[w]&&(d+=` + '__facet_${w}_' + (facet[${b.stringValue(h.vgField(w))}])`)}return d}function ng(l){return Se(l.component.selection??{}).reduce((s,d)=>s||d.project.hasSelectionId,!1)}function li(l,s){!b.isString(s.select)&&s.select.on||delete l.events,!b.isString(s.select)&&s.select.clear||delete l.clear,!b.isString(s.select)&&s.select.toggle||delete l.toggle}function qi(l){let s=[];return l.type==="Identifier"?[l.name]:l.type==="Literal"?[l.value]:(l.type==="MemberExpression"&&(s.push(...qi(l.object)),s.push(...qi(l.property))),s)}function ep(l){return l.object.type==="MemberExpression"?ep(l.object):l.object.name==="datum"}function tp(l){let s=b.parseExpression(l),d=new Set;return s.visit(h=>{h.type==="MemberExpression"&&ep(h)&&d.add(qi(h).slice(1).join("."))}),d}class ui extends Ht{clone(){return new ui(null,this.model,j(this.filter))}constructor(s,d,h){super(s),this.model=d,this.filter=h,nt(this,"expr",void 0),nt(this,"_dependentFields",void 0),this.expr=Wi(this.model,this.filter,this),this._dependentFields=tp(this.expr)}dependentFields(){return this._dependentFields}producedFields(){return new Set}assemble(){return{type:"filter",expr:this.expr}}hash(){return`Filter ${this.expr}`}}function yu(l,s,d){let h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"datum",y=b.isString(s)?s:s.param,w=Pe(y),S=b.stringValue(w+ps),A;try{A=l.getSelectionComponent(w,y)}catch{return`!!${w}`}if(A.project.timeUnit){let G=d??l.component.data.raw,H=A.project.timeUnit.clone();G.parent?H.insertAsParentOf(G):G.parent=H}let C=`${A.project.hasSelectionId?"vlSelectionIdTest(":"vlSelectionTest("}${S}, ${h}${A.resolve==="global"?")":`, ${b.stringValue(A.resolve)})`}`,L=`length(data(${S}))`;return s.empty===!1?`${L} && ${C}`:`!${L} || ${C}`}function wo(l,s,d){let h=Pe(s),y=d.encoding,w,S=d.field;try{w=l.getSelectionComponent(h,s)}catch{return h}if(y||S){if(y&&!S){let A=w.project.items.filter(C=>C.channel===y);!A.length||A.length>1?(S=w.project.items[0].field,$e((A.length?"Multiple ":"No ")+`matching ${b.stringValue(y)} encoding found for selection ${b.stringValue(d.param)}. Using "field": ${b.stringValue(S)}.`)):S=A[0].field}}else S=w.project.items[0].field,w.project.items.length>1&&$e(`A "field" or "encoding" must be specified when using a selection as a scale domain. Using "field": ${b.stringValue(S)}.`);return`${w.name}[${b.stringValue(Gt(S))}]`}function Wi(l,s,d){return De(s,h=>b.isString(h)?h:function(y){return y?.param}(h)?yu(l,h,d):Zd(h))}function hs(l,s,d,h){l.encode??={},l.encode[s]??={},l.encode[s].update??={},l.encode[s].update[d]=h}function Vi(l,s,d){let h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{header:!1},{disable:y,orient:w,scale:S,labelExpr:A,title:C,zindex:L,...G}=l.combine();if(!y){for(let H in G){let J=bf[H],re=G[H];if(J&&J!==s&&J!=="both")delete G[H];else if(iu(re)){let{condition:ee,...se}=re,de=b.array(ee),fe=os[H];if(fe){let{vgProp:ge,part:we}=fe;hs(G,we,ge,[...de.map(Te=>{let{test:Fe,...He}=Te;return{test:Wi(null,Fe),...He}}),se]),delete G[H]}else if(fe===null){let ge={signal:de.map(we=>{let{test:Te,...Fe}=we;return`${Wi(null,Te)} ? ${es(Fe)} : `}).join("")+es(se)};G[H]=ge}}else if(Ke(re)){let ee=os[H];if(ee){let{vgProp:se,part:de}=ee;hs(G,de,se,re),delete G[H]}}Z(["labelAlign","labelBaseline"],H)&&G[H]===null&&delete G[H]}if(s==="grid"){if(!G.grid)return;if(G.encode){let{grid:H}=G.encode;G.encode={...H?{grid:H}:{}},ye(G.encode)&&delete G.encode}return{scale:S,orient:w,...G,domain:!1,labels:!1,aria:!1,maxExtent:0,minExtent:0,ticks:!1,zindex:Ve(L,0)}}{if(!h.header&&l.mainExtracted)return;if(A!==void 0){let J=A;G.encode?.labels?.update&&Ke(G.encode.labels.update.text)&&(J=_t(A,"datum.label",G.encode.labels.update.text.signal)),hs(G,"labels","text",{signal:J})}if(G.labelAlign===null&&delete G.labelAlign,G.encode){for(let J of ss)l.hasAxisPart(J)||delete G.encode[J];ye(G.encode)&&delete G.encode}let H=function(J,re){if(J)return b.isArray(J)&&!da(J)?J.map(ee=>mf(ee,re)).join(", "):J}(C,d);return{scale:S,orient:w,grid:!1,...H?{title:H}:{},...G,...d.aria===!1?{aria:!1}:{},zindex:Ve(L,0)}}}}function vu(l){let{axes:s}=l.component,d=[];for(let h of Jr)if(s[h]){for(let y of s[h])if(!y.get("disable")&&!y.get("gridScale")){let w=h==="x"?"height":"width",S=l.getSizeSignalRef(w).signal;w!==S&&d.push({name:w,update:S})}}return d}function ci(l,s,d,h){return Object.assign.apply(null,[{},...l.map(y=>{if(y==="axisOrient"){let w=d==="x"?"bottom":"left",S=s[d==="x"?"axisBottom":"axisLeft"]||{},A=s[d==="x"?"axisTop":"axisRight"]||{},C=new Set([...be(S),...be(A)]),L={};for(let G of C.values())L[G]={signal:`${h.signal} === "${w}" ? ${fa(S[G])} : ${fa(A[G])}`};return L}return s[y]})])}function t1(l,s){let d=[{}];for(let h of l){let y=s[h]?.style;if(y){y=b.array(y);for(let w of y)d.push(s.style[w])}}return Object.assign.apply(null,d)}function ag(l,s,d){let h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},y=x0(l,d,s);if(y!==void 0)return{configFrom:"style",configValue:y};for(let w of["vlOnlyAxisConfig","vgAxisConfig","axisConfigStyle"])if(h[w]?.[l]!==void 0)return{configFrom:w,configValue:h[w][l]};return{}}let $y={scale:l=>{let{model:s,channel:d}=l;return s.scaleName(d)},format:l=>{let{format:s}=l;return s},formatType:l=>{let{formatType:s}=l;return s},grid:l=>{let{fieldOrDatumDef:s,axis:d,scaleType:h}=l;return d.grid??function(y,w){return!Gn(y)&&Ue(w)&&!Wt(w?.bin)&&!Bn(w?.bin)}(h,s)},gridScale:l=>{let{model:s,channel:d}=l;return function(h,y){let w=y==="x"?"y":"x";if(h.getScaleComponent(w))return h.scaleName(w)}(s,d)},labelAlign:l=>{let{axis:s,labelAngle:d,orient:h,channel:y}=l;return s.labelAlign||Uy(d,h,y)},labelAngle:l=>{let{labelAngle:s}=l;return s},labelBaseline:l=>{let{axis:s,labelAngle:d,orient:h,channel:y}=l;return s.labelBaseline||By(d,h,y)},labelFlush:l=>{let{axis:s,fieldOrDatumDef:d,channel:h}=l;return s.labelFlush??function(y,w){if(w==="x"&&Z(["quantitative","temporal"],y))return!0}(d.type,h)},labelOverlap:l=>{let{axis:s,fieldOrDatumDef:d,scaleType:h}=l;return s.labelOverlap??function(y,w,S,A){if(S&&!b.isObject(A)||y!=="nominal"&&y!=="ordinal")return w!=="log"&&w!=="symlog"||"greedy"}(d.type,h,Ue(d)&&!!d.timeUnit,Ue(d)?d.sort:void 0)},orient:l=>{let{orient:s}=l;return s},tickCount:l=>{let{channel:s,model:d,axis:h,fieldOrDatumDef:y,scaleType:w}=l,S=s==="x"?"width":s==="y"?"height":void 0,A=S?d.getSizeSignalRef(S):void 0;return h.tickCount??function(C){let{fieldOrDatumDef:L,scaleType:G,size:H,values:J}=C;if(!J&&!Gn(G)&&G!=="log"){if(Ue(L)){if(Wt(L.bin))return{signal:`ceil(${H.signal}/10)`};if(L.timeUnit&&Z(["month","hours","day","quarter"],zn(L.timeUnit)?.unit))return}return{signal:`ceil(${H.signal}/40)`}}}({fieldOrDatumDef:y,scaleType:w,size:A,values:h.values})},tickMinStep:function(l){let{format:s,fieldOrDatumDef:d}=l;if(s==="d")return 1;if(Ue(d)){let{timeUnit:h}=d;if(h){let y=$0(h);if(y)return{signal:y}}}},title:l=>{let{axis:s,model:d,channel:h}=l;if(s.title!==void 0)return s.title;let y=zy(d,h);if(y!==void 0)return y;let w=d.typedFieldDef(h),S=h==="x"?"x2":"y2",A=d.fieldDef(S);return Hl(w?[Kh(w)]:[],Ue(A)?[Kh(A)]:[])},values:l=>{let{axis:s,fieldOrDatumDef:d}=l;return function(h,y){let w=h.values;if(b.isArray(w))return pc(y,w);if(Ke(w))return w}(s,d)},zindex:l=>{let{axis:s,fieldOrDatumDef:d,mark:h}=l;return s.zindex??function(y,w){return y==="rect"&&tu(w)?1:0}(h,d)}};function rg(l){return`(((${l.signal} % 360) + 360) % 360)`}function By(l,s,d,h){if(l!==void 0){if(d==="x"){if(Ke(l)){let y=rg(l);return{signal:`(45 < ${y} && ${y} < 135) || (225 < ${y} && ${y} < 315) ? "middle" :(${y} <= 45 || 315 <= ${y}) === ${Ke(s)?`(${s.signal} === "top")`:s==="top"} ? "bottom" : "top"`}}if(45<l&&l<135||225<l&&l<315)return"middle";if(Ke(s)){let y=l<=45||315<=l?"===":"!==";return{signal:`${s.signal} ${y} "top" ? "bottom" : "top"`}}return(l<=45||315<=l)==(s==="top")?"bottom":"top"}if(Ke(l)){let y=rg(l);return{signal:`${y} <= 45 || 315 <= ${y} || (135 <= ${y} && ${y} <= 225) ? ${h?'"middle"':"null"} : (45 <= ${y} && ${y} <= 135) === ${Ke(s)?`(${s.signal} === "left")`:s==="left"} ? "top" : "bottom"`}}if(l<=45||315<=l||135<=l&&l<=225)return h?"middle":null;if(Ke(s)){let y=45<=l&&l<=135?"===":"!==";return{signal:`${s.signal} ${y} "left" ? "top" : "bottom"`}}return(45<=l&&l<=135)==(s==="left")?"top":"bottom"}}function Uy(l,s,d){if(l===void 0)return;let h=d==="x",y=h?0:90,w=h?"bottom":"left";if(Ke(l)){let S=rg(l);return{signal:`(${y?`(${S} + 90)`:S} % 180 === 0) ? ${h?null:'"center"'} :(${y} < ${S} && ${S} < ${180+y}) === ${Ke(s)?`(${s.signal} === "${w}")`:s===w} ? "left" : "right"`}}if((l+y)%180==0)return h?null:"center";if(Ke(s)){let S=y<l&&l<180+y?"===":"!==";return{signal:`${`${s.signal} ${S} "${w}"`} ? "left" : "right"`}}return(y<l&&l<180+y)==(s===w)?"left":"right"}function zy(l,s){let d=s==="x"?"x2":"y2",h=l.fieldDef(s),y=l.fieldDef(d),w=h?h.title:void 0,S=y?y.title:void 0;return w&&S?ei(w,S):w||S||(w!==void 0?w:S!==void 0?S:void 0)}class al extends Ht{clone(){return new al(null,j(this.transform))}constructor(s,d){super(s),this.transform=d,nt(this,"_dependentFields",void 0),this._dependentFields=tp(this.transform.calculate)}static parseAllForSortIndex(s,d){return d.forEachFieldDef((h,y)=>{if(Li(h)&&cc(h.sort)){let{field:w,timeUnit:S}=h,A=h.sort,C=A.map((L,G)=>`${Zd({field:w,timeUnit:S,equal:L})} ? ${G} : `).join("")+A.length;s=new al(s,{calculate:C,as:rl(h,y,{forAs:!0})})}}),s}producedFields(){return new Set([this.transform.as])}dependentFields(){return this._dependentFields}assemble(){return{type:"formula",expr:this.transform.calculate,as:this.transform.as}}hash(){return`Calculate ${ae(this.transform)}`}}function rl(l,s,d){return Ge(l,{prefix:s,suffix:"sort_index",...d??{}})}function Pc(l,s){return Z(["top","bottom"],s)?"column":Z(["left","right"],s)||l==="row"?"row":"column"}function Yi(l,s,d,h){let y=h==="row"?d.headerRow:h==="column"?d.headerColumn:d.headerFacet;return Ve((s||{})[l],y[l],d.header[l])}function $c(l,s,d,h){let y={};for(let w of l){let S=Yi(w,s||{},d,h);S!==void 0&&(y[w]=S)}return y}let Eu=["row","column"],Bc=["header","footer"];function ms(l,s){let d=l.component.layoutHeaders[s].title,h=l.config?l.config:void 0,y=l.component.layoutHeaders[s].facetFieldDef?l.component.layoutHeaders[s].facetFieldDef:void 0,{titleAnchor:w,titleAngle:S,titleOrient:A}=$c(["titleAnchor","titleAngle","titleOrient"],y.header,h,s),C=Pc(s,A),L=Dt(S);return{name:`${s}-title`,type:"group",role:`${C}-title`,title:{text:d,...s==="row"?{orient:"left"}:{},style:"guide-title",...ig(L,C),...On(C,L,w),...Uc(h,y,s,cm,yc)}}}function On(l,s){switch(arguments.length>2&&arguments[2]!==void 0?arguments[2]:"middle"){case"start":return{align:"left"};case"end":return{align:"right"}}let d=Uy(s,l==="row"?"left":"top",l==="row"?"y":"x");return d?{align:d}:{}}function ig(l,s){let d=By(l,s==="row"?"left":"top",s==="row"?"y":"x",!0);return d?{baseline:d}:{}}function Gy(l,s){let d=l.component.layoutHeaders[s],h=[];for(let y of Bc)if(d[y])for(let w of d[y]){let S=il(l,s,y,d,w);S!=null&&h.push(S)}return h}function np(l,s){let{sort:d}=l;return ri(d)?{field:Ge(d,{expr:"datum"}),order:d.order??"ascending"}:b.isArray(d)?{field:rl(l,s,{expr:"datum"}),order:"ascending"}:{field:Ge(l,{expr:"datum"}),order:d??"ascending"}}function _o(l,s,d){let{format:h,formatType:y,labelAngle:w,labelAnchor:S,labelOrient:A,labelExpr:C}=$c(["format","formatType","labelAngle","labelAnchor","labelOrient","labelExpr"],l.header,d,s),L=Hh({fieldOrDatumDef:l,format:h,formatType:y,expr:"parent",config:d}).signal,G=Pc(s,A);return{text:{signal:C?_t(_t(C,"datum.label",L),"datum.value",Ge(l,{expr:"parent"})):L},...s==="row"?{orient:"left"}:{},style:"guide-label",frame:"group",...ig(w,G),...On(G,w,S),...Uc(d,l,s,dm,vc)}}function il(l,s,d,h,y){if(y){let w=null,{facetFieldDef:S}=h,A=l.config?l.config:void 0;if(S&&y.labels){let{labelOrient:H}=$c(["labelOrient"],S.header,A,s);(s==="row"&&!Z(["top","bottom"],H)||s==="column"&&!Z(["left","right"],H))&&(w=_o(S,s,A))}let C=Wa(l)&&!Zl(l.facet),L=y.axes,G=L?.length>0;if(w||G){let H=s==="row"?"height":"width";return{name:l.getName(`${s}_${d}`),type:"group",role:`${s}-${d}`,...h.facetFieldDef?{from:{data:l.getName(`${s}_domain`)},sort:np(S,s)}:{},...G&&C?{from:{data:l.getName(`facet_domain_${s}`)}}:{},...w?{title:w}:{},...y.sizeSignal?{encode:{update:{[H]:y.sizeSignal}}}:{},...G?{axes:L}:{}}}}return null}let jy={column:{start:0,end:1},row:{start:1,end:0}};function Hy(l,s){return jy[s][l]}function Uc(l,s,d,h,y){let w={};for(let S of h){if(!y[S])continue;let A=Yi(S,s?.header,l,d);A!==void 0&&(w[y[S]]=A)}return w}function fr(l){return[...zc(l,"width"),...zc(l,"height"),...zc(l,"childWidth"),...zc(l,"childHeight")]}function zc(l,s){let d=s==="width"?"x":"y",h=l.component.layoutSize.get(s);if(!h||h==="merged")return[];let y=l.getSizeSignalRef(s).signal;if(h==="step"){let w=l.getScaleComponent(d);if(w){let S=w.get("type"),A=w.get("range");if(Gn(S)&&po(A)){let C=l.scaleName(d);return Wa(l.parent)&&l.parent.component.resolve.scale[d]==="independent"?[Gc(C,A)]:[Gc(C,A),{name:y,update:ap(C,w,`domain('${C}').length`)}]}}throw new Error("layout size is step although width/height is not step.")}if(h=="container"){let w=y.endsWith("width"),S=w?"containerSize()[0]":"containerSize()[1]",A=`isFinite(${S}) ? ${S} : ${us(l.config.view,w?"width":"height")}`;return[{name:y,init:A,on:[{update:A,events:"window:resize"}]}]}return[{name:y,value:h}]}function Gc(l,s){let d=`${l}_step`;return Ke(s.step)?{name:d,update:s.step.signal}:{name:d,value:s.step}}function ap(l,s,d){let h=s.get("type"),y=s.get("padding"),w=Ve(s.get("paddingOuter"),y),S=s.get("paddingInner");return S=h==="band"?S!==void 0?S:y:1,`bandspace(${d}, ${fa(S)}, ${fa(w)}) * ${l}_step`}function og(l){return l==="childWidth"?"width":l==="childHeight"?"height":l}function sg(l,s){return be(l).reduce((d,h)=>{let y=l[h];return{...d,...mu(s,y,h,w=>rn(w.value))}},{})}function lg(l,s){if(Wa(s))return l==="theta"?"independent":"shared";if(vs(s))return"shared";if(Ki(s))return sn(l)||l==="theta"||l==="radius"?"independent":"shared";throw new Error("invalid model type for resolve")}function rp(l,s){let d=l.scale[s],h=sn(s)?"axis":"legend";return d==="independent"?(l[h][s]==="shared"&&$e(function(y){return`Setting the scale to be independent for "${y}" means we also have to set the guide (axis or legend) to be independent.`}(s)),"independent"):l[h][s]||"shared"}let ug=be({aria:1,clipHeight:1,columnPadding:1,columns:1,cornerRadius:1,description:1,direction:1,fillColor:1,format:1,formatType:1,gradientLength:1,gradientOpacity:1,gradientStrokeColor:1,gradientStrokeWidth:1,gradientThickness:1,gridAlign:1,labelAlign:1,labelBaseline:1,labelColor:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labelSeparation:1,legendX:1,legendY:1,offset:1,orient:1,padding:1,rowPadding:1,strokeColor:1,symbolDash:1,symbolDashOffset:1,symbolFillColor:1,symbolLimit:1,symbolOffset:1,symbolOpacity:1,symbolSize:1,symbolStrokeColor:1,symbolStrokeWidth:1,symbolType:1,tickCount:1,tickMinStep:1,title:1,titleAlign:1,titleAnchor:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleLineHeight:1,titleOpacity:1,titleOrient:1,titlePadding:1,type:1,values:1,zindex:1,disable:1,labelExpr:1,selections:1,opacity:1,shape:1,stroke:1,fill:1,size:1,strokeWidth:1,strokeDash:1,encode:1});class qy extends Ui{}let ol={symbols:function(l,s){let{fieldOrDatumDef:d,model:h,channel:y,legendCmpt:w,legendType:S}=s;if(S!=="symbol")return;let{markDef:A,encoding:C,config:L,mark:G}=h,H=A.filled&&G!=="trail",J={...Pd({},h,O_),...Oc(h,{filled:H})},re=w.get("symbolOpacity")??L.legend.symbolOpacity,ee=w.get("symbolFillColor")??L.legend.symbolFillColor,se=w.get("symbolStrokeColor")??L.legend.symbolStrokeColor,de=re===void 0?cg(C.opacity)??A.opacity:void 0;if(J.fill){if(y==="fill"||H&&y===Me)delete J.fill;else if(J.fill.field)ee?delete J.fill:(J.fill=rn(L.legend.symbolBaseFillColor??"black"),J.fillOpacity=rn(de??1));else if(b.isArray(J.fill)){let fe=dg(C.fill??C.color)??A.fill??(H&&A.color);fe&&(J.fill=rn(fe))}}if(J.stroke){if(y==="stroke"||!H&&y===Me)delete J.stroke;else if(J.stroke.field||se)delete J.stroke;else if(b.isArray(J.stroke)){let fe=Ve(dg(C.stroke||C.color),A.stroke,H?A.color:void 0);fe&&(J.stroke={value:fe})}}if(y!==_i){let fe=Ue(d)&&jc(h,w,d);fe?J.opacity=[{test:fe,...rn(de??1)},rn(L.legend.unselectedOpacity)]:de&&(J.opacity=rn(de))}return J={...J,...l},ye(J)?void 0:J},gradient:function(l,s){let{model:d,legendType:h,legendCmpt:y}=s;if(h!=="gradient")return;let{config:w,markDef:S,encoding:A}=d,C={},L=(y.get("gradientOpacity")??w.legend.gradientOpacity)===void 0?cg(A.opacity)||S.opacity:void 0;return L&&(C.opacity=rn(L)),C={...C,...l},ye(C)?void 0:C},labels:function(l,s){let{fieldOrDatumDef:d,model:h,channel:y,legendCmpt:w}=s,S=h.legend(y)||{},A=h.config,C=Ue(d)?jc(h,w,d):void 0,L=C?[{test:C,value:1},{value:A.legend.unselectedOpacity}]:void 0,{format:G,formatType:H}=S,J;Vs(H)?J=ai({fieldOrDatumDef:d,field:"datum.value",format:G,formatType:H,config:A}):G===void 0&&H===void 0&&A.customFormatTypes&&(d.type==="quantitative"&&A.numberFormatType?J=ai({fieldOrDatumDef:d,field:"datum.value",format:A.numberFormat,formatType:A.numberFormatType,config:A}):d.type==="temporal"&&A.timeFormatType&&Ue(d)&&d.timeUnit===void 0&&(J=ai({fieldOrDatumDef:d,field:"datum.value",format:A.timeFormat,formatType:A.timeFormatType,config:A})));let re={...L?{opacity:L}:{},...J?{text:J}:{},...l};return ye(re)?void 0:re},entries:function(l,s){let{legendCmpt:d}=s;return d.get("selections")?.length?{...l,fill:{value:"transparent"}}:l}};function cg(l){return fg(l,(s,d)=>Math.max(s,d.value))}function dg(l){return fg(l,(s,d)=>Ve(s,d.value))}function fg(l,s){return function(d){let h=d?.condition;return!!h&&(b.isArray(h)||ur(h))}(l)?b.array(l.condition).reduce(s,l.value):ur(l)?l.value:void 0}function jc(l,s,d){let h=s.get("selections");if(!h?.length)return;let y=b.stringValue(d.field);return h.map(w=>`(!length(data(${b.stringValue(Pe(w)+ps)})) || (${w}[${y}] && indexof(${w}[${y}], datum.value) >= 0))`).join(" || ")}let di={direction:l=>{let{direction:s}=l;return s},format:l=>{let{fieldOrDatumDef:s,legend:d,config:h}=l,{format:y,formatType:w}=d;return Z0(s,s.type,y,w,h,!1)},formatType:l=>{let{legend:s,fieldOrDatumDef:d,scaleType:h}=l,{formatType:y}=s;return J0(y,d,h)},gradientLength:l=>{let{legend:s,legendConfig:d}=l;return s.gradientLength??d.gradientLength??function(h){let{legendConfig:y,model:w,direction:S,orient:A,scaleType:C}=h,{gradientHorizontalMaxLength:L,gradientHorizontalMinLength:G,gradientVerticalMaxLength:H,gradientVerticalMinLength:J}=y;if(Mr(C))return S==="horizontal"?A==="top"||A==="bottom"?ip(w,"width",G,L):G:ip(w,"height",J,H)}(l)},labelOverlap:l=>{let{legend:s,legendConfig:d,scaleType:h}=l;return s.labelOverlap??d.labelOverlap??function(y){if(Z(["quantile","threshold","log","symlog"],y))return"greedy"}(h)},symbolType:l=>{let{legend:s,markDef:d,channel:h,encoding:y}=l;return s.symbolType??function(w,S,A,C){if(S!=="shape"){let L=dg(A)??C;if(L)return L}switch(w){case"bar":case"rect":case"image":case"square":return"square";case"line":case"trail":case"rule":return"stroke";case"arc":case"point":case"circle":case"tick":case"geoshape":case"area":case"text":return"circle"}}(d.type,h,y.shape,d.shape)},title:l=>{let{fieldOrDatumDef:s,config:d}=l;return is(s,d,{allowDisabling:!0})},type:l=>{let{legendType:s,scaleType:d,channel:h}=l;if(Jo(h)&&Mr(d)){if(s==="gradient")return}else if(s==="symbol")return;return s},values:l=>{let{fieldOrDatumDef:s,legend:d}=l;return function(h,y){let w=h.values;if(b.isArray(w))return pc(y,w);if(Ke(w))return w}(d,s)}};function pg(l){let{legend:s}=l;return Ve(s.type,function(d){let{channel:h,timeUnit:y,scaleType:w}=d;if(Jo(h)){if(Z(["quarter","month","day"],y))return"symbol";if(Mr(w))return"gradient"}return"symbol"}(l))}function hg(l){let{legendConfig:s,legendType:d,orient:h,legend:y}=l;return y.direction??s[d?"gradientDirection":"symbolDirection"]??function(w,S){switch(w){case"top":case"bottom":return"horizontal";case"left":case"right":case"none":case void 0:return;default:return S==="gradient"?"horizontal":void 0}}(h,d)}function ip(l,s,d,h){return{signal:`clamp(${l.getSizeSignalRef(s).signal}, ${d}, ${h})`}}function op(l){let s=ln(l)?function(d){let{encoding:h}=d,y={};for(let w of[Me,...Af]){let S=mn(h[w]);S&&d.getScaleComponent(w)&&(w===En&&Ue(S)&&S.type===Hs||(y[w]=ko(d,w)))}return y}(l):function(d){let{legends:h,resolve:y}=d.component;for(let w of d.children){op(w);for(let S of be(w.component.legends))y.legend[S]=rp(d.component.resolve,S),y.legend[S]==="shared"&&(h[S]=mg(h[S],w.component.legends[S]),h[S]||(y.legend[S]="independent",delete h[S]))}for(let w of be(h))for(let S of d.children)S.component.legends[w]&&y.legend[w]==="shared"&&delete S.component.legends[w];return h}(l);return l.component.legends=s,s}function sp(l,s,d,h){switch(s){case"disable":return d!==void 0;case"values":return!!d?.values;case"title":if(s==="title"&&l===h?.title)return!0}return l===(d||{})[s]}function ko(l,s){let d=l.legend(s),{markDef:h,encoding:y,config:w}=l,S=w.legend,A=new qy({},function(we,Te){let Fe=we.scaleName(Te);if(we.mark==="trail"){if(Te==="color")return{stroke:Fe};if(Te==="size")return{strokeWidth:Fe}}return Te==="color"?we.markDef.filled?{fill:Fe}:{stroke:Fe}:{[Te]:Fe}}(l,s));(function(we,Te,Fe){let He=we.fieldDef(Te)?.field;for(let tt of Se(we.component.selection??{})){let ut=tt.project.hasField[He]??tt.project.hasChannel[Te];if(ut&&My.defined(tt)){let Qe=Fe.get("selections")??[];Qe.push(tt.name),Fe.set("selections",Qe,!1),ut.hasLegend=!0}}})(l,s,A);let C=d!==void 0?!d:S.disable;if(A.set("disable",C,d!==void 0),C)return A;d=d||{};let L=l.getScaleComponent(s).get("type"),G=mn(y[s]),H=Ue(G)?zn(G.timeUnit)?.unit:void 0,J=d.orient||w.legend.orient||"right",re=pg({legend:d,channel:s,timeUnit:H,scaleType:L}),ee={legend:d,channel:s,model:l,markDef:h,encoding:y,fieldOrDatumDef:G,legendConfig:S,config:w,scaleType:L,orient:J,legendType:re,direction:hg({legend:d,legendType:re,orient:J,legendConfig:S})};for(let we of ug){if(re==="gradient"&&we.startsWith("symbol")||re==="symbol"&&we.startsWith("gradient"))continue;let Te=we in di?di[we](ee):d[we];if(Te!==void 0){let Fe=sp(Te,we,d,l.fieldDef(s));(Fe||w.legend[we]===void 0)&&A.set(we,Te,Fe)}}let se=d?.encoding??{},de=A.get("selections"),fe={},ge={fieldOrDatumDef:G,model:l,channel:s,legendCmpt:A,legendType:re};for(let we of["labels","legend","title","symbols","gradient","entries"]){let Te=sg(se[we]??{},l),Fe=we in ol?ol[we](Te,ge):Te;Fe===void 0||ye(Fe)||(fe[we]={...de?.length&&Ue(G)?{name:`${Pe(G.field)}_legend_${we}`}:{},...de?.length?{interactive:!!de}:{},update:Fe})}return ye(fe)||A.set("encode",fe,!!d?.encoding),A}function mg(l,s){if(!l)return s.clone();let d=l.getWithExplicit("orient"),h=s.getWithExplicit("orient");if(d.explicit&&h.explicit&&d.value!==h.value)return;let y=!1;for(let w of ug){let S=Gi(l.getWithExplicit(w),s.getWithExplicit(w),w,"legend",(A,C)=>{switch(w){case"symbolType":return Wy(A,C);case"title":return ti(A,C);case"type":return y=!0,Lr("symbol")}return Tc(A,C,w,"legend")});l.setWithExplicit(w,S)}return y&&(l.implicit?.encode?.gradient&&lt(l.implicit,["encode","gradient"]),l.explicit?.encode?.gradient&&lt(l.explicit,["encode","gradient"])),l}function Wy(l,s){return s.value==="circle"?s:l}function lp(l){let s=l.component.legends,d={};for(let h of be(s)){let y=Ye(l.getScaleComponent(h).get("domains"));if(d[y])for(let w of d[y])mg(w,s[h])||d[y].push(s[h]);else d[y]=[s[h].clone()]}return Se(d).flat().map(h=>function(y,w){let{disable:S,labelExpr:A,selections:C,...L}=y.combine();if(!S){if(w.aria===!1&&L.aria==null&&(L.aria=!1),L.encode?.symbols){let G=L.encode.symbols.update;!G.fill||G.fill.value==="transparent"||G.stroke||L.stroke||(G.stroke={value:"transparent"});for(let H of Af)L[H]&&delete G[H]}if(L.title||delete L.title,A!==void 0){let G=A;L.encode?.labels?.update&&Ke(L.encode.labels.update.text)&&(G=_t(A,"datum.label",L.encode.labels.update.text.signal)),function(H,J,re,ee){H.encode??={},H.encode[J]??={},H.encode[J].update??={},H.encode[J].update[re]=ee}(L,"labels","text",{signal:G})}return L}}(h,l.config)).filter(h=>h!==void 0)}function gg(l){return vs(l)||Ki(l)?function(s){return s.children.reduce((d,h)=>d.concat(h.assembleProjections()),Hc(s))}(l):Hc(l)}function Hc(l){let s=l.component.projection;if(!s||s.merged)return[];let d=s.combine(),{name:h}=d;if(s.data){let y={signal:`[${s.size.map(S=>S.signal).join(", ")}]`},w=s.data.reduce((S,A)=>{let C=Ke(A)?A.signal:`data('${l.lookupDataSource(A)}')`;return Z(S,C)||S.push(C),S},[]);if(w.length<=0)throw new Error("Projection's fit didn't find any data sources");return[{name:h,size:y,fit:{signal:w.length>1?`[${w.join(", ")}]`:w[0]},...d}]}return[{name:h,translate:{signal:"[width / 2, height / 2]"},...d}]}let qc=["type","clipAngle","clipExtent","center","rotate","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];class bg extends Ui{constructor(s,d,h,y){super({...d},{name:s}),this.specifiedProjection=d,this.size=h,this.data=y,nt(this,"merged",!1)}get isFit(){return!!this.data}}function yg(l){l.component.projection=ln(l)?function(s){if(s.hasProjection){let d=Jn(s.specifiedProjection),h=!(d&&(d.scale!=null||d.translate!=null)),y=h?[s.getSizeSignalRef("width"),s.getSizeSignalRef("height")]:void 0,w=h?function(A){let C=[],{encoding:L}=A;for(let G of[[Fa,et],[ar,ca]])(mn(L[G[0]])||mn(L[G[1]]))&&C.push({signal:A.getName(`geojson_${C.length}`)});return A.channelHasField(En)&&A.typedFieldDef(En).type===Hs&&C.push({signal:A.getName(`geojson_${C.length}`)}),C.length===0&&C.push(A.requestDataName(tn.Main)),C}(s):void 0,S=new bg(s.projectionName(!0),{...Jn(s.config.projection)??{},...d??{}},y,w);return S.get("type")||S.set("type","equalEarth",!1),S}}(l):function(s){if(s.children.length===0)return;let d;for(let y of s.children)yg(y);let h=le(s.children,y=>{let w=y.component.projection;if(w){if(d){let S=function(A,C){let L=le(qc,G=>!b.hasOwnProperty(A.explicit,G)&&!b.hasOwnProperty(C.explicit,G)||!!(b.hasOwnProperty(A.explicit,G)&&b.hasOwnProperty(C.explicit,G)&&Re(A.get(G),C.get(G))));if(Re(A.size,C.size)){if(L)return A;if(Re(A.explicit,{}))return C;if(Re(C.explicit,{}))return A}return null}(d,w);return S&&(d=S),!!S}return d=w,!0}return!0});if(d&&h){let y=s.projectionName(!0),w=new bg(y,d.specifiedProjection,d.size,j(d.data));for(let S of s.children){let A=S.component.projection;A&&(A.isFit&&w.data.push(...S.component.projection.data),S.renameProjection(A.get("name"),y),A.merged=!0)}return w}}(l)}function Vy(l,s,d,h){if(ru(s,d)){let y=ln(l)?l.axis(d)??l.legend(d)??{}:{},w=Ge(s,{expr:"datum"}),S=Ge(s,{expr:"datum",binSuffix:"end"});return{formulaAs:Ge(s,{binSuffix:"range",forAs:!0}),formula:mo(w,S,y.format,y.formatType,h)}}return{}}function up(l,s){return`${Ri(l)}_${s}`}function xo(l,s,d){let h=up(at(d,void 0)??{},s);return l.getName(`${h}_bins`)}function vg(l,s,d){let h,y;h=function(L){return"as"in L}(l)?b.isString(l.as)?[l.as,`${l.as}_end`]:[l.as[0],l.as[1]]:[Ge(l,{forAs:!0}),Ge(l,{binSuffix:"end",forAs:!0})];let w={...at(s,void 0)},S=up(w,l.field),{signal:A,extentSignal:C}=function(L,G){return{signal:L.getName(`${G}_bins`),extentSignal:L.getName(`${G}_extent`)}}(d,S);if(Ir(w.extent)){let L=w.extent;y=wo(d,L.param,L),delete w.extent}return{key:S,binComponent:{bin:w,field:l.field,as:[h],...A?{signal:A}:{},...C?{extentSignal:C}:{},...y?{span:y}:{}}}}class fi extends Ht{clone(){return new fi(null,j(this.bins))}constructor(s,d){super(s),this.bins=d}static makeFromEncoding(s,d){let h=d.reduceFieldDef((y,w,S)=>{if(ha(w)&&Wt(w.bin)){let{key:A,binComponent:C}=vg(w,w.bin,d);y[A]={...C,...y[A],...Vy(d,w,S,d.config)}}return y},{});return ye(h)?null:new fi(s,h)}static makeFromTransform(s,d,h){let{key:y,binComponent:w}=vg(d,d.bin,h);return new fi(s,{[y]:w})}merge(s,d){for(let h of be(s.bins))h in this.bins?(d(s.bins[h].signal,this.bins[h].signal),this.bins[h].as=Ae([...this.bins[h].as,...s.bins[h].as],ae)):this.bins[h]=s.bins[h];for(let h of s.children)s.removeChild(h),h.parent=this;s.remove()}producedFields(){return new Set(Se(this.bins).map(s=>s.as).flat(2))}dependentFields(){return new Set(Se(this.bins).map(s=>s.field))}hash(){return`Bin ${ae(this.bins)}`}assemble(){return Se(this.bins).flatMap(s=>{let d=[],[h,...y]=s.as,{extent:w,...S}=s.bin,A={type:"bin",field:Gt(s.field),as:h,signal:s.signal,...Ir(w)?{extent:null}:{extent:w},...s.span?{span:{signal:`span(${s.span})`}}:{},...S};!w&&s.extentSignal&&(d.push({type:"extent",field:Gt(s.field),signal:s.extentSignal}),A.extent={signal:s.extentSignal}),d.push(A);for(let C of y)for(let L=0;L<2;L++)d.push({type:"formula",expr:Ge({field:h[L]},{expr:"datum"}),as:C[L]});return s.formula&&d.push({type:"formula",expr:s.formula,as:s.formulaAs}),d})}}function Yy(l,s,d,h){let y=ln(h)?h.encoding[Si(s)]:void 0;if(ha(d)&&ln(h)&&cf(d,y,h.markDef,h.config)){l.add(Ge(d,{})),l.add(Ge(d,{suffix:"end"}));let{mark:w,markDef:S,config:A}=h,C=Di({fieldDef:d,markDef:S,config:A});lc(w)&&C!==.5&&sn(s)&&(l.add(Ge(d,{suffix:Vf})),l.add(Ge(d,{suffix:Ft}))),d.bin&&ru(d,s)&&l.add(Ge(d,{binSuffix:"range"}))}else if(Zo(s)){let w=ph(s);l.add(h.getName(w))}else l.add(Ge(d));return Li(d)&&function(w){return b.isObject(w)&&"field"in w}(d.scale?.range)&&l.add(d.scale.range.field),l}class qa extends Ht{clone(){return new qa(null,new Set(this.dimensions),j(this.measures))}constructor(s,d,h){super(s),this.dimensions=d,this.measures=h}get groupBy(){return this.dimensions}static makeFromEncoding(s,d){let h=!1;d.forEachFieldDef(S=>{S.aggregate&&(h=!0)});let y={},w=new Set;return h?(d.forEachFieldDef((S,A)=>{let{aggregate:C,field:L}=S;if(C)if(C==="count")y["*"]??={},y["*"].count=new Set([Ge(S,{forAs:!0})]);else{if(Qr(C)||Ti(C)){let G=Qr(C)?"argmin":"argmax",H=C[G];y[H]??={},y[H][G]=new Set([Ge({op:G,field:H},{forAs:!0})])}else y[L]??={},y[L][C]=new Set([Ge(S,{forAs:!0})]);Rr(A)&&d.scaleDomain(A)==="unaggregated"&&(y[L]??={},y[L].min=new Set([Ge({field:L,aggregate:"min"},{forAs:!0})]),y[L].max=new Set([Ge({field:L,aggregate:"max"},{forAs:!0})]))}else Yy(w,A,S,d)}),w.size+be(y).length===0?null:new qa(s,w,y)):null}static makeFromTransform(s,d){let h=new Set,y={};for(let w of d.aggregate){let{op:S,field:A,as:C}=w;S&&(S==="count"?(y["*"]??={},y["*"].count=new Set([C||Ge(w,{forAs:!0})])):(y[A]??={},y[A][S]=new Set([C||Ge(w,{forAs:!0})])))}for(let w of d.groupby??[])h.add(w);return h.size+be(y).length===0?null:new qa(s,h,y)}merge(s){return Ne(this.dimensions,s.dimensions)?(function(d,h){for(let y of be(h)){let w=h[y];for(let S of be(w))y in d?d[y][S]=new Set([...d[y][S]??[],...w[S]]):d[y]={[S]:w[S]}}}(this.measures,s.measures),!0):(function(){ac.debug(...arguments)}("different dimensions, cannot merge"),!1)}addDimensions(s){s.forEach(this.dimensions.add,this.dimensions)}dependentFields(){return new Set([...this.dimensions,...be(this.measures)])}producedFields(){let s=new Set;for(let d of be(this.measures))for(let h of be(this.measures[d])){let y=this.measures[d][h];y.size===0?s.add(`${h}_${d}`):y.forEach(s.add,s)}return s}hash(){return`Aggregate ${ae({dimensions:this.dimensions,measures:this.measures})}`}assemble(){let s=[],d=[],h=[];for(let y of be(this.measures))for(let w of be(this.measures[y]))for(let S of this.measures[y][w])h.push(S),s.push(w),d.push(y==="*"?null:Gt(y));return{type:"aggregate",groupby:[...this.dimensions].map(Gt),ops:s,fields:d,as:h}}}class sl extends Ht{constructor(s,d,h,y){super(s),this.model=d,this.name=h,this.data=y,nt(this,"column",void 0),nt(this,"row",void 0),nt(this,"facet",void 0),nt(this,"childModel",void 0);for(let w of $a){let S=d.facet[w];if(S){let{bin:A,sort:C}=S;this[w]={name:d.getName(`${w}_domain`),fields:[Ge(S),...Wt(A)?[Ge(S,{binSuffix:"end"})]:[]],...ri(C)?{sortField:C}:b.isArray(C)?{sortIndexField:rl(S,w)}:{}}}}this.childModel=d.child}hash(){let s="Facet";for(let d of $a)this[d]&&(s+=` ${d.charAt(0)}:${ae(this[d])}`);return s}get fields(){let s=[];for(let d of $a)this[d]?.fields&&s.push(...this[d].fields);return s}dependentFields(){let s=new Set(this.fields);for(let d of $a)this[d]&&(this[d].sortField&&s.add(this[d].sortField.field),this[d].sortIndexField&&s.add(this[d].sortIndexField));return s}producedFields(){return new Set}getSource(){return this.name}getChildIndependentFieldsWithStep(){let s={};for(let d of Jr){let h=this.childModel.component.scales[d];if(h&&!h.merged){let y=h.get("type"),w=h.get("range");if(Gn(y)&&po(w)){let S=Ag(ys(this.childModel,d));S?s[d]=S:$e(pa(d))}}}return s}assembleRowColumnHeaderData(s,d,h){let y={row:"y",column:"x",facet:void 0}[s],w=[],S=[],A=[];y&&h&&h[y]&&(d?(w.push(`distinct_${h[y]}`),S.push("max")):(w.push(h[y]),S.push("distinct")),A.push(`distinct_${h[y]}`));let{sortField:C,sortIndexField:L}=this[s];if(C){let{op:G=uc,field:H}=C;w.push(H),S.push(G),A.push(Ge(C,{forAs:!0}))}else L&&(w.push(L),S.push("max"),A.push(L));return{name:this[s].name,source:d??this.data,transform:[{type:"aggregate",groupby:this[s].fields,...w.length?{fields:w,ops:S,as:A}:{}}]}}assembleFacetHeaderData(s){let{columns:d}=this.model.layout,{layoutHeaders:h}=this.model.component,y=[],w={};for(let C of Eu){for(let L of Bc){let G=(h[C]&&h[C][L])??[];for(let H of G)if(H.axes?.length>0){w[C]=!0;break}}if(w[C]){let L=`length(data("${this.facet.name}"))`,G=C==="row"?d?{signal:`ceil(${L} / ${d})`}:1:d?{signal:`min(${L}, ${d})`}:{signal:L};y.push({name:`${this.facet.name}_${C}`,transform:[{type:"sequence",start:0,stop:G}]})}}let{row:S,column:A}=w;return(S||A)&&y.unshift(this.assembleRowColumnHeaderData("facet",null,s)),y}assemble(){let s=[],d=null,h=this.getChildIndependentFieldsWithStep(),{column:y,row:w,facet:S}=this;if(y&&w&&(h.x||h.y)){d=`cross_${this.column.name}_${this.row.name}`;let A=[].concat(h.x??[],h.y??[]),C=A.map(()=>"distinct");s.push({name:d,source:this.data,transform:[{type:"aggregate",groupby:this.fields,fields:A,ops:C}]})}for(let A of[Yr,Je])this[A]&&s.push(this.assembleRowColumnHeaderData(A,d,h));if(S){let A=this.assembleFacetHeaderData(h);A&&s.push(...A)}return s}}function Wc(l){return l.startsWith("'")&&l.endsWith("'")||l.startsWith('"')&&l.endsWith('"')?l.slice(1,-1):l}function n1(l){let s={};return P(l.filter,d=>{if(ql(d)){let h=null;Yd(d)?h=Un(d.equal):Gs(d)?h=Un(d.lte):zs(d)?h=Un(d.lt):js(d)?h=Un(d.gt):Mh(d)?h=Un(d.gte):Kd(d)?h=d.range[0]:Xd(d)&&(h=(d.oneOf??d.in)[0]),h&&(Bs(h)?s[d.field]="date":b.isNumber(h)?s[d.field]="number":b.isString(h)&&(s[d.field]="string")),d.timeUnit&&(s[d.field]="date")}}),s}function Wn(l){let s={};function d(h){var y;Rt(h)?s[h.field]="date":h.type==="quantitative"&&(y=h.aggregate,b.isString(y)&&Z(["min","max"],y))?s[h.field]="number":Kt(h.field)>1?h.field in s||(s[h.field]="flatten"):Li(h)&&ri(h.sort)&&Kt(h.sort.field)>1&&(h.sort.field in s||(s[h.sort.field]="flatten"))}if((ln(l)||Wa(l))&&l.forEachFieldDef((h,y)=>{if(ha(h))d(h);else{let w=Ps(y),S=l.fieldDef(w);d({...h,type:S.type})}}),ln(l)){let{mark:h,markDef:y,encoding:w}=l;if(as(h)&&!l.encoding.order){let S=w[y.orient==="horizontal"?"y":"x"];Ue(S)&&S.type==="quantitative"&&!(S.field in s)&&(s[S.field]="number")}}return s}class Vn extends Ht{clone(){return new Vn(null,j(this._parse))}constructor(s,d){super(s),nt(this,"_parse",void 0),this._parse=d}hash(){return`Parse ${ae(this._parse)}`}static makeExplicit(s,d,h){let y={},w=d.data;return!bo(w)&&w?.format?.parse&&(y=w.format.parse),this.makeWithAncestors(s,y,{},h)}static makeWithAncestors(s,d,h,y){for(let A of be(h)){let C=y.getWithExplicit(A);C.value!==void 0&&(C.explicit||C.value===h[A]||C.value==="derived"||h[A]==="flatten"?delete h[A]:$e(Or(A,h[A],C.value)))}for(let A of be(d)){let C=y.get(A);C!==void 0&&(C===d[A]?delete d[A]:$e(Or(A,d[A],C)))}let w=new Ui(d,h);y.copyAll(w);let S={};for(let A of be(w.combine())){let C=w.get(A);C!==null&&(S[A]=C)}return be(S).length===0||y.parseNothing?null:new Vn(s,S)}get parse(){return this._parse}merge(s){this._parse={...this._parse,...s.parse},s.remove()}assembleFormatParse(){let s={};for(let d of be(this._parse)){let h=this._parse[d];Kt(d)===1&&(s[d]=h)}return s}producedFields(){return new Set(be(this._parse))}dependentFields(){return new Set(be(this._parse))}assembleTransforms(){let s=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return be(this._parse).filter(d=>!s||Kt(d)>1).map(d=>{let h=function(y,w){let S=kt(y);return w==="number"?`toNumber(${S})`:w==="boolean"?`toBoolean(${S})`:w==="string"?`toString(${S})`:w==="date"?`toDate(${S})`:w==="flatten"?S:w.startsWith("date:")?`timeParse(${S},'${Wc(w.slice(5,w.length))}')`:w.startsWith("utc:")?`utcParse(${S},'${Wc(w.slice(4,w.length))}')`:($e(`Unrecognized parse "${w}".`),null)}(d,this._parse[d]);return h?{type:"formula",expr:h,as:St(d)}:null}).filter(d=>d!==null)}}class So extends Ht{clone(){return new So(null)}constructor(s){super(s)}dependentFields(){return new Set}producedFields(){return new Set([dr])}hash(){return"Identifier"}assemble(){return{type:"identifier",as:dr}}}class Vc extends Ht{clone(){return new Vc(null,this.params)}constructor(s,d){super(s),this.params=d}dependentFields(){return new Set}producedFields(){}hash(){return`Graticule ${ae(this.params)}`}assemble(){return{type:"graticule",...this.params===!0?{}:this.params}}}class Yc extends Ht{clone(){return new Yc(null,this.params)}constructor(s,d){super(s),this.params=d}dependentFields(){return new Set}producedFields(){return new Set([this.params.as??"data"])}hash(){return`Hash ${ae(this.params)}`}assemble(){return{type:"sequence",...this.params}}}class Ao extends Ht{constructor(s){let d;if(super(null),nt(this,"_data",void 0),nt(this,"_name",void 0),nt(this,"_generator",void 0),s??={name:"source"},bo(s)||(d=s.format?{...Q(s.format,["parse"])}:{}),pu(s))this._data={values:s.values};else if(cs(s)){if(this._data={url:s.url},!d.type){let h=/(?:\.([^.]+))?$/.exec(s.url)[1];Z(["json","csv","tsv","dsv","topojson"],h)||(h="json"),d.type=h}}else Hf(s)?this._data={values:[{type:"Sphere"}]}:(Gf(s)||bo(s))&&(this._data={});this._generator=bo(s),s.name&&(this._name=s.name),d&&!ye(d)&&(this._data.format=d)}dependentFields(){return new Set}producedFields(){}get data(){return this._data}hasName(){return!!this._name}get isGenerator(){return this._generator}get dataName(){return this._name}set dataName(s){this._name=s}set parent(s){throw new Error("Source nodes have to be roots.")}remove(){throw new Error("Source nodes are roots and cannot be removed.")}hash(){throw new Error("Cannot hash sources")}assemble(){return{name:this._name,...this._data,transform:[]}}}function cp(l){return l instanceof Ao||l instanceof Vc||l instanceof Yc}var Kc=new WeakMap;class dp{constructor(){b_(this,Kc,{writable:!0,value:void 0}),S0(this,Kc,!1)}setModified(){S0(this,Kc,!0)}get modifiedFlag(){return function(d,h){return h.get?h.get.call(d):h.value}(s=this,A0(s,Kc,"get"));var s}}class ia extends dp{getNodeDepths(s,d,h){h.set(s,d);for(let y of s.children)this.getNodeDepths(y,d+1,h);return h}optimize(s){let d=[...this.getNodeDepths(s,0,new Map).entries()].sort((h,y)=>y[1]-h[1]);for(let h of d)this.run(h[0]);return this.modifiedFlag}}class fp extends dp{optimize(s){this.run(s);for(let d of s.children)this.optimize(d);return this.modifiedFlag}}class Eg extends fp{mergeNodes(s,d){let h=d.shift();for(let y of d)s.removeChild(y),y.parent=h,y.remove()}run(s){let d=s.children.map(y=>y.hash()),h={};for(let y=0;y<d.length;y++)h[d[y]]===void 0?h[d[y]]=[s.children[y]]:h[d[y]].push(s.children[y]);for(let y of be(h))h[y].length>1&&(this.setModified(),this.mergeNodes(s,h[y]))}}class wg extends fp{constructor(s){super(),nt(this,"requiresSelectionId",void 0),this.requiresSelectionId=s&&ng(s)}run(s){s instanceof So&&(this.requiresSelectionId&&(cp(s.parent)||s.parent instanceof qa||s.parent instanceof Vn)||(this.setModified(),s.remove()))}}class Ky extends dp{optimize(s){return this.run(s,new Set),this.modifiedFlag}run(s,d){let h=new Set;s instanceof ji&&(h=s.producedFields(),Le(h,d)&&(this.setModified(),s.removeFormulas(d),s.producedFields.length===0&&s.remove()));for(let y of s.children)this.run(y,new Set([...d,...h]))}}class gs extends fp{constructor(){super()}run(s){s instanceof aa&&!s.isRequired()&&(this.setModified(),s.remove())}}class Xc extends ia{run(s){if(!(cp(s)||s.numChildren()>1)){for(let d of s.children)if(d instanceof Vn)if(s instanceof Vn)this.setModified(),s.merge(d);else{if(Ee(s.producedFields(),d.dependentFields()))continue;this.setModified(),d.swapWithParent()}}}}class pp extends ia{run(s){let d=[...s.children],h=s.children.filter(y=>y instanceof Vn);if(s.numChildren()>1&&h.length>=1){let y={},w=new Set;for(let S of h){let A=S.parse;for(let C of be(A))C in y?y[C]!==A[C]&&w.add(C):y[C]=A[C]}for(let S of w)delete y[S];if(!ye(y)){this.setModified();let S=new Vn(s,y);for(let A of d){if(A instanceof Vn)for(let C of be(y))delete A.parse[C];s.removeChild(A),A.parent=S,A instanceof Vn&&be(A.parse).length===0&&A.remove()}}}}}class Xy extends ia{run(s){s instanceof aa||s.numChildren()>0||s instanceof sl||s instanceof Ao||(this.setModified(),s.remove())}}class _g extends ia{run(s){let d=s.children.filter(y=>y instanceof ji),h=d.pop();for(let y of d)this.setModified(),h.merge(y)}}class Zy extends ia{run(s){let d=s.children.filter(y=>y instanceof qa),h={};for(let y of d){let w=ae(y.groupBy);w in h||(h[w]=[]),h[w].push(y)}for(let y of be(h)){let w=h[y];if(w.length>1){let S=w.pop();for(let A of w)S.merge(A)&&(s.removeChild(A),A.parent=S,A.remove(),this.setModified())}}}}class Jy extends ia{constructor(s){super(),this.model=s}run(s){let d=!(cp(s)||s instanceof ui||s instanceof Vn||s instanceof So),h=[],y=[];for(let w of s.children)w instanceof fi&&(d&&!Ee(s.producedFields(),w.dependentFields())?h.push(w):y.push(w));if(h.length>0){let w=h.pop();for(let S of h)w.merge(S,this.model.renameSignal.bind(this.model));this.setModified(),s instanceof fi?s.merge(w,this.model.renameSignal.bind(this.model)):w.swapWithParent()}if(y.length>1){let w=y.pop();for(let S of y)w.merge(S,this.model.renameSignal.bind(this.model));this.setModified()}}}class a1 extends ia{run(s){let d=[...s.children];if(!te(d,w=>w instanceof aa)||s.numChildren()<=1)return;let h=[],y;for(let w of d)if(w instanceof aa){let S=w;for(;S.numChildren()===1;){let[A]=S.children;if(!(A instanceof aa))break;S=A}h.push(...S.children),y?(s.removeChild(w),w.parent=y.parent,y.parent.removeChild(y),y.parent=S,this.setModified()):y=S}else h.push(w);if(h.length){this.setModified();for(let w of h)w.parent.removeChild(w),w.parent=y}}}class ll extends Ht{clone(){return new ll(null,j(this.transform))}constructor(s,d){super(s),this.transform=d}addDimensions(s){this.transform.groupby=Ae(this.transform.groupby.concat(s),d=>d)}dependentFields(){let s=new Set;return this.transform.groupby&&this.transform.groupby.forEach(s.add,s),this.transform.joinaggregate.map(d=>d.field).filter(d=>d!==void 0).forEach(s.add,s),s}producedFields(){return new Set(this.transform.joinaggregate.map(this.getDefaultName))}getDefaultName(s){return s.as??Ge(s)}hash(){return`JoinAggregateTransform ${ae(this.transform)}`}assemble(){let s=[],d=[],h=[];for(let w of this.transform.joinaggregate)d.push(w.op),h.push(this.getDefaultName(w)),s.push(w.field===void 0?null:w.field);let y=this.transform.groupby;return{type:"joinaggregate",as:h,ops:d,fields:s,...y!==void 0?{groupby:y}:{}}}}class To extends Ht{clone(){return new To(null,j(this._stack))}constructor(s,d){super(s),nt(this,"_stack",void 0),this._stack=d}static makeFromTransform(s,d){let{stack:h,groupby:y,as:w,offset:S="zero"}=d,A=[],C=[];if(d.sort!==void 0)for(let H of d.sort)A.push(H.field),C.push(Ve(H.order,"ascending"));let L={field:A,order:C},G;return G=function(H){return b.isArray(H)&&H.every(J=>b.isString(J))&&H.length>1}(w)?w:b.isString(w)?[w,`${w}_end`]:[`${d.stack}_start`,`${d.stack}_end`],new To(s,{dimensionFieldDefs:[],stackField:h,groupby:y,offset:S,sort:L,facetby:[],as:G})}static makeFromEncoding(s,d){let h=d.stack,{encoding:y}=d;if(!h)return null;let{groupbyChannels:w,fieldChannel:S,offset:A,impute:C}=h,L=w.map(re=>cr(y[re])).filter(re=>!!re),G=function(re){return re.stack.stackBy.reduce((ee,se)=>{let de=Ge(se.fieldDef);return de&&ee.push(de),ee},[])}(d),H=d.encoding.order,J;if(b.isArray(H)||Ue(H))J=jl(H);else{let re=Q0(H)?H.sort:S==="y"?"descending":"ascending";J=G.reduce((ee,se)=>(ee.field.push(se),ee.order.push(re),ee),{field:[],order:[]})}return new To(s,{dimensionFieldDefs:L,stackField:d.vgField(S),facetby:[],stackby:G,sort:J,offset:A,impute:C,as:[d.vgField(S,{suffix:"start",forAs:!0}),d.vgField(S,{suffix:"end",forAs:!0})]})}get stack(){return this._stack}addDimensions(s){this._stack.facetby.push(...s)}dependentFields(){let s=new Set;return s.add(this._stack.stackField),this.getGroupbyFields().forEach(s.add,s),this._stack.facetby.forEach(s.add,s),this._stack.sort.field.forEach(s.add,s),s}producedFields(){return new Set(this._stack.as)}hash(){return`Stack ${ae(this._stack)}`}getGroupbyFields(){let{dimensionFieldDefs:s,impute:d,groupby:h}=this._stack;return s.length>0?s.map(y=>y.bin?d?[Ge(y,{binSuffix:"mid"})]:[Ge(y,{}),Ge(y,{binSuffix:"end"})]:[Ge(y)]).flat():h??[]}assemble(){let s=[],{facetby:d,dimensionFieldDefs:h,stackField:y,stackby:w,sort:S,offset:A,impute:C,as:L}=this._stack;if(C)for(let G of h){let{bandPosition:H=.5,bin:J}=G;if(J){let re=Ge(G,{expr:"datum"}),ee=Ge(G,{expr:"datum",binSuffix:"end"});s.push({type:"formula",expr:`${H}*${re}+${1-H}*${ee}`,as:Ge(G,{binSuffix:"mid",forAs:!0})})}s.push({type:"impute",field:y,groupby:[...w,...d],key:Ge(G,{binSuffix:"mid"}),method:"value",value:0})}return s.push({type:"stack",groupby:[...this.getGroupbyFields(),...d],field:y,sort:S,as:L,offset:A}),s}}class ul extends Ht{clone(){return new ul(null,j(this.transform))}constructor(s,d){super(s),this.transform=d}addDimensions(s){this.transform.groupby=Ae(this.transform.groupby.concat(s),d=>d)}dependentFields(){let s=new Set;return(this.transform.groupby??[]).forEach(s.add,s),(this.transform.sort??[]).forEach(d=>s.add(d.field)),this.transform.window.map(d=>d.field).filter(d=>d!==void 0).forEach(s.add,s),s}producedFields(){return new Set(this.transform.window.map(this.getDefaultName))}getDefaultName(s){return s.as??Ge(s)}hash(){return`WindowTransform ${ae(this.transform)}`}assemble(){let s=[],d=[],h=[],y=[];for(let H of this.transform.window)d.push(H.op),h.push(this.getDefaultName(H)),y.push(H.param===void 0?null:H.param),s.push(H.field===void 0?null:H.field);let w=this.transform.frame,S=this.transform.groupby;if(w&&w[0]===null&&w[1]===null&&d.every(H=>wn(H)))return{type:"joinaggregate",as:h,ops:d,fields:s,...S!==void 0?{groupby:S}:{}};let A=[],C=[];if(this.transform.sort!==void 0)for(let H of this.transform.sort)A.push(H.field),C.push(H.order??"ascending");let L={field:A,order:C},G=this.transform.ignorePeers;return{type:"window",params:y,as:h,ops:d,fields:s,sort:L,...G!==void 0?{ignorePeers:G}:{},...S!==void 0?{groupby:S}:{},...w!==void 0?{frame:w}:{}}}}function kg(l){if(l instanceof sl)if(l.numChildren()!==1||l.children[0]instanceof aa){let d=l.model.component.data.main;xg(d);let h=(s=l,function w(S){if(!(S instanceof sl)){let A=S.clone();if(A instanceof aa){let C=Sg+A.getSource();A.setSource(C),s.model.component.data.outputNodes[C]=A}else(A instanceof qa||A instanceof To||A instanceof ul||A instanceof ll)&&A.addDimensions(s.fields);for(let C of S.children.flatMap(w))C.parent=A;return[A]}return S.children.flatMap(w)}),y=l.children.map(h).flat();for(let w of y)w.parent=d}else{let d=l.children[0];(d instanceof qa||d instanceof To||d instanceof ul||d instanceof ll)&&d.addDimensions(l.fields),d.swapWithParent(),kg(l)}else l.children.map(kg);var s}function xg(l){if(l instanceof aa&&l.type===tn.Main&&l.numChildren()===1){let s=l.children[0];s instanceof sl||(s.swapWithParent(),xg(l))}}let Sg="scale_",hp=5;function mp(l){for(let s of l){for(let d of s.children)if(d.parent!==s)return!1;if(!mp(s.children))return!1}return!0}function pi(l,s){let d=!1;for(let h of s)d=l.optimize(h)||d;return d}function Qy(l,s,d){let h=l.sources,y=!1;return y=pi(new gs,h)||y,y=pi(new wg(s),h)||y,h=h.filter(w=>w.numChildren()>0),y=pi(new Xy,h)||y,h=h.filter(w=>w.numChildren()>0),d||(y=pi(new Xc,h)||y,y=pi(new Jy(s),h)||y,y=pi(new Ky,h)||y,y=pi(new pp,h)||y,y=pi(new Zy,h)||y,y=pi(new _g,h)||y,y=pi(new Eg,h)||y,y=pi(new a1,h)||y),l.sources=h,y}class Dn{constructor(s){nt(this,"signal",void 0),Object.defineProperty(this,"signal",{enumerable:!0,get:s})}static fromName(s,d){return new Dn(()=>s(d))}}function ev(l){ln(l)?function(s){let d=s.component.scales;for(let h of be(d)){let y=r1(s,h);if(d[h].setWithExplicit("domains",y),tv(s,h),s.component.data.isFaceted){let w=s;for(;!Wa(w)&&w.parent;)w=w.parent;if(w.component.resolve.scale[h]==="shared")for(let S of y.value)xa(S)&&(S.data=Sg+S.data.replace(Sg,""))}}}(l):function(s){for(let h of s.children)ev(h);let d=s.component.scales;for(let h of be(d)){let y,w=null;for(let S of s.children){let A=S.component.scales[h];if(A){y=y===void 0?A.getWithExplicit("domains"):Gi(y,A.getWithExplicit("domains"),"domains","scale",Qc);let C=A.get("selectionExtent");w&&C&&w.param!==C.param&&$e(sr),w=C}}d[h].setWithExplicit("domains",y),w&&d[h].set("selectionExtent",w,!0)}}(l)}function r1(l,s){let d=l.getScaleComponent(s).get("type"),{encoding:h}=l,y=function(w,S,A,C){if(w==="unaggregated"){let{valid:L,reason:G}=Ra(S,A);if(!L)return void $e(G)}else if(w===void 0&&C.useUnaggregatedDomain){let{valid:L}=Ra(S,A);if(L)return"unaggregated"}return w}(l.scaleDomain(s),l.typedFieldDef(s),d,l.config.scale);return y!==l.scaleDomain(s)&&(l.specifiedScales[s]={...l.specifiedScales[s],domain:y}),s==="x"&&mn(h.x2)?mn(h.x)?Gi(bs(d,y,l,"x"),bs(d,y,l,"x2"),"domain","scale",Qc):bs(d,y,l,"x2"):s==="y"&&mn(h.y2)?mn(h.y)?Gi(bs(d,y,l,"y"),bs(d,y,l,"y2"),"domain","scale",Qc):bs(d,y,l,"y2"):bs(d,y,l,s)}function Zc(l,s,d){let h=zn(d)?.unit;return s==="temporal"||h?function(y,w,S){return y.map(A=>({signal:`{data: ${au(A,{timeUnit:S,type:w})}}`}))}(l,s,h):[l]}function bs(l,s,d,h){let{encoding:y,markDef:w,mark:S,config:A,stack:C}=d,L=mn(y[h]),{type:G}=L,H=L.timeUnit;if(function(ee){return ee?.unionWith}(s)){let ee=bs(l,void 0,d,h);return zi([...Zc(s.unionWith,G,H),...ee.value])}if(Ke(s))return zi([s]);if(s&&s!=="unaggregated"&&!j0(s))return zi(Zc(s,G,H));if(C&&h===C.fieldChannel){if(C.offset==="normalize")return Lr([[0,1]]);let ee=d.requestDataName(tn.Main);return Lr([{data:ee,field:d.vgField(h,{suffix:"start"})},{data:ee,field:d.vgField(h,{suffix:"end"})}])}let J=Rr(h)&&Ue(L)?function(ee,se,de){if(!Gn(de))return;let fe=ee.fieldDef(se),ge=fe.sort;if(cc(ge))return{op:"min",field:rl(fe,se),order:"ascending"};let{stack:we}=ee,Te=we?new Set([...we.groupbyFields,...we.stackBy.map(Fe=>Fe.fieldDef.field)]):void 0;if(ri(ge))return Jc(ge,we&&!Te.has(ge.field));if(Yh(ge)){let{encoding:Fe,order:He}=ge,tt=ee.fieldDef(Fe),{aggregate:ut,field:Qe}=tt,Xe=we&&!Te.has(Qe);if(Qr(ut)||Ti(ut))return Jc({field:Ge(tt),order:He},Xe);if(wn(ut)||!ut)return Jc({op:ut,field:Qe,order:He},Xe)}else{if(ge==="descending")return{op:"min",field:ee.vgField(se),order:"descending"};if(Z(["ascending",void 0],ge))return!0}}(d,h,l):void 0;if(Mi(L))return Lr(Zc([L.datum],G,H));let re=L;if(s==="unaggregated"){let ee=d.requestDataName(tn.Main),{field:se}=L;return Lr([{data:ee,field:Ge({field:se,aggregate:"min"})},{data:ee,field:Ge({field:se,aggregate:"max"})}])}if(Wt(re.bin)){if(Gn(l))return Lr(l==="bin-ordinal"?[]:[{data:We(J)?d.requestDataName(tn.Main):d.requestDataName(tn.Raw),field:d.vgField(h,ru(re,h)?{binSuffix:"range"}:{}),sort:J!==!0&&b.isObject(J)?J:{field:d.vgField(h,{}),op:"min"}}]);{let{bin:ee}=re;if(Wt(ee)){let se=xo(d,re.field,ee);return Lr([new Dn(()=>{let de=d.getSignalName(se);return`[${de}.start, ${de}.stop]`})])}return Lr([{data:d.requestDataName(tn.Main),field:d.vgField(h,{})}])}}if(re.timeUnit&&Z(["time","utc"],l)){let ee=y[Si(h)];if(cf(re,ee,w,A)){let se=d.requestDataName(tn.Main),de=Di({fieldDef:re,fieldDef2:ee,markDef:w,config:A}),fe=lc(S)&&de!==.5;return Lr([{data:se,field:d.vgField(h,fe?{suffix:Vf}:{})},{data:se,field:d.vgField(h,{suffix:fe?Ft:"end"})}])}}return Lr(J?[{data:We(J)?d.requestDataName(tn.Main):d.requestDataName(tn.Raw),field:d.vgField(h),sort:J}]:[{data:d.requestDataName(tn.Main),field:d.vgField(h)}])}function Jc(l,s){let{op:d,field:h,order:y}=l;return{op:d??(s?"sum":uc),...h?{field:Gt(h)}:{},...y?{order:y}:{}}}function tv(l,s){let d=l.component.scales[s],h=l.specifiedScales[s].domain,y=l.fieldDef(s)?.bin,w=j0(h)&&h,S=fo(y)&&Ir(y.extent)&&y.extent;(w||S)&&d.set("selectionExtent",w??S,!0)}function Ra(l,s){let{aggregate:d,type:h}=l;return d?b.isString(d)&&!co.has(d)?{valid:!1,reason:Th(d)}:h==="quantitative"&&s==="log"?{valid:!1,reason:Ch(l)}:{valid:!0}:{valid:!1,reason:R0(l)}}function Qc(l,s,d,h){return l.explicit&&s.explicit&&$e(function(y,w,S,A){return`Conflicting ${w.toString()} property "${y.toString()}" (${Ye(S)} and ${Ye(A)}). Using the union of the two domains.`}(d,h,l.value,s.value)),{explicit:l.explicit,value:[...l.value,...s.value]}}function i1(l){let s=Ae(l.map(S=>{if(xa(S)){let{sort:A,...C}=S;return C}return S}),ae),d=Ae(l.map(S=>{if(xa(S)){let A=S.sort;return A===void 0||We(A)||("op"in A&&A.op==="count"&&delete A.field,A.order==="ascending"&&delete A.order),A}}).filter(S=>S!==void 0),ae);if(s.length===0)return;if(s.length===1){let S=l[0];if(xa(S)&&d.length>0){let A=d[0];if(d.length>1){$e(Nh);let C=d.filter(L=>b.isObject(L)&&"op"in L&&L.op!=="min");A=!d.every(L=>b.isObject(L)&&"op"in L)||C.length!==1||C[0]}else if(b.isObject(A)&&"field"in A){let C=A.field;S.field===C&&(A=!A.order||{order:A.order})}return{...S,sort:A}}return S}let h=Ae(d.map(S=>We(S)||!("op"in S)||b.isString(S.op)&&S.op in E0?S:($e(function(A){return`Dropping sort property ${Ye(A)} as unioned domains only support boolean or op "count", "min", and "max".`}(S)),!0)),ae),y;h.length===1?y=h[0]:h.length>1&&($e(Nh),y=!0);let w=Ae(l.map(S=>xa(S)?S.data:null),S=>S);return w.length===1&&w[0]!==null?{data:w[0],fields:s.map(S=>S.field),...y?{sort:y}:{}}:{fields:s,...y?{sort:y}:{}}}function Ag(l){if(xa(l)&&b.isString(l.field))return l.field;if(function(s){return!b.isArray(s)&&"fields"in s&&!("data"in s)}(l)){let s;for(let d of l.fields)if(xa(d)&&b.isString(d.field))if(s){if(s!==d.field)return $e("Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect."),s}else s=d.field;return $e("Detected faceted independent scales that union domain of the same fields from different source. We will assume that this is the same field from a different fork of the same data source. However, if this is not the case, the result view size may be incorrect."),s}if(function(s){return!b.isArray(s)&&"fields"in s&&"data"in s}(l)){$e("Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.");let s=l.fields[0];return b.isString(s)?s:void 0}}function ys(l,s){let d=l.component.scales[s].get("domains").map(h=>(xa(h)&&(h.data=l.lookupDataSource(h.data)),h));return i1(d)}function ed(l){return vs(l)||Ki(l)?l.children.reduce((s,d)=>s.concat(ed(d)),Tg(l)):Tg(l)}function Tg(l){return be(l.component.scales).reduce((s,d)=>{let h=l.component.scales[d];if(h.merged)return s;let y=h.combine(),{name:w,type:S,selectionExtent:A,domains:C,range:L,reverse:G,...H}=y,J=function(se,de,fe,ge){if(sn(fe)){if(po(se))return{step:{signal:`${de}_step`}}}else if(b.isObject(se)&&xa(se))return{...se,data:ge.lookupDataSource(se.data)};return se}(y.range,w,d,l),re=ys(l,d),ee=A?function(se,de,fe,ge){let we=wo(se,de.param,de);return{signal:Ga(fe.get("type"))&&b.isArray(ge)&&ge[0]>ge[1]?`isValid(${we}) && reverse(${we})`:we}}(l,A,h,re):null;return s.push({name:w,type:S,...re?{domain:re}:{},...ee?{domainRaw:ee}:{},range:J,...G!==void 0?{reverse:G}:{},...H}),s},[])}class Cg extends Ui{constructor(s,d){super({},{name:s}),nt(this,"merged",!1),this.setWithExplicit("type",d)}domainDefinitelyIncludesZero(){return this.get("zero")!==!1||te(this.get("domains"),s=>b.isArray(s)&&s.length===2&&b.isNumber(s[0])&&s[0]<=0&&b.isNumber(s[1])&&s[1]>=0)}}let cl=["range","scheme"];function Rg(l,s){let d=l.fieldDef(s);if(d?.bin){let{bin:h,field:y}=d,w=ka(s),S=l.getName(w);if(b.isObject(h)&&h.binned&&h.step!==void 0)return new Dn(()=>{let A=l.scaleName(s),C=`(domain("${A}")[1] - domain("${A}")[0]) / ${h.step}`;return`${l.getSignalName(S)} / (${C})`});if(Wt(h)){let A=xo(l,y,h);return new Dn(()=>{let C=l.getSignalName(A),L=`(${C}.stop - ${C}.start) / ${C}.step`;return`${l.getSignalName(S)} / (${L})`})}}}function nv(l,s){let d=s.specifiedScales[l],{size:h}=s,y=s.getScaleComponent(l).get("type");for(let G of cl)if(d[G]!==void 0){let H=Fh(y,G),J=H0(l,G);if(H)if(J)$e(J);else switch(G){case"range":{let re=d.range;if(b.isArray(re)){if(sn(l))return zi(re.map(ee=>{if(ee==="width"||ee==="height"){let se=s.getName(ee),de=s.getSignalName.bind(s);return Dn.fromName(de,se)}return ee}))}else if(b.isObject(re))return zi({data:s.requestDataName(tn.Main),field:re.field,sort:{op:"min",field:s.vgField(l)}});return zi(re)}case"scheme":return zi(av(d[G]))}else $e(N0(y,G,l))}let w=l===Jt||l==="xOffset"?"width":"height",S=h[w];if(ja(S)){if(sn(l))if(Gn(y)){let G=iv(S,s,l);if(G)return zi({step:G})}else $e(Rh(w));else if(Zn(l)){let G=l===dn?"x":"y";if(s.getScaleComponent(G).get("type")==="band"){let H=ov(S,y);if(H)return zi(H)}}}let{rangeMin:A,rangeMax:C}=d,L=function(G,H){let{size:J,config:re,mark:ee,encoding:se}=H,{type:de}=mn(se[G]),fe=H.getScaleComponent(G),ge=fe.get("type"),{domain:we,domainMid:Te}=H.specifiedScales[G];switch(G){case Jt:case Pn:if(Z(["point","band"],ge)){let Fe=Ng(G,J,re.view);if(ja(Fe))return{step:iv(Fe,H,G)}}return rv(G,H,ge);case dn:case Ko:return function(Fe,He,tt){let ut=Fe===dn?"x":"y",Qe=He.getScaleComponent(ut);if(!Qe)return rv(ut,He,tt,{center:!0});let Xe=Qe.get("type"),xt=He.scaleName(ut),{markDef:$t,config:Mn}=He;if(Xe==="band"){let _n=Ng(ut,He.size,He.config.view);if(ja(_n)){let kn=ov(_n,tt);if(kn)return kn}return[0,{signal:`bandwidth('${xt}')`}]}{let _n=He.encoding[ut];if(Ue(_n)&&_n.timeUnit){let kn=$0(_n.timeUnit,Cn=>`scale('${xt}', ${Cn})`),Bt=He.config.scale.bandWithNestedOffsetPaddingInner,It=Di({fieldDef:_n,markDef:$t,config:Mn})-.5,gn=It!==0?` + ${It}`:"";return Bt?[{signal:`${Ke(Bt)?`${Bt.signal}/2`+gn:`${Bt/2+It}`} * (${kn})`},{signal:`${Ke(Bt)?`(1 - ${Bt.signal}/2)`+gn:`${1-Bt/2+It}`} * (${kn})`}]:[0,{signal:kn}]}return W(`Cannot use ${Fe} scale if ${ut} scale is not discrete.`)}}(G,H,ge);case wi:{let Fe=gp(ee,H.component.scales[G].get("zero"),re),He=function(tt,ut,Qe,Xe){let xt={x:Rg(Qe,"x"),y:Rg(Qe,"y")};switch(tt){case"bar":case"tick":{if(Xe.scale.maxBandSize!==void 0)return Xe.scale.maxBandSize;let $t=Og(ut,xt,Xe.view);return b.isNumber($t)?$t-1:new Dn(()=>`${$t.signal} - 1`)}case"line":case"trail":case"rule":return Xe.scale.maxStrokeWidth;case"text":return Xe.scale.maxFontSize;case"point":case"square":case"circle":{if(Xe.scale.maxSize)return Xe.scale.maxSize;let $t=Og(ut,xt,Xe.view);return b.isNumber($t)?Math.pow(Ig*$t,2):new Dn(()=>`pow(${Ig} * ${$t.signal}, 2)`)}}throw new Error(Ii("size",tt))}(ee,J,H,re);return Kl(ge)?function(tt,ut,Qe){let Xe=()=>{let xt=fa(ut),$t=fa(tt),Mn=`(${xt} - ${$t}) / (${Qe} - 1)`;return`sequence(${$t}, ${xt} + ${Mn}, ${Mn})`};return Ke(ut)?new Dn(Xe):{signal:Xe()}}(Fe,He,function(tt,ut,Qe,Xe){switch(tt){case"quantile":return ut.scale.quantileCount;case"quantize":return ut.scale.quantizeCount;case"threshold":return Qe!==void 0&&b.isArray(Qe)?Qe.length+1:($e(function(xt){return`Domain for ${xt} is required for threshold scale.`}(Xe)),3)}}(ge,re,we,G)):[Fe,He]}case nr:return[0,2*Math.PI];case Pa:return[0,360];case pt:return[0,new Dn(()=>`min(${H.getSignalName("width")},${H.getSignalName("height")})/2`)];case lo:return[re.scale.minStrokeWidth,re.scale.maxStrokeWidth];case Xo:return[[1,0],[4,2],[2,1],[1,1],[1,2,4,2]];case En:return"symbol";case Me:case _a:case Xr:return ge==="ordinal"?de==="nominal"?"category":"ordinal":Te!==void 0?"diverging":ee==="rect"||ee==="geoshape"?"heatmap":"ramp";case _i:case Mt:case ki:return[re.scale.minOpacity,re.scale.maxOpacity]}}(l,s);return(A!==void 0||C!==void 0)&&Fh(y,"rangeMin")&&b.isArray(L)&&L.length===2?zi([A??L[0],C??L[1]]):Lr(L)}function av(l){return function(s){return!b.isString(s)&&!!s.name}(l)?{scheme:l.name,...Q(l,["name"])}:{scheme:l}}function rv(l,s,d){let{center:h}=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},y=ka(l),w=s.getName(y),S=s.getSignalName.bind(s);return l===Pn&&Ga(d)?h?[Dn.fromName(A=>`${S(A)}/2`,w),Dn.fromName(A=>`-${S(A)}/2`,w)]:[Dn.fromName(S,w),0]:h?[Dn.fromName(A=>`-${S(A)}/2`,w),Dn.fromName(A=>`${S(A)}/2`,w)]:[0,Dn.fromName(S,w)]}function iv(l,s,d){let{encoding:h}=s,y=s.getScaleComponent(d),w=$l(d),S=h[w];if(If({step:l,offsetIsDiscrete:vt(S)&&Wl(S.type)})==="offset"&&go(h,w)){let C=s.getScaleComponent(w),L=`domain('${s.scaleName(w)}').length`;C.get("type")==="band"&&(L=`bandspace(${L}, ${C.get("paddingInner")??C.get("padding")??0}, ${C.get("paddingOuter")??C.get("padding")??0})`);let G=y.get("paddingInner")??y.get("padding");return{signal:`${l.step} * ${L} / (1-${A=G,Ke(A)?A.signal:b.stringValue(A)})`}}return l.step;var A}function ov(l,s){if(If({step:l,offsetIsDiscrete:Gn(s)})==="offset")return{step:l.step}}function Ng(l,s,d){let h=l===Jt?"width":"height";return s[h]||xc(d,h)}function gp(l,s,d){if(s)return Ke(s)?{signal:`${s.signal} ? 0 : ${gp(l,!1,d)}`}:0;switch(l){case"bar":case"tick":return d.scale.minBandSize;case"line":case"trail":case"rule":return d.scale.minStrokeWidth;case"text":return d.scale.minFontSize;case"point":case"square":case"circle":return d.scale.minSize}throw new Error(Ii("size",l))}let Ig=.95;function Og(l,s,d){let h=ja(l.width)?l.width.step:cu(d,"width"),y=ja(l.height)?l.height.step:cu(d,"height");return s.x||s.y?new Dn(()=>`min(${[s.x?s.x.signal:h,s.y?s.y.signal:y].join(", ")})`):Math.min(h,y)}function bp(l,s){ln(l)?function(d,h){let y=d.component.scales,{config:w,encoding:S,markDef:A,specifiedScales:C}=d;for(let L of be(y)){let G=C[L],H=y[L],J=d.getScaleComponent(L),re=mn(S[L]),ee=G[h],se=J.get("type"),de=J.get("padding"),fe=J.get("paddingInner"),ge=Fh(se,h),we=H0(L,h);if(ee!==void 0&&(ge?we&&$e(we):$e(N0(se,h,L))),ge&&we===void 0)if(ee!==void 0){let Te=re.timeUnit,Fe=re.type;switch(h){case"domainMax":case"domainMin":Bs(G[h])||Fe==="temporal"||Te?H.set(h,{signal:au(G[h],{type:Fe,timeUnit:Te})},!0):H.set(h,G[h],!0);break;default:H.copyKeyFromObject(h,G)}}else{let Te=h in Dg?Dg[h]({model:d,channel:L,fieldOrDatumDef:re,scaleType:se,scalePadding:de,scalePaddingInner:fe,domain:G.domain,domainMin:G.domainMin,domainMax:G.domainMax,markDef:A,config:w,hasNestedOffsetScale:ry(S,L),hasSecondaryRangeChannel:!!S[Si(L)]}):w.scale[h];Te!==void 0&&H.set(h,Te,!1)}}}(l,s):lv(l,s)}let Dg={bins:l=>{let{model:s,fieldOrDatumDef:d}=l;return Ue(d)?function(h,y){let w=y.bin;if(Wt(w)){let S=xo(h,y.field,w);return new Dn(()=>h.getSignalName(S))}if(Bn(w)&&fo(w)&&w.step!==void 0)return{step:w.step}}(s,d):void 0},interpolate:l=>{let{channel:s,fieldOrDatumDef:d}=l;return function(h,y){if(Z([Me,_a,Xr],h)&&y!=="nominal")return"hcl"}(s,d.type)},nice:l=>{let{scaleType:s,channel:d,domain:h,domainMin:y,domainMax:w,fieldOrDatumDef:S}=l;return function(A,C,L,G,H,J){if(!(cr(J)?.bin||b.isArray(L)||H!=null||G!=null||Z([zt.TIME,zt.UTC],A)))return!!sn(C)||void 0}(s,d,h,y,w,S)},padding:l=>{let{channel:s,scaleType:d,fieldOrDatumDef:h,markDef:y,config:w}=l;return function(S,A,C,L,G,H){if(sn(S)){if(Mr(A)){if(C.continuousPadding!==void 0)return C.continuousPadding;let{type:J,orient:re}=G;if(J==="bar"&&(!Ue(L)||!L.bin&&!L.timeUnit)&&(re==="vertical"&&S==="x"||re==="horizontal"&&S==="y"))return H.continuousBandSize}if(A===zt.POINT)return C.pointPadding}}(s,d,w.scale,h,y,w.bar)},paddingInner:l=>{let{scalePadding:s,channel:d,markDef:h,scaleType:y,config:w,hasNestedOffsetScale:S}=l;return function(A,C,L,G,H){let J=arguments.length>5&&arguments[5]!==void 0&&arguments[5];if(A===void 0){if(sn(C)){let{bandPaddingInner:re,barBandPaddingInner:ee,rectBandPaddingInner:se,bandWithNestedOffsetPaddingInner:de}=H;return J?de:Ve(re,L==="bar"?ee:se)}if(Zn(C)&&G===zt.BAND)return H.offsetBandPaddingInner}}(s,d,h.type,y,w.scale,S)},paddingOuter:l=>{let{scalePadding:s,channel:d,scaleType:h,scalePaddingInner:y,config:w,hasNestedOffsetScale:S}=l;return function(A,C,L,G,H){let J=arguments.length>5&&arguments[5]!==void 0&&arguments[5];if(A===void 0){if(sn(C)){let{bandPaddingOuter:re,bandWithNestedOffsetPaddingOuter:ee}=H;if(J)return ee;if(L===zt.BAND)return Ve(re,Ke(G)?{signal:`${G.signal}/2`}:G/2)}else if(Zn(C)){if(L===zt.POINT)return .5;if(L===zt.BAND)return H.offsetBandPaddingOuter}}}(s,d,h,y,w.scale,S)},reverse:l=>{let{fieldOrDatumDef:s,scaleType:d,channel:h,config:y}=l;return function(w,S,A,C){if(A==="x"&&C.xReverse!==void 0)return Ga(w)&&S==="descending"?Ke(C.xReverse)?{signal:`!${C.xReverse.signal}`}:!C.xReverse:C.xReverse;if(Ga(w)&&S==="descending")return!0}(d,Ue(s)?s.sort:void 0,h,y.scale)},zero:l=>{let{channel:s,fieldOrDatumDef:d,domain:h,markDef:y,scaleType:w,config:S,hasSecondaryRangeChannel:A}=l;return function(C,L,G,H,J,re,ee){if(G&&G!=="unaggregated"&&Ga(J)){if(b.isArray(G)){let se=G[0],de=G[G.length-1];if(b.isNumber(se)&&se<=0&&b.isNumber(de)&&de>=0)return!0}return!1}if(C==="size"&&L.type==="quantitative"&&!Kl(J))return!0;if((!Ue(L)||!L.bin)&&Z([...Jr,...m0],C)){let{orient:se,type:de}=H;return(!Z(["bar","area","line","trail"],de)||!(se==="horizontal"&&C==="y"||se==="vertical"&&C==="x"))&&(!(!Z(["bar","area"],de)||ee)||re?.zero)}return!1}(s,d,h,y,w,S.scale,A)}};function sv(l){ln(l)?function(s){let d=s.component.scales;for(let h of Ul){let y=d[h];if(!y)continue;let w=nv(h,s);y.setWithExplicit("range",w)}}(l):lv(l,"range")}function lv(l,s){let d=l.component.scales;for(let h of l.children)s==="range"?sv(h):bp(h,s);for(let h of be(d)){let y;for(let w of l.children){let S=w.component.scales[h];S&&(y=Gi(y,S.getWithExplicit(s),s,"scale",Ey((A,C)=>s==="range"&&A.step&&C.step?A.step-C.step:0)))}d[h].setWithExplicit(s,y)}}function Mg(l,s,d,h){let y=function(C,L,G,H){switch(L.type){case"nominal":case"ordinal":if(Jo(C)||Ld(C)==="discrete")return C==="shape"&&L.type==="ordinal"&&$e(Gd(C,"ordinal")),"ordinal";if(sn(C)||Zn(C)){if(Z(["rect","bar","image","rule"],G.type)||H)return"band"}else if(G.type==="arc"&&C in Zu)return"band";return qs(G[ka(C)])||eu(L)&&L.axis?.tickBand?"band":"point";case"temporal":return Jo(C)?"time":Ld(C)==="discrete"?($e(Gd(C,"temporal")),"ordinal"):Ue(L)&&L.timeUnit&&zn(L.timeUnit).utc?"utc":"time";case"quantitative":return Jo(C)?Ue(L)&&Wt(L.bin)?"bin-ordinal":"linear":Ld(C)==="discrete"?($e(Gd(C,"quantitative")),"ordinal"):"linear";case"geojson":return}throw new Error(Ud(L.type))}(s,d,h,arguments.length>4&&arguments[4]!==void 0&&arguments[4]),{type:w}=l;return Rr(s)?w!==void 0?function(C,L){let G=arguments.length>2&&arguments[2]!==void 0&&arguments[2];if(!Rr(C))return!1;switch(C){case Jt:case Pn:case dn:case Ko:case nr:case pt:return!!Mr(L)||L==="band"||L==="point"&&!G;case wi:case lo:case _i:case Mt:case ki:case Pa:return Mr(L)||Kl(L)||Z(["band","point","ordinal"],L);case Me:case _a:case Xr:return L!=="band";case Xo:case En:return L==="ordinal"||Kl(L)}}(s,w)?Ue(d)&&(S=w,A=d.type,!(Z([Jd,Qd],A)?S===void 0||Gn(S):A===ns?Z([zt.TIME,zt.UTC,void 0],S):A!==ho||z0(S)||Kl(S)||S===void 0))?($e(function(C,L){return`FieldDef does not work with "${C}" scale. We are using "${L}" scale instead.`}(w,y)),y):w:($e(function(C,L,G){return`Channel "${C}" does not work with "${L}" scale. We are using "${G}" scale instead.`}(s,w,y)),y):y:null;var S,A}function yp(l){ln(l)?l.component.scales=function(s){let{encoding:d,mark:h,markDef:y}=s,w={};for(let S of Ul){let A=mn(d[S]);if(A&&h===W0&&S===En&&A.type===Hs)continue;let C=A&&A.scale;if(A&&C!==null&&C!==!1){C??={};let L=Mg(C,S,A,y,ry(d,S));w[S]=new Cg(s.scaleName(`${S}`,!0),{value:L,explicit:C.type===L})}}return w}(l):l.component.scales=function(s){let d=s.component.scales={},h={},y=s.component.resolve;for(let w of s.children){yp(w);for(let S of be(w.component.scales))if(y.scale[S]??=lg(S,s),y.scale[S]==="shared"){let A=h[S],C=w.component.scales[S].getWithExplicit("type");A?w_(A.value,C.value)?h[S]=Gi(A,C,"type","scale",o1):(y.scale[S]="independent",delete h[S]):h[S]=C}}for(let w of be(h)){let S=s.scaleName(w,!0),A=h[w];d[w]=new Cg(S,A);for(let C of s.children){let L=C.component.scales[w];L&&(C.renameScale(L.get("name"),S),L.merged=!0)}}return d}(l)}let o1=Ey((l,s)=>U0(l)-U0(s));class Lg{constructor(){nt(this,"nameMap",void 0),this.nameMap={}}rename(s,d){this.nameMap[s]=d}has(s){return this.nameMap[s]!==void 0}get(s){for(;this.nameMap[s]&&s!==this.nameMap[s];)s=this.nameMap[s];return s}}function ln(l){return l?.type==="unit"}function Wa(l){return l?.type==="facet"}function Ki(l){return l?.type==="concat"}function vs(l){return l?.type==="layer"}class td{constructor(s,d,h,y,w,S,A){this.type=d,this.parent=h,this.config=w,nt(this,"name",void 0),nt(this,"size",void 0),nt(this,"title",void 0),nt(this,"description",void 0),nt(this,"data",void 0),nt(this,"transforms",void 0),nt(this,"layout",void 0),nt(this,"scaleNameMap",void 0),nt(this,"projectionNameMap",void 0),nt(this,"signalNameMap",void 0),nt(this,"component",void 0),nt(this,"view",void 0),nt(this,"children",void 0),nt(this,"correctDataNames",C=>(C.from?.data&&(C.from.data=this.lookupDataSource(C.from.data)),C.from?.facet?.data&&(C.from.facet.data=this.lookupDataSource(C.from.facet.data)),C)),this.parent=h,this.config=w,this.view=Jn(A),this.name=s.name??y,this.title=da(s.title)?{text:s.title}:s.title?Jn(s.title):void 0,this.scaleNameMap=h?h.scaleNameMap:new Lg,this.projectionNameMap=h?h.projectionNameMap:new Lg,this.signalNameMap=h?h.signalNameMap:new Lg,this.data=s.data,this.description=s.description,this.transforms=(s.transform??[]).map(C=>Tm(C)?{filter:F(C.filter,oc)}:C),this.layout=d==="layer"||d==="unit"?{}:function(C,L,G){let H=G[L],J={},{spacing:re,columns:ee}=H;re!==void 0&&(J.spacing=re),ee!==void 0&&(dc(C)&&!Zl(C.facet)||wc(C))&&(J.columns=ee),uu(C)&&(J.columns=1);for(let se of kc)if(C[se]!==void 0)if(se==="spacing"){let de=C[se];J[se]=b.isNumber(de)?de:{row:de.row??re,column:de.column??re}}else J[se]=C[se];return J}(s,d,w),this.component={data:{sources:h?h.component.data.sources:[],outputNodes:h?h.component.data.outputNodes:{},outputNodeRefCounts:h?h.component.data.outputNodeRefCounts:{},isFaceted:dc(s)||h?.component.data.isFaceted&&s.data===void 0},layoutSize:new Ui,layoutHeaders:{row:{},column:{},facet:{}},mark:null,resolve:{scale:{},axis:{},legend:{},...S?j(S):{}},selection:null,scales:null,projection:null,axes:{},legends:{}}}get width(){return this.getSizeSignalRef("width")}get height(){return this.getSizeSignalRef("height")}parse(){this.parseScale(),this.parseLayoutSize(),this.renameTopLevelLayoutSizeSignal(),this.parseSelections(),this.parseProjection(),this.parseData(),this.parseAxesAndHeaders(),this.parseLegends(),this.parseMarkGroup()}parseScale(){(function(s){let{ignoreRange:d}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};yp(s),ev(s);for(let h of T_)bp(s,h);d||sv(s)})(this)}parseProjection(){yg(this)}renameTopLevelLayoutSizeSignal(){this.getName("width")!=="width"&&this.renameSignal(this.getName("width"),"width"),this.getName("height")!=="height"&&this.renameSignal(this.getName("height"),"height")}parseLegends(){op(this)}assembleEncodeFromView(s){let{style:d,...h}=s,y={};for(let w of be(h)){let S=h[w];S!==void 0&&(y[w]=rn(S))}return y}assembleGroupEncodeEntry(s){let d={};return this.view&&(d=this.assembleEncodeFromView(this.view)),s||(this.description&&(d.description=rn(this.description)),this.type!=="unit"&&this.type!=="layer")?ye(d)?void 0:d:{width:this.getSizeSignalRef("width"),height:this.getSizeSignalRef("height"),...d??{}}}assembleLayout(){if(!this.layout)return;let{spacing:s,...d}=this.layout,{component:h,config:y}=this,w=function(S,A){let C={};for(let L of $a){let G=S[L];if(G?.facetFieldDef){let{titleAnchor:H,titleOrient:J}=$c(["titleAnchor","titleOrient"],G.facetFieldDef.header,A,L),re=Pc(L,J),ee=Hy(H,re);ee!==void 0&&(C[re]=ee)}}return ye(C)?void 0:C}(h.layoutHeaders,y);return{padding:s,...this.assembleDefaultLayout(),...d,...w?{titleBand:w}:{}}}assembleDefaultLayout(){return{}}assembleHeaderMarks(){let{layoutHeaders:s}=this.component,d=[];for(let h of $a)s[h].title&&d.push(ms(this,h));for(let h of Eu)d=d.concat(Gy(this,h));return d}assembleAxes(){return function(s,d){let{x:h=[],y=[]}=s;return[...h.map(w=>Vi(w,"grid",d)),...y.map(w=>Vi(w,"grid",d)),...h.map(w=>Vi(w,"main",d)),...y.map(w=>Vi(w,"main",d))].filter(w=>w)}(this.component.axes,this.config)}assembleLegends(){return lp(this)}assembleProjections(){return gg(this)}assembleTitle(){let{encoding:s,...d}=this.title??{},h={...tc(this.config.title).nonMarkTitleProperties,...d,...s?{encode:{update:s}}:{}};if(h.text)return Z(["unit","layer"],this.type)?Z(["middle",void 0],h.anchor)&&(h.frame??="group"):h.anchor??="start",ye(h)?void 0:h}assembleGroup(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],d={};s=s.concat(this.assembleSignals()),s.length>0&&(d.signals=s);let h=this.assembleLayout();h&&(d.layout=h),d.marks=[].concat(this.assembleHeaderMarks(),this.assembleMarks());let y=!this.parent||Wa(this.parent)?ed(this):[];y.length>0&&(d.scales=y);let w=this.assembleAxes();w.length>0&&(d.axes=w);let S=this.assembleLegends();return S.length>0&&(d.legends=S),d}getName(s){return Pe((this.name?`${this.name}_`:"")+s)}getDataName(s){return this.getName(tn[s].toLowerCase())}requestDataName(s){let d=this.getDataName(s),h=this.component.data.outputNodeRefCounts;return h[d]=(h[d]||0)+1,d}getSizeSignalRef(s){if(Wa(this.parent)){let d=Ju(og(s)),h=this.component.scales[d];if(h&&!h.merged){let y=h.get("type"),w=h.get("range");if(Gn(y)&&po(w)){let S=h.get("name"),A=Ag(ys(this,d));return A?{signal:ap(S,h,Ge({aggregate:"distinct",field:A},{expr:"datum"}))}:($e(pa(d)),null)}}}return{signal:this.signalNameMap.get(this.getName(s))}}lookupDataSource(s){let d=this.component.data.outputNodes[s];return d?d.getSource():s}getSignalName(s){return this.signalNameMap.get(s)}renameSignal(s,d){this.signalNameMap.rename(s,d)}renameScale(s,d){this.scaleNameMap.rename(s,d)}renameProjection(s,d){this.projectionNameMap.rename(s,d)}scaleName(s,d){return d?this.getName(s):d0(s)&&Rr(s)&&this.component.scales[s]||this.scaleNameMap.has(this.getName(s))?this.scaleNameMap.get(this.getName(s)):void 0}projectionName(s){return s?this.getName("projection"):this.component.projection&&!this.component.projection.merged||this.projectionNameMap.has(this.getName("projection"))?this.projectionNameMap.get(this.getName("projection")):void 0}getScaleComponent(s){if(!this.component.scales)throw new Error("getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().");let d=this.component.scales[s];return d&&!d.merged?d:this.parent?this.parent.getScaleComponent(s):void 0}getSelectionComponent(s,d){let h=this.component.selection[s];if(!h&&this.parent&&(h=this.parent.getSelectionComponent(s,d)),!h)throw new Error(function(y){return`Cannot find a selection named "${y}".`}(d));return h}hasAxisOrientSignalRef(){return this.component.axes.x?.some(s=>s.hasOrientSignalRef())||this.component.axes.y?.some(s=>s.hasOrientSignalRef())}}class nd extends td{vgField(s){let d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},h=this.fieldDef(s);if(h)return Ge(h,d)}reduceFieldDef(s,d){return function(h,y,w,S){return h?be(h).reduce((A,C)=>{let L=h[C];return b.isArray(L)?L.reduce((G,H)=>y.call(S,G,H,C),A):y.call(S,A,L,C)},w):w}(this.getMapping(),(h,y,w)=>{let S=cr(y);return S?s(h,S,w):h},d)}forEachFieldDef(s,d){mc(this.getMapping(),(h,y)=>{let w=cr(h);w&&s(w,y)},d)}}class wu extends Ht{clone(){return new wu(null,j(this.transform))}constructor(s,d){super(s),this.transform=d,this.transform=j(d);let h=this.transform.as??[void 0,void 0];this.transform.as=[h[0]??"value",h[1]??"density"]}dependentFields(){return new Set([this.transform.density,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`DensityTransform ${ae(this.transform)}`}assemble(){let{density:s,...d}=this.transform,h={type:"kde",field:s,...d};return this.transform.groupby&&(h.resolve="shared"),h}}class _u extends Ht{clone(){return new _u(null,j(this.transform))}constructor(s,d){super(s),this.transform=d,this.transform=j(d)}dependentFields(){return new Set([this.transform.extent])}producedFields(){return new Set([])}hash(){return`ExtentTransform ${ae(this.transform)}`}assemble(){let{extent:s,param:d}=this.transform;return{type:"extent",field:s,signal:d}}}class Xi extends Ht{clone(){return new Xi(null,{...this.filter})}constructor(s,d){super(s),this.filter=d}static make(s,d){let{config:h,mark:y,markDef:w}=d;if(jt("invalid",w,h)!=="filter")return null;let S=d.reduceFieldDef((A,C,L)=>{let G=Rr(L)&&d.getScaleComponent(L);return G&&Ga(G.get("type"))&&C.aggregate!=="count"&&!as(y)&&(A[C.field]=C),A},{});return be(S).length?new Xi(s,S):null}dependentFields(){return new Set(be(this.filter))}producedFields(){return new Set}hash(){return`FilterInvalid ${ae(this.filter)}`}assemble(){let s=be(this.filter).reduce((d,h)=>{let y=this.filter[h],w=Ge(y,{expr:"datum"});return y!==null&&(y.type==="temporal"?d.push(`(isDate(${w}) || (isValid(${w}) && isFinite(+${w})))`):y.type==="quantitative"&&(d.push(`isValid(${w})`),d.push(`isFinite(+${w})`))),d},[]);return s.length>0?{type:"filter",expr:s.join(" && ")}:null}}class Fr extends Ht{clone(){return new Fr(this.parent,j(this.transform))}constructor(s,d){super(s),this.transform=d,this.transform=j(d);let{flatten:h,as:y=[]}=this.transform;this.transform.as=h.map((w,S)=>y[S]??w)}dependentFields(){return new Set(this.transform.flatten)}producedFields(){return new Set(this.transform.as)}hash(){return`FlattenTransform ${ae(this.transform)}`}assemble(){let{flatten:s,as:d}=this.transform;return{type:"flatten",fields:s,as:d}}}class Es extends Ht{clone(){return new Es(null,j(this.transform))}constructor(s,d){super(s),this.transform=d,this.transform=j(d);let h=this.transform.as??[void 0,void 0];this.transform.as=[h[0]??"key",h[1]??"value"]}dependentFields(){return new Set(this.transform.fold)}producedFields(){return new Set(this.transform.as)}hash(){return`FoldTransform ${ae(this.transform)}`}assemble(){let{fold:s,as:d}=this.transform;return{type:"fold",fields:s,as:d}}}class Zi extends Ht{clone(){return new Zi(null,j(this.fields),this.geojson,this.signal)}static parseAll(s,d){if(d.component.projection&&!d.component.projection.isFit)return s;let h=0;for(let y of[[Fa,et],[ar,ca]]){let w=y.map(S=>{let A=mn(d.encoding[S]);return Ue(A)?A.field:Mi(A)?{expr:`${A.datum}`}:ur(A)?{expr:`${A.value}`}:void 0});(w[0]||w[1])&&(s=new Zi(s,w,null,d.getName("geojson_"+h++)))}if(d.channelHasField(En)){let y=d.typedFieldDef(En);y.type===Hs&&(s=new Zi(s,null,y.field,d.getName("geojson_"+h++)))}return s}constructor(s,d,h,y){super(s),this.fields=d,this.geojson=h,this.signal=y}dependentFields(){let s=(this.fields??[]).filter(b.isString);return new Set([...this.geojson?[this.geojson]:[],...s])}producedFields(){return new Set}hash(){return`GeoJSON ${this.geojson} ${this.signal} ${ae(this.fields)}`}assemble(){return[...this.geojson?[{type:"filter",expr:`isValid(datum["${this.geojson}"])`}]:[],{type:"geojson",...this.fields?{fields:this.fields}:{},...this.geojson?{geojson:this.geojson}:{},signal:this.signal}]}}class ws extends Ht{clone(){return new ws(null,this.projection,j(this.fields),j(this.as))}constructor(s,d,h,y){super(s),this.projection=d,this.fields=h,this.as=y}static parseAll(s,d){if(!d.projectionName())return s;for(let h of[[Fa,et],[ar,ca]]){let y=h.map(S=>{let A=mn(d.encoding[S]);return Ue(A)?A.field:Mi(A)?{expr:`${A.datum}`}:ur(A)?{expr:`${A.value}`}:void 0}),w=h[0]===ar?"2":"";(y[0]||y[1])&&(s=new ws(s,d.projectionName(),y,[d.getName(`x${w}`),d.getName(`y${w}`)]))}return s}dependentFields(){return new Set(this.fields.filter(b.isString))}producedFields(){return new Set(this.as)}hash(){return`Geopoint ${this.projection} ${ae(this.fields)} ${ae(this.as)}`}assemble(){return{type:"geopoint",projection:this.projection,fields:this.fields,as:this.as}}}class pr extends Ht{clone(){return new pr(null,j(this.transform))}constructor(s,d){super(s),this.transform=d}dependentFields(){return new Set([this.transform.impute,this.transform.key,...this.transform.groupby??[]])}producedFields(){return new Set([this.transform.impute])}processSequence(s){let{start:d=0,stop:h,step:y}=s;return{signal:`sequence(${[d,h,...y?[y]:[]].join(",")})`}}static makeFromTransform(s,d){return new pr(s,d)}static makeFromEncoding(s,d){let h=d.encoding,y=h.x,w=h.y;if(Ue(y)&&Ue(w)){let S=y.impute?y:w.impute?w:void 0;if(S===void 0)return;let A=y.impute?w:w.impute?y:void 0,{method:C,value:L,frame:G,keyvals:H}=S.impute,J=nm(d.mark,h);return new pr(s,{impute:S.field,key:A.field,...C?{method:C}:{},...L!==void 0?{value:L}:{},...G?{frame:G}:{},...H!==void 0?{keyvals:H}:{},...J.length?{groupby:J}:{}})}return null}hash(){return`Impute ${ae(this.transform)}`}assemble(){let{impute:s,key:d,keyvals:h,method:y,groupby:w,value:S,frame:A=[null,null]}=this.transform,C={type:"impute",field:s,key:d,...h?{keyvals:(L=h,L?.stop!==void 0?this.processSequence(h):h)}:{},method:"value",...w?{groupby:w}:{},value:y&&y!=="value"?null:S};var L;return y&&y!=="value"?[C,{type:"window",as:[`imputed_${s}_value`],ops:[y],fields:[s],frame:A,ignorePeers:!1,...w?{groupby:w}:{}},{type:"formula",expr:`datum.${s} === null ? datum.imputed_${s}_value : datum.${s}`,as:s}]:[C]}}class Ji extends Ht{clone(){return new Ji(null,j(this.transform))}constructor(s,d){super(s),this.transform=d,this.transform=j(d);let h=this.transform.as??[void 0,void 0];this.transform.as=[h[0]??d.on,h[1]??d.loess]}dependentFields(){return new Set([this.transform.loess,this.transform.on,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`LoessTransform ${ae(this.transform)}`}assemble(){let{loess:s,on:d,...h}=this.transform;return{type:"loess",x:d,y:s,...h}}}class Va extends Ht{clone(){return new Va(null,j(this.transform),this.secondary)}constructor(s,d,h){super(s),this.transform=d,this.secondary=h}static make(s,d,h,y){let w=d.component.data.sources,{from:S}=h,A=null;if(function(C){return"data"in C}(S)){let C=Pg(S.data,w);C||(C=new Ao(S.data),w.push(C));let L=d.getName(`lookup_${y}`);A=new aa(C,L,tn.Lookup,d.component.data.outputNodeRefCounts),d.component.data.outputNodes[L]=A}else if(function(C){return"param"in C}(S)){let C=S.param,L;h={as:C,...h};try{L=d.getSelectionComponent(Pe(C),C)}catch{throw new Error(function(H){return`Lookups can only be performed on selection parameters. "${H}" is a variable parameter.`}(C))}if(A=L.materialized,!A)throw new Error(function(G){return`Cannot define and lookup the "${G}" selection in the same view. Try moving the lookup into a second, layered view?`}(C))}return new Va(s,h,A.getSource())}dependentFields(){return new Set([this.transform.lookup])}producedFields(){return new Set(this.transform.as?b.array(this.transform.as):this.transform.from.fields)}hash(){return`Lookup ${ae({transform:this.transform,secondary:this.secondary})}`}assemble(){let s;if(this.transform.from.fields)s={values:this.transform.from.fields,...this.transform.as?{as:b.array(this.transform.as)}:{}};else{let d=this.transform.as;b.isString(d)||($e('If "from.fields" is not specified, "as" has to be a string that specifies the key to be used for the data from the secondary source.'),d="_lookup"),s={as:[d]}}return{type:"lookup",from:this.secondary,key:this.transform.from.key,fields:[this.transform.lookup],...s,...this.transform.default?{default:this.transform.default}:{}}}}class Co extends Ht{clone(){return new Co(null,j(this.transform))}constructor(s,d){super(s),this.transform=d,this.transform=j(d);let h=this.transform.as??[void 0,void 0];this.transform.as=[h[0]??"prob",h[1]??"value"]}dependentFields(){return new Set([this.transform.quantile,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`QuantileTransform ${ae(this.transform)}`}assemble(){let{quantile:s,...d}=this.transform;return{type:"quantile",field:s,...d}}}class Ro extends Ht{clone(){return new Ro(null,j(this.transform))}constructor(s,d){super(s),this.transform=d,this.transform=j(d);let h=this.transform.as??[void 0,void 0];this.transform.as=[h[0]??d.on,h[1]??d.regression]}dependentFields(){return new Set([this.transform.regression,this.transform.on,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`RegressionTransform ${ae(this.transform)}`}assemble(){let{regression:s,on:d,...h}=this.transform;return{type:"regression",x:d,y:s,...h}}}class dl extends Ht{clone(){return new dl(null,j(this.transform))}constructor(s,d){super(s),this.transform=d}addDimensions(s){this.transform.groupby=Ae((this.transform.groupby??[]).concat(s),d=>d)}producedFields(){}dependentFields(){return new Set([this.transform.pivot,this.transform.value,...this.transform.groupby??[]])}hash(){return`PivotTransform ${ae(this.transform)}`}assemble(){let{pivot:s,value:d,groupby:h,limit:y,op:w}=this.transform;return{type:"pivot",field:s,value:d,...y!==void 0?{limit:y}:{},...w!==void 0?{op:w}:{},...h!==void 0?{groupby:h}:{}}}}class fl extends Ht{clone(){return new fl(null,j(this.transform))}constructor(s,d){super(s),this.transform=d}dependentFields(){return new Set}producedFields(){return new Set}hash(){return`SampleTransform ${ae(this.transform)}`}assemble(){return{type:"sample",size:this.transform.sample}}}function vp(l){let s=0;return function d(h,y){if(h instanceof Ao&&!h.isGenerator&&!cs(h.data)&&(l.push(y),y={name:null,source:y.name,transform:[]}),h instanceof Vn&&(h.parent instanceof Ao&&!y.source?(y.format={...y.format??{},parse:h.assembleFormatParse()},y.transform.push(...h.assembleTransforms(!0))):y.transform.push(...h.assembleTransforms())),h instanceof sl)return y.name||(y.name="data_"+s++),!y.source||y.transform.length>0?(l.push(y),h.data=y.name):h.data=y.source,void l.push(...h.assemble());switch((h instanceof Vc||h instanceof Yc||h instanceof Xi||h instanceof ui||h instanceof al||h instanceof ws||h instanceof qa||h instanceof Va||h instanceof ul||h instanceof ll||h instanceof Es||h instanceof Fr||h instanceof wu||h instanceof Ji||h instanceof Co||h instanceof Ro||h instanceof So||h instanceof fl||h instanceof dl||h instanceof _u)&&y.transform.push(h.assemble()),(h instanceof fi||h instanceof ji||h instanceof pr||h instanceof To||h instanceof Zi)&&y.transform.push(...h.assemble()),h instanceof aa&&(y.source&&y.transform.length===0?h.setSource(y.source):h.parent instanceof aa?h.setSource(y.name):(y.name||(y.name="data_"+s++),h.setSource(y.name),h.numChildren()===1&&(l.push(y),y={name:null,source:y.name,transform:[]}))),h.numChildren()){case 0:h instanceof aa&&(!y.source||y.transform.length>0)&&l.push(y);break;case 1:d(h.children[0],y);break;default:{y.name||(y.name="data_"+s++);let w=y.name;!y.source||y.transform.length>0?l.push(y):w=y.source;for(let S of h.children)d(S,{name:null,source:w,transform:[]});break}}}}function Fg(l){return l==="top"||l==="left"||Ke(l)?"header":"footer"}function uv(l,s){let{facet:d,config:h,child:y,component:w}=l;if(l.channelHasField(s)){let S=d[s],A=Yi("title",null,h,s),C=is(S,h,{allowDisabling:!0,includeDefault:A===void 0||!!A});y.component.layoutHeaders[s].title&&(C=b.isArray(C)?C.join(", "):C,C+=` / ${y.component.layoutHeaders[s].title}`,y.component.layoutHeaders[s].title=null);let L=Yi("labelOrient",S.header,h,s),G=S.header!==null&&Ve(S.header?.labels,h.header.labels,!0),H=Z(["bottom","right"],L)?"footer":"header";w.layoutHeaders[s]={title:S.header!==null?C:null,facetFieldDef:S,[H]:s==="facet"?[]:[Ep(l,s,G)]}}}function Ep(l,s,d){let h=s==="row"?"height":"width";return{labels:d,sizeSignal:l.child.component.layoutSize.get(h)?l.child.getSizeSignalRef(h):void 0,axes:[]}}function Tn(l,s){let{child:d}=l;if(d.component.axes[s]){let{layoutHeaders:h,resolve:y}=l.component;if(y.axis[s]=rp(y,s),y.axis[s]==="shared"){let w=s==="x"?"column":"row",S=h[w];for(let A of d.component.axes[s]){let C=Fg(A.get("orient"));S[C]??=[Ep(l,w,!1)];let L=Vi(A,"main",l.config,{header:!0});L&&S[C][0].axes.push(L),A.mainExtracted=!0}}}}function pl(l){for(let s of l.children)s.parseLayoutSize()}function _s(l,s){let d=og(s),h=Ju(d),y=l.component.resolve,w=l.component.layoutSize,S;for(let A of l.children){let C=A.component.layoutSize.getWithExplicit(d),L=y.scale[h]??lg(h,l);if(L==="independent"&&C.value==="step"){S=void 0;break}if(S){if(L==="independent"&&S.value!==C.value){S=void 0;break}S=Gi(S,C,d,"")}else S=C}if(S){for(let A of l.children)l.renameSignal(A.getName(d),l.getName(s)),A.component.layoutSize.set(d,"merged",!1);w.setWithExplicit(s,S)}else w.setWithExplicit(s,{explicit:!1,value:void 0})}function Pr(l,s){let d=s==="width"?"x":"y",h=l.config,y=l.getScaleComponent(d);if(y){let w=y.get("type"),S=y.get("range");if(Gn(w)){let A=xc(h.view,s);return po(S)||ja(A)?"step":A}return us(h.view,s)}if(l.hasProjection||l.mark==="arc")return us(h.view,s);{let w=xc(h.view,s);return ja(w)?w.step:w}}function ad(l,s,d){return Ge(s,{suffix:`by_${Ge(l)}`,...d??{}})}class hl extends nd{constructor(s,d,h,y){super(s,"facet",d,h,y,s.resolve),nt(this,"facet",void 0),nt(this,"child",void 0),nt(this,"children",void 0),this.child=Hg(s.spec,this,this.getName("child"),void 0,y),this.children=[this.child],this.facet=this.initFacet(s.facet)}initFacet(s){if(!Zl(s))return{facet:this.initFacetFieldDef(s,"facet")};let d=be(s),h={};for(let y of d){if(![Je,Yr].includes(y)){$e(Ii(y,"facet"));break}let w=s[y];if(w.field===void 0){$e(zd(w,y));break}h[y]=this.initFacetFieldDef(w,y)}return h}initFacetFieldDef(s,d){let h=nu(s,d);return h.header?h.header=Jn(h.header):h.header===null&&(h.header=null),h}channelHasField(s){return!!this.facet[s]}fieldDef(s){return this.facet[s]}parseData(){this.component.data=wp(this),this.child.parseData()}parseLayoutSize(){pl(this)}parseSelections(){this.child.parseSelections(),this.component.selection=this.child.component.selection}parseMarkGroup(){this.child.parseMarkGroup()}parseAxesAndHeaders(){this.child.parseAxesAndHeaders(),function(s){for(let d of $a)uv(s,d);Tn(s,"x"),Tn(s,"y")}(this)}assembleSelectionTopLevelSignals(s){return this.child.assembleSelectionTopLevelSignals(s)}assembleSignals(){return this.child.assembleSignals(),[]}assembleSelectionData(s){return this.child.assembleSelectionData(s)}getHeaderLayoutMixins(){let s={};for(let d of $a)for(let h of Bc){let y=this.component.layoutHeaders[d],w=y[h],{facetFieldDef:S}=y;if(S){let A=Yi("titleOrient",S.header,this.config,d);if(["right","bottom"].includes(A)){let C=Pc(d,A);s.titleAnchor??={},s.titleAnchor[C]="end"}}if(w?.[0]){let A=d==="row"?"height":"width",C=h==="header"?"headerBand":"footerBand";d==="facet"||this.child.component.layoutSize.get(A)||(s[C]??={},s[C][d]=.5),y.title&&(s.offset??={},s.offset[d==="row"?"rowTitle":"columnTitle"]=10)}}return s}assembleDefaultLayout(){let{column:s,row:d}=this.facet,h=s?this.columnDistinctSignal():d?1:void 0,y="all";return(d||this.component.resolve.scale.x!=="independent")&&(s||this.component.resolve.scale.y!=="independent")||(y="none"),{...this.getHeaderLayoutMixins(),...h?{columns:h}:{},bounds:"full",align:y}}assembleLayoutSignals(){return this.child.assembleLayoutSignals()}columnDistinctSignal(){if(!(this.parent&&this.parent instanceof hl))return{signal:`length(data('${this.getName("column_domain")}'))`}}assembleGroupStyle(){}assembleGroup(s){return this.parent&&this.parent instanceof hl?{...this.channelHasField("column")?{encode:{update:{columns:{field:Ge(this.facet.column,{prefix:"distinct"})}}}}:{},...super.assembleGroup(s)}:super.assembleGroup(s)}getCardinalityAggregateForChild(){let s=[],d=[],h=[];if(this.child instanceof hl){if(this.child.channelHasField("column")){let y=Ge(this.child.facet.column);s.push(y),d.push("distinct"),h.push(`distinct_${y}`)}}else for(let y of Jr){let w=this.child.component.scales[y];if(w&&!w.merged){let S=w.get("type"),A=w.get("range");if(Gn(S)&&po(A)){let C=Ag(ys(this.child,y));C?(s.push(C),d.push("distinct"),h.push(`distinct_${C}`)):$e(pa(y))}}}return{fields:s,ops:d,as:h}}assembleFacet(){let{name:s,data:d}=this.component.data.facetRoot,{row:h,column:y}=this.facet,{fields:w,ops:S,as:A}=this.getCardinalityAggregateForChild(),C=[];for(let G of $a){let H=this.facet[G];if(H){C.push(Ge(H));let{bin:J,sort:re}=H;if(Wt(J)&&C.push(Ge(H,{binSuffix:"end"})),ri(re)){let{field:ee,op:se=uc}=re,de=ad(H,re);h&&y?(w.push(de),S.push("max"),A.push(de)):(w.push(ee),S.push(se),A.push(de))}else if(b.isArray(re)){let ee=rl(H,G);w.push(ee),S.push("max"),A.push(ee)}}}let L=!!h&&!!y;return{name:s,data:d,groupby:C,...L||w.length>0?{aggregate:{...L?{cross:L}:{},...w.length?{fields:w,ops:S,as:A}:{}}}:{}}}facetSortFields(s){let{facet:d}=this,h=d[s];return h?ri(h.sort)?[ad(h,h.sort,{expr:"datum"})]:b.isArray(h.sort)?[rl(h,s,{expr:"datum"})]:[Ge(h,{expr:"datum"})]:[]}facetSortOrder(s){let{facet:d}=this,h=d[s];if(h){let{sort:y}=h;return[(ri(y)?y.order:!b.isArray(y)&&y)||"ascending"]}return[]}assembleLabelTitle(){let{facet:s,config:d}=this;if(s.facet)return _o(s.facet,"facet",d);let h={row:["top","bottom"],column:["left","right"]};for(let y of Eu)if(s[y]){let w=Yi("labelOrient",s[y]?.header,d,y);if(h[y].includes(w))return _o(s[y],y,d)}}assembleMarks(){let{child:s}=this,d=function(S){let A=[],C=vp(A);for(let L of S.children)C(L,{source:S.name,name:null,transform:[]});return A}(this.component.data.facetRoot),h=s.assembleGroupEncodeEntry(!1),y=this.assembleLabelTitle()||s.assembleTitle(),w=s.assembleGroupStyle();return[{name:this.getName("cell"),type:"group",...y?{title:y}:{},...w?{style:w}:{},from:{facet:this.assembleFacet()},sort:{field:$a.map(S=>this.facetSortFields(S)).flat(),order:$a.map(S=>this.facetSortOrder(S)).flat()},...d.length>0?{data:d}:{},...h?{encode:{update:h}}:{},...s.assembleGroup(Cc(this,[]))}]}getMapping(){return this.facet}}function Pg(l,s){for(let d of s){let h=d.data;if(l.name&&d.hasName()&&l.name!==d.dataName)continue;let y=l.format?.mesh,w=h.format?.feature;if(y&&w)continue;let S=l.format?.feature;if((S||w)&&S!==w)continue;let A=h.format?.mesh;if(!y&&!A||y===A){if(pu(l)&&pu(h)){if(Re(l.values,h.values))return d}else if(cs(l)&&cs(h)){if(l.url===h.url)return d}else if(Gf(l)&&l.name===d.dataName)return d}}return null}function wp(l){let s=function(ee,se){if(ee.data||!ee.parent){if(ee.data===null){let fe=new Ao({values:[]});return se.push(fe),fe}let de=Pg(ee.data,se);if(de)return bo(ee.data)||(de.data.format=pe({},ee.data.format,de.data.format)),!de.hasName()&&ee.data.name&&(de.dataName=ee.data.name),de;{let fe=new Ao(ee.data);return se.push(fe),fe}}return ee.parent.component.data.facetRoot?ee.parent.component.data.facetRoot:ee.parent.component.data.main}(l,l.component.data.sources),{outputNodes:d,outputNodeRefCounts:h}=l.component.data,y=l.data,w=!(y&&(bo(y)||cs(y)||pu(y)))&&l.parent?l.parent.component.data.ancestorParse.clone():new wy;bo(y)?(jf(y)?s=new Yc(s,y.sequence):qf(y)&&(s=new Vc(s,y.graticule)),w.parseNothing=!0):y?.format?.parse===null&&(w.parseNothing=!0),s=Vn.makeExplicit(s,l,w)??s,s=new So(s);let S=l.parent&&vs(l.parent);(ln(l)||Wa(l))&&S&&(s=fi.makeFromEncoding(s,l)??s),l.transforms.length>0&&(s=function(ee,se,de){let fe=0;for(let ge of se.transforms){let we,Te;if(V_(ge))Te=ee=new al(ee,ge),we="derived";else if(Tm(ge)){let Fe=n1(ge);Te=ee=Vn.makeWithAncestors(ee,{},Fe,de)??ee,ee=new ui(ee,se,ge.filter)}else if(Ff(ge))Te=ee=fi.makeFromTransform(ee,ge,se),we="number";else if(Pf(ge))we="date",de.getWithExplicit(ge.field).value===void 0&&(ee=new Vn(ee,{[ge.field]:we}),de.set(ge.field,we,!1)),Te=ee=ji.makeFromTransform(ee,ge);else if(yy(ge))Te=ee=qa.makeFromTransform(ee,ge),we="number",ng(se)&&(ee=new So(ee));else if(Cm(ge))Te=ee=Va.make(ee,se,ge,fe++),we="derived";else if(Nm(ge))Te=ee=new ul(ee,ge),we="number";else if(Im(ge))Te=ee=new ll(ee,ge),we="number";else if(Y_(ge))Te=ee=To.makeFromTransform(ee,ge),we="derived";else if(Dm(ge))Te=ee=new Es(ee,ge),we="derived";else if(Mm(ge))Te=ee=new _u(ee,ge),we="derived";else if(by(ge))Te=ee=new Fr(ee,ge),we="derived";else if(q_(ge))Te=ee=new dl(ee,ge),we="derived";else if(gy(ge))ee=new fl(ee,ge);else if(Om(ge))Te=ee=pr.makeFromTransform(ee,ge),we="derived";else if(hy(ge))Te=ee=new wu(ee,ge),we="derived";else if(Rm(ge))Te=ee=new Co(ee,ge),we="derived";else if(my(ge))Te=ee=new Ro(ee,ge),we="derived";else{if(!W_(ge)){$e(`Ignoring an invalid transform: ${Ye(ge)}.`);continue}Te=ee=new Ji(ee,ge),we="derived"}if(Te&&we!==void 0)for(let Fe of Te.producedFields()??[])de.set(Fe,we,!1)}return ee}(s,l,w));let A=function(ee){let se={};if(ln(ee)&&ee.component.selection)for(let de of be(ee.component.selection)){let fe=ee.component.selection[de];for(let ge of fe.project.items)!ge.channel&&Kt(ge.field)>1&&(se[ge.field]="flatten")}return se}(l),C=Wn(l);s=Vn.makeWithAncestors(s,{},{...A,...C},w)??s,ln(l)&&(s=Zi.parseAll(s,l),s=ws.parseAll(s,l)),(ln(l)||Wa(l))&&(S||(s=fi.makeFromEncoding(s,l)??s),s=ji.makeFromEncoding(s,l)??s,s=al.parseAllForSortIndex(s,l));let L=l.getDataName(tn.Raw),G=new aa(s,L,tn.Raw,h);if(d[L]=G,s=G,ln(l)){let ee=qa.makeFromEncoding(s,l);ee&&(s=ee,ng(l)&&(s=new So(s))),s=pr.makeFromEncoding(s,l)??s,s=To.makeFromEncoding(s,l)??s}ln(l)&&(s=Xi.make(s,l)??s);let H=l.getDataName(tn.Main),J=new aa(s,H,tn.Main,h);d[H]=J,s=J,ln(l)&&function(ee,se){for(let[de,fe]of ke(ee.component.selection??{})){let ge=ee.getName(`lookup_${de}`);ee.component.data.outputNodes[ge]=fe.materialized=new aa(new ui(se,ee,{param:de}),ge,tn.Lookup,ee.component.data.outputNodeRefCounts)}}(l,J);let re=null;if(Wa(l)){let ee=l.getName("facet");s=function(se,de){let{row:fe,column:ge}=de;if(fe&&ge){let we=null;for(let Te of[fe,ge])if(ri(Te.sort)){let{field:Fe,op:He=uc}=Te.sort;se=we=new ll(se,{joinaggregate:[{op:He,field:Fe,as:ad(Te,Te.sort,{forAs:!0})}],groupby:[Ge(Te)]})}return we}return null}(s,l.facet)??s,re=new sl(s,l,ee,J.getSource()),d[ee]=re}return{...l.component.data,outputNodes:d,outputNodeRefCounts:h,raw:G,main:J,facetRoot:re,ancestorParse:w}}class s1 extends td{constructor(s,d,h,y){super(s,"concat",d,h,y,s.resolve),nt(this,"children",void 0),s.resolve?.axis?.x!=="shared"&&s.resolve?.axis?.y!=="shared"||$e("Axes cannot be shared in concatenated or repeated views yet (https://github.com/vega/vega-lite/issues/2415)."),this.children=this.getChildren(s).map((w,S)=>Hg(w,this,this.getName(`concat_${S}`),void 0,y))}parseData(){this.component.data=wp(this);for(let s of this.children)s.parseData()}parseSelections(){this.component.selection={};for(let s of this.children){s.parseSelections();for(let d of be(s.component.selection))this.component.selection[d]=s.component.selection[d]}}parseMarkGroup(){for(let s of this.children)s.parseMarkGroup()}parseAxesAndHeaders(){for(let s of this.children)s.parseAxesAndHeaders()}getChildren(s){return uu(s)?s.vconcat:Nf(s)?s.hconcat:s.concat}parseLayoutSize(){(function(s){pl(s);let d=s.layout.columns===1?"width":"childWidth",h=s.layout.columns===void 0?"height":"childHeight";_s(s,d),_s(s,h)})(this)}parseAxisGroup(){return null}assembleSelectionTopLevelSignals(s){return this.children.reduce((d,h)=>h.assembleSelectionTopLevelSignals(d),s)}assembleSignals(){return this.children.forEach(s=>s.assembleSignals()),[]}assembleLayoutSignals(){let s=fr(this);for(let d of this.children)s.push(...d.assembleLayoutSignals());return s}assembleSelectionData(s){return this.children.reduce((d,h)=>h.assembleSelectionData(d),s)}assembleMarks(){return this.children.map(s=>{let d=s.assembleTitle(),h=s.assembleGroupStyle(),y=s.assembleGroupEncodeEntry(!1);return{type:"group",name:s.getName("group"),...d?{title:d}:{},...h?{style:h}:{},...y?{encode:{update:y}}:{},...s.assembleGroup()}})}assembleGroupStyle(){}assembleDefaultLayout(){let s=this.layout.columns;return{...s!=null?{columns:s}:{},bounds:"full",align:"each"}}}let _p={disable:1,gridScale:1,scale:1,...hc,labelExpr:1,encode:1},$g=be(_p);class kp extends Ui{constructor(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},h=arguments.length>2&&arguments[2]!==void 0&&arguments[2];super(),this.explicit=s,this.implicit=d,this.mainExtracted=h}clone(){return new kp(j(this.explicit),j(this.implicit),this.mainExtracted)}hasAxisPart(s){return s==="axis"||(s==="grid"||s==="title"?!!this.get(s):!((d=this.get(s))===!1||d===null));var d}hasOrientSignalRef(){return Ke(this.explicit.orient)}}let Pt={bottom:"top",top:"bottom",left:"right",right:"left"};function cv(l,s){if(!l)return s.map(d=>d.clone());{if(l.length!==s.length)return;let d=l.length;for(let h=0;h<d;h++){let y=l[h],w=s[h];if(!!y!=!!w)return;if(y&&w){let S=y.getWithExplicit("orient"),A=w.getWithExplicit("orient");if(S.explicit&&A.explicit&&S.value!==A.value)return;l[h]=ml(y,w)}}}return l}function ml(l,s){for(let d of $g){let h=Gi(l.getWithExplicit(d),s.getWithExplicit(d),d,"axis",(y,w)=>{switch(d){case"title":return ti(y,w);case"gridScale":return{explicit:y.explicit,value:Ve(y.value,w.value)}}return Tc(y,w,d,"axis")});l.setWithExplicit(d,h)}return l}function Bg(l,s,d,h,y){if(s==="disable")return d!==void 0;switch(d=d||{},s){case"titleAngle":case"labelAngle":return l===(Ke(d.labelAngle)?d.labelAngle:Dt(d.labelAngle));case"values":return!!d.values;case"encode":return!!d.encoding||!!d.labelAngle;case"title":if(l===zy(h,y))return!0}return l===d[s]}let ku=new Set(["grid","translate","format","formatType","orient","labelExpr","tickCount","position","tickMinStep"]);function Ug(l,s){let d=s.axis(l),h=new kp,y=mn(s.encoding[l]),{mark:w,config:S}=s,A=d?.orient||S[l==="x"?"axisX":"axisY"]?.orient||S.axis?.orient||function(fe){return fe==="x"?"bottom":"left"}(l),C=s.getScaleComponent(l).get("type"),L=function(fe,ge,we,Te){let Fe=ge==="band"?["axisDiscrete","axisBand"]:ge==="point"?["axisDiscrete","axisPoint"]:z0(ge)?["axisQuantitative"]:ge==="time"||ge==="utc"?["axisTemporal"]:[],He=fe==="x"?"axisX":"axisY",tt=Ke(we)?"axisOrient":`axis${gt(we)}`,ut=[...Fe,...Fe.map(Xe=>He+Xe.substr(4))],Qe=["axis",tt,He];return{vlOnlyAxisConfig:ci(ut,Te,fe,we),vgAxisConfig:ci(Qe,Te,fe,we),axisConfigStyle:t1([...Qe,...ut],Te)}}(l,C,A,s.config),G=d!==void 0?!d:ag("disable",S.style,d?.style,L).configValue;if(h.set("disable",G,d!==void 0),G)return h;d=d||{};let H=function(fe,ge,we,Te,Fe){let He=ge?.labelAngle;if(He!==void 0)return Ke(He)?He:Dt(He);{let{configValue:tt}=ag("labelAngle",Te,ge?.style,Fe);return tt!==void 0?Dt(tt):we!==Jt||!Z([Qd,Jd],fe.type)||Ue(fe)&&fe.timeUnit?void 0:270}}(y,d,l,S.style,L),J=J0(d.formatType,y,C),re=Z0(y,y.type,d.format,d.formatType,S,!0),ee={fieldOrDatumDef:y,axis:d,channel:l,model:s,scaleType:C,orient:A,labelAngle:H,format:re,formatType:J,mark:w,config:S};for(let fe of $g){let ge=fe in $y?$y[fe](ee):ay(fe)?d[fe]:void 0,we=ge!==void 0,Te=Bg(ge,fe,d,s,l);if(we&&Te)h.set(fe,ge,Te);else{let{configValue:Fe,configFrom:He}=ay(fe)&&fe!=="values"?ag(fe,S.style,d.style,L):{},tt=Fe!==void 0;we&&!tt?h.set(fe,ge,Te):(He!=="vgAxisConfig"||ku.has(fe)&&tt||iu(Fe)||Ke(Fe))&&h.set(fe,Fe,!1)}}let se=d.encoding??{},de=ss.reduce((fe,ge)=>{if(!h.hasAxisPart(ge))return fe;let we=sg(se[ge]??{},s),Te=ge==="labels"?function(Fe,He,tt){let{encoding:ut,config:Qe}=Fe,Xe=mn(ut[He])??mn(ut[Si(He)]),xt=Fe.axis(He)||{},{format:$t,formatType:Mn}=xt;if(Vs(Mn))return{text:ai({fieldOrDatumDef:Xe,field:"datum.value",format:$t,formatType:Mn,config:Qe}),...tt};if($t===void 0&&Mn===void 0&&Qe.customFormatTypes){if(Ql(Xe)==="quantitative"){if(eu(Xe)&&Xe.stack==="normalize"&&Qe.normalizedNumberFormatType)return{text:ai({fieldOrDatumDef:Xe,field:"datum.value",format:Qe.normalizedNumberFormat,formatType:Qe.normalizedNumberFormatType,config:Qe}),...tt};if(Qe.numberFormatType)return{text:ai({fieldOrDatumDef:Xe,field:"datum.value",format:Qe.numberFormat,formatType:Qe.numberFormatType,config:Qe}),...tt}}if(Ql(Xe)==="temporal"&&Qe.timeFormatType&&Ue(Xe)&&!Xe.timeUnit)return{text:ai({fieldOrDatumDef:Xe,field:"datum.value",format:Qe.timeFormat,formatType:Qe.timeFormatType,config:Qe}),...tt}}return tt}(s,l,we):we;return Te===void 0||ye(Te)||(fe[ge]={update:Te}),fe},{});return ye(de)||h.set("encode",de,!!d.encoding||d.labelAngle!==void 0),h}function xp(l,s){let{config:d}=l;return{...Ca(l,{align:"ignore",baseline:"ignore",color:"include",size:"include",orient:"ignore",theta:"ignore"}),...qn("x",l,{defaultPos:"mid"}),...qn("y",l,{defaultPos:"mid"}),...Hn("size",l),...Hn("angle",l),...dv(l,d,s)}}function dv(l,s,d){return d?{shape:{value:d}}:Hn("shape",l)}let fv={vgMark:"rule",encodeEntry:l=>{let{markDef:s}=l,d=s.orient;return l.encoding.x||l.encoding.y||l.encoding.latitude||l.encoding.longitude?{...Ca(l,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...Zf("x",l,{defaultPos:d==="horizontal"?"zeroOrMax":"mid",defaultPos2:"zeroOrMin",range:d!=="vertical"}),...Zf("y",l,{defaultPos:d==="vertical"?"zeroOrMax":"mid",defaultPos2:"zeroOrMin",range:d!=="horizontal"}),...Hn("size",l,{vgChannel:"strokeWidth"})}:{}}};function l1(l,s,d){if(jt("align",l,d)===void 0)return"center"}function pv(l,s,d){if(jt("baseline",l,d)===void 0)return"middle"}let Sp={vgMark:"rect",encodeEntry:l=>{let{config:s,markDef:d}=l,h=d.orient,y=h==="horizontal"?"width":"height",w=h==="horizontal"?"height":"width";return{...Ca(l,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...qn("x",l,{defaultPos:"mid",vgChannel:"xc"}),...qn("y",l,{defaultPos:"mid",vgChannel:"yc"}),...Hn("size",l,{defaultValue:hv(l),vgChannel:y}),[w]:rn(jt("thickness",d,s))}}};function hv(l){let{config:s,markDef:d}=l,{orient:h}=d,y=h==="horizontal"?"width":"height",w=l.getScaleComponent(h==="horizontal"?"x":"y"),S=jt("size",d,s,{vgChannel:y})??s.tick.bandSize;if(S!==void 0)return S;{let A=w?w.get("range"):void 0;return A&&po(A)&&b.isNumber(A.step)?3*A.step/4:3*cu(s.view,y)/4}}let rd={arc:{vgMark:"arc",encodeEntry:l=>({...Ca(l,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"}),...qn("x",l,{defaultPos:"mid"}),...qn("y",l,{defaultPos:"mid"}),...si(l,"radius"),...si(l,"theta")})},area:{vgMark:"area",encodeEntry:l=>({...Ca(l,{align:"ignore",baseline:"ignore",color:"include",orient:"include",size:"ignore",theta:"ignore"}),...Zf("x",l,{defaultPos:"zeroOrMin",defaultPos2:"zeroOrMin",range:l.markDef.orient==="horizontal"}),...Zf("y",l,{defaultPos:"zeroOrMin",defaultPos2:"zeroOrMin",range:l.markDef.orient==="vertical"}),...Dc(l)})},bar:{vgMark:"rect",encodeEntry:l=>({...Ca(l,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...si(l,"x"),...si(l,"y")})},circle:{vgMark:"symbol",encodeEntry:l=>xp(l,"circle")},geoshape:{vgMark:"shape",encodeEntry:l=>({...Ca(l,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"})}),postEncodingTransform:l=>{let{encoding:s}=l,d=s.shape;return[{type:"geoshape",projection:l.projectionName(),...d&&Ue(d)&&d.type===Hs?{field:Ge(d,{expr:"datum"})}:{}}]}},image:{vgMark:"image",encodeEntry:l=>({...Ca(l,{align:"ignore",baseline:"ignore",color:"ignore",orient:"ignore",size:"ignore",theta:"ignore"}),...si(l,"x"),...si(l,"y"),...Kf(l,"url")})},line:{vgMark:"line",encodeEntry:l=>({...Ca(l,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"}),...qn("x",l,{defaultPos:"mid"}),...qn("y",l,{defaultPos:"mid"}),...Hn("size",l,{vgChannel:"strokeWidth"}),...Dc(l)})},point:{vgMark:"symbol",encodeEntry:l=>xp(l)},rect:{vgMark:"rect",encodeEntry:l=>({...Ca(l,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...si(l,"x"),...si(l,"y")})},rule:fv,square:{vgMark:"symbol",encodeEntry:l=>xp(l,"square")},text:{vgMark:"text",encodeEntry:l=>{let{config:s,encoding:d}=l;return{...Ca(l,{align:"include",baseline:"include",color:"include",size:"ignore",orient:"ignore",theta:"include"}),...qn("x",l,{defaultPos:"mid"}),...qn("y",l,{defaultPos:"mid"}),...Kf(l),...Hn("size",l,{vgChannel:"fontSize"}),...Hn("angle",l),...Ny("align",l1(l.markDef,d,s)),...Ny("baseline",pv(l.markDef,d,s)),...qn("radius",l,{defaultPos:null}),...qn("theta",l,{defaultPos:null})}}},tick:Sp,trail:{vgMark:"trail",encodeEntry:l=>({...Ca(l,{align:"ignore",baseline:"ignore",color:"include",size:"include",orient:"ignore",theta:"ignore"}),...qn("x",l,{defaultPos:"mid"}),...qn("y",l,{defaultPos:"mid"}),...Hn("size",l),...Dc(l)})}};function zg(l){if(Z([sc,ef,N_],l.mark)){let s=nm(l.mark,l.encoding);if(s.length>0)return function(d,h){return[{name:d.getName("pathgroup"),type:"group",from:{facet:{name:Gg+d.requestDataName(tn.Main),data:d.requestDataName(tn.Main),groupby:h}},encode:{update:{width:{field:{group:"width"}},height:{field:{group:"height"}}}},marks:Ap(d,{fromPrefix:Gg})}]}(l,s)}else if(l.mark===tf){let s=kh.some(d=>jt(d,l.markDef,l.config));if(l.stack&&!l.fieldDef("size")&&s)return function(d){let[h]=Ap(d,{fromPrefix:jg}),y=d.scaleName(d.stack.fieldChannel),w=function(){let G=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return d.vgField(d.stack.fieldChannel,G)},S=(G,H)=>`${G}(${[w({prefix:"min",suffix:"start",expr:H}),w({prefix:"max",suffix:"start",expr:H}),w({prefix:"min",suffix:"end",expr:H}),w({prefix:"max",suffix:"end",expr:H})].map(J=>`scale('${y}',${J})`).join(",")})`,A,C;d.stack.fieldChannel==="x"?(A={...V(h.encode.update,["y","yc","y2","height",...kh]),x:{signal:S("min","datum")},x2:{signal:S("max","datum")},clip:{value:!0}},C={x:{field:{group:"x"},mult:-1},height:{field:{group:"height"}}},h.encode.update={...Q(h.encode.update,["y","yc","y2"]),height:{field:{group:"height"}}}):(A={...V(h.encode.update,["x","xc","x2","width"]),y:{signal:S("min","datum")},y2:{signal:S("max","datum")},clip:{value:!0}},C={y:{field:{group:"y"},mult:-1},width:{field:{group:"width"}}},h.encode.update={...Q(h.encode.update,["x","xc","x2"]),width:{field:{group:"width"}}});for(let G of kh){let H=Ua(G,d.markDef,d.config);h.encode.update[G]?(A[G]=h.encode.update[G],delete h.encode.update[G]):H&&(A[G]=rn(H)),H&&(h.encode.update[G]={value:0})}let L=[];if(d.stack.groupbyChannels?.length>0)for(let G of d.stack.groupbyChannels){let H=d.fieldDef(G),J=Ge(H);J&&L.push(J),(H?.bin||H?.timeUnit)&&L.push(Ge(H,{binSuffix:"end"}))}return A=["stroke","strokeWidth","strokeJoin","strokeCap","strokeDash","strokeDashOffset","strokeMiterLimit","strokeOpacity"].reduce((G,H)=>{if(h.encode.update[H])return{...G,[H]:h.encode.update[H]};{let J=Ua(H,d.markDef,d.config);return J!==void 0?{...G,[H]:rn(J)}:G}},A),A.stroke&&(A.strokeForeground={value:!0},A.strokeOffset={value:0}),[{type:"group",from:{facet:{data:d.requestDataName(tn.Main),name:jg+d.requestDataName(tn.Main),groupby:L,aggregate:{fields:[w({suffix:"start"}),w({suffix:"start"}),w({suffix:"end"}),w({suffix:"end"})],ops:["min","max","min","max"]}}},encode:{update:A},marks:[{type:"group",encode:{update:C},marks:[h]}]}]}(l)}return Ap(l)}let Gg="faceted_path_",jg="stack_group_";function Ap(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{fromPrefix:""},{mark:d,markDef:h,encoding:y,config:w}=l,S=Ve(h.clip,function(re){let ee=re.getScaleComponent("x"),se=re.getScaleComponent("y");return!(!ee?.get("selectionExtent")&&!se?.get("selectionExtent"))||void 0}(l),function(re){let ee=re.component.projection;return!(!ee||ee.isFit)||void 0}(l)),A=k0(h),C=y.key,L=function(re){let{encoding:ee,stack:se,mark:de,markDef:fe,config:ge}=re,we=ee.order;if(!(!b.isArray(we)&&ur(we)&&he(we.value)||!we&&he(jt("order",fe,ge)))){if((b.isArray(we)||Ue(we))&&!se)return jl(we,{expr:"datum"});if(as(de)){let Te=fe.orient==="horizontal"?"y":"x",Fe=ee[Te];if(Ue(Fe)){let He=Fe.sort;return b.isArray(He)?{field:Ge(Fe,{prefix:Te,suffix:"sort_index",expr:"datum"})}:ri(He)?{field:Ge({aggregate:tm(re.encoding)?He.op:void 0,field:He.field},{expr:"datum"})}:Yh(He)?{field:Ge(re.fieldDef(He.encoding),{expr:"datum"}),order:He.order}:He===null?void 0:{field:Ge(Fe,{binSuffix:re.stack?.impute?"mid":void 0,expr:"datum"})}}}}}(l),G=function(re){if(!re.component.selection)return null;let ee=be(re.component.selection).length,se=ee,de=re.parent;for(;de&&se===0;)se=be(de.component.selection).length,de=de.parent;return se?{interactive:ee>0||re.mark==="geoshape"||!!re.encoding.tooltip}:null}(l),H=jt("aria",h,w),J=rd[d].postEncodingTransform?rd[d].postEncodingTransform(l):null;return[{name:l.getName("marks"),type:rd[d].vgMark,...S?{clip:!0}:{},...A?{style:A}:{},...C?{key:C.field}:{},...L?{sort:L}:{},...G||{},...H===!1?{aria:H}:{},from:{data:s.fromPrefix+l.requestDataName(tn.Main)},encode:{update:rd[d].encodeEntry(l)},...J?{transform:J}:{}}]}class Tp extends nd{constructor(s,d,h){let y=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},w=arguments.length>4?arguments[4]:void 0;super(s,"unit",d,h,w,void 0,_c(s)?s.view:void 0),nt(this,"markDef",void 0),nt(this,"encoding",void 0),nt(this,"specifiedScales",{}),nt(this,"stack",void 0),nt(this,"specifiedAxes",{}),nt(this,"specifiedLegends",{}),nt(this,"specifiedProjection",{}),nt(this,"selection",[]),nt(this,"children",[]);let S=Oi(s.mark)?{...s.mark}:{type:s.mark},A=S.type;S.filled===void 0&&(S.filled=function(L,G,H){let{graticule:J}=H;if(J)return!1;let re=Ua("filled",L,G),ee=L.type;return Ve(re,ee!==nf&&ee!==sc&&ee!==af)}(S,w,{graticule:s.data&&qf(s.data)}));let C=this.encoding=function(L,G,H,J){let re={};for(let se of be(L))d0(se)||$e(`${ee=se}-encoding is dropped as ${ee} is not a valid encoding channel.`);var ee;for(let se of Ku){if(!L[se])continue;let de=L[se];if(Zn(se)){let fe=l_(se),ge=re[fe];if(Ue(ge)&&B0(ge.type)&&Ue(de)&&!ge.timeUnit){$e(Sh(fe));continue}}if(se!=="angle"||G!=="arc"||L.theta||($e("Arc marks uses theta channel rather than angle, replacing angle with theta."),se=nr),vf(L,se,G)){if(se===wi&&G==="line"&&cr(L[se])?.aggregate){$e("Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.");continue}if(se===Me&&(H?"fill"in L:"stroke"in L))$e(T0("encoding",{fill:"fill"in L,stroke:"stroke"in L}));else if(se===uo||se===Fs&&!b.isArray(de)&&!ur(de)||se===Zr&&b.isArray(de)){if(de){if(se===Fs){let fe=L[se];if(Q0(fe)){re[se]=fe;continue}}re[se]=b.array(de).reduce((fe,ge)=>(Ue(ge)?fe.push(nu(ge,se)):$e(zd(ge,se)),fe),[])}}else{if(se===Zr&&de===null)re[se]=null;else if(!(Ue(de)||Mi(de)||ur(de)||df(de)||Ke(de))){$e(zd(de,se));continue}re[se]=em(de,se,J)}}else $e(Ii(se,G))}return re}(s.encoding||{},A,S.filled,w);this.markDef=fy(S,C,w),this.size=function(L){let{encoding:G,size:H}=L;for(let J of Jr){let re=ka(J);ja(H[re])&&rs(G[J])&&(delete H[re],$e(Rh(re)))}return H}({encoding:C,size:_c(s)?{...y,...s.width?{width:s.width}:{},...s.height?{height:s.height}:{}}:y}),this.stack=vm(this.markDef,C),this.specifiedScales=this.initScales(A,C),this.specifiedAxes=this.initAxes(C),this.specifiedLegends=this.initLegends(C),this.specifiedProjection=s.projection,this.selection=(s.params??[]).filter(L=>Ec(L))}get hasProjection(){let{encoding:s}=this,d=this.mark===W0,h=s&&u0.some(y=>vt(s[y]));return d||h}scaleDomain(s){let d=this.specifiedScales[s];return d?d.domain:void 0}axis(s){return this.specifiedAxes[s]}legend(s){return this.specifiedLegends[s]}initScales(s,d){return Ul.reduce((h,y)=>{let w=mn(d[y]);return w&&(h[y]=this.initScale(w.scale??{})),h},{})}initScale(s){let{domain:d,range:h}=s,y=Jn(s);return b.isArray(d)&&(y.domain=d.map(Un)),b.isArray(h)&&(y.range=h.map(Un)),y}initAxes(s){return Jr.reduce((d,h)=>{let y=s[h];if(vt(y)||h===Jt&&vt(s.x2)||h===Pn&&vt(s.y2)){let w=vt(y)?y.axis:void 0;d[h]=w&&this.initAxis({...w})}return d},{})}initAxis(s){let d=be(s),h={};for(let y of d){let w=s[y];h[y]=iu(w)?w0(w):Un(w)}return h}initLegends(s){return b0.reduce((d,h)=>{let y=mn(s[h]);if(y&&function(w){switch(w){case Me:case _a:case Xr:case wi:case En:case _i:case lo:case Xo:return!0;case Mt:case ki:case Pa:return!1}}(h)){let w=y.legend;d[h]=w&&Jn(w)}return d},{})}parseData(){this.component.data=wp(this)}parseLayoutSize(){(function(s){let{size:d,component:h}=s;for(let y of Jr){let w=ka(y);if(d[w]){let S=d[w];h.layoutSize.set(w,ja(S)?"step":S,!0)}else{let S=Pr(s,w);h.layoutSize.set(w,S,!1)}}})(this)}parseSelections(){this.component.selection=function(s,d){let h={},y=s.config.selection;if(!d||!d.length)return h;for(let w of d){let S=Pe(w.name),A=w.select,C=b.isString(A)?A:A.type,L=b.isObject(A)?j(A):{type:C},G=y[C];for(let re in G)re!=="fields"&&re!=="encodings"&&(re==="mark"&&(L[re]={...G[re],...L[re]}),L[re]!==void 0&&L[re]!==!0||(L[re]=j(G[re]??L[re])));let H=h[S]={...L,name:S,type:C,init:w.value,bind:w.bind,events:b.isString(L.on)?b.parseSelector(L.on,"scope"):b.array(j(L.on))},J=j(w);for(let re of nl)re.defined(H)&&re.parse&&re.parse(s,H,J)}return h}(this,this.selection)}parseMarkGroup(){this.component.mark=zg(this)}parseAxesAndHeaders(){var s;this.component.axes=(s=this,Jr.reduce((d,h)=>(s.component.scales[h]&&(d[h]=[Ug(h,s)]),d),{}))}assembleSelectionTopLevelSignals(s){return function(d,h){let y=!1;for(let w of Se(d.component.selection??{})){let S=w.name,A=b.stringValue(S+ps);if(h.filter(C=>C.name===S).length===0){let C=w.resolve==="global"?"union":w.resolve,L=w.type==="point"?", true, true)":")";h.push({name:w.name,update:`${tg}(${A}, ${b.stringValue(C)}${L}`})}y=!0;for(let C of nl)C.defined(w)&&C.topLevelSignals&&(h=C.topLevelSignals(d,w,h))}return y&&h.filter(w=>w.name==="unit").length===0&&h.unshift({name:"unit",value:{},on:[{events:"pointermove",update:"isTuple(group()) ? group() : unit"}]}),Wf(h)}(this,s)}assembleSignals(){return[...vu(this),..._y(this,[])]}assembleSelectionData(s){return function(d,h){let y=[...h],w=Ha(d,{escape:!1});for(let S of Se(d.component.selection??{})){let A={name:S.name+ps};if(S.project.hasSelectionId&&(A.transform=[{type:"collect",sort:{field:dr}}]),S.init){let C=S.project.items.map(zm);A.values=S.project.hasSelectionId?S.init.map(L=>({unit:w,[dr]:ds(L,!1)[0]})):S.init.map(L=>({unit:w,fields:C,values:ds(L,!1)}))}y.filter(C=>C.name===S.name+ps).length||y.push(A)}return y}(this,s)}assembleLayout(){return null}assembleLayoutSignals(){return fr(this)}assembleMarks(){let s=this.component.mark??[];return this.parent&&vs(this.parent)||(s=ky(this,s)),s.map(this.correctDataNames)}assembleGroupStyle(){let{style:s}=this.view||{};return s!==void 0?s:this.encoding.x||this.encoding.y?"cell":"view"}getMapping(){return this.encoding}get mark(){return this.markDef.type}channelHasField(s){return Pi(this.encoding,s)}fieldDef(s){return cr(this.encoding[s])}typedFieldDef(s){let d=this.fieldDef(s);return ha(d)?d:null}}class xu extends td{constructor(s,d,h,y,w){super(s,"layer",d,h,w,s.resolve,s.view),nt(this,"children",void 0);let S={...y,...s.width?{width:s.width}:{},...s.height?{height:s.height}:{}};this.children=s.layer.map((A,C)=>{if(du(A))return new xu(A,this,this.getName(`layer_${C}`),S,w);if(Fi(A))return new Tp(A,this,this.getName(`layer_${C}`),S,w);throw new Error(xh(A))})}parseData(){this.component.data=wp(this);for(let s of this.children)s.parseData()}parseLayoutSize(){var s;pl(s=this),_s(s,"width"),_s(s,"height")}parseSelections(){this.component.selection={};for(let s of this.children){s.parseSelections();for(let d of be(s.component.selection))this.component.selection[d]=s.component.selection[d]}}parseMarkGroup(){for(let s of this.children)s.parseMarkGroup()}parseAxesAndHeaders(){(function(s){let{axes:d,resolve:h}=s.component,y={top:0,bottom:0,right:0,left:0};for(let w of s.children){w.parseAxesAndHeaders();for(let S of be(w.component.axes))h.axis[S]=rp(s.component.resolve,S),h.axis[S]==="shared"&&(d[S]=cv(d[S],w.component.axes[S]),d[S]||(h.axis[S]="independent",delete d[S]))}for(let w of Jr){for(let S of s.children)if(S.component.axes[w]){if(h.axis[w]==="independent"){d[w]=(d[w]??[]).concat(S.component.axes[w]);for(let A of S.component.axes[w]){let{value:C,explicit:L}=A.getWithExplicit("orient");if(!Ke(C)){if(y[C]>0&&!L){let G=Pt[C];y[C]>y[G]&&A.set("orient",G,!1)}y[C]++}}}delete S.component.axes[w]}if(h.axis[w]==="independent"&&d[w]&&d[w].length>1)for(let[S,A]of(d[w]||[]).entries())S>0&&A.get("grid")&&!A.explicit.grid&&(A.implicit.grid=!1)}})(this)}assembleSelectionTopLevelSignals(s){return this.children.reduce((d,h)=>h.assembleSelectionTopLevelSignals(d),s)}assembleSignals(){return this.children.reduce((s,d)=>s.concat(d.assembleSignals()),vu(this))}assembleLayoutSignals(){return this.children.reduce((s,d)=>s.concat(d.assembleLayoutSignals()),fr(this))}assembleSelectionData(s){return this.children.reduce((d,h)=>h.assembleSelectionData(d),s)}assembleGroupStyle(){let s=new Set;for(let h of this.children)for(let y of b.array(h.assembleGroupStyle()))s.add(y);let d=Array.from(s);return d.length>1?d:d.length===1?d[0]:void 0}assembleTitle(){let s=super.assembleTitle();if(s)return s;for(let d of this.children)if(s=d.assembleTitle(),s)return s}assembleLayout(){return null}assembleMarks(){return function(s,d){for(let h of s.children)ln(h)&&(d=ky(h,d));return d}(this,this.children.flatMap(s=>s.assembleMarks()))}assembleLegends(){return this.children.reduce((s,d)=>s.concat(d.assembleLegends()),lp(this))}}function Hg(l,s,d,h,y){if(dc(l))return new hl(l,s,d,y);if(du(l))return new xu(l,s,d,h,y);if(Fi(l))return new Tp(l,s,d,h,y);if(function(w){return uu(w)||Nf(w)||wc(w)}(l))return new s1(l,s,d,y);throw new Error(xh(l))}let u1=x;p.accessPathDepth=Kt,p.accessPathWithDatum=kt,p.compile=function(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};var d;s.logger&&(d=s.logger,ac=d),s.fieldTitle&&fc(s.fieldTitle);try{let h=gm(b.mergeConfig(s.config,l.config)),y=Uf(l,h),w=Hg(y,null,"",void 0,h);return w.parse(),function(A,C){mp(A.sources);let L=0,G=0;for(let H=0;H<hp&&Qy(A,C,!0);H++)L++;A.sources.map(kg);for(let H=0;H<hp&&Qy(A,C,!1);H++)G++;mp(A.sources),Math.max(L,G)===hp&&$e(`Maximum optimization runs(${hp}) reached.`)}(w.component.data,w),{spec:function(A,C){let L=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},G=arguments.length>3?arguments[3]:void 0,H=A.config?Of(A.config):void 0,J=[].concat(A.assembleSelectionData([]),function(Te,Fe){let He=[],tt=vp(He),ut=0;for(let Xe of Te.sources){Xe.hasName()||(Xe.dataName="source_"+ut++);let xt=Xe.assemble();tt(Xe,xt)}for(let Xe of He)Xe.transform.length===0&&delete Xe.transform;let Qe=0;for(let[Xe,xt]of He.entries())(xt.transform??[]).length!==0||xt.source||He.splice(Qe++,0,He.splice(Xe,1)[0]);for(let Xe of He)for(let xt of Xe.transform??[])xt.type==="lookup"&&(xt.from=Te.outputNodes[xt.from].getSource());for(let Xe of He)Xe.name in Fe&&(Xe.values=Fe[Xe.name]);return He}(A.component.data,L)),re=A.assembleProjections(),ee=A.assembleTitle(),se=A.assembleGroupStyle(),de=A.assembleGroupEncodeEntry(!0),fe=A.assembleLayoutSignals();fe=fe.filter(Te=>Te.name!=="width"&&Te.name!=="height"||Te.value===void 0||(C[Te.name]=+Te.value,!1));let{params:ge,...we}=C;return{$schema:"https://vega.github.io/schema/vega/v5.json",...A.description?{description:A.description}:{},...we,...ee?{title:ee}:{},...se?{style:se}:{},...de?{encode:{update:de}}:{},data:J,...re.length>0?{projections:re}:{},...A.assembleGroup([...fe,...A.assembleSelectionTopLevelSignals([]),...Rf(ge)]),...H?{config:H}:{},...G?{usermeta:G}:{}}}(w,function(A,C,L,G){let H=G.component.layoutSize.get("width"),J=G.component.layoutSize.get("height");if(C===void 0?(C={type:"pad"},G.hasAxisOrientSignalRef()&&(C.resize=!0)):b.isString(C)&&(C={type:C}),H&&J&&(re=C.type,re==="fit"||re==="fit-x"||re==="fit-y")){if(H==="step"&&J==="step")$e(An()),C.type="pad";else if(H==="step"||J==="step"){let ee=H==="step"?"width":"height";$e(An(Ju(ee)));let se=ee==="width"?"height":"width";C.type=function(de){return de?`fit-${Ju(de)}`:"fit"}(se)}}var re;return{...be(C).length===1&&C.type?C.type==="pad"?{}:{autosize:C.type}:{autosize:C},...zf(L,!1),...zf(A,!0)}}(l,y.autosize,h,w),l.datasets,l.usermeta),normalized:y}}finally{s.logger&&(ac=I0),s.fieldTitle&&fc(ny)}},p.contains=Z,p.deepEqual=Re,p.deleteNestedProperty=lt,p.duplicate=j,p.entries=ke,p.every=le,p.fieldIntersection=Ee,p.flatAccessWithDatum=an,p.getFirstDefined=Ve,p.hasIntersection=Le,p.hash=ae,p.internalField=yt,p.isBoolean=We,p.isEmpty=ye,p.isEqual=function(l,s){let d=be(l),h=be(s);if(d.length!==h.length)return!1;for(let y of d)if(l[y]!==s[y])return!1;return!0},p.isInternalField=Zt,p.isNullOrFalse=he,p.isNumeric=At,p.keys=be,p.logicalExpr=De,p.mergeDeep=pe,p.never=W,p.normalize=Uf,p.normalizeAngle=Dt,p.omit=Q,p.pick=V,p.prefixGenerator=ze,p.removePathFromField=St,p.replaceAll=_t,p.replacePathInField=Gt,p.resetIdCounter=function(){Ze=42},p.setEqual=Ne,p.some=te,p.stringify=Ye,p.titleCase=gt,p.unique=Ae,p.uniqueId=Xt,p.vals=Se,p.varName=Pe,p.version=u1})});var FM=YS((KG,Jw)=>{var Cz=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{},D=function(p){var b=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,x=0,T={},I={manual:p.Prism&&p.Prism.manual,disableWorkerMessageHandler:p.Prism&&p.Prism.disableWorkerMessageHandler,util:{encode:function Z(te){return te instanceof B?new B(te.type,Z(te.content),te.alias):Array.isArray(te)?te.map(Z):te.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(Z){return Object.prototype.toString.call(Z).slice(8,-1)},objId:function(Z){return Z.__id||Object.defineProperty(Z,"__id",{value:++x}),Z.__id},clone:function Z(te,le){var pe,me;switch(le=le||{},I.util.type(te)){case"Object":if(me=I.util.objId(te),le[me])return le[me];for(var Ae in pe={},le[me]=pe,te)te.hasOwnProperty(Ae)&&(pe[Ae]=Z(te[Ae],le));return pe;case"Array":return me=I.util.objId(te),le[me]?le[me]:(pe=[],le[me]=pe,te.forEach(function(Ne,Le){pe[Le]=Z(Ne,le)}),pe);default:return te}},getLanguage:function(Z){for(;Z;){var te=b.exec(Z.className);if(te)return te[1].toLowerCase();Z=Z.parentElement}return"none"},setLanguage:function(Z,te){Z.className=Z.className.replace(RegExp(b,"gi"),""),Z.classList.add("language-"+te)},currentScript:function(){if(typeof document>"u")return null;if(document.currentScript&&document.currentScript.tagName==="SCRIPT")return document.currentScript;try{throw new Error}catch(pe){var Z=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(pe.stack)||[])[1];if(Z){var te=document.getElementsByTagName("script");for(var le in te)if(te[le].src==Z)return te[le]}return null}},isActive:function(Z,te,le){for(var pe="no-"+te;Z;){var me=Z.classList;if(me.contains(te))return!0;if(me.contains(pe))return!1;Z=Z.parentElement}return!!le}},languages:{plain:T,plaintext:T,text:T,txt:T,extend:function(Z,te){var le=I.util.clone(I.languages[Z]);for(var pe in te)le[pe]=te[pe];return le},insertBefore:function(Z,te,le,pe){var me=(pe=pe||I.languages)[Z],Ae={};for(var Ne in me)if(me.hasOwnProperty(Ne)){if(Ne==te)for(var Le in le)le.hasOwnProperty(Le)&&(Ae[Le]=le[Le]);le.hasOwnProperty(Ne)||(Ae[Ne]=me[Ne])}var ze=pe[Z];return pe[Z]=Ae,I.languages.DFS(I.languages,function(Ee,ye){ye===ze&&Ee!=Z&&(this[Ee]=Ae)}),Ae},DFS:function Z(te,le,pe,me){me=me||{};var Ae=I.util.objId;for(var Ne in te)if(te.hasOwnProperty(Ne)){le.call(te,Ne,te[Ne],pe||Ne);var Le=te[Ne],ze=I.util.type(Le);ze!=="Object"||me[Ae(Le)]?ze!=="Array"||me[Ae(Le)]||(me[Ae(Le)]=!0,Z(Le,le,Ne,me)):(me[Ae(Le)]=!0,Z(Le,le,null,me))}}},plugins:{},highlightAll:function(Z,te){I.highlightAllUnder(document,Z,te)},highlightAllUnder:function(Z,te,le){var pe={callback:le,container:Z,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};I.hooks.run("before-highlightall",pe),pe.elements=Array.prototype.slice.apply(pe.container.querySelectorAll(pe.selector)),I.hooks.run("before-all-elements-highlight",pe);for(var me,Ae=0;me=pe.elements[Ae++];)I.highlightElement(me,te===!0,pe.callback)},highlightElement:function(Z,te,le){var pe=I.util.getLanguage(Z),me=I.languages[pe];I.util.setLanguage(Z,pe);var Ae=Z.parentElement;Ae&&Ae.nodeName.toLowerCase()==="pre"&&I.util.setLanguage(Ae,pe);var Ne={element:Z,language:pe,grammar:me,code:Z.textContent};function Le(Ee){Ne.highlightedCode=Ee,I.hooks.run("before-insert",Ne),Ne.element.innerHTML=Ne.highlightedCode,I.hooks.run("after-highlight",Ne),I.hooks.run("complete",Ne),le&&le.call(Ne.element)}if(I.hooks.run("before-sanity-check",Ne),(Ae=Ne.element.parentElement)&&Ae.nodeName.toLowerCase()==="pre"&&!Ae.hasAttribute("tabindex")&&Ae.setAttribute("tabindex","0"),!Ne.code)return I.hooks.run("complete",Ne),void(le&&le.call(Ne.element));if(I.hooks.run("before-highlight",Ne),Ne.grammar)if(te&&p.Worker){var ze=new Worker(I.filename);ze.onmessage=function(Ee){Le(Ee.data)},ze.postMessage(JSON.stringify({language:Ne.language,code:Ne.code,immediateClose:!0}))}else Le(I.highlight(Ne.code,Ne.grammar,Ne.language));else Le(I.util.encode(Ne.code))},highlight:function(Z,te,le){var pe={code:Z,grammar:te,language:le};if(I.hooks.run("before-tokenize",pe),!pe.grammar)throw new Error('The language "'+pe.language+'" has no grammar.');return pe.tokens=I.tokenize(pe.code,pe.grammar),I.hooks.run("after-tokenize",pe),B.stringify(I.util.encode(pe.tokens),pe.language)},tokenize:function(Z,te){var le=te.rest;if(le){for(var pe in le)te[pe]=le[pe];delete te.rest}var me=new j;return W(me,me.head,Z),F(Z,me,te,me.head,0),function(Ae){for(var Ne=[],Le=Ae.head.next;Le!==Ae.tail;)Ne.push(Le.value),Le=Le.next;return Ne}(me)},hooks:{all:{},add:function(Z,te){var le=I.hooks.all;le[Z]=le[Z]||[],le[Z].push(te)},run:function(Z,te){var le=I.hooks.all[Z];if(le&&le.length)for(var pe,me=0;pe=le[me++];)pe(te)}},Token:B};function B(Z,te,le,pe){this.type=Z,this.content=te,this.alias=le,this.length=0|(pe||"").length}function P(Z,te,le,pe){Z.lastIndex=te;var me=Z.exec(le);if(me&&pe&&me[1]){var Ae=me[1].length;me.index+=Ae,me[0]=me[0].slice(Ae)}return me}function F(Z,te,le,pe,me,Ae){for(var Ne in le)if(le.hasOwnProperty(Ne)&&le[Ne]){var Le=le[Ne];Le=Array.isArray(Le)?Le:[Le];for(var ze=0;ze<Le.length;++ze){if(Ae&&Ae.cause==Ne+","+ze)return;var Ee=Le[ze],ye=Ee.inside,be=!!Ee.lookbehind,Se=!!Ee.greedy,ke=Ee.alias;if(Se&&!Ee.pattern.global){var We=Ee.pattern.toString().match(/[imsuy]*$/)[0];Ee.pattern=RegExp(Ee.pattern.source,We+"g")}for(var Pe=Ee.pattern||Ee,De=pe.next,lt=me;De!==te.tail&&!(Ae&&lt>=Ae.reach);lt+=De.value.length,De=De.next){var gt=De.value;if(te.length>Z.length)return;if(!(gt instanceof B)){var kt,an=1;if(Se){if(!(kt=P(Pe,lt,Z,be))||kt.index>=Z.length)break;var cn=kt.index,Gt=kt.index+kt[0].length,_t=lt;for(_t+=De.value.length;cn>=_t;)_t+=(De=De.next).value.length;if(lt=_t-=De.value.length,De.value instanceof B)continue;for(var St=De;St!==te.tail&&(_t<Gt||typeof St.value=="string");St=St.next)an++,_t+=St.value.length;an--,gt=Z.slice(lt,_t),kt.index-=lt}else if(!(kt=P(Pe,0,gt,be)))continue;cn=kt.index;var Kt=kt[0],Ve=gt.slice(0,cn),Ze=gt.slice(cn+Kt.length),Xt=lt+gt.length;Ae&&Xt>Ae.reach&&(Ae.reach=Xt);var yt=De.prev;if(Ve&&(yt=W(te,yt,Ve),lt+=Ve.length),V(te,yt,an),De=W(te,yt,new B(Ne,ye?I.tokenize(Kt,ye):Kt,ke,Kt)),Ze&&W(te,De,Ze),an>1){var Zt={cause:Ne+","+ze,reach:Xt};F(Z,te,le,De.prev,lt,Zt),Ae&&Zt.reach>Ae.reach&&(Ae.reach=Zt.reach)}}}}}}function j(){var Z={value:null,prev:null,next:null},te={value:null,prev:Z,next:null};Z.next=te,this.head=Z,this.tail=te,this.length=0}function W(Z,te,le){var pe=te.next,me={value:le,prev:te,next:pe};return te.next=me,pe.prev=me,Z.length++,me}function V(Z,te,le){for(var pe=te.next,me=0;me<le&&pe!==Z.tail;me++)pe=pe.next;te.next=pe,pe.prev=te,Z.length-=me}if(p.Prism=I,B.stringify=function Z(te,le){if(typeof te=="string")return te;if(Array.isArray(te)){var pe="";return te.forEach(function(ze){pe+=Z(ze,le)}),pe}var me={type:te.type,content:Z(te.content,le),tag:"span",classes:["token",te.type],attributes:{},language:le},Ae=te.alias;Ae&&(Array.isArray(Ae)?Array.prototype.push.apply(me.classes,Ae):me.classes.push(Ae)),I.hooks.run("wrap",me);var Ne="";for(var Le in me.attributes)Ne+=" "+Le+'="'+(me.attributes[Le]||"").replace(/"/g,"&quot;")+'"';return"<"+me.tag+' class="'+me.classes.join(" ")+'"'+Ne+">"+me.content+"</"+me.tag+">"},!p.document)return p.addEventListener&&(I.disableWorkerMessageHandler||p.addEventListener("message",function(Z){var te=JSON.parse(Z.data),le=te.language,pe=te.code,me=te.immediateClose;p.postMessage(I.highlight(pe,I.languages[le],le)),me&&p.close()},!1)),I;var Q=I.util.currentScript();function ae(){I.manual||I.highlightAll()}if(Q&&(I.filename=Q.src,Q.hasAttribute("data-manual")&&(I.manual=!0)),!I.manual){var he=document.readyState;he==="loading"||he==="interactive"&&Q&&Q.defer?document.addEventListener("DOMContentLoaded",ae):window.requestAnimationFrame?window.requestAnimationFrame(ae):window.setTimeout(ae,16)}return I}(Cz);typeof Jw<"u"&&Jw.exports&&(Jw.exports=D),typeof global<"u"&&(global.Prism=D);D.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},D.languages.markup.tag.inside["attr-value"].inside.entity=D.languages.markup.entity,D.languages.markup.doctype.inside["internal-subset"].inside=D.languages.markup,D.hooks.add("wrap",function(p){p.type==="entity"&&(p.attributes.title=p.content.replace(/&amp;/,"&"))}),Object.defineProperty(D.languages.markup.tag,"addInlined",{value:function(p,b){var x={};x["language-"+b]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:D.languages[b]},x.cdata=/^<!\[CDATA\[|\]\]>$/i;var T={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:x}};T["language-"+b]={pattern:/[\s\S]+/,inside:D.languages[b]};var I={};I[p]={pattern:RegExp("(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[^])*?(?=</__>)".replace(/__/g,function(){return p}),"i"),lookbehind:!0,greedy:!0,inside:T},D.languages.insertBefore("markup","cdata",I)}}),Object.defineProperty(D.languages.markup.tag,"addAttribute",{value:function(p,b){D.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(`(^|["'\\s])(?:`+p+`)\\s*=\\s*(?:"[^"]*"|'[^']*'|[^\\s'">=]+(?=[\\s>]))`,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[b,"language-"+b],inside:D.languages[b]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),D.languages.html=D.languages.markup,D.languages.mathml=D.languages.markup,D.languages.svg=D.languages.markup,D.languages.xml=D.languages.extend("markup",{}),D.languages.ssml=D.languages.xml,D.languages.atom=D.languages.xml,D.languages.rss=D.languages.xml;(function(p){var b=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;p.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp(`@[\\w-](?:[^;{\\s"']|\\s+(?!\\s)|`+b.source+")*?(?:;|(?=\\s*\\{))"),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+b.source+`|(?:[^\\\\\r
13
+ `)):i+"";var o}(a))}function QI(e){return"["+e.map(eO).join(", ")+"]"}function eO(e){return Ee(e)?"[\u2026]":ye(e)&&!En(e)?"{\u2026}":e}function tO(e,t){let n=this;if(t=t||{},Zs.call(n),t.loader&&n.loader(t.loader),t.logger&&n.logger(t.logger),t.logLevel!=null&&n.logLevel(t.logLevel),t.locale||e.locale){let i=pt({},e.locale,t.locale);n.locale(Xh(i.number,i.time))}n._el=null,n._elBind=null,n._renderType=t.renderer||Lu.Canvas,n._scenegraph=new F1;let a=n._scenegraph.root;n._renderer=null,n._tooltip=t.tooltip||H$,n._redraw=!0,n._handler=new rb().scene(a),n._globalCursor=!1,n._preventDefault=!1,n._timers=[],n._eventListeners=[],n._resizeListeners=[],n._eventConfig=function(i){let o=pt({defaults:{}},i),u=(c,f)=>{f.forEach(m=>{Ee(c[m])&&(c[m]=rr(c[m]))})};return u(o.defaults,["prevent","allow"]),u(o,["view","window","selector"]),o}(e.eventConfig),n.globalCursor(n._eventConfig.globalCursor);let r=function(i,o,u){return LI(i,Js,jb,u).parse(o)}(n,e,t.expr);n._runtime=r,n._signals=r.signals,n._bind=(e.bindings||[]).map(i=>({state:null,param:pt({},i)})),r.root&&r.root.set(a),a.source=r.data.root.input,n.pulse(r.data.root.input,n.changeset().insert(a.items)),n._width=n.width(),n._height=n.height(),n._viewWidth=ZI(n,n._width),n._viewHeight=JI(n,n._height),n._origin=[0,0],n._resize=0,n._autosize=1,function(i){var o=i._signals,u=o[YI],c=o[KI],f=o[ES];function m(){i._autosize=i._resize=1}i._resizeWidth=i.add(null,v=>{i._width=v.size,i._viewWidth=ZI(i,v.size),m()},{size:u}),i._resizeHeight=i.add(null,v=>{i._height=v.size,i._viewHeight=JI(i,v.size),m()},{size:c});let g=i.add(null,m,{pad:f});i._resizeWidth.rank=u.rank+1,i._resizeHeight.rank=c.rank+1,g.rank=f.rank+1}(n),function(i){i.add(null,o=>(i._background=o.bg,i._resize=1,o.bg),{bg:i._signals.background})}(n),function(i){let o=i._signals.cursor||(i._signals.cursor=i.add({user:mS,item:null}));i.on(i.events("view","mousemove"),o,(u,c)=>{let f=o.value,m=f?Mt(f)?f:f.user:mS,g=c.item&&c.item.cursor||null;return f&&m===f.user&&g==f.item?f:{user:m,item:g}}),i.add(null,function(u){let c=u.cursor,f=this.value;return Mt(c)||(f=c.item,c=c.user),gS(i,c&&c!==mS?c:f||c),f},{cursor:o})}(n),n.description(e.description),t.hover&&n.hover(),t.container&&n.initialize(t.container,t.bind)}function cw(e,t){return et(e._signals,t)?e._signals[t]:F("Unrecognized signal name: "+it(t))}function nO(e,t){let n=(e._targets||[]).filter(a=>a._update&&a._update.handler===t);return n.length?n[0]:null}function aO(e,t,n,a){let r=nO(n,a);return r||(r=bS(e,()=>a(t,n.value)),r.handler=a,e.on(n,null,r)),e}function rO(e,t,n){let a=nO(t,n);return a&&t._targets.remove(a),e}Me(tO,Zs,{async evaluate(e,t,n){if(await Zs.prototype.evaluate.call(this,e,t),this._redraw||this._resize)try{this._renderer&&(this._resize&&(this._resize=0,function(a){var r=sw(a),i=BI(a),o=UI(a);a._renderer.background(a.background()),a._renderer.resize(i,o,r),a._handler.origin(r),a._resizeListeners.forEach(u=>{try{u(i,o)}catch(c){a.error(c)}})}(this)),await this._renderer.renderAsync(this._scenegraph.root)),this._redraw=!1}catch(a){this.error(a)}return n&&mn(this,n),this},dirty(e){this._redraw=!0,this._renderer&&this._renderer.dirty(e)},description(e){if(arguments.length){let t=e!=null?e+"":null;return t!==this._desc&&$I(this._el,this._desc=t),this}return this._desc},container(){return this._el},scenegraph(){return this._scenegraph},origin(){return this._origin.slice()},signal(e,t,n){let a=cw(this,e);return arguments.length===1?a.value:this.update(a,t,n)},width(e){return arguments.length?this.signal("width",e):this.signal("width")},height(e){return arguments.length?this.signal("height",e):this.signal("height")},padding(e){return arguments.length?this.signal("padding",VI(e)):VI(this.signal("padding"))},autosize(e){return arguments.length?this.signal("autosize",e):this.signal("autosize")},background(e){return arguments.length?this.signal("background",e):this.signal("background")},renderer(e){return arguments.length?(Hv(e)||F("Unrecognized renderer type: "+e),e!==this._renderType&&(this._renderType=e,this._resetRenderer()),this):this._renderType},tooltip(e){return arguments.length?(e!==this._tooltip&&(this._tooltip=e,this._resetRenderer()),this):this._tooltip},loader(e){return arguments.length?(e!==this._loader&&(Zs.prototype.loader.call(this,e),this._resetRenderer()),this):this._loader},resize(){return this._autosize=1,this.touch(cw(this,"autosize"))},_resetRenderer(){this._renderer&&(this._renderer=null,this.initialize(this._el,this._elBind))},_resizeView:function(e,t,n,a,r,i){this.runAfter(o=>{let u=0;o._autosize=0,o.width()!==n&&(u=1,o.signal(YI,n,XI),o._resizeWidth.skip(!0)),o.height()!==a&&(u=1,o.signal(KI,a,XI),o._resizeHeight.skip(!0)),o._viewWidth!==e&&(o._resize=1,o._viewWidth=e),o._viewHeight!==t&&(o._resize=1,o._viewHeight=t),o._origin[0]===r[0]&&o._origin[1]===r[1]||(o._resize=1,o._origin=r),u&&o.run("enter"),i&&o.runAfter(c=>c.resize())},!1,1)},addEventListener(e,t,n){let a=t;return n&&n.trap===!1||(a=bS(this,t),a.raw=t),this._handler.on(e,a),this},removeEventListener(e,t){for(var n,a,r=this._handler.handlers(e),i=r.length;--i>=0;)if(a=r[i].type,n=r[i].handler,e===a&&(t===n||t===n.raw)){this._handler.off(a,n);break}return this},addResizeListener(e){let t=this._resizeListeners;return t.indexOf(e)<0&&t.push(e),this},removeResizeListener(e){var t=this._resizeListeners,n=t.indexOf(e);return n>=0&&t.splice(n,1),this},addSignalListener(e,t){return aO(this,e,cw(this,e),t)},removeSignalListener(e,t){return rO(this,cw(this,e),t)},addDataListener(e,t){return aO(this,e,iw(this,e).values,t)},removeDataListener(e,t){return rO(this,iw(this,e).values,t)},globalCursor(e){if(arguments.length){if(this._globalCursor!==!!e){let t=gS(this,null);this._globalCursor=!!e,t&&gS(this,t)}return this}return this._globalCursor},preventDefault(e){return arguments.length?(this._preventDefault=e,this):this._preventDefault},timer:function(e,t){this._timers.push(function(n,a,r){var i=new PE,o=a;return a==null?(i.restart(n,a,r),i):(i._restart=i.restart,i.restart=function(u,c,f){c=+c,f=f==null?lx():+f,i._restart(function m(g){g+=o,i._restart(m,o+=c,f),u(g)},c,f)},i.restart(n,a,r),i)}(function(n){e({timestamp:Date.now(),elapsed:n})},t))},events:function(e,t,n){var a,r=this,i=new Pi(n),o=function(f,m){r.runAsync(null,()=>{e===zI&&function(g,v){var E=g._eventConfig.defaults,k=E.prevent,_=E.allow;return k!==!1&&_!==!0&&(k===!0||_===!1||(k?k[v]:_?!_[v]:g.preventDefault()))}(r,t)&&f.preventDefault(),i.receive(T$(r,f,m))})};if(e===C$)lw(r,"timer",t)&&r.timer(o,t);else if(e===zI)lw(r,"view",t)&&r.addEventListener(t,o,N$);else if(e===R$?lw(r,"window",t)&&typeof window<"u"&&(a=[window]):typeof document<"u"&&lw(r,"selector",t)&&(a=Array.from(document.querySelectorAll(e))),a){for(var u=0,c=a.length;u<c;++u)a[u].addEventListener(t,o);GI(r,a,t,o)}else r.warn("Can not resolve event source: "+e);return i},finalize:function(){var e,t,n,a=this._tooltip,r=this._timers,i=this._eventListeners;for(e=r.length;--e>=0;)r[e].stop();for(e=i.length;--e>=0;)for(t=(n=i[e]).sources.length;--t>=0;)n.sources[t].removeEventListener(n.type,n.handler);return a&&a.call(this,this._handler,null,null,null),this},hover:function(e,t){return t=[t||"update",(e=[e||"hover"])[0]],this.on(this.events("view","mouseover",jI),HI,qI(e)),this.on(this.events("view","mouseout",jI),HI,qI(t)),this},data:function(e,t){return arguments.length<2?iw(this,e).values.value:ow.call(this,e,ss().remove(Z).insert(t))},change:ow,insert:function(e,t){return ow.call(this,e,ss().insert(t))},remove:function(e,t){return ow.call(this,e,ss().remove(t))},scale:function(e){var t=this._runtime.scales;return et(t,e)||F("Unrecognized scale or projection: "+e),t[e].value},initialize:function(e,t){let n=this,a=n._renderType,r=n._eventConfig.bind,i=Hv(a);e=n._el=e?yS(n,e,!0):null,function(c){let f=c.container();f&&(f.setAttribute("role","graphics-document"),f.setAttribute("aria-roleDescription","visualization"),$I(f,c.description()))}(n),i||n.error("Unrecognized renderer type: "+a);let o=i.handler||rb,u=e?i.renderer:i.headless;return n._renderer=u?WI(n,n._renderer,e,u):null,n._handler=function(c,f,m,g){let v=new g(c.loader(),bS(c,c.tooltip())).scene(c.scenegraph().root).initialize(m,sw(c),c);return f&&f.handlers().forEach(E=>{v.on(E.type,E.handler)}),v}(n,n._handler,e,o),n._redraw=!0,e&&r!=="none"&&(t=t?n._elBind=yS(n,t,!0):e.appendChild(yi("form",{class:"vega-bindings"})),n._bind.forEach(c=>{c.param.element&&r!=="container"&&(c.element=yS(n,c.param.element,!!c.param.input))}),n._bind.forEach(c=>{(function(f,m,g){if(!m)return;let v=g.param,E=g.state;E||(E=g.state={elements:null,active:!1,set:null,update:k=>{k!=f.signal(v.signal)&&f.runAsync(null,()=>{E.source=!0,f.signal(v.signal,k)})}},v.debounce&&(E.update=Ko(v.debounce,E.update))),(v.input==null&&v.element?M$:L$)(E,m,v,f),E.active||(f.on(f._signals[v.signal],null,()=>{E.source?E.source=!1:E.set(f.signal(v.signal))}),E.active=!0)})(n,c.element||t,c)})),n},toImageURL:async function(e,t){e!==Lu.Canvas&&e!==Lu.SVG&&e!==Lu.PNG&&F("Unrecognized image type: "+e);let n=await vS(this,e,t);return e===Lu.SVG?function(a,r){let i=new Blob([a],{type:r});return window.URL.createObjectURL(i)}(n.svg(),"image/svg+xml"):n.canvas().toDataURL("image/png")},toCanvas:async function(e,t){return(await vS(this,Lu.Canvas,e,t)).canvas()},toSVG:async function(e){return(await vS(this,Lu.SVG,e)).svg()},getState:function(e){return this._runtime.getState(e||{data:G$,signals:j$,recurse:!0})},setState:function(e){return this.runAsync(null,t=>{t._trigger=!1,t._runtime.setState(e)},t=>{t._trigger=!0}),this}});let q$="view",dw="[",fw="]",iO="{",oO="}",W$=":",sO=",",V$="@",Y$=">",K$=/[[\]{}]/,X$={"*":1,arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1},lO,uO;function cO(e,t,n){return lO=t||q$,uO=n||X$,dO(e.trim()).map(wS)}function Wb(e,t,n,a,r){let i=e.length,o,u=0;for(;t<i;++t){if(o=e[t],!u&&o===n)return t;r&&r.indexOf(o)>=0?--u:a&&a.indexOf(o)>=0&&++u}return t}function dO(e){let t=[],n=e.length,a=0,r=0;for(;r<n;)r=Wb(e,r,sO,dw+iO,fw+oO),t.push(e.substring(a,r).trim()),a=++r;if(t.length===0)throw"Empty event selector: "+e;return t}function wS(e){return e[0]==="["?function(t){let n=t.length,a,r=1;if(r=Wb(t,r,fw,dw,fw),r===n)throw"Empty between selector: "+t;if(a=dO(t.substring(1,r)),a.length!==2)throw"Between selector must have two elements: "+t;if(t=t.slice(r+1).trim(),t[0]!==Y$)throw"Expected '>' after between selector: "+t;a=a.map(wS);let i=wS(t.slice(1).trim());return i.between?{between:a,stream:i}:(i.between=a,i)}(e):function(t){let n={source:lO},a=[],r,i,o=[0,0],u=0,c=0,f=t.length,m=0;if(t[f-1]===oO){if(m=t.lastIndexOf(iO),!(m>=0))throw"Unmatched right brace: "+t;try{o=function(g){let v=g.split(sO);if(!g.length||v.length>2)throw g;return v.map(E=>{let k=+E;if(k!=k)throw g;return k})}(t.substring(m+1,f-1))}catch{throw"Invalid throttle specification: "+t}f=(t=t.slice(0,m).trim()).length,m=0}if(!f)throw t;if(t[0]===V$&&(u=++m),r=Wb(t,m,W$),r<f&&(a.push(t.substring(c,r).trim()),c=m=++r),m=Wb(t,m,dw),m===f)a.push(t.substring(c,f).trim());else if(a.push(t.substring(c,m).trim()),i=[],c=++m,c===f)throw"Unmatched left bracket: "+t;for(;m<f;){if(m=Wb(t,m,fw),m===f)throw"Unmatched left bracket: "+t;if(i.push(t.substring(c,m).trim()),m<f-1&&t[++m]!==dw)throw"Expected left bracket: "+t;c=++m}if(!(f=a.length)||K$.test(a[f-1]))throw"Invalid event selector: "+t;return f>1?(n.type=a[1],u?n.markname=a[0].slice(1):function(g){return uO[g]}(a[0])?n.marktype=a[0]:n.source=a[0]):n.type=a[0],n.type.slice(-1)==="!"&&(n.consume=!0,n.type=n.type.slice(0,-1)),i!=null&&(n.filter=i),o[0]&&(n.throttle=o[0]),o[1]&&(n.debounce=o[1]),n}(e)}function Z$(e){return ye(e)?e:{type:e||"pad"}}let Vb=e=>+e||0,J$=e=>({top:e,bottom:e,left:e,right:e});function Q$(e){return ye(e)?e.signal?e:{top:Vb(e.top),bottom:Vb(e.bottom),left:Vb(e.left),right:Vb(e.right)}:J$(Vb(e))}let ba=e=>ye(e)&&!Ee(e)?pt({},e):{value:e};function fO(e,t,n,a){return n!=null?(ye(n)&&!Ee(n)||Ee(n)&&n.length&&ye(n[0])?e.update[t]=n:e[a||"enter"][t]={value:n},1):0}function Ma(e,t,n){for(let a in t)fO(e,a,t[a]);for(let a in n)fO(e,a,n[a],"update")}function Zp(e,t,n){for(let a in t)n&&et(n,a)||(e[a]=pt(e[a]||{},t[a]));return e}function Jp(e,t){return t&&(t.enter&&t.enter[e]||t.update&&t.update[e])}let _S="mark",kS="frame",xS="scope",eB="axis",tB="axis-domain",nB="axis-grid",aB="axis-label",rB="axis-tick",iB="axis-title",oB="legend",sB="legend-band",lB="legend-entry",uB="legend-gradient",pO="legend-label",cB="legend-symbol",dB="legend-title",fB="title",pB="title-text",hB="title-subtitle";function SS(e,t,n){e[t]=n&&n.signal?{signal:n.signal}:{value:n}}let hO=e=>Mt(e)?it(e):e.signal?`(${e.signal})`:mO(e);function pw(e){if(e.gradient!=null)return function(n){let a=[n.start,n.stop,n.count].map(r=>r==null?null:it(r));for(;a.length&&Pe(a)==null;)a.pop();return a.unshift(hO(n.gradient)),`gradient(${a.join(",")})`}(e);let t=e.signal?`(${e.signal})`:e.color?function(n){return n.c?hw("hcl",n.h,n.c,n.l):n.h||n.s?hw("hsl",n.h,n.s,n.l):n.l||n.a?hw("lab",n.l,n.a,n.b):n.r||n.g||n.b?hw("rgb",n.r,n.g,n.b):null}(e.color):e.field!=null?mO(e.field):e.value!==void 0?it(e.value):void 0;return e.scale!=null&&(t=function(n,a){let r=hO(n.scale);return n.range!=null?a=`lerp(_range(${r}), ${+n.range})`:(a!==void 0&&(a=`_scale(${r}, ${a})`),n.band&&(a=(a?a+"+":"")+`_bandwidth(${r})`+(+n.band==1?"":"*"+mw(n.band)),n.extra&&(a=`(datum.extra ? _scale(${r}, datum.extra.value) : ${a})`)),a==null&&(a="0")),a}(e,t)),t===void 0&&(t=null),e.exponent!=null&&(t=`pow(${t},${mw(e.exponent)})`),e.mult!=null&&(t+=`*${mw(e.mult)}`),e.offset!=null&&(t+=`+${mw(e.offset)}`),e.round&&(t=`round(${t})`),t}let hw=(e,t,n,a)=>`(${e}(${[t,n,a].map(pw).join(",")})+'')`;function mw(e){return ye(e)?"("+pw(e)+")":e}function mO(e){return gO(ye(e)?e:{datum:e})}function gO(e){let t,n,a;if(e.signal)t="datum",a=e.signal;else if(e.group||e.parent){for(n=Math.max(1,e.level||1),t="item";n-- >0;)t+=".mark.group";e.parent?(a=e.parent,t+=".datum"):a=e.group}else e.datum?(t="datum",a=e.datum):F("Invalid field reference: "+it(e));return e.signal||(a=Mt(a)?j(a).map(it).join("]["):gO(a)),t+"["+a+"]"}function bO(e,t,n,a,r,i){let o={};(i=i||{}).encoders={$encode:o},e=function(u,c,f,m,g){let v={},E={},k,_,R,O;for(_ in _="lineBreak",c!=="text"||g[_]==null||Jp(_,u)||SS(v,_,g[_]),(f=="legend"||String(f).startsWith("axis"))&&(f=null),O=f===kS?g.group:f===_S?pt({},g.mark,g[c]):null,O)R=Jp(_,u)||(_==="fill"||_==="stroke")&&(Jp("fill",u)||Jp("stroke",u)),R||SS(v,_,O[_]);for(_ in Re(m).forEach(N=>{let $=g.style&&g.style[N];for(let M in $)Jp(M,u)||SS(v,M,$[M])}),u=pt({},u),v)O=v[_],O.signal?(k=k||{})[_]=O:E[_]=O;return u.enter=pt(E,u.enter),k&&(u.update=pt(k,u.update)),u}(e,t,n,a,r.config);for(let u in e)o[u]=mB(e[u],t,i,r);return i}function mB(e,t,n,a){let r={},i={};for(let u in e)e[u]!=null&&(r[u]=gB((o=e[u],Ee(o)?function(c){let f="";return c.forEach(m=>{let g=pw(m);f+=m.test?`(${m.test})?${g}:`:g}),Pe(f)===":"&&(f+="null"),f}(o):pw(o)),a,n,i));var o;return{$expr:{marktype:t,channels:r},$fields:Object.keys(i),$output:Object.keys(e)}}function gB(e,t,n,a){let r=Os(e,t);return r.$fields.forEach(i=>a[i]=1),pt(n,r.$params),r.$expr}let bB="outer",yB=["value","update","init","react","bind"];function yO(e,t){F(e+' for "outer" push: '+it(t))}function vO(e,t){let n=e.name;if(e.push===bB)t.signals[n]||yO("No prior signal definition",n),yB.forEach(a=>{e[a]!==void 0&&yO("Invalid property ",a)});else{let a=t.addSignal(n,e.value);e.react===!1&&(a.react=!1),e.bind&&t.addBinding(n,e.bind)}}function AS(e,t,n,a){this.id=-1,this.type=e,this.value=t,this.params=n,a&&(this.parent=a)}function gw(e,t,n,a){return new AS(e,t,n,a)}function bw(e,t){return gw("operator",e,t)}function dt(e){let t={$ref:e.id};return e.id<0&&(e.refs=e.refs||[]).push(t),t}function Yb(e,t){return t?{$field:e,$name:t}:{$field:e}}let TS=Yb("key");function EO(e,t){return{$compare:e,$order:t}}let vB="descending";function yw(e,t){return(e&&e.signal?"$"+e.signal:e||"")+(e&&t?"_":"")+(t&&t.signal?"$"+t.signal:t||"")}let CS="scope",RS="view";function la(e){return e&&e.signal}function vw(e){if(la(e))return!0;if(ye(e)){for(let t in e)if(vw(e[t]))return!0}return!1}function jo(e,t){return e??t}function wd(e){return e&&e.signal||e}let wO="timer";function Kb(e,t){return(e.merge?EB:e.stream?wB:e.type?_B:F("Invalid stream specification: "+it(e)))(e,t)}function EB(e,t){let n=NS({merge:e.merge.map(a=>Kb(a,t))},e,t);return t.addStream(n).id}function wB(e,t){let n=NS({stream:Kb(e.stream,t)},e,t);return t.addStream(n).id}function _B(e,t){let n;e.type===wO?(n=t.event(wO,e.throttle),e={between:e.between,filter:e.filter}):n=t.event(function(r){return r===CS?RS:r||RS}(e.source),e.type);let a=NS({stream:n},e,t);return Object.keys(a).length===1?n:t.addStream(a).id}function NS(e,t,n){let a=t.between;return a&&(a.length!==2&&F('Stream "between" parameter must have 2 entries: '+it(t)),e.between=[Kb(a[0],n),Kb(a[1],n)]),a=t.filter?[].concat(t.filter):[],(t.marktype||t.markname||t.markrole)&&a.push(function(r,i,o){let u="event.item";return u+(r&&r!=="*"?"&&"+u+".mark.marktype==='"+r+"'":"")+(o?"&&"+u+".mark.role==='"+o+"'":"")+(i?"&&"+u+".mark.name==='"+i+"'":"")}(t.marktype,t.markname,t.markrole)),t.source===CS&&a.push("inScope(event.item)"),a.length&&(e.filter=Os("("+a.join(")&&(")+")",n).$expr),(a=t.throttle)!=null&&(e.throttle=+a),(a=t.debounce)!=null&&(e.debounce=+a),t.consume&&(e.consume=!0),e}let kB={code:"_.$value",ast:{type:"Identifier",value:"value"}};function xB(e,t,n){let a=e.encode,r={target:n},i=e.events,o=e.update,u=[];i||F("Signal update missing events specification."),Mt(i)&&(i=cO(i,t.isSubscope()?CS:RS)),i=Re(i).filter(c=>c.signal||c.scale?(u.push(c),0):1),u.length>1&&(u=[SB(u)]),i.length&&u.push(i.length>1?{merge:i}:i[0]),a!=null&&(o&&F("Signal encode and update are mutually exclusive."),o="encode(item(),"+it(a)+")"),r.update=Mt(o)?Os(o,t):o.expr!=null?Os(o.expr,t):o.value!=null?o.value:o.signal!=null?{$expr:kB,$params:{$value:t.signalRef(o.signal)}}:F("Invalid signal update specification."),e.force&&(r.options={force:!0}),u.forEach(c=>t.addUpdate(pt(function(f,m){return{source:f.signal?m.signalRef(f.signal):f.scale?m.scaleRef(f.scale):Kb(f,m)}}(c,t),r)))}function SB(e){return{signal:"["+e.map(t=>t.scale?'scale("'+t.scale+'")':t.signal)+"]"}}let nn=e=>(t,n,a)=>gw(e,n,t||void 0,a),_O=nn("aggregate"),AB=nn("axisticks"),kO=nn("bound"),Ho=nn("collect"),xO=nn("compare"),TB=nn("datajoin"),SO=nn("encode"),CB=nn("expression"),RB=nn("facet"),NB=nn("field"),IB=nn("key"),OB=nn("legendentries"),DB=nn("load"),MB=nn("mark"),LB=nn("multiextent"),FB=nn("multivalues"),PB=nn("overlap"),$B=nn("params"),AO=nn("prefacet"),BB=nn("projection"),UB=nn("proxy"),zB=nn("relay"),TO=nn("render"),GB=nn("scale"),_d=nn("sieve"),jB=nn("sortitems"),CO=nn("viewlayout"),HB=nn("values"),qB=0,RO={min:"min",max:"max",count:"sum"};function WB(e,t){let n=t.getScale(e.name).params,a;for(a in n.domain=NO(e.domain,e,t),e.range!=null&&(n.range=OO(e,t,n)),e.interpolate!=null&&function(r,i){i.interpolate=ao(r.type||r),r.gamma!=null&&(i.interpolateGamma=ao(r.gamma))}(e.interpolate,n),e.nice!=null&&(n.nice=function(r){return ye(r)?{interval:ao(r.interval),step:ao(r.step)}:ao(r)}(e.nice)),e.bins!=null&&(n.bins=function(r,i){return r.signal||Ee(r)?Ew(r,i):i.objectProperty(r)}(e.bins,t)),e)et(n,a)||a==="name"||(n[a]=ao(e[a],t))}function ao(e,t){return ye(e)?e.signal?t.signalRef(e.signal):F("Unsupported object: "+it(e)):e}function Ew(e,t){return e.signal?t.signalRef(e.signal):e.map(n=>ao(n,t))}function ww(e){F("Can not find data set: "+it(e))}function NO(e,t,n){if(e)return e.signal?n.signalRef(e.signal):(Ee(e)?VB:e.fields?KB:YB)(e,t,n);t.domainMin==null&&t.domainMax==null||F("No scale domain defined for domainMin/domainMax to override.")}function VB(e,t,n){return e.map(a=>ao(a,n))}function YB(e,t,n){let a=n.getData(e.data);return a||ww(e.data),ku(t.type)?a.valuesRef(n,e.field,IO(e.sort,!1)):fv(t.type)?a.domainRef(n,e.field):a.extentRef(n,e.field)}function KB(e,t,n){let a=e.data,r=e.fields.reduce((i,o)=>(o=Mt(o)?{data:a,field:o}:Ee(o)||o.signal?function(u,c){let f="_:vega:_"+qB++,m=Ho({});if(Ee(u))m.value={$ingest:u};else if(u.signal){let g="setdata("+it(f)+","+u.signal+")";m.params.input=c.signalRef(g)}return c.addDataPipeline(f,[m,_d({})]),{data:f,field:"data"}}(o,n):o,i.push(o),i),[]);return(ku(t.type)?XB:fv(t.type)?ZB:JB)(e,n,r)}function XB(e,t,n){let a=IO(e.sort,!0),r,i,o=n.map(f=>{let m=t.getData(f.data);return m||ww(f.data),m.countsRef(t,f.field,a)}),u={groupby:TS,pulse:o};a&&(r=a.op||"count",i=a.field?yw(r,a.field):"count",u.ops=[RO[r]],u.fields=[t.fieldRef(i)],u.as=[i]),r=t.add(_O(u));let c=t.add(Ho({pulse:dt(r)}));return i=t.add(HB({field:TS,sort:t.sortRef(a),pulse:dt(c)})),dt(i)}function IO(e,t){return e&&(e.field||e.op?e.field||e.op==="count"?t&&e.field&&e.op&&!RO[e.op]&&F("Multiple domain scales can not be sorted using "+e.op):F("No field provided for sort aggregate op: "+e.op):ye(e)?e.field="key":e={field:"key"}),e}function ZB(e,t,n){let a=n.map(r=>{let i=t.getData(r.data);return i||ww(r.data),i.domainRef(t,r.field)});return dt(t.add(FB({values:a})))}function JB(e,t,n){let a=n.map(r=>{let i=t.getData(r.data);return i||ww(r.data),i.extentRef(t,r.field)});return dt(t.add(LB({extents:a})))}function OO(e,t,n){let a=t.config.range,r=e.range;if(r.signal)return t.signalRef(r.signal);if(Mt(r)){if(a&&et(a,r))return OO(e=pt({},e,{range:a[r]}),t,n);r==="width"?r=[0,{signal:"width"}]:r==="height"?r=ku(e.type)?[0,{signal:"height"}]:[{signal:"height"},0]:F("Unrecognized scale range value: "+it(r))}else{if(r.scheme)return n.scheme=Ee(r.scheme)?Ew(r.scheme,t):ao(r.scheme,t),r.extent&&(n.schemeExtent=Ew(r.extent,t)),void(r.count&&(n.schemeCount=ao(r.count,t)));if(r.step)return void(n.rangeStep=ao(r.step,t));if(ku(e.type)&&!Ee(r))return NO(r,e,t);Ee(r)||F("Unsupported range type: "+it(r))}return r.map(i=>(Ee(i)?Ew:ao)(i,t))}function IS(e,t,n){return Ee(e)?e.map(a=>IS(a,t,n)):ye(e)?e.signal?n.signalRef(e.signal):t==="fit"?e:F("Unsupported parameter object: "+it(e)):e}let qo="top",Qp="left",eh="right",qu="bottom",DO="center",QB="vertical",eU="start",tU="end",OS="index",DS="label",nU="offset",th="perc",aU="perc2",ro="value",Xb="guide-label",MS="guide-title",rU="group-title",iU="group-subtitle",MO="symbol",_w="gradient",LS="discrete",FS="size",PS=[FS,"shape","fill","stroke","strokeWidth","strokeDash","opacity"],Zb={name:1,style:1,interactive:1},Ut={value:0},io={value:1},kw="group",LO="rect",$S="rule",oU="symbol",kd="text";function Jb(e){return e.type=kw,e.interactive=e.interactive||!1,e}function qr(e,t){let n=(a,r)=>jo(e[a],jo(t[a],r));return n.isVertical=a=>QB===jo(e.direction,t.direction||(a?t.symbolDirection:t.gradientDirection)),n.gradientLength=()=>jo(e.gradientLength,t.gradientLength||t.gradientWidth),n.gradientThickness=()=>jo(e.gradientThickness,t.gradientThickness||t.gradientHeight),n.entryColumns=()=>jo(e.columns,jo(t.columns,+n.isVertical(!0))),n}function FO(e,t){let n=t&&(t.update&&t.update[e]||t.enter&&t.enter[e]);return n&&n.signal?n:n?n.value:null}function xw(e,t,n){return`item.anchor === '${eU}' ? ${e} : item.anchor === '${tU}' ? ${t} : ${n}`}let BS=xw(it(Qp),it(eh),it(DO));function PO(e,t){return t?e?ye(e)?Object.assign({},e,{offset:PO(e.offset,t)}):{value:e,offset:t}:t:e}function vi(e,t){return t?(e.name=t.name,e.style=t.style||e.style,e.interactive=!!t.interactive,e.encode=Zp(e.encode,t,Zb)):e.interactive=!1,e}function sU(e,t,n,a){let r=qr(e,n),i=r.isVertical(),o=r.gradientThickness(),u=r.gradientLength(),c,f,m,g,v;i?(f=[0,1],m=[0,0],g=o,v=u):(f=[0,0],m=[1,0],g=u,v=o);let E={enter:c={opacity:Ut,x:Ut,y:Ut,width:ba(g),height:ba(v)},update:pt({},c,{opacity:io,fill:{gradient:t,start:f,stop:m}}),exit:{opacity:Ut}};return Ma(E,{stroke:r("gradientStrokeColor"),strokeWidth:r("gradientStrokeWidth")},{opacity:r("gradientOpacity")}),vi({type:LO,role:uB,encode:E},a)}function lU(e,t,n,a,r){let i=qr(e,n),o=i.isVertical(),u=i.gradientThickness(),c=i.gradientLength(),f,m,g,v,E="";o?(f="y",g="y2",m="x",v="width",E="1-"):(f="x",g="x2",m="y",v="height");let k={opacity:Ut,fill:{scale:t,field:ro}};k[f]={signal:E+"datum."+th,mult:c},k[m]=Ut,k[g]={signal:E+"datum."+aU,mult:c},k[v]=ba(u);let _={enter:k,update:pt({},k,{opacity:io}),exit:{opacity:Ut}};return Ma(_,{stroke:i("gradientStrokeColor"),strokeWidth:i("gradientStrokeWidth")},{opacity:i("gradientOpacity")}),vi({type:LO,role:sB,key:ro,from:r,encode:_},a)}let uU=`datum.${th}<=0?"${Qp}":datum.${th}>=1?"${eh}":"${DO}"`,cU=`datum.${th}<=0?"${qu}":datum.${th}>=1?"${qo}":"middle"`;function $O(e,t,n,a){let r=qr(e,t),i=r.isVertical(),o=ba(r.gradientThickness()),u=r.gradientLength(),c,f,m,g,v=r("labelOverlap"),E="",k={enter:c={opacity:Ut},update:f={opacity:io,text:{field:DS}},exit:{opacity:Ut}};return Ma(k,{fill:r("labelColor"),fillOpacity:r("labelOpacity"),font:r("labelFont"),fontSize:r("labelFontSize"),fontStyle:r("labelFontStyle"),fontWeight:r("labelFontWeight"),limit:jo(e.labelLimit,t.gradientLabelLimit)}),i?(c.align={value:"left"},c.baseline=f.baseline={signal:cU},m="y",g="x",E="1-"):(c.align=f.align={signal:uU},c.baseline={value:"top"},m="x",g="y"),c[m]=f[m]={signal:E+"datum."+th,mult:u},c[g]=f[g]=o,o.offset=jo(e.labelOffset,t.gradientLabelOffset)||0,v=v?{separation:r("labelSeparation"),method:v,order:"datum."+OS}:void 0,vi({type:kd,role:pO,style:Xb,key:ro,from:a,encode:k,overlap:v},n)}function dU(e,t,n,a,r){let i=qr(e,t),o=n.entries,u=!(!o||!o.interactive),c=o?o.name:void 0,f=i("clipHeight"),m=i("symbolOffset"),g={data:"value"},v=`(${r}) ? datum.${nU} : datum.${FS}`,E=f?ba(f):{field:FS},k=`datum.${OS}`,_=`max(1, ${r})`,R,O,N,$,M;E.mult=.5,R={enter:O={opacity:Ut,x:{signal:v,mult:.5,offset:m},y:E},update:N={opacity:io,x:O.x,y:O.y},exit:{opacity:Ut}};let U=null,z=null;e.fill||(U=t.symbolBaseFillColor,z=t.symbolBaseStrokeColor),Ma(R,{fill:i("symbolFillColor",U),shape:i("symbolType"),size:i("symbolSize"),stroke:i("symbolStrokeColor",z),strokeDash:i("symbolDash"),strokeDashOffset:i("symbolDashOffset"),strokeWidth:i("symbolStrokeWidth")},{opacity:i("symbolOpacity")}),PS.forEach(ne=>{e[ne]&&(N[ne]=O[ne]={scale:e[ne],field:ro})});let q=vi({type:oU,role:cB,key:ro,from:g,clip:!!f||void 0,encode:R},n.symbols),Y=ba(m);Y.offset=i("labelOffset"),R={enter:O={opacity:Ut,x:{signal:v,offset:Y},y:E},update:N={opacity:io,text:{field:DS},x:O.x,y:O.y},exit:{opacity:Ut}},Ma(R,{align:i("labelAlign"),baseline:i("labelBaseline"),fill:i("labelColor"),fillOpacity:i("labelOpacity"),font:i("labelFont"),fontSize:i("labelFontSize"),fontStyle:i("labelFontStyle"),fontWeight:i("labelFontWeight"),limit:i("labelLimit")});let K=vi({type:kd,role:pO,style:Xb,key:ro,from:g,encode:R},n.labels);return R={enter:{noBound:{value:!f},width:Ut,height:f?ba(f):Ut,opacity:Ut},exit:{opacity:Ut},update:N={opacity:io,row:{signal:null},column:{signal:null}}},i.isVertical(!0)?($=`ceil(item.mark.items.length / ${_})`,N.row.signal=`${k}%${$}`,N.column.signal=`floor(${k} / ${$})`,M={field:["row",k]}):(N.row.signal=`floor(${k} / ${_})`,N.column.signal=`${k} % ${_}`,M={field:k}),N.column.signal=`(${r})?${N.column.signal}:${k}`,Jb({role:xS,from:a={facet:{data:a,name:"value",groupby:OS}},encode:Zp(R,o,Zb),marks:[q,K],name:c,interactive:u,sort:M})}let US='item.orient === "left"',zS='item.orient === "right"',Sw=`(${US} || ${zS})`,fU=`datum.vgrad && ${Sw}`,pU=xw('"top"','"bottom"','"middle"'),hU=`datum.vgrad && ${zS} ? (${xw('"right"','"left"','"center"')}) : (${Sw} && !(datum.vgrad && ${US})) ? "left" : ${BS}`,mU=`item._anchor || (${Sw} ? "middle" : "start")`,gU=`${fU} ? (${US} ? -90 : 90) : 0`,bU=`${Sw} ? (datum.vgrad ? (${zS} ? "bottom" : "top") : ${pU}) : "top"`;function yU(e,t){let n;return ye(e)&&(e.signal?n=e.signal:e.path?n="pathShape("+BO(e.path)+")":e.sphere&&(n="geoShape("+BO(e.sphere)+', {type: "Sphere"})')),n?t.signalRef(n):!!e}function BO(e){return ye(e)&&e.signal?e.signal:it(e)}function UO(e){let t=e.role||"";return t.indexOf("axis")&&t.indexOf("legend")&&t.indexOf("title")?e.type===kw?xS:t||_S:t}function vU(e){return{marktype:e.type,name:e.name||void 0,role:e.role||UO(e),zindex:+e.zindex||void 0,aria:e.aria,description:e.description}}function EU(e,t){return e&&e.signal?t.signalRef(e.signal):e!==!1}function GS(e,t){let n=am(e.type);n||F("Unrecognized transform type: "+it(e.type));let a=gw(n.type.toLowerCase(),null,zO(n,e,t));return e.signal&&t.addSignal(e.signal,t.proxy(a)),a.metadata=n.metadata||{},a}function zO(e,t,n){let a={},r=e.params.length;for(let i=0;i<r;++i){let o=e.params[i];a[o.name]=wU(o,t,n)}return a}function wU(e,t,n){let a=e.type,r=t[e.name];return a==="index"?function(i,o,u){return Mt(o.from)||F('Lookup "from" parameter must be a string literal.'),u.getData(o.from).lookupRef(u,o.key)}(0,t,n):r!==void 0?a==="param"?function(i,o,u){let c=o[i.name];return i.array?(Ee(c)||F("Expected an array of sub-parameters. Instead: "+it(c)),c.map(f=>jO(i,f,u))):jO(i,c,u)}(e,t,n):a==="projection"?n.projectionRef(t[e.name]):e.array&&!la(r)?r.map(i=>GO(e,i,n)):GO(e,r,n):void(e.required&&F("Missing required "+it(t.type)+" parameter: "+it(e.name)))}function GO(e,t,n){let a=e.type;if(la(t))return HO(a)?F("Expression references can not be signals."):jS(a)?n.fieldRef(t):qO(a)?n.compareRef(t):n.signalRef(t.signal);{let r=e.expr||jS(a);return r&&_U(t)?n.exprRef(t.expr,t.as):r&&kU(t)?Yb(t.field,t.as):HO(a)?Os(t,n):xU(a)?dt(n.getData(t).values):jS(a)?Yb(t):qO(a)?n.compareRef(t):t}}function jO(e,t,n){let a=e.params.length,r;for(let o=0;o<a;++o){r=e.params[o];for(let u in r.key)if(r.key[u]!==t[u]){r=null;break}if(r)break}r||F("Unsupported parameter: "+it(t));let i=pt(zO(r,t,n),r.key);return dt(n.add($B(i)))}let _U=e=>e&&e.expr,kU=e=>e&&e.field,xU=e=>e==="data",HO=e=>e==="expr",jS=e=>e==="field",qO=e=>e==="compare";function Aw(e,t){return e.$ref?e:e.data&&e.data.$ref?e.data:dt(t.getData(e.data).output)}function xd(e,t,n,a,r){this.scope=e,this.input=t,this.output=n,this.values=a,this.aggregate=r,this.index={}}function WO(e){return Mt(e)?e:null}function VO(e,t,n){let a=yw(n.op,n.field),r;if(t.ops){for(let i=0,o=t.as.length;i<o;++i)if(t.as[i]===a)return}else t.ops=["count"],t.fields=[null],t.as=["count"];n.op&&(t.ops.push((r=n.op.signal)?e.signalRef(r):n.op),t.fields.push(e.fieldRef(n.field)),t.as.push(a))}function Qb(e,t,n,a,r,i,o){let u=t[n]||(t[n]={}),c=function(v){return ye(v)?(v.order===vB?"-":"+")+yw(v.op,v.field):""}(i),f,m,g=WO(r);if(g!=null&&(e=t.scope,g+=c?"|"+c:"",f=u[g]),!f){let v=i?{field:TS,pulse:t.countsRef(e,r,i)}:{field:e.fieldRef(r),pulse:dt(t.output)};c&&(v.sort=e.sortRef(i)),m=e.add(gw(a,void 0,v)),o&&(t.index[r]=m),f=dt(m),g!=null&&(u[g]=f)}return f}function YO(e,t,n){let a=e.remove,r=e.insert,i=e.toggle,o=e.modify,u=e.values,c=t.add(bw()),f=Os("if("+e.trigger+',modify("'+n+'",'+[r,a,i,o,u].map(m=>m??"null").join(",")+"),0)",t);c.update=f.$expr,c.params=f.$params}function Tw(e,t){let n=UO(e),a=e.type===kw,r=e.from&&e.from.facet,i=e.overlap,o,u,c,f,m,g,v,E=e.layout||n===xS||n===kS,k=n===_S||E||r,_=function(z,q,Y){let K,ne,X,ie,oe;return z?(K=z.facet)&&(q||F("Only group marks can be faceted."),K.field!=null?ie=oe=Aw(K,Y):(z.data?oe=dt(Y.getData(z.data).aggregate):(X=GS(pt({type:"aggregate",groupby:Re(K.groupby)},K.aggregate),Y),X.params.key=Y.keyRef(K.groupby),X.params.pulse=Aw(K,Y),ie=oe=dt(Y.add(X))),ne=Y.keyRef(K.groupby,!0))):ie=dt(Y.add(Ho(null,[{}]))),ie||(ie=Aw(z,Y)),{key:ne,pulse:ie,parent:oe}}(e.from,a,t);u=t.add(TB({key:_.key||(e.key?Yb(e.key):void 0),pulse:_.pulse,clean:!a}));let R=dt(u);u=c=t.add(Ho({pulse:R})),u=t.add(MB({markdef:vU(e),interactive:EU(e.interactive,t),clip:yU(e.clip,t),context:{$context:!0},groups:t.lookup(),parent:t.signals.parent?t.signalRef("parent"):null,index:t.markpath(),pulse:dt(u)}));let O=dt(u);u=f=t.add(SO(bO(e.encode,e.type,n,e.style,t,{mod:!1,pulse:O}))),u.params.parent=t.encode(),e.transform&&e.transform.forEach(z=>{let q=GS(z,t),Y=q.metadata;(Y.generates||Y.changes)&&F("Mark transforms should not generate new data."),Y.nomod||(f.params.mod=!0),q.params.pulse=dt(u),t.add(u=q)}),e.sort&&(u=t.add(jB({sort:t.compareRef(e.sort),pulse:dt(u)})));let N=dt(u);(r||E)&&(E=t.add(CO({layout:t.objectProperty(e.layout),legends:t.legends,mark:O,pulse:N})),g=dt(E));let $=t.add(kO({mark:O,pulse:g||N}));v=dt($),a&&(k&&(o=t.operators,o.pop(),E&&o.pop()),t.pushState(N,g||v,R),r?function(z,q,Y){let K=z.from.facet,ne=K.name,X=Aw(K,q),ie;K.name||F("Facet must have a name: "+it(K)),K.data||F("Facet must reference a data set: "+it(K)),K.field?ie=q.add(AO({field:q.fieldRef(K.field),pulse:X})):K.groupby?ie=q.add(RB({key:q.keyRef(K.groupby),group:dt(q.proxy(Y.parent)),pulse:X})):F("Facet must specify groupby or field: "+it(K));let oe=q.fork(),ue=oe.add(Ho()),ce=oe.add(_d({pulse:dt(ue)}));oe.addData(ne,new xd(oe,ue,ue,ce)),oe.addSignal("parent",null),ie.params.subflow={$subflow:oe.parse(z).toRuntime()}}(e,t,_):k?function(z,q,Y){let K=q.add(AO({pulse:Y.pulse})),ne=q.fork();ne.add(_d()),ne.addSignal("parent",null),K.params.subflow={$subflow:ne.parse(z).toRuntime()}}(e,t,_):t.parse(e),t.popState(),k&&(E&&o.push(E),o.push($))),i&&(v=function(z,q,Y){let K=z.method,ne=z.bound,X=z.separation,ie={separation:la(X)?Y.signalRef(X.signal):X,method:la(K)?Y.signalRef(K.signal):K,pulse:q};if(z.order&&(ie.sort=Y.compareRef({field:z.order})),ne){let oe=ne.tolerance;ie.boundTolerance=la(oe)?Y.signalRef(oe.signal):+oe,ie.boundScale=Y.scaleRef(ne.scale),ie.boundOrient=ne.orient}return dt(Y.add(PB(ie)))}(i,v,t));let M=t.add(TO({pulse:v})),U=t.add(_d({pulse:dt(M)},void 0,t.parent()));e.name!=null&&(m=e.name,t.addData(m,new xd(t,c,M,U)),e.on&&e.on.forEach(z=>{(z.insert||z.remove||z.toggle)&&F("Marks only support modify triggers."),YO(z,t,m)}))}function SU(e,t){let n=t.config.legend,a=e.encode||{},r=qr(e,n),i=a.legend||{},o=i.name||void 0,u=i.interactive,c=i.style,f={},m,g,v,E=0;PS.forEach(N=>e[N]?(f[N]=e[N],E=E||e[N]):0),E||F("Missing valid scale for legend.");let k=function(N,$){let M=N.type||MO;return N.type||function(U){return PS.reduce((z,q)=>z+(U[q]?1:0),0)}(N)!==1||!N.fill&&!N.stroke||(M=Bg($)?_w:Ug($)?LS:MO),M!==_w?M:Ug($)?LS:_w}(e,t.scaleType(E)),_={title:e.title!=null,scales:f,type:k,vgrad:k!=="symbol"&&r.isVertical()},R=dt(t.add(Ho(null,[_]))),O=dt(t.add(OB(g={type:k,scale:t.scaleRef(E),count:t.objectProperty(r("tickCount")),limit:t.property(r("symbolLimit")),values:t.objectProperty(e.values),minstep:t.property(e.tickMinStep),formatType:t.property(e.formatType),formatSpecifier:t.property(e.format)})));return k===_w?(v=[sU(e,E,n,a.gradient),$O(e,n,a.labels,O)],g.count=g.count||t.signalRef(`max(2,2*floor((${wd(r.gradientLength())})/100))`)):k===LS?v=[lU(e,E,n,a.gradient,O),$O(e,n,a.labels,O)]:(m=function(N,$){let M=qr(N,$);return{align:M("gridAlign"),columns:M.entryColumns(),center:{row:!0,column:!1},padding:{row:M("rowPadding"),column:M("columnPadding")}}}(e,n),v=[dU(e,n,a,O,wd(m.columns))],g.size=function(N,$,M){let U=wd(KO("size",N,M)),z=wd(KO("strokeWidth",N,M)),q=wd(function(Y,K,ne){return FO("fontSize",Y)||function(X,ie,oe){let ue=ie.config.style[oe];return ue&&ue[X]}("fontSize",K,ne)}(M[1].encode,$,Xb));return Os(`max(ceil(sqrt(${U})+${z}),${q})`,$)}(e,t,v[0].marks)),v=[Jb({role:lB,from:R,encode:{enter:{x:{value:0},y:{value:0}}},marks:v,layout:m,interactive:u})],_.title&&v.push(function(N,$,M,U){let z=qr(N,$),q={enter:{opacity:Ut},update:{opacity:io,x:{field:{group:"padding"}},y:{field:{group:"padding"}}},exit:{opacity:Ut}};return Ma(q,{orient:z("titleOrient"),_anchor:z("titleAnchor"),anchor:{signal:mU},angle:{signal:gU},align:{signal:hU},baseline:{signal:bU},text:N.title,fill:z("titleColor"),fillOpacity:z("titleOpacity"),font:z("titleFont"),fontSize:z("titleFontSize"),fontStyle:z("titleFontStyle"),fontWeight:z("titleFontWeight"),limit:z("titleLimit"),lineHeight:z("titleLineHeight")},{align:z("titleAlign"),baseline:z("titleBaseline")}),vi({type:kd,role:dB,style:MS,from:U,encode:q},M)}(e,n,a.title,R)),Tw(Jb({role:oB,from:R,encode:Zp(AU(r,e,n),i,Zb),marks:v,aria:r("aria"),description:r("description"),zindex:r("zindex"),name:o,interactive:u,style:c}),t)}function AU(e,t,n){let a={enter:{},update:{}};return Ma(a,{orient:e("orient"),offset:e("offset"),padding:e("padding"),titlePadding:e("titlePadding"),cornerRadius:e("cornerRadius"),fill:e("fillColor"),stroke:e("strokeColor"),strokeWidth:n.strokeWidth,strokeDash:n.strokeDash,x:e("legendX"),y:e("legendY"),format:t.format,formatType:t.formatType}),a}function KO(e,t,n){return t[e]?`scale("${t[e]}",datum)`:FO(e,n[0].encode)}xd.fromEntries=function(e,t){let n=t.length,a=t[n-1],r=t[n-2],i=t[0],o=null,u=1;for(i&&i.type==="load"&&(i=t[1]),e.add(t[0]);u<n;++u)t[u].params.pulse=dt(t[u-1]),e.add(t[u]),t[u].type==="aggregate"&&(o=t[u]);return new xd(e,i,r,a,o)},xd.prototype={countsRef(e,t,n){let a=this,r=a.counts||(a.counts={}),i=WO(t),o,u,c;return i!=null&&(e=a.scope,o=r[i]),o?n&&n.field&&VO(e,o.agg.params,n):(c={groupby:e.fieldRef(t,"key"),pulse:dt(a.output)},n&&n.field&&VO(e,c,n),u=e.add(_O(c)),o=e.add(Ho({pulse:dt(u)})),o={agg:u,ref:dt(o)},i!=null&&(r[i]=o)),o.ref},tuplesRef(){return dt(this.values)},extentRef(e,t){return Qb(e,this,"extent","extent",t,!1)},domainRef(e,t){return Qb(e,this,"domain","values",t,!1)},valuesRef(e,t,n){return Qb(e,this,"vals","values",t,n||!0)},lookupRef(e,t){return Qb(e,this,"lookup","tupleindex",t,!1)},indataRef(e,t){return Qb(e,this,"indata","tupleindex",t,!0,!0)}};let TU=`item.orient==="${Qp}"?-90:item.orient==="${eh}"?90:0`;function CU(e,t){let n=qr(e=Mt(e)?{text:e}:e,t.config.title),a=e.encode||{},r=a.group||{},i=r.name||void 0,o=r.interactive,u=r.style,c=[],f=dt(t.add(Ho(null,[{}])));return c.push(function(m,g,v,E){let k={value:0},_=m.text,R={enter:{opacity:k},update:{opacity:{value:1}},exit:{opacity:k}};return Ma(R,{text:_,align:{signal:"item.mark.group.align"},angle:{signal:"item.mark.group.angle"},limit:{signal:"item.mark.group.limit"},baseline:"top",dx:g("dx"),dy:g("dy"),fill:g("color"),font:g("font"),fontSize:g("fontSize"),fontStyle:g("fontStyle"),fontWeight:g("fontWeight"),lineHeight:g("lineHeight")},{align:g("align"),angle:g("angle"),baseline:g("baseline")}),vi({type:kd,role:pB,style:rU,from:E,encode:R},v)}(e,n,function(m){let g=m.encode;return g&&g.title||pt({name:m.name,interactive:m.interactive,style:m.style},g)}(e),f)),e.subtitle&&c.push(function(m,g,v,E){let k={value:0},_=m.subtitle,R={enter:{opacity:k},update:{opacity:{value:1}},exit:{opacity:k}};return Ma(R,{text:_,align:{signal:"item.mark.group.align"},angle:{signal:"item.mark.group.angle"},limit:{signal:"item.mark.group.limit"},baseline:"top",dx:g("dx"),dy:g("dy"),fill:g("subtitleColor"),font:g("subtitleFont"),fontSize:g("subtitleFontSize"),fontStyle:g("subtitleFontStyle"),fontWeight:g("subtitleFontWeight"),lineHeight:g("subtitleLineHeight")},{align:g("align"),angle:g("angle"),baseline:g("baseline")}),vi({type:kd,role:hB,style:iU,from:E,encode:R},v)}(e,n,a.subtitle,f)),Tw(Jb({role:fB,from:f,encode:RU(n,r),marks:c,aria:n("aria"),description:n("description"),zindex:n("zindex"),name:i,interactive:o,style:u}),t)}function RU(e,t){let n={enter:{},update:{}};return Ma(n,{orient:e("orient"),anchor:e("anchor"),align:{signal:BS},angle:{signal:TU},limit:e("limit"),frame:e("frame"),offset:e("offset")||0,padding:e("subtitlePadding")}),Zp(n,t,Zb)}function NU(e,t){let n=[];e.transform&&e.transform.forEach(a=>{n.push(GS(a,t))}),e.on&&e.on.forEach(a=>{YO(a,t,e.name)}),t.addDataPipeline(e.name,function(a,r,i){let o=[],u,c,f,m,g,v=null,E=!1,k=!1;for(a.values?la(a.values)||vw(a.format)?(o.push(XO(r,a)),o.push(v=Sd())):o.push(v=Sd({$ingest:a.values,$format:a.format})):a.url?vw(a.url)||vw(a.format)?(o.push(XO(r,a)),o.push(v=Sd())):o.push(v=Sd({$request:a.url,$format:a.format})):a.source&&(v=u=Re(a.source).map(_=>dt(r.getData(_).output)),o.push(null)),c=0,f=i.length;c<f;++c)m=i[c],g=m.metadata,v||g.source||o.push(v=Sd()),o.push(m),g.generates&&(k=!0),g.modifies&&!k&&(E=!0),g.source?v=m:g.changes&&(v=null);return u&&(f=u.length-1,o[0]=zB({derive:E,pulse:f?u:u[0]}),(E||f)&&o.splice(1,0,Sd())),v||o.push(Sd()),o.push(_d({})),o}(e,t,n))}function Sd(e){let t=Ho({},e);return t.metadata={source:!0},t}function XO(e,t){return DB({url:t.url?e.property(t.url):void 0,async:t.async?e.property(t.async):void 0,values:t.values?e.property(t.values):void 0,format:e.objectProperty(t.format)})}let ZO=e=>e===qu||e===qo,Cw=(e,t,n)=>la(e)?MU(e.signal,t,n):e===Qp||e===qo?t:n,ya=(e,t,n)=>la(e)?OU(e.signal,t,n):ZO(e)?t:n,Wo=(e,t,n)=>la(e)?DU(e.signal,t,n):ZO(e)?n:t,JO=(e,t,n)=>la(e)?LU(e.signal,t,n):e===qo?{value:t}:{value:n},IU=(e,t,n)=>la(e)?FU(e.signal,t,n):e===eh?{value:t}:{value:n},OU=(e,t,n)=>QO(`${e} === '${qo}' || ${e} === '${qu}'`,t,n),DU=(e,t,n)=>QO(`${e} !== '${qo}' && ${e} !== '${qu}'`,t,n),MU=(e,t,n)=>HS(`${e} === '${Qp}' || ${e} === '${qo}'`,t,n),LU=(e,t,n)=>HS(`${e} === '${qo}'`,t,n),FU=(e,t,n)=>HS(`${e} === '${eh}'`,t,n),QO=(e,t,n)=>(t=t!=null?ba(t):t,n=n!=null?ba(n):n,eD(t)&&eD(n)?{signal:`${e} ? (${t=t?t.signal||it(t.value):null}) : (${n=n?n.signal||it(n.value):null})`}:[pt({test:e},t)].concat(n||[])),eD=e=>e==null||Object.keys(e).length===1,HS=(e,t,n)=>({signal:`${e} ? (${nh(t)}) : (${nh(n)})`}),PU=(e,t,n,a,r)=>({signal:(a!=null?`${e} === '${Qp}' ? (${nh(a)}) : `:"")+(n!=null?`${e} === '${qu}' ? (${nh(n)}) : `:"")+(r!=null?`${e} === '${eh}' ? (${nh(r)}) : `:"")+(t!=null?`${e} === '${qo}' ? (${nh(t)}) : `:"")+"(null)"}),nh=e=>la(e)?e.signal:e==null?null:it(e),$U=(e,t)=>t===0?0:la(e)?{signal:`(${e.signal}) * ${t}`}:{value:e*t},ah=(e,t)=>{let n=e.signal;return n&&n.endsWith("(null)")?{signal:n.slice(0,-6)+t.signal}:e};function rh(e,t,n,a){let r;if(t&&et(t,e))return t[e];if(et(n,e))return n[e];if(e.startsWith("title")){switch(e){case"titleColor":r="fill";break;case"titleFont":case"titleFontSize":case"titleFontWeight":r=e[5].toLowerCase()+e.slice(6)}return a[MS][r]}if(e.startsWith("label")){switch(e){case"labelColor":r="fill";break;case"labelFont":case"labelFontSize":r=e[5].toLowerCase()+e.slice(6)}return a[Xb][r]}return null}function tD(e){let t={};for(let n of e)if(n)for(let a in n)t[a]=1;return Object.keys(t)}function nD(e,t){return{scale:e.scale,range:t}}function BU(e,t,n,a,r){let i=qr(e,t),o=e.orient,u=e.gridScale,c=Cw(o,1,-1),f=function(N,$){if($!==1)if(ye(N)){let M=N=pt({},N);for(;M.mult!=null;){if(!ye(M.mult))return M.mult=la($)?{signal:`(${M.mult}) * (${$.signal})`}:M.mult*$,N;M=M.mult=pt({},M.mult)}M.mult=$}else N=la($)?{signal:`(${$.signal}) * (${N||0})`}:$*(N||0);return N}(e.offset,c),m,g,v,E={enter:m={opacity:Ut},update:v={opacity:io},exit:g={opacity:Ut}};Ma(E,{stroke:i("gridColor"),strokeCap:i("gridCap"),strokeDash:i("gridDash"),strokeDashOffset:i("gridDashOffset"),strokeOpacity:i("gridOpacity"),strokeWidth:i("gridWidth")});let k={scale:e.scale,field:ro,band:r.band,extra:r.extra,offset:r.offset,round:i("tickRound")},_=ya(o,{signal:"height"},{signal:"width"}),R=u?{scale:u,range:0,mult:c,offset:f}:{value:0,offset:f},O=u?{scale:u,range:1,mult:c,offset:f}:pt(_,{mult:c,offset:f});return m.x=v.x=ya(o,k,R),m.y=v.y=Wo(o,k,R),m.x2=v.x2=Wo(o,O),m.y2=v.y2=ya(o,O),g.x=ya(o,k),g.y=Wo(o,k),vi({type:$S,role:nB,key:ro,from:a,encode:E},n)}function qS(e,t,n,a,r){return{signal:'flush(range("'+e+'"), scale("'+e+'", datum.value), '+t+","+n+","+a+","+r+")"}}function UU(e,t,n,a){let r=qr(e,t),i=e.orient,o=Cw(i,-1,1),u,c,f={enter:u={opacity:Ut,anchor:ba(r("titleAnchor",null)),align:{signal:BS}},update:c=pt({},u,{opacity:io,text:ba(e.title)}),exit:{opacity:Ut}},m={signal:`lerp(range("${e.scale}"), ${xw(0,1,.5)})`};return c.x=ya(i,m),c.y=Wo(i,m),u.angle=ya(i,Ut,$U(o,90)),u.baseline=ya(i,JO(i,qu,qo),{value:qu}),c.angle=u.angle,c.baseline=u.baseline,Ma(f,{fill:r("titleColor"),fillOpacity:r("titleOpacity"),font:r("titleFont"),fontSize:r("titleFontSize"),fontStyle:r("titleFontStyle"),fontWeight:r("titleFontWeight"),limit:r("titleLimit"),lineHeight:r("titleLineHeight")},{align:r("titleAlign"),angle:r("titleAngle"),baseline:r("titleBaseline")}),function(g,v,E,k){let _=(N,$)=>N!=null?(E.update[$]=ah(ba(N),E.update[$]),!1):!Jp($,k),R=_(g("titleX"),"x"),O=_(g("titleY"),"y");E.enter.auto=O===R?ba(O):ya(v,ba(O),ba(R))}(r,i,f,n),f.update.align=ah(f.update.align,u.align),f.update.angle=ah(f.update.angle,u.angle),f.update.baseline=ah(f.update.baseline,u.baseline),vi({type:kd,role:iB,style:MS,from:a,encode:f},n)}function zU(e,t){let n=function(_,R){var O,N,$,M=R.config,U=M.style,z=M.axis,q=R.scaleType(_.scale)==="band"&&M.axisBand,Y=_.orient;if(la(Y)){let K=tD([M.axisX,M.axisY]),ne=tD([M.axisTop,M.axisBottom,M.axisLeft,M.axisRight]);for($ of(O={},K))O[$]=ya(Y,rh($,M.axisX,z,U),rh($,M.axisY,z,U));for($ of(N={},ne))N[$]=PU(Y.signal,rh($,M.axisTop,z,U),rh($,M.axisBottom,z,U),rh($,M.axisLeft,z,U),rh($,M.axisRight,z,U))}else O=Y===qo||Y===qu?M.axisX:M.axisY,N=M["axis"+Y[0].toUpperCase()+Y.slice(1)];return O||N||q?pt({},z,O,N,q):z}(e,t),a=e.encode||{},r=a.axis||{},i=r.name||void 0,o=r.interactive,u=r.style,c=qr(e,n),f=function(_){let R=_("tickBand"),O,N,$=_("tickOffset");return R?R.signal?(O={signal:`(${R.signal}) === 'extent' ? 1 : 0.5`},N={signal:`(${R.signal}) === 'extent'`},ye($)||($={signal:`(${R.signal}) === 'extent' ? 0 : ${$}`})):R==="extent"?(O=1,N=!0,$=0):(O=.5,N=!1):(O=_("bandPosition"),N=_("tickExtra")),{extra:N,band:O,offset:$}}(c),m={scale:e.scale,ticks:!!c("ticks"),labels:!!c("labels"),grid:!!c("grid"),domain:!!c("domain"),title:e.title!=null},g=dt(t.add(Ho({},[m]))),v=dt(t.add(AB({scale:t.scaleRef(e.scale),extra:t.property(f.extra),count:t.objectProperty(e.tickCount),values:t.objectProperty(e.values),minstep:t.property(e.tickMinStep),formatType:t.property(e.formatType),formatSpecifier:t.property(e.format)}))),E=[],k;return m.grid&&E.push(BU(e,n,a.grid,v,f)),m.ticks&&(k=c("tickSize"),E.push(function(_,R,O,N,$,M){let U=qr(_,R),z=_.orient,q=Cw(z,-1,1),Y,K,ne,X={enter:Y={opacity:Ut},update:ne={opacity:io},exit:K={opacity:Ut}};Ma(X,{stroke:U("tickColor"),strokeCap:U("tickCap"),strokeDash:U("tickDash"),strokeDashOffset:U("tickDashOffset"),strokeOpacity:U("tickOpacity"),strokeWidth:U("tickWidth")});let ie=ba($);ie.mult=q;let oe={scale:_.scale,field:ro,band:M.band,extra:M.extra,offset:M.offset,round:U("tickRound")};return ne.y=Y.y=ya(z,Ut,oe),ne.y2=Y.y2=ya(z,ie),K.x=ya(z,oe),ne.x=Y.x=Wo(z,Ut,oe),ne.x2=Y.x2=Wo(z,ie),K.y=Wo(z,oe),vi({type:$S,role:rB,key:ro,from:N,encode:X},O)}(e,n,a.ticks,v,k,f))),m.labels&&(k=m.ticks?k:0,E.push(function(_,R,O,N,$,M){let U=qr(_,R),z=_.orient,q=_.scale,Y=Cw(z,-1,1),K=wd(U("labelFlush")),ne=wd(U("labelFlushOffset")),X=U("labelAlign"),ie=U("labelBaseline"),oe,ue=K===0||!!K,ce=ba($);ce.mult=Y,ce.offset=ba(U("labelPadding")||0),ce.offset.mult=Y;let ve={scale:q,field:ro,band:.5,offset:PO(M.offset,U("labelOffset"))},_e=ya(z,ue?qS(q,K,'"left"','"right"','"center"'):{value:"center"},IU(z,"left","right")),Ie=ya(z,JO(z,"bottom","top"),ue?qS(q,K,'"top"','"bottom"','"middle"'):{value:"middle"}),Be=qS(q,K,`-(${ne})`,ne,0);ue=ue&&ne;let je={opacity:Ut,x:ya(z,ve,ce),y:Wo(z,ve,ce)},Oe={enter:je,update:oe={opacity:io,text:{field:DS},x:je.x,y:je.y,align:_e,baseline:Ie},exit:{opacity:Ut,x:je.x,y:je.y}};Ma(Oe,{dx:!X&&ue?ya(z,Be):null,dy:!ie&&ue?Wo(z,Be):null}),Ma(Oe,{angle:U("labelAngle"),fill:U("labelColor"),fillOpacity:U("labelOpacity"),font:U("labelFont"),fontSize:U("labelFontSize"),fontWeight:U("labelFontWeight"),fontStyle:U("labelFontStyle"),limit:U("labelLimit"),lineHeight:U("labelLineHeight")},{align:X,baseline:ie});let ot=U("labelBound"),st=U("labelOverlap");return st=st||ot?{separation:U("labelSeparation"),method:st,order:"datum.index",bound:ot?{scale:q,orient:z,tolerance:ot}:null}:void 0,oe.align!==_e&&(oe.align=ah(oe.align,_e)),oe.baseline!==Ie&&(oe.baseline=ah(oe.baseline,Ie)),vi({type:kd,role:aB,style:Xb,key:ro,from:N,encode:Oe,overlap:st},O)}(e,n,a.labels,v,k,f))),m.domain&&E.push(function(_,R,O,N){let $=qr(_,R),M=_.orient,U,z,q={enter:U={opacity:Ut},update:z={opacity:io},exit:{opacity:Ut}};Ma(q,{stroke:$("domainColor"),strokeCap:$("domainCap"),strokeDash:$("domainDash"),strokeDashOffset:$("domainDashOffset"),strokeWidth:$("domainWidth"),strokeOpacity:$("domainOpacity")});let Y=nD(_,0),K=nD(_,1);return U.x=z.x=ya(M,Y,Ut),U.x2=z.x2=ya(M,K),U.y=z.y=Wo(M,Y,Ut),U.y2=z.y2=Wo(M,K),vi({type:$S,role:tB,from:N,encode:q},O)}(e,n,a.domain,g)),m.title&&E.push(UU(e,n,a.title,g)),Tw(Jb({role:eB,from:g,encode:Zp(GU(c,e),r,Zb),marks:E,aria:c("aria"),description:c("description"),zindex:c("zindex"),name:i,interactive:o,style:u}),t)}function GU(e,t){let n={enter:{},update:{}};return Ma(n,{orient:e("orient"),offset:e("offset")||0,position:jo(t.position,0),titlePadding:e("titlePadding"),minExtent:e("minExtent"),maxExtent:e("maxExtent"),range:{signal:`abs(span(range("${t.scale}")))`},translate:e("translate"),format:t.format,formatType:t.formatType}),n}function aD(e,t,n){let a=Re(e.signals),r=Re(e.scales);return n||a.forEach(i=>vO(i,t)),Re(e.projections).forEach(i=>function(o,u){let c=u.config.projection||{},f={};for(let m in o)m!=="name"&&(f[m]=IS(o[m],m,u));for(let m in c)f[m]==null&&(f[m]=IS(c[m],m,u));u.addProjection(o.name,f)}(i,t)),r.forEach(i=>function(o,u){let c=o.type||"linear";cv(c)||F("Unrecognized scale type: "+it(c)),u.addScale(o.name,{type:c,domain:void 0})}(i,t)),Re(e.data).forEach(i=>NU(i,t)),r.forEach(i=>WB(i,t)),(n||a).forEach(i=>function(o,u){let c=u.getSignal(o.name),f=o.update;o.init&&(f?F("Signals can not include both init and update expressions."):(f=o.init,c.initonly=!0)),f&&(f=Os(f,u),c.update=f.$expr,c.params=f.$params),o.on&&o.on.forEach(m=>xB(m,u,c.id))}(i,t)),Re(e.axes).forEach(i=>zU(i,t)),Re(e.marks).forEach(i=>Tw(i,t)),Re(e.legends).forEach(i=>SU(i,t)),e.title&&CU(e.title,t),t.parseLambdas(),t}let jU=e=>Zp({enter:{x:{value:0},y:{value:0}},update:{width:{signal:"width"},height:{signal:"height"}}},e);function HU(e,t){let n=t.config,a=dt(t.root=t.add(bw())),r=function(f,m){let g=_=>jo(f[_],m[_]),v=[e0("background",g("background")),e0("autosize",Z$(g("autosize"))),e0("padding",Q$(g("padding"))),e0("width",g("width")||0),e0("height",g("height")||0)],E=v.reduce((_,R)=>(_[R.name]=R,_),{}),k={};return Re(f.signals).forEach(_=>{et(E,_.name)?_=pt(E[_.name],_):v.push(_),k[_.name]=_}),Re(m.signals).forEach(_=>{et(k,_.name)||et(E,_.name)||v.push(_)}),v}(e,n);r.forEach(f=>vO(f,t)),t.description=e.description||n.description,t.eventConfig=n.events,t.legends=t.objectProperty(n.legend&&n.legend.layout),t.locale=n.locale;let i=t.add(Ho()),o=t.add(SO(bO(jU(e.encode),kw,kS,e.style,t,{pulse:dt(i)}))),u=t.add(CO({layout:t.objectProperty(e.layout),legends:t.legends,autosize:t.signalRef("autosize"),mark:a,pulse:dt(o)}));t.operators.pop(),t.pushState(dt(o),dt(u),null),aD(e,t,r),t.operators.push(u);let c=t.add(kO({mark:a,pulse:dt(u)}));return c=t.add(TO({pulse:dt(c)})),c=t.add(_d({pulse:dt(c)})),t.addData("root",new xd(t,i,i,c)),t}function e0(e,t){return t&&t.signal?{name:e,update:t.signal}:{name:e,value:t}}function rD(e,t){this.config=e||{},this.options=t||{},this.bindings=[],this.field={},this.signals={},this.lambdas={},this.scales={},this.events={},this.data={},this.streams=[],this.updates=[],this.operators=[],this.eventConfig=null,this.locale=null,this._id=0,this._subid=0,this._nextsub=[0],this._parent=[],this._encode=[],this._lookup=[],this._markpath=[]}function iD(e){this.config=e.config,this.options=e.options,this.legends=e.legends,this.field=Object.create(e.field),this.signals=Object.create(e.signals),this.lambdas=Object.create(e.lambdas),this.scales=Object.create(e.scales),this.events=Object.create(e.events),this.data=Object.create(e.data),this.streams=[],this.updates=[],this.operators=[],this._id=0,this._subid=++e._nextsub[0],this._nextsub=e._nextsub,this._parent=e._parent.slice(),this._encode=e._encode.slice(),this._lookup=e._lookup.slice(),this._markpath=e._markpath}function WS(e){return(Ee(e)?qU:WU)(e)}function qU(e){let t=e.length,n="[";for(let a=0;a<t;++a){let r=e[a];n+=(a>0?",":"")+(ye(r)?r.signal||WS(r):it(r))}return n+"]"}function WU(e){let t,n,a="{",r=0;for(t in e)n=e[t],a+=(++r>1?",":"")+it(t)+":"+(ye(n)?n.signal||WS(n):it(n));return a+"}"}rD.prototype=iD.prototype={parse(e){return aD(e,this)},fork(){return new iD(this)},isSubscope(){return this._subid>0},toRuntime(){return this.finish(),{description:this.description,operators:this.operators,streams:this.streams,updates:this.updates,bindings:this.bindings,eventConfig:this.eventConfig,locale:this.locale}},id(){return(this._subid?this._subid+":":0)+this._id++},add(e){return this.operators.push(e),e.id=this.id(),e.refs&&(e.refs.forEach(t=>{t.$ref=e.id}),e.refs=null),e},proxy(e){let t=e instanceof AS?dt(e):e;return this.add(UB({value:t}))},addStream(e){return this.streams.push(e),e.id=this.id(),e},addUpdate(e){return this.updates.push(e),e},finish(){let e,t;for(e in this.root&&(this.root.root=!0),this.signals)this.signals[e].signal=e;for(e in this.scales)this.scales[e].scale=e;function n(a,r,i){let o,u;a&&(o=a.data||(a.data={}),u=o[r]||(o[r]=[]),u.push(i))}for(e in this.data){t=this.data[e],n(t.input,e,"input"),n(t.output,e,"output"),n(t.values,e,"values");for(let a in t.index)n(t.index[a],e,"index:"+a)}return this},pushState(e,t,n){this._encode.push(dt(this.add(_d({pulse:e})))),this._parent.push(t),this._lookup.push(n?dt(this.proxy(n)):null),this._markpath.push(-1)},popState(){this._encode.pop(),this._parent.pop(),this._lookup.pop(),this._markpath.pop()},parent(){return Pe(this._parent)},encode(){return Pe(this._encode)},lookup(){return Pe(this._lookup)},markpath(){let e=this._markpath;return++e[e.length-1]},fieldRef(e,t){if(Mt(e))return Yb(e,t);e.signal||F("Unsupported field reference: "+it(e));let n=e.signal,a=this.field[n];if(!a){let r={name:this.signalRef(n)};t&&(r.as=t),this.field[n]=a=dt(this.add(NB(r)))}return a},compareRef(e){let t=!1,n=i=>la(i)?(t=!0,this.signalRef(i.signal)):function(o){return o&&o.expr}(i)?(t=!0,this.exprRef(i.expr)):i,a=Re(e.field).map(n),r=Re(e.order).map(n);return t?dt(this.add(xO({fields:a,orders:r}))):EO(a,r)},keyRef(e,t){let n=!1,a=this.signals;return e=Re(e).map(r=>la(r)?(n=!0,dt(a[r.signal])):r),n?dt(this.add(IB({fields:e,flat:t}))):function(r,i){let o={$key:r};return i&&(o.$flat=!0),o}(e,t)},sortRef(e){if(!e)return e;let t=yw(e.op,e.field),n=e.order||"ascending";return n.signal?dt(this.add(xO({fields:t,orders:this.signalRef(n.signal)}))):EO(t,n)},event(e,t){let n=e+":"+t;if(!this.events[n]){let a=this.id();this.streams.push({id:a,source:e,type:t}),this.events[n]=a}return this.events[n]},hasOwnSignal(e){return et(this.signals,e)},addSignal(e,t){this.hasOwnSignal(e)&&F("Duplicate signal name: "+it(e));let n=t instanceof AS?t:this.add(bw(t));return this.signals[e]=n},getSignal(e){return this.signals[e]||F("Unrecognized signal name: "+it(e)),this.signals[e]},signalRef(e){return this.signals[e]?dt(this.signals[e]):(et(this.lambdas,e)||(this.lambdas[e]=this.add(bw(null))),dt(this.lambdas[e]))},parseLambdas(){let e=Object.keys(this.lambdas);for(let t=0,n=e.length;t<n;++t){let a=e[t],r=Os(a,this),i=this.lambdas[a];i.params=r.$params,i.update=r.$expr}},property(e){return e&&e.signal?this.signalRef(e.signal):e},objectProperty(e){return e&&ye(e)?this.signalRef(e.signal||WS(e)):e},exprRef(e,t){let n={expr:Os(e,this)};return t&&(n.expr.$name=t),dt(this.add(CB(n)))},addBinding(e,t){this.bindings||F("Nested signals do not support binding: "+it(e)),this.bindings.push(pt({signal:e},t))},addScaleProj(e,t){et(this.scales,e)&&F("Duplicate scale or projection name: "+it(e)),this.scales[e]=this.add(t)},addScale(e,t){this.addScaleProj(e,GB(t))},addProjection(e,t){this.addScaleProj(e,BB(t))},getScale(e){return this.scales[e]||F("Unrecognized scale name: "+it(e)),this.scales[e]},scaleRef(e){return dt(this.getScale(e))},scaleType(e){return this.getScale(e).params.type},projectionRef(e){return this.scaleRef(e)},projectionType(e){return this.scaleType(e)},addData(e,t){return et(this.data,e)&&F("Duplicate data set name: "+it(e)),this.data[e]=t},getData(e){return this.data[e]||F("Undefined data set name: "+it(e)),this.data[e]},addDataPipeline(e,t){return et(this.data,e)&&F("Duplicate data set name: "+it(e)),this.addData(e,xd.fromEntries(this,t))}},pt(Js,Vf,G2,Q2,BL,oF,UF,NF,zF,nP,cP,pP),p.Bounds=Rn,p.CanvasHandler=rb,p.CanvasRenderer=Uv,p.DATE=pa,p.DAY=ta,p.DAYOFYEAR=Ni,p.Dataflow=Zs,p.Debug=Le,p.Error=me,p.EventStream=Pi,p.Gradient=ut,p.GroupItem=gl,p.HOURS=za,p.Handler=Du,p.Info=Ne,p.Item=Oo,p.MILLISECONDS=Or,p.MINUTES=sr,p.MONTH=ea,p.Marks=mi,p.MultiPulse=gc,p.None=pe,p.Operator=Vt,p.Parameters=hc,p.Pulse=ii,p.QUARTER=Sa,p.RenderType=Lu,p.Renderer=As,p.ResourceLoader=bl,p.SECONDS=lr,p.SVGHandler=z1,p.SVGRenderer=Y1,p.SVGStringRenderer=X1,p.Scenegraph=F1,p.TIME_UNITS=Bd,p.Transform=xe,p.View=tO,p.WEEK=An,p.Warn=Ae,p.YEAR=Qn,p.accessor=b,p.accessorFields=T,p.accessorName=x,p.array=Re,p.ascending=Jt,p.bandwidthNRD=om,p.bin=sm,p.bootstrapCI=lm,p.boundClip=GT,p.boundContext=Kg,p.boundItem=L1,p.boundMark=iT,p.boundStroke=vl,p.changeset=ss,p.clampRange=Ye,p.codegenExpression=pI,p.compare=Ml,p.constant=dn,p.cumulativeLogNormal=dr,p.cumulativeNormal=yc,p.cumulativeUniform=wc,p.dayofyear=C0,p.debounce=Ko,p.defaultLocale=cf,p.definition=am,p.densityLogNormal=Af,p.densityNormal=um,p.densityUniform=Rf,p.domChild=Br,p.domClear=Fo,p.domCreate=Ou,p.domFind=P1,p.dotbin=xf,p.error=F,p.expressionFunction=Kn,p.extend=pt,p.extent=$n,p.extentIndex=nr,p.falsy=te,p.fastmap=ca,p.field=W,p.flush=ar,p.font=Iv,p.fontFamily=eb,p.fontSize=Ss,p.format=fc,p.formatLocale=cc,p.formats=is,p.hasOwnProperty=et,p.id=V,p.identity=Q,p.inferType=Zh,p.inferTypes=Jh,p.ingest=Rt,p.inherits=Me,p.inrange=_a,p.interpolate=zg,p.interpolateColors=Sp,p.interpolateRange=pv,p.intersect=$T,p.intersectBoxLine=Np,p.intersectPath=v1,p.intersectPoint=E1,p.intersectRule=HA,p.isArray=Ee,p.isBoolean=Xr,p.isDate=En,p.isFunction=Je,p.isIterable=wi,p.isNumber=Pa,p.isObject=ye,p.isRegExp=_i,p.isString=Mt,p.isTuple=nu,p.key=ki,p.lerp=lo,p.lineHeight=Nu,p.loader=Ks,p.locale=Xh,p.logger=ze,p.lruCache=Ll,p.markup=V1,p.merge=Fs,p.mergeConfig=Se,p.multiLineOffset=O1,p.one=he,p.pad=Vu,p.panLinear=_t,p.panLog=St,p.panPow=Kt,p.panSymlog=Ve,p.parse=function(e,t,n){return ye(e)||F("Input Vega specification must be an object."),HU(e,new rD(t=Se(function(){let a="sans-serif",r="#4c78a8",i="#000",o="#888",u="#ddd";return{description:"Vega visualization",padding:0,autosize:"pad",background:null,events:{defaults:{allow:["wheel"]}},group:null,mark:null,arc:{fill:r},area:{fill:r},image:null,line:{stroke:r,strokeWidth:2},path:{stroke:r},rect:{fill:r},rule:{stroke:i},shape:{stroke:r},symbol:{fill:r,size:64},text:{fill:i,font:a,fontSize:11},trail:{fill:r,size:2},style:{"guide-label":{fill:i,font:a,fontSize:10},"guide-title":{fill:i,font:a,fontSize:11,fontWeight:"bold"},"group-title":{fill:i,font:a,fontSize:13,fontWeight:"bold"},"group-subtitle":{fill:i,font:a,fontSize:12},point:{size:30,strokeWidth:2,shape:"circle"},circle:{size:30,strokeWidth:2},square:{size:30,strokeWidth:2,shape:"square"},cell:{fill:"transparent",stroke:u},view:{fill:"transparent"}},title:{orient:"top",anchor:"middle",offset:4,subtitlePadding:3},axis:{minExtent:0,maxExtent:200,bandPosition:.5,domain:!0,domainWidth:1,domainColor:o,grid:!1,gridWidth:1,gridColor:u,labels:!0,labelAngle:0,labelLimit:180,labelOffset:0,labelPadding:2,ticks:!0,tickColor:o,tickOffset:0,tickRound:!0,tickSize:5,tickWidth:1,titlePadding:4},axisBand:{tickOffset:-.5},projection:{type:"mercator"},legend:{orient:"right",padding:0,gridAlign:"each",columnPadding:10,rowPadding:2,symbolDirection:"vertical",gradientDirection:"vertical",gradientLength:200,gradientThickness:16,gradientStrokeColor:u,gradientStrokeWidth:0,gradientLabelOffset:2,labelAlign:"left",labelBaseline:"middle",labelLimit:160,labelOffset:4,labelOverlap:!0,symbolLimit:30,symbolType:"circle",symbolSize:100,symbolOffset:0,symbolStrokeWidth:1.5,symbolBaseFillColor:"transparent",symbolBaseStrokeColor:o,titleLimit:180,titleOrient:"top",titlePadding:5,layout:{offset:18,direction:"horizontal",left:{direction:"vertical"},right:{direction:"vertical"}}},range:{category:{scheme:"tableau10"},ordinal:{scheme:"blues"},heatmap:{scheme:"yellowgreenblue"},ramp:{scheme:"blues"},diverging:{scheme:"blueorange",extent:[1,0]},symbol:["circle","square","triangle-up","cross","diamond","triangle-right","triangle-down","triangle-left"]}}}(),t,e.config),n)).toRuntime()},p.parseExpression=cI,p.parseSelector=cO,p.path=Nc,p.pathCurves=Xe,p.pathEqual=jT,p.pathParse=Bt,p.pathRectangle=Wg,p.pathRender=Ya,p.pathSymbols=Ka,p.pathTrail=Vg,p.peek=Pe,p.point=Dv,p.projection=Vk,p.quantileLogNormal=fm,p.quantileNormal=vc,p.quantileUniform=uu,p.quantiles=im,p.quantizeInterpolator=hv,p.quarter=At,p.quartiles=kf,p.randomInteger=function(e,t){let n,a,r;t==null&&(t=e,e=0);let i={min(o){return arguments.length?(n=o||0,r=a-n,i):n},max(o){return arguments.length?(a=o||0,r=a-n,i):a},sample:()=>n+Math.floor(r*p.random()),pdf:o=>o===Math.floor(o)&&o>=n&&o<a?1/r:0,cdf(o){let u=Math.floor(o);return u<n?0:u>=a?1:(u-n+1)/r},icdf:o=>o>=0&&o<=1?n-1+Math.floor(o*r):NaN};return i.min(e).max(t)},p.randomKDE=dm,p.randomLCG=function(e){return function(){return(e=(1103515245*e+12345)%2147483647)/2147483647}},p.randomLogNormal=Tf,p.randomMixture=Cf,p.randomNormal=cm,p.randomUniform=Nf,p.read=mf,p.regressionConstant=If,p.regressionExp=pm,p.regressionLinear=cu,p.regressionLoess=gm,p.regressionLog=xc,p.regressionPoly=hm,p.regressionPow=uy,p.regressionQuad=oi,p.renderModule=Hv,p.repeat=uo,p.resetDefaultLocale=function(){return Yh(),dc(),cf()},p.resetSVGClipId=vv,p.resetSVGDefIds=function(){vv(),we=0},p.responseType=hf,p.runtimeContext=LI,p.sampleCurve=Of,p.sampleLogNormal=Sf,p.sampleNormal=lu,p.sampleUniform=Ec,p.scale=Pt,p.sceneEqual=J1,p.sceneFromJSON=sT,p.scenePickVisit=Av,p.sceneToJSON=oT,p.sceneVisit=Mo,p.sceneZOrder=w1,p.scheme=Tp,p.serializeXML=RT,p.setRandom=function(e){p.random=e},p.span=Zr,p.splitAccessPath=j,p.stringValue=it,p.textMetrics=Lo,p.timeBin=ni,p.timeFloor=D0,p.timeFormatLocale=Ys,p.timeInterval=ts,p.timeOffset=Wd,p.timeSequence=Oh,p.timeUnitSpecifier=zd,p.timeUnits=Ud,p.toBoolean=Fl,p.toDate=Od,p.toNumber=De,p.toSet=rr,p.toString=Dd,p.transform=rm,p.transforms=Js,p.truncate=ph,p.truthy=Z,p.tupleid=at,p.typeParsers=ur,p.utcFloor=qd,p.utcInterval=Dr,p.utcOffset=F0,p.utcSequence=Dh,p.utcdayofyear=Rh,p.utcquarter=ft,p.utcweek=Nh,p.version="5.25.0",p.visitArray=Zo,p.week=Gd,p.writeConfig=ke,p.zero=ae,p.zoomLinear=Xt,p.zoomLog=yt,p.zoomPow=Zt,p.zoomSymlog=Dt})});var XD=YS((Bw,KD)=>{(function(p,b){typeof Bw=="object"&&typeof KD<"u"?b(Bw,uA()):typeof define=="function"&&define.amd?define(["exports","vega"],b):b((p=typeof globalThis<"u"?globalThis:p||self).vegaLite={},p.vega)})(Bw,function(p,b){"use strict";var x="5.16.1";function T(l){return!!l.or}function I(l){return!!l.and}function B(l){return!!l.not}function P(l,s){if(B(l))P(l.not,s);else if(I(l))for(let d of l.and)P(d,s);else if(T(l))for(let d of l.or)P(d,s);else s(l)}function F(l,s){return B(l)?{not:F(l.not,s)}:I(l)?{and:l.and.map(d=>F(d,s))}:T(l)?{or:l.or.map(d=>F(d,s))}:s(l)}let j=globalThis.structuredClone;function W(l){throw new Error(l)}function V(l,s){let d={};for(let h of s)b.hasOwnProperty(l,h)&&(d[h]=l[h]);return d}function Q(l,s){let d={...l};for(let h of s)delete d[h];return d}function ae(l){if(b.isNumber(l))return l;let s=b.isString(l)?l:Ye(l);if(s.length<250)return s;let d=0;for(let h=0;h<s.length;h++)d=(d<<5)-d+s.charCodeAt(h),d&=d;return d}function he(l){return l===!1||l===null}function Z(l,s){return l.includes(s)}function te(l,s){let d=0;for(let[h,y]of l.entries())if(s(y,h,d++))return!0;return!1}function le(l,s){let d=0;for(let[h,y]of l.entries())if(!s(y,h,d++))return!1;return!0}function pe(l){for(var s=arguments.length,d=new Array(s>1?s-1:0),h=1;h<s;h++)d[h-1]=arguments[h];for(let y of d)me(l,y??{});return l}function me(l,s){for(let d of be(s))b.writeConfig(l,d,s[d],!0)}function Ae(l,s){let d=[],h={},y;for(let w of l)y=s(w),y in h||(h[y]=1,d.push(w));return d}function Ne(l,s){if(l.size!==s.size)return!1;for(let d of l)if(!s.has(d))return!1;return!0}function Le(l,s){for(let d of l)if(s.has(d))return!0;return!1}function ze(l){let s=new Set;for(let d of l){let h=b.splitAccessPath(d).map((w,S)=>S===0?w:`[${w}]`),y=h.map((w,S)=>h.slice(0,S+1).join(""));for(let w of y)s.add(w)}return s}function Ee(l,s){return l===void 0||s===void 0||Le(ze(l),ze(s))}function ye(l){return be(l).length===0}Set.prototype.toJSON=function(){return`Set(${[...this].map(l=>Ye(l)).join(",")})`};let be=Object.keys,Se=Object.values,ke=Object.entries;function We(l){return l===!0||l===!1}function Pe(l){let s=l.replace(/\W/g,"_");return(l.match(/^\d+/)?"_":"")+s}function De(l,s){return B(l)?`!(${De(l.not,s)})`:I(l)?`(${l.and.map(d=>De(d,s)).join(") && (")})`:T(l)?`(${l.or.map(d=>De(d,s)).join(") || (")})`:s(l)}function lt(l,s){if(s.length===0)return!0;let d=s.shift();return d in l&&lt(l[d],s)&&delete l[d],ye(l)}function gt(l){return l.charAt(0).toUpperCase()+l.substr(1)}function kt(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"datum",d=b.splitAccessPath(l),h=[];for(let y=1;y<=d.length;y++){let w=`[${d.slice(0,y).map(b.stringValue).join("][")}]`;h.push(`${s}${w}`)}return h.join(" && ")}function an(l){return`${arguments.length>1&&arguments[1]!==void 0?arguments[1]:"datum"}[${b.stringValue(b.splitAccessPath(l).join("."))}]`}function cn(l){return l.replace(/(\[|\]|\.|'|")/g,"\\$1")}function Gt(l){return`${b.splitAccessPath(l).map(cn).join("\\.")}`}function _t(l,s,d){return l.replace(new RegExp(s.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"g"),d)}function St(l){return`${b.splitAccessPath(l).join(".")}`}function Kt(l){return l?b.splitAccessPath(l).length:0}function Ve(){for(var l=arguments.length,s=new Array(l),d=0;d<l;d++)s[d]=arguments[d];for(let h of s)if(h!==void 0)return h}let Ze=42;function Xt(l){let s=++Ze;return l?String(l)+s:s}function yt(l){return Zt(l)?l:`__${l}`}function Zt(l){return l.startsWith("__")}function Dt(l){if(l!==void 0)return(l%360+360)%360}function At(l){return!!b.isNumber(l)||!isNaN(l)&&!isNaN(parseFloat(l))}let ft=Object.getPrototypeOf(globalThis.structuredClone({}));function Re(l,s){if(l===s)return!0;if(l&&s&&typeof l=="object"&&typeof s=="object"){if(l.constructor.name!==s.constructor.name)return!1;let d,h;if(Array.isArray(l)){if(d=l.length,d!=s.length)return!1;for(h=d;h--!=0;)if(!Re(l[h],s[h]))return!1;return!0}if(l instanceof Map&&s instanceof Map){if(l.size!==s.size)return!1;for(h of l.entries())if(!s.has(h[0]))return!1;for(h of l.entries())if(!Re(h[1],s.get(h[0])))return!1;return!0}if(l instanceof Set&&s instanceof Set){if(l.size!==s.size)return!1;for(h of l.entries())if(!s.has(h[0]))return!1;return!0}if(ArrayBuffer.isView(l)&&ArrayBuffer.isView(s)){if(d=l.length,d!=s.length)return!1;for(h=d;h--!=0;)if(l[h]!==s[h])return!1;return!0}if(l.constructor===RegExp)return l.source===s.source&&l.flags===s.flags;if(l.valueOf!==Object.prototype.valueOf&&l.valueOf!==ft.valueOf)return l.valueOf()===s.valueOf();if(l.toString!==Object.prototype.toString&&l.toString!==ft.toString)return l.toString()===s.toString();let y=Object.keys(l);if(d=y.length,d!==Object.keys(s).length)return!1;for(h=d;h--!=0;)if(!Object.prototype.hasOwnProperty.call(s,y[h]))return!1;for(h=d;h--!=0;){let w=y[h];if(!Re(l[w],s[w]))return!1}return!0}return l!=l&&s!=s}function Ye(l){let s=[];return function d(h){if(h&&h.toJSON&&typeof h.toJSON=="function"&&(h=h.toJSON()),h===void 0)return;if(typeof h=="number")return isFinite(h)?""+h:"null";if(typeof h!="object")return JSON.stringify(h);let y,w;if(Array.isArray(h)){for(w="[",y=0;y<h.length;y++)y&&(w+=","),w+=d(h[y])||"null";return w+"]"}if(h===null)return"null";if(s.includes(h))throw new TypeError("Converting circular structure to JSON");let S=s.push(h)-1,A=Object.keys(h).sort();for(w="",y=0;y<A.length;y++){let C=A[y],L=d(h[C]);L&&(w&&(w+=","),w+=JSON.stringify(C)+":"+L)}return s.splice(S,1),`{${w}}`}(l)}let Je="row",Yr="column",Ml="facet",Jt="x",Pn="y",Kr="x2",Ei="y2",dn="xOffset",Ko="yOffset",pt="radius",$n="radius2",nr="theta",so="theta2",et="latitude",Fa="longitude",ca="latitude2",ar="longitude2",Me="color",_a="fill",Xr="stroke",En="shape",wi="size",Pa="angle",_i="opacity",Mt="fillOpacity",ki="strokeOpacity",lo="strokeWidth",Xo="strokeDash",Ll="text",Fs="order",uo="detail",Vu="key",Zr="tooltip",it="href",Fl="url",Id="description",Od={theta:1,theta2:1,radius:1,radius2:1};function Dd(l){return l in Od}let rr={longitude:1,longitude2:1,latitude:1,latitude2:1};function ph(l){switch(l){case et:return"y";case ca:return"y2";case Fa:return"x";case ar:return"x2"}}function Zo(l){return l in rr}let u0=be(rr),Yu={x:1,y:1,x2:1,y2:1,...Od,...rr,xOffset:1,yOffset:1,color:1,fill:1,stroke:1,opacity:1,fillOpacity:1,strokeOpacity:1,strokeWidth:1,strokeDash:1,size:1,angle:1,shape:1,order:1,text:1,detail:1,key:1,tooltip:1,href:1,url:1,description:1};function Jo(l){return l===Me||l===_a||l===Xr}let Pl={row:1,column:1,facet:1},$a=be(Pl),Md={...Yu,...Pl},c0=be(Md),{order:ir,detail:SA,tooltip:AA,...a_}=Md,{row:TA,column:r_,facet:i_,...o_}=a_;function d0(l){return!!Md[l]}let s_=[Kr,Ei,ca,ar,so,$n];function xi(l){return Ps(l)!==l}function Ps(l){switch(l){case Kr:return Jt;case Ei:return Pn;case ca:return et;case ar:return Fa;case so:return nr;case $n:return pt}return l}function or(l){if(Dd(l))switch(l){case nr:return"startAngle";case so:return"endAngle";case pt:return"outerRadius";case $n:return"innerRadius"}return l}function Si(l){switch(l){case Jt:return Kr;case Pn:return Ei;case et:return ca;case Fa:return ar;case nr:return so;case pt:return $n}}function ka(l){switch(l){case Jt:case Kr:return"width";case Pn:case Ei:return"height"}}function hh(l){switch(l){case Jt:return"xOffset";case Pn:return"yOffset";case Kr:return"x2Offset";case Ei:return"y2Offset";case nr:return"thetaOffset";case pt:return"radiusOffset";case so:return"theta2Offset";case $n:return"radius2Offset"}}function $l(l){switch(l){case Jt:return"xOffset";case Pn:return"yOffset"}}function l_(l){switch(l){case"xOffset":return"x";case"yOffset":return"y"}}let Ku=be(Yu),{x:Ba,y:u_,x2:mh,y2:f0,xOffset:c_,yOffset:d_,latitude:f_,longitude:p_,latitude2:CA,longitude2:RA,theta:NA,theta2:gh,radius:p0,radius2:h0,...Ai}=Yu,$s=be(Ai),Xu={x:1,y:1},Jr=be(Xu);function sn(l){return l in Xu}let Zu={theta:1,radius:1},m0=be(Zu);function Ju(l){return l==="width"?Jt:Pn}let bh={xOffset:1,yOffset:1};function Zn(l){return l in bh}let{text:h_,tooltip:IA,href:yh,url:Qu,description:m_,detail:OA,key:Bl,order:g0,...vh}=Ai,b0=be(vh),Eh={...Xu,...Zu,...bh,...vh},Ul=be(Eh);function Rr(l){return!!Eh[l]}function wh(l,s){return function(d){switch(d){case Me:case _a:case Xr:case Id:case uo:case Vu:case Zr:case it:case Fs:case _i:case Mt:case ki:case lo:case Ml:case Je:case Yr:return _h;case Jt:case Pn:case dn:case Ko:case et:case Fa:return y0;case Kr:case Ei:case ca:case ar:return{area:"always",bar:"always",image:"always",rect:"always",rule:"always",circle:"binned",point:"binned",square:"binned",tick:"binned",line:"binned",trail:"binned"};case wi:return{point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",text:"always",line:"always",trail:"always"};case Xo:return{line:"always",point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",geoshape:"always"};case En:return{point:"always",geoshape:"always"};case Ll:return{text:"always"};case Pa:return{point:"always",square:"always",text:"always"};case Fl:return{image:"always"};case nr:case pt:return{text:"always",arc:"always"};case so:case $n:return{arc:"always"}}}(l)[s]}let _h={arc:"always",area:"always",bar:"always",circle:"always",geoshape:"always",image:"always",line:"always",rule:"always",point:"always",rect:"always",square:"always",trail:"always",text:"always",tick:"always"},{geoshape:g_,...y0}=_h;function Ld(l){switch(l){case Jt:case Pn:case nr:case pt:case dn:case Ko:case wi:case Pa:case lo:case _i:case Mt:case ki:case Kr:case Ei:case so:case $n:return;case Ml:case Je:case Yr:case En:case Xo:case Ll:case Zr:case it:case Fl:case Id:return"discrete";case Me:case _a:case Xr:return"flexible";case et:case Fa:case ca:case ar:case uo:case Vu:case Fs:return}}let v0={argmax:1,argmin:1,average:1,count:1,distinct:1,product:1,max:1,mean:1,median:1,min:1,missing:1,q1:1,q3:1,ci0:1,ci1:1,stderr:1,stdev:1,stdevp:1,sum:1,valid:1,values:1,variance:1,variancep:1},E0={count:1,min:1,max:1};function Qr(l){return!!l&&!!l.argmin}function Ti(l){return!!l&&!!l.argmax}function wn(l){return b.isString(l)&&!!v0[l]}let zl=new Set(["count","valid","missing","distinct"]);function Ci(l){return b.isString(l)&&zl.has(l)}let Nr=new Set(["count","sum","distinct","valid","missing"]),co=new Set(["mean","average","median","q1","q3","min","max"]);function Ri(l){return b.isBoolean(l)&&(l=at(l,void 0)),"bin"+be(l).map(s=>Ir(l[s])?Pe(`_${s}_${ke(l[s])}`):Pe(`_${s}_${l[s]}`)).join("")}function Wt(l){return l===!0||fo(l)&&!l.binned}function Bn(l){return l==="binned"||fo(l)&&l.binned===!0}function fo(l){return b.isObject(l)}function Ir(l){return l?.param}function ec(l){switch(l){case Je:case Yr:case wi:case Me:case _a:case Xr:case lo:case _i:case Mt:case ki:case En:return 6;case Xo:return 4;default:return 10}}function Qo(l){return!!l?.expr}function Jn(l){let s=be(l||{}),d={};for(let h of s)d[h]=Un(l[h]);return d}function tc(l){let{anchor:s,frame:d,offset:h,orient:y,angle:w,limit:S,color:A,subtitleColor:C,subtitleFont:L,subtitleFontSize:G,subtitleFontStyle:H,subtitleFontWeight:J,subtitleLineHeight:re,subtitlePadding:ee,...se}=l,de={...s?{anchor:s}:{},...d?{frame:d}:{},...h?{offset:h}:{},...y?{orient:y}:{},...w!==void 0?{angle:w}:{},...S!==void 0?{limit:S}:{}},fe={...C?{subtitleColor:C}:{},...L?{subtitleFont:L}:{},...G?{subtitleFontSize:G}:{},...H?{subtitleFontStyle:H}:{},...J?{subtitleFontWeight:J}:{},...re?{subtitleLineHeight:re}:{},...ee?{subtitlePadding:ee}:{}};return{titleMarkConfig:{...se,...A?{fill:A}:{}},subtitleMarkConfig:V(l,["align","baseline","dx","dy","limit"]),nonMarkTitleProperties:de,subtitle:fe}}function da(l){return b.isString(l)||b.isArray(l)&&b.isString(l[0])}function Ke(l){return!!l?.signal}function po(l){return!!l.step}function xa(l){return!b.isArray(l)&&"field"in l&&"data"in l}let Gl=be({aria:1,description:1,ariaRole:1,ariaRoleDescription:1,blend:1,opacity:1,fill:1,fillOpacity:1,stroke:1,strokeCap:1,strokeWidth:1,strokeOpacity:1,strokeDash:1,strokeDashOffset:1,strokeJoin:1,strokeOffset:1,strokeMiterLimit:1,startAngle:1,endAngle:1,padAngle:1,innerRadius:1,outerRadius:1,size:1,shape:1,interpolate:1,tension:1,orient:1,align:1,baseline:1,text:1,dir:1,dx:1,dy:1,ellipsis:1,limit:1,radius:1,theta:1,angle:1,font:1,fontSize:1,fontWeight:1,fontStyle:1,lineBreak:1,lineHeight:1,cursor:1,href:1,tooltip:1,cornerRadius:1,cornerRadiusTopLeft:1,cornerRadiusTopRight:1,cornerRadiusBottomLeft:1,cornerRadiusBottomRight:1,aspect:1,width:1,height:1,url:1,smooth:1}),Fd={arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1},kh=["cornerRadius","cornerRadiusTopLeft","cornerRadiusTopRight","cornerRadiusBottomLeft","cornerRadiusBottomRight"];function w0(l){let s=b.isArray(l.condition)?l.condition.map(_0):_0(l.condition);return{...Un(l),condition:s}}function Un(l){if(Qo(l)){let{expr:s,...d}=l;return{signal:s,...d}}return l}function _0(l){if(Qo(l)){let{expr:s,...d}=l;return{signal:s,...d}}return l}function rn(l){if(Qo(l)){let{expr:s,...d}=l;return{signal:s,...d}}return Ke(l)?l:l!==void 0?{value:l}:void 0}function es(l){return Ke(l)?l.signal:b.stringValue(l.value)}function fa(l){return Ke(l)?l.signal:l==null?null:b.stringValue(l)}function Pd(l,s,d){for(let h of d){let y=Ua(h,s.markDef,s.config);y!==void 0&&(l[h]=rn(y))}return l}function k0(l){return[].concat(l.type,l.style??[])}function jt(l,s,d){let h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},{vgChannel:y,ignoreVgConfig:w}=h;return y&&s[y]!==void 0?s[y]:s[l]!==void 0?s[l]:!w||y&&y!==l?Ua(l,s,d,h):void 0}function Ua(l,s,d){let{vgChannel:h}=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return Ve(h?$d(l,s,d.style):void 0,$d(l,s,d.style),h?d[s.type][h]:void 0,d[s.type][l],h?d.mark[h]:d.mark[l])}function $d(l,s,d){return x0(l,k0(s),d)}function x0(l,s,d){let h;s=b.array(s);for(let y of s){let w=d[y];w&&w[l]!==void 0&&(h=w[l])}return h}function jl(l,s){return b.array(l).reduce((d,h)=>(d.field.push(Ge(h,s)),d.order.push(h.sort??"ascending"),d),{field:[],order:[]})}function Hl(l,s){let d=[...l];return s.forEach(h=>{for(let y of d)if(Re(y,h))return;d.push(h)}),d}function ei(l,s){return Re(l,s)||!s?l:l?[...b.array(l),...b.array(s)].join(", "):s}function ti(l,s){let d=l.value,h=s.value;if(d==null||h===null)return{explicit:l.explicit,value:null};if((da(d)||Ke(d))&&(da(h)||Ke(h)))return{explicit:l.explicit,value:ei(d,h)};if(da(d)||Ke(d))return{explicit:l.explicit,value:d};if(da(h)||Ke(h))return{explicit:l.explicit,value:h};if(!(da(d)||Ke(d)||da(h)||Ke(h)))return{explicit:l.explicit,value:Hl(d,h)};throw new Error("It should never reach here")}function nt(l,s,d){return(s=function(h){var y=function(w,S){if(typeof w!="object"||w===null)return w;var A=w[Symbol.toPrimitive];if(A!==void 0){var C=A.call(w,S||"default");if(typeof C!="object")return C;throw new TypeError("@@toPrimitive must return a primitive value.")}return(S==="string"?String:Number)(w)}(h,"string");return typeof y=="symbol"?y:String(y)}(s))in l?Object.defineProperty(l,s,{value:d,enumerable:!0,configurable:!0,writable:!0}):l[s]=d,l}function S0(l,s,d){return function(h,y,w){if(y.set)y.set.call(h,w);else{if(!y.writable)throw new TypeError("attempted to set read only private field");y.value=w}}(l,A0(l,s,"set"),d),d}function A0(l,s,d){if(!s.has(l))throw new TypeError("attempted to "+d+" private field on non-instance");return s.get(l)}function b_(l,s,d){(function(h,y){if(y.has(h))throw new TypeError("Cannot initialize the same private elements twice on an object")})(l,s),s.set(l,d)}function xh(l){return`Invalid specification ${Ye(l)}. Make sure the specification includes at least one of the following properties: "mark", "layer", "facet", "hconcat", "vconcat", "concat", or "repeat".`}let Qn='Autosize "fit" only works for single views and layered views.';function Sa(l){return`${l=="width"?"Width":"Height"} "container" only works for single views and layered views.`}function ea(l){return`${l=="width"?"Width":"Height"} "container" only works well with autosize "fit" or "fit-${l=="width"?"x":"y"}".`}function An(l){return l?`Dropping "fit-${l}" because spec has discrete ${ka(l)}.`:'Dropping "fit" because spec has discrete size.'}function pa(l){return`Unknown field for ${l}. Cannot calculate view size.`}function ta(l){return`Cannot project a selection on encoding channel "${l}", which has no field.`}function Ni(l,s){return`Cannot project a selection on encoding channel "${l}" as it uses an aggregate function ("${s}").`}function za(l){return`Selection not supported for ${l} yet.`}let sr="The same selection must be used to override scale domains in a layered view.";function lr(l){return`The "columns" property cannot be used when "${l}" has nested row/column.`}function Or(l,s,d){return`An ancestor parsed field "${l}" as ${d} but a child wants to parse the field as ${s}.`}function Bd(l){return`Config.customFormatTypes is not true, thus custom format type and format for channel ${l} are dropped.`}function Sh(l){return`${l}Offset dropped because ${l} is continuous`}function Ud(l){return`Invalid field type "${l}".`}function T0(l,s){let{fill:d,stroke:h}=s;return`Dropping color ${l} as the plot also has ${d&&h?"fill and stroke":d?"fill":"stroke"}.`}function zd(l,s){return`Dropping ${Ye(l)} from channel "${s}" since it does not contain any data field, datum, value, or signal.`}function Ii(l,s,d){return`${l} dropped as it is incompatible with "${s}"${d?` when ${d}`:""}.`}function Ah(l){return`${l} encoding should be discrete (ordinal / nominal / binned).`}function C0(l){return`${l} encoding should be discrete (ordinal / nominal / binned) or use a discretizing scale (e.g. threshold).`}function Gd(l,s){return`Using discrete channel "${l}" to encode "${s}" field can be misleading as it does not encode ${s==="ordinal"?"order":"magnitude"}.`}function R0(l){return`Using unaggregated domain with raw field has no effect (${Ye(l)}).`}function Th(l){return`Unaggregated domain not applicable for "${l}" since it produces values outside the origin domain of the source data.`}function Ch(l){return`Unaggregated domain is currently unsupported for log scale (${Ye(l)}).`}function N0(l,s,d){return`${d}-scale's "${s}" is dropped as it does not work with ${l} scale.`}function Rh(l){return`The step for "${l}" is dropped because the ${l==="width"?"x":"y"} is continuous.`}let Nh="Domains that should be unioned has conflicting sort properties. Sort will be set to true.";function nc(l,s){return`Invalid ${l}: ${Ye(s)}.`}function jd(l){return`1D error band does not support ${l}.`}function Hd(l){return`Channel ${l} is required for "binned" bin.`}let I0=b.logger(b.Warn),ac=I0;function $e(){ac.warn(...arguments)}function Bs(l){if(l&&b.isObject(l)){for(let s of ts)if(s in l)return!0}return!1}let O0=["january","february","march","april","may","june","july","august","september","october","november","december"],D0=O0.map(l=>l.substr(0,3)),M0=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],y_=M0.map(l=>l.substr(0,3));function qd(l,s){let d=[];if(s&&l.day!==void 0&&be(l).length>1&&($e(function(h){return`Dropping day from datetime ${Ye(h)} as day cannot be combined with other units.`}(l)),delete(l=j(l)).day),l.year!==void 0?d.push(l.year):d.push(2012),l.month!==void 0){let h=s?function(y){if(At(y)&&(y=+y),b.isNumber(y))return y-1;{let w=y.toLowerCase(),S=O0.indexOf(w);if(S!==-1)return S;let A=w.substr(0,3),C=D0.indexOf(A);if(C!==-1)return C;throw new Error(nc("month",y))}}(l.month):l.month;d.push(h)}else if(l.quarter!==void 0){let h=s?function(y){if(At(y)&&(y=+y),b.isNumber(y))return y>4&&$e(nc("quarter",y)),y-1;throw new Error(nc("quarter",y))}(l.quarter):l.quarter;d.push(b.isNumber(h)?3*h:`${h}*3`)}else d.push(0);if(l.date!==void 0)d.push(l.date);else if(l.day!==void 0){let h=s?function(y){if(At(y)&&(y=+y),b.isNumber(y))return y%7;{let w=y.toLowerCase(),S=M0.indexOf(w);if(S!==-1)return S;let A=w.substr(0,3),C=y_.indexOf(A);if(C!==-1)return C;throw new Error(nc("day",y))}}(l.day):l.day;d.push(b.isNumber(h)?h+1:`${h}+1`)}else d.push(1);for(let h of["hours","minutes","seconds","milliseconds"]){let y=l[h];d.push(y===void 0?0:y)}return d}function Us(l){let s=qd(l,!0).join(", ");return l.utc?`utc(${s})`:`datetime(${s})`}let L0={year:1,quarter:1,month:1,week:1,day:1,dayofyear:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1},ts=be(L0);function Dr(l){return b.isObject(l)?l.binned:Ih(l)}function Ih(l){return l&&l.startsWith("binned")}function Wd(l){return l.startsWith("utc")}let F0={"year-month":"%b %Y ","year-month-date":"%b %d, %Y "};function rc(l){return ts.filter(s=>Dh(l,s))}function Oh(l){let s=rc(l);return s[s.length-1]}function Dh(l,s){let d=l.indexOf(s);return!(d<0)&&!(d>0&&s==="seconds"&&l.charAt(d-1)==="i")&&!(l.length>d+3&&s==="day"&&l.charAt(d+3)==="o")&&!(d>0&&s==="year"&&l.charAt(d-1)==="f")}function v_(l,s){let{end:d}=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{end:!1},h=kt(s),y=Wd(l)?"utc":"",w,S={};for(let C of ts)Dh(l,C)&&(S[C]=(A=C)==="quarter"?`(${y}quarter(${h})-1)`:`${y}${A}(${h})`,w=C);var A;return d&&(S[w]+="+1"),function(C){let L=qd(C,!1).join(", ");return C.utc?`utc(${L})`:`datetime(${L})`}(S)}function P0(l){if(l)return`timeUnitSpecifier(${Ye(rc(l))}, ${Ye(F0)})`}function zn(l){if(!l)return;let s;return b.isString(l)?s=Ih(l)?{unit:l.substring(6),binned:!0}:{unit:l}:b.isObject(l)&&(s={...l,...l.unit?{unit:l.unit}:{}}),Wd(s.unit)&&(s.utc=!0,s.unit=s.unit.substring(3)),s}function $0(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:y=>y,d=zn(l),h=Oh(d.unit);if(h&&h!=="day"){let y={year:2001,month:1,date:1,hours:0,minutes:0,seconds:0,milliseconds:0},{step:w,part:S}=Vd(h,d.step);return`${s(Us({...y,[S]:+y[S]+w}))} - ${s(Us(y))}`}}let E_={year:1,month:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1};function Vd(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;if(function(d){return!!E_[d]}(l))return{part:l,step:s};switch(l){case"day":case"dayofyear":return{part:"date",step:s};case"quarter":return{part:"month",step:3*s};case"week":return{part:"date",step:7*s}}}function Yd(l){return!!l?.field&&l.equal!==void 0}function zs(l){return!!l?.field&&l.lt!==void 0}function Gs(l){return!!l?.field&&l.lte!==void 0}function js(l){return!!l?.field&&l.gt!==void 0}function Mh(l){return!!l?.field&&l.gte!==void 0}function Kd(l){return!!(l?.field&&(b.isArray(l.range)&&l.range.length===2||Ke(l.range)))}function Xd(l){return!!l?.field&&(b.isArray(l.oneOf)||b.isArray(l.in))}function ql(l){return Xd(l)||Yd(l)||Kd(l)||zs(l)||js(l)||Gs(l)||Mh(l)}function ni(l,s){return au(l,{timeUnit:s,wrapTime:!0})}function Zd(l){let s=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],{field:d}=l,h=zn(l.timeUnit),{unit:y,binned:w}=h||{},S=Ge(l,{expr:"datum"}),A=y?`time(${w?S:v_(y,d)})`:S;if(Yd(l))return`${A}===${ni(l.equal,y)}`;if(zs(l))return`${A}<${ni(l.lt,y)}`;if(js(l))return`${A}>${ni(l.gt,y)}`;if(Gs(l))return`${A}<=${ni(l.lte,y)}`;if(Mh(l))return`${A}>=${ni(l.gte,y)}`;if(Xd(l))return`indexof([${function(C,L){return C.map(G=>ni(G,L))}(l.oneOf,y).join(",")}], ${A}) !== -1`;if(function(C){return!!C?.field&&C.valid!==void 0}(l))return ic(A,l.valid);if(Kd(l)){let{range:C}=l,L=Ke(C)?{signal:`${C.signal}[0]`}:C[0],G=Ke(C)?{signal:`${C.signal}[1]`}:C[1];if(L!==null&&G!==null&&s)return"inrange("+A+", ["+ni(L,y)+", "+ni(G,y)+"])";let H=[];return L!==null&&H.push(`${A} >= ${ni(L,y)}`),G!==null&&H.push(`${A} <= ${ni(G,y)}`),H.length>0?H.join(" && "):"true"}throw new Error(`Invalid field predicate: ${Ye(l)}`)}function ic(l){return!(arguments.length>1&&arguments[1]!==void 0)||arguments[1]?`isValid(${l}) && isFinite(+${l})`:`!isValid(${l}) || !isFinite(+${l})`}function oc(l){return ql(l)&&l.timeUnit?{...l,timeUnit:zn(l.timeUnit)}:l}function B0(l){return l==="quantitative"||l==="temporal"}function Wl(l){return l==="ordinal"||l==="nominal"}let ho="quantitative",Jd="ordinal",ns="temporal",Qd="nominal",Hs="geojson",zt={LINEAR:"linear",LOG:"log",POW:"pow",SQRT:"sqrt",SYMLOG:"symlog",IDENTITY:"identity",SEQUENTIAL:"sequential",TIME:"time",UTC:"utc",QUANTILE:"quantile",QUANTIZE:"quantize",THRESHOLD:"threshold",BIN_ORDINAL:"bin-ordinal",ORDINAL:"ordinal",POINT:"point",BAND:"band"},Lh={linear:"numeric",log:"numeric",pow:"numeric",sqrt:"numeric",symlog:"numeric",identity:"numeric",sequential:"numeric",time:"time",utc:"time",ordinal:"ordinal","bin-ordinal":"bin-ordinal",point:"ordinal-position",band:"ordinal-position",quantile:"discretizing",quantize:"discretizing",threshold:"discretizing"};function w_(l,s){let d=Lh[l],h=Lh[s];return d===h||d==="ordinal-position"&&h==="time"||h==="ordinal-position"&&d==="time"}let Lt={linear:0,log:1,pow:1,sqrt:1,symlog:1,identity:1,sequential:1,time:0,utc:0,point:10,band:11,ordinal:0,"bin-ordinal":0,quantile:0,quantize:0,threshold:0};function U0(l){return Lt[l]}let Vl=new Set(["linear","log","pow","sqrt","symlog"]),Yl=new Set([...Vl,"time","utc"]);function z0(l){return Vl.has(l)}let G0=new Set(["quantile","quantize","threshold"]),__=new Set([...Yl,...G0,"sequential","identity"]),k_=new Set(["ordinal","bin-ordinal","point","band"]);function Gn(l){return k_.has(l)}function Ga(l){return __.has(l)}function Mr(l){return Yl.has(l)}function Kl(l){return G0.has(l)}function j0(l){return l?.param}let{type:DA,domain:x_,range:MA,rangeMax:S_,rangeMin:LA,scheme:FA,...A_}={type:1,domain:1,domainMax:1,domainMin:1,domainMid:1,domainRaw:1,align:1,range:1,rangeMax:1,rangeMin:1,scheme:1,bins:1,reverse:1,round:1,clamp:1,nice:1,base:1,exponent:1,constant:1,interpolate:1,zero:1,padding:1,paddingInner:1,paddingOuter:1},T_=be(A_);function Fh(l,s){switch(s){case"type":case"domain":case"reverse":case"range":return!0;case"scheme":case"interpolate":return!["point","band","identity"].includes(l);case"bins":return!["point","band","identity","ordinal"].includes(l);case"round":return Mr(l)||l==="band"||l==="point";case"padding":case"rangeMin":case"rangeMax":return Mr(l)||["point","band"].includes(l);case"paddingOuter":case"align":return["point","band"].includes(l);case"paddingInner":return l==="band";case"domainMax":case"domainMid":case"domainMin":case"domainRaw":case"clamp":return Mr(l);case"nice":return Mr(l)||l==="quantize"||l==="threshold";case"exponent":return l==="pow";case"base":return l==="log";case"constant":return l==="symlog";case"zero":return Ga(l)&&!Z(["log","time","utc","threshold","quantile"],l)}}function H0(l,s){switch(s){case"interpolate":case"scheme":case"domainMid":return Jo(l)?void 0:`Cannot use the scale property "${s}" with non-color channel.`;case"align":case"type":case"bins":case"domain":case"domainMax":case"domainMin":case"domainRaw":case"range":case"base":case"exponent":case"constant":case"nice":case"padding":case"paddingInner":case"paddingOuter":case"rangeMax":case"rangeMin":case"reverse":case"round":case"clamp":case"zero":return}}let Aa={arc:"arc",area:"area",bar:"bar",image:"image",line:"line",point:"point",rect:"rect",rule:"rule",text:"text",tick:"tick",trail:"trail",circle:"circle",square:"square",geoshape:"geoshape"},Ph=Aa.arc,ef=Aa.area,tf=Aa.bar,C_=Aa.image,sc=Aa.line,nf=Aa.point,R_=Aa.rect,af=Aa.rule,q0=Aa.text,$h=Aa.tick,N_=Aa.trail,rf=Aa.circle,Bh=Aa.square,W0=Aa.geoshape;function as(l){return["line","area","trail"].includes(l)}function lc(l){return["rect","bar","image","arc"].includes(l)}let I_=new Set(be(Aa));function Oi(l){return l.type}let O_=["stroke","strokeWidth","strokeDash","strokeDashOffset","strokeOpacity","strokeJoin","strokeMiterLimit","fill","fillOpacity"],V0=be({color:1,filled:1,invalid:1,order:1,radius2:1,theta2:1,timeUnitBandSize:1,timeUnitBandPosition:1}),Uh=be({mark:1,arc:1,area:1,bar:1,circle:1,image:1,line:1,point:1,rect:1,rule:1,square:1,text:1,tick:1,trail:1,geoshape:1});function qs(l){return l&&l.band!=null}let D_={horizontal:["cornerRadiusTopRight","cornerRadiusBottomRight"],vertical:["cornerRadiusTopLeft","cornerRadiusTopRight"]},M_={binSpacing:1,continuousBandSize:5,minBandSize:.25,timeUnitBandPosition:.5},Y0={binSpacing:0,continuousBandSize:5,minBandSize:.25,timeUnitBandPosition:.5};function zh(l){let{channel:s,channelDef:d,markDef:h,scale:y,config:w}=l,S=jh(l);return Ue(d)&&!Ci(d.aggregate)&&y&&Mr(y.get("type"))?function(A){let{fieldDef:C,channel:L,markDef:G,ref:H,config:J}=A;return as(G.type)?H:jt("invalid",G,J)===null?[L_(C,L),H]:H}({fieldDef:d,channel:s,markDef:h,ref:S,config:w}):S}function L_(l,s){return{test:Gh(l,!0),...Ps(s)==="y"?{field:{group:"height"}}:{value:0}}}function Gh(l){let s=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return ic(b.isString(l)?l:Ge(l,{expr:"datum"}),!s)}function Ws(l,s,d,h){let y={};if(s&&(y.scale=s),Mi(l)){let{datum:w}=l;Bs(w)?y.signal=Us(w):Ke(w)?y.signal=w.signal:Qo(w)?y.signal=w.expr:y.value=w}else y.field=Ge(l,d);if(h){let{offset:w,band:S}=h;w&&(y.offset=w),S&&(y.band=S)}return y}function of(l){let{scaleName:s,fieldOrDatumDef:d,fieldOrDatumDef2:h,offset:y,startSuffix:w,endSuffix:S="end",bandPosition:A=.5}=l,C=!Ke(A)&&0<A&&A<1?"datum":void 0,L=Ge(d,{expr:C,suffix:w}),G=h!==void 0?Ge(h,{expr:C}):Ge(d,{suffix:S,expr:C}),H={};if(A===0||A===1){H.scale=s;let J=A===0?L:G;H.field=J}else{let J=Ke(A)?`(1-${A.signal}) * ${L} + ${A.signal} * ${G}`:`${1-A} * ${L} + ${A} * ${G}`;H.signal=`scale("${s}", ${J})`}return y&&(H.offset=y),H}function jh(l){let{channel:s,channelDef:d,channel2Def:h,markDef:y,config:w,scaleName:S,scale:A,stack:C,offset:L,defaultRef:G,bandPosition:H}=l;if(d){if(vt(d)){let J=A?.get("type");if(ha(d)){H??=Di({fieldDef:d,fieldDef2:h,markDef:y,config:w});let{bin:re,timeUnit:ee,type:se}=d;if(Wt(re)||H&&ee&&se===ns)return C?.impute?Ws(d,S,{binSuffix:"mid"},{offset:L}):H&&!Gn(J)?of({scaleName:S,fieldOrDatumDef:d,bandPosition:H,offset:L}):Ws(d,S,ru(d,s)?{binSuffix:"range"}:{},{offset:L});if(Bn(re)){if(Ue(h))return of({scaleName:S,fieldOrDatumDef:d,fieldOrDatumDef2:h,bandPosition:H,offset:L});$e(Hd(s===Jt?Kr:Ei))}}return Ws(d,S,Gn(J)?{binSuffix:"range"}:{},{offset:L,band:J==="band"?H??d.bandPosition??.5:void 0})}if(ur(d)){let J=L?{offset:L}:{};return{...Xl(s,d.value),...J}}}return b.isFunction(G)&&(G=G()),G&&{...G,...L?{offset:L}:{}}}function Xl(l,s){return Z(["x","x2"],l)&&s==="width"?{field:{group:"width"}}:Z(["y","y2"],l)&&s==="height"?{field:{group:"height"}}:rn(s)}function Vs(l){return l&&l!=="number"&&l!=="time"}function K0(l,s,d){return`${l}(${s}${d?`, ${Ye(d)}`:""})`}let F_=" \u2013 ";function Hh(l){let{fieldOrDatumDef:s,format:d,formatType:h,expr:y,normalizeStack:w,config:S}=l;if(Vs(h))return ai({fieldOrDatumDef:s,format:d,formatType:h,expr:y,config:S});let A=X0(s,y,w),C=Ql(s);if(d===void 0&&h===void 0&&S.customFormatTypes){if(C==="quantitative"){if(w&&S.normalizedNumberFormatType)return ai({fieldOrDatumDef:s,format:S.normalizedNumberFormat,formatType:S.normalizedNumberFormatType,expr:y,config:S});if(S.numberFormatType)return ai({fieldOrDatumDef:s,format:S.numberFormat,formatType:S.numberFormatType,expr:y,config:S})}if(C==="temporal"&&S.timeFormatType&&Ue(s)&&s.timeUnit===void 0)return ai({fieldOrDatumDef:s,format:S.timeFormat,formatType:S.timeFormatType,expr:y,config:S})}if(Rt(s)){let L=function(G){let{field:H,timeUnit:J,format:re,formatType:ee,rawTimeFormat:se,isUTCScale:de}=G;return!J||re?!J&&ee?`${ee}(${H}, '${re}')`:(re=b.isString(re)?re:se,`${de?"utc":"time"}Format(${H}, '${re}')`):function(fe,ge,we){if(!fe)return;let Te=P0(fe);return`${we||Wd(fe)?"utc":"time"}Format(${ge}, ${Te})`}(J,H,de)}({field:A,timeUnit:Ue(s)?zn(s.timeUnit)?.unit:void 0,format:d,formatType:S.timeFormatType,rawTimeFormat:S.timeFormat,isUTCScale:Li(s)&&s.scale?.type===zt.UTC});return L?{signal:L}:void 0}return d=sf({type:C,specifiedFormat:d,config:S,normalizeStack:w}),Ue(s)&&Wt(s.bin)?{signal:mo(A,Ge(s,{expr:y,binSuffix:"end"}),d,h,S)}:d||Ql(s)==="quantitative"?{signal:`${qh(A,d)}`}:{signal:`isValid(${A}) ? ${A} : ""+${A}`}}function X0(l,s,d){return Ue(l)?d?`${Ge(l,{expr:s,suffix:"end"})}-${Ge(l,{expr:s,suffix:"start"})}`:Ge(l,{expr:s}):function(h){let{datum:y}=h;return Bs(y)?Us(y):`${Ye(y)}`}(l)}function ai(l){let{fieldOrDatumDef:s,format:d,formatType:h,expr:y,normalizeStack:w,config:S,field:A}=l;return A??=X0(s,y,w),A!=="datum.value"&&Ue(s)&&Wt(s.bin)?{signal:mo(A,Ge(s,{expr:y,binSuffix:"end"}),d,h,S)}:{signal:K0(h,A,d)}}function Z0(l,s,d,h,y,w){if(!b.isString(h)||!Vs(h)){if(d===void 0&&h===void 0&&y.customFormatTypes&&Ql(l)==="quantitative"&&(y.normalizedNumberFormatType&&eu(l)&&l.stack==="normalize"||y.numberFormatType))return;if(eu(l)&&l.stack==="normalize"&&y.normalizedNumberFormat)return sf({type:"quantitative",config:y,normalizeStack:!0});if(Rt(l)){let S=Ue(l)?zn(l.timeUnit)?.unit:void 0;return S===void 0&&y.customFormatTypes&&y.timeFormatType?void 0:function(A){let{specifiedFormat:C,timeUnit:L,config:G,omitTimeFormatConfig:H}=A;return C||(L?{signal:P0(L)}:H?void 0:G.timeFormat)}({specifiedFormat:d,timeUnit:S,config:y,omitTimeFormatConfig:w})}return sf({type:s,specifiedFormat:d,config:y})}}function J0(l,s,d){return l&&(Ke(l)||l==="number"||l==="time")?l:Rt(s)&&d!=="time"&&d!=="utc"?Ue(s)&&zn(s?.timeUnit)?.utc?"utc":"time":void 0}function sf(l){let{type:s,specifiedFormat:d,config:h,normalizeStack:y}=l;return b.isString(d)?d:s===ho?y?h.normalizedNumberFormat:h.numberFormat:void 0}function qh(l,s){return`format(${l}, "${s||""}")`}function Wh(l,s,d,h){return Vs(d)?K0(d,l,s):qh(l,(b.isString(s)?s:void 0)??h.numberFormat)}function mo(l,s,d,h,y){if(d===void 0&&h===void 0&&y.customFormatTypes&&y.numberFormatType)return mo(l,s,y.numberFormat,y.numberFormatType,y);let w=Wh(l,d,h,y),S=Wh(s,d,h,y);return`${ic(l,!1)} ? "null" : ${w} + "${F_}" + ${S}`}let uc="min",Vh={x:1,y:1,color:1,fill:1,stroke:1,strokeWidth:1,size:1,shape:1,fillOpacity:1,strokeOpacity:1,opacity:1,text:1};function lf(l){return l in Vh}function Yh(l){return!!l?.encoding}function ri(l){return l&&(l.op==="count"||!!l.field)}function cc(l){return l&&b.isArray(l)}function Zl(l){return"row"in l||"column"in l}function uf(l){return!!l&&"header"in l}function dc(l){return"facet"in l}function Kh(l){let{field:s,timeUnit:d,bin:h,aggregate:y}=l;return{...d?{timeUnit:d}:{},...h?{bin:h}:{},...y?{aggregate:y}:{},field:s}}function Ys(l){return"sort"in l}function Di(l){let{fieldDef:s,fieldDef2:d,markDef:h,config:y}=l;if(vt(s)&&s.bandPosition!==void 0)return s.bandPosition;if(Ue(s)){let{timeUnit:w,bin:S}=s;if(w&&!d)return Ua("timeUnitBandPosition",h,y);if(Wt(S))return .5}}function Xh(l){let{channel:s,fieldDef:d,fieldDef2:h,markDef:y,config:w,scaleType:S,useVlSizeChannel:A}=l,C=ka(s),L=jt(A?"size":C,y,w,{vgChannel:C});if(L!==void 0)return L;if(Ue(d)){let{timeUnit:G,bin:H}=d;if(G&&!h)return{band:Ua("timeUnitBandSize",y,w)};if(Wt(H)&&!Gn(S))return{band:1}}return lc(y.type)?S?Gn(S)?w[y.type]?.discreteBandSize||{band:1}:w[y.type]?.continuousBandSize:w[y.type]?.discreteBandSize:void 0}function cf(l,s,d,h){return!!(Wt(l.bin)||l.timeUnit&&ha(l)&&l.type==="temporal")&&Di({fieldDef:l,fieldDef2:s,markDef:d,config:h})!==void 0}function Q0(l){return l&&!!l.sort&&!l.field}function df(l){return l&&"condition"in l}function ff(l){let s=l?.condition;return!!s&&!b.isArray(s)&&Ue(s)}function Jl(l){let s=l?.condition;return!!s&&!b.isArray(s)&&vt(s)}function Ue(l){return l&&(!!l.field||l.aggregate==="count")}function Ql(l){return l?.type}function Mi(l){return l&&"datum"in l}function rs(l){return ha(l)&&!tu(l)||pf(l)}function ey(l){return ha(l)&&l.type==="quantitative"&&!l.bin||pf(l)}function pf(l){return Mi(l)&&b.isNumber(l.datum)}function vt(l){return Ue(l)||Mi(l)}function ha(l){return l&&("field"in l||l.aggregate==="count")&&"type"in l}function ur(l){return l&&"value"in l&&"value"in l}function Li(l){return l&&("scale"in l||"sort"in l)}function eu(l){return l&&("axis"in l||"stack"in l||"impute"in l)}function Zh(l){return l&&"legend"in l}function Jh(l){return l&&("format"in l||"formatType"in l)}function ty(l){return Q(l,["legend","axis","header","scale"])}function Ge(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=l.field,h=s.prefix,y=s.suffix,w="";if(function(S){return S.aggregate==="count"}(l))d=yt("count");else{let S;if(!s.nofn)if(function(A){return"op"in A}(l))S=l.op;else{let{bin:A,aggregate:C,timeUnit:L}=l;Wt(A)?(S=Ri(A),y=(s.binSuffix??"")+(s.suffix??"")):C?Ti(C)?(w=`["${d}"]`,d=`argmax_${C.argmax}`):Qr(C)?(w=`["${d}"]`,d=`argmin_${C.argmin}`):S=String(C):L&&!Dr(L)&&(S=function(G){let{utc:H,...J}=zn(G);return J.unit?(H?"utc":"")+be(J).map(re=>Pe(`${re==="unit"?"":`_${re}_`}${J[re]}`)).join(""):(H?"utc":"")+"timeunit"+be(J).map(re=>Pe(`_${re}_${J[re]}`)).join("")}(L),y=(!["range","mid"].includes(s.binSuffix)&&s.binSuffix||"")+(s.suffix??""))}S&&(d=d?`${S}_${d}`:S)}return y&&(d=`${d}_${y}`),h&&(d=`${h}_${d}`),s.forAs?St(d):s.expr?an(d,s.expr)+w:Gt(d)+w}function tu(l){switch(l.type){case"nominal":case"ordinal":case"geojson":return!0;case"quantitative":return Ue(l)&&!!l.bin;case"temporal":return!1}throw new Error(Ud(l.type))}let ny=(l,s)=>{switch(s.fieldTitle){case"plain":return l.field;case"functional":return function(d){let{aggregate:h,bin:y,timeUnit:w,field:S}=d;if(Ti(h))return`${S} for argmax(${h.argmax})`;if(Qr(h))return`${S} for argmin(${h.argmin})`;let A=w&&!Dr(w)?zn(w):void 0,C=h||A?.unit||A?.maxbins&&"timeunit"||Wt(y)&&"bin";return C?`${C.toUpperCase()}(${S})`:S}(l);default:return function(d,h){let{field:y,bin:w,timeUnit:S,aggregate:A}=d;if(A==="count")return h.countTitle;if(Wt(w))return`${y} (binned)`;if(S&&!Dr(S)){let C=zn(S)?.unit;if(C)return`${y} (${rc(C).join("-")})`}else if(A)return Ti(A)?`${y} for max ${A.argmax}`:Qr(A)?`${y} for min ${A.argmin}`:`${gt(A)} of ${y}`;return y}(l,s)}},Qh=ny;function fc(l){Qh=l}function is(l,s,d){let{allowDisabling:h,includeDefault:y=!0}=d,w=hf(l)?.title;if(!Ue(l))return w??l.title;let S=l,A=y?mf(S,s):void 0;return h?Ve(w,S.title,A):w??S.title??A}function hf(l){return eu(l)&&l.axis?l.axis:Zh(l)&&l.legend?l.legend:uf(l)&&l.header?l.header:void 0}function mf(l,s){return Qh(l,s)}function Ks(l){if(Jh(l)){let{format:s,formatType:d}=l;return{format:s,formatType:d}}{let s=hf(l)??{},{format:d,formatType:h}=s;return{format:d,formatType:h}}}function cr(l){return Ue(l)?l:ff(l)?l.condition:void 0}function mn(l){return vt(l)?l:Jl(l)?l.condition:void 0}function em(l,s,d){let h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return b.isString(l)||b.isNumber(l)||b.isBoolean(l)?($e(function(y,w,S){return`Channel ${y} is a ${w}. Converted to {value: ${Ye(S)}}.`}(s,b.isString(l)?"string":b.isNumber(l)?"number":"boolean",l)),{value:l}):vt(l)?gf(l,s,d,h):Jl(l)?{...l,condition:gf(l.condition,s,d,h)}:l}function gf(l,s,d,h){if(Jh(l)){let{format:y,formatType:w,...S}=l;if(Vs(w)&&!d.customFormatTypes)return $e(Bd(s)),gf(S,s,d,h)}else{let y=eu(l)?"axis":Zh(l)?"legend":uf(l)?"header":null;if(y&&l[y]){let{format:w,formatType:S,...A}=l[y];if(Vs(S)&&!d.customFormatTypes)return $e(Bd(s)),gf({...l,[y]:A},s,d,h)}}return Ue(l)?nu(l,s,h):function(y){let w=y.type;if(w)return y;let{datum:S}=y;return w=b.isNumber(S)?"quantitative":b.isString(S)?"nominal":Bs(S)?"temporal":void 0,{...y,type:w}}(l)}function nu(l,s){let{compositeMark:d=!1}=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},{aggregate:h,timeUnit:y,bin:w,field:S}=l,A={...l};if(d||!h||wn(h)||Ti(h)||Qr(h)||($e(function(C){return`Invalid aggregation operator "${C}".`}(h)),delete A.aggregate),y&&(A.timeUnit=zn(y)),S&&(A.field=`${S}`),Wt(w)&&(A.bin=at(w,s)),Bn(w)&&!sn(s)&&$e(function(C){return`Channel ${C} should not be used with "binned" bin.`}(s)),ha(A)){let{type:C}=A,L=function(G){if(G)switch(G=G.toLowerCase()){case"q":case ho:return"quantitative";case"t":case ns:return"temporal";case"o":case Jd:return"ordinal";case"n":case Qd:return"nominal";case Hs:return"geojson"}}(C);C!==L&&(A.type=L),C!=="quantitative"&&Ci(h)&&($e(function(G,H){return`Invalid field type "${G}" for aggregate: "${H}", using "quantitative" instead.`}(C,h)),A.type="quantitative")}else if(!xi(s)){let C=function(L,G){switch(G){case"latitude":case"longitude":return"quantitative";case"row":case"column":case"facet":case"shape":case"strokeDash":return"nominal";case"order":return"ordinal"}if(Ys(L)&&b.isArray(L.sort))return"ordinal";let{aggregate:H,bin:J,timeUnit:re}=L;if(re)return"temporal";if(J||H&&!Ti(H)&&!Qr(H))return"quantitative";if(Li(L)&&L.scale?.type)switch(Lh[L.scale.type]){case"numeric":case"discretizing":return"quantitative";case"time":return"temporal"}return"nominal"}(A,s);A.type=C}if(ha(A)){let{compatible:C,warning:L}=function(G,H){let J=G.type;if(J==="geojson"&&H!=="shape")return{compatible:!1,warning:`Channel ${H} should not be used with a geojson data.`};switch(H){case Je:case Yr:case Ml:return tu(G)?Xs:{compatible:!1,warning:Ah(H)};case Jt:case Pn:case dn:case Ko:case Me:case _a:case Xr:case Ll:case uo:case Vu:case Zr:case it:case Fl:case Pa:case nr:case pt:case Id:return Xs;case Fa:case ar:case et:case ca:return J!==ho?{compatible:!1,warning:`Channel ${H} should be used with a quantitative field only, not ${G.type} field.`}:Xs;case _i:case Mt:case ki:case lo:case wi:case so:case $n:case Kr:case Ei:return J!=="nominal"||G.sort?Xs:{compatible:!1,warning:`Channel ${H} should not be used with an unsorted discrete field.`};case En:case Xo:return tu(G)||Li(re=G)&&Kl(re.scale?.type)?Xs:{compatible:!1,warning:C0(H)};case Fs:return G.type!=="nominal"||"sort"in G?Xs:{compatible:!1,warning:"Channel order is inappropriate for nominal field, which has no inherent order."}}var re}(A,s)||{};C===!1&&$e(L)}if(Ys(A)&&b.isString(A.sort)){let{sort:C}=A;if(lf(C))return{...A,sort:{encoding:C}};let L=C.substr(1);if(C.charAt(0)==="-"&&lf(L))return{...A,sort:{encoding:L,order:"descending"}}}if(uf(A)){let{header:C}=A;if(C){let{orient:L,...G}=C;if(L)return{...A,header:{...G,labelOrient:C.labelOrient||L,titleOrient:C.titleOrient||L}}}}return A}function at(l,s){return b.isBoolean(l)?{maxbins:ec(s)}:l==="binned"?{binned:!0}:l.maxbins||l.step?l:{...l,maxbins:ec(s)}}let Xs={compatible:!0};function Rt(l){let{formatType:s}=Ks(l);return s==="time"||!s&&(d=l)&&(d.type==="temporal"||Ue(d)&&!!d.timeUnit);var d}function au(l,s){let{timeUnit:d,type:h,wrapTime:y,undefinedIfExprNotRequired:w}=s,S=d&&zn(d)?.unit,A,C=S||h==="temporal";return Qo(l)?A=l.expr:Ke(l)?A=l.signal:Bs(l)?(C=!0,A=Us(l)):(b.isString(l)||b.isNumber(l))&&C&&(A=`datetime(${Ye(l)})`,function(L){return!!L0[L]}(S)&&(b.isNumber(l)&&l<1e4||b.isString(l)&&isNaN(Date.parse(l)))&&(A=Us({[S]:l}))),A?y&&C?`time(${A})`:A:w?void 0:Ye(l)}function pc(l,s){let{type:d}=l;return s.map(h=>{let y=au(h,{timeUnit:Ue(l)&&!Dr(l.timeUnit)?l.timeUnit:void 0,type:d,undefinedIfExprNotRequired:!0});return y!==void 0?{signal:y}:h})}function ru(l,s){return Wt(l.bin)?Rr(s)&&["ordinal","nominal"].includes(l.type):(console.warn("Only call this method for binned field defs."),!1)}let os={labelAlign:{part:"labels",vgProp:"align"},labelBaseline:{part:"labels",vgProp:"baseline"},labelColor:{part:"labels",vgProp:"fill"},labelFont:{part:"labels",vgProp:"font"},labelFontSize:{part:"labels",vgProp:"fontSize"},labelFontStyle:{part:"labels",vgProp:"fontStyle"},labelFontWeight:{part:"labels",vgProp:"fontWeight"},labelOpacity:{part:"labels",vgProp:"opacity"},labelOffset:null,labelPadding:null,gridColor:{part:"grid",vgProp:"stroke"},gridDash:{part:"grid",vgProp:"strokeDash"},gridDashOffset:{part:"grid",vgProp:"strokeDashOffset"},gridOpacity:{part:"grid",vgProp:"opacity"},gridWidth:{part:"grid",vgProp:"strokeWidth"},tickColor:{part:"ticks",vgProp:"stroke"},tickDash:{part:"ticks",vgProp:"strokeDash"},tickDashOffset:{part:"ticks",vgProp:"strokeDashOffset"},tickOpacity:{part:"ticks",vgProp:"opacity"},tickSize:null,tickWidth:{part:"ticks",vgProp:"strokeWidth"}};function iu(l){return l?.condition}let ss=["domain","grid","labels","ticks","title"],bf={grid:"grid",gridCap:"grid",gridColor:"grid",gridDash:"grid",gridDashOffset:"grid",gridOpacity:"grid",gridScale:"grid",gridWidth:"grid",orient:"main",bandPosition:"both",aria:"main",description:"main",domain:"main",domainCap:"main",domainColor:"main",domainDash:"main",domainDashOffset:"main",domainOpacity:"main",domainWidth:"main",format:"main",formatType:"main",labelAlign:"main",labelAngle:"main",labelBaseline:"main",labelBound:"main",labelColor:"main",labelFlush:"main",labelFlushOffset:"main",labelFont:"main",labelFontSize:"main",labelFontStyle:"main",labelFontWeight:"main",labelLimit:"main",labelLineHeight:"main",labelOffset:"main",labelOpacity:"main",labelOverlap:"main",labelPadding:"main",labels:"main",labelSeparation:"main",maxExtent:"main",minExtent:"main",offset:"both",position:"main",tickCap:"main",tickColor:"main",tickDash:"main",tickDashOffset:"main",tickMinStep:"both",tickOffset:"both",tickOpacity:"main",tickRound:"both",ticks:"main",tickSize:"main",tickWidth:"both",title:"main",titleAlign:"main",titleAnchor:"main",titleAngle:"main",titleBaseline:"main",titleColor:"main",titleFont:"main",titleFontSize:"main",titleFontStyle:"main",titleFontWeight:"main",titleLimit:"main",titleLineHeight:"main",titleOpacity:"main",titlePadding:"main",titleX:"main",titleY:"main",encode:"both",scale:"both",tickBand:"both",tickCount:"both",tickExtra:"both",translate:"both",values:"both",zindex:"both"},hc={orient:1,aria:1,bandPosition:1,description:1,domain:1,domainCap:1,domainColor:1,domainDash:1,domainDashOffset:1,domainOpacity:1,domainWidth:1,format:1,formatType:1,grid:1,gridCap:1,gridColor:1,gridDash:1,gridDashOffset:1,gridOpacity:1,gridWidth:1,labelAlign:1,labelAngle:1,labelBaseline:1,labelBound:1,labelColor:1,labelFlush:1,labelFlushOffset:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelLineHeight:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labels:1,labelSeparation:1,maxExtent:1,minExtent:1,offset:1,position:1,tickBand:1,tickCap:1,tickColor:1,tickCount:1,tickDash:1,tickDashOffset:1,tickExtra:1,tickMinStep:1,tickOffset:1,tickOpacity:1,tickRound:1,ticks:1,tickSize:1,tickWidth:1,title:1,titleAlign:1,titleAnchor:1,titleAngle:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleLineHeight:1,titleOpacity:1,titlePadding:1,titleX:1,titleY:1,translate:1,values:1,zindex:1},P_={...hc,style:1,labelExpr:1,encoding:1};function ay(l){return!!P_[l]}let Vt=be({axis:1,axisBand:1,axisBottom:1,axisDiscrete:1,axisLeft:1,axisPoint:1,axisQuantitative:1,axisRight:1,axisTemporal:1,axisTop:1,axisX:1,axisXBand:1,axisXDiscrete:1,axisXPoint:1,axisXQuantitative:1,axisXTemporal:1,axisY:1,axisYBand:1,axisYDiscrete:1,axisYPoint:1,axisYQuantitative:1,axisYTemporal:1});function Fi(l){return"mark"in l}class yf{constructor(s,d){this.name=s,this.run=d}hasMatchingType(s){return!!Fi(s)&&(Oi(d=s.mark)?d.type:d)===this.name;var d}}function Pi(l,s){let d=l&&l[s];return!!d&&(b.isArray(d)?te(d,h=>!!h.field):Ue(d)||ff(d))}function go(l,s){let d=l&&l[s];return!!d&&(b.isArray(d)?te(d,h=>!!h.field):Ue(d)||Mi(d)||Jl(d))}function ry(l,s){if(sn(s)){let d=l[s];if((Ue(d)||Mi(d))&&(Wl(d.type)||Ue(d)&&d.timeUnit))return go(l,$l(s))}return!1}function tm(l){return te(c0,s=>{if(Pi(l,s)){let d=l[s];if(b.isArray(d))return te(d,h=>!!h.aggregate);{let h=cr(d);return h&&!!h.aggregate}}return!1})}function iy(l,s){let d=[],h=[],y=[],w=[],S={};return mc(l,(A,C)=>{if(Ue(A)){let{field:L,aggregate:G,bin:H,timeUnit:J,...re}=A;if(G||J||H){let ee=hf(A),se=ee?.title,de=Ge(A,{forAs:!0}),fe={...se?[]:{title:is(A,s,{allowDisabling:!0})},...re,field:de};if(G){let ge;if(Ti(G)?(ge="argmax",de=Ge({op:"argmax",field:G.argmax},{forAs:!0}),fe.field=`${de}.${L}`):Qr(G)?(ge="argmin",de=Ge({op:"argmin",field:G.argmin},{forAs:!0}),fe.field=`${de}.${L}`):G!=="boxplot"&&G!=="errorbar"&&G!=="errorband"&&(ge=G),ge){let we={op:ge,as:de};L&&(we.field=L),w.push(we)}}else if(d.push(de),ha(A)&&Wt(H)){if(h.push({bin:H,field:L,as:de}),d.push(Ge(A,{binSuffix:"end"})),ru(A,C)&&d.push(Ge(A,{binSuffix:"range"})),sn(C)){let ge={field:`${de}_end`};S[`${C}2`]=ge}fe.bin="binned",xi(C)||(fe.type=ho)}else if(J&&!Dr(J)){y.push({timeUnit:J,field:L,as:de});let ge=ha(A)&&A.type!==ns&&"time";ge&&(C===Ll||C===Zr?fe.formatType=ge:function(we){return!!Ai[we]}(C)?fe.legend={formatType:ge,...fe.legend}:sn(C)&&(fe.axis={formatType:ge,...fe.axis}))}S[C]=fe}else d.push(L),S[C]=l[C]}else S[C]=l[C]}),{bins:h,timeUnits:y,aggregate:w,groupby:d,encoding:S}}function vf(l,s,d){let h=wh(s,d);if(!h)return!1;if(h==="binned"){let y=l[s===Kr?Jt:Pn];return!!(Ue(y)&&Ue(l[s])&&Bn(y.bin))}return!0}function ii(l,s){let d={};for(let h of be(l)){let y=em(l[h],h,s,{compositeMark:!0});d[h]=y}return d}function mc(l,s,d){if(l)for(let h of be(l)){let y=l[h];if(b.isArray(y))for(let w of y)s.call(d,w,h);else s.call(d,y,h)}}function nm(l,s){return be(s).reduce((d,h)=>{switch(h){case Jt:case Pn:case it:case Id:case Fl:case Kr:case Ei:case dn:case Ko:case nr:case so:case pt:case $n:case et:case Fa:case ca:case ar:case Ll:case En:case Pa:case Zr:return d;case Fs:if(l==="line"||l==="trail")return d;case uo:case Vu:{let y=s[h];if(b.isArray(y)||Ue(y))for(let w of b.array(y))w.aggregate||d.push(Ge(w,{}));return d}case wi:if(l==="trail")return d;case Me:case _a:case Xr:case _i:case Mt:case ki:case Xo:case lo:{let y=cr(s[h]);return y&&!y.aggregate&&d.push(Ge(y,{})),d}}},[])}function ou(l,s,d){let h=!(arguments.length>3&&arguments[3]!==void 0)||arguments[3];return"tooltip"in d?{tooltip:d.tooltip}:{tooltip:[...l.map(y=>{let{fieldPrefix:w,titlePrefix:S}=y,A=h?` of ${gc(s)}`:"";return{field:w+s.field,type:s.type,title:Ke(S)?{signal:`${S}"${escape(A)}"`}:S+A}}),...Ae(function(y){let w=[];for(let S of be(y))if(Pi(y,S)){let A=y[S],C=b.array(A);for(let L of C)Ue(L)?w.push(L):ff(L)&&w.push(L.condition)}return w}(d).map(ty),ae)]}}function gc(l){let{title:s,field:d}=l;return Ve(s,d)}function Ef(l,s,d,h,y){let{scale:w,axis:S}=d;return A=>{let{partName:C,mark:L,positionPrefix:G,endPositionPrefix:H,extraEncoding:J={}}=A,re=gc(d);return wf(l,C,y,{mark:L,encoding:{[s]:{field:`${G}_${d.field}`,type:d.type,...re!==void 0?{title:re}:{},...w!==void 0?{scale:w}:{},...S!==void 0?{axis:S}:{}},...b.isString(H)?{[`${s}2`]:{field:`${H}_${d.field}`}}:{},...h,...J}})}}function wf(l,s,d,h){let{clip:y,color:w,opacity:S}=l,A=l.type;return l[s]||l[s]===void 0&&d[s]?[{...h,mark:{...d[s],...y?{clip:y}:{},...w?{color:w}:{},...S?{opacity:S}:{},...Oi(h.mark)?h.mark:{type:h.mark},style:`${A}-${String(s)}`,...b.isBoolean(l[s])?{}:l[s]}}]:[]}function oy(l,s,d){let{encoding:h}=l,y=s==="vertical"?"y":"x",w=h[y],S=h[`${y}2`],A=h[`${y}Error`],C=h[`${y}Error2`];return{continuousAxisChannelDef:bc(w,d),continuousAxisChannelDef2:bc(S,d),continuousAxisChannelDefError:bc(A,d),continuousAxisChannelDefError2:bc(C,d),continuousAxis:y}}function bc(l,s){if(l?.aggregate){let{aggregate:d,...h}=l;return d!==s&&$e(function(y,w){return`Continuous axis should not have customized aggregation function ${y}; ${w} already agregates the axis.`}(d,s)),h}return l}function Zs(l,s){let{mark:d,encoding:h}=l,{x:y,y:w}=h;if(Oi(d)&&d.orient)return d.orient;if(rs(y)){if(rs(w)){let S=Ue(y)&&y.aggregate,A=Ue(w)&&w.aggregate;if(S||A!==s){if(A||S!==s){if(S===s&&A===s)throw new Error("Both x and y cannot have aggregate");return Rt(w)&&!Rt(y)?"horizontal":"vertical"}return"horizontal"}return"vertical"}return"horizontal"}if(rs(w))return"vertical";throw new Error(`Need a valid continuous axis for ${s}s`)}let ls="boxplot",xe=new yf(ls,am);function Js(l){return b.isNumber(l)?"tukey":l}function am(l,s){let{config:d}=s;l={...l,encoding:ii(l.encoding,d)};let{mark:h,encoding:y,params:w,projection:S,...A}=l,C=Oi(h)?h:{type:h};w&&$e(za("boxplot"));let L=C.extent??d.boxplot.extent,G=jt("size",C,d),H=C.invalid,J=Js(L),{bins:re,timeUnits:ee,transform:se,continuousAxisChannelDef:de,continuousAxis:fe,groupby:ge,aggregate:we,encodingWithoutContinuousAxis:Te,ticksOrient:Fe,boxOrient:He,customTooltipWithoutAggregatedField:tt}=function(id,qg,Io){let Au=Zs(id,ls),{continuousAxisChannelDef:Wg,continuousAxis:Vg}=oy(id,Au,ls),bn=Wg.field,xs=Js(qg),od=[...rm(bn),{op:"median",field:bn,as:`mid_box_${bn}`},{op:"min",field:bn,as:(xs==="min-max"?"lower_whisker_":"min_")+bn},{op:"max",field:bn,as:(xs==="min-max"?"upper_whisker_":"max_")+bn}],Cp=xs==="min-max"||xs==="tukey"?[]:[{calculate:`datum["upper_box_${bn}"] - datum["lower_box_${bn}"]`,as:`iqr_${bn}`},{calculate:`min(datum["upper_box_${bn}"] + datum["iqr_${bn}"] * ${qg}, datum["max_${bn}"])`,as:`upper_whisker_${bn}`},{calculate:`max(datum["lower_box_${bn}"] - datum["iqr_${bn}"] * ${qg}, datum["min_${bn}"])`,as:`lower_whisker_${bn}`}],{[Vg]:PA,...c1}=id.encoding,{customTooltipWithoutAggregatedField:d1,filteredEncoding:f1}=function(Rn){let{tooltip:Oo,...gl}=Rn;if(!Oo)return{filteredEncoding:gl};let bl,eo;if(b.isArray(Oo)){for(let yl of Oo)yl.aggregate?(bl||(bl=[]),bl.push(yl)):(eo||(eo=[]),eo.push(yl));bl&&(gl.tooltip=bl)}else Oo.aggregate?gl.tooltip=Oo:eo=Oo;return b.isArray(eo)&&eo.length===1&&(eo=eo[0]),{customTooltipWithoutAggregatedField:eo,filteredEncoding:gl}}(c1),{bins:mv,timeUnits:gv,aggregate:bv,groupby:Rp,encoding:Tu}=iy(f1,Io),yv=Au==="vertical"?"horizontal":"vertical",vv=Au,Yg=[...mv,...gv,{aggregate:[...bv,...od],groupby:Rp},...Cp];return{bins:mv,timeUnits:gv,transform:Yg,groupby:Rp,aggregate:bv,continuousAxisChannelDef:Wg,continuousAxis:Vg,encodingWithoutContinuousAxis:Tu,ticksOrient:yv,boxOrient:vv,customTooltipWithoutAggregatedField:d1}}(l,L,d),{color:ut,size:Qe,...Xe}=Te,xt=id=>Ef(C,fe,de,id,d.boxplot),$t=xt(Xe),Mn=xt(Te),_n=xt({...Xe,...Qe?{size:Qe}:{}}),kn=ou([{fieldPrefix:J==="min-max"?"upper_whisker_":"max_",titlePrefix:"Max"},{fieldPrefix:"upper_box_",titlePrefix:"Q3"},{fieldPrefix:"mid_box_",titlePrefix:"Median"},{fieldPrefix:"lower_box_",titlePrefix:"Q1"},{fieldPrefix:J==="min-max"?"lower_whisker_":"min_",titlePrefix:"Min"}],de,Te),Bt={type:"tick",color:"black",opacity:1,orient:Fe,invalid:H,aria:!1},It=J==="min-max"?kn:ou([{fieldPrefix:"upper_whisker_",titlePrefix:"Upper Whisker"},{fieldPrefix:"lower_whisker_",titlePrefix:"Lower Whisker"}],de,Te),gn=[...$t({partName:"rule",mark:{type:"rule",invalid:H,aria:!1},positionPrefix:"lower_whisker",endPositionPrefix:"lower_box",extraEncoding:It}),...$t({partName:"rule",mark:{type:"rule",invalid:H,aria:!1},positionPrefix:"upper_box",endPositionPrefix:"upper_whisker",extraEncoding:It}),...$t({partName:"ticks",mark:Bt,positionPrefix:"lower_whisker",extraEncoding:It}),...$t({partName:"ticks",mark:Bt,positionPrefix:"upper_whisker",extraEncoding:It})],Cn=[...J!=="tukey"?gn:[],...Mn({partName:"box",mark:{type:"bar",...G?{size:G}:{},orient:He,invalid:H,ariaRoleDescription:"box"},positionPrefix:"lower_box",endPositionPrefix:"upper_box",extraEncoding:kn}),..._n({partName:"median",mark:{type:"tick",invalid:H,...b.isObject(d.boxplot.median)&&d.boxplot.median.color?{color:d.boxplot.median.color}:{},...G?{size:G}:{},orient:Fe,aria:!1},positionPrefix:"mid_box",extraEncoding:kn})];if(J==="min-max")return{...A,transform:(A.transform??[]).concat(se),layer:Cn};let un=`datum["lower_box_${de.field}"]`,Na=`datum["upper_box_${de.field}"]`,Ia=`(${Na} - ${un})`,$r=`${un} - ${L} * ${Ia}`,Yn=`${Na} + ${L} * ${Ia}`,oa=`datum["${de.field}"]`,on={joinaggregate:rm(de.field),groupby:ge},wt={transform:[{filter:`(${$r} <= ${oa}) && (${oa} <= ${Yn})`},{aggregate:[{op:"min",field:de.field,as:`lower_whisker_${de.field}`},{op:"max",field:de.field,as:`upper_whisker_${de.field}`},{op:"min",field:`lower_box_${de.field}`,as:`lower_box_${de.field}`},{op:"max",field:`upper_box_${de.field}`,as:`upper_box_${de.field}`},...we],groupby:ge}],layer:gn},{tooltip:Ya,...ks}=Xe,{scale:Qi,axis:Su}=de,Ka=gc(de),hr=Q(Su,["title"]),ma=wf(C,"outliers",d.boxplot,{transform:[{filter:`(${oa} < ${$r}) || (${oa} > ${Yn})`}],mark:"point",encoding:{[fe]:{field:de.field,type:de.type,...Ka!==void 0?{title:Ka}:{},...Qi!==void 0?{scale:Qi}:{},...ye(hr)?{}:{axis:hr}},...ks,...ut?{color:ut}:{},...tt?{tooltip:tt}:{}}})[0],hi,No=[...re,...ee,on];return ma?hi={transform:No,layer:[ma,wt]}:(hi=wt,hi.transform.unshift(...No)),{...A,layer:[hi,{transform:se,layer:Cn}]}}function rm(l){return[{op:"q1",field:l,as:`lower_box_${l}`},{op:"q3",field:l,as:`upper_box_${l}`}]}let _f="errorbar",im=new yf(_f,kf);function kf(l,s){let{config:d}=s;l={...l,encoding:ii(l.encoding,d)};let{transform:h,continuousAxisChannelDef:y,continuousAxis:w,encodingWithoutContinuousAxis:S,ticksOrient:A,markDef:C,outerSpec:L,tooltipEncoding:G}=sm(l,_f,d);delete S.size;let H=Ef(C,w,y,S,d.errorbar),J=C.thickness,re=C.size,ee={type:"tick",orient:A,aria:!1,...J!==void 0?{thickness:J}:{},...re!==void 0?{size:re}:{}},se=[...H({partName:"ticks",mark:ee,positionPrefix:"lower",extraEncoding:G}),...H({partName:"ticks",mark:ee,positionPrefix:"upper",extraEncoding:G}),...H({partName:"rule",mark:{type:"rule",ariaRoleDescription:"errorbar",...J!==void 0?{size:J}:{}},positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:G})];return{...L,transform:h,...se.length>1?{layer:se}:{...se[0]}}}function om(l,s){let{encoding:d}=l;if(function(A){return(vt(A.x)||vt(A.y))&&!vt(A.x2)&&!vt(A.y2)&&!vt(A.xError)&&!vt(A.xError2)&&!vt(A.yError)&&!vt(A.yError2)}(d))return{orient:Zs(l,s),inputType:"raw"};let h=function(A){return vt(A.x2)||vt(A.y2)}(d),y=function(A){return vt(A.xError)||vt(A.xError2)||vt(A.yError)||vt(A.yError2)}(d),w=d.x,S=d.y;if(h){if(y)throw new Error(`${s} cannot be both type aggregated-upper-lower and aggregated-error`);let A=d.x2,C=d.y2;if(vt(A)&&vt(C))throw new Error(`${s} cannot have both x2 and y2`);if(vt(A)){if(rs(w))return{orient:"horizontal",inputType:"aggregated-upper-lower"};throw new Error(`Both x and x2 have to be quantitative in ${s}`)}if(vt(C)){if(rs(S))return{orient:"vertical",inputType:"aggregated-upper-lower"};throw new Error(`Both y and y2 have to be quantitative in ${s}`)}throw new Error("No ranged axis")}{let A=d.xError,C=d.xError2,L=d.yError,G=d.yError2;if(vt(C)&&!vt(A))throw new Error(`${s} cannot have xError2 without xError`);if(vt(G)&&!vt(L))throw new Error(`${s} cannot have yError2 without yError`);if(vt(A)&&vt(L))throw new Error(`${s} cannot have both xError and yError with both are quantiative`);if(vt(A)){if(rs(w))return{orient:"horizontal",inputType:"aggregated-error"};throw new Error("All x, xError, and xError2 (if exist) have to be quantitative")}if(vt(L)){if(rs(S))return{orient:"vertical",inputType:"aggregated-error"};throw new Error("All y, yError, and yError2 (if exist) have to be quantitative")}throw new Error("No ranged axis")}}function sm(l,s,d){let{mark:h,encoding:y,params:w,projection:S,...A}=l,C=Oi(h)?h:{type:h};w&&$e(za(s));let{orient:L,inputType:G}=om(l,s),{continuousAxisChannelDef:H,continuousAxisChannelDef2:J,continuousAxisChannelDefError:re,continuousAxisChannelDefError2:ee,continuousAxis:se}=oy(l,L,s),{errorBarSpecificAggregate:de,postAggregateCalculates:fe,tooltipSummary:ge,tooltipTitleWithFieldName:we}=function(It,gn,Cn,un,Na,Ia,$r,Yn){let oa=[],on=[],wt=gn.field,Ya,ks=!1;if(Ia==="raw"){let Ka=It.center?It.center:It.extent?It.extent==="iqr"?"median":"mean":Yn.errorbar.center,hr=It.extent?It.extent:Ka==="mean"?"stderr":"iqr";if(Ka==="median"!=(hr==="iqr")&&$e(function(ma,hi,No){return`${ma} is not usually used with ${hi} for ${No}.`}(Ka,hr,$r)),hr==="stderr"||hr==="stdev")oa=[{op:hr,field:wt,as:`extent_${wt}`},{op:Ka,field:wt,as:`center_${wt}`}],on=[{calculate:`datum["center_${wt}"] + datum["extent_${wt}"]`,as:`upper_${wt}`},{calculate:`datum["center_${wt}"] - datum["extent_${wt}"]`,as:`lower_${wt}`}],Ya=[{fieldPrefix:"center_",titlePrefix:gt(Ka)},{fieldPrefix:"upper_",titlePrefix:lm(Ka,hr,"+")},{fieldPrefix:"lower_",titlePrefix:lm(Ka,hr,"-")}],ks=!0;else{let ma,hi,No;hr==="ci"?(ma="mean",hi="ci0",No="ci1"):(ma="median",hi="q1",No="q3"),oa=[{op:hi,field:wt,as:`lower_${wt}`},{op:No,field:wt,as:`upper_${wt}`},{op:ma,field:wt,as:`center_${wt}`}],Ya=[{fieldPrefix:"upper_",titlePrefix:is({field:wt,aggregate:No,type:"quantitative"},Yn,{allowDisabling:!1})},{fieldPrefix:"lower_",titlePrefix:is({field:wt,aggregate:hi,type:"quantitative"},Yn,{allowDisabling:!1})},{fieldPrefix:"center_",titlePrefix:is({field:wt,aggregate:ma,type:"quantitative"},Yn,{allowDisabling:!1})}]}}else{(It.center||It.extent)&&$e((Qi=It.center,`${(Su=It.extent)?"extent ":""}${Su&&Qi?"and ":""}${Qi?"center ":""}${Su&&Qi?"are ":"is "}not needed when data are aggregated.`)),Ia==="aggregated-upper-lower"?(Ya=[],on=[{calculate:`datum["${Cn.field}"]`,as:`upper_${wt}`},{calculate:`datum["${wt}"]`,as:`lower_${wt}`}]):Ia==="aggregated-error"&&(Ya=[{fieldPrefix:"",titlePrefix:wt}],on=[{calculate:`datum["${wt}"] + datum["${un.field}"]`,as:`upper_${wt}`}],Na?on.push({calculate:`datum["${wt}"] + datum["${Na.field}"]`,as:`lower_${wt}`}):on.push({calculate:`datum["${wt}"] - datum["${un.field}"]`,as:`lower_${wt}`}));for(let Ka of on)Ya.push({fieldPrefix:Ka.as.substring(0,6),titlePrefix:_t(_t(Ka.calculate,'datum["',""),'"]',"")})}var Qi,Su;return{postAggregateCalculates:on,errorBarSpecificAggregate:oa,tooltipSummary:Ya,tooltipTitleWithFieldName:ks}}(C,H,J,re,ee,G,s,d),{[se]:Te,[se==="x"?"x2":"y2"]:Fe,[se==="x"?"xError":"yError"]:He,[se==="x"?"xError2":"yError2"]:tt,...ut}=y,{bins:Qe,timeUnits:Xe,aggregate:xt,groupby:$t,encoding:Mn}=iy(ut,d),_n=[...xt,...de],kn=G!=="raw"?[]:$t,Bt=ou(ge,H,Mn,we);return{transform:[...A.transform??[],...Qe,...Xe,..._n.length===0?[]:[{aggregate:_n,groupby:kn}],...fe],groupby:kn,continuousAxisChannelDef:H,continuousAxis:se,encodingWithoutContinuousAxis:Mn,ticksOrient:L==="vertical"?"horizontal":"vertical",markDef:C,outerSpec:A,tooltipEncoding:Bt}}function lm(l,s,d){return`${gt(l)} ${d} ${s}`}let xf="errorband",sy=new yf(xf,ly);function ly(l,s){let{config:d}=s;l={...l,encoding:ii(l.encoding,d)};let{transform:h,continuousAxisChannelDef:y,continuousAxis:w,encodingWithoutContinuousAxis:S,markDef:A,outerSpec:C,tooltipEncoding:L}=sm(l,xf,d),G=A,H=Ef(G,w,y,S,d.errorband),J=l.encoding.x!==void 0&&l.encoding.y!==void 0,re={type:J?"area":"rect"},ee={type:J?"line":"rule"},se={...G.interpolate?{interpolate:G.interpolate}:{},...G.tension&&G.interpolate?{tension:G.tension}:{}};return J?(re={...re,...se,ariaRoleDescription:"errorband"},ee={...ee,...se,aria:!1}):G.interpolate?$e(jd("interpolate")):G.tension&&$e(jd("tension")),{...C,transform:h,layer:[...H({partName:"band",mark:re,positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:L}),...H({partName:"borders",mark:ee,positionPrefix:"lower",extraEncoding:L}),...H({partName:"borders",mark:ee,positionPrefix:"upper",extraEncoding:L})]}}let su={};function lu(l,s,d){let h=new yf(l,s);su[l]={normalizer:h,parts:d}}lu(ls,am,["box","median","outliers","rule","ticks"]),lu(_f,kf,["ticks","rule"]),lu(xf,ly,["band","borders"]);let um=["gradientHorizontalMaxLength","gradientHorizontalMinLength","gradientVerticalMaxLength","gradientVerticalMinLength","unselectedOpacity"],yc={titleAlign:"align",titleAnchor:"anchor",titleAngle:"angle",titleBaseline:"baseline",titleColor:"color",titleFont:"font",titleFontSize:"fontSize",titleFontStyle:"fontStyle",titleFontWeight:"fontWeight",titleLimit:"limit",titleLineHeight:"lineHeight",titleOrient:"orient",titlePadding:"offset"},vc={labelAlign:"align",labelAnchor:"anchor",labelAngle:"angle",labelBaseline:"baseline",labelColor:"color",labelFont:"font",labelFontSize:"fontSize",labelFontStyle:"fontStyle",labelFontWeight:"fontWeight",labelLimit:"limit",labelLineHeight:"lineHeight",labelOrient:"orient",labelPadding:"offset"},cm=be(yc),dm=be(vc),Sf=be({header:1,headerRow:1,headerColumn:1,headerFacet:1}),Af=["size","shape","fill","stroke","strokeDash","strokeWidth","opacity"],dr="_vgsid_",fm={point:{on:"click",fields:[dr],toggle:"event.shiftKey",resolve:"global",clear:"dblclick"},interval:{on:"[pointerdown, window:pointerup] > window:pointermove!",encodings:["x","y"],translate:"[pointerdown, window:pointerup] > window:pointermove!",zoom:"wheel!",mark:{fill:"#333",fillOpacity:.125,stroke:"white"},resolve:"global",clear:"dblclick"}};function Tf(l){return l==="legend"||!!l?.legend}function Cf(l){return Tf(l)&&b.isObject(l)}function Ec(l){return!!l?.select}function Rf(l){let s=[];for(let d of l||[]){if(Ec(d))continue;let{expr:h,bind:y,...w}=d;if(y&&h){let S={...w,bind:y,init:h};s.push(S)}else{let S={...w,...h?{update:h}:{},...y?{bind:y}:{}};s.push(S)}}return s}function wc(l){return"concat"in l}function uu(l){return"vconcat"in l}function Nf(l){return"hconcat"in l}function If(l){let{step:s,offsetIsDiscrete:d}=l;return d?s.for??"offset":"position"}function ja(l){return b.isObject(l)&&l.step!==void 0}function _c(l){return l.view||l.width||l.height}let kc=be({align:1,bounds:1,center:1,columns:1,spacing:1});function us(l,s){return l[s]??l[s==="width"?"continuousWidth":"continuousHeight"]}function cu(l,s){let d=xc(l,s);return ja(d)?d.step:pm}function xc(l,s){return Ve(l[s]??l[s==="width"?"discreteWidth":"discreteHeight"],{step:l.step})}let pm=20,uy={background:"white",padding:5,timeFormat:"%b %d, %Y",countTitle:"Count of Records",view:{continuousWidth:200,continuousHeight:200,step:pm},mark:{color:"#4c78a8",invalid:"filter",timeUnitBandSize:1},arc:{},area:{},bar:M_,circle:{},geoshape:{},image:{},line:{},point:{},rect:Y0,rule:{color:"black"},square:{},text:{color:"black"},tick:{thickness:1},trail:{},boxplot:{size:14,extent:1.5,box:{},median:{color:"white"},outliers:{},rule:{},ticks:null},errorbar:{center:"mean",rule:!0,ticks:!1},errorband:{band:{opacity:.3},borders:!1},scale:{pointPadding:.5,barBandPaddingInner:.1,rectBandPaddingInner:0,bandWithNestedOffsetPaddingInner:.2,bandWithNestedOffsetPaddingOuter:.2,minBandSize:2,minFontSize:8,maxFontSize:40,minOpacity:.3,maxOpacity:.8,minSize:9,minStrokeWidth:1,maxStrokeWidth:4,quantileCount:4,quantizeCount:4,zero:!0},projection:{},legend:{gradientHorizontalMaxLength:200,gradientHorizontalMinLength:100,gradientVerticalMaxLength:200,gradientVerticalMinLength:64,unselectedOpacity:.35},header:{titlePadding:10,labelPadding:10},headerColumn:{},headerRow:{},headerFacet:{},selection:fm,style:{},title:{},facet:{spacing:20},concat:{spacing:20},normalizedNumberFormat:".0%"},oi=["#4c78a8","#f58518","#e45756","#72b7b2","#54a24b","#eeca3b","#b279a2","#ff9da6","#9d755d","#bab0ac"],hm={text:11,guideLabel:10,guideTitle:11,groupTitle:13,groupSubtitle:12},cy={blue:oi[0],orange:oi[1],red:oi[2],teal:oi[3],green:oi[4],yellow:oi[5],purple:oi[6],pink:oi[7],brown:oi[8],gray0:"#000",gray1:"#111",gray2:"#222",gray3:"#333",gray4:"#444",gray5:"#555",gray6:"#666",gray7:"#777",gray8:"#888",gray9:"#999",gray10:"#aaa",gray11:"#bbb",gray12:"#ccc",gray13:"#ddd",gray14:"#eee",gray15:"#fff"};function mm(l){let s=be(l||{}),d={};for(let h of s){let y=l[h];d[h]=iu(y)?w0(y):Un(y)}return d}let dy=[...Uh,...Vt,...Sf,"background","padding","legend","lineBreak","scale","style","title","view"];function gm(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{color:s,font:d,fontSize:h,selection:y,...w}=l,S=b.mergeConfig({},j(uy),d?function(C){return{text:{font:C},style:{"guide-label":{font:C},"guide-title":{font:C},"group-title":{font:C},"group-subtitle":{font:C}}}}(d):{},s?function(){let C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return{signals:[{name:"color",value:b.isObject(C)?{...cy,...C}:cy}],mark:{color:{signal:"color.blue"}},rule:{color:{signal:"color.gray0"}},text:{color:{signal:"color.gray0"}},style:{"guide-label":{fill:{signal:"color.gray0"}},"guide-title":{fill:{signal:"color.gray0"}},"group-title":{fill:{signal:"color.gray0"}},"group-subtitle":{fill:{signal:"color.gray0"}},cell:{stroke:{signal:"color.gray8"}}},axis:{domainColor:{signal:"color.gray13"},gridColor:{signal:"color.gray8"},tickColor:{signal:"color.gray13"}},range:{category:[{signal:"color.blue"},{signal:"color.orange"},{signal:"color.red"},{signal:"color.teal"},{signal:"color.green"},{signal:"color.yellow"},{signal:"color.purple"},{signal:"color.pink"},{signal:"color.brown"},{signal:"color.grey8"}]}}}(s):{},h?function(C){return{signals:[{name:"fontSize",value:b.isObject(C)?{...hm,...C}:hm}],text:{fontSize:{signal:"fontSize.text"}},style:{"guide-label":{fontSize:{signal:"fontSize.guideLabel"}},"guide-title":{fontSize:{signal:"fontSize.guideTitle"}},"group-title":{fontSize:{signal:"fontSize.groupTitle"}},"group-subtitle":{fontSize:{signal:"fontSize.groupSubtitle"}}}}}(h):{},w||{});y&&b.writeConfig(S,"selection",y,!0);let A=Q(S,dy);for(let C of["background","lineBreak","padding"])S[C]&&(A[C]=Un(S[C]));for(let C of Uh)S[C]&&(A[C]=Jn(S[C]));for(let C of Vt)S[C]&&(A[C]=mm(S[C]));for(let C of Sf)S[C]&&(A[C]=Jn(S[C]));return S.legend&&(A.legend=Jn(S.legend)),S.scale&&(A.scale=Jn(S.scale)),S.style&&(A.style=function(C){let L=be(C),G={};for(let H of L)G[H]=mm(C[H]);return G}(S.style)),S.title&&(A.title=Jn(S.title)),S.view&&(A.view=Jn(S.view)),A}let $_=new Set(["view",...I_]),B_=["color","fontSize","background","padding","facet","concat","numberFormat","numberFormatType","normalizedNumberFormat","normalizedNumberFormatType","timeFormat","countTitle","header","axisQuantitative","axisTemporal","axisDiscrete","axisPoint","axisXBand","axisXPoint","axisXDiscrete","axisXQuantitative","axisXTemporal","axisYBand","axisYPoint","axisYDiscrete","axisYQuantitative","axisYTemporal","scale","selection","overlay"],U_={view:["continuousWidth","continuousHeight","discreteWidth","discreteHeight","step"],area:["line","point"],bar:["binSpacing","continuousBandSize","discreteBandSize","minBandSize"],rect:["binSpacing","continuousBandSize","discreteBandSize","minBandSize"],line:["point"],tick:["bandSize","thickness"]};function Of(l){l=j(l);for(let s of B_)delete l[s];if(l.axis)for(let s in l.axis)iu(l.axis[s])&&delete l.axis[s];if(l.legend)for(let s of um)delete l.legend[s];if(l.mark){for(let s of V0)delete l.mark[s];l.mark.tooltip&&b.isObject(l.mark.tooltip)&&delete l.mark.tooltip}l.params&&(l.signals=(l.signals||[]).concat(Rf(l.params)),delete l.params);for(let s of $_){for(let h of V0)delete l[s][h];let d=U_[s];if(d)for(let h of d)delete l[s][h];z_(l,s)}for(let s of be(su))delete l[s];(function(s){let{titleMarkConfig:d,subtitleMarkConfig:h,subtitle:y}=tc(s.title);ye(d)||(s.style["group-title"]={...s.style["group-title"],...d}),ye(h)||(s.style["group-subtitle"]={...s.style["group-subtitle"],...h}),ye(y)?delete s.title:s.title=y})(l);for(let s in l)b.isObject(l[s])&&ye(l[s])&&delete l[s];return ye(l)?void 0:l}function z_(l,s,d,h){s==="view"&&(d="cell");let y={...h?l[s][h]:l[s],...l.style[d??s]};ye(y)||(l.style[d??s]=y),h||delete l[s]}function du(l){return"layer"in l}class Df{map(s,d){return dc(s)?this.mapFacet(s,d):function(h){return"repeat"in h}(s)?this.mapRepeat(s,d):Nf(s)?this.mapHConcat(s,d):uu(s)?this.mapVConcat(s,d):wc(s)?this.mapConcat(s,d):this.mapLayerOrUnit(s,d)}mapLayerOrUnit(s,d){if(du(s))return this.mapLayer(s,d);if(Fi(s))return this.mapUnit(s,d);throw new Error(xh(s))}mapLayer(s,d){return{...s,layer:s.layer.map(h=>this.mapLayerOrUnit(h,d))}}mapHConcat(s,d){return{...s,hconcat:s.hconcat.map(h=>this.map(h,d))}}mapVConcat(s,d){return{...s,vconcat:s.vconcat.map(h=>this.map(h,d))}}mapConcat(s,d){let{concat:h,...y}=s;return{...y,concat:h.map(w=>this.map(w,d))}}mapFacet(s,d){return{...s,spec:this.map(s.spec,d)}}mapRepeat(s,d){return{...s,spec:this.map(s.spec,d)}}}let bm={zero:1,center:1,normalize:1},G_=new Set([Ph,tf,ef,af,nf,rf,Bh,sc,q0,$h]),Sc=new Set([tf,ef,Ph]);function $i(l){return Ue(l)&&Ql(l)==="quantitative"&&!l.bin}function ym(l,s,d){let{orient:h,type:y}=d,w=s==="x"?"y":"radius",S=s==="x",A=l[s],C=l[w];if(Ue(A)&&Ue(C))if($i(A)&&$i(C)){if(A.stack)return s;if(C.stack)return w;let L=Ue(A)&&!!A.aggregate;if(L!==(Ue(C)&&!!C.aggregate))return L?s:w;if(S&&["bar","area"].includes(y)){if(h==="vertical")return w;if(h==="horizontal")return s}}else{if($i(A))return s;if($i(C))return w}else{if($i(A))return s;if($i(C))return w}}function vm(l,s){let d=Oi(l)?l:{type:l},h=d.type;if(!G_.has(h))return null;let y=ym(s,"x",d)||ym(s,"theta",d);if(!y)return null;let w=s[y],S=Ue(w)?Ge(w,{}):void 0,A=function(de){switch(de){case"x":return"y";case"y":return"x";case"theta":return"radius";case"radius":return"theta"}}(y),C=[],L=new Set;if(s[A]){let de=s[A],fe=Ue(de)?Ge(de,{}):void 0;fe&&fe!==S&&(C.push(A),L.add(fe))}let G=A==="x"?"xOffset":"yOffset",H=s[G],J=Ue(H)?Ge(H,{}):void 0;J&&J!==S&&(C.push(G),L.add(J));let re=$s.reduce((de,fe)=>{if(fe!=="tooltip"&&Pi(s,fe)){let ge=s[fe];for(let we of b.array(ge)){let Te=cr(we);if(Te.aggregate)continue;let Fe=Ge(Te,{});Fe&&L.has(Fe)||de.push({channel:fe,fieldDef:Te})}}return de},[]),ee;return w.stack!==void 0?ee=b.isBoolean(w.stack)?w.stack?"zero":null:w.stack:Sc.has(h)&&(ee="zero"),ee&&ee in bm?tm(s)&&re.length===0?null:w?.scale?.type&&w?.scale?.type!==zt.LINEAR?(w?.stack&&$e(function(de){return`Cannot stack non-linear scale (${de}).`}(w.scale.type)),null):vt(s[Si(y)])?(w.stack!==void 0&&$e(`Cannot stack "${se=y}" if there is already "${se}2".`),null):(Ue(w)&&w.aggregate&&!Nr.has(w.aggregate)&&$e(`Stacking is applied even though the aggregate function is non-summative ("${w.aggregate}").`),{groupbyChannels:C,groupbyFields:L,fieldChannel:y,impute:w.impute!==null&&as(h),stackBy:re,offset:ee}):null;var se}function fy(l,s,d){let h=Jn(l),y=jt("orient",h,d);if(h.orient=function(w,S,A){switch(w){case nf:case rf:case Bh:case q0:case R_:case C_:return}let{x:C,y:L,x2:G,y2:H}=S;switch(w){case tf:if(Ue(C)&&(Bn(C.bin)||Ue(L)&&L.aggregate&&!C.aggregate))return"vertical";if(Ue(L)&&(Bn(L.bin)||Ue(C)&&C.aggregate&&!L.aggregate))return"horizontal";if(H||G){if(A)return A;if(!G)return(Ue(C)&&C.type===ho&&!Wt(C.bin)||pf(C))&&Ue(L)&&Bn(L.bin)?"horizontal":"vertical";if(!H)return(Ue(L)&&L.type===ho&&!Wt(L.bin)||pf(L))&&Ue(C)&&Bn(C.bin)?"vertical":"horizontal"}case af:if(G&&(!Ue(C)||!Bn(C.bin))&&H&&(!Ue(L)||!Bn(L.bin)))return;case ef:if(H)return Ue(L)&&Bn(L.bin)?"horizontal":"vertical";if(G)return Ue(C)&&Bn(C.bin)?"vertical":"horizontal";if(w===af){if(C&&!L)return"vertical";if(L&&!C)return"horizontal"}case sc:case $h:{let J=ey(C),re=ey(L);if(A)return A;if(J&&!re)return w!=="tick"?"horizontal":"vertical";if(!J&&re)return w!=="tick"?"vertical":"horizontal";if(J&&re)return"vertical";{let ee=ha(C)&&C.type===ns,se=ha(L)&&L.type===ns;if(ee&&!se)return"vertical";if(!ee&&se)return"horizontal"}return}}return"vertical"}(h.type,s,y),y!==void 0&&y!==h.orient&&$e(`Specified orient "${h.orient}" overridden with "${y}".`),h.type==="bar"&&h.orient){let w=jt("cornerRadiusEnd",h,d);if(w!==void 0){let S=h.orient==="horizontal"&&s.x2||h.orient==="vertical"&&s.y2?["cornerRadius"]:D_[h.orient];for(let A of S)h[A]=w;h.cornerRadiusEnd!==void 0&&delete h.cornerRadiusEnd}}return jt("opacity",h,d)===void 0&&(h.opacity=function(w,S){if(Z([nf,$h,rf,Bh],w)&&!tm(S))return .7}(h.type,s)),jt("cursor",h,d)===void 0&&(h.cursor=function(w,S,A){return S.href||w.href||jt("href",w,A)?"pointer":w.cursor}(h,s,d)),h}function j_(l){let{point:s,line:d,...h}=l;return be(h).length>1?h:h.type}function H_(l){for(let s of["line","area","rule","trail"])l[s]&&(l={...l,[s]:Q(l[s],["point","line"])});return l}function Em(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},d=arguments.length>2?arguments[2]:void 0;return l.point==="transparent"?{opacity:0}:l.point?b.isObject(l.point)?l.point:{}:l.point!==void 0?null:s.point||d.shape?b.isObject(s.point)?s.point:{}:void 0}function wm(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return l.line?l.line===!0?{}:l.line:l.line!==void 0?null:s.line?s.line===!0?{}:s.line:void 0}class _m{constructor(){nt(this,"name","path-overlay")}hasMatchingType(s,d){if(Fi(s)){let{mark:h,encoding:y}=s,w=Oi(h)?h:{type:h};switch(w.type){case"line":case"rule":case"trail":return!!Em(w,d[w.type],y);case"area":return!!Em(w,d[w.type],y)||!!wm(w,d[w.type])}}return!1}run(s,d,h){let{config:y}=d,{params:w,projection:S,mark:A,name:C,encoding:L,...G}=s,H=ii(L,y),J=Oi(A)?A:{type:A},re=Em(J,y[J.type],H),ee=J.type==="area"&&wm(J,y[J.type]),se=[{name:C,...w?{params:w}:{},mark:j_({...J.type==="area"&&J.opacity===void 0&&J.fillOpacity===void 0?{opacity:.7}:{},...J}),encoding:Q(H,["shape"])}],de=vm(fy(J,H,y),H),fe=H;if(de){let{fieldChannel:ge,offset:we}=de;fe={...H,[ge]:{...H[ge],...we?{stack:we}:{}}}}return fe=Q(fe,["y2","x2"]),ee&&se.push({...S?{projection:S}:{},mark:{type:"line",...V(J,["clip","interpolate","tension","tooltip"]),...ee},encoding:fe}),re&&se.push({...S?{projection:S}:{},mark:{type:"point",opacity:1,filled:!0,...V(J,["clip","tooltip"]),...re},encoding:fe}),h({...G,layer:se},{...d,config:H_(y)})}}function na(l,s){return s?Zl(l)?py(l,s):km(l,s):l}function Bi(l,s){return s?py(l,s):l}function Ac(l,s,d){let h=s[l];return(y=h)&&!b.isString(y)&&"repeat"in y?h.repeat in d?{...s,[l]:d[h.repeat]}:void $e(function(w){return`Unknown repeated value "${w}".`}(h.repeat)):s;var y}function km(l,s){if((l=Ac("field",l,s))!==void 0){if(l===null)return null;if(Ys(l)&&ri(l.sort)){let d=Ac("field",l.sort,s);l={...l,...d?{sort:d}:{}}}return l}}function Mf(l,s){if(Ue(l))return km(l,s);{let d=Ac("datum",l,s);return d===l||d.type||(d.type="nominal"),d}}function xm(l,s){if(!vt(l)){if(Jl(l)){let d=Mf(l.condition,s);if(d)return{...l,condition:d};{let{condition:h,...y}=l;return y}}return l}{let d=Mf(l,s);if(d)return d;if(df(l))return{condition:l.condition}}}function py(l,s){let d={};for(let h in l)if(b.hasOwnProperty(l,h)){let y=l[h];if(b.isArray(y))d[h]=y.map(w=>xm(w,s)).filter(w=>w);else{let w=xm(y,s);w!==void 0&&(d[h]=w)}}return d}class Sm{constructor(){nt(this,"name","RuleForRangedLine")}hasMatchingType(s){if(Fi(s)){let{encoding:d,mark:h}=s;if(h==="line"||Oi(h)&&h.type==="line")for(let y of s_){let w=d[Ps(y)];if(d[y]&&(Ue(w)&&!Bn(w.bin)||Mi(w)))return!0}}return!1}run(s,d,h){let{encoding:y,mark:w}=s;var S,A;return $e((S=!!y.x2,A=!!y.y2,`Line mark is for continuous lines and thus cannot be used with ${S&&A?"x2 and y2":S?"x2":"y2"}. We will use the rule mark (line segments) instead.`)),h({...s,mark:b.isObject(w)?{...w,type:"rule"}:"rule"},d)}}function Lf(l){let{parentEncoding:s,encoding:d={},layer:h}=l,y={};if(s){let w=new Set([...be(s),...be(d)]);for(let S of w){let A=d[S],C=s[S];if(vt(A)){let L={...C,...A};y[S]=L}else Jl(A)?y[S]={...A,condition:{...C,...A.condition}}:A||A===null?y[S]=A:(h||ur(C)||Ke(C)||vt(C)||b.isArray(C))&&(y[S]=C)}}else y=d;return!y||ye(y)?void 0:y}function Am(l){let{parentProjection:s,projection:d}=l;return s&&d&&$e(function(h){let{parentProjection:y,projection:w}=h;return`Layer's shared projection ${Ye(y)} is overridden by a child projection ${Ye(w)}.`}({parentProjection:s,projection:d})),d??s}function Tm(l){return"filter"in l}function Cm(l){return"lookup"in l}function q_(l){return"pivot"in l}function hy(l){return"density"in l}function Rm(l){return"quantile"in l}function my(l){return"regression"in l}function W_(l){return"loess"in l}function gy(l){return"sample"in l}function Nm(l){return"window"in l}function Im(l){return"joinaggregate"in l}function by(l){return"flatten"in l}function V_(l){return"calculate"in l}function Ff(l){return"bin"in l}function Om(l){return"impute"in l}function Pf(l){return"timeUnit"in l}function yy(l){return"aggregate"in l}function Y_(l){return"stack"in l}function Dm(l){return"fold"in l}function Mm(l){return"extent"in l&&!("density"in l)}function $f(l,s){let{transform:d,...h}=l;return d?{...h,transform:d.map(y=>{if(Tm(y))return{filter:fu(y,s)};if(Ff(y)&&fo(y.bin))return{...y,bin:Lm(y.bin)};if(Cm(y)){let{selection:w,...S}=y.from;return w?{...y,from:{param:w,...S}}:y}return y})}:l}function Bf(l,s){let d=j(l);if(Ue(d)&&fo(d.bin)&&(d.bin=Lm(d.bin)),Li(d)&&d.scale?.domain?.selection){let{selection:h,...y}=d.scale.domain;d.scale.domain={...y,...h?{param:h}:{}}}if(df(d))if(b.isArray(d.condition))d.condition=d.condition.map(h=>{let{selection:y,param:w,test:S,...A}=h;return w?h:{...A,test:fu(h,s)}});else{let{selection:h,param:y,test:w,...S}=Bf(d.condition,s);d.condition=y?d.condition:{...S,test:fu(d.condition,s)}}return d}function Lm(l){let s=l.extent;if(s?.selection){let{selection:d,...h}=s;return{...l,extent:{...h,param:d}}}return l}function fu(l,s){let d=h=>F(h,y=>{let w={param:y,empty:s.emptySelections[y]??!0};return s.selectionPredicates[y]??=[],s.selectionPredicates[y].push(w),w});return l.selection?d(l.selection):F(l.test||l.filter,h=>h.selection?d(h.selection):h)}class Fm extends Df{map(s,d){let h=d.selections??[];if(s.params&&!Fi(s)){let y=[];for(let w of s.params)Ec(w)?h.push(w):y.push(w);s.params=y}return d.selections=h,super.map(s,d)}mapUnit(s,d){let h=d.selections;if(!h||!h.length)return s;let y=(d.path??[]).concat(s.name),w=[];for(let S of h)if(S.views&&S.views.length)for(let A of S.views)(b.isString(A)&&(A===s.name||y.includes(A))||b.isArray(A)&&A.map(C=>y.indexOf(C)).every((C,L,G)=>C!==-1&&(L===0||C>G[L-1])))&&w.push(S);else w.push(S);return w.length&&(s.params=w),s}}for(let l of["mapFacet","mapRepeat","mapHConcat","mapVConcat","mapLayer"]){let s=Fm.prototype[l];Fm.prototype[l]=function(d,h){return s.call(this,d,Pm(d,h))}}function Pm(l,s){return l.name?{...s,path:(s.path??[]).concat(l.name)}:s}function Uf(l,s){s===void 0&&(s=gm(l.config));let d=function(S){let C={config:arguments.length>1&&arguments[1]!==void 0?arguments[1]:{}};return K_.map($m.map(vy.map(S,C),C),C)}(l,s),{width:h,height:y}=l,w=function(S,A,C){let{width:L,height:G}=A,H=Fi(S)||du(S),J={};H?L=="container"&&G=="container"?(J.type="fit",J.contains="padding"):L=="container"?(J.type="fit-x",J.contains="padding"):G=="container"&&(J.type="fit-y",J.contains="padding"):(L=="container"&&($e(Sa("width")),L=void 0),G=="container"&&($e(Sa("height")),G=void 0));let re={type:"pad",...J,...C?Bm(C.autosize):{},...Bm(S.autosize)};if(re.type!=="fit"||H||($e(Qn),re.type="pad"),L=="container"&&re.type!="fit"&&re.type!="fit-x"&&$e(ea("width")),G=="container"&&re.type!="fit"&&re.type!="fit-y"&&$e(ea("height")),!Re(re,{type:"pad"}))return re}(d,{width:h,height:y,autosize:l.autosize},s);return{...d,...w?{autosize:w}:{}}}let $m=new class extends Df{constructor(){super(...arguments),nt(this,"nonFacetUnitNormalizers",[xe,im,sy,new _m,new Sm])}map(l,s){if(Fi(l)){let d=Pi(l.encoding,Je),h=Pi(l.encoding,Yr),y=Pi(l.encoding,Ml);if(d||h||y)return this.mapFacetedUnit(l,s)}return super.map(l,s)}mapUnit(l,s){let{parentEncoding:d,parentProjection:h}=s,y=Bi(l.encoding,s.repeater),w={...l,...l.name?{name:[s.repeaterPrefix,l.name].filter(A=>A).join("_")}:{},...y?{encoding:y}:{}};if(d||h)return this.mapUnitWithParentEncodingOrProjection(w,s);let S=this.mapLayerOrUnit.bind(this);for(let A of this.nonFacetUnitNormalizers)if(A.hasMatchingType(w,s.config))return A.run(w,s,S);return w}mapRepeat(l,s){return function(d){return!b.isArray(d.repeat)&&d.repeat.layer}(l)?this.mapLayerRepeat(l,s):this.mapNonLayerRepeat(l,s)}mapLayerRepeat(l,s){let{repeat:d,spec:h,...y}=l,{row:w,column:S,layer:A}=d,{repeater:C={},repeaterPrefix:L=""}=s;return w||S?this.mapRepeat({...l,repeat:{...w?{row:w}:{},...S?{column:S}:{}},spec:{repeat:{layer:A},spec:h}},s):{...y,layer:A.map(G=>{let H={...C,layer:G},J=`${(h.name?`${h.name}_`:"")+L}child__layer_${Pe(G)}`,re=this.mapLayerOrUnit(h,{...s,repeater:H,repeaterPrefix:J});return re.name=J,re})}}mapNonLayerRepeat(l,s){let{repeat:d,spec:h,data:y,...w}=l;!b.isArray(d)&&l.columns&&(l=Q(l,["columns"]),$e(lr("repeat")));let S=[],{repeater:A={},repeaterPrefix:C=""}=s,L=!b.isArray(d)&&d.row||[A?A.row:null],G=!b.isArray(d)&&d.column||[A?A.column:null],H=b.isArray(d)&&d||[A?A.repeat:null];for(let re of H)for(let ee of L)for(let se of G){let de={repeat:re,row:ee,column:se,layer:A.layer},fe=(h.name?`${h.name}_`:"")+C+"child__"+(b.isArray(d)?`${Pe(re)}`:(d.row?`row_${Pe(ee)}`:"")+(d.column?`column_${Pe(se)}`:"")),ge=this.map(h,{...s,repeater:de,repeaterPrefix:fe});ge.name=fe,S.push(Q(ge,["data"]))}let J=b.isArray(d)?l.columns:d.column?d.column.length:1;return{data:h.data??y,align:"all",...w,columns:J,concat:S}}mapFacet(l,s){let{facet:d}=l;return Zl(d)&&l.columns&&(l=Q(l,["columns"]),$e(lr("facet"))),super.mapFacet(l,s)}mapUnitWithParentEncodingOrProjection(l,s){let{encoding:d,projection:h}=l,{parentEncoding:y,parentProjection:w,config:S}=s,A=Am({parentProjection:w,projection:h}),C=Lf({parentEncoding:y,encoding:Bi(d,s.repeater)});return this.mapUnit({...l,...A?{projection:A}:{},...C?{encoding:C}:{}},{config:S})}mapFacetedUnit(l,s){let{row:d,column:h,facet:y,...w}=l.encoding,{mark:S,width:A,projection:C,height:L,view:G,params:H,encoding:J,...re}=l,{facetMapping:ee,layout:se}=this.getFacetMappingAndLayout({row:d,column:h,facet:y},s),de=Bi(w,s.repeater);return this.mapFacet({...re,...se,facet:ee,spec:{...A?{width:A}:{},...L?{height:L}:{},...G?{view:G}:{},...C?{projection:C}:{},mark:S,encoding:de,...H?{params:H}:{}}},s)}getFacetMappingAndLayout(l,s){let{row:d,column:h,facet:y}=l;if(d||h){y&&$e(`Facet encoding dropped as ${(w=[...d?[Je]:[],...h?[Yr]:[]]).join(" and ")} ${w.length>1?"are":"is"} also specified.`);let S={},A={};for(let C of[Je,Yr]){let L=l[C];if(L){let{align:G,center:H,spacing:J,columns:re,...ee}=L;S[C]=ee;for(let se of["align","center","spacing"])L[se]!==void 0&&(A[se]??={},A[se][C]=L[se])}}return{facetMapping:S,layout:A}}{let{align:S,center:A,spacing:C,columns:L,...G}=y;return{facetMapping:na(G,s.repeater),layout:{...S?{align:S}:{},...A?{center:A}:{},...C?{spacing:C}:{},...L?{columns:L}:{}}}}var w}mapLayer(l,s){let{parentEncoding:d,parentProjection:h,...y}=s,{encoding:w,projection:S,...A}=l,C={...y,parentEncoding:Lf({parentEncoding:d,encoding:w,layer:!0}),parentProjection:Am({parentProjection:h,projection:S})};return super.mapLayer({...A,...l.name?{name:[C.repeaterPrefix,l.name].filter(L=>L).join("_")}:{}},C)}},vy=new class extends Df{map(l,s){return s.emptySelections??={},s.selectionPredicates??={},l=$f(l,s),super.map(l,s)}mapLayerOrUnit(l,s){if((l=$f(l,s)).encoding){let d={};for(let[h,y]of ke(l.encoding))d[h]=Bf(y,s);l={...l,encoding:d}}return super.mapLayerOrUnit(l,s)}mapUnit(l,s){let{selection:d,...h}=l;return d?{...h,params:ke(d).map(y=>{let[w,S]=y,{init:A,bind:C,empty:L,...G}=S;G.type==="single"?(G.type="point",G.toggle=!1):G.type==="multi"&&(G.type="point"),s.emptySelections[w]=L!=="none";for(let H of Se(s.selectionPredicates[w]??{}))H.empty=L!=="none";return{name:w,value:A,select:G,bind:C}})}:l}},K_=new Fm;function Bm(l){return b.isString(l)?{type:l}:l??{}}let Um=["background","padding"];function zf(l,s){let d={};for(let h of Um)l&&l[h]!==void 0&&(d[h]=Un(l[h]));return s&&(d.params=l.params),d}class Ui{constructor(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.explicit=s,this.implicit=d}clone(){return new Ui(j(this.explicit),j(this.implicit))}combine(){return{...this.explicit,...this.implicit}}get(s){return Ve(this.explicit[s],this.implicit[s])}getWithExplicit(s){return this.explicit[s]!==void 0?{explicit:!0,value:this.explicit[s]}:this.implicit[s]!==void 0?{explicit:!1,value:this.implicit[s]}:{explicit:!1,value:void 0}}setWithExplicit(s,d){let{value:h,explicit:y}=d;h!==void 0&&this.set(s,h,y)}set(s,d,h){return delete this[h?"implicit":"explicit"][s],this[h?"explicit":"implicit"][s]=d,this}copyKeyFromSplit(s,d){let{explicit:h,implicit:y}=d;h[s]!==void 0?this.set(s,h[s],!0):y[s]!==void 0&&this.set(s,y[s],!1)}copyKeyFromObject(s,d){d[s]!==void 0&&this.set(s,d[s],!0)}copyAll(s){for(let d of be(s.combine())){let h=s.getWithExplicit(d);this.setWithExplicit(d,h)}}}function zi(l){return{explicit:!0,value:l}}function Lr(l){return{explicit:!1,value:l}}function Ey(l){return(s,d,h,y)=>{let w=l(s.value,d.value);return w>0?s:w<0?d:Tc(s,d,h,y)}}function Tc(l,s,d,h){return l.explicit&&s.explicit&&$e(function(y,w,S,A){return`Conflicting ${w.toString()} property "${y.toString()}" (${Ye(S)} and ${Ye(A)}). Using ${Ye(S)}.`}(d,h,l.value,s.value)),l}function Gi(l,s,d,h){let y=arguments.length>4&&arguments[4]!==void 0?arguments[4]:Tc;return l===void 0||l.value===void 0?s:l.explicit&&!s.explicit?l:s.explicit&&!l.explicit?s:Re(l.value,s.value)?l:y(l,s,d,h)}class wy extends Ui{constructor(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},h=arguments.length>2&&arguments[2]!==void 0&&arguments[2];super(s,d),this.explicit=s,this.implicit=d,this.parseNothing=h}clone(){let s=super.clone();return s.parseNothing=this.parseNothing,s}}function cs(l){return"url"in l}function pu(l){return"values"in l}function Gf(l){return"name"in l&&!cs(l)&&!pu(l)&&!bo(l)}function bo(l){return l&&(jf(l)||Hf(l)||qf(l))}function jf(l){return"sequence"in l}function Hf(l){return"sphere"in l}function qf(l){return"graticule"in l}let tn=function(l){return l[l.Raw=0]="Raw",l[l.Main=1]="Main",l[l.Row=2]="Row",l[l.Column=3]="Column",l[l.Lookup=4]="Lookup",l}({});function zm(l){let{signals:s,hasLegend:d,index:h,...y}=l;return y.field=Gt(y.field),y}function ds(l){let s=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],d=arguments.length>2&&arguments[2]!==void 0?arguments[2]:b.identity;if(b.isArray(l)){let h=l.map(y=>ds(y,s,d));return s?`[${h.join(", ")}]`:h}return Bs(l)?d(s?Us(l):function(h){let y=qd(h,!0);return h.utc?+new Date(Date.UTC(...y)):+new Date(...y)}(l)):s?d(Ye(l)):l}function _y(l,s){for(let d of Se(l.component.selection??{})){let h=d.name,y=`${h}${Eo}, ${d.resolve==="global"?"true":`{unit: ${Ha(l)}}`}`;for(let w of nl)w.defined(d)&&(w.signals&&(s=w.signals(l,d,s)),w.modifyExpr&&(y=w.modifyExpr(l,d,y)));s.push({name:h+Py,on:[{events:{signal:d.name+Eo},update:`modify(${b.stringValue(d.name+ps)}, ${y})`}]})}return Wf(s)}function Cc(l,s){if(l.component.selection&&be(l.component.selection).length){let d=b.stringValue(l.getName("cell"));s.unshift({name:"facet",value:{},on:[{events:b.parseSelector("pointermove","scope"),update:`isTuple(facet) ? facet : group(${d}).datum`}]})}return Wf(s)}function ky(l,s){for(let d of Se(l.component.selection??{}))for(let h of nl)h.defined(d)&&h.marks&&(s=h.marks(l,d,s));return s}function Wf(l){return l.map(s=>(s.on&&!s.on.length&&delete s.on,s))}class Ht{constructor(s,d){this.debugName=d,nt(this,"_children",[]),nt(this,"_parent",null),nt(this,"_hash",void 0),s&&(this.parent=s)}clone(){throw new Error("Cannot clone node")}get parent(){return this._parent}set parent(s){this._parent=s,s&&s.addChild(this)}get children(){return this._children}numChildren(){return this._children.length}addChild(s,d){this._children.includes(s)?$e("Attempt to add the same child twice."):d!==void 0?this._children.splice(d,0,s):this._children.push(s)}removeChild(s){let d=this._children.indexOf(s);return this._children.splice(d,1),d}remove(){let s=this._parent.removeChild(this);for(let d of this._children)d._parent=this._parent,this._parent.addChild(d,s++)}insertAsParentOf(s){let d=s.parent;d.removeChild(this),this.parent=d,s.parent=this}swapWithParent(){let s=this._parent,d=s.parent;for(let y of this._children)y.parent=s;this._children=[],s.removeChild(this);let h=s.parent.removeChild(s);this._parent=d,d.addChild(this,h),s.parent=this}}class aa extends Ht{clone(){let s=new this.constructor;return s.debugName=`clone_${this.debugName}`,s._source=this._source,s._name=`clone_${this._name}`,s.type=this.type,s.refCounts=this.refCounts,s.refCounts[s._name]=0,s}constructor(s,d,h,y){super(s,d),this.type=h,this.refCounts=y,nt(this,"_source",void 0),nt(this,"_name",void 0),this._source=this._name=d,this.refCounts&&!(this._name in this.refCounts)&&(this.refCounts[this._name]=0)}dependentFields(){return new Set}producedFields(){return new Set}hash(){return this._hash===void 0&&(this._hash=`Output ${Xt()}`),this._hash}getSource(){return this.refCounts[this._name]++,this._source}isRequired(){return!!this.refCounts[this._name]}setSource(s){this._source=s}}function Gm(l){return l.as!==void 0}function xy(l){return`${l}_end`}class ji extends Ht{clone(){return new ji(null,j(this.timeUnits))}constructor(s,d){super(s),this.timeUnits=d}static makeFromEncoding(s,d){let h=d.reduceFieldDef((y,w,S)=>{let{field:A,timeUnit:C}=w;if(C){let L;if(Dr(C)){if(ln(d)){let{mark:G,markDef:H,config:J}=d,re=Di({fieldDef:w,markDef:H,config:J});(lc(G)||re)&&(L={timeUnit:zn(C),field:A})}}else L={as:Ge(w,{forAs:!0}),field:A,timeUnit:C};if(ln(d)){let{mark:G,markDef:H,config:J}=d,re=Di({fieldDef:w,markDef:H,config:J});lc(G)&&sn(S)&&re!==.5&&(L.rectBandPosition=re)}L&&(y[ae(L)]=L)}return y},{});return ye(h)?null:new ji(s,h)}static makeFromTransform(s,d){let{timeUnit:h,...y}={...d},w={...y,timeUnit:zn(h)};return new ji(s,{[ae(w)]:w})}merge(s){this.timeUnits={...this.timeUnits};for(let d in s.timeUnits)this.timeUnits[d]||(this.timeUnits[d]=s.timeUnits[d]);for(let d of s.children)s.removeChild(d),d.parent=this;s.remove()}removeFormulas(s){let d={};for(let[h,y]of ke(this.timeUnits)){let w=Gm(y)?y.as:`${y.field}_end`;s.has(w)||(d[h]=y)}this.timeUnits=d}producedFields(){return new Set(Se(this.timeUnits).map(s=>Gm(s)?s.as:xy(s.field)))}dependentFields(){return new Set(Se(this.timeUnits).map(s=>s.field))}hash(){return`TimeUnit ${ae(this.timeUnits)}`}assemble(){let s=[];for(let d of Se(this.timeUnits)){let{rectBandPosition:h}=d,y=zn(d.timeUnit);if(Gm(d)){let{field:w,as:S}=d,{unit:A,utc:C,...L}=y,G=[S,`${S}_end`];s.push({field:Gt(w),type:"timeunit",...A?{units:rc(A)}:{},...C?{timezone:"utc"}:{},...L,as:G}),s.push(...ra(G,h,y))}else if(d){let{field:w}=d,S=w.replaceAll("\\.","."),A=jm({timeUnit:y,field:S}),C=xy(S);s.push({type:"formula",expr:A,as:C}),s.push(...ra([S,C],h,y))}}return s}}let Vf="offsetted_rect_start",Ft="offsetted_rect_end";function jm(l){let{timeUnit:s,field:d,reverse:h}=l,{unit:y,utc:w}=s,S=Oh(y),{part:A,step:C}=Vd(S,s.step);return`${w?"utcOffset":"timeOffset"}('${A}', datum['${d}'], ${h?-C:C})`}function ra(l,s,d){let[h,y]=l;if(s!==void 0&&s!==.5){let w=`datum['${h}']`,S=`datum['${y}']`;return[{type:"formula",expr:fs([jm({timeUnit:d,field:h,reverse:!0}),w],s+.5),as:`${h}_${Vf}`},{type:"formula",expr:fs([w,S],s+.5),as:`${h}_${Ft}`}]}return[]}function fs(l,s){let[d,h]=l;return`${1-s} * ${d} + ${s} * ${h}`}let Rc="_tuple_fields";class Hm{constructor(){nt(this,"hasChannel",void 0),nt(this,"hasField",void 0),nt(this,"hasSelectionId",void 0),nt(this,"timeUnit",void 0),nt(this,"items",void 0);for(var s=arguments.length,d=new Array(s),h=0;h<s;h++)d[h]=arguments[h];this.items=d,this.hasChannel={},this.hasField={},this.hasSelectionId=!1}}let Hi={defined:()=>!0,parse:(l,s,d)=>{let h=s.name,y=s.project??=new Hm,w={},S={},A=new Set,C=(ee,se)=>{let de=se==="visual"?ee.channel:ee.field,fe=Pe(`${h}_${de}`);for(let ge=1;A.has(fe);ge++)fe=Pe(`${h}_${de}_${ge}`);return A.add(fe),{[se]:fe}},L=s.type,G=l.config.selection[L],H=d.value!==void 0?b.array(d.value):null,{fields:J,encodings:re}=b.isObject(d.select)?d.select:{};if(!J&&!re&&H){for(let ee of H)if(b.isObject(ee))for(let se of be(ee))o_[se]?(re||(re=[])).push(se):L==="interval"?($e('Interval selections should be initialized using "x", "y", "longitude", or "latitude" keys.'),re=G.encodings):(J??=[]).push(se)}J||re||(re=G.encodings,"fields"in G&&(J=G.fields));for(let ee of re??[]){let se=l.fieldDef(ee);if(se){let de=se.field;if(se.aggregate){$e(Ni(ee,se.aggregate));continue}if(!de){$e(ta(ee));continue}if(se.timeUnit&&!Dr(se.timeUnit)){de=l.vgField(ee);let fe={timeUnit:se.timeUnit,as:de,field:se.field};S[ae(fe)]=fe}if(!w[de]){let fe={field:de,channel:ee,type:L==="interval"&&Rr(ee)&&Ga(l.getScaleComponent(ee).get("type"))?"R":se.bin?"R-RE":"E",index:y.items.length};fe.signals={...C(fe,"data"),...C(fe,"visual")},y.items.push(w[de]=fe),y.hasField[de]=w[de],y.hasSelectionId=y.hasSelectionId||de===dr,Zo(ee)?(fe.geoChannel=ee,fe.channel=ph(ee),y.hasChannel[fe.channel]=w[de]):y.hasChannel[ee]=w[de]}}else $e(ta(ee))}for(let ee of J??[]){if(y.hasField[ee])continue;let se={type:"E",field:ee,index:y.items.length};se.signals={...C(se,"data")},y.items.push(se),y.hasField[ee]=se,y.hasSelectionId=y.hasSelectionId||ee===dr}H&&(s.init=H.map(ee=>y.items.map(se=>b.isObject(ee)?ee[se.geoChannel||se.channel]!==void 0?ee[se.geoChannel||se.channel]:ee[se.field]:ee))),ye(S)||(y.timeUnit=new ji(null,S))},signals:(l,s,d)=>{let h=s.name+Rc;return d.filter(y=>y.name===h).length>0||s.project.hasSelectionId?d:d.concat({name:h,value:s.project.items.map(zm)})}},Ta={defined:l=>l.type==="interval"&&l.resolve==="global"&&l.bind&&l.bind==="scales",parse:(l,s)=>{let d=s.scales=[];for(let h of s.project.items){let y=h.channel;if(!Rr(y))continue;let w=l.getScaleComponent(y),S=w?w.get("type"):void 0;w&&Ga(S)?(w.set("selectionExtent",{param:s.name,field:h.field},!0),d.push(h)):$e("Scale bindings are currently only supported for scales with unbinned, continuous domains.")}},topLevelSignals:(l,s,d)=>{let h=s.scales.filter(S=>d.filter(A=>A.name===S.signals.data).length===0);if(!l.parent||Qs(l)||h.length===0)return d;let y=d.filter(S=>S.name===s.name)[0],w=y.update;if(w.indexOf(tg)>=0)y.update=`{${h.map(S=>`${b.stringValue(Gt(S.field))}: ${S.signals.data}`).join(", ")}}`;else{for(let S of h){let A=`${b.stringValue(Gt(S.field))}: ${S.signals.data}`;w.includes(A)||(w=`${w.substring(0,w.length-1)}, ${A}}`)}y.update=w}return d.concat(h.map(S=>({name:S.signals.data})))},signals:(l,s,d)=>{if(l.parent&&!Qs(l))for(let h of s.scales){let y=d.filter(w=>w.name===h.signals.data)[0];y.push="outer",delete y.value,delete y.update}return d}};function jn(l,s){return`domain(${b.stringValue(l.scaleName(s))})`}function Qs(l){return l.parent&&vs(l.parent)&&!l.parent.parent}let yo="_brush",qm="_scale_trigger",hu="geo_interval_init_tick",Yf="_init",Wm={defined:l=>l.type==="interval",parse:(l,s,d)=>{if(l.hasProjection){let h={...b.isObject(d.select)?d.select:{}};h.fields=[dr],h.encodings||(h.encodings=d.value?be(d.value):[Fa,et]),d.select={type:"interval",...h}}if(s.translate&&!Ta.defined(s)){let h=`!event.item || event.item.mark.name !== ${b.stringValue(s.name+yo)}`;for(let y of s.events){if(!y.between){$e(`${y} is not an ordered event stream for interval selections.`);continue}let w=b.array(y.between[0].filter??=[]);w.indexOf(h)<0&&w.push(h)}}},signals:(l,s,d)=>{let h=s.name,y=h+Eo,w=Se(s.project.hasChannel).filter(A=>A.channel===Jt||A.channel===Pn),S=s.init?s.init[0]:null;if(d.push(...w.reduce((A,C)=>A.concat(function(L,G,H,J){let re=!L.hasProjection,ee=H.channel,se=H.signals.visual,de=b.stringValue(re?L.scaleName(ee):L.projectionName()),fe=Fe=>`scale(${de}, ${Fe})`,ge=L.getSizeSignalRef(ee===Jt?"width":"height").signal,we=`${ee}(unit)`,Te=G.events.reduce((Fe,He)=>[...Fe,{events:He.between[0],update:`[${we}, ${we}]`},{events:He,update:`[${se}[0], clamp(${we}, 0, ${ge})]`}],[]);if(re){let Fe=H.signals.data,He=Ta.defined(G),tt=L.getScaleComponent(ee),ut=tt?tt.get("type"):void 0,Qe=J?{init:ds(J,!0,fe)}:{value:[]};return Te.push({events:{signal:G.name+qm},update:Ga(ut)?`[${fe(`${Fe}[0]`)}, ${fe(`${Fe}[1]`)}]`:"[0, 0]"}),He?[{name:Fe,on:[]}]:[{name:se,...Qe,on:Te},{name:Fe,...J?{init:ds(J)}:{},on:[{events:{signal:se},update:`${se}[0] === ${se}[1] ? null : invert(${de}, ${se})`}]}]}{let Fe=ee===Jt?0:1,He=G.name+Yf;return[{name:se,...J?{init:`[${He}[0][${Fe}], ${He}[1][${Fe}]]`}:{value:[]},on:Te}]}}(l,s,C,S&&S[C.index])),[])),l.hasProjection){let A=b.stringValue(l.projectionName()),C=l.projectionName()+"_center",{x:L,y:G}=s.project.hasChannel,H=L&&L.signals.visual,J=G&&G.signals.visual,re=L?S&&S[L.index]:`${C}[0]`,ee=G?S&&S[G.index]:`${C}[1]`,se=we=>l.getSizeSignalRef(we).signal,de=`[[${H?H+"[0]":"0"}, ${J?J+"[0]":"0"}],[${H?H+"[1]":se("width")}, ${J?J+"[1]":se("height")}]]`;S&&(d.unshift({name:h+Yf,init:`[scale(${A}, [${L?re[0]:re}, ${G?ee[0]:ee}]), scale(${A}, [${L?re[1]:re}, ${G?ee[1]:ee}])]`}),!L||!G)&&(d.find(we=>we.name===C)||d.unshift({name:C,update:`invert(${A}, [${se("width")}/2, ${se("height")}/2])`}));let fe=`vlSelectionTuples(${`intersect(${de}, {markname: ${b.stringValue(l.getName("marks"))}}, unit.mark)`}, ${`{unit: ${Ha(l)}}`})`,ge=w.map(we=>we.signals.visual);return d.concat({name:y,on:[{events:[...ge.length?[{signal:ge.join(" || ")}]:[],...S?[{signal:hu}]:[]],update:fe}]})}{if(!Ta.defined(s)){let L=h+qm,G=w.map(H=>{let J=H.channel,{data:re,visual:ee}=H.signals,se=b.stringValue(l.scaleName(J)),de=Ga(l.getScaleComponent(J).get("type"))?"+":"";return`(!isArray(${re}) || (${de}invert(${se}, ${ee})[0] === ${de}${re}[0] && ${de}invert(${se}, ${ee})[1] === ${de}${re}[1]))`});G.length&&d.push({name:L,value:{},on:[{events:w.map(H=>({scale:l.scaleName(H.channel)})),update:G.join(" && ")+` ? ${L} : {}`}]})}let A=w.map(L=>L.signals.data),C=`unit: ${Ha(l)}, fields: ${h+Rc}, values`;return d.concat({name:y,...S?{init:`{${C}: ${ds(S)}}`}:{},...A.length?{on:[{events:[{signal:A.join(" || ")}],update:`${A.join(" && ")} ? {${C}: [${A}]} : null`}]}:{}})}},topLevelSignals:(l,s,d)=>(ln(l)&&l.hasProjection&&s.init&&(d.filter(h=>h.name===hu).length||d.unshift({name:hu,value:null,on:[{events:"timer{1}",update:`${hu} === null ? {} : ${hu}`}]})),d),marks:(l,s,d)=>{let h=s.name,{x:y,y:w}=s.project.hasChannel,S=y?.signals.visual,A=w?.signals.visual,C=`data(${b.stringValue(s.name+ps)})`;if(Ta.defined(s)||!y&&!w)return d;let L={x:y!==void 0?{signal:`${S}[0]`}:{value:0},y:w!==void 0?{signal:`${A}[0]`}:{value:0},x2:y!==void 0?{signal:`${S}[1]`}:{field:{group:"width"}},y2:w!==void 0?{signal:`${A}[1]`}:{field:{group:"height"}}};if(s.resolve==="global")for(let se of be(L))L[se]=[{test:`${C}.length && ${C}[0].unit === ${Ha(l)}`,...L[se]},{value:0}];let{fill:G,fillOpacity:H,cursor:J,...re}=s.mark,ee=be(re).reduce((se,de)=>(se[de]=[{test:[y!==void 0&&`${S}[0] !== ${S}[1]`,w!==void 0&&`${A}[0] !== ${A}[1]`].filter(fe=>fe).join(" && "),value:re[de]},{value:null}],se),{});return[{name:`${h+yo}_bg`,type:"rect",clip:!0,encode:{enter:{fill:{value:G},fillOpacity:{value:H}},update:L}},...d,{name:h+yo,type:"rect",clip:!0,encode:{enter:{...J?{cursor:{value:J}}:{},fill:{value:"transparent"}},update:{...L,...ee}}}]}},el={defined:l=>l.type==="point",signals:(l,s,d)=>{let h=s.name,y=h+Rc,w=s.project,S="(item().isVoronoi ? datum.datum : datum)",A=Se(l.component.selection??{}).reduce((H,J)=>J.type==="interval"?H.concat(J.name+yo):H,[]).map(H=>`indexof(item().mark.name, '${H}') < 0`).join(" && "),C="datum && item().mark.marktype !== 'group' && indexof(item().mark.role, 'legend') < 0"+(A?` && ${A}`:""),L=`unit: ${Ha(l)}, `;s.project.hasSelectionId?L+=`${dr}: ${S}[${b.stringValue(dr)}]`:L+=`fields: ${y}, values: [${w.items.map(H=>l.fieldDef(H.channel)?.bin?`[${S}[${b.stringValue(l.vgField(H.channel,{}))}], ${S}[${b.stringValue(l.vgField(H.channel,{binSuffix:"end"}))}]]`:`${S}[${b.stringValue(H.field)}]`).join(", ")}]`;let G=s.events;return d.concat([{name:h+Eo,on:G?[{events:G,update:`${C} ? {${L}} : null`,force:!0}]:[]}])}};function mu(l,s,d,h){let y=df(s)&&s.condition,w=h(s);return y?{[d]:[...b.array(y).map(S=>{let A=h(S);if(function(C){return C.param}(S)){let{param:C,empty:L}=S;return{test:yu(l,{param:C,empty:L}),...A}}return{test:Wi(l,S.test),...A}}),...w!==void 0?[w]:[]]}:w!==void 0?{[d]:w}:{}}function Kf(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"text",d=l.encoding[s];return mu(l,d,s,h=>gu(h,l.config))}function gu(l,s){let d=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"datum";if(l){if(ur(l))return rn(l.value);if(vt(l)){let{format:h,formatType:y}=Ks(l);return Hh({fieldOrDatumDef:l,format:h,formatType:y,expr:d,config:s})}}}function Nc(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{encoding:d,markDef:h,config:y,stack:w}=l,S=d.tooltip;if(b.isArray(S))return{tooltip:Sy({tooltip:S},w,y,s)};{let A=s.reactiveGeom?"datum.datum":"datum";return mu(l,S,"tooltip",C=>{let L=gu(C,y,A);if(L)return L;if(C===null)return;let G=jt("tooltip",h,y);return G===!0&&(G={content:"encoding"}),b.isString(G)?{value:G}:b.isObject(G)?Ke(G)?G:G.content==="encoding"?Sy(d,w,y,s):{signal:A}:void 0})}}function Ic(l,s,d){let{reactiveGeom:h}=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},y={...d,...d.tooltipFormat},w={},S=h?"datum.datum":"datum",A=[];function C(G,H){let J=Ps(H),re=ha(G)?G:{...G,type:l[J].type},ee=re.title||mf(re,y),se=b.array(ee).join(", ").replaceAll(/"/g,'\\"'),de;if(sn(H)){let fe=H==="x"?"x2":"y2",ge=cr(l[fe]);if(Bn(re.bin)&&ge){let we=Ge(re,{expr:S}),Te=Ge(ge,{expr:S}),{format:Fe,formatType:He}=Ks(re);de=mo(we,Te,Fe,He,y),w[fe]=!0}}if((sn(H)||H===nr||H===pt)&&s&&s.fieldChannel===H&&s.offset==="normalize"){let{format:fe,formatType:ge}=Ks(re);de=Hh({fieldOrDatumDef:re,format:fe,formatType:ge,expr:S,config:y,normalizeStack:!0}).signal}de??=gu(re,y,S).signal,A.push({channel:H,key:se,value:de})}mc(l,(G,H)=>{Ue(G)?C(G,H):ff(G)&&C(G.condition,H)});let L={};for(let{channel:G,key:H,value:J}of A)w[G]||L[H]||(L[H]=J);return L}function Sy(l,s,d){let{reactiveGeom:h}=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},y=Ic(l,s,d,{reactiveGeom:h}),w=ke(y).map(S=>{let[A,C]=S;return`"${A}": ${C}`});return w.length>0?{signal:`{${w.join(", ")}}`}:void 0}function X_(l){let{markDef:s,config:d}=l,h=jt("aria",s,d);return h===!1?{}:{...h?{aria:h}:{},...Z_(l),...J_(l)}}function Z_(l){let{mark:s,markDef:d,config:h}=l;if(h.aria===!1)return{};let y=jt("ariaRoleDescription",d,h);return y!=null?{ariaRoleDescription:{value:y}}:s in Fd?{}:{ariaRoleDescription:{value:s}}}function J_(l){let{encoding:s,markDef:d,config:h,stack:y}=l,w=s.description;if(w)return mu(l,w,"description",C=>gu(C,l.config));let S=jt("description",d,h);if(S!=null)return{description:rn(S)};if(h.aria===!1)return{};let A=Ic(s,y,h);return ye(A)?void 0:{description:{signal:ke(A).map((C,L)=>{let[G,H]=C;return`"${L>0?"; ":""}${G}: " + (${H})`}).join(" + ")}}}function Hn(l,s){let d=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},{markDef:h,encoding:y,config:w}=s,{vgChannel:S}=d,{defaultRef:A,defaultValue:C}=d;A===void 0&&(C??=jt(l,h,w,{vgChannel:S,ignoreVgConfig:!0}),C!==void 0&&(A=rn(C)));let L=y[l];return mu(s,L,S??l,G=>jh({channel:l,channelDef:G,markDef:h,config:w,scaleName:s.scaleName(l),scale:s.getScaleComponent(l),stack:null,defaultRef:A}))}function Oc(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{filled:void 0},{markDef:d,encoding:h,config:y}=l,{type:w}=d,S=s.filled??jt("filled",d,y),A=Z(["bar","point","circle","square","geoshape"],w)?"transparent":void 0,C=jt(S===!0?"color":void 0,d,y,{vgChannel:"fill"})??y.mark[S===!0&&"color"]??A,L=jt(S===!1?"color":void 0,d,y,{vgChannel:"stroke"})??y.mark[S===!1&&"color"],G=S?"fill":"stroke",H={...C?{fill:rn(C)}:{},...L?{stroke:rn(L)}:{}};return d.color&&(S?d.fill:d.stroke)&&$e(T0("property",{fill:"fill"in d,stroke:"stroke"in d})),{...H,...Hn("color",l,{vgChannel:G,defaultValue:S?C:L}),...Hn("fill",l,{defaultValue:h.fill?C:void 0}),...Hn("stroke",l,{defaultValue:h.stroke?L:void 0})}}function Ay(l){let{encoding:s,mark:d}=l,h=s.order;return!as(d)&&ur(h)?mu(l,h,"zindex",y=>rn(y.value)):{}}function bu(l){let{channel:s,markDef:d,encoding:h={},model:y,bandPosition:w}=l,S=`${s}Offset`,A=d[S],C=h[S];if((S==="xOffset"||S==="yOffset")&&C)return{offsetType:"encoding",offset:jh({channel:S,channelDef:C,markDef:d,config:y?.config,scaleName:y.scaleName(S),scale:y.getScaleComponent(S),stack:null,defaultRef:rn(A),bandPosition:w})};let L=d[S];return L?{offsetType:"visual",offset:L}:{}}function qn(l,s,d){let{defaultPos:h,vgChannel:y}=d,{encoding:w,markDef:S,config:A,stack:C}=s,L=w[l],G=w[Si(l)],H=s.scaleName(l),J=s.getScaleComponent(l),{offset:re,offsetType:ee}=bu({channel:l,markDef:S,encoding:w,model:s,bandPosition:.5}),se=Xf({model:s,defaultPos:h,channel:l,scaleName:H,scale:J}),de=!L&&sn(l)&&(w.latitude||w.longitude)?{field:s.getName(l)}:function(fe){let{channel:ge,channelDef:we,scaleName:Te,stack:Fe,offset:He,markDef:tt}=fe;if(vt(we)&&Fe&&ge===Fe.fieldChannel){if(Ue(we)){let ut=we.bandPosition;if(ut!==void 0||tt.type!=="text"||ge!=="radius"&&ge!=="theta"||(ut=.5),ut!==void 0)return of({scaleName:Te,fieldOrDatumDef:we,startSuffix:"start",bandPosition:ut,offset:He})}return Ws(we,Te,{suffix:"end"},{offset:He})}return zh(fe)}({channel:l,channelDef:L,channel2Def:G,markDef:S,config:A,scaleName:H,scale:J,stack:C,offset:re,defaultRef:se,bandPosition:ee==="encoding"?0:void 0});return de?{[y||l]:de}:void 0}function Xf(l){let{model:s,defaultPos:d,channel:h,scaleName:y,scale:w}=l,{markDef:S,config:A}=s;return()=>{let C=Ps(h),L=or(h),G=jt(h,S,A,{vgChannel:L});if(G!==void 0)return Xl(h,G);switch(d){case"zeroOrMin":case"zeroOrMax":if(y){let H=w.get("type");if(!Z([zt.LOG,zt.TIME,zt.UTC],H)){if(w.domainDefinitelyIncludesZero())return{scale:y,value:0}}}if(d==="zeroOrMin")return C==="y"?{field:{group:"height"}}:{value:0};switch(C){case"radius":return{signal:`min(${s.width.signal},${s.height.signal})/2`};case"theta":return{signal:"2*PI"};case"x":return{field:{group:"width"}};case"y":return{value:0}}break;case"mid":return{...s[ka(h)],mult:.5}}}}let Ty={left:"x",center:"xc",right:"x2"},Cy={top:"y",middle:"yc",bottom:"y2"};function Vm(l,s,d){let h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"middle";if(l==="radius"||l==="theta")return or(l);let y=l==="x"?"align":"baseline",w=jt(y,s,d),S;return Ke(w)?($e(function(A){return`The ${A} for range marks cannot be an expression`}(y)),S=void 0):S=w,l==="x"?Ty[S||(h==="top"?"left":"center")]:Cy[S||h]}function Zf(l,s,d){let{defaultPos:h,defaultPos2:y,range:w}=d;return w?vo(l,s,{defaultPos:h,defaultPos2:y}):qn(l,s,{defaultPos:h})}function vo(l,s,d){let{defaultPos:h,defaultPos2:y}=d,{markDef:w,config:S}=s,A=Si(l),C=ka(l),L=function(G,H,J){let{encoding:re,mark:ee,markDef:se,stack:de,config:fe}=G,ge=Ps(J),we=ka(J),Te=or(J),Fe=re[ge],He=G.scaleName(ge),tt=G.getScaleComponent(ge),{offset:ut}=bu(J in re||J in se?{channel:J,markDef:se,encoding:re,model:G}:{channel:ge,markDef:se,encoding:re,model:G});if(!Fe&&(J==="x2"||J==="y2")&&(re.latitude||re.longitude)){let Xe=ka(J),xt=G.markDef[Xe];return xt!=null?{[Xe]:{value:xt}}:{[Te]:{field:G.getName(J)}}}let Qe=function(Xe){let{channel:xt,channelDef:$t,channel2Def:Mn,markDef:_n,config:kn,scaleName:Bt,scale:It,stack:gn,offset:Cn,defaultRef:un}=Xe;return vt($t)&&gn&&xt.charAt(0)===gn.fieldChannel.charAt(0)?Ws($t,Bt,{suffix:"start"},{offset:Cn}):zh({channel:xt,channelDef:Mn,scaleName:Bt,scale:It,stack:gn,markDef:_n,config:kn,offset:Cn,defaultRef:un})}({channel:J,channelDef:Fe,channel2Def:re[J],markDef:se,config:fe,scaleName:He,scale:tt,stack:de,offset:ut,defaultRef:void 0});return Qe!==void 0?{[Te]:Qe}:tl(J,se)||tl(J,{[J]:$d(J,se,fe.style),[we]:$d(we,se,fe.style)})||tl(J,fe[ee])||tl(J,fe.mark)||{[Te]:Xf({model:G,defaultPos:H,channel:J,scaleName:He,scale:tt})()}}(s,y,A);return{...qn(l,s,{defaultPos:h,vgChannel:L[C]?Vm(l,w,S):or(l)}),...L}}function tl(l,s){let d=ka(l),h=or(l);if(s[h]!==void 0)return{[h]:Xl(l,s[h])};if(s[l]!==void 0)return{[h]:Xl(l,s[l])};if(s[d]){let y=s[d];if(!qs(y))return{[d]:Xl(l,y)};$e(function(w){return`Position range does not support relative band size for ${w}.`}(d))}}function si(l,s){let{config:d,encoding:h,markDef:y}=l,w=y.type,S=Si(s),A=ka(s),C=h[s],L=h[S],G=l.getScaleComponent(s),H=G?G.get("type"):void 0,J=y.orient,re=h[A]??h.size??jt("size",y,d,{vgChannel:A}),ee=hh(s),se=w==="bar"&&(s==="x"?J==="vertical":J==="horizontal");return!Ue(C)||!(Wt(C.bin)||Bn(C.bin)||C.timeUnit&&!L)||re&&!qs(re)||h[ee]||Gn(H)?(vt(C)&&Gn(H)||se)&&!L?function(de,fe,ge){let{markDef:we,encoding:Te,config:Fe,stack:He}=ge,tt=we.orient,ut=ge.scaleName(fe),Qe=ge.getScaleComponent(fe),Xe=ka(fe),xt=Si(fe),$t=hh(fe),Mn=ge.scaleName($t),_n=ge.getScaleComponent($l(fe)),kn=tt==="horizontal"&&fe==="y"||tt==="vertical"&&fe==="x",Bt;(Te.size||we.size)&&(kn?Bt=Hn("size",ge,{vgChannel:Xe,defaultRef:rn(we.size)}):$e(function(oa){return`Cannot apply size to non-oriented mark "${oa}".`}(we.type)));let It=!!Bt,gn=Xh({channel:fe,fieldDef:de,markDef:we,config:Fe,scaleType:(Qe||_n)?.get("type"),useVlSizeChannel:kn});Bt=Bt||{[Xe]:Ry(Xe,Mn||ut,_n||Qe,Fe,gn,!!de,we.type)};let Cn=(Qe||_n)?.get("type")==="band"&&qs(gn)&&!It?"top":"middle",un=Vm(fe,we,Fe,Cn),Na=un==="xc"||un==="yc",{offset:Ia,offsetType:$r}=bu({channel:fe,markDef:we,encoding:Te,model:ge,bandPosition:Na?.5:0}),Yn=zh({channel:fe,channelDef:de,markDef:we,config:Fe,scaleName:ut,scale:Qe,stack:He,offset:Ia,defaultRef:Xf({model:ge,defaultPos:"mid",channel:fe,scaleName:ut,scale:Qe}),bandPosition:Na?$r==="encoding"?0:.5:Ke(gn)?{signal:`(1-${gn})/2`}:qs(gn)?(1-gn.band)/2:0});if(Xe)return{[un]:Yn,...Bt};{let oa=or(xt),on=Bt[Xe],wt=Ia?{...on,offset:Ia}:on;return{[un]:Yn,[oa]:b.isArray(Yn)?[Yn[0],{...Yn[1],offset:wt}]:{...Yn,offset:wt}}}}(C,s,l):vo(s,l,{defaultPos:"zeroOrMax",defaultPos2:"zeroOrMin"}):function(de){let{fieldDef:fe,fieldDef2:ge,channel:we,model:Te}=de,{config:Fe,markDef:He,encoding:tt}=Te,ut=Te.getScaleComponent(we),Qe=Te.scaleName(we),Xe=ut?ut.get("type"):void 0,xt=ut.get("reverse"),$t=Xh({channel:we,fieldDef:fe,markDef:He,config:Fe,scaleType:Xe}),Mn=Te.component.axes[we]?.[0],_n=Mn?.get("translate")??.5,kn=sn(we)?jt("binSpacing",He,Fe)??0:0,Bt=Si(we),It=or(we),gn=or(Bt),Cn=Ua("minBandSize",He,Fe),{offset:un}=bu({channel:we,markDef:He,encoding:tt,model:Te,bandPosition:0}),{offset:Na}=bu({channel:Bt,markDef:He,encoding:tt,model:Te,bandPosition:0}),Ia=function(wt){let{scaleName:Ya,fieldDef:ks}=wt,Qi=Ge(ks,{expr:"datum"});return`abs(scale("${Ya}", ${Ge(ks,{expr:"datum",suffix:"end"})}) - scale("${Ya}", ${Qi}))`}({fieldDef:fe,scaleName:Qe}),$r=Ym(we,kn,xt,_n,un,Cn,Ia),Yn=Ym(Bt,kn,xt,_n,Na??un,Cn,Ia),oa=Ke($t)?{signal:`(1-${$t.signal})/2`}:qs($t)?(1-$t.band)/2:.5,on=Di({fieldDef:fe,fieldDef2:ge,markDef:He,config:Fe});if(Wt(fe.bin)||fe.timeUnit){let wt=fe.timeUnit&&on!==.5;return{[gn]:Km({fieldDef:fe,scaleName:Qe,bandPosition:oa,offset:Yn,useRectOffsetField:wt}),[It]:Km({fieldDef:fe,scaleName:Qe,bandPosition:Ke(oa)?{signal:`1-${oa.signal}`}:1-oa,offset:$r,useRectOffsetField:wt})}}if(Bn(fe.bin)){let wt=Ws(fe,Qe,{},{offset:Yn});if(Ue(ge))return{[gn]:wt,[It]:Ws(ge,Qe,{},{offset:$r})};if(fo(fe.bin)&&fe.bin.step)return{[gn]:wt,[It]:{signal:`scale("${Qe}", ${Ge(fe,{expr:"datum"})} + ${fe.bin.step})`,offset:$r}}}return void $e(Hd(Bt))}({fieldDef:C,fieldDef2:L,channel:s,model:l})}function Ry(l,s,d,h,y,w,S){if(qs(y)){if(!d)return{mult:y.band,field:{group:l}};{let A=d.get("type");if(A==="band"){let C=`bandwidth('${s}')`;y.band!==1&&(C=`${y.band} * ${C}`);let L=Ua("minBandSize",{type:S},h);return{signal:L?`max(${fa(L)}, ${C})`:C}}y.band!==1&&($e(function(C){return`Cannot use the relative band size with ${C} scale.`}(A)),y=void 0)}}else{if(Ke(y))return y;if(y)return{value:y}}if(d){let A=d.get("range");if(po(A)&&b.isNumber(A.step))return{value:A.step-2}}if(!w){let{bandPaddingInner:A,barBandPaddingInner:C,rectBandPaddingInner:L}=h.scale,G=Ve(A,S==="bar"?C:L);if(Ke(G))return{signal:`(1 - (${G.signal})) * ${l}`};if(b.isNumber(G))return{signal:`${1-G} * ${l}`}}return{value:cu(h.view,l)-2}}function Ym(l,s,d,h,y,w,S){if(Dd(l))return 0;let A=l==="x"||l==="y2",C=A?-s/2:s/2;if(Ke(d)||Ke(y)||Ke(h)||w){let L=fa(d),G=fa(y),H=fa(h),J=fa(w),re=w?`(${S} < ${J} ? ${A?"":"-"}0.5 * (${J} - (${S})) : ${C})`:C;return{signal:(H?`${H} + `:"")+(L?`(${L} ? -1 : 1) * `:"")+(G?`(${G} + ${re})`:re)}}return y=y||0,h+(d?-y-C:+y+C)}function Km(l){let{fieldDef:s,scaleName:d,bandPosition:h,offset:y,useRectOffsetField:w}=l;return of({scaleName:d,fieldOrDatumDef:s,bandPosition:h,offset:y,...w?{startSuffix:Vf,endSuffix:Ft}:{}})}let Q_=new Set(["aria","width","height"]);function Ca(l,s){let{fill:d,stroke:h}=s.color==="include"?Oc(l):{};return{...e1(l.markDef,s),...Jf(l,"fill",d),...Jf(l,"stroke",h),...Hn("opacity",l),...Hn("fillOpacity",l),...Hn("strokeOpacity",l),...Hn("strokeWidth",l),...Hn("strokeDash",l),...Ay(l),...Nc(l),...Kf(l,"href"),...X_(l)}}function Jf(l,s,d){let{config:h,mark:y,markDef:w}=l;if(jt("invalid",w,h)==="hide"&&d&&!as(y)){let S=function(A,C){let{invalid:L=!1,channels:G}=C,H=G.reduce((re,ee)=>{let se=A.getScaleComponent(ee);if(se){let de=se.get("type"),fe=A.vgField(ee,{expr:"datum"});fe&&Ga(de)&&(re[fe]=!0)}return re},{}),J=be(H);if(J.length>0){let re=L?"||":"&&";return J.map(ee=>Gh(ee,L)).join(` ${re} `)}}(l,{invalid:!0,channels:Ul});if(S)return{[s]:[{test:S,value:null},...b.array(d)]}}return d?{[s]:d}:{}}function e1(l,s){return Gl.reduce((d,h)=>(Q_.has(h)||l[h]===void 0||s[h]==="ignore"||(d[h]=rn(l[h])),d),{})}function Dc(l){let{config:s,markDef:d}=l;if(jt("invalid",d,s)){let h=function(y,w){let{invalid:S=!1,channels:A}=w,C=A.reduce((G,H)=>{let J=y.getScaleComponent(H);if(J){let re=J.get("type"),ee=y.vgField(H,{expr:"datum",binSuffix:y.stack?.impute?"mid":void 0});ee&&Ga(re)&&(G[ee]=!0)}return G},{}),L=be(C);if(L.length>0){let G=S?"||":"&&";return L.map(H=>Gh(H,S)).join(` ${G} `)}}(l,{channels:Jr});if(h)return{defined:{signal:h}}}return{}}function Ny(l,s){if(s!==void 0)return{[l]:rn(s)}}let Mc="voronoi",Iy={defined:l=>l.type==="point"&&l.nearest,parse:(l,s)=>{if(s.events)for(let d of s.events)d.markname=l.getName(Mc)},marks:(l,s,d)=>{let{x:h,y}=s.project.hasChannel,w=l.mark;if(as(w))return $e(`The "nearest" transform is not supported for ${w} marks.`),d;let S={name:l.getName(Mc),type:"path",interactive:!0,from:{data:l.getName("marks")},encode:{update:{fill:{value:"transparent"},strokeWidth:{value:.35},stroke:{value:"transparent"},isVoronoi:{value:!0},...Nc(l,{reactiveGeom:!0})}},transform:[{type:"voronoi",x:{expr:h||!y?"datum.datum.x || 0":"0"},y:{expr:y||!h?"datum.datum.y || 0":"0"},size:[l.getSizeSignalRef("width"),l.getSizeSignalRef("height")]}]},A=0,C=!1;return d.forEach((L,G)=>{let H=L.name??"";H===l.component.mark[0].name?A=G:H.indexOf(Mc)>=0&&(C=!0)}),C||d.splice(A+1,0,S),d}},Qf={defined:l=>l.type==="point"&&l.resolve==="global"&&l.bind&&l.bind!=="scales"&&!Tf(l.bind),parse:(l,s,d)=>li(s,d),topLevelSignals:(l,s,d)=>{let h=s.name,y=s.project,w=s.bind,S=s.init&&s.init[0],A=Iy.defined(s)?"(item().isVoronoi ? datum.datum : datum)":"datum";return y.items.forEach((C,L)=>{let G=Pe(`${h}_${C.field}`);d.filter(H=>H.name===G).length||d.unshift({name:G,...S?{init:ds(S[L])}:{value:null},on:s.events?[{events:s.events,update:`datum && item().mark.marktype !== 'group' ? ${A}[${b.stringValue(C.field)}] : null`}]:[],bind:w[C.field]??w[C.channel]??w})}),d},signals:(l,s,d)=>{let h=s.name,y=s.project,w=d.filter(L=>L.name===h+Eo)[0],S=h+Rc,A=y.items.map(L=>Pe(`${h}_${L.field}`)),C=A.map(L=>`${L} !== null`).join(" && ");return A.length&&(w.update=`${C} ? {fields: ${S}, values: [${A.join(", ")}]} : null`),delete w.value,delete w.on,d}},Lc="_toggle",Oy={defined:l=>l.type==="point"&&!!l.toggle,signals:(l,s,d)=>d.concat({name:s.name+Lc,value:!1,on:[{events:s.events,update:s.toggle}]}),modifyExpr:(l,s)=>{let d=s.name+Eo,h=s.name+Lc;return`${h} ? null : ${d}, `+(s.resolve==="global"?`${h} ? null : true, `:`${h} ? null : {unit: ${Ha(l)}}, `)+`${h} ? ${d} : null`}},Dy={defined:l=>l.clear!==void 0&&l.clear!==!1,parse:(l,s)=>{s.clear&&(s.clear=b.isString(s.clear)?b.parseSelector(s.clear,"view"):s.clear)},topLevelSignals:(l,s,d)=>{if(Qf.defined(s))for(let h of s.project.items){let y=d.findIndex(w=>w.name===Pe(`${s.name}_${h.field}`));y!==-1&&d[y].on.push({events:s.clear,update:"null"})}return d},signals:(l,s,d)=>{function h(y,w){y!==-1&&d[y].on&&d[y].on.push({events:s.clear,update:w})}if(s.type==="interval")for(let y of s.project.items){let w=d.findIndex(S=>S.name===y.signals.visual);h(w,"[0, 0]"),w===-1&&h(d.findIndex(S=>S.name===y.signals.data),"null")}else{let y=d.findIndex(w=>w.name===s.name+Eo);h(y,"null"),Oy.defined(s)&&(y=d.findIndex(w=>w.name===s.name+Lc),h(y,"false"))}return d}},My={defined:l=>{let s=l.resolve==="global"&&l.bind&&Tf(l.bind),d=l.project.items.length===1&&l.project.items[0].field!==dr;return s&&!d&&$e("Legend bindings are only supported for selections over an individual field or encoding channel."),s&&d},parse:(l,s,d)=>{let h=j(d);if(h.select=b.isString(h.select)?{type:h.select,toggle:s.toggle}:{...h.select,toggle:s.toggle},li(s,h),b.isObject(d.select)&&(d.select.on||d.select.clear)){let S='event.item && indexof(event.item.mark.role, "legend") < 0';for(let A of s.events)A.filter=b.array(A.filter??[]),A.filter.includes(S)||A.filter.push(S)}let y=Cf(s.bind)?s.bind.legend:"click",w=b.isString(y)?b.parseSelector(y,"view"):b.array(y);s.bind={legend:{merge:w}}},topLevelSignals:(l,s,d)=>{let h=s.name,y=Cf(s.bind)&&s.bind.legend,w=S=>A=>{let C=j(A);return C.markname=S,C};for(let S of s.project.items){if(!S.hasLegend)continue;let A=`${Pe(S.field)}_legend`,C=`${h}_${A}`;if(d.filter(L=>L.name===C).length===0){let L=y.merge.map(w(`${A}_symbols`)).concat(y.merge.map(w(`${A}_labels`))).concat(y.merge.map(w(`${A}_entries`)));d.unshift({name:C,...s.init?{}:{value:null},on:[{events:L,update:"isDefined(datum.value) ? datum.value : item().items[0].items[0].datum.value",force:!0},{events:y.merge,update:`!event.item || !datum ? null : ${C}`,force:!0}]})}}return d},signals:(l,s,d)=>{let h=s.name,y=s.project,w=d.find(H=>H.name===h+Eo),S=h+Rc,A=y.items.filter(H=>H.hasLegend).map(H=>Pe(`${h}_${Pe(H.field)}_legend`)),C=`${A.map(H=>`${H} !== null`).join(" && ")} ? {fields: ${S}, values: [${A.join(", ")}]} : null`;s.events&&A.length>0?w.on.push({events:A.map(H=>({signal:H})),update:C}):A.length>0&&(w.update=C,delete w.value,delete w.on);let L=d.find(H=>H.name===h+Lc),G=Cf(s.bind)&&s.bind.legend;return L&&(s.events?L.on.push({...L.on[0],events:G}):L.on[0].events=G),d}},Xm="_translate_anchor",Ly="_translate_delta",Fy={defined:l=>l.type==="interval"&&l.translate,signals:(l,s,d)=>{let h=s.name,y=Ta.defined(s),w=h+Xm,{x:S,y:A}=s.project.hasChannel,C=b.parseSelector(s.translate,"scope");return y||(C=C.map(L=>(L.between[0].markname=h+yo,L))),d.push({name:w,value:{},on:[{events:C.map(L=>L.between[0]),update:"{x: x(unit), y: y(unit)"+(S!==void 0?`, extent_x: ${y?jn(l,Jt):`slice(${S.signals.visual})`}`:"")+(A!==void 0?`, extent_y: ${y?jn(l,Pn):`slice(${A.signals.visual})`}`:"")+"}"}]},{name:h+Ly,value:{},on:[{events:C,update:`{x: ${w}.x - x(unit), y: ${w}.y - y(unit)}`}]}),S!==void 0&&Zm(l,s,S,"width",d),A!==void 0&&Zm(l,s,A,"height",d),d}};function Zm(l,s,d,h,y){let w=s.name,S=w+Xm,A=w+Ly,C=d.channel,L=Ta.defined(s),G=y.filter(fe=>fe.name===d.signals[L?"data":"visual"])[0],H=l.getSizeSignalRef(h).signal,J=l.getScaleComponent(C),re=J&&J.get("type"),ee=J&&J.get("reverse"),se=`${S}.extent_${C}`,de=`${L&&J?re==="log"?"panLog":re==="symlog"?"panSymlog":re==="pow"?"panPow":"panLinear":"panLinear"}(${se}, ${`${L?C===Jt?ee?"":"-":ee?"-":"":""}${A}.${C} / ${L?`${H}`:`span(${se})`}`}${L?re==="pow"?`, ${J.get("exponent")??1}`:re==="symlog"?`, ${J.get("constant")??1}`:"":""})`;G.on.push({events:{signal:A},update:L?de:`clampRange(${de}, 0, ${H})`})}let Jm="_zoom_anchor",Qm="_zoom_delta",eg={defined:l=>l.type==="interval"&&l.zoom,signals:(l,s,d)=>{let h=s.name,y=Ta.defined(s),w=h+Qm,{x:S,y:A}=s.project.hasChannel,C=b.stringValue(l.scaleName(Jt)),L=b.stringValue(l.scaleName(Pn)),G=b.parseSelector(s.zoom,"scope");return y||(G=G.map(H=>(H.markname=h+yo,H))),d.push({name:h+Jm,on:[{events:G,update:y?"{"+[C?`x: invert(${C}, x(unit))`:"",L?`y: invert(${L}, y(unit))`:""].filter(H=>H).join(", ")+"}":"{x: x(unit), y: y(unit)}"}]},{name:w,on:[{events:G,force:!0,update:"pow(1.001, event.deltaY * pow(16, event.deltaMode))"}]}),S!==void 0&&Fc(l,s,S,"width",d),A!==void 0&&Fc(l,s,A,"height",d),d}};function Fc(l,s,d,h,y){let w=s.name,S=d.channel,A=Ta.defined(s),C=y.filter(se=>se.name===d.signals[A?"data":"visual"])[0],L=l.getSizeSignalRef(h).signal,G=l.getScaleComponent(S),H=G&&G.get("type"),J=A?jn(l,S):C.name,re=w+Qm,ee=`${A&&G?H==="log"?"zoomLog":H==="symlog"?"zoomSymlog":H==="pow"?"zoomPow":"zoomLinear":"zoomLinear"}(${J}, ${`${w}${Jm}.${S}`}, ${re}${A?H==="pow"?`, ${G.get("exponent")??1}`:H==="symlog"?`, ${G.get("constant")??1}`:"":""})`;C.on.push({events:{signal:re},update:A?ee:`clampRange(${ee}, 0, ${L})`})}let ps="_store",Eo="_tuple",Py="_modify",tg="vlSelectionResolve",nl=[el,Wm,Hi,Oy,Qf,Ta,My,Dy,Fy,eg,Iy];function Ha(l){let{escape:s}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{escape:!0},d=s?b.stringValue(l.name):l.name,h=function(y){let w=y.parent;for(;w&&!Wa(w);)w=w.parent;return w}(l);if(h){let{facet:y}=h;for(let w of $a)y[w]&&(d+=` + '__facet_${w}_' + (facet[${b.stringValue(h.vgField(w))}])`)}return d}function ng(l){return Se(l.component.selection??{}).reduce((s,d)=>s||d.project.hasSelectionId,!1)}function li(l,s){!b.isString(s.select)&&s.select.on||delete l.events,!b.isString(s.select)&&s.select.clear||delete l.clear,!b.isString(s.select)&&s.select.toggle||delete l.toggle}function qi(l){let s=[];return l.type==="Identifier"?[l.name]:l.type==="Literal"?[l.value]:(l.type==="MemberExpression"&&(s.push(...qi(l.object)),s.push(...qi(l.property))),s)}function ep(l){return l.object.type==="MemberExpression"?ep(l.object):l.object.name==="datum"}function tp(l){let s=b.parseExpression(l),d=new Set;return s.visit(h=>{h.type==="MemberExpression"&&ep(h)&&d.add(qi(h).slice(1).join("."))}),d}class ui extends Ht{clone(){return new ui(null,this.model,j(this.filter))}constructor(s,d,h){super(s),this.model=d,this.filter=h,nt(this,"expr",void 0),nt(this,"_dependentFields",void 0),this.expr=Wi(this.model,this.filter,this),this._dependentFields=tp(this.expr)}dependentFields(){return this._dependentFields}producedFields(){return new Set}assemble(){return{type:"filter",expr:this.expr}}hash(){return`Filter ${this.expr}`}}function yu(l,s,d){let h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"datum",y=b.isString(s)?s:s.param,w=Pe(y),S=b.stringValue(w+ps),A;try{A=l.getSelectionComponent(w,y)}catch{return`!!${w}`}if(A.project.timeUnit){let G=d??l.component.data.raw,H=A.project.timeUnit.clone();G.parent?H.insertAsParentOf(G):G.parent=H}let C=`${A.project.hasSelectionId?"vlSelectionIdTest(":"vlSelectionTest("}${S}, ${h}${A.resolve==="global"?")":`, ${b.stringValue(A.resolve)})`}`,L=`length(data(${S}))`;return s.empty===!1?`${L} && ${C}`:`!${L} || ${C}`}function wo(l,s,d){let h=Pe(s),y=d.encoding,w,S=d.field;try{w=l.getSelectionComponent(h,s)}catch{return h}if(y||S){if(y&&!S){let A=w.project.items.filter(C=>C.channel===y);!A.length||A.length>1?(S=w.project.items[0].field,$e((A.length?"Multiple ":"No ")+`matching ${b.stringValue(y)} encoding found for selection ${b.stringValue(d.param)}. Using "field": ${b.stringValue(S)}.`)):S=A[0].field}}else S=w.project.items[0].field,w.project.items.length>1&&$e(`A "field" or "encoding" must be specified when using a selection as a scale domain. Using "field": ${b.stringValue(S)}.`);return`${w.name}[${b.stringValue(Gt(S))}]`}function Wi(l,s,d){return De(s,h=>b.isString(h)?h:function(y){return y?.param}(h)?yu(l,h,d):Zd(h))}function hs(l,s,d,h){l.encode??={},l.encode[s]??={},l.encode[s].update??={},l.encode[s].update[d]=h}function Vi(l,s,d){let h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{header:!1},{disable:y,orient:w,scale:S,labelExpr:A,title:C,zindex:L,...G}=l.combine();if(!y){for(let H in G){let J=bf[H],re=G[H];if(J&&J!==s&&J!=="both")delete G[H];else if(iu(re)){let{condition:ee,...se}=re,de=b.array(ee),fe=os[H];if(fe){let{vgProp:ge,part:we}=fe;hs(G,we,ge,[...de.map(Te=>{let{test:Fe,...He}=Te;return{test:Wi(null,Fe),...He}}),se]),delete G[H]}else if(fe===null){let ge={signal:de.map(we=>{let{test:Te,...Fe}=we;return`${Wi(null,Te)} ? ${es(Fe)} : `}).join("")+es(se)};G[H]=ge}}else if(Ke(re)){let ee=os[H];if(ee){let{vgProp:se,part:de}=ee;hs(G,de,se,re),delete G[H]}}Z(["labelAlign","labelBaseline"],H)&&G[H]===null&&delete G[H]}if(s==="grid"){if(!G.grid)return;if(G.encode){let{grid:H}=G.encode;G.encode={...H?{grid:H}:{}},ye(G.encode)&&delete G.encode}return{scale:S,orient:w,...G,domain:!1,labels:!1,aria:!1,maxExtent:0,minExtent:0,ticks:!1,zindex:Ve(L,0)}}{if(!h.header&&l.mainExtracted)return;if(A!==void 0){let J=A;G.encode?.labels?.update&&Ke(G.encode.labels.update.text)&&(J=_t(A,"datum.label",G.encode.labels.update.text.signal)),hs(G,"labels","text",{signal:J})}if(G.labelAlign===null&&delete G.labelAlign,G.encode){for(let J of ss)l.hasAxisPart(J)||delete G.encode[J];ye(G.encode)&&delete G.encode}let H=function(J,re){if(J)return b.isArray(J)&&!da(J)?J.map(ee=>mf(ee,re)).join(", "):J}(C,d);return{scale:S,orient:w,grid:!1,...H?{title:H}:{},...G,...d.aria===!1?{aria:!1}:{},zindex:Ve(L,0)}}}}function vu(l){let{axes:s}=l.component,d=[];for(let h of Jr)if(s[h]){for(let y of s[h])if(!y.get("disable")&&!y.get("gridScale")){let w=h==="x"?"height":"width",S=l.getSizeSignalRef(w).signal;w!==S&&d.push({name:w,update:S})}}return d}function ci(l,s,d,h){return Object.assign.apply(null,[{},...l.map(y=>{if(y==="axisOrient"){let w=d==="x"?"bottom":"left",S=s[d==="x"?"axisBottom":"axisLeft"]||{},A=s[d==="x"?"axisTop":"axisRight"]||{},C=new Set([...be(S),...be(A)]),L={};for(let G of C.values())L[G]={signal:`${h.signal} === "${w}" ? ${fa(S[G])} : ${fa(A[G])}`};return L}return s[y]})])}function t1(l,s){let d=[{}];for(let h of l){let y=s[h]?.style;if(y){y=b.array(y);for(let w of y)d.push(s.style[w])}}return Object.assign.apply(null,d)}function ag(l,s,d){let h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},y=x0(l,d,s);if(y!==void 0)return{configFrom:"style",configValue:y};for(let w of["vlOnlyAxisConfig","vgAxisConfig","axisConfigStyle"])if(h[w]?.[l]!==void 0)return{configFrom:w,configValue:h[w][l]};return{}}let $y={scale:l=>{let{model:s,channel:d}=l;return s.scaleName(d)},format:l=>{let{format:s}=l;return s},formatType:l=>{let{formatType:s}=l;return s},grid:l=>{let{fieldOrDatumDef:s,axis:d,scaleType:h}=l;return d.grid??function(y,w){return!Gn(y)&&Ue(w)&&!Wt(w?.bin)&&!Bn(w?.bin)}(h,s)},gridScale:l=>{let{model:s,channel:d}=l;return function(h,y){let w=y==="x"?"y":"x";if(h.getScaleComponent(w))return h.scaleName(w)}(s,d)},labelAlign:l=>{let{axis:s,labelAngle:d,orient:h,channel:y}=l;return s.labelAlign||Uy(d,h,y)},labelAngle:l=>{let{labelAngle:s}=l;return s},labelBaseline:l=>{let{axis:s,labelAngle:d,orient:h,channel:y}=l;return s.labelBaseline||By(d,h,y)},labelFlush:l=>{let{axis:s,fieldOrDatumDef:d,channel:h}=l;return s.labelFlush??function(y,w){if(w==="x"&&Z(["quantitative","temporal"],y))return!0}(d.type,h)},labelOverlap:l=>{let{axis:s,fieldOrDatumDef:d,scaleType:h}=l;return s.labelOverlap??function(y,w,S,A){if(S&&!b.isObject(A)||y!=="nominal"&&y!=="ordinal")return w!=="log"&&w!=="symlog"||"greedy"}(d.type,h,Ue(d)&&!!d.timeUnit,Ue(d)?d.sort:void 0)},orient:l=>{let{orient:s}=l;return s},tickCount:l=>{let{channel:s,model:d,axis:h,fieldOrDatumDef:y,scaleType:w}=l,S=s==="x"?"width":s==="y"?"height":void 0,A=S?d.getSizeSignalRef(S):void 0;return h.tickCount??function(C){let{fieldOrDatumDef:L,scaleType:G,size:H,values:J}=C;if(!J&&!Gn(G)&&G!=="log"){if(Ue(L)){if(Wt(L.bin))return{signal:`ceil(${H.signal}/10)`};if(L.timeUnit&&Z(["month","hours","day","quarter"],zn(L.timeUnit)?.unit))return}return{signal:`ceil(${H.signal}/40)`}}}({fieldOrDatumDef:y,scaleType:w,size:A,values:h.values})},tickMinStep:function(l){let{format:s,fieldOrDatumDef:d}=l;if(s==="d")return 1;if(Ue(d)){let{timeUnit:h}=d;if(h){let y=$0(h);if(y)return{signal:y}}}},title:l=>{let{axis:s,model:d,channel:h}=l;if(s.title!==void 0)return s.title;let y=zy(d,h);if(y!==void 0)return y;let w=d.typedFieldDef(h),S=h==="x"?"x2":"y2",A=d.fieldDef(S);return Hl(w?[Kh(w)]:[],Ue(A)?[Kh(A)]:[])},values:l=>{let{axis:s,fieldOrDatumDef:d}=l;return function(h,y){let w=h.values;if(b.isArray(w))return pc(y,w);if(Ke(w))return w}(s,d)},zindex:l=>{let{axis:s,fieldOrDatumDef:d,mark:h}=l;return s.zindex??function(y,w){return y==="rect"&&tu(w)?1:0}(h,d)}};function rg(l){return`(((${l.signal} % 360) + 360) % 360)`}function By(l,s,d,h){if(l!==void 0){if(d==="x"){if(Ke(l)){let y=rg(l);return{signal:`(45 < ${y} && ${y} < 135) || (225 < ${y} && ${y} < 315) ? "middle" :(${y} <= 45 || 315 <= ${y}) === ${Ke(s)?`(${s.signal} === "top")`:s==="top"} ? "bottom" : "top"`}}if(45<l&&l<135||225<l&&l<315)return"middle";if(Ke(s)){let y=l<=45||315<=l?"===":"!==";return{signal:`${s.signal} ${y} "top" ? "bottom" : "top"`}}return(l<=45||315<=l)==(s==="top")?"bottom":"top"}if(Ke(l)){let y=rg(l);return{signal:`${y} <= 45 || 315 <= ${y} || (135 <= ${y} && ${y} <= 225) ? ${h?'"middle"':"null"} : (45 <= ${y} && ${y} <= 135) === ${Ke(s)?`(${s.signal} === "left")`:s==="left"} ? "top" : "bottom"`}}if(l<=45||315<=l||135<=l&&l<=225)return h?"middle":null;if(Ke(s)){let y=45<=l&&l<=135?"===":"!==";return{signal:`${s.signal} ${y} "left" ? "top" : "bottom"`}}return(45<=l&&l<=135)==(s==="left")?"top":"bottom"}}function Uy(l,s,d){if(l===void 0)return;let h=d==="x",y=h?0:90,w=h?"bottom":"left";if(Ke(l)){let S=rg(l);return{signal:`(${y?`(${S} + 90)`:S} % 180 === 0) ? ${h?null:'"center"'} :(${y} < ${S} && ${S} < ${180+y}) === ${Ke(s)?`(${s.signal} === "${w}")`:s===w} ? "left" : "right"`}}if((l+y)%180==0)return h?null:"center";if(Ke(s)){let S=y<l&&l<180+y?"===":"!==";return{signal:`${`${s.signal} ${S} "${w}"`} ? "left" : "right"`}}return(y<l&&l<180+y)==(s===w)?"left":"right"}function zy(l,s){let d=s==="x"?"x2":"y2",h=l.fieldDef(s),y=l.fieldDef(d),w=h?h.title:void 0,S=y?y.title:void 0;return w&&S?ei(w,S):w||S||(w!==void 0?w:S!==void 0?S:void 0)}class al extends Ht{clone(){return new al(null,j(this.transform))}constructor(s,d){super(s),this.transform=d,nt(this,"_dependentFields",void 0),this._dependentFields=tp(this.transform.calculate)}static parseAllForSortIndex(s,d){return d.forEachFieldDef((h,y)=>{if(Li(h)&&cc(h.sort)){let{field:w,timeUnit:S}=h,A=h.sort,C=A.map((L,G)=>`${Zd({field:w,timeUnit:S,equal:L})} ? ${G} : `).join("")+A.length;s=new al(s,{calculate:C,as:rl(h,y,{forAs:!0})})}}),s}producedFields(){return new Set([this.transform.as])}dependentFields(){return this._dependentFields}assemble(){return{type:"formula",expr:this.transform.calculate,as:this.transform.as}}hash(){return`Calculate ${ae(this.transform)}`}}function rl(l,s,d){return Ge(l,{prefix:s,suffix:"sort_index",...d??{}})}function Pc(l,s){return Z(["top","bottom"],s)?"column":Z(["left","right"],s)||l==="row"?"row":"column"}function Yi(l,s,d,h){let y=h==="row"?d.headerRow:h==="column"?d.headerColumn:d.headerFacet;return Ve((s||{})[l],y[l],d.header[l])}function $c(l,s,d,h){let y={};for(let w of l){let S=Yi(w,s||{},d,h);S!==void 0&&(y[w]=S)}return y}let Eu=["row","column"],Bc=["header","footer"];function ms(l,s){let d=l.component.layoutHeaders[s].title,h=l.config?l.config:void 0,y=l.component.layoutHeaders[s].facetFieldDef?l.component.layoutHeaders[s].facetFieldDef:void 0,{titleAnchor:w,titleAngle:S,titleOrient:A}=$c(["titleAnchor","titleAngle","titleOrient"],y.header,h,s),C=Pc(s,A),L=Dt(S);return{name:`${s}-title`,type:"group",role:`${C}-title`,title:{text:d,...s==="row"?{orient:"left"}:{},style:"guide-title",...ig(L,C),...On(C,L,w),...Uc(h,y,s,cm,yc)}}}function On(l,s){switch(arguments.length>2&&arguments[2]!==void 0?arguments[2]:"middle"){case"start":return{align:"left"};case"end":return{align:"right"}}let d=Uy(s,l==="row"?"left":"top",l==="row"?"y":"x");return d?{align:d}:{}}function ig(l,s){let d=By(l,s==="row"?"left":"top",s==="row"?"y":"x",!0);return d?{baseline:d}:{}}function Gy(l,s){let d=l.component.layoutHeaders[s],h=[];for(let y of Bc)if(d[y])for(let w of d[y]){let S=il(l,s,y,d,w);S!=null&&h.push(S)}return h}function np(l,s){let{sort:d}=l;return ri(d)?{field:Ge(d,{expr:"datum"}),order:d.order??"ascending"}:b.isArray(d)?{field:rl(l,s,{expr:"datum"}),order:"ascending"}:{field:Ge(l,{expr:"datum"}),order:d??"ascending"}}function _o(l,s,d){let{format:h,formatType:y,labelAngle:w,labelAnchor:S,labelOrient:A,labelExpr:C}=$c(["format","formatType","labelAngle","labelAnchor","labelOrient","labelExpr"],l.header,d,s),L=Hh({fieldOrDatumDef:l,format:h,formatType:y,expr:"parent",config:d}).signal,G=Pc(s,A);return{text:{signal:C?_t(_t(C,"datum.label",L),"datum.value",Ge(l,{expr:"parent"})):L},...s==="row"?{orient:"left"}:{},style:"guide-label",frame:"group",...ig(w,G),...On(G,w,S),...Uc(d,l,s,dm,vc)}}function il(l,s,d,h,y){if(y){let w=null,{facetFieldDef:S}=h,A=l.config?l.config:void 0;if(S&&y.labels){let{labelOrient:H}=$c(["labelOrient"],S.header,A,s);(s==="row"&&!Z(["top","bottom"],H)||s==="column"&&!Z(["left","right"],H))&&(w=_o(S,s,A))}let C=Wa(l)&&!Zl(l.facet),L=y.axes,G=L?.length>0;if(w||G){let H=s==="row"?"height":"width";return{name:l.getName(`${s}_${d}`),type:"group",role:`${s}-${d}`,...h.facetFieldDef?{from:{data:l.getName(`${s}_domain`)},sort:np(S,s)}:{},...G&&C?{from:{data:l.getName(`facet_domain_${s}`)}}:{},...w?{title:w}:{},...y.sizeSignal?{encode:{update:{[H]:y.sizeSignal}}}:{},...G?{axes:L}:{}}}}return null}let jy={column:{start:0,end:1},row:{start:1,end:0}};function Hy(l,s){return jy[s][l]}function Uc(l,s,d,h,y){let w={};for(let S of h){if(!y[S])continue;let A=Yi(S,s?.header,l,d);A!==void 0&&(w[y[S]]=A)}return w}function fr(l){return[...zc(l,"width"),...zc(l,"height"),...zc(l,"childWidth"),...zc(l,"childHeight")]}function zc(l,s){let d=s==="width"?"x":"y",h=l.component.layoutSize.get(s);if(!h||h==="merged")return[];let y=l.getSizeSignalRef(s).signal;if(h==="step"){let w=l.getScaleComponent(d);if(w){let S=w.get("type"),A=w.get("range");if(Gn(S)&&po(A)){let C=l.scaleName(d);return Wa(l.parent)&&l.parent.component.resolve.scale[d]==="independent"?[Gc(C,A)]:[Gc(C,A),{name:y,update:ap(C,w,`domain('${C}').length`)}]}}throw new Error("layout size is step although width/height is not step.")}if(h=="container"){let w=y.endsWith("width"),S=w?"containerSize()[0]":"containerSize()[1]",A=`isFinite(${S}) ? ${S} : ${us(l.config.view,w?"width":"height")}`;return[{name:y,init:A,on:[{update:A,events:"window:resize"}]}]}return[{name:y,value:h}]}function Gc(l,s){let d=`${l}_step`;return Ke(s.step)?{name:d,update:s.step.signal}:{name:d,value:s.step}}function ap(l,s,d){let h=s.get("type"),y=s.get("padding"),w=Ve(s.get("paddingOuter"),y),S=s.get("paddingInner");return S=h==="band"?S!==void 0?S:y:1,`bandspace(${d}, ${fa(S)}, ${fa(w)}) * ${l}_step`}function og(l){return l==="childWidth"?"width":l==="childHeight"?"height":l}function sg(l,s){return be(l).reduce((d,h)=>{let y=l[h];return{...d,...mu(s,y,h,w=>rn(w.value))}},{})}function lg(l,s){if(Wa(s))return l==="theta"?"independent":"shared";if(vs(s))return"shared";if(Ki(s))return sn(l)||l==="theta"||l==="radius"?"independent":"shared";throw new Error("invalid model type for resolve")}function rp(l,s){let d=l.scale[s],h=sn(s)?"axis":"legend";return d==="independent"?(l[h][s]==="shared"&&$e(function(y){return`Setting the scale to be independent for "${y}" means we also have to set the guide (axis or legend) to be independent.`}(s)),"independent"):l[h][s]||"shared"}let ug=be({aria:1,clipHeight:1,columnPadding:1,columns:1,cornerRadius:1,description:1,direction:1,fillColor:1,format:1,formatType:1,gradientLength:1,gradientOpacity:1,gradientStrokeColor:1,gradientStrokeWidth:1,gradientThickness:1,gridAlign:1,labelAlign:1,labelBaseline:1,labelColor:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labelSeparation:1,legendX:1,legendY:1,offset:1,orient:1,padding:1,rowPadding:1,strokeColor:1,symbolDash:1,symbolDashOffset:1,symbolFillColor:1,symbolLimit:1,symbolOffset:1,symbolOpacity:1,symbolSize:1,symbolStrokeColor:1,symbolStrokeWidth:1,symbolType:1,tickCount:1,tickMinStep:1,title:1,titleAlign:1,titleAnchor:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleLineHeight:1,titleOpacity:1,titleOrient:1,titlePadding:1,type:1,values:1,zindex:1,disable:1,labelExpr:1,selections:1,opacity:1,shape:1,stroke:1,fill:1,size:1,strokeWidth:1,strokeDash:1,encode:1});class qy extends Ui{}let ol={symbols:function(l,s){let{fieldOrDatumDef:d,model:h,channel:y,legendCmpt:w,legendType:S}=s;if(S!=="symbol")return;let{markDef:A,encoding:C,config:L,mark:G}=h,H=A.filled&&G!=="trail",J={...Pd({},h,O_),...Oc(h,{filled:H})},re=w.get("symbolOpacity")??L.legend.symbolOpacity,ee=w.get("symbolFillColor")??L.legend.symbolFillColor,se=w.get("symbolStrokeColor")??L.legend.symbolStrokeColor,de=re===void 0?cg(C.opacity)??A.opacity:void 0;if(J.fill){if(y==="fill"||H&&y===Me)delete J.fill;else if(J.fill.field)ee?delete J.fill:(J.fill=rn(L.legend.symbolBaseFillColor??"black"),J.fillOpacity=rn(de??1));else if(b.isArray(J.fill)){let fe=dg(C.fill??C.color)??A.fill??(H&&A.color);fe&&(J.fill=rn(fe))}}if(J.stroke){if(y==="stroke"||!H&&y===Me)delete J.stroke;else if(J.stroke.field||se)delete J.stroke;else if(b.isArray(J.stroke)){let fe=Ve(dg(C.stroke||C.color),A.stroke,H?A.color:void 0);fe&&(J.stroke={value:fe})}}if(y!==_i){let fe=Ue(d)&&jc(h,w,d);fe?J.opacity=[{test:fe,...rn(de??1)},rn(L.legend.unselectedOpacity)]:de&&(J.opacity=rn(de))}return J={...J,...l},ye(J)?void 0:J},gradient:function(l,s){let{model:d,legendType:h,legendCmpt:y}=s;if(h!=="gradient")return;let{config:w,markDef:S,encoding:A}=d,C={},L=(y.get("gradientOpacity")??w.legend.gradientOpacity)===void 0?cg(A.opacity)||S.opacity:void 0;return L&&(C.opacity=rn(L)),C={...C,...l},ye(C)?void 0:C},labels:function(l,s){let{fieldOrDatumDef:d,model:h,channel:y,legendCmpt:w}=s,S=h.legend(y)||{},A=h.config,C=Ue(d)?jc(h,w,d):void 0,L=C?[{test:C,value:1},{value:A.legend.unselectedOpacity}]:void 0,{format:G,formatType:H}=S,J;Vs(H)?J=ai({fieldOrDatumDef:d,field:"datum.value",format:G,formatType:H,config:A}):G===void 0&&H===void 0&&A.customFormatTypes&&(d.type==="quantitative"&&A.numberFormatType?J=ai({fieldOrDatumDef:d,field:"datum.value",format:A.numberFormat,formatType:A.numberFormatType,config:A}):d.type==="temporal"&&A.timeFormatType&&Ue(d)&&d.timeUnit===void 0&&(J=ai({fieldOrDatumDef:d,field:"datum.value",format:A.timeFormat,formatType:A.timeFormatType,config:A})));let re={...L?{opacity:L}:{},...J?{text:J}:{},...l};return ye(re)?void 0:re},entries:function(l,s){let{legendCmpt:d}=s;return d.get("selections")?.length?{...l,fill:{value:"transparent"}}:l}};function cg(l){return fg(l,(s,d)=>Math.max(s,d.value))}function dg(l){return fg(l,(s,d)=>Ve(s,d.value))}function fg(l,s){return function(d){let h=d?.condition;return!!h&&(b.isArray(h)||ur(h))}(l)?b.array(l.condition).reduce(s,l.value):ur(l)?l.value:void 0}function jc(l,s,d){let h=s.get("selections");if(!h?.length)return;let y=b.stringValue(d.field);return h.map(w=>`(!length(data(${b.stringValue(Pe(w)+ps)})) || (${w}[${y}] && indexof(${w}[${y}], datum.value) >= 0))`).join(" || ")}let di={direction:l=>{let{direction:s}=l;return s},format:l=>{let{fieldOrDatumDef:s,legend:d,config:h}=l,{format:y,formatType:w}=d;return Z0(s,s.type,y,w,h,!1)},formatType:l=>{let{legend:s,fieldOrDatumDef:d,scaleType:h}=l,{formatType:y}=s;return J0(y,d,h)},gradientLength:l=>{let{legend:s,legendConfig:d}=l;return s.gradientLength??d.gradientLength??function(h){let{legendConfig:y,model:w,direction:S,orient:A,scaleType:C}=h,{gradientHorizontalMaxLength:L,gradientHorizontalMinLength:G,gradientVerticalMaxLength:H,gradientVerticalMinLength:J}=y;if(Mr(C))return S==="horizontal"?A==="top"||A==="bottom"?ip(w,"width",G,L):G:ip(w,"height",J,H)}(l)},labelOverlap:l=>{let{legend:s,legendConfig:d,scaleType:h}=l;return s.labelOverlap??d.labelOverlap??function(y){if(Z(["quantile","threshold","log","symlog"],y))return"greedy"}(h)},symbolType:l=>{let{legend:s,markDef:d,channel:h,encoding:y}=l;return s.symbolType??function(w,S,A,C){if(S!=="shape"){let L=dg(A)??C;if(L)return L}switch(w){case"bar":case"rect":case"image":case"square":return"square";case"line":case"trail":case"rule":return"stroke";case"arc":case"point":case"circle":case"tick":case"geoshape":case"area":case"text":return"circle"}}(d.type,h,y.shape,d.shape)},title:l=>{let{fieldOrDatumDef:s,config:d}=l;return is(s,d,{allowDisabling:!0})},type:l=>{let{legendType:s,scaleType:d,channel:h}=l;if(Jo(h)&&Mr(d)){if(s==="gradient")return}else if(s==="symbol")return;return s},values:l=>{let{fieldOrDatumDef:s,legend:d}=l;return function(h,y){let w=h.values;if(b.isArray(w))return pc(y,w);if(Ke(w))return w}(d,s)}};function pg(l){let{legend:s}=l;return Ve(s.type,function(d){let{channel:h,timeUnit:y,scaleType:w}=d;if(Jo(h)){if(Z(["quarter","month","day"],y))return"symbol";if(Mr(w))return"gradient"}return"symbol"}(l))}function hg(l){let{legendConfig:s,legendType:d,orient:h,legend:y}=l;return y.direction??s[d?"gradientDirection":"symbolDirection"]??function(w,S){switch(w){case"top":case"bottom":return"horizontal";case"left":case"right":case"none":case void 0:return;default:return S==="gradient"?"horizontal":void 0}}(h,d)}function ip(l,s,d,h){return{signal:`clamp(${l.getSizeSignalRef(s).signal}, ${d}, ${h})`}}function op(l){let s=ln(l)?function(d){let{encoding:h}=d,y={};for(let w of[Me,...Af]){let S=mn(h[w]);S&&d.getScaleComponent(w)&&(w===En&&Ue(S)&&S.type===Hs||(y[w]=ko(d,w)))}return y}(l):function(d){let{legends:h,resolve:y}=d.component;for(let w of d.children){op(w);for(let S of be(w.component.legends))y.legend[S]=rp(d.component.resolve,S),y.legend[S]==="shared"&&(h[S]=mg(h[S],w.component.legends[S]),h[S]||(y.legend[S]="independent",delete h[S]))}for(let w of be(h))for(let S of d.children)S.component.legends[w]&&y.legend[w]==="shared"&&delete S.component.legends[w];return h}(l);return l.component.legends=s,s}function sp(l,s,d,h){switch(s){case"disable":return d!==void 0;case"values":return!!d?.values;case"title":if(s==="title"&&l===h?.title)return!0}return l===(d||{})[s]}function ko(l,s){let d=l.legend(s),{markDef:h,encoding:y,config:w}=l,S=w.legend,A=new qy({},function(we,Te){let Fe=we.scaleName(Te);if(we.mark==="trail"){if(Te==="color")return{stroke:Fe};if(Te==="size")return{strokeWidth:Fe}}return Te==="color"?we.markDef.filled?{fill:Fe}:{stroke:Fe}:{[Te]:Fe}}(l,s));(function(we,Te,Fe){let He=we.fieldDef(Te)?.field;for(let tt of Se(we.component.selection??{})){let ut=tt.project.hasField[He]??tt.project.hasChannel[Te];if(ut&&My.defined(tt)){let Qe=Fe.get("selections")??[];Qe.push(tt.name),Fe.set("selections",Qe,!1),ut.hasLegend=!0}}})(l,s,A);let C=d!==void 0?!d:S.disable;if(A.set("disable",C,d!==void 0),C)return A;d=d||{};let L=l.getScaleComponent(s).get("type"),G=mn(y[s]),H=Ue(G)?zn(G.timeUnit)?.unit:void 0,J=d.orient||w.legend.orient||"right",re=pg({legend:d,channel:s,timeUnit:H,scaleType:L}),ee={legend:d,channel:s,model:l,markDef:h,encoding:y,fieldOrDatumDef:G,legendConfig:S,config:w,scaleType:L,orient:J,legendType:re,direction:hg({legend:d,legendType:re,orient:J,legendConfig:S})};for(let we of ug){if(re==="gradient"&&we.startsWith("symbol")||re==="symbol"&&we.startsWith("gradient"))continue;let Te=we in di?di[we](ee):d[we];if(Te!==void 0){let Fe=sp(Te,we,d,l.fieldDef(s));(Fe||w.legend[we]===void 0)&&A.set(we,Te,Fe)}}let se=d?.encoding??{},de=A.get("selections"),fe={},ge={fieldOrDatumDef:G,model:l,channel:s,legendCmpt:A,legendType:re};for(let we of["labels","legend","title","symbols","gradient","entries"]){let Te=sg(se[we]??{},l),Fe=we in ol?ol[we](Te,ge):Te;Fe===void 0||ye(Fe)||(fe[we]={...de?.length&&Ue(G)?{name:`${Pe(G.field)}_legend_${we}`}:{},...de?.length?{interactive:!!de}:{},update:Fe})}return ye(fe)||A.set("encode",fe,!!d?.encoding),A}function mg(l,s){if(!l)return s.clone();let d=l.getWithExplicit("orient"),h=s.getWithExplicit("orient");if(d.explicit&&h.explicit&&d.value!==h.value)return;let y=!1;for(let w of ug){let S=Gi(l.getWithExplicit(w),s.getWithExplicit(w),w,"legend",(A,C)=>{switch(w){case"symbolType":return Wy(A,C);case"title":return ti(A,C);case"type":return y=!0,Lr("symbol")}return Tc(A,C,w,"legend")});l.setWithExplicit(w,S)}return y&&(l.implicit?.encode?.gradient&&lt(l.implicit,["encode","gradient"]),l.explicit?.encode?.gradient&&lt(l.explicit,["encode","gradient"])),l}function Wy(l,s){return s.value==="circle"?s:l}function lp(l){let s=l.component.legends,d={};for(let h of be(s)){let y=Ye(l.getScaleComponent(h).get("domains"));if(d[y])for(let w of d[y])mg(w,s[h])||d[y].push(s[h]);else d[y]=[s[h].clone()]}return Se(d).flat().map(h=>function(y,w){let{disable:S,labelExpr:A,selections:C,...L}=y.combine();if(!S){if(w.aria===!1&&L.aria==null&&(L.aria=!1),L.encode?.symbols){let G=L.encode.symbols.update;!G.fill||G.fill.value==="transparent"||G.stroke||L.stroke||(G.stroke={value:"transparent"});for(let H of Af)L[H]&&delete G[H]}if(L.title||delete L.title,A!==void 0){let G=A;L.encode?.labels?.update&&Ke(L.encode.labels.update.text)&&(G=_t(A,"datum.label",L.encode.labels.update.text.signal)),function(H,J,re,ee){H.encode??={},H.encode[J]??={},H.encode[J].update??={},H.encode[J].update[re]=ee}(L,"labels","text",{signal:G})}return L}}(h,l.config)).filter(h=>h!==void 0)}function gg(l){return vs(l)||Ki(l)?function(s){return s.children.reduce((d,h)=>d.concat(h.assembleProjections()),Hc(s))}(l):Hc(l)}function Hc(l){let s=l.component.projection;if(!s||s.merged)return[];let d=s.combine(),{name:h}=d;if(s.data){let y={signal:`[${s.size.map(S=>S.signal).join(", ")}]`},w=s.data.reduce((S,A)=>{let C=Ke(A)?A.signal:`data('${l.lookupDataSource(A)}')`;return Z(S,C)||S.push(C),S},[]);if(w.length<=0)throw new Error("Projection's fit didn't find any data sources");return[{name:h,size:y,fit:{signal:w.length>1?`[${w.join(", ")}]`:w[0]},...d}]}return[{name:h,translate:{signal:"[width / 2, height / 2]"},...d}]}let qc=["type","clipAngle","clipExtent","center","rotate","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];class bg extends Ui{constructor(s,d,h,y){super({...d},{name:s}),this.specifiedProjection=d,this.size=h,this.data=y,nt(this,"merged",!1)}get isFit(){return!!this.data}}function yg(l){l.component.projection=ln(l)?function(s){if(s.hasProjection){let d=Jn(s.specifiedProjection),h=!(d&&(d.scale!=null||d.translate!=null)),y=h?[s.getSizeSignalRef("width"),s.getSizeSignalRef("height")]:void 0,w=h?function(A){let C=[],{encoding:L}=A;for(let G of[[Fa,et],[ar,ca]])(mn(L[G[0]])||mn(L[G[1]]))&&C.push({signal:A.getName(`geojson_${C.length}`)});return A.channelHasField(En)&&A.typedFieldDef(En).type===Hs&&C.push({signal:A.getName(`geojson_${C.length}`)}),C.length===0&&C.push(A.requestDataName(tn.Main)),C}(s):void 0,S=new bg(s.projectionName(!0),{...Jn(s.config.projection)??{},...d??{}},y,w);return S.get("type")||S.set("type","equalEarth",!1),S}}(l):function(s){if(s.children.length===0)return;let d;for(let y of s.children)yg(y);let h=le(s.children,y=>{let w=y.component.projection;if(w){if(d){let S=function(A,C){let L=le(qc,G=>!b.hasOwnProperty(A.explicit,G)&&!b.hasOwnProperty(C.explicit,G)||!!(b.hasOwnProperty(A.explicit,G)&&b.hasOwnProperty(C.explicit,G)&&Re(A.get(G),C.get(G))));if(Re(A.size,C.size)){if(L)return A;if(Re(A.explicit,{}))return C;if(Re(C.explicit,{}))return A}return null}(d,w);return S&&(d=S),!!S}return d=w,!0}return!0});if(d&&h){let y=s.projectionName(!0),w=new bg(y,d.specifiedProjection,d.size,j(d.data));for(let S of s.children){let A=S.component.projection;A&&(A.isFit&&w.data.push(...S.component.projection.data),S.renameProjection(A.get("name"),y),A.merged=!0)}return w}}(l)}function Vy(l,s,d,h){if(ru(s,d)){let y=ln(l)?l.axis(d)??l.legend(d)??{}:{},w=Ge(s,{expr:"datum"}),S=Ge(s,{expr:"datum",binSuffix:"end"});return{formulaAs:Ge(s,{binSuffix:"range",forAs:!0}),formula:mo(w,S,y.format,y.formatType,h)}}return{}}function up(l,s){return`${Ri(l)}_${s}`}function xo(l,s,d){let h=up(at(d,void 0)??{},s);return l.getName(`${h}_bins`)}function vg(l,s,d){let h,y;h=function(L){return"as"in L}(l)?b.isString(l.as)?[l.as,`${l.as}_end`]:[l.as[0],l.as[1]]:[Ge(l,{forAs:!0}),Ge(l,{binSuffix:"end",forAs:!0})];let w={...at(s,void 0)},S=up(w,l.field),{signal:A,extentSignal:C}=function(L,G){return{signal:L.getName(`${G}_bins`),extentSignal:L.getName(`${G}_extent`)}}(d,S);if(Ir(w.extent)){let L=w.extent;y=wo(d,L.param,L),delete w.extent}return{key:S,binComponent:{bin:w,field:l.field,as:[h],...A?{signal:A}:{},...C?{extentSignal:C}:{},...y?{span:y}:{}}}}class fi extends Ht{clone(){return new fi(null,j(this.bins))}constructor(s,d){super(s),this.bins=d}static makeFromEncoding(s,d){let h=d.reduceFieldDef((y,w,S)=>{if(ha(w)&&Wt(w.bin)){let{key:A,binComponent:C}=vg(w,w.bin,d);y[A]={...C,...y[A],...Vy(d,w,S,d.config)}}return y},{});return ye(h)?null:new fi(s,h)}static makeFromTransform(s,d,h){let{key:y,binComponent:w}=vg(d,d.bin,h);return new fi(s,{[y]:w})}merge(s,d){for(let h of be(s.bins))h in this.bins?(d(s.bins[h].signal,this.bins[h].signal),this.bins[h].as=Ae([...this.bins[h].as,...s.bins[h].as],ae)):this.bins[h]=s.bins[h];for(let h of s.children)s.removeChild(h),h.parent=this;s.remove()}producedFields(){return new Set(Se(this.bins).map(s=>s.as).flat(2))}dependentFields(){return new Set(Se(this.bins).map(s=>s.field))}hash(){return`Bin ${ae(this.bins)}`}assemble(){return Se(this.bins).flatMap(s=>{let d=[],[h,...y]=s.as,{extent:w,...S}=s.bin,A={type:"bin",field:Gt(s.field),as:h,signal:s.signal,...Ir(w)?{extent:null}:{extent:w},...s.span?{span:{signal:`span(${s.span})`}}:{},...S};!w&&s.extentSignal&&(d.push({type:"extent",field:Gt(s.field),signal:s.extentSignal}),A.extent={signal:s.extentSignal}),d.push(A);for(let C of y)for(let L=0;L<2;L++)d.push({type:"formula",expr:Ge({field:h[L]},{expr:"datum"}),as:C[L]});return s.formula&&d.push({type:"formula",expr:s.formula,as:s.formulaAs}),d})}}function Yy(l,s,d,h){let y=ln(h)?h.encoding[Si(s)]:void 0;if(ha(d)&&ln(h)&&cf(d,y,h.markDef,h.config)){l.add(Ge(d,{})),l.add(Ge(d,{suffix:"end"}));let{mark:w,markDef:S,config:A}=h,C=Di({fieldDef:d,markDef:S,config:A});lc(w)&&C!==.5&&sn(s)&&(l.add(Ge(d,{suffix:Vf})),l.add(Ge(d,{suffix:Ft}))),d.bin&&ru(d,s)&&l.add(Ge(d,{binSuffix:"range"}))}else if(Zo(s)){let w=ph(s);l.add(h.getName(w))}else l.add(Ge(d));return Li(d)&&function(w){return b.isObject(w)&&"field"in w}(d.scale?.range)&&l.add(d.scale.range.field),l}class qa extends Ht{clone(){return new qa(null,new Set(this.dimensions),j(this.measures))}constructor(s,d,h){super(s),this.dimensions=d,this.measures=h}get groupBy(){return this.dimensions}static makeFromEncoding(s,d){let h=!1;d.forEachFieldDef(S=>{S.aggregate&&(h=!0)});let y={},w=new Set;return h?(d.forEachFieldDef((S,A)=>{let{aggregate:C,field:L}=S;if(C)if(C==="count")y["*"]??={},y["*"].count=new Set([Ge(S,{forAs:!0})]);else{if(Qr(C)||Ti(C)){let G=Qr(C)?"argmin":"argmax",H=C[G];y[H]??={},y[H][G]=new Set([Ge({op:G,field:H},{forAs:!0})])}else y[L]??={},y[L][C]=new Set([Ge(S,{forAs:!0})]);Rr(A)&&d.scaleDomain(A)==="unaggregated"&&(y[L]??={},y[L].min=new Set([Ge({field:L,aggregate:"min"},{forAs:!0})]),y[L].max=new Set([Ge({field:L,aggregate:"max"},{forAs:!0})]))}else Yy(w,A,S,d)}),w.size+be(y).length===0?null:new qa(s,w,y)):null}static makeFromTransform(s,d){let h=new Set,y={};for(let w of d.aggregate){let{op:S,field:A,as:C}=w;S&&(S==="count"?(y["*"]??={},y["*"].count=new Set([C||Ge(w,{forAs:!0})])):(y[A]??={},y[A][S]=new Set([C||Ge(w,{forAs:!0})])))}for(let w of d.groupby??[])h.add(w);return h.size+be(y).length===0?null:new qa(s,h,y)}merge(s){return Ne(this.dimensions,s.dimensions)?(function(d,h){for(let y of be(h)){let w=h[y];for(let S of be(w))y in d?d[y][S]=new Set([...d[y][S]??[],...w[S]]):d[y]={[S]:w[S]}}}(this.measures,s.measures),!0):(function(){ac.debug(...arguments)}("different dimensions, cannot merge"),!1)}addDimensions(s){s.forEach(this.dimensions.add,this.dimensions)}dependentFields(){return new Set([...this.dimensions,...be(this.measures)])}producedFields(){let s=new Set;for(let d of be(this.measures))for(let h of be(this.measures[d])){let y=this.measures[d][h];y.size===0?s.add(`${h}_${d}`):y.forEach(s.add,s)}return s}hash(){return`Aggregate ${ae({dimensions:this.dimensions,measures:this.measures})}`}assemble(){let s=[],d=[],h=[];for(let y of be(this.measures))for(let w of be(this.measures[y]))for(let S of this.measures[y][w])h.push(S),s.push(w),d.push(y==="*"?null:Gt(y));return{type:"aggregate",groupby:[...this.dimensions].map(Gt),ops:s,fields:d,as:h}}}class sl extends Ht{constructor(s,d,h,y){super(s),this.model=d,this.name=h,this.data=y,nt(this,"column",void 0),nt(this,"row",void 0),nt(this,"facet",void 0),nt(this,"childModel",void 0);for(let w of $a){let S=d.facet[w];if(S){let{bin:A,sort:C}=S;this[w]={name:d.getName(`${w}_domain`),fields:[Ge(S),...Wt(A)?[Ge(S,{binSuffix:"end"})]:[]],...ri(C)?{sortField:C}:b.isArray(C)?{sortIndexField:rl(S,w)}:{}}}}this.childModel=d.child}hash(){let s="Facet";for(let d of $a)this[d]&&(s+=` ${d.charAt(0)}:${ae(this[d])}`);return s}get fields(){let s=[];for(let d of $a)this[d]?.fields&&s.push(...this[d].fields);return s}dependentFields(){let s=new Set(this.fields);for(let d of $a)this[d]&&(this[d].sortField&&s.add(this[d].sortField.field),this[d].sortIndexField&&s.add(this[d].sortIndexField));return s}producedFields(){return new Set}getSource(){return this.name}getChildIndependentFieldsWithStep(){let s={};for(let d of Jr){let h=this.childModel.component.scales[d];if(h&&!h.merged){let y=h.get("type"),w=h.get("range");if(Gn(y)&&po(w)){let S=Ag(ys(this.childModel,d));S?s[d]=S:$e(pa(d))}}}return s}assembleRowColumnHeaderData(s,d,h){let y={row:"y",column:"x",facet:void 0}[s],w=[],S=[],A=[];y&&h&&h[y]&&(d?(w.push(`distinct_${h[y]}`),S.push("max")):(w.push(h[y]),S.push("distinct")),A.push(`distinct_${h[y]}`));let{sortField:C,sortIndexField:L}=this[s];if(C){let{op:G=uc,field:H}=C;w.push(H),S.push(G),A.push(Ge(C,{forAs:!0}))}else L&&(w.push(L),S.push("max"),A.push(L));return{name:this[s].name,source:d??this.data,transform:[{type:"aggregate",groupby:this[s].fields,...w.length?{fields:w,ops:S,as:A}:{}}]}}assembleFacetHeaderData(s){let{columns:d}=this.model.layout,{layoutHeaders:h}=this.model.component,y=[],w={};for(let C of Eu){for(let L of Bc){let G=(h[C]&&h[C][L])??[];for(let H of G)if(H.axes?.length>0){w[C]=!0;break}}if(w[C]){let L=`length(data("${this.facet.name}"))`,G=C==="row"?d?{signal:`ceil(${L} / ${d})`}:1:d?{signal:`min(${L}, ${d})`}:{signal:L};y.push({name:`${this.facet.name}_${C}`,transform:[{type:"sequence",start:0,stop:G}]})}}let{row:S,column:A}=w;return(S||A)&&y.unshift(this.assembleRowColumnHeaderData("facet",null,s)),y}assemble(){let s=[],d=null,h=this.getChildIndependentFieldsWithStep(),{column:y,row:w,facet:S}=this;if(y&&w&&(h.x||h.y)){d=`cross_${this.column.name}_${this.row.name}`;let A=[].concat(h.x??[],h.y??[]),C=A.map(()=>"distinct");s.push({name:d,source:this.data,transform:[{type:"aggregate",groupby:this.fields,fields:A,ops:C}]})}for(let A of[Yr,Je])this[A]&&s.push(this.assembleRowColumnHeaderData(A,d,h));if(S){let A=this.assembleFacetHeaderData(h);A&&s.push(...A)}return s}}function Wc(l){return l.startsWith("'")&&l.endsWith("'")||l.startsWith('"')&&l.endsWith('"')?l.slice(1,-1):l}function n1(l){let s={};return P(l.filter,d=>{if(ql(d)){let h=null;Yd(d)?h=Un(d.equal):Gs(d)?h=Un(d.lte):zs(d)?h=Un(d.lt):js(d)?h=Un(d.gt):Mh(d)?h=Un(d.gte):Kd(d)?h=d.range[0]:Xd(d)&&(h=(d.oneOf??d.in)[0]),h&&(Bs(h)?s[d.field]="date":b.isNumber(h)?s[d.field]="number":b.isString(h)&&(s[d.field]="string")),d.timeUnit&&(s[d.field]="date")}}),s}function Wn(l){let s={};function d(h){var y;Rt(h)?s[h.field]="date":h.type==="quantitative"&&(y=h.aggregate,b.isString(y)&&Z(["min","max"],y))?s[h.field]="number":Kt(h.field)>1?h.field in s||(s[h.field]="flatten"):Li(h)&&ri(h.sort)&&Kt(h.sort.field)>1&&(h.sort.field in s||(s[h.sort.field]="flatten"))}if((ln(l)||Wa(l))&&l.forEachFieldDef((h,y)=>{if(ha(h))d(h);else{let w=Ps(y),S=l.fieldDef(w);d({...h,type:S.type})}}),ln(l)){let{mark:h,markDef:y,encoding:w}=l;if(as(h)&&!l.encoding.order){let S=w[y.orient==="horizontal"?"y":"x"];Ue(S)&&S.type==="quantitative"&&!(S.field in s)&&(s[S.field]="number")}}return s}class Vn extends Ht{clone(){return new Vn(null,j(this._parse))}constructor(s,d){super(s),nt(this,"_parse",void 0),this._parse=d}hash(){return`Parse ${ae(this._parse)}`}static makeExplicit(s,d,h){let y={},w=d.data;return!bo(w)&&w?.format?.parse&&(y=w.format.parse),this.makeWithAncestors(s,y,{},h)}static makeWithAncestors(s,d,h,y){for(let A of be(h)){let C=y.getWithExplicit(A);C.value!==void 0&&(C.explicit||C.value===h[A]||C.value==="derived"||h[A]==="flatten"?delete h[A]:$e(Or(A,h[A],C.value)))}for(let A of be(d)){let C=y.get(A);C!==void 0&&(C===d[A]?delete d[A]:$e(Or(A,d[A],C)))}let w=new Ui(d,h);y.copyAll(w);let S={};for(let A of be(w.combine())){let C=w.get(A);C!==null&&(S[A]=C)}return be(S).length===0||y.parseNothing?null:new Vn(s,S)}get parse(){return this._parse}merge(s){this._parse={...this._parse,...s.parse},s.remove()}assembleFormatParse(){let s={};for(let d of be(this._parse)){let h=this._parse[d];Kt(d)===1&&(s[d]=h)}return s}producedFields(){return new Set(be(this._parse))}dependentFields(){return new Set(be(this._parse))}assembleTransforms(){let s=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return be(this._parse).filter(d=>!s||Kt(d)>1).map(d=>{let h=function(y,w){let S=kt(y);return w==="number"?`toNumber(${S})`:w==="boolean"?`toBoolean(${S})`:w==="string"?`toString(${S})`:w==="date"?`toDate(${S})`:w==="flatten"?S:w.startsWith("date:")?`timeParse(${S},'${Wc(w.slice(5,w.length))}')`:w.startsWith("utc:")?`utcParse(${S},'${Wc(w.slice(4,w.length))}')`:($e(`Unrecognized parse "${w}".`),null)}(d,this._parse[d]);return h?{type:"formula",expr:h,as:St(d)}:null}).filter(d=>d!==null)}}class So extends Ht{clone(){return new So(null)}constructor(s){super(s)}dependentFields(){return new Set}producedFields(){return new Set([dr])}hash(){return"Identifier"}assemble(){return{type:"identifier",as:dr}}}class Vc extends Ht{clone(){return new Vc(null,this.params)}constructor(s,d){super(s),this.params=d}dependentFields(){return new Set}producedFields(){}hash(){return`Graticule ${ae(this.params)}`}assemble(){return{type:"graticule",...this.params===!0?{}:this.params}}}class Yc extends Ht{clone(){return new Yc(null,this.params)}constructor(s,d){super(s),this.params=d}dependentFields(){return new Set}producedFields(){return new Set([this.params.as??"data"])}hash(){return`Hash ${ae(this.params)}`}assemble(){return{type:"sequence",...this.params}}}class Ao extends Ht{constructor(s){let d;if(super(null),nt(this,"_data",void 0),nt(this,"_name",void 0),nt(this,"_generator",void 0),s??={name:"source"},bo(s)||(d=s.format?{...Q(s.format,["parse"])}:{}),pu(s))this._data={values:s.values};else if(cs(s)){if(this._data={url:s.url},!d.type){let h=/(?:\.([^.]+))?$/.exec(s.url)[1];Z(["json","csv","tsv","dsv","topojson"],h)||(h="json"),d.type=h}}else Hf(s)?this._data={values:[{type:"Sphere"}]}:(Gf(s)||bo(s))&&(this._data={});this._generator=bo(s),s.name&&(this._name=s.name),d&&!ye(d)&&(this._data.format=d)}dependentFields(){return new Set}producedFields(){}get data(){return this._data}hasName(){return!!this._name}get isGenerator(){return this._generator}get dataName(){return this._name}set dataName(s){this._name=s}set parent(s){throw new Error("Source nodes have to be roots.")}remove(){throw new Error("Source nodes are roots and cannot be removed.")}hash(){throw new Error("Cannot hash sources")}assemble(){return{name:this._name,...this._data,transform:[]}}}function cp(l){return l instanceof Ao||l instanceof Vc||l instanceof Yc}var Kc=new WeakMap;class dp{constructor(){b_(this,Kc,{writable:!0,value:void 0}),S0(this,Kc,!1)}setModified(){S0(this,Kc,!0)}get modifiedFlag(){return function(d,h){return h.get?h.get.call(d):h.value}(s=this,A0(s,Kc,"get"));var s}}class ia extends dp{getNodeDepths(s,d,h){h.set(s,d);for(let y of s.children)this.getNodeDepths(y,d+1,h);return h}optimize(s){let d=[...this.getNodeDepths(s,0,new Map).entries()].sort((h,y)=>y[1]-h[1]);for(let h of d)this.run(h[0]);return this.modifiedFlag}}class fp extends dp{optimize(s){this.run(s);for(let d of s.children)this.optimize(d);return this.modifiedFlag}}class Eg extends fp{mergeNodes(s,d){let h=d.shift();for(let y of d)s.removeChild(y),y.parent=h,y.remove()}run(s){let d=s.children.map(y=>y.hash()),h={};for(let y=0;y<d.length;y++)h[d[y]]===void 0?h[d[y]]=[s.children[y]]:h[d[y]].push(s.children[y]);for(let y of be(h))h[y].length>1&&(this.setModified(),this.mergeNodes(s,h[y]))}}class wg extends fp{constructor(s){super(),nt(this,"requiresSelectionId",void 0),this.requiresSelectionId=s&&ng(s)}run(s){s instanceof So&&(this.requiresSelectionId&&(cp(s.parent)||s.parent instanceof qa||s.parent instanceof Vn)||(this.setModified(),s.remove()))}}class Ky extends dp{optimize(s){return this.run(s,new Set),this.modifiedFlag}run(s,d){let h=new Set;s instanceof ji&&(h=s.producedFields(),Le(h,d)&&(this.setModified(),s.removeFormulas(d),s.producedFields.length===0&&s.remove()));for(let y of s.children)this.run(y,new Set([...d,...h]))}}class gs extends fp{constructor(){super()}run(s){s instanceof aa&&!s.isRequired()&&(this.setModified(),s.remove())}}class Xc extends ia{run(s){if(!(cp(s)||s.numChildren()>1)){for(let d of s.children)if(d instanceof Vn)if(s instanceof Vn)this.setModified(),s.merge(d);else{if(Ee(s.producedFields(),d.dependentFields()))continue;this.setModified(),d.swapWithParent()}}}}class pp extends ia{run(s){let d=[...s.children],h=s.children.filter(y=>y instanceof Vn);if(s.numChildren()>1&&h.length>=1){let y={},w=new Set;for(let S of h){let A=S.parse;for(let C of be(A))C in y?y[C]!==A[C]&&w.add(C):y[C]=A[C]}for(let S of w)delete y[S];if(!ye(y)){this.setModified();let S=new Vn(s,y);for(let A of d){if(A instanceof Vn)for(let C of be(y))delete A.parse[C];s.removeChild(A),A.parent=S,A instanceof Vn&&be(A.parse).length===0&&A.remove()}}}}}class Xy extends ia{run(s){s instanceof aa||s.numChildren()>0||s instanceof sl||s instanceof Ao||(this.setModified(),s.remove())}}class _g extends ia{run(s){let d=s.children.filter(y=>y instanceof ji),h=d.pop();for(let y of d)this.setModified(),h.merge(y)}}class Zy extends ia{run(s){let d=s.children.filter(y=>y instanceof qa),h={};for(let y of d){let w=ae(y.groupBy);w in h||(h[w]=[]),h[w].push(y)}for(let y of be(h)){let w=h[y];if(w.length>1){let S=w.pop();for(let A of w)S.merge(A)&&(s.removeChild(A),A.parent=S,A.remove(),this.setModified())}}}}class Jy extends ia{constructor(s){super(),this.model=s}run(s){let d=!(cp(s)||s instanceof ui||s instanceof Vn||s instanceof So),h=[],y=[];for(let w of s.children)w instanceof fi&&(d&&!Ee(s.producedFields(),w.dependentFields())?h.push(w):y.push(w));if(h.length>0){let w=h.pop();for(let S of h)w.merge(S,this.model.renameSignal.bind(this.model));this.setModified(),s instanceof fi?s.merge(w,this.model.renameSignal.bind(this.model)):w.swapWithParent()}if(y.length>1){let w=y.pop();for(let S of y)w.merge(S,this.model.renameSignal.bind(this.model));this.setModified()}}}class a1 extends ia{run(s){let d=[...s.children];if(!te(d,w=>w instanceof aa)||s.numChildren()<=1)return;let h=[],y;for(let w of d)if(w instanceof aa){let S=w;for(;S.numChildren()===1;){let[A]=S.children;if(!(A instanceof aa))break;S=A}h.push(...S.children),y?(s.removeChild(w),w.parent=y.parent,y.parent.removeChild(y),y.parent=S,this.setModified()):y=S}else h.push(w);if(h.length){this.setModified();for(let w of h)w.parent.removeChild(w),w.parent=y}}}class ll extends Ht{clone(){return new ll(null,j(this.transform))}constructor(s,d){super(s),this.transform=d}addDimensions(s){this.transform.groupby=Ae(this.transform.groupby.concat(s),d=>d)}dependentFields(){let s=new Set;return this.transform.groupby&&this.transform.groupby.forEach(s.add,s),this.transform.joinaggregate.map(d=>d.field).filter(d=>d!==void 0).forEach(s.add,s),s}producedFields(){return new Set(this.transform.joinaggregate.map(this.getDefaultName))}getDefaultName(s){return s.as??Ge(s)}hash(){return`JoinAggregateTransform ${ae(this.transform)}`}assemble(){let s=[],d=[],h=[];for(let w of this.transform.joinaggregate)d.push(w.op),h.push(this.getDefaultName(w)),s.push(w.field===void 0?null:w.field);let y=this.transform.groupby;return{type:"joinaggregate",as:h,ops:d,fields:s,...y!==void 0?{groupby:y}:{}}}}class To extends Ht{clone(){return new To(null,j(this._stack))}constructor(s,d){super(s),nt(this,"_stack",void 0),this._stack=d}static makeFromTransform(s,d){let{stack:h,groupby:y,as:w,offset:S="zero"}=d,A=[],C=[];if(d.sort!==void 0)for(let H of d.sort)A.push(H.field),C.push(Ve(H.order,"ascending"));let L={field:A,order:C},G;return G=function(H){return b.isArray(H)&&H.every(J=>b.isString(J))&&H.length>1}(w)?w:b.isString(w)?[w,`${w}_end`]:[`${d.stack}_start`,`${d.stack}_end`],new To(s,{dimensionFieldDefs:[],stackField:h,groupby:y,offset:S,sort:L,facetby:[],as:G})}static makeFromEncoding(s,d){let h=d.stack,{encoding:y}=d;if(!h)return null;let{groupbyChannels:w,fieldChannel:S,offset:A,impute:C}=h,L=w.map(re=>cr(y[re])).filter(re=>!!re),G=function(re){return re.stack.stackBy.reduce((ee,se)=>{let de=Ge(se.fieldDef);return de&&ee.push(de),ee},[])}(d),H=d.encoding.order,J;if(b.isArray(H)||Ue(H))J=jl(H);else{let re=Q0(H)?H.sort:S==="y"?"descending":"ascending";J=G.reduce((ee,se)=>(ee.field.push(se),ee.order.push(re),ee),{field:[],order:[]})}return new To(s,{dimensionFieldDefs:L,stackField:d.vgField(S),facetby:[],stackby:G,sort:J,offset:A,impute:C,as:[d.vgField(S,{suffix:"start",forAs:!0}),d.vgField(S,{suffix:"end",forAs:!0})]})}get stack(){return this._stack}addDimensions(s){this._stack.facetby.push(...s)}dependentFields(){let s=new Set;return s.add(this._stack.stackField),this.getGroupbyFields().forEach(s.add,s),this._stack.facetby.forEach(s.add,s),this._stack.sort.field.forEach(s.add,s),s}producedFields(){return new Set(this._stack.as)}hash(){return`Stack ${ae(this._stack)}`}getGroupbyFields(){let{dimensionFieldDefs:s,impute:d,groupby:h}=this._stack;return s.length>0?s.map(y=>y.bin?d?[Ge(y,{binSuffix:"mid"})]:[Ge(y,{}),Ge(y,{binSuffix:"end"})]:[Ge(y)]).flat():h??[]}assemble(){let s=[],{facetby:d,dimensionFieldDefs:h,stackField:y,stackby:w,sort:S,offset:A,impute:C,as:L}=this._stack;if(C)for(let G of h){let{bandPosition:H=.5,bin:J}=G;if(J){let re=Ge(G,{expr:"datum"}),ee=Ge(G,{expr:"datum",binSuffix:"end"});s.push({type:"formula",expr:`${H}*${re}+${1-H}*${ee}`,as:Ge(G,{binSuffix:"mid",forAs:!0})})}s.push({type:"impute",field:y,groupby:[...w,...d],key:Ge(G,{binSuffix:"mid"}),method:"value",value:0})}return s.push({type:"stack",groupby:[...this.getGroupbyFields(),...d],field:y,sort:S,as:L,offset:A}),s}}class ul extends Ht{clone(){return new ul(null,j(this.transform))}constructor(s,d){super(s),this.transform=d}addDimensions(s){this.transform.groupby=Ae(this.transform.groupby.concat(s),d=>d)}dependentFields(){let s=new Set;return(this.transform.groupby??[]).forEach(s.add,s),(this.transform.sort??[]).forEach(d=>s.add(d.field)),this.transform.window.map(d=>d.field).filter(d=>d!==void 0).forEach(s.add,s),s}producedFields(){return new Set(this.transform.window.map(this.getDefaultName))}getDefaultName(s){return s.as??Ge(s)}hash(){return`WindowTransform ${ae(this.transform)}`}assemble(){let s=[],d=[],h=[],y=[];for(let H of this.transform.window)d.push(H.op),h.push(this.getDefaultName(H)),y.push(H.param===void 0?null:H.param),s.push(H.field===void 0?null:H.field);let w=this.transform.frame,S=this.transform.groupby;if(w&&w[0]===null&&w[1]===null&&d.every(H=>wn(H)))return{type:"joinaggregate",as:h,ops:d,fields:s,...S!==void 0?{groupby:S}:{}};let A=[],C=[];if(this.transform.sort!==void 0)for(let H of this.transform.sort)A.push(H.field),C.push(H.order??"ascending");let L={field:A,order:C},G=this.transform.ignorePeers;return{type:"window",params:y,as:h,ops:d,fields:s,sort:L,...G!==void 0?{ignorePeers:G}:{},...S!==void 0?{groupby:S}:{},...w!==void 0?{frame:w}:{}}}}function kg(l){if(l instanceof sl)if(l.numChildren()!==1||l.children[0]instanceof aa){let d=l.model.component.data.main;xg(d);let h=(s=l,function w(S){if(!(S instanceof sl)){let A=S.clone();if(A instanceof aa){let C=Sg+A.getSource();A.setSource(C),s.model.component.data.outputNodes[C]=A}else(A instanceof qa||A instanceof To||A instanceof ul||A instanceof ll)&&A.addDimensions(s.fields);for(let C of S.children.flatMap(w))C.parent=A;return[A]}return S.children.flatMap(w)}),y=l.children.map(h).flat();for(let w of y)w.parent=d}else{let d=l.children[0];(d instanceof qa||d instanceof To||d instanceof ul||d instanceof ll)&&d.addDimensions(l.fields),d.swapWithParent(),kg(l)}else l.children.map(kg);var s}function xg(l){if(l instanceof aa&&l.type===tn.Main&&l.numChildren()===1){let s=l.children[0];s instanceof sl||(s.swapWithParent(),xg(l))}}let Sg="scale_",hp=5;function mp(l){for(let s of l){for(let d of s.children)if(d.parent!==s)return!1;if(!mp(s.children))return!1}return!0}function pi(l,s){let d=!1;for(let h of s)d=l.optimize(h)||d;return d}function Qy(l,s,d){let h=l.sources,y=!1;return y=pi(new gs,h)||y,y=pi(new wg(s),h)||y,h=h.filter(w=>w.numChildren()>0),y=pi(new Xy,h)||y,h=h.filter(w=>w.numChildren()>0),d||(y=pi(new Xc,h)||y,y=pi(new Jy(s),h)||y,y=pi(new Ky,h)||y,y=pi(new pp,h)||y,y=pi(new Zy,h)||y,y=pi(new _g,h)||y,y=pi(new Eg,h)||y,y=pi(new a1,h)||y),l.sources=h,y}class Dn{constructor(s){nt(this,"signal",void 0),Object.defineProperty(this,"signal",{enumerable:!0,get:s})}static fromName(s,d){return new Dn(()=>s(d))}}function ev(l){ln(l)?function(s){let d=s.component.scales;for(let h of be(d)){let y=r1(s,h);if(d[h].setWithExplicit("domains",y),tv(s,h),s.component.data.isFaceted){let w=s;for(;!Wa(w)&&w.parent;)w=w.parent;if(w.component.resolve.scale[h]==="shared")for(let S of y.value)xa(S)&&(S.data=Sg+S.data.replace(Sg,""))}}}(l):function(s){for(let h of s.children)ev(h);let d=s.component.scales;for(let h of be(d)){let y,w=null;for(let S of s.children){let A=S.component.scales[h];if(A){y=y===void 0?A.getWithExplicit("domains"):Gi(y,A.getWithExplicit("domains"),"domains","scale",Qc);let C=A.get("selectionExtent");w&&C&&w.param!==C.param&&$e(sr),w=C}}d[h].setWithExplicit("domains",y),w&&d[h].set("selectionExtent",w,!0)}}(l)}function r1(l,s){let d=l.getScaleComponent(s).get("type"),{encoding:h}=l,y=function(w,S,A,C){if(w==="unaggregated"){let{valid:L,reason:G}=Ra(S,A);if(!L)return void $e(G)}else if(w===void 0&&C.useUnaggregatedDomain){let{valid:L}=Ra(S,A);if(L)return"unaggregated"}return w}(l.scaleDomain(s),l.typedFieldDef(s),d,l.config.scale);return y!==l.scaleDomain(s)&&(l.specifiedScales[s]={...l.specifiedScales[s],domain:y}),s==="x"&&mn(h.x2)?mn(h.x)?Gi(bs(d,y,l,"x"),bs(d,y,l,"x2"),"domain","scale",Qc):bs(d,y,l,"x2"):s==="y"&&mn(h.y2)?mn(h.y)?Gi(bs(d,y,l,"y"),bs(d,y,l,"y2"),"domain","scale",Qc):bs(d,y,l,"y2"):bs(d,y,l,s)}function Zc(l,s,d){let h=zn(d)?.unit;return s==="temporal"||h?function(y,w,S){return y.map(A=>({signal:`{data: ${au(A,{timeUnit:S,type:w})}}`}))}(l,s,h):[l]}function bs(l,s,d,h){let{encoding:y,markDef:w,mark:S,config:A,stack:C}=d,L=mn(y[h]),{type:G}=L,H=L.timeUnit;if(function(ee){return ee?.unionWith}(s)){let ee=bs(l,void 0,d,h);return zi([...Zc(s.unionWith,G,H),...ee.value])}if(Ke(s))return zi([s]);if(s&&s!=="unaggregated"&&!j0(s))return zi(Zc(s,G,H));if(C&&h===C.fieldChannel){if(C.offset==="normalize")return Lr([[0,1]]);let ee=d.requestDataName(tn.Main);return Lr([{data:ee,field:d.vgField(h,{suffix:"start"})},{data:ee,field:d.vgField(h,{suffix:"end"})}])}let J=Rr(h)&&Ue(L)?function(ee,se,de){if(!Gn(de))return;let fe=ee.fieldDef(se),ge=fe.sort;if(cc(ge))return{op:"min",field:rl(fe,se),order:"ascending"};let{stack:we}=ee,Te=we?new Set([...we.groupbyFields,...we.stackBy.map(Fe=>Fe.fieldDef.field)]):void 0;if(ri(ge))return Jc(ge,we&&!Te.has(ge.field));if(Yh(ge)){let{encoding:Fe,order:He}=ge,tt=ee.fieldDef(Fe),{aggregate:ut,field:Qe}=tt,Xe=we&&!Te.has(Qe);if(Qr(ut)||Ti(ut))return Jc({field:Ge(tt),order:He},Xe);if(wn(ut)||!ut)return Jc({op:ut,field:Qe,order:He},Xe)}else{if(ge==="descending")return{op:"min",field:ee.vgField(se),order:"descending"};if(Z(["ascending",void 0],ge))return!0}}(d,h,l):void 0;if(Mi(L))return Lr(Zc([L.datum],G,H));let re=L;if(s==="unaggregated"){let ee=d.requestDataName(tn.Main),{field:se}=L;return Lr([{data:ee,field:Ge({field:se,aggregate:"min"})},{data:ee,field:Ge({field:se,aggregate:"max"})}])}if(Wt(re.bin)){if(Gn(l))return Lr(l==="bin-ordinal"?[]:[{data:We(J)?d.requestDataName(tn.Main):d.requestDataName(tn.Raw),field:d.vgField(h,ru(re,h)?{binSuffix:"range"}:{}),sort:J!==!0&&b.isObject(J)?J:{field:d.vgField(h,{}),op:"min"}}]);{let{bin:ee}=re;if(Wt(ee)){let se=xo(d,re.field,ee);return Lr([new Dn(()=>{let de=d.getSignalName(se);return`[${de}.start, ${de}.stop]`})])}return Lr([{data:d.requestDataName(tn.Main),field:d.vgField(h,{})}])}}if(re.timeUnit&&Z(["time","utc"],l)){let ee=y[Si(h)];if(cf(re,ee,w,A)){let se=d.requestDataName(tn.Main),de=Di({fieldDef:re,fieldDef2:ee,markDef:w,config:A}),fe=lc(S)&&de!==.5;return Lr([{data:se,field:d.vgField(h,fe?{suffix:Vf}:{})},{data:se,field:d.vgField(h,{suffix:fe?Ft:"end"})}])}}return Lr(J?[{data:We(J)?d.requestDataName(tn.Main):d.requestDataName(tn.Raw),field:d.vgField(h),sort:J}]:[{data:d.requestDataName(tn.Main),field:d.vgField(h)}])}function Jc(l,s){let{op:d,field:h,order:y}=l;return{op:d??(s?"sum":uc),...h?{field:Gt(h)}:{},...y?{order:y}:{}}}function tv(l,s){let d=l.component.scales[s],h=l.specifiedScales[s].domain,y=l.fieldDef(s)?.bin,w=j0(h)&&h,S=fo(y)&&Ir(y.extent)&&y.extent;(w||S)&&d.set("selectionExtent",w??S,!0)}function Ra(l,s){let{aggregate:d,type:h}=l;return d?b.isString(d)&&!co.has(d)?{valid:!1,reason:Th(d)}:h==="quantitative"&&s==="log"?{valid:!1,reason:Ch(l)}:{valid:!0}:{valid:!1,reason:R0(l)}}function Qc(l,s,d,h){return l.explicit&&s.explicit&&$e(function(y,w,S,A){return`Conflicting ${w.toString()} property "${y.toString()}" (${Ye(S)} and ${Ye(A)}). Using the union of the two domains.`}(d,h,l.value,s.value)),{explicit:l.explicit,value:[...l.value,...s.value]}}function i1(l){let s=Ae(l.map(S=>{if(xa(S)){let{sort:A,...C}=S;return C}return S}),ae),d=Ae(l.map(S=>{if(xa(S)){let A=S.sort;return A===void 0||We(A)||("op"in A&&A.op==="count"&&delete A.field,A.order==="ascending"&&delete A.order),A}}).filter(S=>S!==void 0),ae);if(s.length===0)return;if(s.length===1){let S=l[0];if(xa(S)&&d.length>0){let A=d[0];if(d.length>1){$e(Nh);let C=d.filter(L=>b.isObject(L)&&"op"in L&&L.op!=="min");A=!d.every(L=>b.isObject(L)&&"op"in L)||C.length!==1||C[0]}else if(b.isObject(A)&&"field"in A){let C=A.field;S.field===C&&(A=!A.order||{order:A.order})}return{...S,sort:A}}return S}let h=Ae(d.map(S=>We(S)||!("op"in S)||b.isString(S.op)&&S.op in E0?S:($e(function(A){return`Dropping sort property ${Ye(A)} as unioned domains only support boolean or op "count", "min", and "max".`}(S)),!0)),ae),y;h.length===1?y=h[0]:h.length>1&&($e(Nh),y=!0);let w=Ae(l.map(S=>xa(S)?S.data:null),S=>S);return w.length===1&&w[0]!==null?{data:w[0],fields:s.map(S=>S.field),...y?{sort:y}:{}}:{fields:s,...y?{sort:y}:{}}}function Ag(l){if(xa(l)&&b.isString(l.field))return l.field;if(function(s){return!b.isArray(s)&&"fields"in s&&!("data"in s)}(l)){let s;for(let d of l.fields)if(xa(d)&&b.isString(d.field))if(s){if(s!==d.field)return $e("Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect."),s}else s=d.field;return $e("Detected faceted independent scales that union domain of the same fields from different source. We will assume that this is the same field from a different fork of the same data source. However, if this is not the case, the result view size may be incorrect."),s}if(function(s){return!b.isArray(s)&&"fields"in s&&"data"in s}(l)){$e("Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.");let s=l.fields[0];return b.isString(s)?s:void 0}}function ys(l,s){let d=l.component.scales[s].get("domains").map(h=>(xa(h)&&(h.data=l.lookupDataSource(h.data)),h));return i1(d)}function ed(l){return vs(l)||Ki(l)?l.children.reduce((s,d)=>s.concat(ed(d)),Tg(l)):Tg(l)}function Tg(l){return be(l.component.scales).reduce((s,d)=>{let h=l.component.scales[d];if(h.merged)return s;let y=h.combine(),{name:w,type:S,selectionExtent:A,domains:C,range:L,reverse:G,...H}=y,J=function(se,de,fe,ge){if(sn(fe)){if(po(se))return{step:{signal:`${de}_step`}}}else if(b.isObject(se)&&xa(se))return{...se,data:ge.lookupDataSource(se.data)};return se}(y.range,w,d,l),re=ys(l,d),ee=A?function(se,de,fe,ge){let we=wo(se,de.param,de);return{signal:Ga(fe.get("type"))&&b.isArray(ge)&&ge[0]>ge[1]?`isValid(${we}) && reverse(${we})`:we}}(l,A,h,re):null;return s.push({name:w,type:S,...re?{domain:re}:{},...ee?{domainRaw:ee}:{},range:J,...G!==void 0?{reverse:G}:{},...H}),s},[])}class Cg extends Ui{constructor(s,d){super({},{name:s}),nt(this,"merged",!1),this.setWithExplicit("type",d)}domainDefinitelyIncludesZero(){return this.get("zero")!==!1||te(this.get("domains"),s=>b.isArray(s)&&s.length===2&&b.isNumber(s[0])&&s[0]<=0&&b.isNumber(s[1])&&s[1]>=0)}}let cl=["range","scheme"];function Rg(l,s){let d=l.fieldDef(s);if(d?.bin){let{bin:h,field:y}=d,w=ka(s),S=l.getName(w);if(b.isObject(h)&&h.binned&&h.step!==void 0)return new Dn(()=>{let A=l.scaleName(s),C=`(domain("${A}")[1] - domain("${A}")[0]) / ${h.step}`;return`${l.getSignalName(S)} / (${C})`});if(Wt(h)){let A=xo(l,y,h);return new Dn(()=>{let C=l.getSignalName(A),L=`(${C}.stop - ${C}.start) / ${C}.step`;return`${l.getSignalName(S)} / (${L})`})}}}function nv(l,s){let d=s.specifiedScales[l],{size:h}=s,y=s.getScaleComponent(l).get("type");for(let G of cl)if(d[G]!==void 0){let H=Fh(y,G),J=H0(l,G);if(H)if(J)$e(J);else switch(G){case"range":{let re=d.range;if(b.isArray(re)){if(sn(l))return zi(re.map(ee=>{if(ee==="width"||ee==="height"){let se=s.getName(ee),de=s.getSignalName.bind(s);return Dn.fromName(de,se)}return ee}))}else if(b.isObject(re))return zi({data:s.requestDataName(tn.Main),field:re.field,sort:{op:"min",field:s.vgField(l)}});return zi(re)}case"scheme":return zi(av(d[G]))}else $e(N0(y,G,l))}let w=l===Jt||l==="xOffset"?"width":"height",S=h[w];if(ja(S)){if(sn(l))if(Gn(y)){let G=iv(S,s,l);if(G)return zi({step:G})}else $e(Rh(w));else if(Zn(l)){let G=l===dn?"x":"y";if(s.getScaleComponent(G).get("type")==="band"){let H=ov(S,y);if(H)return zi(H)}}}let{rangeMin:A,rangeMax:C}=d,L=function(G,H){let{size:J,config:re,mark:ee,encoding:se}=H,{type:de}=mn(se[G]),fe=H.getScaleComponent(G),ge=fe.get("type"),{domain:we,domainMid:Te}=H.specifiedScales[G];switch(G){case Jt:case Pn:if(Z(["point","band"],ge)){let Fe=Ng(G,J,re.view);if(ja(Fe))return{step:iv(Fe,H,G)}}return rv(G,H,ge);case dn:case Ko:return function(Fe,He,tt){let ut=Fe===dn?"x":"y",Qe=He.getScaleComponent(ut);if(!Qe)return rv(ut,He,tt,{center:!0});let Xe=Qe.get("type"),xt=He.scaleName(ut),{markDef:$t,config:Mn}=He;if(Xe==="band"){let _n=Ng(ut,He.size,He.config.view);if(ja(_n)){let kn=ov(_n,tt);if(kn)return kn}return[0,{signal:`bandwidth('${xt}')`}]}{let _n=He.encoding[ut];if(Ue(_n)&&_n.timeUnit){let kn=$0(_n.timeUnit,Cn=>`scale('${xt}', ${Cn})`),Bt=He.config.scale.bandWithNestedOffsetPaddingInner,It=Di({fieldDef:_n,markDef:$t,config:Mn})-.5,gn=It!==0?` + ${It}`:"";return Bt?[{signal:`${Ke(Bt)?`${Bt.signal}/2`+gn:`${Bt/2+It}`} * (${kn})`},{signal:`${Ke(Bt)?`(1 - ${Bt.signal}/2)`+gn:`${1-Bt/2+It}`} * (${kn})`}]:[0,{signal:kn}]}return W(`Cannot use ${Fe} scale if ${ut} scale is not discrete.`)}}(G,H,ge);case wi:{let Fe=gp(ee,H.component.scales[G].get("zero"),re),He=function(tt,ut,Qe,Xe){let xt={x:Rg(Qe,"x"),y:Rg(Qe,"y")};switch(tt){case"bar":case"tick":{if(Xe.scale.maxBandSize!==void 0)return Xe.scale.maxBandSize;let $t=Og(ut,xt,Xe.view);return b.isNumber($t)?$t-1:new Dn(()=>`${$t.signal} - 1`)}case"line":case"trail":case"rule":return Xe.scale.maxStrokeWidth;case"text":return Xe.scale.maxFontSize;case"point":case"square":case"circle":{if(Xe.scale.maxSize)return Xe.scale.maxSize;let $t=Og(ut,xt,Xe.view);return b.isNumber($t)?Math.pow(Ig*$t,2):new Dn(()=>`pow(${Ig} * ${$t.signal}, 2)`)}}throw new Error(Ii("size",tt))}(ee,J,H,re);return Kl(ge)?function(tt,ut,Qe){let Xe=()=>{let xt=fa(ut),$t=fa(tt),Mn=`(${xt} - ${$t}) / (${Qe} - 1)`;return`sequence(${$t}, ${xt} + ${Mn}, ${Mn})`};return Ke(ut)?new Dn(Xe):{signal:Xe()}}(Fe,He,function(tt,ut,Qe,Xe){switch(tt){case"quantile":return ut.scale.quantileCount;case"quantize":return ut.scale.quantizeCount;case"threshold":return Qe!==void 0&&b.isArray(Qe)?Qe.length+1:($e(function(xt){return`Domain for ${xt} is required for threshold scale.`}(Xe)),3)}}(ge,re,we,G)):[Fe,He]}case nr:return[0,2*Math.PI];case Pa:return[0,360];case pt:return[0,new Dn(()=>`min(${H.getSignalName("width")},${H.getSignalName("height")})/2`)];case lo:return[re.scale.minStrokeWidth,re.scale.maxStrokeWidth];case Xo:return[[1,0],[4,2],[2,1],[1,1],[1,2,4,2]];case En:return"symbol";case Me:case _a:case Xr:return ge==="ordinal"?de==="nominal"?"category":"ordinal":Te!==void 0?"diverging":ee==="rect"||ee==="geoshape"?"heatmap":"ramp";case _i:case Mt:case ki:return[re.scale.minOpacity,re.scale.maxOpacity]}}(l,s);return(A!==void 0||C!==void 0)&&Fh(y,"rangeMin")&&b.isArray(L)&&L.length===2?zi([A??L[0],C??L[1]]):Lr(L)}function av(l){return function(s){return!b.isString(s)&&!!s.name}(l)?{scheme:l.name,...Q(l,["name"])}:{scheme:l}}function rv(l,s,d){let{center:h}=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},y=ka(l),w=s.getName(y),S=s.getSignalName.bind(s);return l===Pn&&Ga(d)?h?[Dn.fromName(A=>`${S(A)}/2`,w),Dn.fromName(A=>`-${S(A)}/2`,w)]:[Dn.fromName(S,w),0]:h?[Dn.fromName(A=>`-${S(A)}/2`,w),Dn.fromName(A=>`${S(A)}/2`,w)]:[0,Dn.fromName(S,w)]}function iv(l,s,d){let{encoding:h}=s,y=s.getScaleComponent(d),w=$l(d),S=h[w];if(If({step:l,offsetIsDiscrete:vt(S)&&Wl(S.type)})==="offset"&&go(h,w)){let C=s.getScaleComponent(w),L=`domain('${s.scaleName(w)}').length`;C.get("type")==="band"&&(L=`bandspace(${L}, ${C.get("paddingInner")??C.get("padding")??0}, ${C.get("paddingOuter")??C.get("padding")??0})`);let G=y.get("paddingInner")??y.get("padding");return{signal:`${l.step} * ${L} / (1-${A=G,Ke(A)?A.signal:b.stringValue(A)})`}}return l.step;var A}function ov(l,s){if(If({step:l,offsetIsDiscrete:Gn(s)})==="offset")return{step:l.step}}function Ng(l,s,d){let h=l===Jt?"width":"height";return s[h]||xc(d,h)}function gp(l,s,d){if(s)return Ke(s)?{signal:`${s.signal} ? 0 : ${gp(l,!1,d)}`}:0;switch(l){case"bar":case"tick":return d.scale.minBandSize;case"line":case"trail":case"rule":return d.scale.minStrokeWidth;case"text":return d.scale.minFontSize;case"point":case"square":case"circle":return d.scale.minSize}throw new Error(Ii("size",l))}let Ig=.95;function Og(l,s,d){let h=ja(l.width)?l.width.step:cu(d,"width"),y=ja(l.height)?l.height.step:cu(d,"height");return s.x||s.y?new Dn(()=>`min(${[s.x?s.x.signal:h,s.y?s.y.signal:y].join(", ")})`):Math.min(h,y)}function bp(l,s){ln(l)?function(d,h){let y=d.component.scales,{config:w,encoding:S,markDef:A,specifiedScales:C}=d;for(let L of be(y)){let G=C[L],H=y[L],J=d.getScaleComponent(L),re=mn(S[L]),ee=G[h],se=J.get("type"),de=J.get("padding"),fe=J.get("paddingInner"),ge=Fh(se,h),we=H0(L,h);if(ee!==void 0&&(ge?we&&$e(we):$e(N0(se,h,L))),ge&&we===void 0)if(ee!==void 0){let Te=re.timeUnit,Fe=re.type;switch(h){case"domainMax":case"domainMin":Bs(G[h])||Fe==="temporal"||Te?H.set(h,{signal:au(G[h],{type:Fe,timeUnit:Te})},!0):H.set(h,G[h],!0);break;default:H.copyKeyFromObject(h,G)}}else{let Te=h in Dg?Dg[h]({model:d,channel:L,fieldOrDatumDef:re,scaleType:se,scalePadding:de,scalePaddingInner:fe,domain:G.domain,domainMin:G.domainMin,domainMax:G.domainMax,markDef:A,config:w,hasNestedOffsetScale:ry(S,L),hasSecondaryRangeChannel:!!S[Si(L)]}):w.scale[h];Te!==void 0&&H.set(h,Te,!1)}}}(l,s):lv(l,s)}let Dg={bins:l=>{let{model:s,fieldOrDatumDef:d}=l;return Ue(d)?function(h,y){let w=y.bin;if(Wt(w)){let S=xo(h,y.field,w);return new Dn(()=>h.getSignalName(S))}if(Bn(w)&&fo(w)&&w.step!==void 0)return{step:w.step}}(s,d):void 0},interpolate:l=>{let{channel:s,fieldOrDatumDef:d}=l;return function(h,y){if(Z([Me,_a,Xr],h)&&y!=="nominal")return"hcl"}(s,d.type)},nice:l=>{let{scaleType:s,channel:d,domain:h,domainMin:y,domainMax:w,fieldOrDatumDef:S}=l;return function(A,C,L,G,H,J){if(!(cr(J)?.bin||b.isArray(L)||H!=null||G!=null||Z([zt.TIME,zt.UTC],A)))return!!sn(C)||void 0}(s,d,h,y,w,S)},padding:l=>{let{channel:s,scaleType:d,fieldOrDatumDef:h,markDef:y,config:w}=l;return function(S,A,C,L,G,H){if(sn(S)){if(Mr(A)){if(C.continuousPadding!==void 0)return C.continuousPadding;let{type:J,orient:re}=G;if(J==="bar"&&(!Ue(L)||!L.bin&&!L.timeUnit)&&(re==="vertical"&&S==="x"||re==="horizontal"&&S==="y"))return H.continuousBandSize}if(A===zt.POINT)return C.pointPadding}}(s,d,w.scale,h,y,w.bar)},paddingInner:l=>{let{scalePadding:s,channel:d,markDef:h,scaleType:y,config:w,hasNestedOffsetScale:S}=l;return function(A,C,L,G,H){let J=arguments.length>5&&arguments[5]!==void 0&&arguments[5];if(A===void 0){if(sn(C)){let{bandPaddingInner:re,barBandPaddingInner:ee,rectBandPaddingInner:se,bandWithNestedOffsetPaddingInner:de}=H;return J?de:Ve(re,L==="bar"?ee:se)}if(Zn(C)&&G===zt.BAND)return H.offsetBandPaddingInner}}(s,d,h.type,y,w.scale,S)},paddingOuter:l=>{let{scalePadding:s,channel:d,scaleType:h,scalePaddingInner:y,config:w,hasNestedOffsetScale:S}=l;return function(A,C,L,G,H){let J=arguments.length>5&&arguments[5]!==void 0&&arguments[5];if(A===void 0){if(sn(C)){let{bandPaddingOuter:re,bandWithNestedOffsetPaddingOuter:ee}=H;if(J)return ee;if(L===zt.BAND)return Ve(re,Ke(G)?{signal:`${G.signal}/2`}:G/2)}else if(Zn(C)){if(L===zt.POINT)return .5;if(L===zt.BAND)return H.offsetBandPaddingOuter}}}(s,d,h,y,w.scale,S)},reverse:l=>{let{fieldOrDatumDef:s,scaleType:d,channel:h,config:y}=l;return function(w,S,A,C){if(A==="x"&&C.xReverse!==void 0)return Ga(w)&&S==="descending"?Ke(C.xReverse)?{signal:`!${C.xReverse.signal}`}:!C.xReverse:C.xReverse;if(Ga(w)&&S==="descending")return!0}(d,Ue(s)?s.sort:void 0,h,y.scale)},zero:l=>{let{channel:s,fieldOrDatumDef:d,domain:h,markDef:y,scaleType:w,config:S,hasSecondaryRangeChannel:A}=l;return function(C,L,G,H,J,re,ee){if(G&&G!=="unaggregated"&&Ga(J)){if(b.isArray(G)){let se=G[0],de=G[G.length-1];if(b.isNumber(se)&&se<=0&&b.isNumber(de)&&de>=0)return!0}return!1}if(C==="size"&&L.type==="quantitative"&&!Kl(J))return!0;if((!Ue(L)||!L.bin)&&Z([...Jr,...m0],C)){let{orient:se,type:de}=H;return(!Z(["bar","area","line","trail"],de)||!(se==="horizontal"&&C==="y"||se==="vertical"&&C==="x"))&&(!(!Z(["bar","area"],de)||ee)||re?.zero)}return!1}(s,d,h,y,w,S.scale,A)}};function sv(l){ln(l)?function(s){let d=s.component.scales;for(let h of Ul){let y=d[h];if(!y)continue;let w=nv(h,s);y.setWithExplicit("range",w)}}(l):lv(l,"range")}function lv(l,s){let d=l.component.scales;for(let h of l.children)s==="range"?sv(h):bp(h,s);for(let h of be(d)){let y;for(let w of l.children){let S=w.component.scales[h];S&&(y=Gi(y,S.getWithExplicit(s),s,"scale",Ey((A,C)=>s==="range"&&A.step&&C.step?A.step-C.step:0)))}d[h].setWithExplicit(s,y)}}function Mg(l,s,d,h){let y=function(C,L,G,H){switch(L.type){case"nominal":case"ordinal":if(Jo(C)||Ld(C)==="discrete")return C==="shape"&&L.type==="ordinal"&&$e(Gd(C,"ordinal")),"ordinal";if(sn(C)||Zn(C)){if(Z(["rect","bar","image","rule"],G.type)||H)return"band"}else if(G.type==="arc"&&C in Zu)return"band";return qs(G[ka(C)])||eu(L)&&L.axis?.tickBand?"band":"point";case"temporal":return Jo(C)?"time":Ld(C)==="discrete"?($e(Gd(C,"temporal")),"ordinal"):Ue(L)&&L.timeUnit&&zn(L.timeUnit).utc?"utc":"time";case"quantitative":return Jo(C)?Ue(L)&&Wt(L.bin)?"bin-ordinal":"linear":Ld(C)==="discrete"?($e(Gd(C,"quantitative")),"ordinal"):"linear";case"geojson":return}throw new Error(Ud(L.type))}(s,d,h,arguments.length>4&&arguments[4]!==void 0&&arguments[4]),{type:w}=l;return Rr(s)?w!==void 0?function(C,L){let G=arguments.length>2&&arguments[2]!==void 0&&arguments[2];if(!Rr(C))return!1;switch(C){case Jt:case Pn:case dn:case Ko:case nr:case pt:return!!Mr(L)||L==="band"||L==="point"&&!G;case wi:case lo:case _i:case Mt:case ki:case Pa:return Mr(L)||Kl(L)||Z(["band","point","ordinal"],L);case Me:case _a:case Xr:return L!=="band";case Xo:case En:return L==="ordinal"||Kl(L)}}(s,w)?Ue(d)&&(S=w,A=d.type,!(Z([Jd,Qd],A)?S===void 0||Gn(S):A===ns?Z([zt.TIME,zt.UTC,void 0],S):A!==ho||z0(S)||Kl(S)||S===void 0))?($e(function(C,L){return`FieldDef does not work with "${C}" scale. We are using "${L}" scale instead.`}(w,y)),y):w:($e(function(C,L,G){return`Channel "${C}" does not work with "${L}" scale. We are using "${G}" scale instead.`}(s,w,y)),y):y:null;var S,A}function yp(l){ln(l)?l.component.scales=function(s){let{encoding:d,mark:h,markDef:y}=s,w={};for(let S of Ul){let A=mn(d[S]);if(A&&h===W0&&S===En&&A.type===Hs)continue;let C=A&&A.scale;if(A&&C!==null&&C!==!1){C??={};let L=Mg(C,S,A,y,ry(d,S));w[S]=new Cg(s.scaleName(`${S}`,!0),{value:L,explicit:C.type===L})}}return w}(l):l.component.scales=function(s){let d=s.component.scales={},h={},y=s.component.resolve;for(let w of s.children){yp(w);for(let S of be(w.component.scales))if(y.scale[S]??=lg(S,s),y.scale[S]==="shared"){let A=h[S],C=w.component.scales[S].getWithExplicit("type");A?w_(A.value,C.value)?h[S]=Gi(A,C,"type","scale",o1):(y.scale[S]="independent",delete h[S]):h[S]=C}}for(let w of be(h)){let S=s.scaleName(w,!0),A=h[w];d[w]=new Cg(S,A);for(let C of s.children){let L=C.component.scales[w];L&&(C.renameScale(L.get("name"),S),L.merged=!0)}}return d}(l)}let o1=Ey((l,s)=>U0(l)-U0(s));class Lg{constructor(){nt(this,"nameMap",void 0),this.nameMap={}}rename(s,d){this.nameMap[s]=d}has(s){return this.nameMap[s]!==void 0}get(s){for(;this.nameMap[s]&&s!==this.nameMap[s];)s=this.nameMap[s];return s}}function ln(l){return l?.type==="unit"}function Wa(l){return l?.type==="facet"}function Ki(l){return l?.type==="concat"}function vs(l){return l?.type==="layer"}class td{constructor(s,d,h,y,w,S,A){this.type=d,this.parent=h,this.config=w,nt(this,"name",void 0),nt(this,"size",void 0),nt(this,"title",void 0),nt(this,"description",void 0),nt(this,"data",void 0),nt(this,"transforms",void 0),nt(this,"layout",void 0),nt(this,"scaleNameMap",void 0),nt(this,"projectionNameMap",void 0),nt(this,"signalNameMap",void 0),nt(this,"component",void 0),nt(this,"view",void 0),nt(this,"children",void 0),nt(this,"correctDataNames",C=>(C.from?.data&&(C.from.data=this.lookupDataSource(C.from.data)),C.from?.facet?.data&&(C.from.facet.data=this.lookupDataSource(C.from.facet.data)),C)),this.parent=h,this.config=w,this.view=Jn(A),this.name=s.name??y,this.title=da(s.title)?{text:s.title}:s.title?Jn(s.title):void 0,this.scaleNameMap=h?h.scaleNameMap:new Lg,this.projectionNameMap=h?h.projectionNameMap:new Lg,this.signalNameMap=h?h.signalNameMap:new Lg,this.data=s.data,this.description=s.description,this.transforms=(s.transform??[]).map(C=>Tm(C)?{filter:F(C.filter,oc)}:C),this.layout=d==="layer"||d==="unit"?{}:function(C,L,G){let H=G[L],J={},{spacing:re,columns:ee}=H;re!==void 0&&(J.spacing=re),ee!==void 0&&(dc(C)&&!Zl(C.facet)||wc(C))&&(J.columns=ee),uu(C)&&(J.columns=1);for(let se of kc)if(C[se]!==void 0)if(se==="spacing"){let de=C[se];J[se]=b.isNumber(de)?de:{row:de.row??re,column:de.column??re}}else J[se]=C[se];return J}(s,d,w),this.component={data:{sources:h?h.component.data.sources:[],outputNodes:h?h.component.data.outputNodes:{},outputNodeRefCounts:h?h.component.data.outputNodeRefCounts:{},isFaceted:dc(s)||h?.component.data.isFaceted&&s.data===void 0},layoutSize:new Ui,layoutHeaders:{row:{},column:{},facet:{}},mark:null,resolve:{scale:{},axis:{},legend:{},...S?j(S):{}},selection:null,scales:null,projection:null,axes:{},legends:{}}}get width(){return this.getSizeSignalRef("width")}get height(){return this.getSizeSignalRef("height")}parse(){this.parseScale(),this.parseLayoutSize(),this.renameTopLevelLayoutSizeSignal(),this.parseSelections(),this.parseProjection(),this.parseData(),this.parseAxesAndHeaders(),this.parseLegends(),this.parseMarkGroup()}parseScale(){(function(s){let{ignoreRange:d}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};yp(s),ev(s);for(let h of T_)bp(s,h);d||sv(s)})(this)}parseProjection(){yg(this)}renameTopLevelLayoutSizeSignal(){this.getName("width")!=="width"&&this.renameSignal(this.getName("width"),"width"),this.getName("height")!=="height"&&this.renameSignal(this.getName("height"),"height")}parseLegends(){op(this)}assembleEncodeFromView(s){let{style:d,...h}=s,y={};for(let w of be(h)){let S=h[w];S!==void 0&&(y[w]=rn(S))}return y}assembleGroupEncodeEntry(s){let d={};return this.view&&(d=this.assembleEncodeFromView(this.view)),s||(this.description&&(d.description=rn(this.description)),this.type!=="unit"&&this.type!=="layer")?ye(d)?void 0:d:{width:this.getSizeSignalRef("width"),height:this.getSizeSignalRef("height"),...d??{}}}assembleLayout(){if(!this.layout)return;let{spacing:s,...d}=this.layout,{component:h,config:y}=this,w=function(S,A){let C={};for(let L of $a){let G=S[L];if(G?.facetFieldDef){let{titleAnchor:H,titleOrient:J}=$c(["titleAnchor","titleOrient"],G.facetFieldDef.header,A,L),re=Pc(L,J),ee=Hy(H,re);ee!==void 0&&(C[re]=ee)}}return ye(C)?void 0:C}(h.layoutHeaders,y);return{padding:s,...this.assembleDefaultLayout(),...d,...w?{titleBand:w}:{}}}assembleDefaultLayout(){return{}}assembleHeaderMarks(){let{layoutHeaders:s}=this.component,d=[];for(let h of $a)s[h].title&&d.push(ms(this,h));for(let h of Eu)d=d.concat(Gy(this,h));return d}assembleAxes(){return function(s,d){let{x:h=[],y=[]}=s;return[...h.map(w=>Vi(w,"grid",d)),...y.map(w=>Vi(w,"grid",d)),...h.map(w=>Vi(w,"main",d)),...y.map(w=>Vi(w,"main",d))].filter(w=>w)}(this.component.axes,this.config)}assembleLegends(){return lp(this)}assembleProjections(){return gg(this)}assembleTitle(){let{encoding:s,...d}=this.title??{},h={...tc(this.config.title).nonMarkTitleProperties,...d,...s?{encode:{update:s}}:{}};if(h.text)return Z(["unit","layer"],this.type)?Z(["middle",void 0],h.anchor)&&(h.frame??="group"):h.anchor??="start",ye(h)?void 0:h}assembleGroup(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],d={};s=s.concat(this.assembleSignals()),s.length>0&&(d.signals=s);let h=this.assembleLayout();h&&(d.layout=h),d.marks=[].concat(this.assembleHeaderMarks(),this.assembleMarks());let y=!this.parent||Wa(this.parent)?ed(this):[];y.length>0&&(d.scales=y);let w=this.assembleAxes();w.length>0&&(d.axes=w);let S=this.assembleLegends();return S.length>0&&(d.legends=S),d}getName(s){return Pe((this.name?`${this.name}_`:"")+s)}getDataName(s){return this.getName(tn[s].toLowerCase())}requestDataName(s){let d=this.getDataName(s),h=this.component.data.outputNodeRefCounts;return h[d]=(h[d]||0)+1,d}getSizeSignalRef(s){if(Wa(this.parent)){let d=Ju(og(s)),h=this.component.scales[d];if(h&&!h.merged){let y=h.get("type"),w=h.get("range");if(Gn(y)&&po(w)){let S=h.get("name"),A=Ag(ys(this,d));return A?{signal:ap(S,h,Ge({aggregate:"distinct",field:A},{expr:"datum"}))}:($e(pa(d)),null)}}}return{signal:this.signalNameMap.get(this.getName(s))}}lookupDataSource(s){let d=this.component.data.outputNodes[s];return d?d.getSource():s}getSignalName(s){return this.signalNameMap.get(s)}renameSignal(s,d){this.signalNameMap.rename(s,d)}renameScale(s,d){this.scaleNameMap.rename(s,d)}renameProjection(s,d){this.projectionNameMap.rename(s,d)}scaleName(s,d){return d?this.getName(s):d0(s)&&Rr(s)&&this.component.scales[s]||this.scaleNameMap.has(this.getName(s))?this.scaleNameMap.get(this.getName(s)):void 0}projectionName(s){return s?this.getName("projection"):this.component.projection&&!this.component.projection.merged||this.projectionNameMap.has(this.getName("projection"))?this.projectionNameMap.get(this.getName("projection")):void 0}getScaleComponent(s){if(!this.component.scales)throw new Error("getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().");let d=this.component.scales[s];return d&&!d.merged?d:this.parent?this.parent.getScaleComponent(s):void 0}getSelectionComponent(s,d){let h=this.component.selection[s];if(!h&&this.parent&&(h=this.parent.getSelectionComponent(s,d)),!h)throw new Error(function(y){return`Cannot find a selection named "${y}".`}(d));return h}hasAxisOrientSignalRef(){return this.component.axes.x?.some(s=>s.hasOrientSignalRef())||this.component.axes.y?.some(s=>s.hasOrientSignalRef())}}class nd extends td{vgField(s){let d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},h=this.fieldDef(s);if(h)return Ge(h,d)}reduceFieldDef(s,d){return function(h,y,w,S){return h?be(h).reduce((A,C)=>{let L=h[C];return b.isArray(L)?L.reduce((G,H)=>y.call(S,G,H,C),A):y.call(S,A,L,C)},w):w}(this.getMapping(),(h,y,w)=>{let S=cr(y);return S?s(h,S,w):h},d)}forEachFieldDef(s,d){mc(this.getMapping(),(h,y)=>{let w=cr(h);w&&s(w,y)},d)}}class wu extends Ht{clone(){return new wu(null,j(this.transform))}constructor(s,d){super(s),this.transform=d,this.transform=j(d);let h=this.transform.as??[void 0,void 0];this.transform.as=[h[0]??"value",h[1]??"density"]}dependentFields(){return new Set([this.transform.density,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`DensityTransform ${ae(this.transform)}`}assemble(){let{density:s,...d}=this.transform,h={type:"kde",field:s,...d};return this.transform.groupby&&(h.resolve="shared"),h}}class _u extends Ht{clone(){return new _u(null,j(this.transform))}constructor(s,d){super(s),this.transform=d,this.transform=j(d)}dependentFields(){return new Set([this.transform.extent])}producedFields(){return new Set([])}hash(){return`ExtentTransform ${ae(this.transform)}`}assemble(){let{extent:s,param:d}=this.transform;return{type:"extent",field:s,signal:d}}}class Xi extends Ht{clone(){return new Xi(null,{...this.filter})}constructor(s,d){super(s),this.filter=d}static make(s,d){let{config:h,mark:y,markDef:w}=d;if(jt("invalid",w,h)!=="filter")return null;let S=d.reduceFieldDef((A,C,L)=>{let G=Rr(L)&&d.getScaleComponent(L);return G&&Ga(G.get("type"))&&C.aggregate!=="count"&&!as(y)&&(A[C.field]=C),A},{});return be(S).length?new Xi(s,S):null}dependentFields(){return new Set(be(this.filter))}producedFields(){return new Set}hash(){return`FilterInvalid ${ae(this.filter)}`}assemble(){let s=be(this.filter).reduce((d,h)=>{let y=this.filter[h],w=Ge(y,{expr:"datum"});return y!==null&&(y.type==="temporal"?d.push(`(isDate(${w}) || (isValid(${w}) && isFinite(+${w})))`):y.type==="quantitative"&&(d.push(`isValid(${w})`),d.push(`isFinite(+${w})`))),d},[]);return s.length>0?{type:"filter",expr:s.join(" && ")}:null}}class Fr extends Ht{clone(){return new Fr(this.parent,j(this.transform))}constructor(s,d){super(s),this.transform=d,this.transform=j(d);let{flatten:h,as:y=[]}=this.transform;this.transform.as=h.map((w,S)=>y[S]??w)}dependentFields(){return new Set(this.transform.flatten)}producedFields(){return new Set(this.transform.as)}hash(){return`FlattenTransform ${ae(this.transform)}`}assemble(){let{flatten:s,as:d}=this.transform;return{type:"flatten",fields:s,as:d}}}class Es extends Ht{clone(){return new Es(null,j(this.transform))}constructor(s,d){super(s),this.transform=d,this.transform=j(d);let h=this.transform.as??[void 0,void 0];this.transform.as=[h[0]??"key",h[1]??"value"]}dependentFields(){return new Set(this.transform.fold)}producedFields(){return new Set(this.transform.as)}hash(){return`FoldTransform ${ae(this.transform)}`}assemble(){let{fold:s,as:d}=this.transform;return{type:"fold",fields:s,as:d}}}class Zi extends Ht{clone(){return new Zi(null,j(this.fields),this.geojson,this.signal)}static parseAll(s,d){if(d.component.projection&&!d.component.projection.isFit)return s;let h=0;for(let y of[[Fa,et],[ar,ca]]){let w=y.map(S=>{let A=mn(d.encoding[S]);return Ue(A)?A.field:Mi(A)?{expr:`${A.datum}`}:ur(A)?{expr:`${A.value}`}:void 0});(w[0]||w[1])&&(s=new Zi(s,w,null,d.getName("geojson_"+h++)))}if(d.channelHasField(En)){let y=d.typedFieldDef(En);y.type===Hs&&(s=new Zi(s,null,y.field,d.getName("geojson_"+h++)))}return s}constructor(s,d,h,y){super(s),this.fields=d,this.geojson=h,this.signal=y}dependentFields(){let s=(this.fields??[]).filter(b.isString);return new Set([...this.geojson?[this.geojson]:[],...s])}producedFields(){return new Set}hash(){return`GeoJSON ${this.geojson} ${this.signal} ${ae(this.fields)}`}assemble(){return[...this.geojson?[{type:"filter",expr:`isValid(datum["${this.geojson}"])`}]:[],{type:"geojson",...this.fields?{fields:this.fields}:{},...this.geojson?{geojson:this.geojson}:{},signal:this.signal}]}}class ws extends Ht{clone(){return new ws(null,this.projection,j(this.fields),j(this.as))}constructor(s,d,h,y){super(s),this.projection=d,this.fields=h,this.as=y}static parseAll(s,d){if(!d.projectionName())return s;for(let h of[[Fa,et],[ar,ca]]){let y=h.map(S=>{let A=mn(d.encoding[S]);return Ue(A)?A.field:Mi(A)?{expr:`${A.datum}`}:ur(A)?{expr:`${A.value}`}:void 0}),w=h[0]===ar?"2":"";(y[0]||y[1])&&(s=new ws(s,d.projectionName(),y,[d.getName(`x${w}`),d.getName(`y${w}`)]))}return s}dependentFields(){return new Set(this.fields.filter(b.isString))}producedFields(){return new Set(this.as)}hash(){return`Geopoint ${this.projection} ${ae(this.fields)} ${ae(this.as)}`}assemble(){return{type:"geopoint",projection:this.projection,fields:this.fields,as:this.as}}}class pr extends Ht{clone(){return new pr(null,j(this.transform))}constructor(s,d){super(s),this.transform=d}dependentFields(){return new Set([this.transform.impute,this.transform.key,...this.transform.groupby??[]])}producedFields(){return new Set([this.transform.impute])}processSequence(s){let{start:d=0,stop:h,step:y}=s;return{signal:`sequence(${[d,h,...y?[y]:[]].join(",")})`}}static makeFromTransform(s,d){return new pr(s,d)}static makeFromEncoding(s,d){let h=d.encoding,y=h.x,w=h.y;if(Ue(y)&&Ue(w)){let S=y.impute?y:w.impute?w:void 0;if(S===void 0)return;let A=y.impute?w:w.impute?y:void 0,{method:C,value:L,frame:G,keyvals:H}=S.impute,J=nm(d.mark,h);return new pr(s,{impute:S.field,key:A.field,...C?{method:C}:{},...L!==void 0?{value:L}:{},...G?{frame:G}:{},...H!==void 0?{keyvals:H}:{},...J.length?{groupby:J}:{}})}return null}hash(){return`Impute ${ae(this.transform)}`}assemble(){let{impute:s,key:d,keyvals:h,method:y,groupby:w,value:S,frame:A=[null,null]}=this.transform,C={type:"impute",field:s,key:d,...h?{keyvals:(L=h,L?.stop!==void 0?this.processSequence(h):h)}:{},method:"value",...w?{groupby:w}:{},value:y&&y!=="value"?null:S};var L;return y&&y!=="value"?[C,{type:"window",as:[`imputed_${s}_value`],ops:[y],fields:[s],frame:A,ignorePeers:!1,...w?{groupby:w}:{}},{type:"formula",expr:`datum.${s} === null ? datum.imputed_${s}_value : datum.${s}`,as:s}]:[C]}}class Ji extends Ht{clone(){return new Ji(null,j(this.transform))}constructor(s,d){super(s),this.transform=d,this.transform=j(d);let h=this.transform.as??[void 0,void 0];this.transform.as=[h[0]??d.on,h[1]??d.loess]}dependentFields(){return new Set([this.transform.loess,this.transform.on,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`LoessTransform ${ae(this.transform)}`}assemble(){let{loess:s,on:d,...h}=this.transform;return{type:"loess",x:d,y:s,...h}}}class Va extends Ht{clone(){return new Va(null,j(this.transform),this.secondary)}constructor(s,d,h){super(s),this.transform=d,this.secondary=h}static make(s,d,h,y){let w=d.component.data.sources,{from:S}=h,A=null;if(function(C){return"data"in C}(S)){let C=Pg(S.data,w);C||(C=new Ao(S.data),w.push(C));let L=d.getName(`lookup_${y}`);A=new aa(C,L,tn.Lookup,d.component.data.outputNodeRefCounts),d.component.data.outputNodes[L]=A}else if(function(C){return"param"in C}(S)){let C=S.param,L;h={as:C,...h};try{L=d.getSelectionComponent(Pe(C),C)}catch{throw new Error(function(H){return`Lookups can only be performed on selection parameters. "${H}" is a variable parameter.`}(C))}if(A=L.materialized,!A)throw new Error(function(G){return`Cannot define and lookup the "${G}" selection in the same view. Try moving the lookup into a second, layered view?`}(C))}return new Va(s,h,A.getSource())}dependentFields(){return new Set([this.transform.lookup])}producedFields(){return new Set(this.transform.as?b.array(this.transform.as):this.transform.from.fields)}hash(){return`Lookup ${ae({transform:this.transform,secondary:this.secondary})}`}assemble(){let s;if(this.transform.from.fields)s={values:this.transform.from.fields,...this.transform.as?{as:b.array(this.transform.as)}:{}};else{let d=this.transform.as;b.isString(d)||($e('If "from.fields" is not specified, "as" has to be a string that specifies the key to be used for the data from the secondary source.'),d="_lookup"),s={as:[d]}}return{type:"lookup",from:this.secondary,key:this.transform.from.key,fields:[this.transform.lookup],...s,...this.transform.default?{default:this.transform.default}:{}}}}class Co extends Ht{clone(){return new Co(null,j(this.transform))}constructor(s,d){super(s),this.transform=d,this.transform=j(d);let h=this.transform.as??[void 0,void 0];this.transform.as=[h[0]??"prob",h[1]??"value"]}dependentFields(){return new Set([this.transform.quantile,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`QuantileTransform ${ae(this.transform)}`}assemble(){let{quantile:s,...d}=this.transform;return{type:"quantile",field:s,...d}}}class Ro extends Ht{clone(){return new Ro(null,j(this.transform))}constructor(s,d){super(s),this.transform=d,this.transform=j(d);let h=this.transform.as??[void 0,void 0];this.transform.as=[h[0]??d.on,h[1]??d.regression]}dependentFields(){return new Set([this.transform.regression,this.transform.on,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`RegressionTransform ${ae(this.transform)}`}assemble(){let{regression:s,on:d,...h}=this.transform;return{type:"regression",x:d,y:s,...h}}}class dl extends Ht{clone(){return new dl(null,j(this.transform))}constructor(s,d){super(s),this.transform=d}addDimensions(s){this.transform.groupby=Ae((this.transform.groupby??[]).concat(s),d=>d)}producedFields(){}dependentFields(){return new Set([this.transform.pivot,this.transform.value,...this.transform.groupby??[]])}hash(){return`PivotTransform ${ae(this.transform)}`}assemble(){let{pivot:s,value:d,groupby:h,limit:y,op:w}=this.transform;return{type:"pivot",field:s,value:d,...y!==void 0?{limit:y}:{},...w!==void 0?{op:w}:{},...h!==void 0?{groupby:h}:{}}}}class fl extends Ht{clone(){return new fl(null,j(this.transform))}constructor(s,d){super(s),this.transform=d}dependentFields(){return new Set}producedFields(){return new Set}hash(){return`SampleTransform ${ae(this.transform)}`}assemble(){return{type:"sample",size:this.transform.sample}}}function vp(l){let s=0;return function d(h,y){if(h instanceof Ao&&!h.isGenerator&&!cs(h.data)&&(l.push(y),y={name:null,source:y.name,transform:[]}),h instanceof Vn&&(h.parent instanceof Ao&&!y.source?(y.format={...y.format??{},parse:h.assembleFormatParse()},y.transform.push(...h.assembleTransforms(!0))):y.transform.push(...h.assembleTransforms())),h instanceof sl)return y.name||(y.name="data_"+s++),!y.source||y.transform.length>0?(l.push(y),h.data=y.name):h.data=y.source,void l.push(...h.assemble());switch((h instanceof Vc||h instanceof Yc||h instanceof Xi||h instanceof ui||h instanceof al||h instanceof ws||h instanceof qa||h instanceof Va||h instanceof ul||h instanceof ll||h instanceof Es||h instanceof Fr||h instanceof wu||h instanceof Ji||h instanceof Co||h instanceof Ro||h instanceof So||h instanceof fl||h instanceof dl||h instanceof _u)&&y.transform.push(h.assemble()),(h instanceof fi||h instanceof ji||h instanceof pr||h instanceof To||h instanceof Zi)&&y.transform.push(...h.assemble()),h instanceof aa&&(y.source&&y.transform.length===0?h.setSource(y.source):h.parent instanceof aa?h.setSource(y.name):(y.name||(y.name="data_"+s++),h.setSource(y.name),h.numChildren()===1&&(l.push(y),y={name:null,source:y.name,transform:[]}))),h.numChildren()){case 0:h instanceof aa&&(!y.source||y.transform.length>0)&&l.push(y);break;case 1:d(h.children[0],y);break;default:{y.name||(y.name="data_"+s++);let w=y.name;!y.source||y.transform.length>0?l.push(y):w=y.source;for(let S of h.children)d(S,{name:null,source:w,transform:[]});break}}}}function Fg(l){return l==="top"||l==="left"||Ke(l)?"header":"footer"}function uv(l,s){let{facet:d,config:h,child:y,component:w}=l;if(l.channelHasField(s)){let S=d[s],A=Yi("title",null,h,s),C=is(S,h,{allowDisabling:!0,includeDefault:A===void 0||!!A});y.component.layoutHeaders[s].title&&(C=b.isArray(C)?C.join(", "):C,C+=` / ${y.component.layoutHeaders[s].title}`,y.component.layoutHeaders[s].title=null);let L=Yi("labelOrient",S.header,h,s),G=S.header!==null&&Ve(S.header?.labels,h.header.labels,!0),H=Z(["bottom","right"],L)?"footer":"header";w.layoutHeaders[s]={title:S.header!==null?C:null,facetFieldDef:S,[H]:s==="facet"?[]:[Ep(l,s,G)]}}}function Ep(l,s,d){let h=s==="row"?"height":"width";return{labels:d,sizeSignal:l.child.component.layoutSize.get(h)?l.child.getSizeSignalRef(h):void 0,axes:[]}}function Tn(l,s){let{child:d}=l;if(d.component.axes[s]){let{layoutHeaders:h,resolve:y}=l.component;if(y.axis[s]=rp(y,s),y.axis[s]==="shared"){let w=s==="x"?"column":"row",S=h[w];for(let A of d.component.axes[s]){let C=Fg(A.get("orient"));S[C]??=[Ep(l,w,!1)];let L=Vi(A,"main",l.config,{header:!0});L&&S[C][0].axes.push(L),A.mainExtracted=!0}}}}function pl(l){for(let s of l.children)s.parseLayoutSize()}function _s(l,s){let d=og(s),h=Ju(d),y=l.component.resolve,w=l.component.layoutSize,S;for(let A of l.children){let C=A.component.layoutSize.getWithExplicit(d),L=y.scale[h]??lg(h,l);if(L==="independent"&&C.value==="step"){S=void 0;break}if(S){if(L==="independent"&&S.value!==C.value){S=void 0;break}S=Gi(S,C,d,"")}else S=C}if(S){for(let A of l.children)l.renameSignal(A.getName(d),l.getName(s)),A.component.layoutSize.set(d,"merged",!1);w.setWithExplicit(s,S)}else w.setWithExplicit(s,{explicit:!1,value:void 0})}function Pr(l,s){let d=s==="width"?"x":"y",h=l.config,y=l.getScaleComponent(d);if(y){let w=y.get("type"),S=y.get("range");if(Gn(w)){let A=xc(h.view,s);return po(S)||ja(A)?"step":A}return us(h.view,s)}if(l.hasProjection||l.mark==="arc")return us(h.view,s);{let w=xc(h.view,s);return ja(w)?w.step:w}}function ad(l,s,d){return Ge(s,{suffix:`by_${Ge(l)}`,...d??{}})}class hl extends nd{constructor(s,d,h,y){super(s,"facet",d,h,y,s.resolve),nt(this,"facet",void 0),nt(this,"child",void 0),nt(this,"children",void 0),this.child=Hg(s.spec,this,this.getName("child"),void 0,y),this.children=[this.child],this.facet=this.initFacet(s.facet)}initFacet(s){if(!Zl(s))return{facet:this.initFacetFieldDef(s,"facet")};let d=be(s),h={};for(let y of d){if(![Je,Yr].includes(y)){$e(Ii(y,"facet"));break}let w=s[y];if(w.field===void 0){$e(zd(w,y));break}h[y]=this.initFacetFieldDef(w,y)}return h}initFacetFieldDef(s,d){let h=nu(s,d);return h.header?h.header=Jn(h.header):h.header===null&&(h.header=null),h}channelHasField(s){return!!this.facet[s]}fieldDef(s){return this.facet[s]}parseData(){this.component.data=wp(this),this.child.parseData()}parseLayoutSize(){pl(this)}parseSelections(){this.child.parseSelections(),this.component.selection=this.child.component.selection}parseMarkGroup(){this.child.parseMarkGroup()}parseAxesAndHeaders(){this.child.parseAxesAndHeaders(),function(s){for(let d of $a)uv(s,d);Tn(s,"x"),Tn(s,"y")}(this)}assembleSelectionTopLevelSignals(s){return this.child.assembleSelectionTopLevelSignals(s)}assembleSignals(){return this.child.assembleSignals(),[]}assembleSelectionData(s){return this.child.assembleSelectionData(s)}getHeaderLayoutMixins(){let s={};for(let d of $a)for(let h of Bc){let y=this.component.layoutHeaders[d],w=y[h],{facetFieldDef:S}=y;if(S){let A=Yi("titleOrient",S.header,this.config,d);if(["right","bottom"].includes(A)){let C=Pc(d,A);s.titleAnchor??={},s.titleAnchor[C]="end"}}if(w?.[0]){let A=d==="row"?"height":"width",C=h==="header"?"headerBand":"footerBand";d==="facet"||this.child.component.layoutSize.get(A)||(s[C]??={},s[C][d]=.5),y.title&&(s.offset??={},s.offset[d==="row"?"rowTitle":"columnTitle"]=10)}}return s}assembleDefaultLayout(){let{column:s,row:d}=this.facet,h=s?this.columnDistinctSignal():d?1:void 0,y="all";return(d||this.component.resolve.scale.x!=="independent")&&(s||this.component.resolve.scale.y!=="independent")||(y="none"),{...this.getHeaderLayoutMixins(),...h?{columns:h}:{},bounds:"full",align:y}}assembleLayoutSignals(){return this.child.assembleLayoutSignals()}columnDistinctSignal(){if(!(this.parent&&this.parent instanceof hl))return{signal:`length(data('${this.getName("column_domain")}'))`}}assembleGroupStyle(){}assembleGroup(s){return this.parent&&this.parent instanceof hl?{...this.channelHasField("column")?{encode:{update:{columns:{field:Ge(this.facet.column,{prefix:"distinct"})}}}}:{},...super.assembleGroup(s)}:super.assembleGroup(s)}getCardinalityAggregateForChild(){let s=[],d=[],h=[];if(this.child instanceof hl){if(this.child.channelHasField("column")){let y=Ge(this.child.facet.column);s.push(y),d.push("distinct"),h.push(`distinct_${y}`)}}else for(let y of Jr){let w=this.child.component.scales[y];if(w&&!w.merged){let S=w.get("type"),A=w.get("range");if(Gn(S)&&po(A)){let C=Ag(ys(this.child,y));C?(s.push(C),d.push("distinct"),h.push(`distinct_${C}`)):$e(pa(y))}}}return{fields:s,ops:d,as:h}}assembleFacet(){let{name:s,data:d}=this.component.data.facetRoot,{row:h,column:y}=this.facet,{fields:w,ops:S,as:A}=this.getCardinalityAggregateForChild(),C=[];for(let G of $a){let H=this.facet[G];if(H){C.push(Ge(H));let{bin:J,sort:re}=H;if(Wt(J)&&C.push(Ge(H,{binSuffix:"end"})),ri(re)){let{field:ee,op:se=uc}=re,de=ad(H,re);h&&y?(w.push(de),S.push("max"),A.push(de)):(w.push(ee),S.push(se),A.push(de))}else if(b.isArray(re)){let ee=rl(H,G);w.push(ee),S.push("max"),A.push(ee)}}}let L=!!h&&!!y;return{name:s,data:d,groupby:C,...L||w.length>0?{aggregate:{...L?{cross:L}:{},...w.length?{fields:w,ops:S,as:A}:{}}}:{}}}facetSortFields(s){let{facet:d}=this,h=d[s];return h?ri(h.sort)?[ad(h,h.sort,{expr:"datum"})]:b.isArray(h.sort)?[rl(h,s,{expr:"datum"})]:[Ge(h,{expr:"datum"})]:[]}facetSortOrder(s){let{facet:d}=this,h=d[s];if(h){let{sort:y}=h;return[(ri(y)?y.order:!b.isArray(y)&&y)||"ascending"]}return[]}assembleLabelTitle(){let{facet:s,config:d}=this;if(s.facet)return _o(s.facet,"facet",d);let h={row:["top","bottom"],column:["left","right"]};for(let y of Eu)if(s[y]){let w=Yi("labelOrient",s[y]?.header,d,y);if(h[y].includes(w))return _o(s[y],y,d)}}assembleMarks(){let{child:s}=this,d=function(S){let A=[],C=vp(A);for(let L of S.children)C(L,{source:S.name,name:null,transform:[]});return A}(this.component.data.facetRoot),h=s.assembleGroupEncodeEntry(!1),y=this.assembleLabelTitle()||s.assembleTitle(),w=s.assembleGroupStyle();return[{name:this.getName("cell"),type:"group",...y?{title:y}:{},...w?{style:w}:{},from:{facet:this.assembleFacet()},sort:{field:$a.map(S=>this.facetSortFields(S)).flat(),order:$a.map(S=>this.facetSortOrder(S)).flat()},...d.length>0?{data:d}:{},...h?{encode:{update:h}}:{},...s.assembleGroup(Cc(this,[]))}]}getMapping(){return this.facet}}function Pg(l,s){for(let d of s){let h=d.data;if(l.name&&d.hasName()&&l.name!==d.dataName)continue;let y=l.format?.mesh,w=h.format?.feature;if(y&&w)continue;let S=l.format?.feature;if((S||w)&&S!==w)continue;let A=h.format?.mesh;if(!y&&!A||y===A){if(pu(l)&&pu(h)){if(Re(l.values,h.values))return d}else if(cs(l)&&cs(h)){if(l.url===h.url)return d}else if(Gf(l)&&l.name===d.dataName)return d}}return null}function wp(l){let s=function(ee,se){if(ee.data||!ee.parent){if(ee.data===null){let fe=new Ao({values:[]});return se.push(fe),fe}let de=Pg(ee.data,se);if(de)return bo(ee.data)||(de.data.format=pe({},ee.data.format,de.data.format)),!de.hasName()&&ee.data.name&&(de.dataName=ee.data.name),de;{let fe=new Ao(ee.data);return se.push(fe),fe}}return ee.parent.component.data.facetRoot?ee.parent.component.data.facetRoot:ee.parent.component.data.main}(l,l.component.data.sources),{outputNodes:d,outputNodeRefCounts:h}=l.component.data,y=l.data,w=!(y&&(bo(y)||cs(y)||pu(y)))&&l.parent?l.parent.component.data.ancestorParse.clone():new wy;bo(y)?(jf(y)?s=new Yc(s,y.sequence):qf(y)&&(s=new Vc(s,y.graticule)),w.parseNothing=!0):y?.format?.parse===null&&(w.parseNothing=!0),s=Vn.makeExplicit(s,l,w)??s,s=new So(s);let S=l.parent&&vs(l.parent);(ln(l)||Wa(l))&&S&&(s=fi.makeFromEncoding(s,l)??s),l.transforms.length>0&&(s=function(ee,se,de){let fe=0;for(let ge of se.transforms){let we,Te;if(V_(ge))Te=ee=new al(ee,ge),we="derived";else if(Tm(ge)){let Fe=n1(ge);Te=ee=Vn.makeWithAncestors(ee,{},Fe,de)??ee,ee=new ui(ee,se,ge.filter)}else if(Ff(ge))Te=ee=fi.makeFromTransform(ee,ge,se),we="number";else if(Pf(ge))we="date",de.getWithExplicit(ge.field).value===void 0&&(ee=new Vn(ee,{[ge.field]:we}),de.set(ge.field,we,!1)),Te=ee=ji.makeFromTransform(ee,ge);else if(yy(ge))Te=ee=qa.makeFromTransform(ee,ge),we="number",ng(se)&&(ee=new So(ee));else if(Cm(ge))Te=ee=Va.make(ee,se,ge,fe++),we="derived";else if(Nm(ge))Te=ee=new ul(ee,ge),we="number";else if(Im(ge))Te=ee=new ll(ee,ge),we="number";else if(Y_(ge))Te=ee=To.makeFromTransform(ee,ge),we="derived";else if(Dm(ge))Te=ee=new Es(ee,ge),we="derived";else if(Mm(ge))Te=ee=new _u(ee,ge),we="derived";else if(by(ge))Te=ee=new Fr(ee,ge),we="derived";else if(q_(ge))Te=ee=new dl(ee,ge),we="derived";else if(gy(ge))ee=new fl(ee,ge);else if(Om(ge))Te=ee=pr.makeFromTransform(ee,ge),we="derived";else if(hy(ge))Te=ee=new wu(ee,ge),we="derived";else if(Rm(ge))Te=ee=new Co(ee,ge),we="derived";else if(my(ge))Te=ee=new Ro(ee,ge),we="derived";else{if(!W_(ge)){$e(`Ignoring an invalid transform: ${Ye(ge)}.`);continue}Te=ee=new Ji(ee,ge),we="derived"}if(Te&&we!==void 0)for(let Fe of Te.producedFields()??[])de.set(Fe,we,!1)}return ee}(s,l,w));let A=function(ee){let se={};if(ln(ee)&&ee.component.selection)for(let de of be(ee.component.selection)){let fe=ee.component.selection[de];for(let ge of fe.project.items)!ge.channel&&Kt(ge.field)>1&&(se[ge.field]="flatten")}return se}(l),C=Wn(l);s=Vn.makeWithAncestors(s,{},{...A,...C},w)??s,ln(l)&&(s=Zi.parseAll(s,l),s=ws.parseAll(s,l)),(ln(l)||Wa(l))&&(S||(s=fi.makeFromEncoding(s,l)??s),s=ji.makeFromEncoding(s,l)??s,s=al.parseAllForSortIndex(s,l));let L=l.getDataName(tn.Raw),G=new aa(s,L,tn.Raw,h);if(d[L]=G,s=G,ln(l)){let ee=qa.makeFromEncoding(s,l);ee&&(s=ee,ng(l)&&(s=new So(s))),s=pr.makeFromEncoding(s,l)??s,s=To.makeFromEncoding(s,l)??s}ln(l)&&(s=Xi.make(s,l)??s);let H=l.getDataName(tn.Main),J=new aa(s,H,tn.Main,h);d[H]=J,s=J,ln(l)&&function(ee,se){for(let[de,fe]of ke(ee.component.selection??{})){let ge=ee.getName(`lookup_${de}`);ee.component.data.outputNodes[ge]=fe.materialized=new aa(new ui(se,ee,{param:de}),ge,tn.Lookup,ee.component.data.outputNodeRefCounts)}}(l,J);let re=null;if(Wa(l)){let ee=l.getName("facet");s=function(se,de){let{row:fe,column:ge}=de;if(fe&&ge){let we=null;for(let Te of[fe,ge])if(ri(Te.sort)){let{field:Fe,op:He=uc}=Te.sort;se=we=new ll(se,{joinaggregate:[{op:He,field:Fe,as:ad(Te,Te.sort,{forAs:!0})}],groupby:[Ge(Te)]})}return we}return null}(s,l.facet)??s,re=new sl(s,l,ee,J.getSource()),d[ee]=re}return{...l.component.data,outputNodes:d,outputNodeRefCounts:h,raw:G,main:J,facetRoot:re,ancestorParse:w}}class s1 extends td{constructor(s,d,h,y){super(s,"concat",d,h,y,s.resolve),nt(this,"children",void 0),s.resolve?.axis?.x!=="shared"&&s.resolve?.axis?.y!=="shared"||$e("Axes cannot be shared in concatenated or repeated views yet (https://github.com/vega/vega-lite/issues/2415)."),this.children=this.getChildren(s).map((w,S)=>Hg(w,this,this.getName(`concat_${S}`),void 0,y))}parseData(){this.component.data=wp(this);for(let s of this.children)s.parseData()}parseSelections(){this.component.selection={};for(let s of this.children){s.parseSelections();for(let d of be(s.component.selection))this.component.selection[d]=s.component.selection[d]}}parseMarkGroup(){for(let s of this.children)s.parseMarkGroup()}parseAxesAndHeaders(){for(let s of this.children)s.parseAxesAndHeaders()}getChildren(s){return uu(s)?s.vconcat:Nf(s)?s.hconcat:s.concat}parseLayoutSize(){(function(s){pl(s);let d=s.layout.columns===1?"width":"childWidth",h=s.layout.columns===void 0?"height":"childHeight";_s(s,d),_s(s,h)})(this)}parseAxisGroup(){return null}assembleSelectionTopLevelSignals(s){return this.children.reduce((d,h)=>h.assembleSelectionTopLevelSignals(d),s)}assembleSignals(){return this.children.forEach(s=>s.assembleSignals()),[]}assembleLayoutSignals(){let s=fr(this);for(let d of this.children)s.push(...d.assembleLayoutSignals());return s}assembleSelectionData(s){return this.children.reduce((d,h)=>h.assembleSelectionData(d),s)}assembleMarks(){return this.children.map(s=>{let d=s.assembleTitle(),h=s.assembleGroupStyle(),y=s.assembleGroupEncodeEntry(!1);return{type:"group",name:s.getName("group"),...d?{title:d}:{},...h?{style:h}:{},...y?{encode:{update:y}}:{},...s.assembleGroup()}})}assembleGroupStyle(){}assembleDefaultLayout(){let s=this.layout.columns;return{...s!=null?{columns:s}:{},bounds:"full",align:"each"}}}let _p={disable:1,gridScale:1,scale:1,...hc,labelExpr:1,encode:1},$g=be(_p);class kp extends Ui{constructor(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},h=arguments.length>2&&arguments[2]!==void 0&&arguments[2];super(),this.explicit=s,this.implicit=d,this.mainExtracted=h}clone(){return new kp(j(this.explicit),j(this.implicit),this.mainExtracted)}hasAxisPart(s){return s==="axis"||(s==="grid"||s==="title"?!!this.get(s):!((d=this.get(s))===!1||d===null));var d}hasOrientSignalRef(){return Ke(this.explicit.orient)}}let Pt={bottom:"top",top:"bottom",left:"right",right:"left"};function cv(l,s){if(!l)return s.map(d=>d.clone());{if(l.length!==s.length)return;let d=l.length;for(let h=0;h<d;h++){let y=l[h],w=s[h];if(!!y!=!!w)return;if(y&&w){let S=y.getWithExplicit("orient"),A=w.getWithExplicit("orient");if(S.explicit&&A.explicit&&S.value!==A.value)return;l[h]=ml(y,w)}}}return l}function ml(l,s){for(let d of $g){let h=Gi(l.getWithExplicit(d),s.getWithExplicit(d),d,"axis",(y,w)=>{switch(d){case"title":return ti(y,w);case"gridScale":return{explicit:y.explicit,value:Ve(y.value,w.value)}}return Tc(y,w,d,"axis")});l.setWithExplicit(d,h)}return l}function Bg(l,s,d,h,y){if(s==="disable")return d!==void 0;switch(d=d||{},s){case"titleAngle":case"labelAngle":return l===(Ke(d.labelAngle)?d.labelAngle:Dt(d.labelAngle));case"values":return!!d.values;case"encode":return!!d.encoding||!!d.labelAngle;case"title":if(l===zy(h,y))return!0}return l===d[s]}let ku=new Set(["grid","translate","format","formatType","orient","labelExpr","tickCount","position","tickMinStep"]);function Ug(l,s){let d=s.axis(l),h=new kp,y=mn(s.encoding[l]),{mark:w,config:S}=s,A=d?.orient||S[l==="x"?"axisX":"axisY"]?.orient||S.axis?.orient||function(fe){return fe==="x"?"bottom":"left"}(l),C=s.getScaleComponent(l).get("type"),L=function(fe,ge,we,Te){let Fe=ge==="band"?["axisDiscrete","axisBand"]:ge==="point"?["axisDiscrete","axisPoint"]:z0(ge)?["axisQuantitative"]:ge==="time"||ge==="utc"?["axisTemporal"]:[],He=fe==="x"?"axisX":"axisY",tt=Ke(we)?"axisOrient":`axis${gt(we)}`,ut=[...Fe,...Fe.map(Xe=>He+Xe.substr(4))],Qe=["axis",tt,He];return{vlOnlyAxisConfig:ci(ut,Te,fe,we),vgAxisConfig:ci(Qe,Te,fe,we),axisConfigStyle:t1([...Qe,...ut],Te)}}(l,C,A,s.config),G=d!==void 0?!d:ag("disable",S.style,d?.style,L).configValue;if(h.set("disable",G,d!==void 0),G)return h;d=d||{};let H=function(fe,ge,we,Te,Fe){let He=ge?.labelAngle;if(He!==void 0)return Ke(He)?He:Dt(He);{let{configValue:tt}=ag("labelAngle",Te,ge?.style,Fe);return tt!==void 0?Dt(tt):we!==Jt||!Z([Qd,Jd],fe.type)||Ue(fe)&&fe.timeUnit?void 0:270}}(y,d,l,S.style,L),J=J0(d.formatType,y,C),re=Z0(y,y.type,d.format,d.formatType,S,!0),ee={fieldOrDatumDef:y,axis:d,channel:l,model:s,scaleType:C,orient:A,labelAngle:H,format:re,formatType:J,mark:w,config:S};for(let fe of $g){let ge=fe in $y?$y[fe](ee):ay(fe)?d[fe]:void 0,we=ge!==void 0,Te=Bg(ge,fe,d,s,l);if(we&&Te)h.set(fe,ge,Te);else{let{configValue:Fe,configFrom:He}=ay(fe)&&fe!=="values"?ag(fe,S.style,d.style,L):{},tt=Fe!==void 0;we&&!tt?h.set(fe,ge,Te):(He!=="vgAxisConfig"||ku.has(fe)&&tt||iu(Fe)||Ke(Fe))&&h.set(fe,Fe,!1)}}let se=d.encoding??{},de=ss.reduce((fe,ge)=>{if(!h.hasAxisPart(ge))return fe;let we=sg(se[ge]??{},s),Te=ge==="labels"?function(Fe,He,tt){let{encoding:ut,config:Qe}=Fe,Xe=mn(ut[He])??mn(ut[Si(He)]),xt=Fe.axis(He)||{},{format:$t,formatType:Mn}=xt;if(Vs(Mn))return{text:ai({fieldOrDatumDef:Xe,field:"datum.value",format:$t,formatType:Mn,config:Qe}),...tt};if($t===void 0&&Mn===void 0&&Qe.customFormatTypes){if(Ql(Xe)==="quantitative"){if(eu(Xe)&&Xe.stack==="normalize"&&Qe.normalizedNumberFormatType)return{text:ai({fieldOrDatumDef:Xe,field:"datum.value",format:Qe.normalizedNumberFormat,formatType:Qe.normalizedNumberFormatType,config:Qe}),...tt};if(Qe.numberFormatType)return{text:ai({fieldOrDatumDef:Xe,field:"datum.value",format:Qe.numberFormat,formatType:Qe.numberFormatType,config:Qe}),...tt}}if(Ql(Xe)==="temporal"&&Qe.timeFormatType&&Ue(Xe)&&!Xe.timeUnit)return{text:ai({fieldOrDatumDef:Xe,field:"datum.value",format:Qe.timeFormat,formatType:Qe.timeFormatType,config:Qe}),...tt}}return tt}(s,l,we):we;return Te===void 0||ye(Te)||(fe[ge]={update:Te}),fe},{});return ye(de)||h.set("encode",de,!!d.encoding||d.labelAngle!==void 0),h}function xp(l,s){let{config:d}=l;return{...Ca(l,{align:"ignore",baseline:"ignore",color:"include",size:"include",orient:"ignore",theta:"ignore"}),...qn("x",l,{defaultPos:"mid"}),...qn("y",l,{defaultPos:"mid"}),...Hn("size",l),...Hn("angle",l),...dv(l,d,s)}}function dv(l,s,d){return d?{shape:{value:d}}:Hn("shape",l)}let fv={vgMark:"rule",encodeEntry:l=>{let{markDef:s}=l,d=s.orient;return l.encoding.x||l.encoding.y||l.encoding.latitude||l.encoding.longitude?{...Ca(l,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...Zf("x",l,{defaultPos:d==="horizontal"?"zeroOrMax":"mid",defaultPos2:"zeroOrMin",range:d!=="vertical"}),...Zf("y",l,{defaultPos:d==="vertical"?"zeroOrMax":"mid",defaultPos2:"zeroOrMin",range:d!=="horizontal"}),...Hn("size",l,{vgChannel:"strokeWidth"})}:{}}};function l1(l,s,d){if(jt("align",l,d)===void 0)return"center"}function pv(l,s,d){if(jt("baseline",l,d)===void 0)return"middle"}let Sp={vgMark:"rect",encodeEntry:l=>{let{config:s,markDef:d}=l,h=d.orient,y=h==="horizontal"?"width":"height",w=h==="horizontal"?"height":"width";return{...Ca(l,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...qn("x",l,{defaultPos:"mid",vgChannel:"xc"}),...qn("y",l,{defaultPos:"mid",vgChannel:"yc"}),...Hn("size",l,{defaultValue:hv(l),vgChannel:y}),[w]:rn(jt("thickness",d,s))}}};function hv(l){let{config:s,markDef:d}=l,{orient:h}=d,y=h==="horizontal"?"width":"height",w=l.getScaleComponent(h==="horizontal"?"x":"y"),S=jt("size",d,s,{vgChannel:y})??s.tick.bandSize;if(S!==void 0)return S;{let A=w?w.get("range"):void 0;return A&&po(A)&&b.isNumber(A.step)?3*A.step/4:3*cu(s.view,y)/4}}let rd={arc:{vgMark:"arc",encodeEntry:l=>({...Ca(l,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"}),...qn("x",l,{defaultPos:"mid"}),...qn("y",l,{defaultPos:"mid"}),...si(l,"radius"),...si(l,"theta")})},area:{vgMark:"area",encodeEntry:l=>({...Ca(l,{align:"ignore",baseline:"ignore",color:"include",orient:"include",size:"ignore",theta:"ignore"}),...Zf("x",l,{defaultPos:"zeroOrMin",defaultPos2:"zeroOrMin",range:l.markDef.orient==="horizontal"}),...Zf("y",l,{defaultPos:"zeroOrMin",defaultPos2:"zeroOrMin",range:l.markDef.orient==="vertical"}),...Dc(l)})},bar:{vgMark:"rect",encodeEntry:l=>({...Ca(l,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...si(l,"x"),...si(l,"y")})},circle:{vgMark:"symbol",encodeEntry:l=>xp(l,"circle")},geoshape:{vgMark:"shape",encodeEntry:l=>({...Ca(l,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"})}),postEncodingTransform:l=>{let{encoding:s}=l,d=s.shape;return[{type:"geoshape",projection:l.projectionName(),...d&&Ue(d)&&d.type===Hs?{field:Ge(d,{expr:"datum"})}:{}}]}},image:{vgMark:"image",encodeEntry:l=>({...Ca(l,{align:"ignore",baseline:"ignore",color:"ignore",orient:"ignore",size:"ignore",theta:"ignore"}),...si(l,"x"),...si(l,"y"),...Kf(l,"url")})},line:{vgMark:"line",encodeEntry:l=>({...Ca(l,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"}),...qn("x",l,{defaultPos:"mid"}),...qn("y",l,{defaultPos:"mid"}),...Hn("size",l,{vgChannel:"strokeWidth"}),...Dc(l)})},point:{vgMark:"symbol",encodeEntry:l=>xp(l)},rect:{vgMark:"rect",encodeEntry:l=>({...Ca(l,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...si(l,"x"),...si(l,"y")})},rule:fv,square:{vgMark:"symbol",encodeEntry:l=>xp(l,"square")},text:{vgMark:"text",encodeEntry:l=>{let{config:s,encoding:d}=l;return{...Ca(l,{align:"include",baseline:"include",color:"include",size:"ignore",orient:"ignore",theta:"include"}),...qn("x",l,{defaultPos:"mid"}),...qn("y",l,{defaultPos:"mid"}),...Kf(l),...Hn("size",l,{vgChannel:"fontSize"}),...Hn("angle",l),...Ny("align",l1(l.markDef,d,s)),...Ny("baseline",pv(l.markDef,d,s)),...qn("radius",l,{defaultPos:null}),...qn("theta",l,{defaultPos:null})}}},tick:Sp,trail:{vgMark:"trail",encodeEntry:l=>({...Ca(l,{align:"ignore",baseline:"ignore",color:"include",size:"include",orient:"ignore",theta:"ignore"}),...qn("x",l,{defaultPos:"mid"}),...qn("y",l,{defaultPos:"mid"}),...Hn("size",l),...Dc(l)})}};function zg(l){if(Z([sc,ef,N_],l.mark)){let s=nm(l.mark,l.encoding);if(s.length>0)return function(d,h){return[{name:d.getName("pathgroup"),type:"group",from:{facet:{name:Gg+d.requestDataName(tn.Main),data:d.requestDataName(tn.Main),groupby:h}},encode:{update:{width:{field:{group:"width"}},height:{field:{group:"height"}}}},marks:Ap(d,{fromPrefix:Gg})}]}(l,s)}else if(l.mark===tf){let s=kh.some(d=>jt(d,l.markDef,l.config));if(l.stack&&!l.fieldDef("size")&&s)return function(d){let[h]=Ap(d,{fromPrefix:jg}),y=d.scaleName(d.stack.fieldChannel),w=function(){let G=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return d.vgField(d.stack.fieldChannel,G)},S=(G,H)=>`${G}(${[w({prefix:"min",suffix:"start",expr:H}),w({prefix:"max",suffix:"start",expr:H}),w({prefix:"min",suffix:"end",expr:H}),w({prefix:"max",suffix:"end",expr:H})].map(J=>`scale('${y}',${J})`).join(",")})`,A,C;d.stack.fieldChannel==="x"?(A={...V(h.encode.update,["y","yc","y2","height",...kh]),x:{signal:S("min","datum")},x2:{signal:S("max","datum")},clip:{value:!0}},C={x:{field:{group:"x"},mult:-1},height:{field:{group:"height"}}},h.encode.update={...Q(h.encode.update,["y","yc","y2"]),height:{field:{group:"height"}}}):(A={...V(h.encode.update,["x","xc","x2","width"]),y:{signal:S("min","datum")},y2:{signal:S("max","datum")},clip:{value:!0}},C={y:{field:{group:"y"},mult:-1},width:{field:{group:"width"}}},h.encode.update={...Q(h.encode.update,["x","xc","x2"]),width:{field:{group:"width"}}});for(let G of kh){let H=Ua(G,d.markDef,d.config);h.encode.update[G]?(A[G]=h.encode.update[G],delete h.encode.update[G]):H&&(A[G]=rn(H)),H&&(h.encode.update[G]={value:0})}let L=[];if(d.stack.groupbyChannels?.length>0)for(let G of d.stack.groupbyChannels){let H=d.fieldDef(G),J=Ge(H);J&&L.push(J),(H?.bin||H?.timeUnit)&&L.push(Ge(H,{binSuffix:"end"}))}return A=["stroke","strokeWidth","strokeJoin","strokeCap","strokeDash","strokeDashOffset","strokeMiterLimit","strokeOpacity"].reduce((G,H)=>{if(h.encode.update[H])return{...G,[H]:h.encode.update[H]};{let J=Ua(H,d.markDef,d.config);return J!==void 0?{...G,[H]:rn(J)}:G}},A),A.stroke&&(A.strokeForeground={value:!0},A.strokeOffset={value:0}),[{type:"group",from:{facet:{data:d.requestDataName(tn.Main),name:jg+d.requestDataName(tn.Main),groupby:L,aggregate:{fields:[w({suffix:"start"}),w({suffix:"start"}),w({suffix:"end"}),w({suffix:"end"})],ops:["min","max","min","max"]}}},encode:{update:A},marks:[{type:"group",encode:{update:C},marks:[h]}]}]}(l)}return Ap(l)}let Gg="faceted_path_",jg="stack_group_";function Ap(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{fromPrefix:""},{mark:d,markDef:h,encoding:y,config:w}=l,S=Ve(h.clip,function(re){let ee=re.getScaleComponent("x"),se=re.getScaleComponent("y");return!(!ee?.get("selectionExtent")&&!se?.get("selectionExtent"))||void 0}(l),function(re){let ee=re.component.projection;return!(!ee||ee.isFit)||void 0}(l)),A=k0(h),C=y.key,L=function(re){let{encoding:ee,stack:se,mark:de,markDef:fe,config:ge}=re,we=ee.order;if(!(!b.isArray(we)&&ur(we)&&he(we.value)||!we&&he(jt("order",fe,ge)))){if((b.isArray(we)||Ue(we))&&!se)return jl(we,{expr:"datum"});if(as(de)){let Te=fe.orient==="horizontal"?"y":"x",Fe=ee[Te];if(Ue(Fe)){let He=Fe.sort;return b.isArray(He)?{field:Ge(Fe,{prefix:Te,suffix:"sort_index",expr:"datum"})}:ri(He)?{field:Ge({aggregate:tm(re.encoding)?He.op:void 0,field:He.field},{expr:"datum"})}:Yh(He)?{field:Ge(re.fieldDef(He.encoding),{expr:"datum"}),order:He.order}:He===null?void 0:{field:Ge(Fe,{binSuffix:re.stack?.impute?"mid":void 0,expr:"datum"})}}}}}(l),G=function(re){if(!re.component.selection)return null;let ee=be(re.component.selection).length,se=ee,de=re.parent;for(;de&&se===0;)se=be(de.component.selection).length,de=de.parent;return se?{interactive:ee>0||re.mark==="geoshape"||!!re.encoding.tooltip}:null}(l),H=jt("aria",h,w),J=rd[d].postEncodingTransform?rd[d].postEncodingTransform(l):null;return[{name:l.getName("marks"),type:rd[d].vgMark,...S?{clip:!0}:{},...A?{style:A}:{},...C?{key:C.field}:{},...L?{sort:L}:{},...G||{},...H===!1?{aria:H}:{},from:{data:s.fromPrefix+l.requestDataName(tn.Main)},encode:{update:rd[d].encodeEntry(l)},...J?{transform:J}:{}}]}class Tp extends nd{constructor(s,d,h){let y=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},w=arguments.length>4?arguments[4]:void 0;super(s,"unit",d,h,w,void 0,_c(s)?s.view:void 0),nt(this,"markDef",void 0),nt(this,"encoding",void 0),nt(this,"specifiedScales",{}),nt(this,"stack",void 0),nt(this,"specifiedAxes",{}),nt(this,"specifiedLegends",{}),nt(this,"specifiedProjection",{}),nt(this,"selection",[]),nt(this,"children",[]);let S=Oi(s.mark)?{...s.mark}:{type:s.mark},A=S.type;S.filled===void 0&&(S.filled=function(L,G,H){let{graticule:J}=H;if(J)return!1;let re=Ua("filled",L,G),ee=L.type;return Ve(re,ee!==nf&&ee!==sc&&ee!==af)}(S,w,{graticule:s.data&&qf(s.data)}));let C=this.encoding=function(L,G,H,J){let re={};for(let se of be(L))d0(se)||$e(`${ee=se}-encoding is dropped as ${ee} is not a valid encoding channel.`);var ee;for(let se of Ku){if(!L[se])continue;let de=L[se];if(Zn(se)){let fe=l_(se),ge=re[fe];if(Ue(ge)&&B0(ge.type)&&Ue(de)&&!ge.timeUnit){$e(Sh(fe));continue}}if(se!=="angle"||G!=="arc"||L.theta||($e("Arc marks uses theta channel rather than angle, replacing angle with theta."),se=nr),vf(L,se,G)){if(se===wi&&G==="line"&&cr(L[se])?.aggregate){$e("Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.");continue}if(se===Me&&(H?"fill"in L:"stroke"in L))$e(T0("encoding",{fill:"fill"in L,stroke:"stroke"in L}));else if(se===uo||se===Fs&&!b.isArray(de)&&!ur(de)||se===Zr&&b.isArray(de)){if(de){if(se===Fs){let fe=L[se];if(Q0(fe)){re[se]=fe;continue}}re[se]=b.array(de).reduce((fe,ge)=>(Ue(ge)?fe.push(nu(ge,se)):$e(zd(ge,se)),fe),[])}}else{if(se===Zr&&de===null)re[se]=null;else if(!(Ue(de)||Mi(de)||ur(de)||df(de)||Ke(de))){$e(zd(de,se));continue}re[se]=em(de,se,J)}}else $e(Ii(se,G))}return re}(s.encoding||{},A,S.filled,w);this.markDef=fy(S,C,w),this.size=function(L){let{encoding:G,size:H}=L;for(let J of Jr){let re=ka(J);ja(H[re])&&rs(G[J])&&(delete H[re],$e(Rh(re)))}return H}({encoding:C,size:_c(s)?{...y,...s.width?{width:s.width}:{},...s.height?{height:s.height}:{}}:y}),this.stack=vm(this.markDef,C),this.specifiedScales=this.initScales(A,C),this.specifiedAxes=this.initAxes(C),this.specifiedLegends=this.initLegends(C),this.specifiedProjection=s.projection,this.selection=(s.params??[]).filter(L=>Ec(L))}get hasProjection(){let{encoding:s}=this,d=this.mark===W0,h=s&&u0.some(y=>vt(s[y]));return d||h}scaleDomain(s){let d=this.specifiedScales[s];return d?d.domain:void 0}axis(s){return this.specifiedAxes[s]}legend(s){return this.specifiedLegends[s]}initScales(s,d){return Ul.reduce((h,y)=>{let w=mn(d[y]);return w&&(h[y]=this.initScale(w.scale??{})),h},{})}initScale(s){let{domain:d,range:h}=s,y=Jn(s);return b.isArray(d)&&(y.domain=d.map(Un)),b.isArray(h)&&(y.range=h.map(Un)),y}initAxes(s){return Jr.reduce((d,h)=>{let y=s[h];if(vt(y)||h===Jt&&vt(s.x2)||h===Pn&&vt(s.y2)){let w=vt(y)?y.axis:void 0;d[h]=w&&this.initAxis({...w})}return d},{})}initAxis(s){let d=be(s),h={};for(let y of d){let w=s[y];h[y]=iu(w)?w0(w):Un(w)}return h}initLegends(s){return b0.reduce((d,h)=>{let y=mn(s[h]);if(y&&function(w){switch(w){case Me:case _a:case Xr:case wi:case En:case _i:case lo:case Xo:return!0;case Mt:case ki:case Pa:return!1}}(h)){let w=y.legend;d[h]=w&&Jn(w)}return d},{})}parseData(){this.component.data=wp(this)}parseLayoutSize(){(function(s){let{size:d,component:h}=s;for(let y of Jr){let w=ka(y);if(d[w]){let S=d[w];h.layoutSize.set(w,ja(S)?"step":S,!0)}else{let S=Pr(s,w);h.layoutSize.set(w,S,!1)}}})(this)}parseSelections(){this.component.selection=function(s,d){let h={},y=s.config.selection;if(!d||!d.length)return h;for(let w of d){let S=Pe(w.name),A=w.select,C=b.isString(A)?A:A.type,L=b.isObject(A)?j(A):{type:C},G=y[C];for(let re in G)re!=="fields"&&re!=="encodings"&&(re==="mark"&&(L[re]={...G[re],...L[re]}),L[re]!==void 0&&L[re]!==!0||(L[re]=j(G[re]??L[re])));let H=h[S]={...L,name:S,type:C,init:w.value,bind:w.bind,events:b.isString(L.on)?b.parseSelector(L.on,"scope"):b.array(j(L.on))},J=j(w);for(let re of nl)re.defined(H)&&re.parse&&re.parse(s,H,J)}return h}(this,this.selection)}parseMarkGroup(){this.component.mark=zg(this)}parseAxesAndHeaders(){var s;this.component.axes=(s=this,Jr.reduce((d,h)=>(s.component.scales[h]&&(d[h]=[Ug(h,s)]),d),{}))}assembleSelectionTopLevelSignals(s){return function(d,h){let y=!1;for(let w of Se(d.component.selection??{})){let S=w.name,A=b.stringValue(S+ps);if(h.filter(C=>C.name===S).length===0){let C=w.resolve==="global"?"union":w.resolve,L=w.type==="point"?", true, true)":")";h.push({name:w.name,update:`${tg}(${A}, ${b.stringValue(C)}${L}`})}y=!0;for(let C of nl)C.defined(w)&&C.topLevelSignals&&(h=C.topLevelSignals(d,w,h))}return y&&h.filter(w=>w.name==="unit").length===0&&h.unshift({name:"unit",value:{},on:[{events:"pointermove",update:"isTuple(group()) ? group() : unit"}]}),Wf(h)}(this,s)}assembleSignals(){return[...vu(this),..._y(this,[])]}assembleSelectionData(s){return function(d,h){let y=[...h],w=Ha(d,{escape:!1});for(let S of Se(d.component.selection??{})){let A={name:S.name+ps};if(S.project.hasSelectionId&&(A.transform=[{type:"collect",sort:{field:dr}}]),S.init){let C=S.project.items.map(zm);A.values=S.project.hasSelectionId?S.init.map(L=>({unit:w,[dr]:ds(L,!1)[0]})):S.init.map(L=>({unit:w,fields:C,values:ds(L,!1)}))}y.filter(C=>C.name===S.name+ps).length||y.push(A)}return y}(this,s)}assembleLayout(){return null}assembleLayoutSignals(){return fr(this)}assembleMarks(){let s=this.component.mark??[];return this.parent&&vs(this.parent)||(s=ky(this,s)),s.map(this.correctDataNames)}assembleGroupStyle(){let{style:s}=this.view||{};return s!==void 0?s:this.encoding.x||this.encoding.y?"cell":"view"}getMapping(){return this.encoding}get mark(){return this.markDef.type}channelHasField(s){return Pi(this.encoding,s)}fieldDef(s){return cr(this.encoding[s])}typedFieldDef(s){let d=this.fieldDef(s);return ha(d)?d:null}}class xu extends td{constructor(s,d,h,y,w){super(s,"layer",d,h,w,s.resolve,s.view),nt(this,"children",void 0);let S={...y,...s.width?{width:s.width}:{},...s.height?{height:s.height}:{}};this.children=s.layer.map((A,C)=>{if(du(A))return new xu(A,this,this.getName(`layer_${C}`),S,w);if(Fi(A))return new Tp(A,this,this.getName(`layer_${C}`),S,w);throw new Error(xh(A))})}parseData(){this.component.data=wp(this);for(let s of this.children)s.parseData()}parseLayoutSize(){var s;pl(s=this),_s(s,"width"),_s(s,"height")}parseSelections(){this.component.selection={};for(let s of this.children){s.parseSelections();for(let d of be(s.component.selection))this.component.selection[d]=s.component.selection[d]}}parseMarkGroup(){for(let s of this.children)s.parseMarkGroup()}parseAxesAndHeaders(){(function(s){let{axes:d,resolve:h}=s.component,y={top:0,bottom:0,right:0,left:0};for(let w of s.children){w.parseAxesAndHeaders();for(let S of be(w.component.axes))h.axis[S]=rp(s.component.resolve,S),h.axis[S]==="shared"&&(d[S]=cv(d[S],w.component.axes[S]),d[S]||(h.axis[S]="independent",delete d[S]))}for(let w of Jr){for(let S of s.children)if(S.component.axes[w]){if(h.axis[w]==="independent"){d[w]=(d[w]??[]).concat(S.component.axes[w]);for(let A of S.component.axes[w]){let{value:C,explicit:L}=A.getWithExplicit("orient");if(!Ke(C)){if(y[C]>0&&!L){let G=Pt[C];y[C]>y[G]&&A.set("orient",G,!1)}y[C]++}}}delete S.component.axes[w]}if(h.axis[w]==="independent"&&d[w]&&d[w].length>1)for(let[S,A]of(d[w]||[]).entries())S>0&&A.get("grid")&&!A.explicit.grid&&(A.implicit.grid=!1)}})(this)}assembleSelectionTopLevelSignals(s){return this.children.reduce((d,h)=>h.assembleSelectionTopLevelSignals(d),s)}assembleSignals(){return this.children.reduce((s,d)=>s.concat(d.assembleSignals()),vu(this))}assembleLayoutSignals(){return this.children.reduce((s,d)=>s.concat(d.assembleLayoutSignals()),fr(this))}assembleSelectionData(s){return this.children.reduce((d,h)=>h.assembleSelectionData(d),s)}assembleGroupStyle(){let s=new Set;for(let h of this.children)for(let y of b.array(h.assembleGroupStyle()))s.add(y);let d=Array.from(s);return d.length>1?d:d.length===1?d[0]:void 0}assembleTitle(){let s=super.assembleTitle();if(s)return s;for(let d of this.children)if(s=d.assembleTitle(),s)return s}assembleLayout(){return null}assembleMarks(){return function(s,d){for(let h of s.children)ln(h)&&(d=ky(h,d));return d}(this,this.children.flatMap(s=>s.assembleMarks()))}assembleLegends(){return this.children.reduce((s,d)=>s.concat(d.assembleLegends()),lp(this))}}function Hg(l,s,d,h,y){if(dc(l))return new hl(l,s,d,y);if(du(l))return new xu(l,s,d,h,y);if(Fi(l))return new Tp(l,s,d,h,y);if(function(w){return uu(w)||Nf(w)||wc(w)}(l))return new s1(l,s,d,y);throw new Error(xh(l))}let u1=x;p.accessPathDepth=Kt,p.accessPathWithDatum=kt,p.compile=function(l){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};var d;s.logger&&(d=s.logger,ac=d),s.fieldTitle&&fc(s.fieldTitle);try{let h=gm(b.mergeConfig(s.config,l.config)),y=Uf(l,h),w=Hg(y,null,"",void 0,h);return w.parse(),function(A,C){mp(A.sources);let L=0,G=0;for(let H=0;H<hp&&Qy(A,C,!0);H++)L++;A.sources.map(kg);for(let H=0;H<hp&&Qy(A,C,!1);H++)G++;mp(A.sources),Math.max(L,G)===hp&&$e(`Maximum optimization runs(${hp}) reached.`)}(w.component.data,w),{spec:function(A,C){let L=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},G=arguments.length>3?arguments[3]:void 0,H=A.config?Of(A.config):void 0,J=[].concat(A.assembleSelectionData([]),function(Te,Fe){let He=[],tt=vp(He),ut=0;for(let Xe of Te.sources){Xe.hasName()||(Xe.dataName="source_"+ut++);let xt=Xe.assemble();tt(Xe,xt)}for(let Xe of He)Xe.transform.length===0&&delete Xe.transform;let Qe=0;for(let[Xe,xt]of He.entries())(xt.transform??[]).length!==0||xt.source||He.splice(Qe++,0,He.splice(Xe,1)[0]);for(let Xe of He)for(let xt of Xe.transform??[])xt.type==="lookup"&&(xt.from=Te.outputNodes[xt.from].getSource());for(let Xe of He)Xe.name in Fe&&(Xe.values=Fe[Xe.name]);return He}(A.component.data,L)),re=A.assembleProjections(),ee=A.assembleTitle(),se=A.assembleGroupStyle(),de=A.assembleGroupEncodeEntry(!0),fe=A.assembleLayoutSignals();fe=fe.filter(Te=>Te.name!=="width"&&Te.name!=="height"||Te.value===void 0||(C[Te.name]=+Te.value,!1));let{params:ge,...we}=C;return{$schema:"https://vega.github.io/schema/vega/v5.json",...A.description?{description:A.description}:{},...we,...ee?{title:ee}:{},...se?{style:se}:{},...de?{encode:{update:de}}:{},data:J,...re.length>0?{projections:re}:{},...A.assembleGroup([...fe,...A.assembleSelectionTopLevelSignals([]),...Rf(ge)]),...H?{config:H}:{},...G?{usermeta:G}:{}}}(w,function(A,C,L,G){let H=G.component.layoutSize.get("width"),J=G.component.layoutSize.get("height");if(C===void 0?(C={type:"pad"},G.hasAxisOrientSignalRef()&&(C.resize=!0)):b.isString(C)&&(C={type:C}),H&&J&&(re=C.type,re==="fit"||re==="fit-x"||re==="fit-y")){if(H==="step"&&J==="step")$e(An()),C.type="pad";else if(H==="step"||J==="step"){let ee=H==="step"?"width":"height";$e(An(Ju(ee)));let se=ee==="width"?"height":"width";C.type=function(de){return de?`fit-${Ju(de)}`:"fit"}(se)}}var re;return{...be(C).length===1&&C.type?C.type==="pad"?{}:{autosize:C.type}:{autosize:C},...zf(L,!1),...zf(A,!0)}}(l,y.autosize,h,w),l.datasets,l.usermeta),normalized:y}}finally{s.logger&&(ac=I0),s.fieldTitle&&fc(ny)}},p.contains=Z,p.deepEqual=Re,p.deleteNestedProperty=lt,p.duplicate=j,p.entries=ke,p.every=le,p.fieldIntersection=Ee,p.flatAccessWithDatum=an,p.getFirstDefined=Ve,p.hasIntersection=Le,p.hash=ae,p.internalField=yt,p.isBoolean=We,p.isEmpty=ye,p.isEqual=function(l,s){let d=be(l),h=be(s);if(d.length!==h.length)return!1;for(let y of d)if(l[y]!==s[y])return!1;return!0},p.isInternalField=Zt,p.isNullOrFalse=he,p.isNumeric=At,p.keys=be,p.logicalExpr=De,p.mergeDeep=pe,p.never=W,p.normalize=Uf,p.normalizeAngle=Dt,p.omit=Q,p.pick=V,p.prefixGenerator=ze,p.removePathFromField=St,p.replaceAll=_t,p.replacePathInField=Gt,p.resetIdCounter=function(){Ze=42},p.setEqual=Ne,p.some=te,p.stringify=Ye,p.titleCase=gt,p.unique=Ae,p.uniqueId=Xt,p.vals=Se,p.varName=Pe,p.version=u1})});var FM=YS((KG,Jw)=>{var Cz=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{},D=function(p){var b=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,x=0,T={},I={manual:p.Prism&&p.Prism.manual,disableWorkerMessageHandler:p.Prism&&p.Prism.disableWorkerMessageHandler,util:{encode:function Z(te){return te instanceof B?new B(te.type,Z(te.content),te.alias):Array.isArray(te)?te.map(Z):te.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(Z){return Object.prototype.toString.call(Z).slice(8,-1)},objId:function(Z){return Z.__id||Object.defineProperty(Z,"__id",{value:++x}),Z.__id},clone:function Z(te,le){var pe,me;switch(le=le||{},I.util.type(te)){case"Object":if(me=I.util.objId(te),le[me])return le[me];for(var Ae in pe={},le[me]=pe,te)te.hasOwnProperty(Ae)&&(pe[Ae]=Z(te[Ae],le));return pe;case"Array":return me=I.util.objId(te),le[me]?le[me]:(pe=[],le[me]=pe,te.forEach(function(Ne,Le){pe[Le]=Z(Ne,le)}),pe);default:return te}},getLanguage:function(Z){for(;Z;){var te=b.exec(Z.className);if(te)return te[1].toLowerCase();Z=Z.parentElement}return"none"},setLanguage:function(Z,te){Z.className=Z.className.replace(RegExp(b,"gi"),""),Z.classList.add("language-"+te)},currentScript:function(){if(typeof document>"u")return null;if(document.currentScript&&document.currentScript.tagName==="SCRIPT")return document.currentScript;try{throw new Error}catch(pe){var Z=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(pe.stack)||[])[1];if(Z){var te=document.getElementsByTagName("script");for(var le in te)if(te[le].src==Z)return te[le]}return null}},isActive:function(Z,te,le){for(var pe="no-"+te;Z;){var me=Z.classList;if(me.contains(te))return!0;if(me.contains(pe))return!1;Z=Z.parentElement}return!!le}},languages:{plain:T,plaintext:T,text:T,txt:T,extend:function(Z,te){var le=I.util.clone(I.languages[Z]);for(var pe in te)le[pe]=te[pe];return le},insertBefore:function(Z,te,le,pe){var me=(pe=pe||I.languages)[Z],Ae={};for(var Ne in me)if(me.hasOwnProperty(Ne)){if(Ne==te)for(var Le in le)le.hasOwnProperty(Le)&&(Ae[Le]=le[Le]);le.hasOwnProperty(Ne)||(Ae[Ne]=me[Ne])}var ze=pe[Z];return pe[Z]=Ae,I.languages.DFS(I.languages,function(Ee,ye){ye===ze&&Ee!=Z&&(this[Ee]=Ae)}),Ae},DFS:function Z(te,le,pe,me){me=me||{};var Ae=I.util.objId;for(var Ne in te)if(te.hasOwnProperty(Ne)){le.call(te,Ne,te[Ne],pe||Ne);var Le=te[Ne],ze=I.util.type(Le);ze!=="Object"||me[Ae(Le)]?ze!=="Array"||me[Ae(Le)]||(me[Ae(Le)]=!0,Z(Le,le,Ne,me)):(me[Ae(Le)]=!0,Z(Le,le,null,me))}}},plugins:{},highlightAll:function(Z,te){I.highlightAllUnder(document,Z,te)},highlightAllUnder:function(Z,te,le){var pe={callback:le,container:Z,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};I.hooks.run("before-highlightall",pe),pe.elements=Array.prototype.slice.apply(pe.container.querySelectorAll(pe.selector)),I.hooks.run("before-all-elements-highlight",pe);for(var me,Ae=0;me=pe.elements[Ae++];)I.highlightElement(me,te===!0,pe.callback)},highlightElement:function(Z,te,le){var pe=I.util.getLanguage(Z),me=I.languages[pe];I.util.setLanguage(Z,pe);var Ae=Z.parentElement;Ae&&Ae.nodeName.toLowerCase()==="pre"&&I.util.setLanguage(Ae,pe);var Ne={element:Z,language:pe,grammar:me,code:Z.textContent};function Le(Ee){Ne.highlightedCode=Ee,I.hooks.run("before-insert",Ne),Ne.element.innerHTML=Ne.highlightedCode,I.hooks.run("after-highlight",Ne),I.hooks.run("complete",Ne),le&&le.call(Ne.element)}if(I.hooks.run("before-sanity-check",Ne),(Ae=Ne.element.parentElement)&&Ae.nodeName.toLowerCase()==="pre"&&!Ae.hasAttribute("tabindex")&&Ae.setAttribute("tabindex","0"),!Ne.code)return I.hooks.run("complete",Ne),void(le&&le.call(Ne.element));if(I.hooks.run("before-highlight",Ne),Ne.grammar)if(te&&p.Worker){var ze=new Worker(I.filename);ze.onmessage=function(Ee){Le(Ee.data)},ze.postMessage(JSON.stringify({language:Ne.language,code:Ne.code,immediateClose:!0}))}else Le(I.highlight(Ne.code,Ne.grammar,Ne.language));else Le(I.util.encode(Ne.code))},highlight:function(Z,te,le){var pe={code:Z,grammar:te,language:le};if(I.hooks.run("before-tokenize",pe),!pe.grammar)throw new Error('The language "'+pe.language+'" has no grammar.');return pe.tokens=I.tokenize(pe.code,pe.grammar),I.hooks.run("after-tokenize",pe),B.stringify(I.util.encode(pe.tokens),pe.language)},tokenize:function(Z,te){var le=te.rest;if(le){for(var pe in le)te[pe]=le[pe];delete te.rest}var me=new j;return W(me,me.head,Z),F(Z,me,te,me.head,0),function(Ae){for(var Ne=[],Le=Ae.head.next;Le!==Ae.tail;)Ne.push(Le.value),Le=Le.next;return Ne}(me)},hooks:{all:{},add:function(Z,te){var le=I.hooks.all;le[Z]=le[Z]||[],le[Z].push(te)},run:function(Z,te){var le=I.hooks.all[Z];if(le&&le.length)for(var pe,me=0;pe=le[me++];)pe(te)}},Token:B};function B(Z,te,le,pe){this.type=Z,this.content=te,this.alias=le,this.length=0|(pe||"").length}function P(Z,te,le,pe){Z.lastIndex=te;var me=Z.exec(le);if(me&&pe&&me[1]){var Ae=me[1].length;me.index+=Ae,me[0]=me[0].slice(Ae)}return me}function F(Z,te,le,pe,me,Ae){for(var Ne in le)if(le.hasOwnProperty(Ne)&&le[Ne]){var Le=le[Ne];Le=Array.isArray(Le)?Le:[Le];for(var ze=0;ze<Le.length;++ze){if(Ae&&Ae.cause==Ne+","+ze)return;var Ee=Le[ze],ye=Ee.inside,be=!!Ee.lookbehind,Se=!!Ee.greedy,ke=Ee.alias;if(Se&&!Ee.pattern.global){var We=Ee.pattern.toString().match(/[imsuy]*$/)[0];Ee.pattern=RegExp(Ee.pattern.source,We+"g")}for(var Pe=Ee.pattern||Ee,De=pe.next,lt=me;De!==te.tail&&!(Ae&&lt>=Ae.reach);lt+=De.value.length,De=De.next){var gt=De.value;if(te.length>Z.length)return;if(!(gt instanceof B)){var kt,an=1;if(Se){if(!(kt=P(Pe,lt,Z,be))||kt.index>=Z.length)break;var cn=kt.index,Gt=kt.index+kt[0].length,_t=lt;for(_t+=De.value.length;cn>=_t;)_t+=(De=De.next).value.length;if(lt=_t-=De.value.length,De.value instanceof B)continue;for(var St=De;St!==te.tail&&(_t<Gt||typeof St.value=="string");St=St.next)an++,_t+=St.value.length;an--,gt=Z.slice(lt,_t),kt.index-=lt}else if(!(kt=P(Pe,0,gt,be)))continue;cn=kt.index;var Kt=kt[0],Ve=gt.slice(0,cn),Ze=gt.slice(cn+Kt.length),Xt=lt+gt.length;Ae&&Xt>Ae.reach&&(Ae.reach=Xt);var yt=De.prev;if(Ve&&(yt=W(te,yt,Ve),lt+=Ve.length),V(te,yt,an),De=W(te,yt,new B(Ne,ye?I.tokenize(Kt,ye):Kt,ke,Kt)),Ze&&W(te,De,Ze),an>1){var Zt={cause:Ne+","+ze,reach:Xt};F(Z,te,le,De.prev,lt,Zt),Ae&&Zt.reach>Ae.reach&&(Ae.reach=Zt.reach)}}}}}}function j(){var Z={value:null,prev:null,next:null},te={value:null,prev:Z,next:null};Z.next=te,this.head=Z,this.tail=te,this.length=0}function W(Z,te,le){var pe=te.next,me={value:le,prev:te,next:pe};return te.next=me,pe.prev=me,Z.length++,me}function V(Z,te,le){for(var pe=te.next,me=0;me<le&&pe!==Z.tail;me++)pe=pe.next;te.next=pe,pe.prev=te,Z.length-=me}if(p.Prism=I,B.stringify=function Z(te,le){if(typeof te=="string")return te;if(Array.isArray(te)){var pe="";return te.forEach(function(ze){pe+=Z(ze,le)}),pe}var me={type:te.type,content:Z(te.content,le),tag:"span",classes:["token",te.type],attributes:{},language:le},Ae=te.alias;Ae&&(Array.isArray(Ae)?Array.prototype.push.apply(me.classes,Ae):me.classes.push(Ae)),I.hooks.run("wrap",me);var Ne="";for(var Le in me.attributes)Ne+=" "+Le+'="'+(me.attributes[Le]||"").replace(/"/g,"&quot;")+'"';return"<"+me.tag+' class="'+me.classes.join(" ")+'"'+Ne+">"+me.content+"</"+me.tag+">"},!p.document)return p.addEventListener&&(I.disableWorkerMessageHandler||p.addEventListener("message",function(Z){var te=JSON.parse(Z.data),le=te.language,pe=te.code,me=te.immediateClose;p.postMessage(I.highlight(pe,I.languages[le],le)),me&&p.close()},!1)),I;var Q=I.util.currentScript();function ae(){I.manual||I.highlightAll()}if(Q&&(I.filename=Q.src,Q.hasAttribute("data-manual")&&(I.manual=!0)),!I.manual){var he=document.readyState;he==="loading"||he==="interactive"&&Q&&Q.defer?document.addEventListener("DOMContentLoaded",ae):window.requestAnimationFrame?window.requestAnimationFrame(ae):window.setTimeout(ae,16)}return I}(Cz);typeof Jw<"u"&&Jw.exports&&(Jw.exports=D),typeof global<"u"&&(global.Prism=D);D.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},D.languages.markup.tag.inside["attr-value"].inside.entity=D.languages.markup.entity,D.languages.markup.doctype.inside["internal-subset"].inside=D.languages.markup,D.hooks.add("wrap",function(p){p.type==="entity"&&(p.attributes.title=p.content.replace(/&amp;/,"&"))}),Object.defineProperty(D.languages.markup.tag,"addInlined",{value:function(p,b){var x={};x["language-"+b]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:D.languages[b]},x.cdata=/^<!\[CDATA\[|\]\]>$/i;var T={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:x}};T["language-"+b]={pattern:/[\s\S]+/,inside:D.languages[b]};var I={};I[p]={pattern:RegExp("(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[^])*?(?=</__>)".replace(/__/g,function(){return p}),"i"),lookbehind:!0,greedy:!0,inside:T},D.languages.insertBefore("markup","cdata",I)}}),Object.defineProperty(D.languages.markup.tag,"addAttribute",{value:function(p,b){D.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(`(^|["'\\s])(?:`+p+`)\\s*=\\s*(?:"[^"]*"|'[^']*'|[^\\s'">=]+(?=[\\s>]))`,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[b,"language-"+b],inside:D.languages[b]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),D.languages.html=D.languages.markup,D.languages.mathml=D.languages.markup,D.languages.svg=D.languages.markup,D.languages.xml=D.languages.extend("markup",{}),D.languages.ssml=D.languages.xml,D.languages.atom=D.languages.xml,D.languages.rss=D.languages.xml;(function(p){var b=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;p.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp(`@[\\w-](?:[^;{\\s"']|\\s+(?!\\s)|`+b.source+")*?(?:;|(?=\\s*\\{))"),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+b.source+`|(?:[^\\\\\r
14
14
  ()"']|\\\\[^])*)\\)`,"i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+b.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+b.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:b,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},p.languages.css.atrule.inside.rest=p.languages.css;var x=p.languages.markup;x&&(x.tag.addInlined("style","css"),x.tag.addAttribute("style","css"))})(D);D.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};D.languages.javascript=D.languages.extend("clike",{"class-name":[D.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp("(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])"),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),D.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,D.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(`((?:^|[^$\\w\\xA0-\\uFFFF."'\\])\\s]|\\b(?:return|yield))\\s*)/(?:(?:\\[(?:[^\\]\\\\\r
15
15
  ]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\r
16
16
  ])+/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\r