!function(Wt,Lt){"object"==typeof exports&&typeof module<"u"?module.exports=Lt():"function"==typeof define&&define.amd?define(Lt):(Wt=typeof globalThis<"u"?globalThis:Wt||self).Chart=Lt()}(this,function(){"use strict";const Wt=typeof window>"u"?function(i){return i()}:window.requestAnimationFrame;function Lt(i,t,e){const s=e||(a=>Array.prototype.slice.call(a));let n=!1,o=[];return function(...a){o=s(a),n||(n=!0,Wt.call(window,()=>{n=!1,i.apply(t,o)}))}}function us(i,t){let e;return function(...s){return t?(clearTimeout(e),e=setTimeout(i,t,s)):i.apply(this,s),t}}const Se=i=>"start"===i?"left":"end"===i?"right":"center",G=(i,t,e)=>"start"===i?t:"end"===i?e:(t+e)/2,fs=(i,t,e,s)=>i===(s?"left":"right")?e:"center"===i?(t+e)/2:t;var ut=new class{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(i,t,e,s){const n=t.listeners[s],o=t.duration;n.forEach(a=>a({chart:i,initial:t.initial,numSteps:o,currentStep:Math.min(e-t.start,o)}))}_refresh(){this._request||(this._running=!0,this._request=Wt.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(i=Date.now()){let t=0;this._charts.forEach((e,s)=>{if(!e.running||!e.items.length)return;const n=e.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>e.duration&&(e.duration=o._total),o.tick(i),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,e,i,"progress")),n.length||(e.running=!1,this._notify(s,e,i,"complete"),e.initial=!1),t+=n.length}),this._lastDate=i,0===t&&(this._running=!1)}_getAnims(i){const t=this._charts;let e=t.get(i);return e||(e={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},t.set(i,e)),e}listen(i,t,e){this._getAnims(i).listeners[t].push(e)}add(i,t){t&&t.length&&this._getAnims(i).items.push(...t)}has(i){return this._getAnims(i).items.length>0}start(i){const t=this._charts.get(i);t&&(t.running=!0,t.start=Date.now(),t.duration=t.items.reduce((e,s)=>Math.max(e,s._duration),0),this._refresh())}running(i){if(!this._running)return!1;const t=this._charts.get(i);return!!(t&&t.running&&t.items.length)}stop(i){const t=this._charts.get(i);if(!t||!t.items.length)return;const e=t.items;let s=e.length-1;for(;s>=0;--s)e[s].cancel();t.items=[],this._notify(i,t,Date.now(),"complete")}remove(i){return this._charts.delete(i)}};const at={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},hi="0123456789ABCDEF",Bo=i=>hi[15&i],Vo=i=>hi[(240&i)>>4]+hi[15&i],Pe=i=>(240&i)>>4==(15&i);function Qt(i){return i+.5|0}const De=(i,t,e)=>Math.max(Math.min(i,e),t);function te(i){return De(Qt(2.55*i),0,255)}function ee(i){return De(Qt(255*i),0,255)}function ci(i){return De(Qt(i/2.55)/100,0,1)}function gs(i){return De(Qt(100*i),0,100)}const No=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/,Ho=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function ps(i,t,e){const s=t*Math.min(e,1-e),n=(o,a=(o+i/30)%12)=>e-s*Math.max(Math.min(a-3,9-a,1),-1);return[n(0),n(8),n(4)]}function jo(i,t,e){const s=(n,o=(n+i/60)%6)=>e-e*t*Math.max(Math.min(o,4-o,1),0);return[s(5),s(3),s(1)]}function $o(i,t,e){const s=ps(i,1,.5);let n;for(t+e>1&&(n=1/(t+e),t*=n,e*=n),n=0;n<3;n++)s[n]*=1-t-e,s[n]+=t;return s}function di(i){const t=i.r/255,e=i.g/255,s=i.b/255,n=Math.max(t,e,s),o=Math.min(t,e,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=n===t?(e-s)/h+(e=3&&(t={r:i[0],g:i[1],b:i[2],a:255},i.length>3&&(t.a=ee(i[3]))):(t=_s(i,{r:0,g:0,b:0,a:1})).a=ee(t.a),t}function Xo(i){return"r"===i.charAt(0)?function(t){const e=No.exec(t);let s,n,o,a=255;if(e){if(e[7]!==s){const r=+e[7];a=255&(e[8]?te(r):255*r)}return s=+e[1],n=+e[3],o=+e[5],s=255&(e[2]?te(s):s),n=255&(e[4]?te(n):n),o=255&(e[6]?te(o):o),{r:s,g:n,b:o,a}}}(i):function Yo(i){const t=Ho.exec(i);let e,s=255;if(!t)return;t[5]!==e&&(s=t[6]?te(+t[5]):ee(+t[5]));const n=ms(+t[2]),o=+t[3]/100,a=+t[4]/100;return e="hwb"===t[1]?ui($o,n,o,a):"hsv"===t[1]?(r=n,l=o,h=a,ui(jo,r,l,h)):fi(n,o,a),{r:e[0],g:e[1],b:e[2],a:s};var r,l,h}(i)}class Ae{constructor(t){if(t instanceof Ae)return t;const e=typeof t;let s;var n,o,a;"object"===e?s=ys(t):"string"===e&&(a=(n=t).length,"#"===n[0]&&(4===a||5===a?o={r:255&17*at[n[1]],g:255&17*at[n[2]],b:255&17*at[n[3]],a:5===a?17*at[n[4]]:255}:7!==a&&9!==a||(o={r:at[n[1]]<<4|at[n[2]],g:at[n[3]]<<4|at[n[4]],b:at[n[5]]<<4|at[n[6]],a:9===a?at[n[7]]<<4|at[n[8]]:255})),s=o||function Uo(i){Ce||(Ce=function(){const e={},s=Object.keys(bs),n=Object.keys(xs);let o,a,r,l,h;for(o=0;o>16&255,r>>8&255,255&r]}return e}(),Ce.transparent=[0,0,0,0]);const t=Ce[i.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:4===t.length?t[3]:255}}(t)||Xo(t)),this._rgb=s,this._valid=!!s}get valid(){return this._valid}get rgb(){var t=_s(this._rgb);return t&&(t.a=ci(t.a)),t}set rgb(t){this._rgb=ys(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${ci(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):this._rgb;var t}hexString(){return this._valid?function Wo(i){var e,t=Pe((e=i).r)&&Pe(e.g)&&Pe(e.b)&&Pe(e.a)?Bo:Vo;return i&&"#"+t(i.r)+t(i.g)+t(i.b)+(i.a<255?t(i.a):"")}(this._rgb):this._rgb}hslString(){return this._valid?function(t){if(!t)return;const e=di(t),s=e[0],n=gs(e[1]),o=gs(e[2]);return t.a<255?`hsla(${s}, ${n}%, ${o}%, ${ci(t.a)})`:`hsl(${s}, ${n}%, ${o}%)`}(this._rgb):this._rgb}mix(t,e){const s=this;if(t){const n=s.rgb,o=t.rgb;let a;const r=e===a?.5:e,l=2*r-1,h=n.a-o.a,c=((l*h==-1?l:(l+h)/(1+l*h))+1)/2;a=1-c,n.r=255&c*n.r+a*o.r+.5,n.g=255&c*n.g+a*o.g+.5,n.b=255&c*n.b+a*o.b+.5,n.a=r*n.a+(1-r)*o.a,s.rgb=n}return s}clone(){return new Ae(this.rgb)}alpha(t){return this._rgb.a=ee(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=Qt(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Oe(this._rgb,2,t),this}darken(t){return Oe(this._rgb,2,-t),this}saturate(t){return Oe(this._rgb,1,t),this}desaturate(t){return Oe(this._rgb,1,-t),this}rotate(t){return e=this._rgb,s=t,(n=di(e))[0]=ms(n[0]+s),n=fi(n),e.r=n[0],e.g=n[1],e.b=n[2],this;var e,s,n}}function vs(i){return new Ae(i)}const ws=i=>i instanceof CanvasGradient||i instanceof CanvasPattern;function gi(i){return ws(i)?i:vs(i)}function Te(i){return ws(i)?i:vs(i).saturate(.5).darken(.1).hexString()}function ft(){}const Ms=function(){let i=0;return function(){return i++}}();function I(i){return null==i}function B(i){if(Array.isArray&&Array.isArray(i))return!0;const t=Object.prototype.toString.call(i);return"[object"===t.substr(0,7)&&"Array]"===t.substr(-6)}function R(i){return null!==i&&"[object Object]"===Object.prototype.toString.call(i)}const $=i=>("number"==typeof i||i instanceof Number)&&isFinite(+i);function it(i,t){return $(i)?i:t}function L(i,t){return void 0===i?t:i}const ks=(i,t)=>"string"==typeof i&&i.endsWith("%")?parseFloat(i)/100:i/t,pi=(i,t)=>"string"==typeof i&&i.endsWith("%")?parseFloat(i)/100*t:+i;function V(i,t,e){if(i&&"function"==typeof i.call)return i.apply(e,t)}function z(i,t,e,s){let n,o,a;if(B(i))if(o=i.length,s)for(n=o-1;n>=0;n--)t.call(e,i[n],n);else for(n=0;ne;)i=i[t.substr(e,s-e)],e=s+1,s=Cs(t,e);return i}function Le(i){return i.charAt(0).toUpperCase()+i.slice(1)}const st=i=>void 0!==i,bt=i=>"function"==typeof i,mi=(i,t)=>{if(i.size!==t.size)return!1;for(const e of i)if(!t.has(e))return!1;return!0};function Os(i){return"mouseup"===i.type||"click"===i.type||"contextmenu"===i.type}const Rt=Object.create(null),xi=Object.create(null);function ne(i,t){if(!t)return i;const e=t.split(".");for(let s=0,n=e.length;st.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>Te(e.backgroundColor),this.hoverBorderColor=(t,e)=>Te(e.borderColor),this.hoverColor=(t,e)=>Te(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(i)}set(i,t){return bi(this,i,t)}get(i){return ne(this,i)}describe(i,t){return bi(xi,i,t)}override(i,t){return bi(Rt,i,t)}route(i,t,e,s){const n=ne(this,i),o=ne(this,e),a="_"+t;Object.defineProperties(n,{[a]:{value:n[t],writable:!0},[t]:{enumerable:!0,get(){const r=this[a],l=o[s];return R(r)?Object.assign({},l,r):L(r,l)},set(r){this[a]=r}}})}}({_scriptable:i=>!i.startsWith("on"),_indexable:i=>"events"!==i,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}});const N=Math.PI,F=2*N,As=F+N,oe=Number.POSITIVE_INFINITY,Ts=N/180,H=N/2,jt=N/4,_i=2*N/3,nt=Math.log10,ht=Math.sign;function yi(i){const t=Math.round(i);i=Yt(i,t,i/1e3)?t:i;const e=Math.pow(10,Math.floor(nt(i))),s=i/e;return(s<=1?1:s<=2?2:s<=5?5:10)*e}function Ls(i){const t=[],e=Math.sqrt(i);let s;for(s=1;sn-o).pop(),t}function $t(i){return!isNaN(parseFloat(i))&&isFinite(i)}function Yt(i,t,e){return Math.abs(i-t)=i}function vi(i,t,e){let s,n,o;for(s=0,n=i.length;sl&&h=Math.min(t,e)-s&&i<=Math.max(t,e)+s}function zs(i){return!i||I(i.size)||I(i.family)?null:(i.style?i.style+" ":"")+(i.weight?i.weight+" ":"")+i.size+"px "+i.family}function ae(i,t,e,s,n){let o=t[n];return o||(o=t[n]=i.measureText(n).width,e.push(n)),o>s&&(s=o),s}function Fs(i,t,e,s){let n=(s=s||{}).data=s.data||{},o=s.garbageCollect=s.garbageCollect||[];s.font!==t&&(n=s.data={},o=s.garbageCollect=[],s.font=t),i.save(),i.font=t;let a=0;const r=e.length;let l,h,c,d,u;for(l=0;le.length){for(l=0;l0&&i.stroke()}}function St(i,t,e){return e=e||.5,!t||i&&i.x>t.left-e&&i.xt.top-e&&i.y0&&""!==o.strokeColor;let l,h;for(i.save(),i.font=n.string,c=i,(d=o).translation&&c.translate(d.translation[0],d.translation[1]),I(d.rotation)||c.rotate(d.rotation),d.color&&(c.fillStyle=d.color),d.textAlign&&(c.textAlign=d.textAlign),d.textBaseline&&(c.textBaseline=d.textBaseline),l=0;li[a]1;)s=o+n>>1,e(s)?o=s:n=s;return{lo:o,hi:n}}const pt=(i,t,e)=>Ie(i,e,s=>i[s][t]Ie(i,e,s=>i[s][t]>=e);function Ns(i,t,e){let s=0,n=i.length;for(;ss&&i[n-1]>e;)n--;return s>0||n{const s="_onData"+Le(e),n=i[e];Object.defineProperty(i,e,{configurable:!0,enumerable:!1,value(...o){const a=n.apply(this,o);return i._chartjs.listeners.forEach(r=>{"function"==typeof r[s]&&r[s](...o)}),a}})}))}function Si(i,t){const e=i._chartjs;if(!e)return;const s=e.listeners,n=s.indexOf(t);-1!==n&&s.splice(n,1),s.length>0||(Hs.forEach(o=>{delete i[o]}),delete i._chartjs)}function Pi(i){const t=new Set;let e,s;for(e=0,s=i.length;ewindow.getComputedStyle(i,null);function $s(i,t){return Be(i).getPropertyValue(t)}const Ko=["top","right","bottom","left"];function Et(i,t,e){const s={};e=e?"-"+e:"";for(let n=0;n<4;n++){const o=Ko[n];s[o]=parseFloat(i[t+"-"+o+e])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}function Ci(i,t){const{canvas:e,currentDevicePixelRatio:s}=t,n=Be(e),o="border-box"===n.boxSizing,a=Et(n,"padding"),r=Et(n,"border","width"),{x:l,y:h,box:c}=function(p,m){const x=p.native||p,b=x.touches,_=b&&b.length?b[0]:x,{offsetX:y,offsetY:v}=_;let w,M,D=!1;if(C=y,k=v,O=x.target,!(C>0||k>0)||O&&O.shadowRoot){const C=m.getBoundingClientRect();w=_.clientX-C.left,M=_.clientY-C.top,D=!0}else w=y,M=v;var C,k,O;return{x:w,y:M,box:D}}(i,e),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=t;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*e.width/s),y:Math.round((h-u)/g*e.height/s)}}const Oi=i=>Math.round(10*i)/10;function Ys(i,t,e,s){const n=Be(i),o=Et(n,"margin"),a=Fe(n.maxWidth,i,"clientWidth")||oe,r=Fe(n.maxHeight,i,"clientHeight")||oe,l=function(d,u,f){let g,p;if(void 0===u||void 0===f){const m=ze(d);if(m){const x=m.getBoundingClientRect(),b=Be(m),_=Et(b,"border","width"),y=Et(b,"padding");u=x.width-y.width-_.width,f=x.height-y.height-_.height,g=Fe(b.maxWidth,m,"clientWidth"),p=Fe(b.maxHeight,m,"clientHeight")}else u=d.clientWidth,f=d.clientHeight}return{width:u,height:f,maxWidth:g||oe,maxHeight:p||oe}}(i,t,e);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const d=Et(n,"border","width"),u=Et(n,"padding");h-=u.width+d.width,c-=u.height+d.height}return h=Math.max(0,h-o.width),c=Math.max(0,s?Math.floor(h/s):c-o.height),h=Oi(Math.min(h,a,l.maxWidth)),c=Oi(Math.min(c,r,l.maxHeight)),h&&!c&&(c=Oi(h/2)),{width:h,height:c}}function Ai(i,t,e){const s=t||1,n=Math.floor(i.height*s),o=Math.floor(i.width*s);i.height=n/s,i.width=o/s;const a=i.canvas;return a.style&&(e||!a.style.height&&!a.style.width)&&(a.style.height=`${i.height}px`,a.style.width=`${i.width}px`),(i.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(i.currentDevicePixelRatio=s,a.height=n,a.width=o,i.ctx.setTransform(s,0,0,s,0,0),!0)}const Us=function(){let i=!1;try{const t={get passive(){return i=!0,!1}};window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch{}return i}();function Ti(i,t){const e=$s(i,t),s=e&&e.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function de(i,t){return"native"in i?{x:i.x,y:i.y}:Ci(i,t)}function Go(i,t,e,s){const{controller:n,data:o,_sorted:a}=i,r=n._cachedMeta.iScale;if(r&&t===r.axis&&"r"!==t&&a&&o.length){const l=r._reversePixels?Ws:pt;if(!s)return l(o,t,e);if(n._sharedOptions){const h=o[0],c="function"==typeof h.getRange&&h.getRange(t);if(c){const d=l(o,t,e-c),u=l(o,t,e+c);return{lo:d.lo,hi:u.hi}}}}return{lo:0,hi:o.length-1}}function Li(i,t,e,s,n){const o=i.getSortedVisibleDatasetMetas(),a=e[t];for(let r=0,l=o.length;r{h[r](n[a],s)&&o.push({element:h,datasetIndex:c,index:d}),h.inRange(n.x,n.y,s)&&(l=!0)}),e.intersect&&!l?[]:o}var qs={modes:{index(i,t,e,s){const n=de(t,i),o=e.axis||"x",a=e.intersect?Ri(i,n,o,s):Ei(i,n,o,!1,s),r=[];return a.length?(i.getSortedVisibleDatasetMetas().forEach(l=>{const h=a[0].index,c=l.data[h];c&&!c.skip&&r.push({element:c,datasetIndex:l.index,index:h})}),r):[]},dataset(i,t,e,s){const n=de(t,i),o=e.axis||"xy";let a=e.intersect?Ri(i,n,o,s):Ei(i,n,o,!1,s);if(a.length>0){const r=a[0].datasetIndex,l=i.getDatasetMeta(r).data;a=[];for(let h=0;hRi(i,de(t,i),e.axis||"xy",s),nearest:(i,t,e,s)=>Ei(i,de(t,i),e.axis||"xy",e.intersect,s),x:(i,t,e,s)=>Xs(i,t,{axis:"x",intersect:e.intersect},s),y:(i,t,e,s)=>Xs(i,t,{axis:"y",intersect:e.intersect},s)}};const Jo=new RegExp(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/),Qo=new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);function Ks(i,t){const e=(""+i).match(Jo);if(!e||"normal"===e[1])return 1.2*t;switch(i=+e[2],e[3]){case"px":return i;case"%":i/=100}return t*i}function Ve(i,t){const e={},s=R(t),n=s?Object.keys(t):t,o=R(i)?s?a=>L(i[a],i[t[a]]):a=>i[a]:()=>i;for(const a of n)e[a]=+o(a)||0;return e}function Ii(i){return Ve(i,{top:"y",right:"x",bottom:"y",left:"x"})}function It(i){return Ve(i,["topLeft","topRight","bottomLeft","bottomRight"])}function Z(i){const t=Ii(i);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function X(i,t){i=i||{},t=t||E.font;let e=L(i.size,t.size);"string"==typeof e&&(e=parseInt(e,10));let s=L(i.style,t.style);s&&!(""+s).match(Qo)&&(console.warn('Invalid font style specified: "'+s+'"'),s="");const n={family:L(i.family,t.family),lineHeight:Ks(L(i.lineHeight,t.lineHeight),e),size:e,style:s,weight:L(i.weight,t.weight),string:""};return n.string=zs(n),n}function Xt(i,t,e,s){let n,o,a,r=!0;for(n=0,o=i.length;ne&&0===r?0:r+l;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function _t(i,t){return Object.assign(Object.create(i),t)}const Zs=["left","top","right","bottom"];function ue(i,t){return i.filter(e=>e.pos===t)}function Js(i,t){return i.filter(e=>-1===Zs.indexOf(e.pos)&&e.box.axis===t)}function fe(i,t){return i.sort((e,s)=>{const n=t?s:e,o=t?e:s;return n.weight===o.weight?n.index-o.index:n.weight-o.weight})}function Qs(i,t,e,s){return Math.max(i[e],t[e])+Math.max(i[s],t[s])}function tn(i,t){i.top=Math.max(i.top,t.top),i.left=Math.max(i.left,t.left),i.bottom=Math.max(i.bottom,t.bottom),i.right=Math.max(i.right,t.right)}function ea(i,t,e,s){const{pos:n,box:o}=e,a=i.maxPadding;if(!R(n)){e.size&&(i[n]-=e.size);const d=s[e.stack]||{size:0,count:1};d.size=Math.max(d.size,e.horizontal?o.height:o.width),e.size=d.size/d.count,i[n]+=e.size}o.getPadding&&tn(a,o.getPadding());const r=Math.max(0,t.outerWidth-Qs(a,i,"left","right")),l=Math.max(0,t.outerHeight-Qs(a,i,"top","bottom")),h=r!==i.w,c=l!==i.h;return i.w=r,i.h=l,e.horizontal?{same:h,other:c}:{same:c,other:h}}function ia(i,t){const e=t.maxPadding;return function s(n){const o={left:0,top:0,right:0,bottom:0};return n.forEach(a=>{o[a]=Math.max(t[a],e[a])}),o}(i?["left","right"]:["top","bottom"])}function ge(i,t,e,s){const n=[];let o,a,r,l,h,c;for(o=0,a=i.length,h=0;oD.box.fullSize),!0),b=fe(ue(m,"left"),!0),_=fe(ue(m,"right")),y=fe(ue(m,"top"),!0),v=fe(ue(m,"bottom")),w=Js(m,"x"),M=Js(m,"y");return{fullSize:x,leftAndTop:b.concat(y),rightAndBottom:_.concat(M).concat(v).concat(w),chartArea:ue(m,"chartArea"),vertical:b.concat(_).concat(M),horizontal:y.concat(v).concat(w)}}(i.boxes),l=r.vertical,h=r.horizontal;z(i.boxes,p=>{"function"==typeof p.beforeLayout&&p.beforeLayout()});const c=l.reduce((p,m)=>m.box.options&&!1===m.box.options.display?p:p+1,0)||1,d=Object.freeze({outerWidth:t,outerHeight:e,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),u=Object.assign({},n);tn(u,Z(s));const f=Object.assign({maxPadding:u,w:o,h:a,x:n.left,y:n.top},n),g=function ta(i,t){const e=function(l){const h={};for(const c of l){const{stack:d,pos:u,stackWeight:f}=c;if(!d||!Zs.includes(u))continue;const g=h[d]||(h[d]={count:0,placed:0,weight:0,size:0});g.count++,g.weight+=f}return h}(i),{vBoxMaxWidth:s,hBoxMaxHeight:n}=t;let o,a,r;for(o=0,a=i.length;o{const m=p.box;Object.assign(m,i.chartArea),m.update(f.w,f.h,{left:0,top:0,right:0,bottom:0})})}};function Ne(i,t=[""],e=i,s,n=(()=>i[0])){st(s)||(s=an("_fallback",i));const o={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:i,_rootScopes:e,_fallback:s,_getTarget:n,override:a=>Ne([a,...i],t,e,s)};return new Proxy(o,{deleteProperty:(a,r)=>(delete a[r],delete a._keys,delete i[0][r],!0),get:(a,r)=>sn(a,r,()=>function(l,h,c,d){let u;for(const f of h)if(u=an(sa(f,l),c),st(u))return Fi(l,u)?Bi(c,d,l,u):u}(r,t,i,a)),getOwnPropertyDescriptor:(a,r)=>Reflect.getOwnPropertyDescriptor(a._scopes[0],r),getPrototypeOf:()=>Reflect.getPrototypeOf(i[0]),has:(a,r)=>rn(a).includes(r),ownKeys:a=>rn(a),set(a,r,l){const h=a._storage||(a._storage=n());return a[r]=h[r]=l,delete a._keys,!0}})}function zt(i,t,e,s){const n={_cacheable:!1,_proxy:i,_context:t,_subProxy:e,_stack:new Set,_descriptors:zi(i,s),setContext:o=>zt(i,o,e,s),override:o=>zt(i.override(o),t,e,s)};return new Proxy(n,{deleteProperty:(o,a)=>(delete o[a],delete i[a],!0),get:(o,a,r)=>sn(o,a,()=>function(l,h,c){const{_proxy:d,_context:u,_subProxy:f,_descriptors:g}=l;let p=d[h];return bt(p)&&g.isScriptable(h)&&(p=function(m,x,b,_){const{_proxy:y,_context:v,_subProxy:w,_stack:M}=b;if(M.has(m))throw new Error("Recursion detected: "+Array.from(M).join("->")+"->"+m);return M.add(m),x=x(v,w||_),M.delete(m),Fi(m,x)&&(x=Bi(y._scopes,y,m,x)),x}(h,p,l,c)),B(p)&&p.length&&(p=function(m,x,b,_){const{_proxy:y,_context:v,_subProxy:w,_descriptors:M}=b;if(st(v.index)&&_(m))x=x[v.index%x.length];else if(R(x[0])){const D=x,C=y._scopes.filter(k=>k!==D);x=[];for(const k of D){const O=Bi(C,y,m,k);x.push(zt(O,v,w&&w[m],M))}}return x}(h,p,l,g.isIndexable)),Fi(h,p)&&(p=zt(p,u,f&&f[h],g)),p}(o,a,r)),getOwnPropertyDescriptor:(o,a)=>o._descriptors.allKeys?Reflect.has(i,a)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(i,a),getPrototypeOf:()=>Reflect.getPrototypeOf(i),has:(o,a)=>Reflect.has(i,a),ownKeys:()=>Reflect.ownKeys(i),set:(o,a,r)=>(i[a]=r,delete o[a],!0)})}function zi(i,t={scriptable:!0,indexable:!0}){const{_scriptable:e=t.scriptable,_indexable:s=t.indexable,_allKeys:n=t.allKeys}=i;return{allKeys:n,scriptable:e,indexable:s,isScriptable:bt(e)?e:()=>e,isIndexable:bt(s)?s:()=>s}}const sa=(i,t)=>i?i+Le(t):t,Fi=(i,t)=>R(t)&&"adapters"!==i&&(null===Object.getPrototypeOf(t)||t.constructor===Object);function sn(i,t,e){if(Object.prototype.hasOwnProperty.call(i,t))return i[t];const s=e();return i[t]=s,s}function nn(i,t,e){return bt(i)?i(t,e):i}const na=(i,t)=>!0===i?t:"string"==typeof i?Mt(t,i):void 0;function oa(i,t,e,s,n){for(const o of t){const a=na(e,o);if(a){i.add(a);const r=nn(a._fallback,e,n);if(st(r)&&r!==e&&r!==s)return r}else if(!1===a&&st(s)&&e!==s)return null}return!1}function Bi(i,t,e,s){const n=t._rootScopes,o=nn(t._fallback,e,s),a=[...i,...n],r=new Set;r.add(s);let l=on(r,a,e,o||e,s);return null!==l&&(!st(o)||o===e||(l=on(r,a,o,l,s),null!==l))&&Ne(Array.from(r),[""],n,o,()=>function(h,c,d){const u=h._getTarget();c in u||(u[c]={});const f=u[c];return B(f)&&R(d)?d:f}(t,e,s))}function on(i,t,e,s,n){for(;e;)e=oa(i,t,e,s,n);return e}function an(i,t){for(const e of t){if(!e)continue;const s=e[i];if(st(s))return s}}function rn(i){let t=i._keys;return t||(t=i._keys=function(e){const s=new Set;for(const n of e)for(const o of Object.keys(n).filter(a=>!a.startsWith("_")))s.add(o);return Array.from(s)}(i._scopes)),t}const aa=Number.EPSILON||1e-14,qt=(i,t)=>t"x"===i?"y":"x";function hn(i,t,e,s){const n=i.skip?t:i,o=t,a=e.skip?t:e,r=Ee(o,n),l=Ee(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function cn(i,t="x"){const e=ln(t),s=i.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=qt(i,0);for(a=0;a!h.skip)),"monotone"===t.cubicInterpolationMode)cn(i,n);else{let h=s?i[i.length-1]:i[0];for(o=0,a=i.length;o0===i||1===i,un=(i,t,e)=>-Math.pow(2,10*(i-=1))*Math.sin((i-t)*F/e),fn=(i,t,e)=>Math.pow(2,-10*i)*Math.sin((i-t)*F/e)+1,Kt={linear:i=>i,easeInQuad:i=>i*i,easeOutQuad:i=>-i*(i-2),easeInOutQuad:i=>(i/=.5)<1?.5*i*i:-.5*(--i*(i-2)-1),easeInCubic:i=>i*i*i,easeOutCubic:i=>(i-=1)*i*i+1,easeInOutCubic:i=>(i/=.5)<1?.5*i*i*i:.5*((i-=2)*i*i+2),easeInQuart:i=>i*i*i*i,easeOutQuart:i=>-((i-=1)*i*i*i-1),easeInOutQuart:i=>(i/=.5)<1?.5*i*i*i*i:-.5*((i-=2)*i*i*i-2),easeInQuint:i=>i*i*i*i*i,easeOutQuint:i=>(i-=1)*i*i*i*i+1,easeInOutQuint:i=>(i/=.5)<1?.5*i*i*i*i*i:.5*((i-=2)*i*i*i*i+2),easeInSine:i=>1-Math.cos(i*H),easeOutSine:i=>Math.sin(i*H),easeInOutSine:i=>-.5*(Math.cos(N*i)-1),easeInExpo:i=>0===i?0:Math.pow(2,10*(i-1)),easeOutExpo:i=>1===i?1:1-Math.pow(2,-10*i),easeInOutExpo:i=>je(i)?i:i<.5?.5*Math.pow(2,10*(2*i-1)):.5*(2-Math.pow(2,-10*(2*i-1))),easeInCirc:i=>i>=1?i:-(Math.sqrt(1-i*i)-1),easeOutCirc:i=>Math.sqrt(1-(i-=1)*i),easeInOutCirc:i=>(i/=.5)<1?-.5*(Math.sqrt(1-i*i)-1):.5*(Math.sqrt(1-(i-=2)*i)+1),easeInElastic:i=>je(i)?i:un(i,.075,.3),easeOutElastic:i=>je(i)?i:fn(i,.075,.3),easeInOutElastic:i=>je(i)?i:i<.5?.5*un(2*i,.1125,.45):.5+.5*fn(2*i-1,.1125,.45),easeInBack:i=>i*i*(2.70158*i-1.70158),easeOutBack:i=>(i-=1)*i*(2.70158*i+1.70158)+1,easeInOutBack(i){let t=1.70158;return(i/=.5)<1?i*i*((1+(t*=1.525))*i-t)*.5:.5*((i-=2)*i*((1+(t*=1.525))*i+t)+2)},easeInBounce:i=>1-Kt.easeOutBounce(1-i),easeOutBounce:i=>i<1/2.75?7.5625*i*i:i<2/2.75?7.5625*(i-=1.5/2.75)*i+.75:i<2.5/2.75?7.5625*(i-=2.25/2.75)*i+.9375:7.5625*(i-=2.625/2.75)*i+.984375,easeInOutBounce:i=>i<.5?.5*Kt.easeInBounce(2*i):.5*Kt.easeOutBounce(2*i-1)+.5};function Dt(i,t,e,s){return{x:i.x+e*(t.x-i.x),y:i.y+e*(t.y-i.y)}}function gn(i,t,e,s){return{x:i.x+e*(t.x-i.x),y:"middle"===s?e<.5?i.y:t.y:"after"===s?e<1?i.y:t.y:e>0?t.y:i.y}}function pn(i,t,e,s){const n={x:i.cp2x,y:i.cp2y},o={x:t.cp1x,y:t.cp1y},a=Dt(i,n,e),r=Dt(n,o,e),l=Dt(o,t,e),h=Dt(a,r,e),c=Dt(r,l,e);return Dt(h,c,e)}const mn=new Map;function Gt(i,t,e){return function(s,n){n=n||{};const o=s+JSON.stringify(n);let a=mn.get(o);return a||(a=new Intl.NumberFormat(s,n),mn.set(o,a)),a}(t,e).format(i)}function Ft(i,t,e){return i?(s=t,n=e,{x:o=>s+s+n-o,setWidth(o){n=o},textAlign:o=>"center"===o?o:"right"===o?"left":"right",xPlus:(o,a)=>o-a,leftForLtr:(o,a)=>o-a}):{x:s=>s,setWidth(s){},textAlign:s=>s,xPlus:(s,n)=>s+n,leftForLtr:(s,n)=>s};var s,n}function Vi(i,t){let e,s;"ltr"!==t&&"rtl"!==t||(e=i.canvas.style,s=[e.getPropertyValue("direction"),e.getPropertyPriority("direction")],e.setProperty("direction",t,"important"),i.prevTextDirection=s)}function Wi(i,t){void 0!==t&&(delete i.prevTextDirection,i.canvas.style.setProperty("direction",t[0],t[1]))}function xn(i){return"angle"===i?{between:Ut,compare:Es,normalize:tt}:{between:gt,compare:(t,e)=>t-e,normalize:t=>t}}function bn({start:i,end:t,count:e,loop:s,style:n}){return{start:i%e,end:t%e,loop:s&&(t-i+1)%e==0,style:n}}function Ni(i,t,e){if(!e)return[i];const{property:s,start:n,end:o}=e,a=t.length,{compare:r,between:l,normalize:h}=xn(s),{start:c,end:d,loop:u,style:f}=function(w,M,D){const{property:C,start:k,end:O}=D,{between:A,normalize:T}=xn(C),S=M.length;let P,W,{start:j,end:U,loop:K}=w;if(K){for(j+=S,U+=S,P=0,W=S;Pu&&l[f%h].skip;)f--;return f%=h,{start:u,end:f}}(e,n,o,s);return yn(i,!0===s?[{start:a,end:r,loop:o}]:function(l,h,c,d){const u=l.length,f=[];let g,p=h,m=l[h];for(g=h+1;g<=c;++g){const x=l[g%u];x.skip||x.stop?m.skip||(d=!1,f.push({start:h%u,end:(g-1)%u,loop:d}),h=p=x.stop?g:null):(p=g,m.skip&&(h=g)),m=x}return null!==p&&f.push({start:h%u,end:p%u,loop:d}),f}(e,a,rnull===i||""===i,kn=!!Us&&{passive:!0};function ca(i,t,e){i.canvas.removeEventListener(t,e,kn)}function $e(i,t){for(const e of i)if(e===t||e.contains(t))return!0}function da(i,t,e){const s=i.canvas,n=new MutationObserver(o=>{let a=!1;for(const r of o)a=a||$e(r.addedNodes,s),a=a&&!$e(r.removedNodes,s);a&&e()});return n.observe(document,{childList:!0,subtree:!0}),n}function ua(i,t,e){const s=i.canvas,n=new MutationObserver(o=>{let a=!1;for(const r of o)a=a||$e(r.removedNodes,s),a=a&&!$e(r.addedNodes,s);a&&e()});return n.observe(document,{childList:!0,subtree:!0}),n}const pe=new Map;let Sn=0;function Pn(){const i=window.devicePixelRatio;i!==Sn&&(Sn=i,pe.forEach((t,e)=>{e.currentDevicePixelRatio!==i&&t()}))}function fa(i,t,e){const s=i.canvas,n=s&&ze(s);if(!n)return;const o=Lt((r,l)=>{const h=n.clientWidth;e(r,l),h{const l=r[0],h=l.contentRect.width,c=l.contentRect.height;0===h&&0===c||o(h,c)});return a.observe(n),r=i,l=o,pe.size||window.addEventListener("resize",Pn),pe.set(r,l),a;var r,l}function $i(i,t,e){var s;e&&e.disconnect(),"resize"===t&&(s=i,pe.delete(s),pe.size||window.removeEventListener("resize",Pn))}function ga(i,t,e){const s=i.canvas,n=Lt(o=>{null!==i.ctx&&e(function(a,r){const l=ha[a.type]||a.type,{x:h,y:c}=Ci(a,r);return{type:l,chart:r,native:a,x:void 0!==h?h:null,y:void 0!==c?c:null}}(o,i))},i,o=>{const a=o[0];return[a,a.offsetX,a.offsetY]});return a=t,r=n,s.addEventListener(a,r,kn),n;var a,r}class Dn extends ji{acquireContext(t,e){const s=t&&t.getContext&&t.getContext("2d");return s&&s.canvas===t?(function(n,o){const a=n.style,r=n.getAttribute("height"),l=n.getAttribute("width");if(n.$chartjs={initial:{height:r,width:l,style:{display:a.display,height:a.height,width:a.width}}},a.display=a.display||"block",a.boxSizing=a.boxSizing||"border-box",Mn(l)){const h=Ti(n,"width");void 0!==h&&(n.width=h)}if(Mn(r))if(""===n.style.height)n.height=n.width/(o||2);else{const h=Ti(n,"height");void 0!==h&&(n.height=h)}}(t,e),s):null}releaseContext(t){const e=t.canvas;if(!e.$chartjs)return!1;const s=e.$chartjs.initial;["height","width"].forEach(o=>{const a=s[o];I(a)?e.removeAttribute(o):e.setAttribute(o,a)});const n=s.style||{};return Object.keys(n).forEach(o=>{e.style[o]=n[o]}),e.width=e.width,delete e.$chartjs,!0}addEventListener(t,e,s){this.removeEventListener(t,e);const n=t.$proxies||(t.$proxies={}),o={attach:da,detach:ua,resize:fa}[e]||ga;n[e]=o(t,e,s)}removeEventListener(t,e){const s=t.$proxies||(t.$proxies={}),n=s[e];!n||(({attach:$i,detach:$i,resize:$i}[e]||ca)(t,e,n),s[e]=void 0)}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,s,n){return Ys(t,e,s,n)}isAttached(t){const e=ze(t);return!(!e||!e.isConnected)}}function Cn(i){return!Di()||typeof OffscreenCanvas<"u"&&i instanceof OffscreenCanvas?wn:Dn}var On=Object.freeze({__proto__:null,_detectPlatform:Cn,BasePlatform:ji,BasicPlatform:wn,DomPlatform:Dn});const An="transparent",pa={boolean:(i,t,e)=>e>.5?t:i,color(i,t,e){const s=gi(i||An),n=s.valid&&gi(t||An);return n&&n.valid?n.mix(s,e).hexString():t},number:(i,t,e)=>i+(t-i)*e};class Tn{constructor(t,e,s,n){const o=e[s];n=Xt([t.to,n,o,t.from]);const a=Xt([t.from,o,n]);this._active=!0,this._fn=t.fn||pa[t.type||typeof a],this._easing=Kt[t.easing]||Kt.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=s,this._from=a,this._to=n,this._promises=void 0}active(){return this._active}update(t,e,s){if(this._active){this._notify(!1);const n=this._target[this._prop],o=s-this._start,a=this._duration-o;this._start=s,this._duration=Math.floor(Math.max(a,t.duration)),this._total+=o,this._loop=!!t.loop,this._to=Xt([t.to,e,n,t.from]),this._from=Xt([t.from,n,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,s=this._duration,n=this._prop,o=this._from,a=this._loop,r=this._to;let l;if(this._active=o!==r&&(a||e1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[n]=this._fn(o,r,l))}wait(){const t=this._promises||(this._promises=[]);return new Promise((e,s)=>{t.push({res:e,rej:s})})}_notify(t){const e=t?"res":"rej",s=this._promises||[];for(let n=0;n"onProgress"!==i&&"onComplete"!==i&&"fn"!==i}),E.set("animations",{colors:{type:"color",properties:["color","borderColor","backgroundColor"]},numbers:{type:"number",properties:["x","y","borderWidth","radius","tension"]}}),E.describe("animations",{_fallback:"animation"}),E.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:i=>0|i}}}});class Yi{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!R(t))return;const e=this._properties;Object.getOwnPropertyNames(t).forEach(s=>{const n=t[s];if(!R(n))return;const o={};for(const a of ma)o[a]=n[a];(B(n.properties)&&n.properties||[s]).forEach(a=>{a!==s&&e.has(a)||e.set(a,o)})})}_animateOptions(t,e){const s=e.options,n=function(a,r){if(!r)return;let l=a.options;return l?(l.$shared&&(a.options=l=Object.assign({},l,{$shared:!1,$animations:{}})),l):void(a.options=r)}(t,s);if(!n)return[];const o=this._createAnimations(n,s);return s.$shared&&function(a,r){const l=[],h=Object.keys(r);for(let c=0;c{t.options=s},()=>{}),o}_createAnimations(t,e){const s=this._properties,n=[],o=t.$animations||(t.$animations={}),a=Object.keys(e),r=Date.now();let l;for(l=a.length-1;l>=0;--l){const h=a[l];if("$"===h.charAt(0))continue;if("options"===h){n.push(...this._animateOptions(t,e));continue}const c=e[h];let d=o[h];const u=s.get(h);if(d){if(u&&d.active()){d.update(u,c,r);continue}d.cancel()}u&&u.duration?(o[h]=d=new Tn(u,t,h,c),n.push(d)):t[h]=c}return n}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const s=this._createAnimations(t,e);return s.length?(ut.add(this._chart,s),!0):void 0}}function Ln(i,t){const e=i&&i.options||{},s=e.reverse,n=void 0===e.min?t:0,o=void 0===e.max?t:0;return{start:s?o:n,end:s?n:o}}function Rn(i,t){const e=[],s=i._getSortedDatasetMetas(t);let n,o;for(n=0,o=s.length;n0||!e&&o<0)return n.index}return null}function Fn(i,t){const{chart:e,_cachedMeta:s}=i,n=e._stacks||(e._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=(g=a,p=s,`${o.id}.${g.id}.${p.stack||p.type}`),d=t.length;var g,p;let u;for(let f=0;fe[s].axis===t).shift()}function me(i,t){const e=i.controller.index,s=i.vScale&&i.vScale.axis;if(s){t=t||i._parsed;for(const n of t){const o=n._stacks;if(!o||void 0===o[s]||void 0===o[s][e])return;delete o[s][e]}}}const Xi=i=>"reset"===i||"none"===i,Bn=(i,t)=>t?i:Object.assign({},i);class ct{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.$context=void 0,this._syncList=[],this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=In(t.vScale,t),this.addElements()}updateIndex(t){this.index!==t&&me(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,s=this.getDataset(),n=(d,u,f,g)=>"x"===d?u:"r"===d?g:f,o=e.xAxisID=L(s.xAxisID,Ui(t,"x")),a=e.yAxisID=L(s.yAxisID,Ui(t,"y")),r=e.rAxisID=L(s.rAxisID,Ui(t,"r")),l=e.indexAxis,h=e.iAxisID=n(l,o,a,r),c=e.vAxisID=n(l,a,o,r);e.xScale=this.getScaleForId(o),e.yScale=this.getScaleForId(a),e.rScale=this.getScaleForId(r),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&Si(this._data,this),t._stacked&&me(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),s=this._data;if(R(e))this._data=function(n){const o=Object.keys(n),a=new Array(o.length);let r,l,h;for(r=0,l=o.length;r0&&s._parsed[t-1];if(!1===this._parsing)s._parsed=n,s._sorted=!0,c=n;else{c=B(n[t])?this.parseArrayData(s,n,t,e):R(n[t])?this.parseObjectData(s,n,t,e):this.parsePrimitiveData(s,n,t,e);const f=()=>null===h[r]||u&&h[r]p||d=0;--u)if(!g()){this.updateRangeFromParsed(h,t,f,l);break}return h}getAllParsedValues(t){const e=this._cachedMeta._parsed,s=[];let n,o,a;for(n=0,o=e.length;n=0&&tthis.getContext(s,n),d);return g.$shared&&(g.$shared=l,o[a]=Object.freeze(Bn(g,l))),g}_resolveAnimations(t,e,s){const n=this.chart,o=this._cachedDataOpts,a=`animation-${e}`,r=o[a];if(r)return r;let l;if(!1!==n.options.animation){const c=this.chart.config,d=c.datasetAnimationScopeKeys(this._type,e),u=c.getOptionScopes(this.getDataset(),d);l=c.createResolver(u,this.getContext(t,s,e))}const h=new Yi(n,l&&l.animations);return l&&l._cacheable&&(o[a]=Object.freeze(h)),h}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Xi(t)||this.chart._animationsDisabled}updateElement(t,e,s,n){Xi(n)?Object.assign(t,s):this._resolveAnimations(e,n).update(t,s)}updateSharedOptions(t,e,s){t&&!Xi(e)&&this._resolveAnimations(void 0,e).update(t,s)}_setStyle(t,e,s,n){t.active=n;const o=this.getStyle(e,n);this._resolveAnimations(e,s,n).update(t,{options:!n&&this.getSharedOptions(o)||o})}removeHoverStyle(t,e,s){this._setStyle(t,s,"active",!1)}setHoverStyle(t,e,s){this._setStyle(t,s,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,s=this._cachedMeta.data;for(const[r,l,h]of this._syncList)this[r](l,h);this._syncList=[];const n=s.length,o=e.length,a=Math.min(o,n);a&&this.parse(0,a),o>n?this._insertElements(n,o-n,t):o{for(h.length+=e,r=h.length-1;r>=a;r--)h[r]=h[r-e]};for(l(o),r=t;r{n[o]=s[o]&&s[o].active()?s[o]._to:this[o]}),n}}lt.defaults={},lt.defaultRoutes=void 0;const Vn={values:i=>B(i)?i:""+i,numeric(i,t,e){if(0===i)return"0";const s=this.chart.options.locale;let n,o=i;if(e.length>1){const h=Math.max(Math.abs(e[0].value),Math.abs(e[e.length-1].value));(h<1e-4||h>1e15)&&(n="scientific"),o=function(c,d){let u=d.length>3?d[2].value-d[1].value:d[1].value-d[0].value;return Math.abs(u)>=1&&c!==Math.floor(c)&&(u=c-Math.floor(c)),u}(i,e)}const a=nt(Math.abs(o)),r=Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),Gt(i,s,l)},logarithmic(i,t,e){if(0===i)return"0";const s=i/Math.pow(10,Math.floor(nt(i)));return 1===s||2===s||5===s?Vn.numeric.call(this,i,t,e):""}};var xe={formatters:Vn};function Ye(i,t,e,s,n){const o=L(s,0),a=Math.min(L(n,i.length),i.length);let r,l,h,c=0;for(e=Math.ceil(e),n&&(r=n-s,e=r/Math.floor(r/e)),h=o;h<0;)c++,h=Math.round(o+c*e);for(l=Math.max(o,0);lt.lineWidth,tickColor:(i,t)=>t.color,offset:!1,borderDash:[],borderDashOffset:0,borderWidth:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:xe.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),E.route("scale.ticks","color","","color"),E.route("scale.grid","color","","borderColor"),E.route("scale.grid","borderColor","","borderColor"),E.route("scale.title","color","","color"),E.describe("scale",{_fallback:!1,_scriptable:i=>!i.startsWith("before")&&!i.startsWith("after")&&"callback"!==i&&"parser"!==i,_indexable:i=>"borderDash"!==i&&"tickBorderDash"!==i}),E.describe("scales",{_fallback:"scale"}),E.describe("scale.ticks",{_scriptable:i=>"backdropPadding"!==i&&"callback"!==i,_indexable:i=>"backdropPadding"!==i});const Wn=(i,t,e)=>"top"===t||"left"===t?i[t]+e:i[t]-e;function Nn(i,t){const e=[],s=i.length/t,n=i.length;let o=0;for(;oa+r)))return h}function be(i){return i.drawTicks?i.tickLength:0}function Hn(i,t){if(!i.display)return 0;const e=X(i.font,t),s=Z(i.padding);return(B(i.text)?i.text.length:1)*e.lineHeight+s.height}function ya(i,t,e){let s=Se(i);return(e&&"right"!==t||!e&&"right"===t)&&(s="left"===(n=s)?"right":"right"===n?"left":n),s;var n}class Ct extends lt{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:s,_suggestedMax:n}=this;return t=it(t,Number.POSITIVE_INFINITY),e=it(e,Number.NEGATIVE_INFINITY),s=it(s,Number.POSITIVE_INFINITY),n=it(n,Number.NEGATIVE_INFINITY),{min:it(t,s),max:it(e,n),minDefined:$(t),maxDefined:$(e)}}getMinMax(t){let e,{min:s,max:n,minDefined:o,maxDefined:a}=this.getUserBounds();if(o&&a)return{min:s,max:n};const r=this.getMatchingVisibleMetas();for(let l=0,h=r.length;ln?n:s,n=o&&s>n?s:n,{min:it(s,it(n,s)),max:it(n,it(s,n))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){V(this.options.beforeUpdate,[this])}update(t,e,s){const{beginAtZero:n,grace:o,ticks:a}=this.options,r=a.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=s=Object.assign({left:0,right:0,top:0,bottom:0},s),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+s.left+s.right:this.height+s.top+s.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Gs(this,o,n),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=rs)return function(c,d,u,f){let g,p=0,m=u[0];for(f=Math.ceil(f),g=0;gg)return b}return Math.max(g,1)}(n,t,s);if(o>0){let c,d;const u=o>1?Math.round((r-a)/(o-1)):null;for(Ye(t,l,h,I(u)?0:a-u,a),c=0,d=o-1;c=o||s<=1||!this.isHorizontal())return void(this.labelRotation=n);const c=this._getLabelSizes(),d=c.widest.width,u=c.highest.height,f=q(this.chart.width-d,0,this.maxWidth);a=t.offset?this.maxWidth/s:f/(s-1),d+6>a&&(a=f/(s-(t.offset?.5:1)),r=this.maxHeight-be(t.grid)-e.padding-Hn(t.title,this.chart.options.font),l=Math.sqrt(d*d+u*u),h=Re(Math.min(Math.asin(q((c.highest.height+6)/a,-1,1)),Math.asin(q(r/l,-1,1))-Math.asin(q(u/l,-1,1)))),h=Math.max(n,Math.min(o,h))),this.labelRotation=h}afterCalculateLabelRotation(){V(this.options.afterCalculateLabelRotation,[this])}beforeFit(){V(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:s,title:n,grid:o}}=this,a=this._isVisible(),r=this.isHorizontal();if(a){const l=Hn(n,e.options.font);if(r?(t.width=this.maxWidth,t.height=be(o)+l):(t.height=this.maxHeight,t.width=be(o)+l),s.display&&this.ticks.length){const{first:h,last:c,widest:d,highest:u}=this._getLabelSizes(),f=2*s.padding,g=rt(this.labelRotation),p=Math.cos(g),m=Math.sin(g);if(r){const x=s.mirror?0:m*d.width+p*u.height;t.height=Math.min(this.maxHeight,t.height+x+f)}else{const x=s.mirror?0:p*d.width+m*u.height;t.width=Math.min(this.maxWidth,t.width+x+f)}this._calculatePadding(h,c,m,p)}}this._handleMargins(),r?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,s,n){const{ticks:{align:o,padding:a},position:r}=this.options,l=0!==this.labelRotation,h="top"!==r&&"x"===this.axis;if(this.isHorizontal()){const c=this.getPixelForTick(0)-this.left,d=this.right-this.getPixelForTick(this.ticks.length-1);let u=0,f=0;l?h?(u=n*t.width,f=s*e.height):(u=s*t.height,f=n*e.width):"start"===o?f=e.width:"end"===o?u=t.width:(u=t.width/2,f=e.width/2),this.paddingLeft=Math.max((u-c+a)*this.width/(this.width-c),0),this.paddingRight=Math.max((f-d+a)*this.width/(this.width-d),0)}else{let c=e.height/2,d=t.height/2;"start"===o?(c=0,d=t.height):"end"===o&&(c=e.height,d=0),this.paddingTop=c+a,this.paddingBottom=d+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){V(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,s;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,s=t.length;e{const k=C.gc,O=k.length/2;let A;if(O>D){for(A=0;A({width:o[M]||0,height:a[M]||0});return{first:w(0),last:w(e-1),widest:w(y),highest:w(v),widths:o,heights:a}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Is(this._alignToPixels?kt(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&tr*n?r/s:l/n:l*n0}_computeGridLineItems(t){const e=this.axis,s=this.chart,n=this.options,{grid:o,position:a}=n,r=o.offset,l=this.isHorizontal(),h=this.ticks.length+(r?1:0),c=be(o),d=[],u=o.setContext(this.getContext()),f=u.drawBorder?u.borderWidth:0,g=f/2,p=function(S){return kt(s,S,f)};let m,x,b,_,y,v,w,M,D,C,k,O;if("top"===a)m=p(this.bottom),v=this.bottom-c,M=m-g,C=p(t.top)+g,O=t.bottom;else if("bottom"===a)m=p(this.top),C=t.top,O=p(t.bottom)-g,v=m+g,M=this.top+c;else if("left"===a)m=p(this.right),y=this.right-c,w=m-g,D=p(t.left)+g,k=t.right;else if("right"===a)m=p(this.left),D=t.left,k=p(t.right)-g,y=m+g,w=this.left+c;else if("x"===e){if("center"===a)m=p((t.top+t.bottom)/2+.5);else if(R(a)){const S=Object.keys(a)[0],P=a[S];m=p(this.chart.scales[S].getPixelForValue(P))}C=t.top,O=t.bottom,v=m+g,M=v+c}else if("y"===e){if("center"===a)m=p((t.left+t.right)/2);else if(R(a)){const S=Object.keys(a)[0],P=a[S];m=p(this.chart.scales[S].getPixelForValue(P))}y=m-g,w=y-c,D=t.left,k=t.right}const A=L(n.ticks.maxTicksLimit,h),T=Math.max(1,Math.ceil(h/A));for(x=0;xn.value===t);return s>=0?e.setContext(this.getContext(s)).lineWidth:0}drawGrid(t){const e=this.options.grid,s=this.ctx,n=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let o,a;const r=(l,h,c)=>{c.width&&c.color&&(s.save(),s.lineWidth=c.width,s.strokeStyle=c.color,s.setLineDash(c.borderDash||[]),s.lineDashOffset=c.borderDashOffset,s.beginPath(),s.moveTo(l.x,l.y),s.lineTo(h.x,h.y),s.stroke(),s.restore())};if(e.display)for(o=0,a=n.length;o{this.drawBackground(),this.drawGrid(n),this.drawTitle()}},{z:s+1,draw:()=>{this.drawBorder()}},{z:e,draw:n=>{this.drawLabels(n)}}]:[{z:e,draw:n=>{this.draw(n)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),s=this.axis+"AxisID",n=[];let o,a;for(o=0,a=e.length;o{const g=f.split("."),p=g.pop(),m=[d].concat(g).join("."),x=u[f].split("."),b=x.pop(),_=x.join(".");E.route(m,p,_,b)})),r.descriptors&&E.describe(l,r.descriptors)}(t,a,s),this.override&&E.override(t.id,t.overrides)),a}get(t){return this.items[t]}unregister(t){const e=this.items,s=t.id,n=this.scope;s in e&&delete e[s],n&&s in E[n]&&(delete E[n][s],this.override&&delete Rt[s])}}var mt=new class{constructor(){this.controllers=new Ue(ct,"datasets",!0),this.elements=new Ue(lt,"elements"),this.plugins=new Ue(Object,"plugins"),this.scales=new Ue(Ct,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...i){this._each("register",i)}remove(...i){this._each("unregister",i)}addControllers(...i){this._each("register",i,this.controllers)}addElements(...i){this._each("register",i,this.elements)}addPlugins(...i){this._each("register",i,this.plugins)}addScales(...i){this._each("register",i,this.scales)}getController(i){return this._get(i,this.controllers,"controller")}getElement(i){return this._get(i,this.elements,"element")}getPlugin(i){return this._get(i,this.plugins,"plugin")}getScale(i){return this._get(i,this.scales,"scale")}removeControllers(...i){this._each("unregister",i,this.controllers)}removeElements(...i){this._each("unregister",i,this.elements)}removePlugins(...i){this._each("unregister",i,this.plugins)}removeScales(...i){this._each("unregister",i,this.scales)}_each(i,t,e){[...t].forEach(s=>{const n=e||this._getRegistryForType(s);e||n.isForType(s)||n===this.plugins&&s.id?this._exec(i,n,s):z(s,o=>{const a=e||this._getRegistryForType(o);this._exec(i,a,o)})})}_exec(i,t,e){const s=Le(i);V(e["before"+s],[],e),t[i](e),V(e["after"+s],[],e)}_getRegistryForType(i){for(let t=0;to.filter(r=>!a.some(l=>r.plugin.id===l.plugin.id));this._notify(n(e,s),t,"stop"),this._notify(n(s,e),t,"start")}}function wa(i,t){return t||!1!==i?!0===i?{}:i:null}function Ma(i,t,e,s){const n=i.pluginScopeKeys(t),o=i.getOptionScopes(e,n);return i.createResolver(o,s,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function qi(i,t){const e=E.datasets[i]||{};return((t.datasets||{})[i]||{}).indexAxis||t.indexAxis||e.indexAxis||"x"}function Ki(i,t){return"x"===i||"y"===i?i:t.axis||("top"===(e=t.position)||"bottom"===e?"x":"left"===e||"right"===e?"y":void 0)||i.charAt(0).toLowerCase();var e}function jn(i){const t=i.options||(i.options={});t.plugins=L(t.plugins,{}),t.scales=function(e,s){const n=Rt[e.type]||{scales:{}},o=s.scales||{},a=qi(e.type,s),r=Object.create(null),l=Object.create(null);return Object.keys(o).forEach(h=>{const c=o[h];if(!R(c))return console.error(`Invalid scale configuration for scale: ${h}`);if(c._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${h}`);const d=Ki(h,c),u=d===a?"_index_":"_value_",f=n.scales||{};r[d]=r[d]||h,l[h]=Ht(Object.create(null),[{axis:d},c,f[d],f[u]])}),e.data.datasets.forEach(h=>{const c=h.type||e.type,d=h.indexAxis||qi(c,s),u=(Rt[c]||{}).scales||{};Object.keys(u).forEach(f=>{const g=function(m,x){let b=m;return"_index_"===m?b=x:"_value_"===m&&(b="x"===x?"y":"x"),b}(f,d),p=h[g+"AxisID"]||r[g]||g;l[p]=l[p]||Object.create(null),Ht(l[p],[{axis:g},o[p],u[f]])})}),Object.keys(l).forEach(h=>{const c=l[h];Ht(c,[E.scales[c.type],E.scale])}),l}(i,t)}function $n(i){return(i=i||{}).datasets=i.datasets||[],i.labels=i.labels||[],i}const Yn=new Map,Un=new Set;function Xe(i,t){let e=Yn.get(i);return e||(e=t(),Yn.set(i,e),Un.add(e)),e}const _e=(i,t,e)=>{const s=Mt(t,e);void 0!==s&&i.add(s)};class ka{constructor(t){var e;this._config=((e=(e=t)||{}).data=$n(e.data),jn(e),e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=$n(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),jn(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Xe(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,e){return Xe(`${t}.transition.${e}`,()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,e){return Xe(`${t}-${e}`,()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]])}pluginScopeKeys(t){const e=t.id;return Xe(`${this.type}-plugin-${e}`,()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,e){const s=this._scopeCache;let n=s.get(t);return n&&!e||(n=new Map,s.set(t,n)),n}getOptionScopes(t,e,s){const{options:n,type:o}=this,a=this._cachedScopes(t,s),r=a.get(e);if(r)return r;const l=new Set;e.forEach(c=>{t&&(l.add(t),c.forEach(d=>_e(l,t,d))),c.forEach(d=>_e(l,n,d)),c.forEach(d=>_e(l,Rt[o]||{},d)),c.forEach(d=>_e(l,E,d)),c.forEach(d=>_e(l,xi,d))});const h=Array.from(l);return 0===h.length&&h.push(Object.create(null)),Un.has(e)&&a.set(e,h),h}chartOptionScopes(){const{options:t,type:e}=this;return[t,Rt[e]||{},E.datasets[e]||{},{type:e},E,xi]}resolveNamedOptions(t,e,s,n=[""]){const o={$shared:!0},{resolver:a,subPrefixes:r}=Xn(this._resolverCache,t,n);let l=a;(function(h,c){const{isScriptable:d,isIndexable:u}=zi(h);for(const f of c){const g=d(f),p=u(f),m=(p||g)&&h[f];if(g&&(bt(m)||Sa(m))||p&&B(m))return!0}return!1})(a,e)&&(o.$shared=!1,l=zt(a,s=bt(s)?s():s,this.createResolver(t,s,r)));for(const h of e)o[h]=l[h];return o}createResolver(t,e,s=[""],n){const{resolver:o}=Xn(this._resolverCache,t,s);return R(e)?zt(o,e,void 0,n):o}}function Xn(i,t,e){let s=i.get(t);s||(s=new Map,i.set(t,s));const n=e.join();let o=s.get(n);return o||(o={resolver:Ne(t,e),subPrefixes:e.filter(a=>!a.toLowerCase().includes("hover"))},s.set(n,o)),o}const Sa=i=>R(i)&&Object.getOwnPropertyNames(i).reduce((t,e)=>t||bt(i[e]),!1),Pa=["top","bottom","left","right","chartArea"];function qn(i,t){return"top"===i||"bottom"===i||-1===Pa.indexOf(i)&&"x"===t}function Kn(i,t){return function(e,s){return e[i]===s[i]?e[t]-s[t]:e[i]-s[i]}}function Gn(i){const t=i.chart,e=t.options.animation;t.notifyPlugins("afterRender"),V(e&&e.onComplete,[i],t)}function Da(i){const t=i.chart,e=t.options.animation;V(e&&e.onProgress,[i],t)}function Zn(i){return Di()&&"string"==typeof i?i=document.getElementById(i):i&&i.length&&(i=i[0]),i&&i.canvas&&(i=i.canvas),i}const qe={},Jn=i=>{const t=Zn(i);return Object.values(qe).filter(e=>e.canvas===t).pop()};function Ca(i,t,e){const s=Object.keys(i);for(const n of s){const o=+n;if(o>=t){const a=i[n];delete i[n],(e>0||o>t)&&(i[o+e]=a)}}}class Y{constructor(t,e){const s=this.config=new ka(e),n=Zn(t),o=Jn(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas can be reused.");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||Cn(n)),this.platform.updateConfig(s);const r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,h=l&&l.height,c=l&&l.width;this.id=Ms(),this.ctx=r,this.canvas=l,this.width=c,this.height=h,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new va,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=us(d=>this.update(d),a.resizeDelay||0),this._dataChanges=[],qe[this.id]=this,r&&l?(ut.listen(this,"complete",Gn),ut.listen(this,"progress",Da),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:s,height:n,_aspectRatio:o}=this;return I(t)?e&&o?o:n?s/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():Ai(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return ki(this.canvas,this.ctx),this}stop(){return ut.stop(this),this}resize(t,e){ut.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const s=this.options,n=this.canvas,o=s.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(n,t,e,o),r=s.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,Ai(this,r,!0)&&(this.notifyPlugins("resize",{size:a}),V(s.onResize,[this,a],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){z(this.options.scales||{},(t,e)=>{t.id=e})}buildOrUpdateScales(){const t=this.options,e=t.scales,s=this.scales,n=Object.keys(s).reduce((a,r)=>(a[r]=!1,a),{});let o=[];e&&(o=o.concat(Object.keys(e).map(a=>{const r=e[a],l=Ki(a,r),h="r"===l,c="x"===l;return{options:r,dposition:h?"chartArea":c?"bottom":"left",dtype:h?"radialLinear":c?"category":"linear"}}))),z(o,a=>{const r=a.options,l=r.id,h=Ki(l,r),c=L(r.type,a.dtype);void 0!==r.position&&qn(r.position,h)===qn(a.dposition)||(r.position=a.dposition),n[l]=!0;let d=null;l in s&&s[l].type===c?d=s[l]:(d=new(mt.getScale(c))({id:l,type:c,ctx:this.ctx,chart:this}),s[d.id]=d),d.init(r,t)}),z(n,(a,r)=>{a||delete s[r]}),z(s,a=>{J.configure(this,a,a.options),J.addBox(this,a)})}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,s=t.length;if(t.sort((n,o)=>n.index-o.index),s>e){for(let n=e;ne.length&&delete this._stacks,t.forEach((s,n)=>{0===e.filter(o=>o===s._dataset).length&&this._destroyDatasetMeta(n)})}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let s,n;for(this._removeUnreferencedMetasets(),s=0,n=e.length;s{this.getDatasetMeta(e).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const s=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),n=this._animationsDisabled=!s.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const o=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let a=0;for(let h=0,c=this.data.datasets.length;h{h.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(Kn("z","_idx"));const{_active:r,_lastEvent:l}=this;l?this._eventHandler(l,!0):r.length&&this._updateHoverStyles(r,r,!0),this.render()}_updateScales(){z(this.scales,t=>{J.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),s=new Set(t.events);mi(e,s)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:s,start:n,count:o}of e)Ca(t,n,"_removeElements"===s?-o:o)}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,s=o=>new Set(t.filter(a=>a[0]===o).map((a,r)=>r+","+a.splice(1).join(","))),n=s(0);for(let o=1;oo.split(",")).map(o=>({method:o[1],start:+o[2],count:+o[3]}))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;J.update(this,this.width,this.height,t);const e=this.chartArea,s=e.width<=0||e.height<=0;this._layers=[],z(this.boxes,n=>{s&&"chartArea"===n.position||(n.configure&&n.configure(),this._layers.push(...n._layers()))},this),this._layers.forEach((n,o)=>{n._idx=o}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let e=0,s=this.data.datasets.length;e=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,s=t._clip,n=!s.disabled,o=this.chartArea,a={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",a)&&(n&&le(e,{left:!1===s.left?0:o.left-s.left,right:!1===s.right?this.width:o.right+s.right,top:!1===s.top?0:o.top-s.top,bottom:!1===s.bottom?this.height:o.bottom+s.bottom}),t.controller.draw(),n&&he(e),a.cancelable=!1,this.notifyPlugins("afterDatasetDraw",a))}getElementsAtEventForMode(t,e,s,n){const o=qs.modes[e];return"function"==typeof o?o(this,t,s,n):[]}getDatasetMeta(t){const e=this.data.datasets[t],s=this._metasets;let n=s.filter(o=>o&&o._dataset===e).pop();return n||(n={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},s.push(n)),n}getContext(){return this.$context||(this.$context=_t(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const s=this.getDatasetMeta(t);return"boolean"==typeof s.hidden?!s.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,s){const n=s?"show":"hide",o=this.getDatasetMeta(t),a=o.controller._resolveAnimations(void 0,n);st(e)?(o.data[e].hidden=!s,this.update()):(this.setDatasetVisibility(t,s),a.update(o,{visible:s}),this.update(r=>r.datasetIndex===t?n:void 0))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),ut.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,o,a),t[o]=a},n=(o,a,r)=>{o.offsetX=a,o.offsetY=r,this._eventHandler(o)};z(this.options.events,o=>s(o,n))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,s=(l,h)=>{e.addEventListener(this,l,h),t[l]=h},n=(l,h)=>{t[l]&&(e.removeEventListener(this,l,h),delete t[l])},o=(l,h)=>{this.canvas&&this.resize(l,h)};let a;const r=()=>{n("attach",r),this.attached=!0,this.resize(),s("resize",o),s("detach",a)};a=()=>{this.attached=!1,n("resize",o),this._stop(),this._resize(0,0),s("attach",r)},e.isAttached(this.canvas)?r():a()}unbindEvents(){z(this._listeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._listeners={},z(this._responsiveListeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,e,s){const n=s?"set":"remove";let o,a,r,l;for("dataset"===e&&(o=this.getDatasetMeta(t[0].datasetIndex),o.controller["_"+n+"DatasetHoverStyle"]()),r=0,l=t.length;r{const a=this.getDatasetMeta(n);if(!a)throw new Error("No dataset found at index "+n);return{datasetIndex:n,element:a.data[o],index:o}});!ie(s,e)&&(this._active=s,this._lastEvent=null,this._updateHoverStyles(s,e))}notifyPlugins(t,e,s){return this._plugins.notify(this,t,e,s)}_updateHoverStyles(t,e,s){const n=this.options.hover,o=(l,h)=>l.filter(c=>!h.some(d=>c.datasetIndex===d.datasetIndex&&c.index===d.index)),a=o(e,t),r=s?t:o(t,e);a.length&&this.updateHoverStyle(a,n.mode,!1),r.length&&n.mode&&this.updateHoverStyle(r,n.mode,!0)}_eventHandler(t,e){const s={event:t,replay:e,cancelable:!0,inChartArea:St(t,this.chartArea,this._minPadding)},n=a=>(a.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",s,n))return;const o=this._handleEvent(t,e,s.inChartArea);return s.cancelable=!1,this.notifyPlugins("afterEvent",s,n),(o||s.changed)&&this.render(),this}_handleEvent(t,e,s){const{_active:n=[],options:o}=this,a=e,r=this._getActiveElements(t,n,s,a),l=Os(t),h=(d=t,u=this._lastEvent,g=l,s&&"mouseout"!==d.type?g?u:d:null);var d,u,g;s&&(this._lastEvent=null,V(o.onHover,[t,r,this],this),l&&V(o.onClick,[t,r,this],this));const c=!ie(r,n);return(c||e)&&(this._active=r,this._updateHoverStyles(r,n,e)),this._lastEvent=h,c}_getActiveElements(t,e,s,n){if("mouseout"===t.type)return[];if(!s)return e;const o=this.options.hover;return this.getElementsAtEventForMode(t,o.mode,o,n)}}const Qn=()=>z(Y.instances,i=>i._plugins.invalidate()),Ot=!0;function Bt(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}Object.defineProperties(Y,{defaults:{enumerable:Ot,value:E},instances:{enumerable:Ot,value:qe},overrides:{enumerable:Ot,value:Rt},registry:{enumerable:Ot,value:mt},version:{enumerable:Ot,value:"3.7.0"},getChart:{enumerable:Ot,value:Jn},register:{enumerable:Ot,value:(...i)=>{mt.add(...i),Qn()}},unregister:{enumerable:Ot,value:(...i)=>{mt.remove(...i),Qn()}}});class Gi{constructor(t){this.options=t||{}}formats(){return Bt()}parse(t,e){return Bt()}format(t,e){return Bt()}add(t,e,s){return Bt()}diff(t,e,s){return Bt()}startOf(t,e,s){return Bt()}endOf(t,e){return Bt()}}Gi.override=function(i){Object.assign(Gi.prototype,i)};var to={_date:Gi};function Oa(i){const t=i.iScale,e=function(h,c){if(!h._cache.$bar){const d=h.getMatchingVisibleMetas(c);let u=[];for(let f=0,g=d.length;ff-g))}return h._cache.$bar}(t,i.type);let s,n,o,a,r=t._length;const l=()=>{32767!==o&&-32768!==o&&(st(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=e.length;sMath.abs(d)&&(u=d,f=c),o[a.axis]=f,o._custom={barStart:u,barEnd:f,start:l,end:h,min:c,max:d}}(i,t,e,s):t[e.axis]=e.parse(i,s),t}function io(i,t,e,s){const n=i.iScale,o=i.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=e,c=e+s;hd.x,f="left",g="right"):(u=d.base=_?1:-1))*o,u===a&&(m-=d/2),c=m+d),m===e.getPixelForValue(a)){const x=ht(d)*e.getLineWidthForValue(a)/2;m+=x,d-=x}var x,b,_;return{size:d,base:m,head:c,center:c+d/2}}_calculateBarIndexPixels(t,e){const s=e.scale,n=this.options,o=n.skipNull,a=L(n.maxBarThickness,1/0);let r,l;if(e.grouped){const h=o?this._getStackCount(t):e.stackCount,c="flex"===n.barThickness?function(u,f,g,p){const m=f.pixels,x=m[u];let b=u>0?m[u-1]:null,_=u=0;--s)e=Math.max(e,t[s].size(this.resolveDataElementOptions(s))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y),l=o._custom;return{label:e.label,value:"("+a+", "+r+(l?", "+l:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,s,n){const o="reset"===n,{iScale:a,vScale:r}=this._cachedMeta,l=this.resolveDataElementOptions(e,n),h=this.getSharedOptions(l),c=this.includeOptions(n,h),d=a.axis,u=r.axis;for(let f=e;f""}}}};class Zt extends ct{constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const s=this.getDataset().data,n=this._cachedMeta;if(!1===this._parsing)n._parsed=s;else{let o,a,r=l=>+s[l];if(R(s[t])){const{key:l="value"}=this._parsing;r=h=>+Mt(s[h],l)}for(o=t,a=t+e;oUt(Vt,A,T,!0)?1:Math.max(wt,wt*M,ke,ke*M),K=(Vt,wt,ke)=>Ut(Vt,A,T,!0)?-1:Math.min(wt,wt*M,ke,ke*M),ot=U(0,S,W),Q=U(H,P,j),dt=K(N,S,W),vt=K(N+H,P,j);D=(ot-dt)/2,C=(Q-vt)/2,k=-(ot+dt)/2,O=-(Q+vt)/2}return{ratioX:D,ratioY:C,offsetX:k,offsetY:O}}(d,c,l),m=(s.width-a)/u,x=(s.height-a)/f,b=Math.max(Math.min(m,x)/2,0),_=pi(this.options.radius,b),y=(_-Math.max(_*l,0))/this._getVisibleDatasetWeightTotal();this.offsetX=g*_,this.offsetY=p*_,n.total=this.calculateTotal(),this.outerRadius=_-y*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-y*h,0),this.updateElements(o,0,o.length,t)}_circumference(t,e){const s=this.options,n=this._cachedMeta,o=this._getCircumference();return e&&s.animation.animateRotate||!this.chart.getDataVisibility(t)||null===n._parsed[t]||n.data[t].hidden?0:this.calculateCircumference(n._parsed[t]*o/F)}updateElements(t,e,s,n){const o="reset"===n,a=this.chart,r=a.chartArea,l=a.options.animation,h=(r.left+r.right)/2,c=(r.top+r.bottom)/2,d=o&&l.animateScale,u=d?0:this.innerRadius,f=d?0:this.outerRadius,g=this.resolveDataElementOptions(e,n),p=this.getSharedOptions(g),m=this.includeOptions(n,p);let x,b=this._getRotation();for(x=0;x0&&!isNaN(t)?F*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,s=this.chart,n=s.data.labels||[],o=Gt(e._parsed[t],s.options.locale);return{label:n[t]||"",value:o}}getMaxBorderWidth(t){let e=0;const s=this.chart;let n,o,a,r,l;if(!t)for(n=0,o=s.data.datasets.length;n"spacing"!==i,_indexable:i=>"spacing"!==i},Zt.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(i){const t=i.data;if(t.labels.length&&t.datasets.length){const{labels:{pointStyle:e}}=i.legend.options;return t.labels.map((s,n)=>{const o=i.getDatasetMeta(0).controller.getStyle(n);return{text:s,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,lineWidth:o.borderWidth,pointStyle:e,hidden:!i.getDataVisibility(n),index:n}})}return[]}},onClick(i,t,e){e.chart.toggleDataVisibility(t.index),e.chart.update()}},tooltip:{callbacks:{title:()=>"",label(i){let t=i.label;const e=": "+i.formattedValue;return B(t)?(t=t.slice(),t[0]+=e):t+=e,t}}}}};class ye extends ct{initialize(){this.enableOptionSharing=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:s,data:n=[],_dataset:o}=e,a=this.chart._animationsDisabled;let{start:r,count:l}=function(c,d,u){const f=d.length;let g=0,p=f;if(c._sorted){const{iScale:m,_parsed:x}=c,b=m.axis,{min:_,max:y,minDefined:v,maxDefined:w}=m.getUserBounds();v&&(g=q(Math.min(pt(x,m.axis,_).lo,u?f:pt(d,b,m.getPixelForValue(_)).lo),0,f-1)),p=w?q(Math.max(pt(x,m.axis,y).hi+1,u?0:pt(d,b,m.getPixelForValue(y)).hi+1),g,f)-g:f-g}return{start:g,count:p}}(e,n,a);this._drawStart=r,this._drawCount=l,function(c){const{xScale:d,yScale:u,_scaleRanges:f}=c,g={xmin:d.min,xmax:d.max,ymin:u.min,ymax:u.max};if(!f)return c._scaleRanges=g,!0;const p=f.xmin!==d.min||f.xmax!==d.max||f.ymin!==u.min||f.ymax!==u.max;return Object.assign(f,g),p}(e)&&(r=0,l=n.length),s._chart=this.chart,s._datasetIndex=this.index,s._decimated=!!o._decimated,s.points=n;const h=this.resolveDatasetElementOptions(t);this.options.showLine||(h.borderWidth=0),h.segment=this.options.segment,this.updateElement(s,void 0,{animated:!a,options:h},t),this.updateElements(n,r,l,t)}updateElements(t,e,s,n){const o="reset"===n,{iScale:a,vScale:r,_stacked:l,_dataset:h}=this._cachedMeta,c=this.resolveDataElementOptions(e,n),d=this.getSharedOptions(c),u=this.includeOptions(n,d),f=a.axis,g=r.axis,{spanGaps:p,segment:m}=this.options,x=$t(p)?p:Number.POSITIVE_INFINITY,b=this.chart._animationsDisabled||o||"none"===n;let _=e>0&&this.getParsed(e-1);for(let y=e;y0&&w[f]-_[f]>x,m&&(M.parsed=w,M.raw=h.data[y]),u&&(M.options=d||this.resolveDataElementOptions(y,v.active?"active":n)),b||this.updateElement(v,y,M,n),_=w}this.updateSharedOptions(d,n,c)}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,s=e.options&&e.options.borderWidth||0,n=t.data||[];if(!n.length)return s;const o=n[0].size(this.resolveDataElementOptions(0)),a=n[n.length-1].size(this.resolveDataElementOptions(n.length-1));return Math.max(s,o,a)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}}ye.id="line",ye.defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1},ye.overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};class Ze extends ct{constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,s=this.chart,n=s.data.labels||[],o=Gt(e._parsed[t].r,s.options.locale);return{label:n[t]||"",value:o}}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}_updateRadius(){const t=this.chart,e=t.chartArea,s=t.options,n=Math.min(e.right-e.left,e.bottom-e.top),o=Math.max(n/2,0),a=(o-Math.max(s.cutoutPercentage?o/100*s.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=o-a*this.index,this.innerRadius=this.outerRadius-a}updateElements(t,e,s,n){const o="reset"===n,a=this.chart,r=this.getDataset(),l=a.options.animation,h=this._cachedMeta.rScale,c=h.xCenter,d=h.yCenter,u=h.getIndexAngle(0)-.5*N;let f,g=u;const p=360/this.countVisibleElements();for(f=0;f{!isNaN(t.data[o])&&this.chart.getDataVisibility(o)&&s++}),s}_computeAngle(t,e,s){return this.chart.getDataVisibility(t)?rt(this.resolveDataElementOptions(t,e).angle||s):0}}Ze.id="polarArea",Ze.defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0},Ze.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(i){const t=i.data;if(t.labels.length&&t.datasets.length){const{labels:{pointStyle:e}}=i.legend.options;return t.labels.map((s,n)=>{const o=i.getDatasetMeta(0).controller.getStyle(n);return{text:s,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,lineWidth:o.borderWidth,pointStyle:e,hidden:!i.getDataVisibility(n),index:n}})}return[]}},onClick(i,t,e){e.chart.toggleDataVisibility(t.index),e.chart.update()}},tooltip:{callbacks:{title:()=>"",label:i=>i.chart.data.labels[i.dataIndex]+": "+i.formattedValue}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};class Ji extends Zt{}Ji.id="pie",Ji.defaults={cutout:0,rotation:0,circumference:360,radius:"100%"};class Je extends ct{getLabelAndValue(t){const e=this._cachedMeta.vScale,s=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(s[e.axis])}}update(t){const e=this._cachedMeta,s=e.dataset,n=e.data||[],o=e.iScale.getLabels();if(s.points=n,"resize"!==t){const a=this.resolveDatasetElementOptions(t);this.options.showLine||(a.borderWidth=0);const r={_loop:!0,_fullLoop:o.length===n.length,options:a};this.updateElement(s,void 0,r,t)}this.updateElements(n,0,n.length,t)}updateElements(t,e,s,n){const o=this.getDataset(),a=this._cachedMeta.rScale,r="reset"===n;for(let l=e;l"",label:i=>"("+i.label+", "+i.formattedValue+")"}}},scales:{x:{type:"linear"},y:{type:"linear"}}};var oo=Object.freeze({__proto__:null,BarController:Ke,BubbleController:Ge,DoughnutController:Zt,LineController:ye,PolarAreaController:Ze,PieController:Ji,RadarController:Je,ScatterController:Qe});function ao(i,t,e){const{startAngle:s,pixelMargin:n,x:o,y:a,outerRadius:r,innerRadius:l}=t;let h=n/r;i.beginPath(),i.arc(o,a,r,s-h,e+h),l>n?(h=n/l,i.arc(o,a,l,e+h,s-h,!0)):i.arc(o,a,n,e+H,s-H),i.closePath(),i.clip()}function Jt(i,t,e,s){return{x:e+i*Math.cos(t),y:s+i*Math.sin(t)}}function Qi(i,t,e,s,n){const{x:o,y:a,startAngle:r,pixelMargin:l,innerRadius:h}=t,c=Math.max(t.outerRadius+s+e-l,0),d=h>0?h+s+e+l:0;let u=0;const f=n-r;if(s){const P=((h>0?h-s:0)+(c>0?c-s:0))/2;u=(f-(0!==P?f*P/(P+s):f))/2}const g=(f-Math.max(.001,f*c-e/N)/c)/2,p=r+g+u,m=n-g-u,{outerStart:x,outerEnd:b,innerStart:_,innerEnd:y}=function La(i,t,e,s){const n=Ve(i.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]),o=(e-t)/2,a=Math.min(o,s*t/2),r=l=>{const h=(e-Math.min(o,l))*s/2;return q(l,0,Math.min(o,h))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:q(n.innerStart,0,a),innerEnd:q(n.innerEnd,0,a)}}(t,d,c,m-p),v=c-x,w=c-b,M=p+x/v,D=m-b/w,C=d+_,k=d+y,O=p+_/C,A=m-y/k;if(i.beginPath(),i.arc(o,a,c,M,D),b>0){const P=Jt(w,D,o,a);i.arc(P.x,P.y,b,D,m+H)}const T=Jt(k,m,o,a);if(i.lineTo(T.x,T.y),y>0){const P=Jt(k,A,o,a);i.arc(P.x,P.y,y,m+H,A+Math.PI)}if(i.arc(o,a,d,m-y/d,p+_/d,!0),_>0){const P=Jt(C,O,o,a);i.arc(P.x,P.y,_,O+Math.PI,p-H)}const S=Jt(v,p,o,a);if(i.lineTo(S.x,S.y),x>0){const P=Jt(v,M,o,a);i.arc(P.x,P.y,x,p-H,M)}i.closePath()}class ti extends lt{constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,s){const n=this.getProps(["x","y"],s),{angle:o,distance:a}=Mi(n,{x:t,y:e}),{startAngle:r,endAngle:l,innerRadius:h,outerRadius:c,circumference:d}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],s),u=this.options.spacing/2,f=L(d,l-r)>=F||Ut(o,r,l),g=gt(a,h+u,c+u);return f&&g}getCenterPoint(t){const{x:e,y:s,startAngle:n,endAngle:o,innerRadius:a,outerRadius:r}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius","circumference"],t),{offset:l,spacing:h}=this.options,c=(n+o)/2,d=(a+r+h+l)/2;return{x:e+Math.cos(c)*d,y:s+Math.sin(c)*d}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:s}=this,n=(e.offset||0)/2,o=(e.spacing||0)/2;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=s>F?Math.floor(s/F):0,0===s||this.innerRadius<0||this.outerRadius<0)return;t.save();let a=0;if(n){a=n/2;const l=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(l)*a,Math.sin(l)*a),this.circumference>=N&&(a=n)}t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor;(function Ra(i,t,e,s,n){const{options:o}=t,{borderWidth:a,borderJoinStyle:r}=o,l="inner"===o.borderAlign;a&&(l?(i.lineWidth=2*a,i.lineJoin=r||"round"):(i.lineWidth=a,i.lineJoin=r||"bevel"),t.fullCircles&&function(h,c,d){const{x:u,y:f,startAngle:g,pixelMargin:p,fullCircles:m}=c,x=Math.max(c.outerRadius-p,0),b=c.innerRadius+p;let _;for(d&&ao(h,c,g+F),h.beginPath(),h.arc(u,f,b,g+F,g,!0),_=0;_r&&o>r;return{count:s,start:l,loop:t.loop,ilen:h(a+(h?r-y:y))%o,_=()=>{f!==g&&(i.lineTo(m,g),i.lineTo(m,f),i.lineTo(m,p))};for(l&&(d=n[b(0)],i.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[b(c)],d.skip)continue;const y=d.x,v=d.y,w=0|y;w===u?(vg&&(g=v),m=(x*m+y)/++x):(_(),i.lineTo(y,v),u=w,x=0,f=g=v),p=v}_()}function ts(i){const t=i.options,e=t.borderDash&&t.borderDash.length;return i._decimated||i._loop||t.tension||"monotone"===t.cubicInterpolationMode||t.stepped||e?Ia:za}ti.id="arc",ti.defaults={borderAlign:"center",borderColor:"#fff",borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0},ti.defaultRoutes={backgroundColor:"backgroundColor"};const Fa="function"==typeof Path2D;class At extends lt{constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const s=this.options;if((s.tension||"monotone"===s.cubicInterpolationMode)&&!s.stepped&&!this._pointsUpdated){const n=s.spanGaps?this._loop:this._fullLoop;dn(this._points,s,t,n,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=_n(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,s=t.length;return s&&e[t[s-1].end]}interpolate(t,e){const s=this.options,n=t[e],o=this.points,a=Hi(this,{property:e,start:n,end:n});if(!a.length)return;const r=[],l=(d=s).stepped?gn:d.tension||"monotone"===d.cubicInterpolationMode?pn:Dt;var d;let h,c;for(h=0,c=a.length;h"borderDash"!==i&&"fill"!==i};class ei extends lt{constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,s){const n=this.options,{x:o,y:a}=this.getProps(["x","y"],s);return Math.pow(t-o,2)+Math.pow(e-a,2){uo(t)})}var Na={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(i,t,e)=>{if(!e.enabled)return void fo(i);const s=i.width;i.data.datasets.forEach((n,o)=>{const{_data:a,indexAxis:r}=n,l=i.getDatasetMeta(o),h=a||n.data;if("y"===Xt([r,i.options.indexAxis])||"line"!==l.type)return;const c=i.scales[l.xAxisID];if("linear"!==c.type&&"time"!==c.type||i.options.parsing)return;let f,{start:d,count:u}=function(g,p){const m=p.length;let x,b=0;const{iScale:_}=g,{min:y,max:v,minDefined:w,maxDefined:M}=_.getUserBounds();return w&&(b=q(pt(p,_.axis,y).lo,0,m-1)),x=M?q(pt(p,_.axis,v).hi+1,b,m)-b:m-b,{start:b,count:x}}(l,h);if(u<=(e.threshold||4*s))uo(n);else{switch(I(a)&&(n._data=h,delete n.data,Object.defineProperty(n,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(g){this._data=g}})),e.algorithm){case"lttb":f=function(g,p,m,x,b){const _=b.samples||x;if(_>=m)return g.slice(p,p+m);const y=[],v=(m-2)/(_-2);let w=0;const M=p+m-1;let D,C,k,O,A,T=p;for(y[w++]=g[T],D=0;D<_-2;D++){let S,P=0,W=0;const j=Math.floor((D+1)*v)+1+p,U=Math.min(Math.floor((D+2)*v)+1,m)+p,K=U-j;for(S=j;Sk&&(k=O,C=g[S],A=S);y[w++]=C,T=A}return y[w++]=g[M],y}(h,d,u,s,e);break;case"min-max":f=function(g,p,m,x){let b,_,y,v,w,M,D,C,k,O,A=0,T=0;const S=[],P=p+m-1,W=g[p].x,j=g[P].x-W;for(b=p;bO&&(O=v,D=b),A=(T*A+_.x)/++T;else{const K=b-1;if(!I(M)&&!I(D)){const ot=Math.min(M,D),Q=Math.max(M,D);ot!==C&&ot!==K&&S.push({...g[ot],x:A}),Q!==C&&Q!==K&&S.push({...g[Q],x:A})}b>0&&K!==C&&S.push(g[K]),S.push(_),w=U,T=0,k=O=v,M=D=C=b}}return S}(h,d,u,s);break;default:throw new Error(`Unsupported decimation algorithm '${e.algorithm}'`)}n._decimated=f}})},destroy(i){fo(i)}};function Ha(i,t,e){const s=function(o){const a=o.options,r=a.fill;let l=L(r&&r.target,r);return void 0===l&&(l=!!a.backgroundColor),!1!==l&&null!==l&&(!0===l?"origin":l)}(i);if(R(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return $(n)&&Math.floor(n)===n?("-"!==s[0]&&"+"!==s[0]||(n=t+n),!(n===t||n<0||n>=e)&&n):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}class go{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,s){const{x:n,y:o,radius:a}=this;return e=e||{start:0,end:F},t.arc(n,o,a,e.end,e.start,!0),!s.bounds}interpolate(t){const{x:e,y:s,radius:n}=this,o=t.angle;return{x:e+Math.cos(o)*n,y:s+Math.sin(o)*n,angle:o}}}function po(i,t,e){for(;t>i;t--){const s=e[t];if(!isNaN(s.x)&&!isNaN(s.y))break}return t}function $a(i,t,e){const s=[];for(let n=0;n{d=po(c,d,l);const u=l[c],f=l[d];null!==r?(h.push({x:u.x,y:r}),h.push({x:f.x,y:r})):null!==a&&(h.push({x:a,y:u.y}),h.push({x:a,y:f.y}))}),h}(i,t),e.length?new At({points:e,options:{tension:0},_loop:s,_fullLoop:s}):null}function Xa(i,t,e){let s=i[t].fill;const n=[t];let o;if(!e)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!$(s))return s;if(o=i[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function xo(i,t,e){i.beginPath(),t.path(i),i.lineTo(t.last().x,e),i.lineTo(t.first().x,e),i.closePath(),i.clip()}function ns(i,t,e,s){if(s)return;let n=t[i],o=e[i];return"angle"===i&&(n=tt(n),o=tt(o)),{property:i,start:n,end:o}}function bo(i,t,e,s){return i&&t?s(i[e],t[e]):i?i[e]:t?t[e]:0}function qa(i,t,e){const{top:s,bottom:n}=t.chart.chartArea,{property:o,start:a,end:r}=e||{};"x"===o&&(i.beginPath(),i.rect(a,s,r-a,n-s),i.clip())}function _o(i,t,e,s){const n=t.interpolate(e,s);n&&i.lineTo(n.x,n.y)}function yo(i,t){const{line:e,target:s,property:n,color:o,scale:a}=t,r=function(l,h,c){const d=l.segments,u=l.points,f=h.points,g=[];for(const p of d){let{start:m,end:x}=p;x=po(m,x,u);const b=ns(c,u[m],u[x],p.loop);if(!h.segments){g.push({source:p,target:b,start:u[m],end:u[x]});continue}const _=Hi(h,b);for(const y of _){const v=ns(c,f[y.start],f[y.end],y.loop),w=Ni(p,u,v);for(const M of w)g.push({source:M,target:y,start:{[c]:bo(b,v,"start",Math.max)},end:{[c]:bo(b,v,"end",Math.min)}})}}return g}(e,s,n);for(const{source:l,target:h,start:c,end:d}of r){const{style:{backgroundColor:u=o}={}}=l,f=!0!==s;i.save(),i.fillStyle=u,qa(i,a,f&&ns(n,c,d)),i.beginPath();const g=!!e.pathSegment(i,l);let p;if(f){g?i.closePath():_o(i,s,d,n);const m=!!s.pathSegment(i,h,{move:g,reverse:!0});p=g&&m,p||_o(i,s,c,n)}i.closePath(),i.fill(p?"evenodd":"nonzero"),i.restore()}}function os(i,t,e){const s=Ua(t),{line:n,scale:o,axis:a}=t,r=n.options,l=r.fill,h=r.backgroundColor,{above:c=h,below:d=h}=l||{};s&&n.points.length&&(le(i,e),function(u,f){const{line:g,target:p,above:m,below:x,area:b,scale:_}=f,y=g._loop?"angle":f.axis;u.save(),"x"===y&&x!==m&&(xo(u,p,b.top),yo(u,{line:g,target:p,color:m,scale:_,property:y}),u.restore(),u.save(),xo(u,p,b.bottom)),yo(u,{line:g,target:p,color:x,scale:_,property:y}),u.restore()}(i,{line:n,target:s,above:c,below:d,area:e,scale:o,axis:a}),he(i))}var Ka={id:"filler",afterDatasetsUpdate(i,t,e){const s=(i.data.datasets||[]).length,n=[];let o,a,r,l;for(a=0;a=0;--a){const r=n[a].$filler;r&&(r.line.updateControlPoints(o,r.axis),s&&os(i.ctx,r,o))}},beforeDatasetsDraw(i,t,e){if("beforeDatasetsDraw"!==e.drawTime)return;const s=i.getSortedVisibleDatasetMetas();for(let n=s.length-1;n>=0;--n){const o=s[n].$filler;o&&os(i.ctx,o,i.chartArea)}},beforeDatasetDraw(i,t,e){const s=t.meta.$filler;s&&!1!==s.fill&&"beforeDatasetDraw"===e.drawTime&&os(i.ctx,s,i.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const vo=(i,t)=>{let{boxHeight:e=t,boxWidth:s=t}=i;return i.usePointStyle&&(e=Math.min(e,t),s=Math.min(s,t)),{boxWidth:s,boxHeight:e,itemHeight:Math.max(t,e)}};class wo extends lt{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,s){this.maxWidth=t,this.maxHeight=e,this._margins=s,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=V(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter(s=>t.filter(s,this.chart.data))),t.sort&&(e=e.sort((s,n)=>t.sort(s,n,this.chart.data))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const s=t.labels,n=X(s.font),o=n.size,a=this._computeTitleHeight(),{boxWidth:r,itemHeight:l}=vo(s,o);let h,c;e.font=n.string,this.isHorizontal()?(h=this.maxWidth,c=this._fitRows(a,o,r,l)+10):(c=this.maxHeight,h=this._fitCols(a,o,r,l)+10),this.width=Math.min(h,t.maxWidth||this.maxWidth),this.height=Math.min(c,t.maxHeight||this.maxHeight)}_fitRows(t,e,s,n){const{ctx:o,maxWidth:a,options:{labels:{padding:r}}}=this,l=this.legendHitBoxes=[],h=this.lineWidths=[0],c=n+r;let d=t;o.textAlign="left",o.textBaseline="middle";let u=-1,f=-c;return this.legendItems.forEach((g,p)=>{const m=s+e/2+o.measureText(g.text).width;(0===p||h[h.length-1]+m+2*r>a)&&(d+=c,h[h.length-(p>0?0:1)]=0,f+=c,u++),l[p]={left:0,top:f,row:u,width:m,height:n},h[h.length-1]+=m+r}),d}_fitCols(t,e,s,n){const{ctx:o,maxHeight:a,options:{labels:{padding:r}}}=this,l=this.legendHitBoxes=[],h=this.columnSizes=[],c=a-t;let d=r,u=0,f=0,g=0,p=0;return this.legendItems.forEach((m,x)=>{const b=s+e/2+o.measureText(m.text).width;x>0&&f+n+2*r>c&&(d+=u+r,h.push({width:u,height:f}),g+=u+r,p++,u=f=0),l[x]={left:g,top:f,col:p,width:b,height:n},u=Math.max(u,b),f+=n+r}),d+=u,h.push({width:u,height:f}),d}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:s,labels:{padding:n},rtl:o}}=this,a=Ft(o,this.left,this.width);if(this.isHorizontal()){let r=0,l=G(s,this.left+n,this.right-this.lineWidths[r]);for(const h of e)r!==h.row&&(r=h.row,l=G(s,this.left+n,this.right-this.lineWidths[r])),h.top+=this.top+t+n,h.left=a.leftForLtr(a.x(l),h.width),l+=h.width+n}else{let r=0,l=G(s,this.top+t+n,this.bottom-this.columnSizes[r].height);for(const h of e)h.col!==r&&(r=h.col,l=G(s,this.top+t+n,this.bottom-this.columnSizes[r].height)),h.top=l,h.left+=this.left+n,h.left=a.leftForLtr(a.x(h.left),h.width),l+=h.height+n}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;le(t,this),this._draw(),he(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:s,ctx:n}=this,{align:o,labels:a}=t,r=E.color,l=Ft(t.rtl,this.left,this.width),h=X(a.font),{color:c,padding:d}=a,u=h.size,f=u/2;let g;this.drawTitle(),n.textAlign=l.textAlign("left"),n.textBaseline="middle",n.lineWidth=.5,n.font=h.string;const{boxWidth:p,boxHeight:m,itemHeight:x}=vo(a,u),b=this.isHorizontal(),_=this._computeTitleHeight();g=b?{x:G(o,this.left+d,this.right-s[0]),y:this.top+d+_,line:0}:{x:this.left+d,y:G(o,this.top+_+d,this.bottom-e[0].height),line:0},Vi(this.ctx,t.textDirection);const y=x+d;this.legendItems.forEach((v,w)=>{n.strokeStyle=v.fontColor||c,n.fillStyle=v.fontColor||c;const M=n.measureText(v.text).width,D=l.textAlign(v.textAlign||(v.textAlign=a.textAlign)),C=p+f+M;let k=g.x,O=g.y;var A,T,S;l.setWidth(this.width),b?w>0&&k+C+d>this.right&&(O=g.y+=y,g.line++,k=g.x=G(o,this.left+d,this.right-s[g.line])):w>0&&O+y>this.bottom&&(k=g.x=k+e[g.line].width+d,g.line++,O=g.y=G(o,this.top+_+d,this.bottom-e[g.line].height)),function(A,T,S){if(isNaN(p)||p<=0||isNaN(m)||m<0)return;n.save();const P=L(S.lineWidth,1);if(n.fillStyle=L(S.fillStyle,r),n.lineCap=L(S.lineCap,"butt"),n.lineDashOffset=L(S.lineDashOffset,0),n.lineJoin=L(S.lineJoin,"miter"),n.lineWidth=P,n.strokeStyle=L(S.strokeStyle,r),n.setLineDash(L(S.lineDash,[])),a.usePointStyle){const W={radius:p*Math.SQRT2/2,pointStyle:S.pointStyle,rotation:S.rotation,borderWidth:P},j=l.xPlus(A,p/2);re(n,W,j,T+f)}else{const W=T+Math.max((u-m)/2,0),j=l.leftForLtr(A,p),U=It(S.borderRadius);n.beginPath(),Object.values(U).some(K=>0!==K)?ce(n,{x:j,y:W,w:p,h:m,radius:U}):n.rect(j,W,p,m),n.fill(),0!==P&&n.stroke()}n.restore()}(l.x(k),O,v),k=fs(D,k+p+f,b?k+C:this.right,t.rtl),A=l.x(k),T=O,Pt(n,(S=v).text,A,T+x/2,h,{strikethrough:S.hidden,textAlign:l.textAlign(S.textAlign)}),b?g.x+=C+d:g.y+=y}),Wi(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,s=X(e.font),n=Z(e.padding);if(!e.display)return;const o=Ft(t.rtl,this.left,this.width),a=this.ctx,r=e.position,l=s.size/2,h=n.top+l;let c,d=this.left,u=this.width;if(this.isHorizontal())u=Math.max(...this.lineWidths),c=this.top+h,d=G(t.align,d,this.right-u);else{const g=this.columnSizes.reduce((p,m)=>Math.max(p,m.height),0);c=h+G(t.align,this.top,this.bottom-g-t.labels.padding-this._computeTitleHeight())}const f=G(r,d,d+u);a.textAlign=o.textAlign(Se(r)),a.textBaseline="middle",a.strokeStyle=e.color,a.fillStyle=e.color,a.font=s.string,Pt(a,e.text,f,c,s)}_computeTitleHeight(){const t=this.options.title,e=X(t.font),s=Z(t.padding);return t.display?e.lineHeight+s.height:0}_getLegendItemAt(t,e){let s,n,o;if(gt(t,this.left,this.right)&>(e,this.top,this.bottom))for(o=this.legendHitBoxes,s=0;si.chart.options.color,boxWidth:40,padding:10,generateLabels(i){const t=i.data.datasets,{labels:{usePointStyle:e,pointStyle:s,textAlign:n,color:o}}=i.legend.options;return i._getSortedDatasetMetas().map(a=>{const r=a.controller.getStyle(e?0:void 0),l=Z(r.borderWidth);return{text:t[a.index].label,fillStyle:r.backgroundColor,fontColor:o,hidden:!a.visible,lineCap:r.borderCapStyle,lineDash:r.borderDash,lineDashOffset:r.borderDashOffset,lineJoin:r.borderJoinStyle,lineWidth:(l.width+l.height)/4,strokeStyle:r.borderColor,pointStyle:s||r.pointStyle,rotation:r.rotation,textAlign:n||r.textAlign,borderRadius:0,datasetIndex:a.index}},this)}},title:{color:i=>i.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:i=>!i.startsWith("on"),labels:{_scriptable:i=>!["generateLabels","filter","sort"].includes(i)}}};class as extends lt{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const s=this.options;if(this.left=0,this.top=0,!s.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const n=B(s.text)?s.text.length:1;this._padding=Z(s.padding);const o=n*X(s.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:s,bottom:n,right:o,options:a}=this,r=a.align;let l,h,c,d=0;return this.isHorizontal()?(h=G(r,s,o),c=e+t,l=o-s):("left"===a.position?(h=s+t,c=G(r,n,e),d=-.5*N):(h=o-t,c=G(r,e,n),d=.5*N),l=n-e),{titleX:h,titleY:c,maxWidth:l,rotation:d}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const s=X(e.font),n=s.lineHeight/2+this._padding.top,{titleX:o,titleY:a,maxWidth:r,rotation:l}=this._drawArgs(n);Pt(t,e.text,0,0,s,{color:e.color,maxWidth:r,rotation:l,textAlign:Se(e.align),textBaseline:"middle",translation:[o,a]})}}var Za={id:"title",_element:as,start(i,t,e){!function(s,n){const o=new as({ctx:s.ctx,options:n,chart:s});J.configure(s,o,n),J.addBox(s,o),s.titleBlock=o}(i,e)},stop(i){const t=i.titleBlock;J.removeBox(i,t),delete i.titleBlock},beforeUpdate(i,t,e){const s=i.titleBlock;J.configure(i,s,e),s.options=e},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const si=new WeakMap;var Ja={id:"subtitle",start(i,t,e){const s=new as({ctx:i.ctx,options:e,chart:i});J.configure(i,s,e),J.addBox(i,s),si.set(i,s)},stop(i){J.removeBox(i,si.get(i)),si.delete(i)},beforeUpdate(i,t,e){const s=si.get(i);J.configure(i,s,e),s.options=e},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const ve={average(i){if(!i.length)return!1;let t,e,s=0,n=0,o=0;for(t=0,e=i.length;t-1?i.split("\n"):i}function Qa(i,t){const{element:e,datasetIndex:s,index:n}=t,o=i.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:i,label:a,parsed:o.getParsed(n),raw:i.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:e}}function Mo(i,t){const e=i.chart.ctx,{body:s,footer:n,title:o}=i,{boxWidth:a,boxHeight:r}=t,l=X(t.bodyFont),h=X(t.titleFont),c=X(t.footerFont),d=o.length,u=n.length,f=s.length,g=Z(t.padding);let p=g.height,m=0,x=s.reduce((y,v)=>y+v.before.length+v.lines.length+v.after.length,0);x+=i.beforeBody.length+i.afterBody.length,d&&(p+=d*h.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),x&&(p+=f*(t.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(x-f)*l.lineHeight+(x-1)*t.bodySpacing),u&&(p+=t.footerMarginTop+u*c.lineHeight+(u-1)*t.footerSpacing);let b=0;const _=function(y){m=Math.max(m,e.measureText(y).width+b)};return e.save(),e.font=h.string,z(i.title,_),e.font=l.string,z(i.beforeBody.concat(i.afterBody),_),b=t.displayColors?a+2+t.boxPadding:0,z(s,y=>{z(y.before,_),z(y.lines,_),z(y.after,_)}),b=0,e.font=c.string,z(i.footer,_),e.restore(),m+=g.width,{width:m,height:p}}function tr(i,t,e,s){const{x:n,width:o}=e,{width:a,chartArea:{left:r,right:l}}=i;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(c,d,u,f){const{x:g,width:p}=f,m=u.caretSize+u.caretPadding;return"left"===c&&g+p+m>d.width||"right"===c&&g-p-m<0||void 0}(h,i,t,e)&&(h="center"),h}function ko(i,t,e){const s=e.yAlign||t.yAlign||function(n,o){const{y:a,height:r}=o;return an.height-r/2?"bottom":"center"}(i,e);return{xAlign:e.xAlign||t.xAlign||tr(i,t,e,s),yAlign:s}}function So(i,t,e,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=i,{xAlign:r,yAlign:l}=e,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=It(a);let g=function(m,x){let{x:b,width:_}=m;return"right"===x?b-=_:"center"===x&&(b-=_/2),b}(t,r);const p=function(m,x,b){let{y:_,height:y}=m;return"top"===x?_+=b:_-="bottom"===x?y+b:y/2,_}(t,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:q(g,0,s.width-t.width),y:q(p,0,s.height-t.height)}}function ni(i,t,e){const s=Z(e.padding);return"center"===t?i.x+i.width/2:"right"===t?i.x+i.width-s.right:i.x+s.left}function Po(i){return xt([],yt(i))}function Do(i,t){const e=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return e?i.override(e):i}class rs extends lt{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart||t._chart,this._chart=this.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,s=this.options.setContext(this.getContext()),n=s.enabled&&e.options.animation&&s.animations,o=new Yi(this.chart,n);return n._cacheable&&(this._cachedAnimations=Object.freeze(o)),o}getContext(){return this.$context||(this.$context=(this,_t(this.chart.getContext(),{tooltip:this,tooltipItems:this._tooltipItems,type:"tooltip"})))}getTitle(t,e){const{callbacks:s}=e,n=s.beforeTitle.apply(this,[t]),o=s.title.apply(this,[t]),a=s.afterTitle.apply(this,[t]);let r=[];return r=xt(r,yt(n)),r=xt(r,yt(o)),r=xt(r,yt(a)),r}getBeforeBody(t,e){return Po(e.callbacks.beforeBody.apply(this,[t]))}getBody(t,e){const{callbacks:s}=e,n=[];return z(t,o=>{const a={before:[],lines:[],after:[]},r=Do(s,o);xt(a.before,yt(r.beforeLabel.call(this,o))),xt(a.lines,r.label.call(this,o)),xt(a.after,yt(r.afterLabel.call(this,o))),n.push(a)}),n}getAfterBody(t,e){return Po(e.callbacks.afterBody.apply(this,[t]))}getFooter(t,e){const{callbacks:s}=e,n=s.beforeFooter.apply(this,[t]),o=s.footer.apply(this,[t]),a=s.afterFooter.apply(this,[t]);let r=[];return r=xt(r,yt(n)),r=xt(r,yt(o)),r=xt(r,yt(a)),r}_createItems(t){const e=this._active,s=this.chart.data,n=[],o=[],a=[];let r,l,h=[];for(r=0,l=e.length;rt.filter(c,d,u,s))),t.itemSort&&(h=h.sort((c,d)=>t.itemSort(c,d,s))),z(h,c=>{const d=Do(t.callbacks,c);n.push(d.labelColor.call(this,c)),o.push(d.labelPointStyle.call(this,c)),a.push(d.labelTextColor.call(this,c))}),this.labelColors=n,this.labelPointStyles=o,this.labelTextColors=a,this.dataPoints=h,h}update(t,e){const s=this.options.setContext(this.getContext()),n=this._active;let o,a=[];if(n.length){const r=ve[s.position].call(this,n,this._eventPosition);a=this._createItems(s),this.title=this.getTitle(a,s),this.beforeBody=this.getBeforeBody(a,s),this.body=this.getBody(a,s),this.afterBody=this.getAfterBody(a,s),this.footer=this.getFooter(a,s);const l=this._size=Mo(this,s),h=Object.assign({},r,l),c=ko(this.chart,s,h),d=So(s,h,c,this.chart);this.xAlign=c.xAlign,this.yAlign=c.yAlign,o={opacity:1,x:d.x,y:d.y,width:l.width,height:l.height,caretX:r.x,caretY:r.y}}else 0!==this.opacity&&(o={opacity:0});this._tooltipItems=a,this.$context=void 0,o&&this._resolveAnimations().update(this,o),t&&s.external&&s.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,s,n){const o=this.getCaretPosition(t,s,n);e.lineTo(o.x1,o.y1),e.lineTo(o.x2,o.y2),e.lineTo(o.x3,o.y3)}getCaretPosition(t,e,s){const{xAlign:n,yAlign:o}=this,{caretSize:a,cornerRadius:r}=s,{topLeft:l,topRight:h,bottomLeft:c,bottomRight:d}=It(r),{x:u,y:f}=t,{width:g,height:p}=e;let m,x,b,_,y,v;return"center"===o?(y=f+p/2,"left"===n?(m=u,x=m-a,_=y+a,v=y-a):(m=u+g,x=m+a,_=y-a,v=y+a),b=m):(x="left"===n?u+Math.max(l,c)+a:"right"===n?u+g-Math.max(h,d)-a:this.caretX,"top"===o?(_=f,y=_-a,m=x-a,b=x+a):(_=f+p,y=_+a,m=x+a,b=x-a),v=_),{x1:m,x2:x,x3:b,y1:_,y2:y,y3:v}}drawTitle(t,e,s){const n=this.title,o=n.length;let a,r,l;if(o){const h=Ft(s.rtl,this.x,this.width);for(t.x=ni(this,s.titleAlign,s),e.textAlign=h.textAlign(s.titleAlign),e.textBaseline="middle",a=X(s.titleFont),r=s.titleSpacing,e.fillStyle=s.titleColor,e.font=a.string,l=0;l0!==_)?(t.beginPath(),t.fillStyle=o.multiKeyBackground,ce(t,{x:m,y:p,w:h,h:l,radius:b}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),ce(t,{x,y:p+1,w:h-2,h:l-2,radius:b}),t.fill()):(t.fillStyle=o.multiKeyBackground,t.fillRect(m,p,h,l),t.strokeRect(m,p,h,l),t.fillStyle=a.backgroundColor,t.fillRect(x,p+1,h-2,l-2))}t.fillStyle=this.labelTextColors[s]}drawBody(t,e,s){const{body:n}=this,{bodySpacing:o,bodyAlign:a,displayColors:r,boxHeight:l,boxWidth:h,boxPadding:c}=s,d=X(s.bodyFont);let u=d.lineHeight,f=0;const g=Ft(s.rtl,this.x,this.width),p=function(D){e.fillText(D,g.x(t.x+f),t.y+u/2),t.y+=u+o},m=g.textAlign(a);let x,b,_,y,v,w,M;for(e.textAlign=a,e.textBaseline="middle",e.font=d.string,t.x=ni(this,m,s),e.fillStyle=s.bodyColor,z(this.beforeBody,p),f=r&&"right"!==m?"center"===a?h/2+c:h+2+c:0,y=0,w=n.length;y0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,s=this.$animations,n=s&&s.x,o=s&&s.y;if(n||o){const a=ve[t.position].call(this,this._active,this._eventPosition);if(!a)return;const r=this._size=Mo(this,t),l=Object.assign({},a,this._size),h=ko(e,t,l),c=So(t,l,h,e);n._to===c.x&&o._to===c.y||(this.xAlign=h.xAlign,this.yAlign=h.yAlign,this.width=r.width,this.height=r.height,this.caretX=a.x,this.caretY=a.y,this._resolveAnimations().update(this,c))}}draw(t){const e=this.options.setContext(this.getContext());let s=this.opacity;if(!s)return;this._updateAnimationTarget(e);const n={width:this.width,height:this.height},o={x:this.x,y:this.y};s=Math.abs(s)<.001?0:s;const a=Z(e.padding),r=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&r&&(t.save(),t.globalAlpha=s,this.drawBackground(o,t,n,e),Vi(t,e.textDirection),o.y+=a.top,this.drawTitle(o,t,e),this.drawBody(o,t,e),this.drawFooter(o,t,e),Wi(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const s=this._active,n=t.map(({datasetIndex:r,index:l})=>{const h=this.chart.getDatasetMeta(r);if(!h)throw new Error("Cannot find a dataset at index "+r);return{datasetIndex:r,element:h.data[l],index:l}}),o=!ie(s,n),a=this._positionChanged(n,e);(o||a)&&(this._active=n,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,s=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const n=this.options,o=this._active||[],a=this._getActiveElements(t,o,e,s),r=this._positionChanged(a,t),l=e||!ie(a,o)||r;return l&&(this._active=a,(n.enabled||n.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),l}_getActiveElements(t,e,s,n){const o=this.options;if("mouseout"===t.type)return[];if(!n)return e;const a=this.chart.getElementsAtEventForMode(t,o.mode,o,s);return o.reverse&&a.reverse(),a}_positionChanged(t,e){const{caretX:s,caretY:n,options:o}=this,a=ve[o.position].call(this,t,e);return!1!==a&&(s!==a.x||n!==a.y)}}rs.positioners=ve;var er={id:"tooltip",_element:rs,positioners:ve,afterInit(i,t,e){e&&(i.tooltip=new rs({chart:i,options:e}))},beforeUpdate(i,t,e){i.tooltip&&i.tooltip.initialize(e)},reset(i,t,e){i.tooltip&&i.tooltip.initialize(e)},afterDraw(i){const t=i.tooltip,e={tooltip:t};!1!==i.notifyPlugins("beforeTooltipDraw",e)&&(t&&t.draw(i.ctx),i.notifyPlugins("afterTooltipDraw",e))},afterEvent(i,t){if(i.tooltip){const e=t.replay;i.tooltip.handleEvent(t.event,e,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(i,t)=>t.bodyFont.size,boxWidth:(i,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:{beforeTitle:ft,title(i){if(i.length>0){const t=i[0],e=t.chart.data.labels,s=e?e.length:0;if(this&&this.options&&"dataset"===this.options.mode)return t.dataset.label||"";if(t.label)return t.label;if(s>0&&t.dataIndex"filter"!==i&&"itemSort"!==i&&"external"!==i,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},Co=Object.freeze({__proto__:null,Decimation:Na,Filler:Ka,Legend:Ga,SubTitle:Ja,Title:Za,Tooltip:er});class oi extends Ct{constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const s=this.getLabels();for(const{index:n,label:o}of e)s[n]===o&&s.splice(n,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(I(t))return null;const s=this.getLabels();return n=e=isFinite(e)&&s[e]===t?e:function ir(i,t,e,s){const n=i.indexOf(t);return-1===n?(o=i,r=e,l=s,"string"==typeof(a=t)?(r=o.push(a)-1,l.unshift({index:r,label:a})):isNaN(a)&&(r=null),r):n!==i.lastIndexOf(t)?e:n;var o,a,r,l}(s,t,L(e,t),this._addedLabels),o=s.length-1,null===n?null:q(Math.round(n),0,o);var n,o}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:s,max:n}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(s=0),e||(n=this.getLabels().length-1)),this.min=s,this.max=n}buildTicks(){const t=this.min,e=this.max,s=this.options.offset,n=[];let o=this.getLabels();o=0===t&&e===o.length-1?o:o.slice(t,e+1),this._valueRange=Math.max(o.length-(s?0:1),1),this._startValue=this.min-(s?.5:0);for(let a=t;a<=e;a++)n.push({value:a});return n}getLabelForValue(t){const e=this.getLabels();return t>=0&&te.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}function Oo(i,t,{horizontal:e,minRotation:s}){const n=rt(s),o=(e?Math.sin(n):Math.cos(n))||.001,a=.75*t*(""+i).length;return Math.min(t/o,a)}oi.id="category",oi.defaults={ticks:{callback:oi.prototype.getLabelForValue}};class ai extends Ct{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return I(t)||("number"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:s}=this.getUserBounds();let{min:n,max:o}=this;const a=l=>n=e?n:l,r=l=>o=s?o:l;if(t){const l=ht(n),h=ht(o);l<0&&h<0?r(0):l>0&&h>0&&a(0)}if(n===o){let l=1;(o>=Number.MAX_SAFE_INTEGER||n<=Number.MIN_SAFE_INTEGER)&&(l=Math.abs(.05*o)),r(o+l),t||a(n-l)}this.min=n,this.max=o}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:s,stepSize:n}=t;return n?(e=Math.ceil(this.max/n)-Math.floor(this.min/n)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${n} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),s=s||11),s&&(e=Math.min(s,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let s=this.getTickLimit();s=Math.max(2,s);const n=function(o,a){const r=[],{bounds:l,step:h,min:c,max:d,precision:u,count:f,maxTicks:g,maxDigits:p,includeBounds:m}=o,x=h||1,b=g-1,{min:_,max:y}=a,v=!I(c),w=!I(d),M=!I(f),D=(y-_)/(p+1);let C,k,O,A,T=yi((y-_)/b/x)*x;if(T<1e-14&&!v&&!w)return[{value:_},{value:y}];A=Math.ceil(y/T)-Math.floor(_/T),A>b&&(T=yi(A*T/b/x)*x),I(u)||(C=Math.pow(10,u),T=Math.ceil(T*C)/C),"ticks"===l?(k=Math.floor(_/T)*T,O=Math.ceil(y/T)*T):(k=_,O=y),v&&w&&h&&Rs((d-c)/h,T/1e3)?(A=Math.round(Math.min((d-c)/T,g)),T=(d-c)/A,k=c,O=d):M?(k=v?c:k,O=w?d:O,A=f-1,T=(O-k)/A):(A=(O-k)/T,A=Yt(A,Math.round(A),T/1e3)?Math.round(A):Math.ceil(A));const S=Math.max(wi(T),wi(k));C=Math.pow(10,I(u)?S:u),k=Math.round(k*C)/C,O=Math.round(O*C)/C;let P=0;for(v&&(m&&k!==c?(r.push({value:c}),k0?s:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=$(t)?Math.max(0,t):null,this.max=$(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let s=this.min,n=this.max;const o=l=>s=t?s:l,a=l=>n=e?n:l,r=(l,h)=>Math.pow(10,Math.floor(nt(l))+h);s===n&&(s<=0?(o(1),a(10)):(o(r(s,-1)),a(r(n,1)))),s<=0&&o(r(n,-1)),n<=0&&a(r(s,1)),this._zero&&this.min!==this._suggestedMin&&s===r(this.min,0)&&o(r(s,-1)),this.min=s,this.max=n}buildTicks(){const t=this.options,e=function(s,n){const o=Math.floor(nt(n.max)),a=Math.ceil(n.max/Math.pow(10,o)),r=[];let l=it(s.min,Math.pow(10,Math.floor(nt(n.min)))),h=Math.floor(nt(l)),c=Math.floor(l/Math.pow(10,h)),d=h<0?Math.pow(10,Math.abs(h)):1;do{r.push({value:l,major:Ao(l)}),++c,10===c&&(c=1,++h,d=h>=0?1:d),l=Math.round(c*Math.pow(10,h)*d)/d}while(hn?{start:t-e,end:t}:{start:t,end:t+e}}function nr(i,t,e,s,n){const o=Math.abs(Math.sin(e)),a=Math.abs(Math.cos(e));let r=0,l=0;s.startt.r&&(r=(s.end-t.r)/o,i.r=Math.max(i.r,t.r+r)),n.startt.b&&(l=(n.end-t.b)/a,i.b=Math.max(i.b,t.b+l))}function or(i){return 0===i||180===i?"center":i<180?"left":"right"}function ar(i,t,e){return"right"===e?i-=t:"center"===e&&(i-=t/2),i}function rr(i,t,e){return 90===e||270===e?i-=t/2:(e>270||e<90)&&(i-=t),i}function Lo(i,t,e,s){const{ctx:n}=i;if(e)n.arc(i.xCenter,i.yCenter,t,0,F);else{let o=i.getPointPosition(0,t);n.moveTo(o.x,o.y);for(let a=1;a{const n=V(this.options.pointLabels.callback,[e,s],this);return n||0===n?n:""}).filter((e,s)=>this.chart.getDataVisibility(s))}fit(){const t=this.options;t.display&&t.pointLabels.display?function sr(i){const t={l:i.left+i._padding.left,r:i.right-i._padding.right,t:i.top+i._padding.top,b:i.bottom-i._padding.bottom},e=Object.assign({},t),s=[],n=[],o=i._pointLabels.length,a=i.options.pointLabels,r=a.centerPointLabels?N/o:0;for(let d=0;d=0&&t=0;f--){const g=u.setContext(h.getPointLabelContext(f)),p=X(g.font),{x:m,y:x,textAlign:b,left:_,top:y,right:v,bottom:w}=h._pointLabelItems[f],{backdropColor:M}=g;if(!I(M)){const D=Z(g.backdropPadding);d.fillStyle=M,d.fillRect(_-D.left,y-D.top,v-_+D.width,w-y+D.height)}Pt(d,h._pointLabels[f],m,x+p.lineHeight/2,p,{color:g.color,textAlign:b,textBaseline:"middle"})}}(this,o),n.display&&this.ticks.forEach((h,c)=>{0!==c&&(r=this.getDistanceFromCenterForValue(h.value),function(d,u,f,g){const p=d.ctx,m=u.circular,{color:x,lineWidth:b}=u;!m&&!g||!x||!b||f<0||(p.save(),p.strokeStyle=x,p.lineWidth=b,p.setLineDash(u.borderDash),p.lineDashOffset=u.borderDashOffset,p.beginPath(),Lo(d,f,m,g),p.closePath(),p.stroke(),p.restore())}(this,n.setContext(this.getContext(c-1)),r,o))}),s.display){for(t.save(),a=o-1;a>=0;a--){const h=s.setContext(this.getPointLabelContext(a)),{color:c,lineWidth:d}=h;d&&c&&(t.lineWidth=d,t.strokeStyle=c,t.setLineDash(h.borderDash),t.lineDashOffset=h.borderDashOffset,r=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),l=this.getPointPosition(a,r),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,s=e.ticks;if(!s.display)return;const n=this.getIndexAngle(0);let o,a;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(n),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach((r,l)=>{if(0===l&&!e.reverse)return;const h=s.setContext(this.getContext(l)),c=X(h.font);if(o=this.getDistanceFromCenterForValue(this.ticks[l].value),h.showLabelBackdrop){t.font=c.string,a=t.measureText(r.label).width,t.fillStyle=h.backdropColor;const d=Z(h.backdropPadding);t.fillRect(-a/2-d.left,-o-c.size/2-d.top,a+d.width,c.size+d.height)}Pt(t,r.label,0,-o,c,{color:h.color})}),t.restore()}drawTitle(){}}we.id="radialLinear",we.defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:xe.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:i=>i,padding:5,centerPointLabels:!1}},we.defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"},we.descriptors={angleLines:{_fallback:"grid"}};const ri={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},et=Object.keys(ri);function lr(i,t){return i-t}function Ro(i,t){if(I(t))return null;const e=i._adapter,{parser:s,round:n,isoWeekday:o}=i._parseOpts;let a=t;return"function"==typeof s&&(a=s(a)),$(a)||(a="string"==typeof s?e.parse(a,s):e.parse(a)),null===a?null:(n&&(a="week"!==n||!$t(o)&&!0!==o?e.startOf(a,n):e.startOf(a,"isoWeek",o)),+a)}function Eo(i,t,e,s){const n=et.length;for(let o=et.indexOf(i);o=t?e[s]:e[n]]=!0}}else i[t]=!0}function zo(i,t,e){const s=[],n={},o=t.length;let a,r;for(a=0;a=0&&(h[m].major=!0);return h}(i,s,n,e):s}class Me extends Ct{constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e){const s=t.time||(t.time={}),n=this._adapter=new to._date(t.adapters.date);Ht(s.displayFormats,n.formats()),this._parseOpts={parser:s.parser,round:s.round,isoWeekday:s.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:Ro(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,s=t.time.unit||"day";let{min:n,max:o,minDefined:a,maxDefined:r}=this.getUserBounds();function l(h){a||isNaN(h.min)||(n=Math.min(n,h.min)),r||isNaN(h.max)||(o=Math.max(o,h.max))}a&&r||(l(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||l(this.getMinMax(!1))),n=$(n)&&!isNaN(n)?n:+e.startOf(Date.now(),s),o=$(o)&&!isNaN(o)?o:+e.endOf(Date.now(),s)+1,this.min=Math.min(n,o-1),this.max=Math.max(n+1,o)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,s=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],s=t[t.length-1]),{min:e,max:s}}buildTicks(){const t=this.options,e=t.time,s=t.ticks,n="labels"===s.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&n.length&&(this.min=this._userMin||n[0],this.max=this._userMax||n[n.length-1]);const o=this.min,a=Ns(n,o,this.max);return this._unit=e.unit||(s.autoSkip?Eo(e.minUnit,this.min,this.max,this._getLabelCapacity(o)):function(r,l,h,c,d){for(let u=et.length-1;u>=et.indexOf(h);u--){const f=et[u];if(ri[f].common&&r._adapter.diff(d,c,f)>=l-1)return f}return et[h?et.indexOf(h):0]}(this,a.length,e.minUnit,this.min,this.max)),this._majorUnit=s.major.enabled&&"year"!==this._unit?function(r){for(let l=et.indexOf(r)+1,h=et.length;l1e5*r)throw new Error(e+" and "+s+" are too far apart with stepSize of "+r+" "+a);const g="data"===n.ticks.source&&this.getDataTimestamps();for(d=f,u=0;dp-m).map(p=>+p)}getLabelForValue(t){const e=this._adapter,s=this.options.time;return s.tooltipFormat?e.format(t,s.tooltipFormat):e.format(t,s.displayFormats.datetime)}_tickFormatFunction(t,e,s,n){const o=this.options,a=o.time.displayFormats,r=this._unit,l=this._majorUnit,h=r&&a[r],c=l&&a[l],d=s[e],u=l&&c&&d&&d.major,f=this._adapter.format(t,n||(u?c:h)),g=o.ticks.callback;return g?V(g,[f,e,s],this):f}generateTickLabels(t){let e,s,n;for(e=0,s=t.length;e0?r:1}getDataTimestamps(){let t,e,s=this._cache.data||[];if(s.length)return s;const n=this.getMatchingVisibleMetas();if(this._normalized&&n.length)return this._cache.data=n[0].controller.getAllParsedValues(this);for(t=0,e=n.length;t=i[r].pos&&t<=i[l].pos&&({lo:r,hi:l}=pt(i,"pos",t)),({pos:s,time:o}=i[r]),({pos:n,time:a}=i[l])):(t>=i[r].time&&t<=i[l].time&&({lo:r,hi:l}=pt(i,"time",t)),({time:s,pos:o}=i[r]),({time:n,pos:a}=i[l]));const h=n-s;return h?o+(a-o)*(t-s)/h:o}Me.id="time",Me.defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",major:{enabled:!1}}};class ds extends Me{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=li(e,this.min),this._tableRange=li(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:s}=this,n=[],o=[];let a,r,l,h,c;for(a=0,r=t.length;a=e&&h<=s&&n.push(h);if(n.length<2)return[{time:e,pos:0},{time:s,pos:1}];for(a=0,r=n.length;a