From 48351bf7871e83f9930767148365287d8bf48ad1 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 19 Apr 2024 12:53:14 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20jmerle/i?= =?UTF-8?q?mc-prosperity-2-visualizer@2c6525f7b535eb527c3d048521fa7dcf8ea9?= =?UTF-8?q?3e9e=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/{index-Dv90ZguV.js => index-CJZBs9WT.js} | 2 +- index.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename assets/{index-Dv90ZguV.js => index-CJZBs9WT.js} (99%) diff --git a/assets/index-Dv90ZguV.js b/assets/index-CJZBs9WT.js similarity index 99% rename from assets/index-Dv90ZguV.js rename to assets/index-CJZBs9WT.js index 67c5b32..35c1362 100644 --- a/assets/index-Dv90ZguV.js +++ b/assets/index-CJZBs9WT.js @@ -265,4 +265,4 @@ class Trader: return result, conversions, trader_data `.trim();return ce.jsx($s,{children:ce.jsxs(ad,{children:[ce.jsx(Cs,{title:"Welcome!",children:ce.jsxs(Ke,{children:["IMC Prosperity 2 Visualizer is a visualizer for ",ce.jsx(Di,{href:"https://prosperity.imc.com/",target:"_blank",rel:"noreferrer",children:"IMC Prosperity 2"})," algorithms. Its source code is available in the ",ce.jsx(Di,{href:"https://github.com/jmerle/imc-prosperity-2-visualizer",target:"_blank",rel:"noreferrer",children:"jmerle/imc-prosperity-2-visualizer"})," GitHub repository. It is based on the ",ce.jsx(Di,{href:"https://jmerle.github.io/imc-prosperity-visualizer/",target:"_blank",rel:"noreferrer",children:"IMC Prosperity 1 visualizer"})," by the same author. Load an algorithm below to get started."]})}),ce.jsxs(Cs,{title:"Prerequisites",children:[ce.jsxs(Ke,{children:["IMC Prosperity 2 Visualizer assumes your algorithm logs in a certain format. Algorithms that use a different logging format may cause unexpected errors when opening them in the visualizer. Please use the following boilerplate for your algorithm (or adapt your algorithm to use the logger from this code) and use"," ",ce.jsx(oi,{children:"logger.print()"})," where you would normally use ",ce.jsx(oi,{children:"print()"}),":"]}),ce.jsx(Ai,{code:e,language:"python"})]}),ce.jsx(hq,{}),ce.jsx(T3,{}),ce.jsx(C3,{})]})})}function yd({title:e,children:t,...n}){return ce.jsxs(Kc,{withBorder:!0,shadow:"xs",p:"md",...n,children:[e&&ce.jsx(ct,{order:4,mb:"xs",children:e}),t]})}function x3(){const t=ut(i=>i.algorithm).summary,n=Zr(async()=>{await Pw(t.id)}),r=Zr(async()=>{await kw(t.id)});return ce.jsx(yd,{title:"Algorithm summary",children:ce.jsxs(We,{columns:2,children:[ce.jsx(We.Col,{span:{xs:2,sm:1},children:ce.jsxs(We,{columns:2,children:[ce.jsxs(We.Col,{span:1,children:[ce.jsx(ct,{order:5,children:"Id"}),ce.jsx(Ke,{children:t.id})]}),ce.jsxs(We.Col,{span:1,children:[ce.jsx(ct,{order:5,children:"File name"}),ce.jsx(Ke,{children:t.fileName})]}),ce.jsxs(We.Col,{span:1,children:[ce.jsx(ct,{order:5,children:"Submitted at"}),ce.jsx(Ke,{children:Rc(t.timestamp)})]}),ce.jsxs(We.Col,{span:1,children:[ce.jsx(ct,{order:5,children:"Submitted by"}),ce.jsxs(Ke,{children:[t.user.firstName," ",t.user.lastName]})]}),ce.jsxs(We.Col,{span:1,children:[ce.jsx(ct,{order:5,children:"Status"}),ce.jsx(Ke,{children:t.status})]}),ce.jsxs(We.Col,{span:1,children:[ce.jsx(ct,{order:5,children:"Round"}),ce.jsx(Ke,{children:t.round})]}),ce.jsxs(We.Col,{span:1,children:[ce.jsx(ct,{order:5,children:"Selected for round"}),ce.jsx(Ke,{children:t.selectedForRound?"Yes":"No"})]})]})}),ce.jsxs(We.Col,{span:{xs:2,sm:1},children:[ce.jsx(ct,{order:5,children:"Content"}),ce.jsx(Ai,{code:t.content,language:"python"})]}),ce.jsx(We.Col,{span:2,children:ce.jsxs(ta,{grow:!0,children:[ce.jsx(lr,{variant:"outline",onClick:n.call,loading:n.loading,children:"Download logs"}),ce.jsx(lr,{variant:"outline",onClick:r.call,loading:r.loading,children:"Download results"})]})})]})})}function An(e){return`rgba(39, 174, 96, ${e})`}function Nn(e){return`rgba(192, 57, 43, ${e})`}var Hw={exports:{}};(function(e){(function(t,n){e.exports?(n.default=n,e.exports=t&&t.document?n(t):n):(t.Highcharts&&t.Highcharts.error(16,!0),t.Highcharts=n(t))})(typeof window<"u"?window:uo,function(t){var n={};function r(i,o,a,s){i.hasOwnProperty(o)||(i[o]=s.apply(null,a),typeof CustomEvent=="function"&&t.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:o,module:i[o]}})))}return r(n,"Core/Globals.js",[],function(){var i,o;return(o=i||(i={})).SVG_NS="http://www.w3.org/2000/svg",o.product="Highcharts",o.version="11.4.0",o.win=t!==void 0?t:{},o.doc=o.win.document,o.svg=o.doc&&o.doc.createElementNS&&!!o.doc.createElementNS(o.SVG_NS,"svg").createSVGRect,o.userAgent=o.win.navigator&&o.win.navigator.userAgent||"",o.isChrome=o.userAgent.indexOf("Chrome")!==-1,o.isFirefox=o.userAgent.indexOf("Firefox")!==-1,o.isMS=/(edge|msie|trident)/i.test(o.userAgent)&&!o.win.opera,o.isSafari=!o.isChrome&&o.userAgent.indexOf("Safari")!==-1,o.isTouchDevice=/(Mobile|Android|Windows Phone)/.test(o.userAgent),o.isWebKit=o.userAgent.indexOf("AppleWebKit")!==-1,o.deg2rad=2*Math.PI/360,o.hasBidiBug=o.isFirefox&&4>parseInt(o.userAgent.split("Firefox/")[1],10),o.marginNames=["plotTop","marginRight","marginBottom","plotLeft"],o.noop=function(){},o.supportsPassiveEvents=function(){let a=!1;if(!o.isMS){let s=Object.defineProperty({},"passive",{get:function(){a=!0}});o.win.addEventListener&&o.win.removeEventListener&&(o.win.addEventListener("testPassive",o.noop,s),o.win.removeEventListener("testPassive",o.noop,s))}return a}(),o.charts=[],o.composed=[],o.dateFormats={},o.seriesTypes={},o.symbolSizes={},o.chartCount=0,i}),r(n,"Core/Utilities.js",[n["Core/Globals.js"]],function(i){let o,{charts:a,doc:s,win:l}=i;function u(v,p,c,h){let T=p?"Highcharts error":"Highcharts warning";v===32&&(v=`${T}: Deprecated member`);let I=C(v),P=I?`${T} #${v}: www.highcharts.com/errors/${v}/`:v.toString();if(h!==void 0){let w="";I&&(P+="?"),M(h,function(U,$){w+=` - ${$}: ${U}`,I&&(P+=encodeURI($)+"="+encodeURI(U))}),P+=w}N(i,"displayError",{chart:c,code:v,message:P,params:h},function(){if(p)throw Error(P);l.console&&u.messages.indexOf(P)===-1&&console.warn(P)}),u.messages.push(P)}function _(v,p){return parseInt(v,p||10)}function g(v){return typeof v=="string"}function b(v){let p=Object.prototype.toString.call(v);return p==="[object Array]"||p==="[object Array Iterator]"}function R(v,p){return!!v&&typeof v=="object"&&(!p||!b(v))}function m(v){return R(v)&&typeof v.nodeType=="number"}function E(v){let p=v&&v.constructor;return!!(R(v,!0)&&!m(v)&&p&&p.name&&p.name!=="Object")}function C(v){return typeof v=="number"&&!isNaN(v)&&v<1/0&&v>-1/0}function y(v){return v!=null}function d(v,p,c){let h,T=g(p)&&!y(c),I=(P,w)=>{y(P)?v.setAttribute(w,P):T?(h=v.getAttribute(w))||w!=="class"||(h=v.getAttribute(w+"Name")):v.removeAttribute(w)};return g(p)?I(c,p):M(p,I),h}function f(v){return b(v)?v:[v]}function S(v,p){let c;for(c in v||(v={}),p)v[c]=p[c];return v}function O(){let v=arguments,p=v.length;for(let c=0;c1e14?v:parseFloat(v.toPrecision(p||14))}(u||(u={})).messages=[],Math.easeInOutSine=function(v){return-.5*(Math.cos(Math.PI*v)-1)};let k=Array.prototype.find?function(v,p){return v.find(p)}:function(v,p){let c,h=v.length;for(c=0;cw.order-U.order),T.forEach(w=>{w.fn.call(v,c)===!1&&c.preventDefault()})}h&&!c.defaultPrevented&&h.call(v,c)}M({map:"map",each:"forEach",grep:"filter",reduce:"reduce",some:"some"},function(v,p){i[p]=function(c){return u(32,!1,void 0,{[`Highcharts.${p}`]:`use Array.${v}`}),Array.prototype[v].apply(c,[].slice.call(arguments,1))}});let L=function(){let v=Math.random().toString(36).substring(2,9)+"-",p=0;return function(){return"highcharts-"+(o?"":v)+p++}}();return l.jQuery&&(l.jQuery.fn.highcharts=function(){let v=[].slice.call(arguments);if(this[0])return v[0]?(new i[g(v[0])?v.shift():"Chart"](this[0],v[0],v[1]),this):a[d(this[0],"data-highcharts-chart")]}),{addEvent:function(v,p,c,h={}){let T=typeof v=="function"&&v.prototype||v;Object.hasOwnProperty.call(T,"hcEvents")||(T.hcEvents={});let I=T.hcEvents;i.Point&&v instanceof i.Point&&v.series&&v.series.chart&&(v.series.chart.runTrackerClick=!0);let P=v.addEventListener;P&&P.call(v,p,c,!!i.supportsPassiveEvents&&{passive:h.passive===void 0?p.indexOf("touch")!==-1:h.passive,capture:!1}),I[p]||(I[p]=[]);let w={fn:c,order:typeof h.order=="number"?h.order:1/0};return I[p].push(w),I[p].sort((U,$)=>U.order-$.order),function(){A(v,p,c)}},arrayMax:function(v){let p=v.length,c=v[0];for(;p--;)v[p]>c&&(c=v[p]);return c},arrayMin:function(v){let p=v.length,c=v[0];for(;p--;)v[p]p?v-1&&w[z]){W=f(W),U[z]=[];for(let Q=0;Q{if(P.length>1)for(T=P.length-1;T>0;T--)(h=P[T]-P[T-1])<0&&!I?(p==null||p(),p=void 0):h&&(c===void 0||h=P-1&&(P=Math.floor(w)),Math.max(0,P-(v(p,"padding-left",!0)||0)-(v(p,"padding-right",!0)||0))}if(c==="height")return Math.max(0,Math.min(p.offsetHeight,p.scrollHeight)-(v(p,"padding-top",!0)||0)-(v(p,"padding-bottom",!0)||0));let I=l.getComputedStyle(p,void 0);return I&&(T=I.getPropertyValue(c),O(h,c!=="opacity")&&(T=_(T))),T},inArray:function(v,p,c){return u(32,!1,void 0,{"Highcharts.inArray":"use Array.indexOf"}),p.indexOf(v,c)},insertItem:function(v,p){let c,h=v.options.index,T=p.length;for(c=v.options.isInternal?T:0;c=v))&&(T||!(w<=(p[I]+(p[I+1]||p[I]))/2)));I++);return F(P*c,-Math.round(Math.log(.001)/Math.LN10))},objectEach:M,offset:function(v){let p=s.documentElement,c=v.parentElement||v.parentNode?v.getBoundingClientRect():{top:0,left:0,width:0,height:0};return{top:c.top+(l.pageYOffset||p.scrollTop)-(p.clientTop||0),left:c.left+(l.pageXOffset||p.scrollLeft)-(p.clientLeft||0),width:c.width,height:c.height}},pad:function(v,p,c){return Array((p||2)+1-String(v).replace("-","").length).join(c||"0")+v},pick:O,pInt:_,pushUnique:function(v,p){return 0>v.indexOf(p)&&!!v.push(p)},relativeLength:function(v,p,c){return/%$/.test(v)?p*parseFloat(v)/100+(c||0):parseFloat(v)},removeEvent:A,replaceNested:function(v,...p){let c,h;do for(h of(c=v,p))v=v.replace(h[0],h[1]);while(v!==c);return v},splat:f,stableSort:function(v,p){let c,h,T=v.length;for(h=0;h0?setTimeout(v,p,c):(v.call(0,c),-1)},timeUnits:{millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,week:6048e5,month:24192e5,year:314496e5},uniqueKey:L,useSerialIds:function(v){return o=O(v,o)},wrap:function(v,p,c){let h=v[p];v[p]=function(){let T=arguments,I=this;return c.apply(this,[function(){return h.apply(I,arguments.length?arguments:T)}].concat([].slice.call(arguments)))}}}}),r(n,"Core/Chart/ChartDefaults.js",[],function(){return{alignThresholds:!1,panning:{enabled:!1,type:"x"},styledMode:!1,borderRadius:0,colorCount:10,allowMutatingData:!0,ignoreHiddenSeries:!0,spacing:[10,10,15,10],resetZoomButton:{theme:{},position:{}},reflow:!0,type:"line",zooming:{singleTouch:!1,resetButton:{theme:{zIndex:6},position:{align:"right",x:-10,y:10}}},width:null,height:null,borderColor:"#334eff",backgroundColor:"#ffffff",plotBorderColor:"#cccccc"}}),r(n,"Core/Color/Palettes.js",[],function(){return{colors:["#2caffe","#544fc5","#00e272","#fe6a35","#6b8abc","#d568fb","#2ee0ca","#fa4b42","#feb56a","#91e8e1"]}}),r(n,"Core/Time.js",[n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o){let{win:a}=i,{defined:s,error:l,extend:u,isNumber:_,isObject:g,merge:b,objectEach:R,pad:m,pick:E,splat:C,timeUnits:y}=o,d=i.isSafari&&a.Intl&&a.Intl.DateTimeFormat.prototype.formatRange,f=i.isSafari&&a.Intl&&!a.Intl.DateTimeFormat.prototype.formatRange;class S{constructor(x){this.options={},this.useUTC=!1,this.variableTimezone=!1,this.Date=a.Date,this.getTimezoneOffset=this.timezoneOffsetFunction(),this.update(x)}get(x,D){if(this.variableTimezone||this.timezoneOffset){let F=D.getTime(),k=F-this.getTimezoneOffset(D);D.setTime(k);let M=D["getUTC"+x]();return D.setTime(F),M}return this.useUTC?D["getUTC"+x]():D["get"+x]()}set(x,D,F){if(this.variableTimezone||this.timezoneOffset){if(x==="Milliseconds"||x==="Seconds"||x==="Minutes"&&this.getTimezoneOffset(D)%36e5==0)return D["setUTC"+x](F);let k=this.getTimezoneOffset(D),M=D.getTime()-k;D.setTime(M),D["setUTC"+x](F);let A=this.getTimezoneOffset(D);return M=D.getTime()+A,D.setTime(M)}return this.useUTC||d&&x==="FullYear"?D["setUTC"+x](F):D["set"+x](F)}update(x={}){let D=E(x.useUTC,!0);this.options=x=b(!0,this.options,x),this.Date=x.Date||a.Date||Date,this.useUTC=D,this.timezoneOffset=D&&x.timezoneOffset||void 0,this.getTimezoneOffset=this.timezoneOffsetFunction(),this.variableTimezone=D&&!!(x.getTimezoneOffset||x.timezone)}makeTime(x,D,F,k,M,A){let N,L,v;return this.useUTC?(N=this.Date.UTC.apply(0,arguments),L=this.getTimezoneOffset(N),N+=L,L!==(v=this.getTimezoneOffset(N))?N+=v-L:L-36e5!==this.getTimezoneOffset(N-36e5)||f||(N-=36e5)):N=new this.Date(x,D,E(F,1),E(k,0),E(M,0),E(A,0)).getTime(),N}timezoneOffsetFunction(){let x=this,D=this.options,F=D.getTimezoneOffset;return this.useUTC?D.timezone?k=>{try{let M=`shortOffset,${D.timezone||""}`,[A,N,L,v,p=0]=(S.formatCache[M]=S.formatCache[M]||Intl.DateTimeFormat("en",{timeZone:D.timezone,timeZoneName:"shortOffset"})).format(k).split(/(GMT|:)/).map(Number),c=-(36e5*(L+p/60));if(_(c))return c}catch{l(34)}return 0}:this.useUTC&&F?k=>6e4*F(k.valueOf()):()=>6e4*(x.timezoneOffset||0):k=>6e4*new Date(k.toString()).getTimezoneOffset()}dateFormat(x,D,F){if(!s(D)||isNaN(D))return i.defaultOptions.lang&&i.defaultOptions.lang.invalidDate||"";x=E(x,"%Y-%m-%d %H:%M:%S");let k=this,M=new this.Date(D),A=this.get("Hours",M),N=this.get("Day",M),L=this.get("Date",M),v=this.get("Month",M),p=this.get("FullYear",M),c=i.defaultOptions.lang,h=c&&c.weekdays,T=c&&c.shortWeekdays;return R(u({a:T?T[N]:h[N].substr(0,3),A:h[N],d:m(L),e:m(L,2," "),w:N,b:c.shortMonths[v],B:c.months[v],m:m(v+1),o:v+1,y:p.toString().substr(2,2),Y:p,H:m(A),k:A,I:m(A%12||12),l:A%12||12,M:m(this.get("Minutes",M)),p:A<12?"AM":"PM",P:A<12?"am":"pm",S:m(this.get("Seconds",M)),L:m(Math.floor(D%1e3),3)},i.dateFormats),function(I,P){for(;x.indexOf("%"+P)!==-1;)x=x.replace("%"+P,typeof I=="function"?I.call(k,D):I)}),F?x.substr(0,1).toUpperCase()+x.substr(1):x}resolveDTLFormat(x){return g(x,!0)?x:{main:(x=C(x))[0],from:x[1],to:x[2]}}getTimeTicks(x,D,F,k){let M,A,N,L,v=this,p=v.Date,c=[],h={},T=new p(D),I=x.unitRange,P=x.count||1;if(k=E(k,1),s(D)){v.set("Milliseconds",T,I>=y.second?0:P*Math.floor(v.get("Milliseconds",T)/P)),I>=y.second&&v.set("Seconds",T,I>=y.minute?0:P*Math.floor(v.get("Seconds",T)/P)),I>=y.minute&&v.set("Minutes",T,I>=y.hour?0:P*Math.floor(v.get("Minutes",T)/P)),I>=y.hour&&v.set("Hours",T,I>=y.day?0:P*Math.floor(v.get("Hours",T)/P)),I>=y.day&&v.set("Date",T,I>=y.month?1:Math.max(1,P*Math.floor(v.get("Date",T)/P))),I>=y.month&&(v.set("Month",T,I>=y.year?0:P*Math.floor(v.get("Month",T)/P)),A=v.get("FullYear",T)),I>=y.year&&(A-=A%P,v.set("FullYear",T,A)),I===y.week&&(L=v.get("Day",T),v.set("Date",T,v.get("Date",T)-L+k+(L4*y.month||v.getTimezoneOffset(D)!==v.getTimezoneOffset(F));let Y=T.getTime();for(M=1;Y1?Y=v.makeTime(A,w,U,$+M*P):Y+=I*P,M++;c.push(Y),I<=y.hour&&c.length<1e4&&c.forEach(function(W){W%18e5==0&&v.dateFormat("%H%M%S%L",W)==="000000000"&&(h[W]="day")})}return c.info=u(x,{higherRanks:h,totalRange:I*P}),c}getDateFormat(x,D,F,k){let M=this.dateFormat("%m-%d %H:%M:%S.%L",D),A="01-01 00:00:00.000",N={millisecond:15,second:12,minute:9,hour:6,day:3},L="millisecond",v=L;for(L in y){if(x===y.week&&+this.dateFormat("%w",D)===F&&M.substr(6)===A.substr(6)){L="week";break}if(y[L]>x){L=v;break}if(N[L]&&M.substr(N[L])!==A.substr(N[L]))break;L!=="week"&&(v=L)}return this.resolveDTLFormat(k[L]).main}}return S.formatCache={},S}),r(n,"Core/Defaults.js",[n["Core/Chart/ChartDefaults.js"],n["Core/Globals.js"],n["Core/Color/Palettes.js"],n["Core/Time.js"],n["Core/Utilities.js"]],function(i,o,a,s,l){let{isTouchDevice:u,svg:_}=o,{merge:g}=l,b={colors:a.colors,symbols:["circle","diamond","square","triangle","triangle-down"],lang:{loading:"Loading...",months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],weekdays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],decimalPoint:".",numericSymbols:["k","M","G","T","P","E"],resetZoom:"Reset zoom",resetZoomTitle:"Reset zoom level 1:1",thousandsSep:" "},global:{},time:{Date:void 0,getTimezoneOffset:void 0,timezone:void 0,timezoneOffset:0,useUTC:!0},chart:i,title:{style:{color:"#333333",fontWeight:"bold"},text:"Chart title",align:"center",margin:15,widthAdjust:-44},subtitle:{style:{color:"#666666",fontSize:"0.8em"},text:"",align:"center",widthAdjust:-44},caption:{margin:15,style:{color:"#666666",fontSize:"0.8em"},text:"",align:"left",verticalAlign:"bottom"},plotOptions:{},legend:{enabled:!0,align:"center",alignColumns:!0,className:"highcharts-no-tooltip",layout:"horizontal",itemMarginBottom:2,itemMarginTop:2,labelFormatter:function(){return this.name},borderColor:"#999999",borderRadius:0,navigation:{style:{fontSize:"0.8em"},activeColor:"#0022ff",inactiveColor:"#cccccc"},itemStyle:{color:"#333333",cursor:"pointer",fontSize:"0.8em",textDecoration:"none",textOverflow:"ellipsis"},itemHoverStyle:{color:"#000000"},itemHiddenStyle:{color:"#666666",textDecoration:"line-through"},shadow:!1,itemCheckboxStyle:{position:"absolute",width:"13px",height:"13px"},squareSymbol:!0,symbolPadding:5,verticalAlign:"bottom",x:0,y:0,title:{style:{fontSize:"0.8em",fontWeight:"bold"}}},loading:{labelStyle:{fontWeight:"bold",position:"relative",top:"45%"},style:{position:"absolute",backgroundColor:"#ffffff",opacity:.5,textAlign:"center"}},tooltip:{enabled:!0,animation:_,borderRadius:3,dateTimeLabelFormats:{millisecond:"%A, %e %b, %H:%M:%S.%L",second:"%A, %e %b, %H:%M:%S",minute:"%A, %e %b, %H:%M",hour:"%A, %e %b, %H:%M",day:"%A, %e %b %Y",week:"Week from %A, %e %b %Y",month:"%B %Y",year:"%Y"},footerFormat:"",headerShape:"callout",hideDelay:500,padding:8,shape:"callout",shared:!1,snap:u?25:10,headerFormat:'{point.key}
',pointFormat:' {series.name}: {point.y}
',backgroundColor:"#ffffff",borderWidth:void 0,shadow:!0,stickOnContact:!1,style:{color:"#333333",cursor:"default",fontSize:"0.8em"},useHTML:!1},credits:{enabled:!0,href:"https://www.highcharts.com?credits",position:{align:"right",x:-10,verticalAlign:"bottom",y:-5},style:{cursor:"pointer",color:"#999999",fontSize:"0.6em"},text:"Highcharts.com"}};b.chart.styledMode=!1;let R=new s(b.time);return{defaultOptions:b,defaultTime:R,getOptions:function(){return b},setOptions:function(m){return g(!0,b,m),(m.time||m.global)&&(o.time?o.time.update(g(b.global,b.time,m.global,m.time)):o.time=R),b}}}),r(n,"Core/Color/Color.js",[n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o){let{isNumber:a,merge:s,pInt:l}=o;class u{static parse(g){return g?new u(g):u.None}constructor(g){let b,R,m,E;this.rgba=[NaN,NaN,NaN,NaN],this.input=g;let C=i.Color;if(C&&C!==u)return new C(g);if(typeof g=="object"&&g.stops!==void 0)this.stops=g.stops.map(y=>new u(y[1]));else if(typeof g=="string"){if(this.input=g=u.names[g.toLowerCase()]||g,g.charAt(0)==="#"){let y=g.length,d=parseInt(g.substr(1),16);y===7?R=[(16711680&d)>>16,(65280&d)>>8,255&d,1]:y===4&&(R=[(3840&d)>>4|(3840&d)>>8,(240&d)>>4|240&d,(15&d)<<4|15&d,1])}if(!R)for(m=u.parsers.length;m--&&!R;)(b=(E=u.parsers[m]).regex.exec(g))&&(R=E.parse(b))}R&&(this.rgba=R)}get(g){let b=this.input,R=this.rgba;if(typeof b=="object"&&this.stops!==void 0){let m=s(b);return m.stops=[].slice.call(m.stops),this.stops.forEach((E,C)=>{m.stops[C]=[m.stops[C][0],E.get(g)]}),m}return R&&a(R[0])?g!=="rgb"&&(g||R[3]!==1)?g==="a"?`${R[3]}`:"rgba("+R.join(",")+")":"rgb("+R[0]+","+R[1]+","+R[2]+")":b}brighten(g){let b=this.rgba;if(this.stops)this.stops.forEach(function(R){R.brighten(g)});else if(a(g)&&g!==0)for(let R=0;R<3;R++)b[R]+=l(255*g),b[R]<0&&(b[R]=0),b[R]>255&&(b[R]=255);return this}setOpacity(g){return this.rgba[3]=g,this}tweenTo(g,b){let R=this.rgba,m=g.rgba;if(!a(R[0])||!a(m[0]))return g.input||"none";let E=m[3]!==1||R[3]!==1;return(E?"rgba(":"rgb(")+Math.round(m[0]+(R[0]-m[0])*(1-b))+","+Math.round(m[1]+(R[1]-m[1])*(1-b))+","+Math.round(m[2]+(R[2]-m[2])*(1-b))+(E?","+(m[3]+(R[3]-m[3])*(1-b)):"")+")"}}return u.names={white:"#ffffff",black:"#000000"},u.parsers=[{regex:/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,parse:function(_){return[l(_[1]),l(_[2]),l(_[3]),parseFloat(_[4],10)]}},{regex:/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,parse:function(_){return[l(_[1]),l(_[2]),l(_[3]),1]}}],u.None=new u(""),u}),r(n,"Core/Animation/Fx.js",[n["Core/Color/Color.js"],n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o,a){let{parse:s}=i,{win:l}=o,{isNumber:u,objectEach:_}=a;class g{constructor(R,m,E){this.pos=NaN,this.options=m,this.elem=R,this.prop=E}dSetter(){let R=this.paths,m=R&&R[0],E=R&&R[1],C=this.now||0,y=[];if(C!==1&&m&&E)if(m.length===E.length&&C<1)for(let d=0;d=S+this.startTime?(this.now=this.end,this.pos=1,this.update(),O[this.prop]=!0,E=!0,_(O,function(x){x!==!0&&(E=!1)}),E&&f&&f.call(d),m=!1):(this.pos=y.easing((C-this.startTime)/S),this.now=this.start+(this.end-this.start)*this.pos,this.update(),m=!0),m}initPath(R,m,E){let C=R.startX,y=R.endX,d=E.slice(),f=R.isArea,S=f?2:1,O,x,D,F,k=m&&m.slice();if(!k)return[d,d];function M(N,L){for(;N.length{let F=m(D.options.animation);O=_(y)&&a(y.defer)?f.defer:Math.max(O,F.duration+F.defer),x=Math.min(f.duration,F.duration)}),C.renderer.forExport&&(O=0),{defer:Math.max(0,O-x),duration:Math.min(O,x)}},setAnimation:function(C,y){y.renderer.globalAnimation=R(C,y.options.chart.animation,!0)},stop:E}}),r(n,"Core/Renderer/HTML/AST.js",[n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o){let{SVG_NS:a,win:s}=i,{attr:l,createElement:u,css:_,error:g,isFunction:b,isString:R,objectEach:m,splat:E}=o,{trustedTypes:C}=s,y=C&&b(C.createPolicy)&&C.createPolicy("highcharts",{createHTML:O=>O}),d=y?y.createHTML(""):"",f=function(){try{return!!new DOMParser().parseFromString(d,"text/html")}catch{return!1}}();class S{static filterUserAttributes(x){return m(x,(D,F)=>{let k=!0;S.allowedAttributes.indexOf(F)===-1&&(k=!1),["background","dynsrc","href","lowsrc","src"].indexOf(F)!==-1&&(k=R(D)&&S.allowedReferences.some(M=>D.indexOf(M)===0)),k||(g(33,!1,void 0,{"Invalid attribute in config":`${F}`}),delete x[F]),R(D)&&x[F]&&(x[F]=D.replace(/{let k=F.split(":").map(A=>A.trim()),M=k.shift();return M&&k.length&&(D[M.replace(/-([a-z])/g,A=>A[1].toUpperCase())]=k.join(":")),D},{})}static setElementHTML(x,D){x.innerHTML=S.emptyHTML,D&&new S(D).addToDOM(x)}constructor(x){this.nodes=typeof x=="string"?this.parseMarkup(x):x}addToDOM(x){return function D(F,k){let M;return E(F).forEach(function(A){let N,L=A.tagName,v=A.textContent?i.doc.createTextNode(A.textContent):void 0,p=S.bypassHTMLFiltering;if(L)if(L==="#text")N=v;else if(S.allowedTags.indexOf(L)!==-1||p){let c=L==="svg"?a:k.namespaceURI||a,h=i.doc.createElementNS(c,L),T=A.attributes||{};m(A,function(I,P){P!=="tagName"&&P!=="attributes"&&P!=="children"&&P!=="style"&&P!=="textContent"&&(T[P]=I)}),l(h,p?T:S.filterUserAttributes(T)),A.style&&_(h,A.style),v&&h.appendChild(v),D(A.children||[],h),N=h}else g(33,!1,void 0,{"Invalid tagName in config":L});N&&k.appendChild(N),M=N}),M}(this.nodes,x)}parseMarkup(x){let D,F=[];if(x=x.trim().replace(/ style=(["'])/g," data-style=$1"),f)D=new DOMParser().parseFromString(y?y.createHTML(x):x,"text/html");else{let M=u("div");M.innerHTML=x,D={body:M}}let k=(M,A)=>{let N=M.nodeName.toLowerCase(),L={tagName:N};N==="#text"&&(L.textContent=M.textContent||"");let v=M.attributes;if(v){let p={};[].forEach.call(v,c=>{c.name==="data-style"?L.style=S.parseStyle(c.value):p[c.name]=c.value}),L.attributes=p}if(M.childNodes.length){let p=[];[].forEach.call(M.childNodes,c=>{k(c,p)}),p.length&&(L.children=p)}A.push(L)};return[].forEach.call(D.body.childNodes,M=>k(M,F)),F}}return S.allowedAttributes=["alt","aria-controls","aria-describedby","aria-expanded","aria-haspopup","aria-hidden","aria-label","aria-labelledby","aria-live","aria-pressed","aria-readonly","aria-roledescription","aria-selected","class","clip-path","color","colspan","cx","cy","d","dx","dy","disabled","fill","filterUnits","flood-color","flood-opacity","height","href","id","in","markerHeight","markerWidth","offset","opacity","orient","padding","paddingLeft","paddingRight","patternUnits","r","refX","refY","role","scope","slope","src","startOffset","stdDeviation","stroke","stroke-linecap","stroke-width","style","tableValues","result","rowspan","summary","target","tabindex","text-align","text-anchor","textAnchor","textLength","title","type","valign","width","x","x1","x2","xlink:href","y","y1","y2","zIndex"],S.allowedReferences=["https://","http://","mailto:","/","../","./","#"],S.allowedTags=["a","abbr","b","br","button","caption","circle","clipPath","code","dd","defs","div","dl","dt","em","feComponentTransfer","feDropShadow","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feOffset","feMerge","feMergeNode","filter","h1","h2","h3","h4","h5","h6","hr","i","img","li","linearGradient","marker","ol","p","path","pattern","pre","rect","small","span","stop","strong","style","sub","sup","svg","table","text","textPath","thead","title","tbody","tspan","td","th","tr","u","ul","#text"],S.emptyHTML=d,S.bypassHTMLFiltering=!1,S}),r(n,"Core/Templating.js",[n["Core/Defaults.js"],n["Core/Utilities.js"]],function(i,o){let{defaultOptions:a,defaultTime:s}=i,{extend:l,getNestedProperty:u,isArray:_,isNumber:g,isObject:b,pick:R,pInt:m}=o,E={add:(d,f)=>d+f,divide:(d,f)=>f!==0?d/f:"",eq:(d,f)=>d==f,each:function(d){let f=arguments[arguments.length-1];return!!_(d)&&d.map((S,O)=>C(f.body,l(b(S)?S:{"@this":S},{"@index":O,"@first":O===0,"@last":O===d.length-1}))).join("")},ge:(d,f)=>d>=f,gt:(d,f)=>d>f,if:d=>!!d,le:(d,f)=>d<=f,lt:(d,f)=>dd*f,ne:(d,f)=>d!=f,subtract:(d,f)=>d-f,unless:d=>!d};function C(d="",f,S){let O=/\{([a-zA-Z0-9\:\.\,;\-\/<>%_@"'= #\(\)]+)\}/g,x=/\(([a-zA-Z0-9\:\.\,;\-\/<>%_@"'= ]+)\)/g,D=[],F=/f$/,k=/\.([0-9])/,M=a.lang,A=S&&S.time||s,N=S&&S.numberFormatter||y,L=(T="")=>{let I;return T==="true"||T!=="false"&&((I=Number(T)).toString()===T?I:u(T,f))},v,p,c=0,h;for(;(v=O.exec(d))!==null;){let T=x.exec(v[1]);T&&(v=T,h=!0),p&&p.isBlock||(p={ctx:f,expression:v[1],find:v[0],isBlock:v[1].charAt(0)==="#",start:v.index,startInner:v.index+v[0].length,length:v[0].length});let I=v[1].split(" ")[0].replace("#","");E[I]&&(p.isBlock&&I===p.fn&&c++,p.fn||(p.fn=I));let P=v[1]==="else";if(p.isBlock&&p.fn&&(v[1]===`/${p.fn}`||P))if(c)!P&&c--;else{let w=p.startInner,U=d.substr(w,v.index-w);p.body===void 0?(p.body=U,p.startInner=v.index+v[0].length):p.elseBody=U,p.find+=U+v[0],P||(D.push(p),p=void 0)}else p.isBlock||D.push(p);if(T&&!(p!=null&&p.isBlock))break}return D.forEach(T=>{let I,P,{body:w,elseBody:U,expression:$,fn:Y}=T;if(Y){let W=[T],z=$.split(" ");for(P=E[Y].length;P--;)W.unshift(L(z[P+1]));I=E[Y].apply(f,W),T.isBlock&&typeof I=="boolean"&&(I=C(I?w:U,f))}else{let W=$.split(":");if(I=L(W.shift()||""),W.length&&typeof I=="number"){let z=W.join(":");if(F.test(z)){let Q=parseInt((z.match(k)||["","-1"])[1],10);I!==null&&(I=N(I,Q,M.decimalPoint,z.indexOf(",")>-1?M.thousandsSep:""))}else I=A.dateFormat(z,I)}}d=d.replace(T.find,R(I,""))}),h?C(d,f,S):d}function y(d,f,S,O){let x,D;d=+d||0,f=+f;let F=a.lang,k=(d.toString().split(".")[1]||"").split("e")[0].length,M=d.toString().split("e"),A=f;f===-1?f=Math.min(k,20):g(f)?f&&M[1]&&M[1]<0&&((D=f+ +M[1])>=0?(M[0]=(+M[0]).toExponential(D).split("e")[0],f=D):(M[0]=M[0].split(".")[0]||0,d=f<20?(M[0]*Math.pow(10,M[1])).toFixed(f):0,M[1]=0)):f=2;let N=(Math.abs(M[1]?M[0]:d)+Math.pow(10,-Math.max(f,k)-1)).toFixed(f),L=String(m(N)),v=L.length>3?L.length%3:0;return S=R(S,F.decimalPoint),O=R(O,F.thousandsSep),x=(d<0?"-":"")+(v?L.substr(0,v)+O:""),0>+M[1]&&!A?x="0":x+=L.substr(v).replace(/(\d{3})(?=\d)/g,"$1"+O),f&&(x+=S+N.slice(-f)),M[1]&&+x!=0&&(x+="e"+M[1]),x}return{dateFormat:function(d,f,S){return s.dateFormat(d,f,S)},format:C,helpers:E,numberFormat:y}}),r(n,"Core/Renderer/RendererRegistry.js",[n["Core/Globals.js"]],function(i){var o,a;let s;return(a=o||(o={})).rendererTypes={},a.getRendererType=function(l=s){return a.rendererTypes[l]||a.rendererTypes[s]},a.registerRendererType=function(l,u,_){a.rendererTypes[l]=u,(!s||_)&&(s=l,i.Renderer=u)},o}),r(n,"Core/Renderer/RendererUtilities.js",[n["Core/Utilities.js"]],function(i){var o;let{clamp:a,pick:s,pushUnique:l,stableSort:u}=i;return(o||(o={})).distribute=function _(g,b,R){let m=g,E=m.reducedLen||b,C=(L,v)=>L.target-v.target,y=[],d=g.length,f=[],S=y.push,O,x,D,F=!0,k,M,A=0,N;for(O=d;O--;)A+=g[O].size;if(A>E){for(u(g,(L,v)=>(v.rank||0)-(L.rank||0)),D=(N=g[0].rank===g[g.length-1].rank)?d/2:-1,x=N?D:d-1;D&&A>E;)k=g[O=Math.floor(x)],l(f,O)&&(A-=k.size),x+=D,N&&x>=g.length&&(D/=2,x=D);f.sort((L,v)=>v-L).forEach(L=>S.apply(y,g.splice(L,1)))}for(u(g,C),g=g.map(L=>({size:L.size,targets:[L.target],align:s(L.align,.5)}));F;){for(O=g.length;O--;)k=g[O],M=(Math.min.apply(0,k.targets)+Math.max.apply(0,k.targets))/2,k.pos=a(M-k.size*k.align,0,b-k.size);for(O=g.length,F=!1;O--;)O>0&&g[O-1].pos+g[O-1].size>g[O].pos&&(g[O-1].size+=g[O].size,g[O-1].targets=g[O-1].targets.concat(g[O].targets),g[O-1].align=.5,g[O-1].pos+g[O-1].size>b&&(g[O-1].pos=b-g[O-1].size),g.splice(O,1),F=!0)}return S.apply(m,y),O=0,g.some(L=>{let v=0;return(L.targets||[]).some(()=>(m[O].pos=L.pos+v,R!==void 0&&Math.abs(m[O].pos-m[O].target)>R?(m.slice(0,O+1).forEach(p=>delete p.pos),m.reducedLen=(m.reducedLen||b)-.1*b,m.reducedLen>.1*b&&_(m,b,R),!0):(v+=m[O].size,O++,!1)))}),u(m,C),m},o}),r(n,"Core/Renderer/SVG/SVGElement.js",[n["Core/Animation/AnimationUtilities.js"],n["Core/Color/Color.js"],n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o,a,s){let{animate:l,animObject:u,stop:_}=i,{deg2rad:g,doc:b,svg:R,SVG_NS:m,win:E}=a,{addEvent:C,attr:y,createElement:d,css:f,defined:S,erase:O,extend:x,fireEvent:D,isArray:F,isFunction:k,isObject:M,isString:A,merge:N,objectEach:L,pick:v,pInt:p,replaceNested:c,syncTimeout:h,uniqueKey:T}=s;class I{_defaultGetter(w){let U=v(this[w+"Value"],this[w],this.element?this.element.getAttribute(w):null,0);return/^[\-0-9\.]+$/.test(U)&&(U=parseFloat(U)),U}_defaultSetter(w,U,$){$.setAttribute(U,w)}add(w){let U,$=this.renderer,Y=this.element;return w&&(this.parentGroup=w),this.textStr!==void 0&&this.element.nodeName==="text"&&$.buildText(this),this.added=!0,(!w||w.handleZ||this.zIndex)&&(U=this.zIndexSetter()),U||(w?w.element:$.box).appendChild(Y),this.onAdd&&this.onAdd(),this}addClass(w,U){let $=U?"":this.attr("class")||"";return(w=(w||"").split(/ /g).reduce(function(Y,W){return $.indexOf(W)===-1&&Y.push(W),Y},$?[$]:[]).join(" "))!==$&&this.attr("class",w),this}afterSetters(){this.doTransform&&(this.updateTransform(),this.doTransform=!1)}align(w,U,$,Y=!0){let W,z,Q,B,j,q={},G=this.renderer,V=G.alignedObjects;w?(this.alignOptions=w,this.alignByTranslate=U,(!$||A($))&&(this.alignTo=Q=$||"renderer",O(V,this),V.push(this),$=void 0)):(w=this.alignOptions,U=this.alignByTranslate,Q=this.alignTo),$=v($,G[Q],G);let H=w.align,K=w.verticalAlign;return W=($.x||0)+(w.x||0),z=($.y||0)+(w.y||0),H==="right"?B=1:H==="center"&&(B=2),B&&(W+=($.width-(w.width||0))/B),q[U?"translateX":"x"]=Math.round(W),K==="bottom"?j=1:K==="middle"&&(j=2),j&&(z+=($.height-(w.height||0))/j),q[U?"translateY":"y"]=Math.round(z),Y&&(this[this.placed?"animate":"attr"](q),this.placed=!0),this.alignAttr=q,this}alignSetter(w){let U={left:"start",center:"middle",right:"end"};U[w]&&(this.alignValue=w,this.element.setAttribute("text-anchor",U[w]))}animate(w,U,$){let Y=u(v(U,this.renderer.globalAnimation,!0)),W=Y.defer;return b.hidden&&(Y.duration=0),Y.duration!==0?($&&(Y.complete=$),h(()=>{this.element&&l(this,w,Y)},W)):(this.attr(w,void 0,$||Y.complete),L(w,function(z,Q){Y.step&&Y.step.call(this,z,{prop:Q,pos:1,elem:this})},this)),this}applyTextOutline(w){let U=this.element;w.indexOf("contrast")!==-1&&(w=w.replace(/contrast/g,this.renderer.getContrast(U.style.fill)));let $=w.split(" "),Y=$[$.length-1],W=$[0];if(W&&W!=="none"&&a.svg){this.fakeTS=!0,W=W.replace(/(^[\d\.]+)(.*?)$/g,function(q,G,V){return 2*Number(G)+V}),this.removeTextOutline();let z=b.createElementNS(m,"tspan");y(z,{class:"highcharts-text-outline",fill:Y,stroke:Y,"stroke-width":W,"stroke-linejoin":"round"});let Q=U.querySelector("textPath")||U;[].forEach.call(Q.childNodes,q=>{let G=q.cloneNode(!0);G.removeAttribute&&["fill","stroke","stroke-width","stroke"].forEach(V=>G.removeAttribute(V)),z.appendChild(G)});let B=0;[].forEach.call(Q.querySelectorAll("text tspan"),q=>{B+=Number(q.getAttribute("dy"))});let j=b.createElementNS(m,"tspan");j.textContent="​",y(j,{x:Number(U.getAttribute("x")),dy:-B}),z.appendChild(j),Q.insertBefore(z,Q.firstChild)}}attr(w,U,$,Y){let W=this.element,z=I.symbolCustomAttribs,Q,B,j=this,q;return typeof w=="string"&&U!==void 0&&(Q=w,(w={})[Q]=U),typeof w=="string"?j=(this[w+"Getter"]||this._defaultGetter).call(this,w,W):(L(w,function(G,V){q=!1,Y||_(this,V),this.symbolName&&z.indexOf(V)!==-1&&(B||(this.symbolAttr(w),B=!0),q=!0),this.rotation&&(V==="x"||V==="y")&&(this.doTransform=!0),q||(this[V+"Setter"]||this._defaultSetter).call(this,G,V,W)},this),this.afterSetters()),$&&$.call(this),j}clip(w){if(w&&!w.clipPath){let U=T()+"-",$=this.renderer.createElement("clipPath").attr({id:U}).add(this.renderer.defs);x(w,{clipPath:$,id:U,count:0}),w.add($)}return this.attr("clip-path",w?`url(${this.renderer.url}#${w.id})`:"none")}crisp(w,U){let $=Math.round(U=U||w.strokeWidth||0)%2/2;return w.x=Math.floor(w.x||this.x||0)+$,w.y=Math.floor(w.y||this.y||0)+$,w.width=Math.floor((w.width||this.width||0)-2*$),w.height=Math.floor((w.height||this.height||0)-2*$),S(w.strokeWidth)&&(w.strokeWidth=U),w}complexColor(w,U,$){let Y=this.renderer,W,z,Q,B,j,q,G,V,H,K,X=[],ee;D(this.renderer,"complexColor",{args:arguments},function(){if(w.radialGradient?z="radialGradient":w.linearGradient&&(z="linearGradient"),z){if(Q=w[z],j=Y.gradients,q=w.stops,H=$.radialReference,F(Q)&&(w[z]=Q={x1:Q[0],y1:Q[1],x2:Q[2],y2:Q[3],gradientUnits:"userSpaceOnUse"}),z==="radialGradient"&&H&&!S(Q.gradientUnits)&&(B=Q,Q=N(Q,Y.getRadialAttr(H,B),{gradientUnits:"userSpaceOnUse"})),L(Q,function(oe,te){te!=="id"&&X.push(te,oe)}),L(q,function(oe){X.push(oe)}),j[X=X.join(",")])K=j[X].attr("id");else{Q.id=K=T();let oe=j[X]=Y.createElement(z).attr(Q).add(Y.defs);oe.radAttr=B,oe.stops=[],q.forEach(function(te){te[1].indexOf("rgba")===0?(G=(W=o.parse(te[1])).get("rgb"),V=W.get("a")):(G=te[1],V=1);let ne=Y.createElement("stop").attr({offset:te[0],"stop-color":G,"stop-opacity":V}).add(oe);oe.stops.push(ne)})}ee="url("+Y.url+"#"+K+")",$.setAttribute(U,ee),$.gradient=X,w.toString=function(){return ee}}})}css(w){let U=this.styles,$={},Y=this.element,W,z=!U;if(U&&L(w,function(Q,B){U&&U[B]!==Q&&($[B]=Q,z=!0)}),z){U&&(w=x(U,$)),w.width===null||w.width==="auto"?delete this.textWidth:Y.nodeName.toLowerCase()==="text"&&w.width&&(W=this.textWidth=p(w.width)),x(this.styles,w),W&&!R&&this.renderer.forExport&&delete w.width;let Q=N(w);Y.namespaceURI===this.SVG_NS&&(["textOutline","textOverflow","width"].forEach(B=>Q&&delete Q[B]),Q.color&&(Q.fill=Q.color)),f(Y,Q)}return this.added&&(this.element.nodeName==="text"&&this.renderer.buildText(this),w.textOutline&&this.applyTextOutline(w.textOutline)),this}dashstyleSetter(w){let U,$=this["stroke-width"];if($==="inherit"&&($=1),w=w&&w.toLowerCase()){let Y=w.replace("shortdashdotdot","3,1,1,1,1,1,").replace("shortdashdot","3,1,1,1").replace("shortdot","1,1,").replace("shortdash","3,1,").replace("longdash","8,3,").replace(/dot/g,"1,3,").replace("dash","4,3,").replace(/,$/,"").split(",");for(U=Y.length;U--;)Y[U]=""+p(Y[U])*v($,NaN);w=Y.join(",").replace(/NaN/g,"none"),this.element.setAttribute("stroke-dasharray",w)}}destroy(){var B;let w=this,U=w.element||{},$=w.renderer,Y=U.ownerSVGElement,W=U.nodeName==="SPAN"&&w.parentGroup||void 0,z,Q;if(U.onclick=U.onmouseout=U.onmouseover=U.onmousemove=U.point=null,_(w),w.clipPath&&Y){let j=w.clipPath;[].forEach.call(Y.querySelectorAll("[clip-path],[CLIP-PATH]"),function(q){q.getAttribute("clip-path").indexOf(j.element.id)>-1&&q.removeAttribute("clip-path")}),w.clipPath=j.destroy()}if(w.connector=(B=w.connector)==null?void 0:B.destroy(),w.stops){for(Q=0;QW&&W.join?(z?Y+" ":"")+W.join(" "):(W||"").toString(),"")),/(NaN| {2}|^$)/.test(w)&&(w="M 0 0"),this[U]!==w&&($.setAttribute(U,w),this[U]=w)}fillSetter(w,U,$){typeof w=="string"?$.setAttribute(U,w):w&&this.complexColor(w,U,$)}hrefSetter(w,U,$){$.setAttributeNS("http://www.w3.org/1999/xlink",U,w)}getBBox(w,U){let $,Y,W,z,{alignValue:Q,element:B,renderer:j,styles:q,textStr:G}=this,{cache:V,cacheKeys:H}=j,K=B.namespaceURI===this.SVG_NS,X=v(U,this.rotation,0),ee=j.styledMode?B&&I.prototype.getStyle.call(B,"font-size"):q.fontSize;if(S(G)&&((z=G.toString()).indexOf("<")===-1&&(z=z.replace(/[0-9]/g,"0")),z+=["",j.rootFontSize,ee,X,this.textWidth,Q,q.textOverflow,q.fontWeight].join(",")),z&&!w&&($=V[z]),!$){if(K||j.forExport){try{W=this.fakeTS&&function(oe){let te=B.querySelector(".highcharts-text-outline");te&&f(te,{display:oe})},k(W)&&W("none"),$=B.getBBox?x({},B.getBBox()):{width:B.offsetWidth,height:B.offsetHeight,x:0,y:0},k(W)&&W("")}catch{}(!$||$.width<0)&&($={x:0,y:0,width:0,height:0})}else $=this.htmlGetBBox();Y=$.height,K&&($.height=Y={"11px,17":14,"13px,20":16}[`${ee||""},${Math.round(Y)}`]||Y),X&&($=this.getRotatedBox($,X))}if(z&&(G===""||$.height>0)){for(;H.length>250;)delete V[H.shift()];V[z]||H.push(z),V[z]=$}return $}getRotatedBox(w,U){let{x:$,y:Y,width:W,height:z}=w,{alignValue:Q,translateY:B,rotationOriginX:j=0,rotationOriginY:q=0}=this,G={right:1,center:.5}[Q||0]||0,V=Number(this.element.getAttribute("y")||0)-(B?0:Y),H=U*g,K=(U-90)*g,X=Math.cos(H),ee=Math.sin(H),oe=W*X,te=W*ee,ne=Math.cos(K),se=Math.sin(K),[[ie,he],[Z,J]]=[j,q].map(xe=>[xe-xe*X,xe*ee]),ae=$+G*(W-oe)+ie+J+V*ne,ue=ae+oe,de=ue-z*ne,le=de-oe,me=Y+V-G*te-he+Z+V*se,ge=me+te,_e=ge-z*se,be=_e-te,Te=Math.min(ae,ue,de,le),ye=Math.min(me,ge,_e,be),Re=Math.max(ae,ue,de,le)-Te,Ne=Math.max(me,ge,_e,be)-ye;return{x:Te,y:ye,width:Re,height:Ne}}getStyle(w){return E.getComputedStyle(this.element||this,"").getPropertyValue(w)}hasClass(w){return(""+this.attr("class")).split(" ").indexOf(w)!==-1}hide(){return this.attr({visibility:"hidden"})}htmlGetBBox(){return{height:0,width:0,x:0,y:0}}constructor(w,U){this.onEvents={},this.opacity=1,this.SVG_NS=m,this.element=U==="span"||U==="body"?d(U):b.createElementNS(this.SVG_NS,U),this.renderer=w,this.styles={},D(this,"afterInit")}on(w,U){let{onEvents:$}=this;return $[w]&&$[w](),$[w]=C(this.element,w,U),this}opacitySetter(w,U,$){let Y=Number(Number(w).toFixed(3));this.opacity=Y,$.setAttribute(U,Y)}removeClass(w){return this.attr("class",(""+this.attr("class")).replace(A(w)?RegExp(`(^| )${w}( |$)`):w," ").replace(/ +/g," ").trim())}removeTextOutline(){let w=this.element.querySelector("tspan.highcharts-text-outline");w&&this.safeRemoveChild(w)}safeRemoveChild(w){let U=w.parentNode;U&&U.removeChild(w)}setRadialReference(w){let U=this.element.gradient&&this.renderer.gradients[this.element.gradient];return this.element.radialReference=w,U&&U.radAttr&&U.animate(this.renderer.getRadialAttr(w,U.radAttr)),this}setTextPath(w,U){U=N(!0,{enabled:!0,attributes:{dy:-5,startOffset:"50%",textAnchor:"middle"}},U);let $=this.renderer.url,Y=this.text||this,W=Y.textPath,{attributes:z,enabled:Q}=U;if(w=w||W&&W.path,W&&W.undo(),w&&Q){let B=C(Y,"afterModifyTree",j=>{if(w&&Q){let q=w.attr("id");q||w.attr("id",q=T());let G={x:0,y:0};S(z.dx)&&(G.dx=z.dx,delete z.dx),S(z.dy)&&(G.dy=z.dy,delete z.dy),Y.attr(G),this.attr({transform:""}),this.box&&(this.box=this.box.destroy());let V=j.nodes.slice(0);j.nodes.length=0,j.nodes[0]={tagName:"textPath",attributes:x(z,{"text-anchor":z.textAnchor,href:`${$}#${q}`}),children:V}}});Y.textPath={path:w,undo:B}}else Y.attr({dx:0,dy:0}),delete Y.textPath;return this.added&&(Y.textCache="",this.renderer.buildText(Y)),this}shadow(w){var W;let{renderer:U}=this,$=N(((W=this.parentGroup)==null?void 0:W.rotation)===90?{offsetX:-1,offsetY:-1}:{},M(w)?w:{}),Y=U.shadowDefinition($);return this.attr({filter:w?`url(${U.url}#${Y})`:"none"})}show(w=!0){return this.attr({visibility:w?"inherit":"visible"})}"stroke-widthSetter"(w,U,$){this[U]=w,$.setAttribute(U,w)}strokeWidth(){if(!this.renderer.styledMode)return this["stroke-width"]||0;let w=this.getStyle("stroke-width"),U=0,$;return/px$/.test(w)?U=p(w):w!==""&&(y($=b.createElementNS(m,"rect"),{width:w,"stroke-width":0}),this.element.parentNode.appendChild($),U=$.getBBox().width,$.parentNode.removeChild($)),U}symbolAttr(w){let U=this;I.symbolCustomAttribs.forEach(function($){U[$]=v(w[$],U[$])}),U.attr({d:U.renderer.symbols[U.symbolName](U.x,U.y,U.width,U.height,U)})}textSetter(w){w!==this.textStr&&(delete this.textPxLength,this.textStr=w,this.added&&this.renderer.buildText(this))}titleSetter(w){let U=this.element,$=U.getElementsByTagName("title")[0]||b.createElementNS(this.SVG_NS,"title");U.insertBefore?U.insertBefore($,U.firstChild):U.appendChild($),$.textContent=c(v(w,""),[/<[^>]*>/g,""]).replace(/</g,"<").replace(/>/g,">")}toFront(){let w=this.element;return w.parentNode.appendChild(w),this}translate(w,U){return this.attr({translateX:w,translateY:U})}updateTransform(w="transform"){var V;let{element:U,matrix:$,rotation:Y=0,rotationOriginX:W,rotationOriginY:z,scaleX:Q,scaleY:B,translateX:j=0,translateY:q=0}=this,G=["translate("+j+","+q+")"];S($)&&G.push("matrix("+$.join(",")+")"),Y&&(G.push("rotate("+Y+" "+v(W,U.getAttribute("x"),0)+" "+v(z,U.getAttribute("y")||0)+")"),((V=this.text)==null?void 0:V.element.tagName)==="SPAN"&&this.text.attr({rotation:Y,rotationOriginX:(W||0)-this.padding,rotationOriginY:(z||0)-this.padding})),(S(Q)||S(B))&&G.push("scale("+v(Q,1)+" "+v(B,1)+")"),G.length&&!(this.text||this).textPath&&U.setAttribute(w,G.join(" "))}visibilitySetter(w,U,$){w==="inherit"?$.removeAttribute(U):this[U]!==w&&$.setAttribute(U,w),this[U]=w}xGetter(w){return this.element.nodeName==="circle"&&(w==="x"?w="cx":w==="y"&&(w="cy")),this._defaultGetter(w)}zIndexSetter(w,U){let $=this.renderer,Y=this.parentGroup,W=(Y||$).element||$.box,z=this.element,Q=W===$.box,B,j,q,G=!1,V,H=this.added,K;if(S(w)?(z.setAttribute("data-z-index",w),w=+w,this[U]===w&&(H=!1)):S(this[U])&&z.removeAttribute("data-z-index"),this[U]=w,H){for((w=this.zIndex)&&Y&&(Y.handleZ=!0),K=(B=W.childNodes).length-1;K>=0&&!G;K--)V=!S(q=(j=B[K]).getAttribute("data-z-index")),j!==z&&(w<0&&V&&!Q&&!K?(W.insertBefore(z,B[K]),G=!0):(p(q)<=w||V&&(!S(w)||w>=0))&&(W.insertBefore(z,B[K+1]),G=!0));G||(W.insertBefore(z,B[Q?3:0]),G=!0)}return G}}return I.symbolCustomAttribs=["anchorX","anchorY","clockwise","end","height","innerR","r","start","width","x","y"],I.prototype.strokeSetter=I.prototype.fillSetter,I.prototype.yGetter=I.prototype.xGetter,I.prototype.matrixSetter=I.prototype.rotationOriginXSetter=I.prototype.rotationOriginYSetter=I.prototype.rotationSetter=I.prototype.scaleXSetter=I.prototype.scaleYSetter=I.prototype.translateXSetter=I.prototype.translateYSetter=I.prototype.verticalAlignSetter=function(P,w){this[w]=P,this.doTransform=!0},I}),r(n,"Core/Renderer/SVG/SVGLabel.js",[n["Core/Renderer/SVG/SVGElement.js"],n["Core/Utilities.js"]],function(i,o){let{defined:a,extend:s,isNumber:l,merge:u,pick:_,removeEvent:g}=o;class b extends i{constructor(m,E,C,y,d,f,S,O,x,D){let F;super(m,"g"),this.paddingLeftSetter=this.paddingSetter,this.paddingRightSetter=this.paddingSetter,this.textStr=E,this.x=C,this.y=y,this.anchorX=f,this.anchorY=S,this.baseline=x,this.className=D,this.addClass(D==="button"?"highcharts-no-tooltip":"highcharts-label"),D&&this.addClass("highcharts-"+D),this.text=m.text(void 0,0,0,O).attr({zIndex:1}),typeof d=="string"&&((F=/^url\((.*?)\)$/.test(d))||this.renderer.symbols[d])&&(this.symbolKey=d),this.bBox=b.emptyBBox,this.padding=3,this.baselineOffset=0,this.needsBox=m.styledMode||F,this.deferredAttr={},this.alignFactor=0}alignSetter(m){let E={left:0,center:.5,right:1}[m];E!==this.alignFactor&&(this.alignFactor=E,this.bBox&&l(this.xSetting)&&this.attr({x:this.xSetting}))}anchorXSetter(m,E){this.anchorX=m,this.boxAttr(E,Math.round(m)-this.getCrispAdjust()-this.xSetting)}anchorYSetter(m,E){this.anchorY=m,this.boxAttr(E,m-this.ySetting)}boxAttr(m,E){this.box?this.box.attr(m,E):this.deferredAttr[m]=E}css(m){if(m){let E={};m=u(m),b.textProps.forEach(C=>{m[C]!==void 0&&(E[C]=m[C],delete m[C])}),this.text.css(E),"fontSize"in E||"fontWeight"in E?this.updateTextPadding():("width"in E||"textOverflow"in E)&&this.updateBoxSize()}return i.prototype.css.call(this,m)}destroy(){g(this.element,"mouseenter"),g(this.element,"mouseleave"),this.text&&this.text.destroy(),this.box&&(this.box=this.box.destroy()),i.prototype.destroy.call(this)}fillSetter(m,E){m&&(this.needsBox=!0),this.fill=m,this.boxAttr(E,m)}getBBox(m,E){this.textStr&&this.bBox.width===0&&this.bBox.height===0&&this.updateBoxSize();let{padding:C,height:y=0,translateX:d=0,translateY:f=0,width:S=0}=this,O=_(this.paddingLeft,C),x=E??(this.rotation||0),D={width:S,height:y,x:d+this.bBox.x-O,y:f+this.bBox.y-C+this.baselineOffset};return x&&(D=this.getRotatedBox(D,x)),D}getCrispAdjust(){return this.renderer.styledMode&&this.box?this.box.strokeWidth()%2/2:(this["stroke-width"]?parseInt(this["stroke-width"],10):0)%2/2}heightSetter(m){this.heightSetting=m}onAdd(){this.text.add(this),this.attr({text:_(this.textStr,""),x:this.x||0,y:this.y||0}),this.box&&a(this.anchorX)&&this.attr({anchorX:this.anchorX,anchorY:this.anchorY})}paddingSetter(m,E){l(m)?m!==this[E]&&(this[E]=m,this.updateTextPadding()):this[E]=void 0}rSetter(m,E){this.boxAttr(E,m)}strokeSetter(m,E){this.stroke=m,this.boxAttr(E,m)}"stroke-widthSetter"(m,E){m&&(this.needsBox=!0),this["stroke-width"]=m,this.boxAttr(E,m)}"text-alignSetter"(m){this.textAlign=m}textSetter(m){m!==void 0&&this.text.attr({text:m}),this.updateTextPadding()}updateBoxSize(){let m,E=this.text,C={},y=this.padding,d=this.bBox=(!l(this.widthSetting)||!l(this.heightSetting)||this.textAlign)&&a(E.textStr)?E.getBBox(void 0,0):b.emptyBBox;this.width=this.getPaddedWidth(),this.height=(this.heightSetting||d.height||0)+2*y;let f=this.renderer.fontMetrics(E);if(this.baselineOffset=y+Math.min((this.text.firstLineMetrics||f).b,d.height||1/0),this.heightSetting&&(this.baselineOffset+=(this.heightSetting-f.h)/2),this.needsBox&&!E.textPath){if(!this.box){let S=this.box=this.symbolKey?this.renderer.symbol(this.symbolKey):this.renderer.rect();S.addClass((this.className==="button"?"":"highcharts-label-box")+(this.className?" highcharts-"+this.className+"-box":"")),S.add(this)}m=this.getCrispAdjust(),C.x=m,C.y=(this.baseline?-this.baselineOffset:0)+m,C.width=Math.round(this.width),C.height=Math.round(this.height),this.box.attr(s(C,this.deferredAttr)),this.deferredAttr={}}}updateTextPadding(){let m=this.text;if(!m.textPath){this.updateBoxSize();let E=this.baseline?0:this.baselineOffset,C=_(this.paddingLeft,this.padding);a(this.widthSetting)&&this.bBox&&(this.textAlign==="center"||this.textAlign==="right")&&(C+={center:.5,right:1}[this.textAlign]*(this.widthSetting-this.bBox.width)),(C!==m.x||E!==m.y)&&(m.attr("x",C),m.hasBoxWidthChanged&&(this.bBox=m.getBBox(!0)),E!==void 0&&m.attr("y",E)),m.x=C,m.y=E}}widthSetter(m){this.widthSetting=l(m)?m:void 0}getPaddedWidth(){let m=this.padding,E=_(this.paddingLeft,m),C=_(this.paddingRight,m);return(this.widthSetting||this.bBox.width||0)+E+C}xSetter(m){this.x=m,this.alignFactor&&(m-=this.alignFactor*this.getPaddedWidth(),this["forceAnimate:x"]=!0),this.xSetting=Math.round(m),this.attr("translateX",this.xSetting)}ySetter(m){this.ySetting=this.y=Math.round(m),this.attr("translateY",this.ySetting)}}return b.emptyBBox={width:0,height:0,x:0,y:0},b.textProps=["color","direction","fontFamily","fontSize","fontStyle","fontWeight","lineHeight","textAlign","textDecoration","textOutline","textOverflow","whiteSpace","width"],b}),r(n,"Core/Renderer/SVG/Symbols.js",[n["Core/Utilities.js"]],function(i){let{defined:o,isNumber:a,pick:s}=i;function l(g,b,R,m,E){let C=[];if(E){let y=E.start||0,d=s(E.r,R),f=s(E.r,m||R),S=.001>Math.abs((E.end||0)-y-2*Math.PI),O=(E.end||0)-.001,x=E.innerR,D=s(E.open,S),F=Math.cos(y),k=Math.sin(y),M=Math.cos(O),A=Math.sin(O),N=s(E.longArc,O-y-Math.PI<.001?0:1),L=["A",d,f,0,N,s(E.clockwise,1),g+d*M,b+f*A];L.params={start:y,end:O,cx:g,cy:b},C.push(["M",g+d*F,b+f*k],L),o(x)&&((L=["A",x,x,0,N,o(E.clockwise)?1-E.clockwise:0,g+x*F,b+x*k]).params={start:O,end:y,cx:g,cy:b},C.push(D?["M",g+x*M,b+x*A]:["L",g+x*M,b+x*A],L)),D||C.push(["Z"])}return C}function u(g,b,R,m,E){return E&&E.r?_(g,b,R,m,E):[["M",g,b],["L",g+R,b],["L",g+R,b+m],["L",g,b+m],["Z"]]}function _(g,b,R,m,E){let C=(E==null?void 0:E.r)||0;return[["M",g+C,b],["L",g+R-C,b],["A",C,C,0,0,1,g+R,b+C],["L",g+R,b+m-C],["A",C,C,0,0,1,g+R-C,b+m],["L",g+C,b+m],["A",C,C,0,0,1,g,b+m-C],["L",g,b+C],["A",C,C,0,0,1,g+C,b],["Z"]]}return{arc:l,callout:function(g,b,R,m,E){let C=Math.min(E&&E.r||0,R,m),y=C+6,d=E&&E.anchorX,f=E&&E.anchorY||0,S=_(g,b,R,m,{r:C});if(!a(d)||d0&&f0)return S;if(g+d>R-y)if(f>b+y&&fb+y&&f0){let O=fm&&dy&&S.splice(1,1,["L",d-6,b],["L",d,b-6],["L",d+6,b],["L",R-C,b]);return S},circle:function(g,b,R,m){return l(g+R/2,b+m/2,R/2,m/2,{start:.5*Math.PI,end:2.5*Math.PI,open:!1})},diamond:function(g,b,R,m){return[["M",g+R/2,b],["L",g+R,b+m/2],["L",g+R/2,b+m],["L",g,b+m/2],["Z"]]},rect:u,roundedRect:_,square:u,triangle:function(g,b,R,m){return[["M",g+R/2,b],["L",g+R,b+m],["L",g,b+m],["Z"]]},"triangle-down":function(g,b,R,m){return[["M",g,b],["L",g+R,b],["L",g+R/2,b+m],["Z"]]}}}),r(n,"Core/Renderer/SVG/TextBuilder.js",[n["Core/Renderer/HTML/AST.js"],n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o,a){let{doc:s,SVG_NS:l,win:u}=o,{attr:_,extend:g,fireEvent:b,isString:R,objectEach:m,pick:E}=a;return class{constructor(C){let y=C.styles;this.renderer=C.renderer,this.svgElement=C,this.width=C.textWidth,this.textLineHeight=y&&y.lineHeight,this.textOutline=y&&y.textOutline,this.ellipsis=!!(y&&y.textOverflow==="ellipsis"),this.noWrap=!!(y&&y.whiteSpace==="nowrap")}buildSVG(){let C=this.svgElement,y=C.element,d=C.renderer,f=E(C.textStr,"").toString(),S=f.indexOf("<")!==-1,O=y.childNodes,x=!C.added&&d.box,D=[f,this.ellipsis,this.noWrap,this.textLineHeight,this.textOutline,C.getStyle("font-size"),this.width].join(",");if(D!==C.textCache){C.textCache=D,delete C.actualWidth;for(let F=O.length;F--;)y.removeChild(O[F]);if(S||this.ellipsis||this.width||C.textPath||f.indexOf(" ")!==-1&&(!this.noWrap||//g.test(f))){if(f!==""){x&&x.appendChild(y);let F=new i(f);this.modifyTree(F.nodes),F.addToDOM(y),this.modifyDOM(),this.ellipsis&&(y.textContent||"").indexOf("…")!==-1&&C.attr("title",this.unescapeEntities(C.textStr||"",["<",">"])),x&&x.removeChild(y)}}else y.appendChild(s.createTextNode(this.unescapeEntities(f)));R(this.textOutline)&&C.applyTextOutline&&C.applyTextOutline(this.textOutline)}}modifyDOM(){let C,y=this.svgElement,d=_(y.element,"x");for(y.firstLineMetrics=void 0;(C=y.element.firstChild)&&/^[\s\u200B]*$/.test(C.textContent||" ");)y.element.removeChild(C);[].forEach.call(y.element.querySelectorAll("tspan.highcharts-br"),(x,D)=>{x.nextSibling&&x.previousSibling&&(D===0&&x.previousSibling.nodeType===1&&(y.firstLineMetrics=y.renderer.fontMetrics(x.previousSibling)),_(x,{dy:this.getLineHeight(x.nextSibling),x:d}))});let f=this.width||0;if(!f)return;let S=(x,D)=>{let F=x.textContent||"",k=F.replace(/([^\^])-/g,"$1- ").split(" "),M=!this.noWrap&&(k.length>1||y.element.childNodes.length>1),A=this.getLineHeight(D),N=0,L=y.actualWidth;if(this.ellipsis)F&&this.truncate(x,F,void 0,0,Math.max(0,f-.8*A),(v,p)=>v.substring(0,p)+"…");else if(M){let v=[],p=[];for(;D.firstChild&&D.firstChild!==x;)p.push(D.firstChild),D.removeChild(D.firstChild);for(;k.length;)k.length&&!this.noWrap&&N>0&&(v.push(x.textContent||""),x.textContent=k.join(" ").replace(/- /g,"-")),this.truncate(x,void 0,k,N===0&&L||0,f,(c,h)=>k.slice(0,h).join(" ").replace(/- /g,"-")),L=y.actualWidth,N++;p.forEach(c=>{D.insertBefore(c,x)}),v.forEach(c=>{D.insertBefore(s.createTextNode(c),x);let h=s.createElementNS(l,"tspan");h.textContent="​",_(h,{dy:A,x:d}),D.insertBefore(h,x)})}},O=x=>{[].slice.call(x.childNodes).forEach(D=>{D.nodeType===u.Node.TEXT_NODE?S(D,x):(D.className.baseVal.indexOf("highcharts-br")!==-1&&(y.actualWidth=0),O(D))})};O(y.element)}getLineHeight(C){let y=C.nodeType===u.Node.TEXT_NODE?C.parentElement:C;return this.textLineHeight?parseInt(this.textLineHeight.toString(),10):this.renderer.fontMetrics(y||this.svgElement.element).h}modifyTree(C){let y=(d,f)=>{let{attributes:S={},children:O,style:x={},tagName:D}=d,F=this.renderer.styledMode;if(D==="b"||D==="strong"?F?S.class="highcharts-strong":x.fontWeight="bold":(D==="i"||D==="em")&&(F?S.class="highcharts-emphasized":x.fontStyle="italic"),x&&x.color&&(x.fill=x.color),D==="br"){S.class="highcharts-br",d.textContent="​";let k=C[f+1];k&&k.textContent&&(k.textContent=k.textContent.replace(/^ +/gm,""))}else D==="a"&&O&&O.some(k=>k.tagName==="#text")&&(d.children=[{children:O,tagName:"tspan"}]);D!=="#text"&&D!=="a"&&(d.tagName="tspan"),g(d,{attributes:S,style:x}),O&&O.filter(k=>k.tagName!=="#text").forEach(y)};C.forEach(y),b(this.svgElement,"afterModifyTree",{nodes:C})}truncate(C,y,d,f,S,O){let x,D,F=this.svgElement,{rotation:k}=F,M=[],A=d?1:0,N=(y||d||"").length,L=N,v=function(p,c){let h=c||p,T=C.parentNode;if(T&&M[h]===void 0&&T.getSubStringLength)try{M[h]=f+T.getSubStringLength(0,d?h+1:h)}catch{}return M[h]};if(F.rotation=0,f+(D=v(C.textContent.length))>S){for(;A<=N;)L=Math.ceil((A+N)/2),d&&(x=O(d,L)),D=v(L,x&&x.length-1),A===N?A=N+1:D>S?N=L-1:A=L;N===0?C.textContent="":y&&N===y.length-1||(C.textContent=x||O(y||d,L))}d&&d.splice(0,L),F.actualWidth=D,F.rotation=k}unescapeEntities(C,y){return m(this.renderer.escapes,function(d,f){y&&y.indexOf(d)!==-1||(C=C.toString().replace(RegExp(d,"g"),f))}),C}}}),r(n,"Core/Renderer/SVG/SVGRenderer.js",[n["Core/Renderer/HTML/AST.js"],n["Core/Color/Color.js"],n["Core/Globals.js"],n["Core/Renderer/RendererRegistry.js"],n["Core/Renderer/SVG/SVGElement.js"],n["Core/Renderer/SVG/SVGLabel.js"],n["Core/Renderer/SVG/Symbols.js"],n["Core/Renderer/SVG/TextBuilder.js"],n["Core/Utilities.js"]],function(i,o,a,s,l,u,_,g,b){let R,{charts:m,deg2rad:E,doc:C,isFirefox:y,isMS:d,isWebKit:f,noop:S,SVG_NS:O,symbolSizes:x,win:D}=a,{addEvent:F,attr:k,createElement:M,css:A,defined:N,destroyObjectProperties:L,extend:v,isArray:p,isNumber:c,isObject:h,isString:T,merge:I,pick:P,pInt:w,replaceNested:U,uniqueKey:$}=b;class Y{constructor(z,Q,B,j,q,G,V){let H,K,X=this.createElement("svg").attr({version:"1.1",class:"highcharts-root"}),ee=X.element;V||X.css(this.getStyle(j||{})),z.appendChild(ee),k(z,"dir","ltr"),z.innerHTML.indexOf("xmlns")===-1&&k(ee,"xmlns",this.SVG_NS),this.box=ee,this.boxWrapper=X,this.alignedObjects=[],this.url=this.getReferenceURL(),this.createElement("desc").add().element.appendChild(C.createTextNode("Created with Highcharts 11.4.0")),this.defs=this.createElement("defs").add(),this.allowHTML=G,this.forExport=q,this.styledMode=V,this.gradients={},this.cache={},this.cacheKeys=[],this.imgCount=0,this.rootFontSize=X.getStyle("font-size"),this.setSize(Q,B,!1),y&&z.getBoundingClientRect&&((H=function(){A(z,{left:0,top:0}),K=z.getBoundingClientRect(),A(z,{left:Math.ceil(K.left)-K.left+"px",top:Math.ceil(K.top)-K.top+"px"})})(),this.unSubPixelFix=F(D,"resize",H))}definition(z){return new i([z]).addToDOM(this.defs.element)}getReferenceURL(){if((y||f)&&C.getElementsByTagName("base").length){if(!N(R)){let z=$(),Q=new i([{tagName:"svg",attributes:{width:8,height:8},children:[{tagName:"defs",children:[{tagName:"clipPath",attributes:{id:z},children:[{tagName:"rect",attributes:{width:4,height:4}}]}]},{tagName:"rect",attributes:{id:"hitme",width:8,height:8,"clip-path":`url(#${z})`,fill:"rgba(0,0,0,0.001)"}}]}]).addToDOM(C.body);A(Q,{position:"fixed",top:0,left:0,zIndex:9e5});let B=C.elementFromPoint(6,6);R=(B&&B.id)==="hitme",C.body.removeChild(Q)}if(R)return U(D.location.href.split("#")[0],[/<[^>]*>/g,""],[/([\('\)])/g,"\\$1"],[/ /g,"%20"])}return""}getStyle(z){return this.style=v({fontFamily:"Helvetica, Arial, sans-serif",fontSize:"1rem"},z),this.style}setStyle(z){this.boxWrapper.css(this.getStyle(z))}isHidden(){return!this.boxWrapper.getBBox().width}destroy(){let z=this.defs;return this.box=null,this.boxWrapper=this.boxWrapper.destroy(),L(this.gradients||{}),this.gradients=null,this.defs=z.destroy(),this.unSubPixelFix&&this.unSubPixelFix(),this.alignedObjects=null,null}createElement(z){return new this.Element(this,z)}getRadialAttr(z,Q){return{cx:z[0]-z[2]/2+(Q.cx||0)*z[2],cy:z[1]-z[2]/2+(Q.cy||0)*z[2],r:(Q.r||0)*z[2]}}shadowDefinition(z){let Q=[`highcharts-drop-shadow-${this.chartIndex}`,...Object.keys(z).map(j=>`${j}-${z[j]}`)].join("-").toLowerCase().replace(/[^a-z0-9\-]/g,""),B=I({color:"#000000",offsetX:1,offsetY:1,opacity:.15,width:5},z);return this.defs.element.querySelector(`#${Q}`)||this.definition({tagName:"filter",attributes:{id:Q,filterUnits:B.filterUnits},children:[{tagName:"feDropShadow",attributes:{dx:B.offsetX,dy:B.offsetY,"flood-color":B.color,"flood-opacity":Math.min(5*B.opacity,1),stdDeviation:B.width/2}}]}),Q}buildText(z){new g(z).buildSVG()}getContrast(z){let Q=o.parse(z).rgba.map(j=>{let q=j/255;return q<=.03928?q/12.92:Math.pow((q+.055)/1.055,2.4)}),B=.2126*Q[0]+.7152*Q[1]+.0722*Q[2];return 1.05/(B+.05)>(B+.05)/.05?"#FFFFFF":"#000000"}button(z,Q,B,j,q={},G,V,H,K,X){let ee,oe,te,ne=this.label(z,Q,B,K,void 0,void 0,X,void 0,"button"),se=this.styledMode,ie=q.states||{},he=0;q=I(q),delete q.states;let Z=I({color:"#333333",cursor:"pointer",fontSize:"0.8em",fontWeight:"normal"},q.style);delete q.style;let J=i.filterUserAttributes(q);return ne.attr(I({padding:8,r:2},J)),se||(J=I({fill:"#f7f7f7",stroke:"#cccccc","stroke-width":1},J),ee=(G=I(J,{fill:"#e6e6e6"},i.filterUserAttributes(G||ie.hover||{}))).style,delete G.style,oe=(V=I(J,{fill:"#e6e9ff",style:{color:"#000000",fontWeight:"bold"}},i.filterUserAttributes(V||ie.select||{}))).style,delete V.style,te=(H=I(J,{style:{color:"#cccccc"}},i.filterUserAttributes(H||ie.disabled||{}))).style,delete H.style),F(ne.element,d?"mouseover":"mouseenter",function(){he!==3&&ne.setState(1)}),F(ne.element,d?"mouseout":"mouseleave",function(){he!==3&&ne.setState(he)}),ne.setState=function(ae){if(ae!==1&&(ne.state=he=ae),ne.removeClass(/highcharts-button-(normal|hover|pressed|disabled)/).addClass("highcharts-button-"+["normal","hover","pressed","disabled"][ae||0]),!se){ne.attr([J,G,V,H][ae||0]);let ue=[Z,ee,oe,te][ae||0];h(ue)&&ne.css(ue)}},!se&&(ne.attr(J).css(v({cursor:"default"},Z)),X&&ne.text.css({pointerEvents:"none"})),ne.on("touchstart",ae=>ae.stopPropagation()).on("click",function(ae){he!==3&&j.call(ne,ae)})}crispLine(z,Q,B="round"){let j=z[0],q=z[1];return N(j[1])&&j[1]===q[1]&&(j[1]=q[1]=Math[B](j[1])-Q%2/2),N(j[2])&&j[2]===q[2]&&(j[2]=q[2]=Math[B](j[2])+Q%2/2),z}path(z){let Q=this.styledMode?{}:{fill:"none"};return p(z)?Q.d=z:h(z)&&v(Q,z),this.createElement("path").attr(Q)}circle(z,Q,B){let j=h(z)?z:z===void 0?{}:{x:z,y:Q,r:B},q=this.createElement("circle");return q.xSetter=q.ySetter=function(G,V,H){H.setAttribute("c"+V,G)},q.attr(j)}arc(z,Q,B,j,q,G){let V;h(z)?(Q=(V=z).y,B=V.r,j=V.innerR,q=V.start,G=V.end,z=V.x):V={innerR:j,start:q,end:G};let H=this.symbol("arc",z,Q,B,B,V);return H.r=B,H}rect(z,Q,B,j,q,G){let V=h(z)?z:z===void 0?{}:{x:z,y:Q,r:q,width:Math.max(B||0,0),height:Math.max(j||0,0)},H=this.createElement("rect");return this.styledMode||(G!==void 0&&(V["stroke-width"]=G,v(V,H.crisp(V))),V.fill="none"),H.rSetter=function(K,X,ee){H.r=K,k(ee,{rx:K,ry:K})},H.rGetter=function(){return H.r||0},H.attr(V)}roundedRect(z){return this.symbol("roundedRect").attr(z)}setSize(z,Q,B){this.width=z,this.height=Q,this.boxWrapper.animate({width:z,height:Q},{step:function(){this.attr({viewBox:"0 0 "+this.attr("width")+" "+this.attr("height")})},duration:P(B,!0)?void 0:0}),this.alignElements()}g(z){let Q=this.createElement("g");return z?Q.attr({class:"highcharts-"+z}):Q}image(z,Q,B,j,q,G){let V={preserveAspectRatio:"none"};c(Q)&&(V.x=Q),c(B)&&(V.y=B),c(j)&&(V.width=j),c(q)&&(V.height=q);let H=this.createElement("image").attr(V),K=function(X){H.attr({href:z}),G.call(H,X)};if(G){H.attr({href:"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="});let X=new D.Image;F(X,"load",K),X.src=z,X.complete&&K({})}else H.attr({href:z});return H}symbol(z,Q,B,j,q,G){let V,H,K,X,ee=this,oe=/^url\((.*?)\)$/,te=oe.test(z),ne=!te&&(this.symbols[z]?z:"circle"),se=ne&&this.symbols[ne];if(se)typeof Q=="number"&&(H=se.call(this.symbols,Math.round(Q||0),Math.round(B||0),j||0,q||0,G)),V=this.path(H),ee.styledMode||V.attr("fill","none"),v(V,{symbolName:ne||void 0,x:Q,y:B,width:j,height:q}),G&&v(V,G);else if(te){K=z.match(oe)[1];let ie=V=this.image(K);ie.imgwidth=P(G&&G.width,x[K]&&x[K].width),ie.imgheight=P(G&&G.height,x[K]&&x[K].height),X=he=>he.attr({width:he.width,height:he.height}),["width","height"].forEach(he=>{ie[`${he}Setter`]=function(Z,J){this[J]=Z;let{alignByTranslate:ae,element:ue,width:de,height:le,imgwidth:me,imgheight:ge}=this,_e=J==="width"?me:ge,be=1;G&&G.backgroundSize==="within"&&de&&le&&me&&ge?(be=Math.min(de/me,le/ge),k(ue,{width:Math.round(me*be),height:Math.round(ge*be)})):ue&&_e&&ue.setAttribute(J,_e),!ae&&me&&ge&&this.translate(((de||0)-me*be)/2,((le||0)-ge*be)/2)}}),N(Q)&&ie.attr({x:Q,y:B}),ie.isImg=!0,N(ie.imgwidth)&&N(ie.imgheight)?X(ie):(ie.attr({width:0,height:0}),M("img",{onload:function(){let he=m[ee.chartIndex];this.width===0&&(A(this,{position:"absolute",top:"-999em"}),C.body.appendChild(this)),x[K]={width:this.width,height:this.height},ie.imgwidth=this.width,ie.imgheight=this.height,ie.element&&X(ie),this.parentNode&&this.parentNode.removeChild(this),ee.imgCount--,ee.imgCount||!he||he.hasLoaded||he.onload()},src:K}),this.imgCount++)}return V}clipRect(z,Q,B,j){return this.rect(z,Q,B,j,0)}text(z,Q,B,j){let q={};if(j&&(this.allowHTML||!this.forExport))return this.html(z,Q,B);q.x=Math.round(Q||0),B&&(q.y=Math.round(B)),N(z)&&(q.text=z);let G=this.createElement("text").attr(q);return j&&(!this.forExport||this.allowHTML)||(G.xSetter=function(V,H,K){let X=K.getElementsByTagName("tspan"),ee=K.getAttribute(H);for(let oe=0,te;oez.align())}}return v(Y.prototype,{Element:l,SVG_NS:O,escapes:{"&":"&","<":"<",">":">","'":"'",'"':"""},symbols:_,draw:S}),s.registerRendererType("svg",Y,!0),Y}),r(n,"Core/Renderer/HTML/HTMLElement.js",[n["Core/Renderer/HTML/AST.js"],n["Core/Globals.js"],n["Core/Renderer/SVG/SVGElement.js"],n["Core/Utilities.js"]],function(i,o,a,s){let{composed:l}=o,{attr:u,css:_,createElement:g,defined:b,extend:R,pInt:m,pushUnique:E}=s;function C(S,O,x){var F;let D=((F=this.div)==null?void 0:F.style)||x.style;a.prototype[`${O}Setter`].call(this,S,O,x),D&&(D[O]=S)}let y=(S,O)=>{var x;if(!S.div){let D=u(S.element,"class"),F=S.css,k=g("div",D?{className:D}:void 0,{position:"absolute",left:`${S.translateX||0}px`,top:`${S.translateY||0}px`,...S.styles,display:S.display,opacity:S.opacity,visibility:S.visibility},((x=S.parentGroup)==null?void 0:x.div)||O);S.classSetter=(M,A,N)=>{N.setAttribute("class",M),k.className=M},S.translateXSetter=S.translateYSetter=(M,A)=>{S[A]=M,k.style[A==="translateX"?"left":"top"]=`${M}px`,S.doTransform=!0},S.opacitySetter=S.visibilitySetter=C,S.css=M=>(F.call(S,M),M.cursor&&(k.style.cursor=M.cursor),M.pointerEvents&&(k.style.pointerEvents=M.pointerEvents),S),S.on=function(){return a.prototype.on.apply({element:k,onEvents:S.onEvents},arguments),S},S.div=k}return S.div};class d extends a{static compose(O){E(l,this.compose)&&(O.prototype.html=function(x,D,F){return new d(this,"span").attr({text:x,x:Math.round(D),y:Math.round(F)})})}constructor(O,x){super(O,x),this.css({position:"absolute",...O.styledMode?{}:{fontFamily:O.style.fontFamily,fontSize:O.style.fontSize}}),this.element.style.whiteSpace="nowrap"}getSpanCorrection(O,x,D){this.xCorr=-O*D,this.yCorr=-x}css(O){let x,{element:D}=this,F=D.tagName==="SPAN"&&O&&"width"in O,k=F&&O.width;return F&&(delete O.width,this.textWidth=m(k)||void 0,x=!0),(O==null?void 0:O.textOverflow)==="ellipsis"&&(O.whiteSpace="nowrap",O.overflow="hidden"),R(this.styles,O),_(D,O),x&&this.updateTransform(),this}htmlGetBBox(){let{element:O}=this;return{x:O.offsetLeft,y:O.offsetTop,width:O.offsetWidth,height:O.offsetHeight}}updateTransform(){var T;if(!this.added){this.alignOnAdd=!0;return}let{element:O,renderer:x,rotation:D,rotationOriginX:F,rotationOriginY:k,styles:M,textAlign:A="left",textWidth:N,translateX:L=0,translateY:v=0,x:p=0,y:c=0}=this,h=M.whiteSpace;if(_(O,{marginLeft:`${L}px`,marginTop:`${v}px`}),O.tagName==="SPAN"){let I=[D,A,O.innerHTML,N,this.textAlign].join(","),P=-(((T=this.parentGroup)==null?void 0:T.padding)*1)||0,w,U=!1;if(N!==this.oldTextWidth){let Q=this.textPxLength?this.textPxLength:(_(O,{width:"",whiteSpace:h||"nowrap"}),O.offsetWidth),B=N||0;(B>this.oldTextWidth||Q>B)&&(/[ \-]/.test(O.textContent||O.innerText)||O.style.textOverflow==="ellipsis")&&(_(O,{width:Q>B||D?N+"px":"auto",display:"block",whiteSpace:h||"normal"}),this.oldTextWidth=N,U=!0)}this.hasBoxWidthChanged=U,I!==this.cTT&&(w=x.fontMetrics(O).b,b(D)&&(D!==(this.oldRotation||0)||A!==this.oldAlign)&&this.setSpanRotation(D,P,P),this.getSpanCorrection(!b(D)&&this.textPxLength||O.offsetWidth,w,{left:0,center:.5,right:1}[A]));let{xCorr:$=0,yCorr:Y=0}=this,W=(F??p)-$-p-P,z=(k??c)-Y-c-P;_(O,{left:`${p+$}px`,top:`${c+Y}px`,transformOrigin:`${W}px ${z}px`}),this.cTT=I,this.oldRotation=D,this.oldAlign=A}}setSpanRotation(O,x,D){_(this.element,{transform:`rotate(${O}deg)`,transformOrigin:`${x}% ${D}px`})}add(O){let x,D=this.renderer.box.parentNode,F=[];if(this.parentGroup=O,O&&!(x=O.div)){let k=O;for(;k;)F.push(k),k=k.parentGroup;for(let M of F.reverse())x=y(M,D)}return(x||D).appendChild(this.element),this.added=!0,this.alignOnAdd&&this.updateTransform(),this}textSetter(O){O!==this.textStr&&(delete this.bBox,delete this.oldTextWidth,i.setElementHTML(this.element,O??""),this.textStr=O,this.doTransform=!0)}alignSetter(O){this.alignValue=this.textAlign=O,this.doTransform=!0}xSetter(O,x){this[x]=O,this.doTransform=!0}}let f=d.prototype;return f.visibilitySetter=f.opacitySetter=C,f.ySetter=f.rotationSetter=f.rotationOriginXSetter=f.rotationOriginYSetter=f.xSetter,d}),r(n,"Core/Axis/AxisDefaults.js",[],function(){var i,o;return(o=i||(i={})).xAxis={alignTicks:!0,allowDecimals:void 0,panningEnabled:!0,zIndex:2,zoomEnabled:!0,dateTimeLabelFormats:{millisecond:{main:"%H:%M:%S.%L",range:!1},second:{main:"%H:%M:%S",range:!1},minute:{main:"%H:%M",range:!1},hour:{main:"%H:%M",range:!1},day:{main:"%e %b"},week:{main:"%e %b"},month:{main:"%b '%y"},year:{main:"%Y"}},endOnTick:!1,gridLineDashStyle:"Solid",gridZIndex:1,labels:{autoRotationLimit:80,distance:15,enabled:!0,indentation:10,overflow:"justify",padding:5,reserveSpace:void 0,rotation:void 0,staggerLines:0,step:0,useHTML:!1,zIndex:7,style:{color:"#333333",cursor:"default",fontSize:"0.8em"}},maxPadding:.01,minorGridLineDashStyle:"Solid",minorTickLength:2,minorTickPosition:"outside",minorTicksPerMajor:5,minPadding:.01,offset:void 0,reversed:void 0,reversedStacks:!1,showEmpty:!0,showFirstLabel:!0,showLastLabel:!0,startOfWeek:1,startOnTick:!1,tickLength:10,tickPixelInterval:100,tickmarkPlacement:"between",tickPosition:"outside",title:{align:"middle",useHTML:!1,x:0,y:0,style:{color:"#666666",fontSize:"0.8em"}},type:"linear",uniqueNames:!0,visible:!0,minorGridLineColor:"#f2f2f2",minorGridLineWidth:1,minorTickColor:"#999999",lineColor:"#333333",lineWidth:1,gridLineColor:"#e6e6e6",gridLineWidth:void 0,tickColor:"#333333"},o.yAxis={reversedStacks:!0,endOnTick:!0,maxPadding:.05,minPadding:.05,tickPixelInterval:72,showLastLabel:!0,labels:{x:void 0},startOnTick:!0,title:{text:"Values"},stackLabels:{animation:{},allowOverlap:!1,enabled:!1,crop:!0,overflow:"justify",formatter:function(){let{numberFormatter:a}=this.axis.chart;return a(this.total||0,-1)},style:{color:"#000000",fontSize:"0.7em",fontWeight:"bold",textOutline:"1px contrast"}},gridLineWidth:1,lineWidth:0},i}),r(n,"Core/Foundation.js",[n["Core/Utilities.js"]],function(i){var o;let{addEvent:a,isFunction:s,objectEach:l,removeEvent:u}=i;return(o||(o={})).registerEventOptions=function(_,g){_.eventOptions=_.eventOptions||{},l(g.events,function(b,R){_.eventOptions[R]!==b&&(_.eventOptions[R]&&(u(_,R,_.eventOptions[R]),delete _.eventOptions[R]),s(b)&&(_.eventOptions[R]=b,a(_,R,b,{order:0})))})},o}),r(n,"Core/Axis/Tick.js",[n["Core/Templating.js"],n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o,a){let{deg2rad:s}=o,{clamp:l,correctFloat:u,defined:_,destroyObjectProperties:g,extend:b,fireEvent:R,isNumber:m,merge:E,objectEach:C,pick:y}=a;return class{constructor(d,f,S,O,x){this.isNew=!0,this.isNewLabel=!0,this.axis=d,this.pos=f,this.type=S||"",this.parameters=x||{},this.tickmarkOffset=this.parameters.tickmarkOffset,this.options=this.parameters.options,R(this,"init"),S||O||this.addLabel()}addLabel(){let d=this,f=d.axis,S=f.options,O=f.chart,x=f.categories,D=f.logarithmic,F=f.names,k=d.pos,M=y(d.options&&d.options.labels,S.labels),A=f.tickPositions,N=k===A[0],L=k===A[A.length-1],v=(!M.step||M.step===1)&&f.tickInterval===1,p=A.info,c=d.label,h,T,I,P=this.parameters.category||(x?y(x[k],F[k],k):k);D&&m(P)&&(P=u(D.lin2log(P))),f.dateTime&&(p?h=(T=O.time.resolveDTLFormat(S.dateTimeLabelFormats[!S.grid&&p.higherRanks[k]||p.unitName])).main:m(P)&&(h=f.dateTime.getXDateFormat(P,S.dateTimeLabelFormats||{}))),d.isFirst=N,d.isLast=L;let w={axis:f,chart:O,dateTimeLabelFormat:h,isFirst:N,isLast:L,pos:k,tick:d,tickPositionInfo:p,value:P};R(this,"labelFormat",w);let U=W=>M.formatter?M.formatter.call(W,W):M.format?(W.text=f.defaultLabelFormatter.call(W),i.format(M.format,W,O)):f.defaultLabelFormatter.call(W),$=U.call(w,w),Y=T&&T.list;Y?d.shortenLabel=function(){for(I=0;I0&&O+N*L>k&&(P=Math.round((x-O)/Math.cos(A*s))):(T=O-N*L,I=O+(1-N)*L,Tk&&(c=k-d.x+c*N,h=-1),(c=Math.min(v,c))c||f.autoRotation&&(M.styles||{}).width)&&(P=c)),P&&(this.shortenLabel?this.shortenLabel():(p.width=Math.floor(P)+"px",(S.style||{}).textOverflow||(p.textOverflow="ellipsis"),M.css(p)))}moveLabel(d,f){let S=this,O=S.label,x=S.axis,D=!1,F;O&&O.textStr===d?(S.movedLabel=O,D=!0,delete S.label):C(x.ticks,function(k){D||k.isNew||k===S||!k.label||k.label.textStr!==d||(S.movedLabel=k.label,D=!0,k.labelPos=S.movedLabel.xy,delete k.label)}),!D&&(S.labelPos||O)&&(F=S.labelPos||O.xy,S.movedLabel=S.createLabel(d,f,F),S.movedLabel&&S.movedLabel.attr({opacity:0}))}render(d,f,S){let O=this.axis,x=O.horiz,D=this.pos,F=y(this.tickmarkOffset,O.tickmarkOffset),k=this.getPosition(x,D,F,f),M=k.x,A=k.y,N=O.pos,L=N+O.len,v=x&&M===L||!x&&A===N?-1:1,p=x?M:A;!O.chart.polar&&this.isNew&&(u(p)L)&&(S=0);let c=y(S,this.label&&this.label.newOpacity,1);S=y(S,1),this.isActive=!0,this.renderGridLine(f,S,v),this.renderMark(k,S,v),this.renderLabel(k,f,c,d),this.isNew=!1,R(this,"afterRender")}renderGridLine(d,f,S){let O=this.axis,x=O.options,D={},F=this.pos,k=this.type,M=y(this.tickmarkOffset,O.tickmarkOffset),A=O.chart.renderer,N=this.gridLine,L,v=x.gridLineWidth,p=x.gridLineColor,c=x.gridLineDashStyle;this.type==="minor"&&(v=x.minorGridLineWidth,p=x.minorGridLineColor,c=x.minorGridLineDashStyle),N||(O.chart.styledMode||(D.stroke=p,D["stroke-width"]=v||0,D.dashstyle=c),k||(D.zIndex=1),d&&(f=0),this.gridLine=N=A.path().attr(D).addClass("highcharts-"+(k?k+"-":"")+"grid-line").add(O.gridGroup)),N&&(L=O.getPlotLinePath({value:F+M,lineWidth:N.strokeWidth()*S,force:"pass",old:d,acrossPanes:!1}))&&N[d||this.isNew?"attr":"animate"]({d:L,opacity:f})}renderMark(d,f,S){let O=this.axis,x=O.options,D=O.chart.renderer,F=this.type,k=O.tickSize(F?F+"Tick":"tick"),M=d.x,A=d.y,N=y(x[F!=="minor"?"tickWidth":"minorTickWidth"],!F&&O.isXAxis?1:0),L=x[F!=="minor"?"tickColor":"minorTickColor"],v=this.mark,p=!v;k&&(O.opposite&&(k[0]=-k[0]),v||(this.mark=v=D.path().addClass("highcharts-"+(F?F+"-":"")+"tick").add(O.axisGroup),O.chart.styledMode||v.attr({stroke:L,"stroke-width":N})),v[p?"attr":"animate"]({d:this.getMarkPath(M,A,k[0],v.strokeWidth()*S,O.horiz,D),opacity:f}))}renderLabel(d,f,S,O){let x=this.axis,D=x.horiz,F=x.options,k=this.label,M=F.labels,A=M.step,N=y(this.tickmarkOffset,x.tickmarkOffset),L=d.x,v=d.y,p=!0;k&&m(L)&&(k.xy=d=this.getLabelPosition(L,v,k,D,M,N,O,A),(!this.isFirst||this.isLast||F.showFirstLabel)&&(!this.isLast||this.isFirst||F.showLastLabel)?!D||M.step||M.rotation||f||S===0||this.handleOverflow(d):p=!1,A&&O%A&&(p=!1),p&&m(d.y)?(d.opacity=S,k[this.isNewLabel?"attr":"animate"](d).show(!0),this.isNewLabel=!1):(k.hide(),this.isNewLabel=!0))}replaceMovedLabel(){let d=this.label,f=this.axis;d&&!this.isNew&&(d.animate({opacity:0},void 0,d.destroy),delete this.label),f.isDirty=!0,this.label=this.movedLabel,delete this.movedLabel}}}),r(n,"Core/Axis/Axis.js",[n["Core/Animation/AnimationUtilities.js"],n["Core/Axis/AxisDefaults.js"],n["Core/Color/Color.js"],n["Core/Defaults.js"],n["Core/Foundation.js"],n["Core/Globals.js"],n["Core/Axis/Tick.js"],n["Core/Utilities.js"]],function(i,o,a,s,l,u,_,g){let{animObject:b}=i,{xAxis:R,yAxis:m}=o,{defaultOptions:E}=s,{registerEventOptions:C}=l,{deg2rad:y}=u,{arrayMax:d,arrayMin:f,clamp:S,correctFloat:O,defined:x,destroyObjectProperties:D,erase:F,error:k,extend:M,fireEvent:A,getClosestDistance:N,insertItem:L,isArray:v,isNumber:p,isString:c,merge:h,normalizeTickInterval:T,objectEach:I,pick:P,relativeLength:w,removeEvent:U,splat:$,syncTimeout:Y}=g,W=(Q,B)=>T(B,void 0,void 0,P(Q.options.allowDecimals,B<.5||Q.tickAmount!==void 0),!!Q.tickAmount);M(E,{xAxis:R,yAxis:h(R,m)});class z{constructor(B,j,q){this.init(B,j,q)}init(B,j,q=this.coll){let G=q==="xAxis",V=this.isZAxis||(B.inverted?!G:G);this.chart=B,this.horiz=V,this.isXAxis=G,this.coll=q,A(this,"init",{userOptions:j}),this.opposite=P(j.opposite,this.opposite),this.side=P(j.side,this.side,V?this.opposite?0:2:this.opposite?1:3),this.setOptions(j);let H=this.options,K=H.labels,X=H.type;this.userOptions=j,this.minPixelPadding=0,this.reversed=P(H.reversed,this.reversed),this.visible=H.visible,this.zoomEnabled=H.zoomEnabled,this.hasNames=X==="category"||H.categories===!0,this.categories=v(H.categories)&&H.categories||(this.hasNames?[]:void 0),this.names||(this.names=[],this.names.keys={}),this.plotLinesAndBandsGroups={},this.positiveValuesOnly=!!this.logarithmic,this.isLinked=x(H.linkedTo),this.ticks={},this.labelEdge=[],this.minorTicks={},this.plotLinesAndBands=[],this.alternateBands={},this.len=0,this.minRange=this.userMinRange=H.minRange||H.maxZoom,this.range=H.range,this.offset=H.offset||0,this.max=void 0,this.min=void 0;let ee=P(H.crosshair,$(B.options.tooltip.crosshairs)[G?0:1]);this.crosshair=ee===!0?{}:ee,B.axes.indexOf(this)===-1&&(G?B.axes.splice(B.xAxis.length,0,this):B.axes.push(this),L(this,B[this.coll])),B.orderItems(this.coll),this.series=this.series||[],B.inverted&&!this.isZAxis&&G&&!x(this.reversed)&&(this.reversed=!0),this.labelRotation=p(K.rotation)?K.rotation:void 0,C(this,H),A(this,"afterInit")}setOptions(B){let j=this.horiz?{labels:{autoRotation:[-45]},margin:15}:{title:{rotation:90*this.side}};this.options=h(j,E[this.coll],B),A(this,"afterSetOptions",{userOptions:B})}defaultLabelFormatter(){let B=this.axis,{numberFormatter:j}=this.chart,q=p(this.value)?this.value:NaN,G=B.chart.time,V=B.categories,H=this.dateTimeLabelFormat,K=E.lang,X=K.numericSymbols,ee=K.numericSymbolMagnitude||1e3,oe=B.logarithmic?Math.abs(q):B.tickInterval,te=X&&X.length,ne,se;if(V)se=`${this.value}`;else if(H)se=G.dateFormat(H,q);else if(te&&X&&oe>=1e3)for(;te--&&se===void 0;)oe>=(ne=Math.pow(ee,te+1))&&10*q%ne==0&&X[te]!==null&&q!==0&&(se=j(q/ne,-1)+X[te]);return se===void 0&&(se=Math.abs(q)>=1e4?j(q,-1):j(q,-1,void 0,"")),se}getSeriesExtremes(){let B,j=this;A(this,"getSeriesExtremes",null,function(){j.hasVisibleSeries=!1,j.dataMin=j.dataMax=j.threshold=void 0,j.softThreshold=!j.isXAxis,j.series.forEach(q=>{if(q.reserveSpace()){let G=q.options,V,H=G.threshold,K,X;if(j.hasVisibleSeries=!0,j.positiveValuesOnly&&0>=(H||0)&&(H=void 0),j.isXAxis)(V=q.xData)&&V.length&&(V=j.logarithmic?V.filter(ee=>ee>0):V,K=(B=q.getXExtremes(V)).min,X=B.max,p(K)||K instanceof Date||(V=V.filter(p),K=(B=q.getXExtremes(V)).min,X=B.max),V.length&&(j.dataMin=Math.min(P(j.dataMin,K),K),j.dataMax=Math.max(P(j.dataMax,X),X)));else{let ee=q.applyExtremes();p(ee.dataMin)&&(K=ee.dataMin,j.dataMin=Math.min(P(j.dataMin,K),K)),p(ee.dataMax)&&(X=ee.dataMax,j.dataMax=Math.max(P(j.dataMax,X),X)),x(H)&&(j.threshold=H),(!G.softThreshold||j.positiveValuesOnly)&&(j.softThreshold=!1)}}})}),A(this,"afterGetSeriesExtremes")}translate(B,j,q,G,V,H){var he;let K=this.linkedParent||this,X=G&&K.old?K.old.min:K.min;if(!p(X))return NaN;let ee=K.minPixelPadding,oe=(K.isOrdinal||((he=K.brokenAxis)==null?void 0:he.hasBreaks)||K.logarithmic&&V)&&K.lin2val,te=1,ne=0,se=G&&K.old?K.old.transA:K.transA,ie=0;if(se||(se=K.transA),q&&(te*=-1,ne=K.len),K.reversed&&(te*=-1,ne-=te*(K.sector||K.len)),j)ie=(B=B*te+ne-ee)/se+X,oe&&(ie=K.lin2val(ie));else{oe&&(B=K.val2lin(B));let Z=te*(B-X)*se;ie=(K.isRadial?Z:O(Z))+ne+te*ee+(p(H)?se*H:0)}return ie}toPixels(B,j){return this.translate(B,!1,!this.horiz,void 0,!0)+(j?0:this.pos)}toValue(B,j){return this.translate(B-(j?0:this.pos),!0,!this.horiz,void 0,!0)}getPlotLinePath(B){let j=this,q=j.chart,G=j.left,V=j.top,H=B.old,K=B.value,X=B.lineWidth,ee=H&&q.oldChartHeight||q.chartHeight,oe=H&&q.oldChartWidth||q.chartWidth,te=j.transB,ne=B.translatedValue,se=B.force,ie,he,Z,J,ae;function ue(le,me,ge){return se!=="pass"&&(lege)&&(se?le=S(le,me,ge):ae=!0),le}let de={value:K,lineWidth:X,old:H,force:se,acrossPanes:B.acrossPanes,translatedValue:ne};return A(this,"getPlotLinePath",de,function(le){ie=Z=Math.round((ne=S(ne=P(ne,j.translate(K,void 0,void 0,H)),-1e5,1e5))+te),he=J=Math.round(ee-ne-te),p(ne)?j.horiz?(he=V,J=ee-j.bottom+(q.scrollablePixelsY||0),ie=Z=ue(ie,G,G+j.width)):(ie=G,Z=oe-j.right+(q.scrollablePixelsX||0),he=J=ue(he,V,V+j.height)):(ae=!0,se=!1),le.path=ae&&!se?void 0:q.renderer.crispLine([["M",ie,he],["L",Z,J]],X||1)}),de.path}getLinearTickPositions(B,j,q){let G,V,H,K=O(Math.floor(j/B)*B),X=O(Math.ceil(q/B)*B),ee=[];if(O(K+B)===K&&(H=20),this.single)return[j];for(G=K;G<=X&&(ee.push(G),(G=O(G+B,H))!==V);)V=G;return ee}getMinorTickInterval(){let{minorTicks:B,minorTickInterval:j}=this.options;return B===!0?P(j,"auto"):B!==!1?j:void 0}getMinorTickPositions(){let B=this.options,j=this.tickPositions,q=this.minorTickInterval,G=this.pointRangePadding||0,V=(this.min||0)-G,H=(this.max||0)+G,K=H-V,X=[],ee;if(K&&K/q{var te;return(oe.xIncrement?(te=oe.xData)==null?void 0:te.slice(0,2):oe.xData)||[]}))||0),this.dataMax-this.dataMin)),p(q)&&p(G)&&p(V)&&q-G=V,H=(V-q+G)/2,X=[G-H,P(B.min,G-H)],K&&(X[2]=j?j.log2lin(this.dataMin):this.dataMin),ee=[(G=d(X))+V,P(B.max,G+V)],K&&(ee[2]=j?j.log2lin(this.dataMax):this.dataMax),(q=f(ee))-GG-V),B=N([q]))}return B&&j?Math.min(B,j):B||j}nameToX(B){let j=v(this.options.categories),q=j?this.categories:this.names,G=B.options.x,V;return B.series.requireSorting=!1,x(G)||(G=this.options.uniqueNames&&q?j?q.indexOf(B.name):P(q.keys[B.name],-1):B.series.autoIncrement()),G===-1?!j&&q&&(V=q.length):V=G,V!==void 0?(this.names[V]=B.name,this.names.keys[B.name]=V):B.x&&(V=B.x),V}updateNames(){let B=this,j=this.names;j.length>0&&(Object.keys(j.keys).forEach(function(q){delete j.keys[q]}),j.length=0,this.minRange=this.userMinRange,(this.series||[]).forEach(q=>{q.xIncrement=null,(!q.points||q.isDirtyData)&&(B.max=Math.max(B.max,q.xData.length-1),q.processData(),q.generatePoints()),q.data.forEach(function(G,V){let H;G!=null&&G.options&&G.name!==void 0&&(H=B.nameToX(G))!==void 0&&H!==G.x&&(G.x=H,q.xData[V]=H)})}))}setAxisTranslation(){let B=this,j=B.max-B.min,q=B.linkedParent,G=!!B.categories,V=B.isXAxis,H=B.axisPointRange||0,K,X=0,ee=0,oe,te=B.transA;(V||G||H)&&(K=B.getClosest(),q?(X=q.minPointOffset,ee=q.pointRangePadding):B.series.forEach(function(ne){let se=G?1:V?P(ne.options.pointRange,K,0):B.axisPointRange||0,ie=ne.options.pointPlacement;if(H=Math.max(H,se),!B.single||G){let he=ne.is("xrange")?!V:V;X=Math.max(X,he&&c(ie)?0:se/2),ee=Math.max(ee,he&&ie==="on"?0:se)}}),oe=B.ordinal&&B.ordinal.slope&&K?B.ordinal.slope/K:1,B.minPointOffset=X*=oe,B.pointRangePadding=ee*=oe,B.pointRange=Math.min(H,B.single&&G?1:j),V&&K&&(B.closestPointRange=K)),B.translationSlope=B.transA=te=B.staticScale||B.len/(j+ee||1),B.transB=B.horiz?B.left:B.bottom,B.minPixelPadding=te*X,A(this,"afterSetAxisTranslation")}minFromRange(){let{max:B,min:j}=this;return p(B)&&p(j)&&B-j||void 0}setTickInterval(B){var xe,Ie,Ue,Ge;let{categories:j,chart:q,dataMax:G,dataMin:V,dateTime:H,isXAxis:K,logarithmic:X,options:ee,softThreshold:oe}=this,te=p(this.threshold)?this.threshold:void 0,ne=this.minRange||0,{ceiling:se,floor:ie,linkedTo:he,softMax:Z,softMin:J}=ee,ae=p(he)&&((xe=q[this.coll])==null?void 0:xe[he]),ue=ee.tickPixelInterval,de=ee.maxPadding,le=ee.minPadding,me=0,ge,_e=p(ee.tickInterval)&&ee.tickInterval>=0?ee.tickInterval:void 0,be,Te,ye,Re;if(H||j||ae||this.getTickAmount(),ye=P(this.userMin,ee.min),Re=P(this.userMax,ee.max),ae?(this.linkedParent=ae,ge=ae.getExtremes(),this.min=P(ge.min,ge.dataMin),this.max=P(ge.max,ge.dataMax),ee.type!==ae.options.type&&k(11,!0,q)):(oe&&x(te)&&p(G)&&p(V)&&(V>=te?(be=te,le=0):G<=te&&(Te=te,de=0)),this.min=P(ye,be,V),this.max=P(Re,Te,G)),p(this.max)&&p(this.min)&&(X&&(this.positiveValuesOnly&&!B&&0>=Math.min(this.min,P(V,this.min))&&k(10,!0,q),this.min=O(X.log2lin(this.min),16),this.max=O(X.log2lin(this.max),16)),this.range&&p(V)&&(this.userMin=this.min=ye=Math.max(V,this.minFromRange()||0),this.userMax=Re=this.max,this.range=void 0)),A(this,"foundExtremes"),this.adjustForMinRange(),p(this.min)&&p(this.max)){if(!p(this.userMin)&&p(J)&&Jthis.max&&(this.max=Re=Z),j||this.axisPointRange||(Ie=this.stacking)!=null&&Ie.usePercentage||ae||!(me=this.max-this.min)||(!x(ye)&&le&&(this.min-=me*le),x(Re)||!de||(this.max+=me*de)),!p(this.userMin)&&p(ie)&&(this.min=Math.max(this.min,ie)),!p(this.userMax)&&p(se)&&(this.max=Math.min(this.max,se)),oe&&p(V)&&p(G)){let ze=te||0;!x(ye)&&this.min=ze?this.min=ee.minRange?Math.min(ze,this.max-ne):ze:!x(Re)&&this.max>ze&&G<=ze&&(this.max=ee.minRange?Math.max(ze,this.min+ne):ze)}!q.polar&&this.min>this.max&&(x(ee.min)?this.max=this.min:x(ee.max)&&(this.min=this.max)),me=this.max-this.min}if(this.min!==this.max&&p(this.min)&&p(this.max)?ae&&!_e&&ue===ae.options.tickPixelInterval?this.tickInterval=_e=ae.tickInterval:this.tickInterval=P(_e,this.tickAmount?me/Math.max(this.tickAmount-1,1):void 0,j?1:me*ue/Math.max(this.len,ue)):this.tickInterval=1,K&&!B){let ze=this.min!==((Ue=this.old)==null?void 0:Ue.min)||this.max!==((Ge=this.old)==null?void 0:Ge.max);this.series.forEach(function(nt){var Ee;nt.forceCrop=(Ee=nt.forceCropping)==null?void 0:Ee.call(nt),nt.processData(ze)}),A(this,"postProcessData",{hasExtremesChanged:ze})}this.setAxisTranslation(),A(this,"initialAxisTranslation"),this.pointRange&&!_e&&(this.tickInterval=Math.max(this.pointRange,this.tickInterval));let Ne=P(ee.minTickInterval,H&&!this.series.some(ze=>ze.noSharedTooltip)?this.closestPointRange:0);!_e&&this.tickIntervalMath.max(2*this.len,200))X=[this.min,this.max],k(19,!1,this.chart);else if(this.dateTime)X=this.getTimeTicks(this.dateTime.normalizeTimeTickInterval(this.tickInterval,B.units),this.min,this.max,B.startOfWeek,(te=this.ordinal)==null?void 0:te.positions,this.closestPointRange,!0);else if(this.logarithmic)X=this.logarithmic.getLogTickPositions(this.tickInterval,this.min,this.max);else{let ne=this.tickInterval,se=ne;for(;se<=2*ne&&(X=this.getLinearTickPositions(this.tickInterval,this.min,this.max),this.tickAmount&&X.length>this.tickAmount);)this.tickInterval=W(this,se*=1.1)}X.length>this.len&&(X=[X[0],X[X.length-1]])[0]===X[1]&&(X.length=1),q&&(this.tickPositions=X,(ee=q.apply(this,[this.min,this.max]))&&(X=ee))}this.tickPositions=X,this.paddedTicks=X.slice(0),this.trimTicks(X,H,K),!this.isLinked&&p(this.min)&&p(this.max)&&(this.single&&X.length<2&&!this.categories&&!this.series.some(ne=>ne.is("heatmap")&&ne.options.pointPlacement==="between")&&(this.min-=.5,this.max+=.5),j||ee||this.adjustTickAmount()),A(this,"afterSetTickPositions")}trimTicks(B,j,q){let G=B[0],V=B[B.length-1],H=!this.isOrdinal&&this.minPointOffset||0;if(A(this,"trimTicks"),!this.isLinked){if(j&&G!==-1/0)this.min=G;else for(;this.min-H>B[0];)B.shift();if(q)this.max=V;else for(;this.max+H{let{horiz:ne,options:se}=te;return[ne?se.left:se.top,se.width,se.height,se.pane].join(",")},oe=ee(this);q[this.coll].forEach(function(te){let{series:ne}=te;ne.length&&ne.some(se=>se.visible)&&te!==j&&ee(te)===oe&&(B=!0,G.push(te))})}if(B&&K){G.forEach(oe=>{let te=oe.getThresholdAlignment(j);p(te)&&X.push(te)});let ee=X.length>1?X.reduce((oe,te)=>oe+=te,0)/X.length:void 0;G.forEach(oe=>{oe.thresholdAlignment=ee})}return B}getThresholdAlignment(B){if((!p(this.dataMin)||this!==B&&this.series.some(j=>j.isDirty||j.isDirtyData))&&this.getSeriesExtremes(),p(this.threshold)){let j=S((this.threshold-(this.dataMin||0))/((this.dataMax||0)-(this.dataMin||0)),0,1);return this.options.reversed&&(j=1-j),j}}getTickAmount(){let B=this.options,j=B.tickPixelInterval,q=B.tickAmount;x(B.tickInterval)||q||!(this.lenH.push(O(H[H.length-1]+se)),Z=()=>H.unshift(O(H[0]-se));if(p(X)&&(ie=X<.5?Math.ceil(X*(K-1)):Math.floor(X*(K-1)),V.reversed&&(ie=K-1-ie)),B.hasData()&&p(G)&&p(q)){let J=()=>{B.transA*=(ee-1)/(K-1),B.min=V.startOnTick?H[0]:Math.min(G,H[0]),B.max=V.endOnTick?H[H.length-1]:Math.max(q,H[H.length-1])};if(p(ie)&&p(B.threshold)){for(;H[ie]!==oe||H.length!==K||H[0]>G||H[H.length-1]B.threshold?Z():he();if(se>8*B.tickInterval)break;se*=2}J()}else if(ee0&&ne{q=q||X.isDirtyData||X.isDirty,G=G||X.xAxis&&X.xAxis.isDirty||!1}),this.setAxisSize();let V=this.len!==(this.old&&this.old.len);V||q||G||this.isLinked||this.forceRedraw||this.userMin!==(this.old&&this.old.userMin)||this.userMax!==(this.old&&this.old.userMax)||this.alignToOthers()?(j&&B==="yAxis"&&j.buildStacks(),this.forceRedraw=!1,this.userMinRange||(this.minRange=void 0),this.getSeriesExtremes(),this.setTickInterval(),j&&B==="xAxis"&&j.buildStacks(),this.isDirty||(this.isDirty=V||this.min!==((H=this.old)==null?void 0:H.min)||this.max!==((K=this.old)==null?void 0:K.max))):j&&j.cleanStacks(),q&&delete this.allExtremes,A(this,"afterSetScale")}setExtremes(B,j,q=!0,G,V){this.series.forEach(H=>{delete H.kdTree}),A(this,"setExtremes",V=M(V,{min:B,max:j}),H=>{this.userMin=H.min,this.userMax=H.max,this.eventArgs=H,q&&this.chart.redraw(G)})}setAxisSize(){let B=this.chart,j=this.options,q=j.offsets||[0,0,0,0],G=this.horiz,V=this.width=Math.round(w(P(j.width,B.plotWidth-q[3]+q[1]),B.plotWidth)),H=this.height=Math.round(w(P(j.height,B.plotHeight-q[0]+q[2]),B.plotHeight)),K=this.top=Math.round(w(P(j.top,B.plotTop+q[0]),B.plotHeight,B.plotTop)),X=this.left=Math.round(w(P(j.left,B.plotLeft+q[3]),B.plotWidth,B.plotLeft));this.bottom=B.chartHeight-H-K,this.right=B.chartWidth-V-X,this.len=Math.max(G?V:H,0),this.pos=G?X:K}getExtremes(){let B=this.logarithmic;return{min:B?O(B.lin2log(this.min)):this.min,max:B?O(B.lin2log(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}}getThreshold(B){let j=this.logarithmic,q=j?j.lin2log(this.min):this.min,G=j?j.lin2log(this.max):this.max;return B===null||B===-1/0?B=q:B===1/0?B=G:q>B?B=q:G15&&j<165?G.align="right":j>195&&j<345&&(G.align="left")}),q.align}tickSize(B){let j=this.options,q=P(j[B==="tick"?"tickWidth":"minorTickWidth"],B==="tick"&&this.isXAxis&&!this.categories?1:0),G=j[B==="tick"?"tickLength":"minorTickLength"],V;q&&G&&(j[B+"Position"]==="inside"&&(G=-G),V=[G,q]);let H={tickSize:V};return A(this,"afterTickSize",H),H.tickSize}labelMetrics(){let B=this.chart.renderer,j=this.ticks,q=j[Object.keys(j)[0]]||{};return this.chart.renderer.fontMetrics(q.label||q.movedLabel||B.box)}unsquish(){let B=this.options.labels,j=this.horiz,q=this.tickInterval,G=this.len/(((this.categories?1:0)+this.max-this.min)/q),V=B.rotation,H=this.labelMetrics().h,K=Math.max(this.max-this.min,0),X=function(se){let ie=se/(G||1);return(ie=ie>1?Math.ceil(ie):1)*q>K&&se!==1/0&&G!==1/0&&K&&(ie=Math.ceil(K/q)),O(ie*q)},ee=q,oe,te=Number.MAX_VALUE,ne;if(j){if(!B.staggerLines&&(p(V)?ne=[V]:G=-90&&he<=90)&&(ie=(se=X(Math.abs(H/Math.sin(y*he))))+Math.abs(he/360))he&&(he=ue.label.textPxLength)}),this.maxLabelLength=he,this.autoRotation)he>ee&&he>te.h?oe.rotation=this.labelRotation:this.labelRotation=0;else if(X&&(se=ee,!ne))for(ie="clip",J=q.length;!K&&J--;)(Z=G[q[J]].label)&&(Z.styles.textOverflow==="ellipsis"?Z.css({textOverflow:"clip"}):Z.textPxLength>X&&Z.css({width:X+"px"}),Z.getBBox().height>this.len/q.length-(te.h-te.f)&&(Z.specificTextOverflow="ellipsis"));oe.rotation&&(se=he>.5*B.chartHeight?.33*B.chartHeight:he,ne||(ie="ellipsis")),this.labelAlign=V.align||this.autoLabelAlign(this.labelRotation),this.labelAlign&&(oe.align=this.labelAlign),q.forEach(function(ae){let ue=G[ae],de=ue&&ue.label,le=H.width,me={};de&&(de.attr(oe),ue.shortenLabel?ue.shortenLabel():se&&!le&&H.whiteSpace!=="nowrap"&&(seV.g(K).attr({zIndex:ee}).addClass(`highcharts-${q.toLowerCase()}${X} `+(this.isRadial?`highcharts-radial-axis${X} `:"")+(G.className||"")).add(B);this.axisGroup||(this.gridGroup=H("grid","-grid",G.gridZIndex),this.axisGroup=H("axis","",G.zIndex),this.labelGroup=H("axis-labels","-labels",G.labels.zIndex))}getOffset(){let B=this,{chart:j,horiz:q,options:G,side:V,ticks:H,tickPositions:K,coll:X}=B,ee=j.inverted&&!B.isZAxis?[1,0,3,2][V]:V,oe=B.hasData(),te=G.title,ne=G.labels,se=p(G.crossing),ie=j.axisOffset,he=j.clipOffset,Z=[-1,1,1,-1][V],J,ae=0,ue,de=0,le=0,me,ge;if(B.showAxis=J=oe||G.showEmpty,B.staggerLines=B.horiz&&ne.staggerLines||void 0,B.createGroups(),oe||B.isLinked?(K.forEach(function(_e){B.generateTick(_e)}),B.renderUnsquish(),B.reserveSpaceDefault=V===0||V===2||{1:"left",3:"right"}[V]===B.labelAlign,P(ne.reserveSpace,!se&&null,B.labelAlign==="center"||null,B.reserveSpaceDefault)&&K.forEach(function(_e){le=Math.max(H[_e].getLabelSize(),le)}),B.staggerLines&&(le*=B.staggerLines),B.labelOffset=le*(B.opposite?-1:1)):I(H,function(_e,be){_e.destroy(),delete H[be]}),te!=null&&te.text&&te.enabled!==!1&&(B.addTitle(J),J&&!se&&te.reserveSpace!==!1&&(B.titleOffset=ae=B.axisTitle.getBBox()[q?"height":"width"],de=x(ue=te.offset)?0:P(te.margin,q?5:10))),B.renderLine(),B.offset=Z*P(G.offset,ie[V]?ie[V]+(G.margin||0):0),B.tickRotCorr=B.tickRotCorr||{x:0,y:0},ge=V===0?-B.labelMetrics().h:V===2?B.tickRotCorr.y:0,me=Math.abs(le)+de,le&&(me-=ge,me+=Z*(q?P(ne.y,B.tickRotCorr.y+Z*ne.distance):P(ne.x,Z*ne.distance))),B.axisTitleMargin=P(ue,me),B.getMaxLabelDimensions&&(B.maxLabelDimensions=B.getMaxLabelDimensions(H,K)),X!=="colorAxis"){let _e=this.tickSize("tick");ie[V]=Math.max(ie[V],(B.axisTitleMargin||0)+ae+Z*B.offset,me,K&&K.length&&_e?_e[0]+Z*B.offset:0);let be=!B.axisLine||G.offset?0:2*Math.floor(B.axisLine.strokeWidth()/2);he[ee]=Math.max(he[ee],be)}A(this,"afterGetOffset")}getLinePath(B){let j=this.chart,q=this.opposite,G=this.offset,V=this.horiz,H=this.left+(q?this.width:0)+G,K=j.chartHeight-this.bottom-(q?this.height:0)+G;return q&&(B*=-1),j.renderer.crispLine([["M",V?this.left:H,V?K:this.top],["L",V?j.chartWidth-this.right:H,V?K:j.chartHeight-this.bottom]],B)}renderLine(){this.axisLine||(this.axisLine=this.chart.renderer.path().addClass("highcharts-axis-line").add(this.axisGroup),this.chart.styledMode||this.axisLine.attr({stroke:this.options.lineColor,"stroke-width":this.options.lineWidth,zIndex:7}))}getTitlePosition(B){let j=this.horiz,q=this.left,G=this.top,V=this.len,H=this.options.title,K=j?q:G,X=this.opposite,ee=this.offset,oe=H.x,te=H.y,ne=this.chart.renderer.fontMetrics(B),se=B?Math.max(B.getBBox(!1,0).height-ne.h-1,0):0,ie={low:K+(j?0:V),middle:K+V/2,high:K+(j?V:0)}[H.align],he=(j?G+this.height:q)+(j?1:-1)*(X?-1:1)*(this.axisTitleMargin||0)+[-se,se,ne.f,-se][this.side],Z={x:j?ie+oe:he+(X?this.width:0)+ee+oe,y:j?he+te-(X?this.height:0)+ee:ie+te};return A(this,"afterGetTitlePosition",{titlePosition:Z}),Z}renderMinorTick(B,j){let q=this.minorTicks;q[B]||(q[B]=new _(this,B,"minor")),j&&q[B].isNew&&q[B].render(null,!0),q[B].render(null,!1,1)}renderTick(B,j,q){let G=this.isLinked,V=this.ticks;(!G||B>=this.min&&B<=this.max||this.grid&&this.grid.isColumn)&&(V[B]||(V[B]=new _(this,B)),q&&V[B].isNew&&V[B].render(j,!0,-1),V[B].render(j))}render(){let B,j,q=this,G=q.chart,V=q.logarithmic,H=G.renderer,K=q.options,X=q.isLinked,ee=q.tickPositions,oe=q.axisTitle,te=q.ticks,ne=q.minorTicks,se=q.alternateBands,ie=K.stackLabels,he=K.alternateGridColor,Z=K.crossing,J=q.tickmarkOffset,ae=q.axisLine,ue=q.showAxis,de=b(H.globalAnimation);if(q.labelEdge.length=0,q.overlap=!1,[te,ne,se].forEach(function(le){I(le,function(me){me.isActive=!1})}),p(Z)){let le=this.isXAxis?G.yAxis[0]:G.xAxis[0],me=[1,-1,-1,1][this.side];if(le){let ge=le.toPixels(Z,!0);q.horiz&&(ge=le.len-ge),q.offset=me*ge}}if(q.hasData()||X){let le=q.chart.hasRendered&&q.old&&p(q.old.min);q.minorTickInterval&&!q.categories&&q.getMinorTickPositions().forEach(function(me){q.renderMinorTick(me,le)}),ee.length&&(ee.forEach(function(me,ge){q.renderTick(me,ge,le)}),J&&(q.min===0||q.single)&&(te[-1]||(te[-1]=new _(q,-1,null,!0)),te[-1].render(-1))),he&&ee.forEach(function(me,ge){j=ee[ge+1]!==void 0?ee[ge+1]+J:q.max-J,ge%2==0&&me=.5)m=Math.round(m),O=d.getLinearTickPositions(m,E,C);else if(m>=.08){let x,D,F,k,M,A,N,L=Math.floor(E);for(x=m>.3?[1,2,4]:m>.15?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9],D=L;DE&&(!y||A<=C)&&A!==void 0&&O.push(A),A>C&&(N=!0),A=M}else{let x=this.lin2log(E),D=this.lin2log(C),F=y?d.getMinorTickInterval():S.tickInterval,k=S.tickPixelInterval/(y?5:1),M=y?f/d.tickPositions.length:f;m=s(m=l(F==="auto"?null:F,this.minorAutoInterval,(D-x)*k/(M||1))),O=d.getLinearTickPositions(m,x,D).map(this.log2lin),y||(this.minorAutoInterval=m/5)}return y||(d.tickInterval=m),O}lin2log(m){return Math.pow(10,m)}log2lin(m){return Math.log(m)/Math.LN10}}u.Additions=b}(o||(o={})),o}),r(n,"Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js",[n["Core/Utilities.js"]],function(i){var o;let{erase:a,extend:s,isNumber:l}=i;return function(u){let _;function g(d){return this.addPlotBandOrLine(d,"plotBands")}function b(d,f){let S=this.userOptions,O=new _(this,d);if(this.visible&&(O=O.render()),O){if(this._addedPlotLB||(this._addedPlotLB=!0,(S.plotLines||[]).concat(S.plotBands||[]).forEach(x=>{this.addPlotBandOrLine(x)})),f){let x=S[f]||[];x.push(d),S[f]=x}this.plotLinesAndBands.push(O)}return O}function R(d){return this.addPlotBandOrLine(d,"plotLines")}function m(d,f,S){S=S||this.options;let O=this.getPlotLinePath({value:f,force:!0,acrossPanes:S.acrossPanes}),x=[],D=this.horiz,F=!l(this.min)||!l(this.max)||dthis.max&&f>this.max,k=this.getPlotLinePath({value:d,force:!0,acrossPanes:S.acrossPanes}),M,A=1,N;if(k&&O)for(F&&(N=k.toString()===O.toString(),A=0),M=0;M{c==null||c.on(W,z=>{x[W].apply(this,[z])})}),this.eventsAdded=!0),(w||!c.d)&&(h!=null&&h.length)?c.attr({d:h}):c&&(h?(c.show(),c.animate({d:h})):c.d&&(c.hide(),p&&(this.label=p=p.destroy()))),v&&(l(v.text)||l(v.formatter))&&(h!=null&&h.length)&&y.width>0&&y.height>0&&!h.isFlat?(v=b({align:f&&I&&"center",x:f?!I&&4:10,verticalAlign:!f&&I&&"middle",y:f?I?16:10:I?6:-4,rotation:f&&!I&&90},v),this.renderLabel(v,h,I,D)):p&&p.hide(),this}renderLabel(y,d,f,S){let O=this.axis,x=O.chart.renderer,D=this.label;D||(this.label=D=x.text(this.getLabelText(y),0,0,y.useHTML).attr({align:y.textAlign||y.align,rotation:y.rotation,class:"highcharts-plot-"+(f?"band":"line")+"-label"+(y.className||""),zIndex:S}),O.chart.styledMode||D.css(b({fontSize:"0.8em",textOverflow:"ellipsis"},y.style)),D.add());let F=d.xBounds||[d[0][1],d[1][1],f?d[2][1]:d[0][1]],k=d.yBounds||[d[0][2],d[1][2],f?d[2][2]:d[0][2]],M=s(F),A=s(k);if(D.align(y,!1,{x:M,y:A,width:a(F)-M,height:a(k)-A}),!D.alignValue||D.alignValue==="left"){let N=y.clip?O.width:O.chart.chartWidth;D.css({width:(D.rotation===90?O.height-(D.alignAttr.y-O.top):N-(D.alignAttr.x-O.left))+"px"})}D.show(!0)}getLabelText(y){return l(y.formatter)?y.formatter.call(this):y.text}destroy(){_(this.axis.plotLinesAndBands,this),delete this.axis,u(this)}}return E}),r(n,"Core/Tooltip.js",[n["Core/Templating.js"],n["Core/Globals.js"],n["Core/Renderer/RendererUtilities.js"],n["Core/Renderer/RendererRegistry.js"],n["Core/Utilities.js"]],function(i,o,a,s,l){var u;let{format:_}=i,{composed:g,doc:b,isSafari:R}=o,{distribute:m}=a,{addEvent:E,clamp:C,css:y,discardElement:d,extend:f,fireEvent:S,isArray:O,isNumber:x,isString:D,merge:F,pick:k,pushUnique:M,splat:A,syncTimeout:N}=l;class L{constructor(p,c,h){this.allowShared=!0,this.crosshairs=[],this.distance=0,this.isHidden=!0,this.isSticky=!1,this.now={},this.options={},this.outside=!1,this.chart=p,this.init(p,c),this.pointer=h}bodyFormatter(p){return p.map(function(c){let h=c.series.tooltipOptions;return(h[(c.point.formatPrefix||"point")+"Formatter"]||c.point.tooltipFormatter).call(c.point,h[(c.point.formatPrefix||"point")+"Format"]||"")})}cleanSplit(p){this.chart.series.forEach(function(c){let h=c&&c.tt;h&&(!h.isActive||p?c.tt=h.destroy():h.isActive=!1)})}defaultFormatter(p){let c,h=this.points||A(this);return(c=(c=[p.tooltipFooterHeaderFormatter(h[0])]).concat(p.bodyFormatter(h))).push(p.tooltipFooterHeaderFormatter(h[0],!0)),c}destroy(){this.label&&(this.label=this.label.destroy()),this.split&&(this.cleanSplit(!0),this.tt&&(this.tt=this.tt.destroy())),this.renderer&&(this.renderer=this.renderer.destroy(),d(this.container)),l.clearTimeout(this.hideTimer),l.clearTimeout(this.tooltipTimeout)}getAnchor(p,c){let h,{chart:T,pointer:I}=this,P=T.inverted,w=T.plotTop,U=T.plotLeft;if((p=A(p))[0].series&&p[0].series.yAxis&&!p[0].series.yAxis.options.reversedStacks&&(p=p.slice().reverse()),this.followPointer&&c)c.chartX===void 0&&(c=I.normalize(c)),h=[c.chartX-U,c.chartY-w];else if(p[0].tooltipPos)h=p[0].tooltipPos;else{let $=0,Y=0;p.forEach(function(W){let z=W.pos(!0);z&&($+=z[0],Y+=z[1])}),$/=p.length,Y/=p.length,this.shared&&p.length>1&&c&&(P?$=c.chartX:Y=c.chartY),h=[$-U,Y-w]}return h.map(Math.round)}getClassName(p,c,h){let T=this.options,I=p.series,P=I.options;return[T.className,"highcharts-label",h&&"highcharts-tooltip-header",c?"highcharts-tooltip-box":"highcharts-tooltip",!h&&"highcharts-color-"+k(p.colorIndex,I.colorIndex),P&&P.className].filter(D).join(" ")}getLabel(){let p=this,c=this.chart.styledMode,h=this.options,T=this.split&&this.allowShared,I=this.container,P=this.chart.renderer;if(this.label){let w=!this.label.hasClass("highcharts-label");(!T&&w||T&&!w)&&this.destroy()}if(!this.label){if(this.outside){let w=this.chart.options.chart.style,U=s.getRendererType();this.container=I=o.doc.createElement("div"),I.className="highcharts-tooltip-container",y(I,{position:"absolute",top:"1px",pointerEvents:"none",zIndex:Math.max(this.options.style.zIndex||0,(w&&w.zIndex||0)+3)}),this.renderer=P=new U(I,0,0,w,void 0,void 0,P.styledMode)}if(T?this.label=P.g("tooltip"):(this.label=P.label("",0,0,h.shape,void 0,void 0,h.useHTML,void 0,"tooltip").attr({padding:h.padding,r:h.borderRadius}),c||this.label.attr({fill:h.backgroundColor,"stroke-width":h.borderWidth||0}).css(h.style).css({pointerEvents:h.style.pointerEvents||(this.shouldStickOnContact()?"auto":"none")})),p.outside){let w=this.label,{xSetter:U,ySetter:$}=w;w.xSetter=function(Y){U.call(w,p.distance),I&&(I.style.left=Y+"px")},w.ySetter=function(Y){$.call(w,p.distance),I&&(I.style.top=Y+"px")}}this.label.attr({zIndex:8}).shadow(h.shadow).add()}return I&&!I.parentElement&&o.doc.body.appendChild(I),this.label}getPlayingField(){let{body:p,documentElement:c}=b,{chart:h,distance:T,outside:I}=this;return{width:I?Math.max(p.scrollWidth,c.scrollWidth,p.offsetWidth,c.offsetWidth,c.clientWidth)-2*T:h.chartWidth,height:I?Math.max(p.scrollHeight,c.scrollHeight,p.offsetHeight,c.offsetHeight,c.clientHeight):h.chartHeight}}getPosition(p,c,h){var ae,ue;let{distance:T,chart:I,outside:P,pointer:w}=this,{inverted:U,plotLeft:$,plotTop:Y,polar:W}=I,{plotX:z=0,plotY:Q=0}=h,B={},j=U&&h.h||0,{height:q,width:G}=this.getPlayingField(),V=w.getChartPosition(),H=de=>de*V.scaleX,K=de=>de*V.scaleY,X=de=>{let le=de==="x";return[de,le?G:q,le?p:c].concat(P?[le?H(p):K(c),le?V.left-T+H(z+$):V.top-T+K(Q+Y),0,le?G:q]:[le?p:c,le?z+$:Q+Y,le?$:Y,le?$+I.plotWidth:Y+I.plotHeight])},ee=X("y"),oe=X("x"),te,ne=!!h.negative;!W&&((ue=(ae=I.hoverSeries)==null?void 0:ae.yAxis)!=null&&ue.reversed)&&(ne=!ne);let se=!this.followPointer&&k(h.ttBelow,!W&&!U===ne),ie=function(de,le,me,ge,_e,be,Te){let ye=P?de==="y"?K(T):H(T):T,Re=(me-ge)/2,Ne=ge<_e-T,xe=_e+T+gele?Ue:Ue+j)}},he=function(de,le,me,ge,_e){if(_ele-T)return!1;_ele-ge/2?B[de]=le-ge-2:B[de]=_e-me/2},Z=function(de){[ee,oe]=[oe,ee],te=de},J=()=>{ie.apply(0,ee)!==!1?he.apply(0,oe)!==!1||te||(Z(!0),J()):te?B.x=B.y=0:(Z(!0),J())};return(U&&!W||this.len>1)&&Z(),J(),B}hide(p){let c=this;l.clearTimeout(this.hideTimer),p=k(p,this.options.hideDelay),this.isHidden||(this.hideTimer=N(function(){let h=c.getLabel();c.getLabel().animate({opacity:0},{duration:p&&150,complete:()=>{h.hide(),c.container&&c.container.remove()}}),c.isHidden=!0},p))}init(p,c){this.chart=p,this.options=c,this.crosshairs=[],this.now={x:0,y:0},this.isHidden=!0,this.split=c.split&&!p.inverted&&!p.polar,this.shared=c.shared||this.split,this.outside=k(c.outside,!!(p.scrollablePixelsX||p.scrollablePixelsY))}shouldStickOnContact(p){return!!(!this.followPointer&&this.options.stickOnContact&&(!p||this.pointer.inClass(p.target,"highcharts-tooltip")))}move(p,c,h,T){let I=this,P=I.now,w=I.options.animation!==!1&&!I.isHidden&&(Math.abs(p-P.x)>1||Math.abs(c-P.y)>1),U=I.followPointer||I.len>1;f(P,{x:w?(2*P.x+p)/3:p,y:w?(P.y+c)/2:c,anchorX:U?void 0:w?(2*P.anchorX+h)/3:h,anchorY:U?void 0:w?(P.anchorY+T)/2:T}),I.getLabel().attr(P),I.drawTracker(),w&&(l.clearTimeout(this.tooltipTimeout),this.tooltipTimeout=setTimeout(function(){I&&I.move(p,c,h,T)},32))}refresh(p,c){let{chart:h,options:T,pointer:I,shared:P}=this,w=A(p),U=w[0],$=[],Y=T.format,W=T.formatter||this.defaultFormatter,z=h.styledMode,Q={};if(!T.enabled||!U.series)return;l.clearTimeout(this.hideTimer),this.allowShared=!(!O(p)&&p.series&&p.series.noSharedTooltip),this.followPointer=!this.split&&U.series.tooltipOptions.followPointer;let B=this.getAnchor(p,c),j=B[0],q=B[1];P&&this.allowShared?(I.applyInactiveState(w),w.forEach(function(H){H.setState("hover"),$.push(H.getLabelConfig())}),(Q=U.getLabelConfig()).points=$):Q=U.getLabelConfig(),this.len=$.length;let G=D(Y)?_(Y,Q,h):W.call(Q,this),V=U.series;if(this.distance=k(V.tooltipOptions.distance,16),G===!1)this.hide();else{if(this.split&&this.allowShared)this.renderSplit(G,w);else{let H=j,K=q;if(c&&I.isDirectTouch&&(H=c.chartX-h.plotLeft,K=c.chartY-h.plotTop),h.polar||V.options.clip===!1||w.some(X=>I.isDirectTouch||X.series.shouldShowTooltip(H,K))){let X=this.getLabel();(!T.style.width||z)&&X.css({width:(this.outside?this.getPlayingField():h.spacingBox).width+"px"}),X.attr({text:G&&G.join?G.join(""):G}),X.addClass(this.getClassName(U),!0),z||X.attr({stroke:T.borderColor||U.color||V.color||"#666666"}),this.updatePosition({plotX:j,plotY:q,negative:U.negative,ttBelow:U.ttBelow,h:B[2]||0})}else{this.hide();return}}this.isHidden&&this.label&&this.label.attr({opacity:1}).show(),this.isHidden=!1}S(this,"refresh")}renderSplit(p,c){var le;let h=this,{chart:T,chart:{chartWidth:I,chartHeight:P,plotHeight:w,plotLeft:U,plotTop:$,scrollablePixelsY:Y=0,scrollablePixelsX:W,styledMode:z},distance:Q,options:B,options:{positioner:j},pointer:q}=h,{scrollLeft:G=0,scrollTop:V=0}=((le=T.scrollablePlotArea)==null?void 0:le.scrollingContainer)||{},H=h.outside&&typeof W!="number"?b.documentElement.getBoundingClientRect():{left:G,right:G+I,top:V,bottom:V+P},K=h.getLabel(),X=this.renderer||T.renderer,ee=!!(T.xAxis[0]&&T.xAxis[0].opposite),{left:oe,top:te}=q.getChartPosition(),ne=$+V,se=0,ie=w-Y;function he(me,ge,_e,be,Te=!0){let ye,Re;return _e?(ye=ee?0:ie,Re=C(me-be/2,H.left,H.right-be-(h.outside?oe:0))):(ye=ge-ne,Re=C(Re=Te?me-be-Q:me+Q,Te?Re:H.left,H.right)),{x:Re,y:ye}}D(p)&&(p=[!1,p]);let Z=p.slice(0,c.length+1).reduce(function(me,ge,_e){if(ge!==!1&&ge!==""){let be=c[_e-1]||{isHeader:!0,plotX:c[0].plotX,plotY:w,series:{}},Te=be.isHeader,ye=Te?h:be.series,Re=ye.tt=function(Ge,ze,nt){let Ee=Ge,{isHeader:Se,series:ve}=ze;if(!Ee){let Ae={padding:B.padding,r:B.borderRadius};z||(Ae.fill=B.backgroundColor,Ae["stroke-width"]=B.borderWidth??1),Ee=X.label("",0,0,B[Se?"headerShape":"shape"],void 0,void 0,B.useHTML).addClass(h.getClassName(ze,!0,Se)).attr(Ae).add(K)}return Ee.isActive=!0,Ee.attr({text:nt}),z||Ee.css(B.style).attr({stroke:B.borderColor||ze.color||ve.color||"#333333"}),Ee}(ye.tt,be,ge.toString()),Ne=Re.getBBox(),xe=Ne.width+Re.strokeWidth();Te&&(se=Ne.height,ie+=se,ee&&(ne-=se));let{anchorX:Ie,anchorY:Ue}=function(Ge){let ze,nt,{isHeader:Ee,plotX:Se=0,plotY:ve=0,series:Ae}=Ge;if(Ee)ze=Math.max(U+Se,U),nt=$+w/2;else{let{xAxis:Pe,yAxis:$e}=Ae;ze=Pe.pos+C(Se,-Q,Pe.len+Q),Ae.shouldShowTooltip(0,$e.pos-$+ve,{ignoreX:!0})&&(nt=$e.pos+ve)}return{anchorX:ze=C(ze,H.left-Q,H.right+Q),anchorY:nt}}(be);if(typeof Ue=="number"){let Ge=Ne.height+1,ze=j?j.call(h,xe,Ge,be):he(Ie,Ue,Te,xe);me.push({align:j?0:void 0,anchorX:Ie,anchorY:Ue,boxWidth:xe,point:be,rank:k(ze.rank,Te?1:0),size:Ge,target:ze.y,tt:Re,x:ze.x})}else Re.isActive=!1}return me},[]);!j&&Z.some(me=>{let{outside:ge}=h,_e=(ge?oe:0)+me.anchorX;return _e_e})&&(Z=Z.map(me=>{let{x:ge,y:_e}=he(me.anchorX,me.anchorY,me.point.isHeader,me.boxWidth,!1);return f(me,{target:_e,x:ge})})),h.cleanSplit(),m(Z,ie);let J={left:oe,right:oe};Z.forEach(function(me){let{x:ge,boxWidth:_e,isHeader:be}=me;!be&&(h.outside&&oe+geJ.right&&(J.right=oe+ge))}),Z.forEach(function(me){let{x:ge,anchorX:_e,anchorY:be,pos:Te,point:{isHeader:ye}}=me,Re={visibility:Te===void 0?"hidden":"inherit",x:ge,y:(Te||0)+ne,anchorX:_e,anchorY:be};if(h.outside&&ge<_e){let Ne=oe-J.left;Ne>0&&(ye||(Re.x=ge+Ne,Re.anchorX=_e+Ne),ye&&(Re.x=(J.right-J.left)/2,Re.anchorX=_e+Ne))}me.tt.attr(Re)});let{container:ae,outside:ue,renderer:de}=h;if(ue&&ae&&de){let{width:me,height:ge,x:_e,y:be}=K.getBBox();de.setSize(me+_e,ge+be,!1),ae.style.left=J.left+"px",ae.style.top=te+"px"}R&&K.attr({opacity:K.opacity===1?.999:1})}drawTracker(){if(!this.shouldStickOnContact()){this.tracker&&(this.tracker=this.tracker.destroy());return}let p=this.chart,c=this.label,h=this.shared?p.hoverPoints:p.hoverPoint;if(!c||!h)return;let T={x:0,y:0,width:0,height:0},I=this.getAnchor(h),P=c.getBBox();I[0]+=p.plotLeft-(c.translateX||0),I[1]+=p.plotTop-(c.translateY||0),T.x=Math.min(0,I[0]),T.y=Math.min(0,I[1]),T.width=I[0]<0?Math.max(Math.abs(I[0]),P.width-I[0]):Math.max(Math.abs(I[0]),P.width),T.height=I[1]<0?Math.max(Math.abs(I[1]),P.height-Math.abs(I[1])):Math.max(Math.abs(I[1]),P.height),this.tracker?this.tracker.attr(T):(this.tracker=c.renderer.rect(T).addClass("highcharts-tracker").add(c),p.styledMode||this.tracker.attr({fill:"rgba(0,0,0,0)"}))}styledModeFormat(p){return p.replace('style="font-size: 0.8em"','class="highcharts-header"').replace(/style="color:{(point|series)\.color}"/g,'class="highcharts-color-{$1.colorIndex} {series.options.className} {point.options.className}"')}tooltipFooterHeaderFormatter(p,c){let h=p.series,T=h.tooltipOptions,I=h.xAxis,P=I&&I.dateTime,w={isFooter:c,labelConfig:p},U=T.xDateFormat,$=T[c?"footerFormat":"headerFormat"];return S(this,"headerFormatter",w,function(Y){P&&!U&&x(p.key)&&(U=P.getXDateFormat(p.key,T.dateTimeLabelFormats)),P&&U&&(p.point&&p.point.tooltipDateKeys||["key"]).forEach(function(W){$=$.replace("{point."+W+"}","{point."+W+":"+U+"}")}),h.chart.styledMode&&($=this.styledModeFormat($)),Y.text=_($,{point:p,series:h},this.chart)}),w.text}update(p){this.destroy(),this.init(this.chart,F(!0,this.options,p))}updatePosition(p){let{chart:c,container:h,distance:T,options:I,pointer:P,renderer:w}=this,{height:U=0,width:$=0}=this.getLabel(),{left:Y,top:W,scaleX:z,scaleY:Q}=P.getChartPosition(),B=(I.positioner||this.getPosition).call(this,$,U,p),j=(p.plotX||0)+c.plotLeft,q=(p.plotY||0)+c.plotTop,G;w&&h&&(I.positioner&&(B.x+=Y-T,B.y+=W-T),G=(I.borderWidth||0)+2*T+2,w.setSize($+G,U+G,!1),(z!==1||Q!==1)&&(y(h,{transform:`scale(${z}, ${Q})`}),j*=z,q*=Q),j+=Y-B.x,q+=W-B.y),this.move(Math.round(B.x),Math.round(B.y||0),j,q)}}return(u=L||(L={})).compose=function(v){M(g,"Core.Tooltip")&&E(v,"afterInit",function(){let p=this.chart;p.options.tooltip&&(p.tooltip=new u(p,p.options.tooltip,this))})},L}),r(n,"Core/Series/Point.js",[n["Core/Renderer/HTML/AST.js"],n["Core/Animation/AnimationUtilities.js"],n["Core/Defaults.js"],n["Core/Templating.js"],n["Core/Utilities.js"]],function(i,o,a,s,l){let{animObject:u}=o,{defaultOptions:_}=a,{format:g}=s,{addEvent:b,erase:R,extend:m,fireEvent:E,getNestedProperty:C,isArray:y,isFunction:d,isNumber:f,isObject:S,pick:O,syncTimeout:x,removeEvent:D,uniqueKey:F}=l;class k{animateBeforeDestroy(){let A=this,N={x:A.startXPos,opacity:0},L=A.getGraphicalProps();L.singular.forEach(function(v){A[v]=A[v].animate(v==="dataLabel"?{x:A[v].startXPos,y:A[v].startYPos,opacity:0}:N)}),L.plural.forEach(function(v){A[v].forEach(function(p){p.element&&p.animate(m({x:A.startXPos},p.startYPos?{x:p.startXPos,y:p.startYPos}:{}))})})}applyOptions(A,N){let L=this.series,v=L.options.pointValKey||L.pointValKey;return m(this,A=k.prototype.optionsToObject.call(this,A)),this.options=this.options?m(this.options,A):A,A.group&&delete this.group,A.dataLabels&&delete this.dataLabels,v&&(this.y=k.prototype.getNestedProperty.call(this,v)),this.selected&&(this.state="select"),"name"in this&&N===void 0&&L.xAxis&&L.xAxis.hasNames&&(this.x=L.xAxis.nameToX(this)),this.x===void 0&&L?N===void 0?this.x=L.autoIncrement():this.x=N:f(A.x)&&L.options.relativeXValue&&(this.x=L.autoIncrement(A.x)),this.isNull=this.isValid&&!this.isValid(),this.formatPrefix=this.isNull?"null":"point",this}destroy(){if(!this.destroyed){let A=this,N=A.series,L=N.chart,v=N.options.dataSorting,p=L.hoverPoints,c=u(A.series.chart.renderer.globalAnimation),h=()=>{for(let T in(A.graphic||A.graphics||A.dataLabel||A.dataLabels)&&(D(A),A.destroyElements()),A)delete A[T]};A.legendItem&&L.legend.destroyItem(A),p&&(A.setState(),R(p,A),p.length||(L.hoverPoints=null)),A===L.hoverPoint&&A.onMouseOut(),v&&v.enabled?(this.animateBeforeDestroy(),x(h,c.duration)):h(),L.pointCount--}this.destroyed=!0}destroyElements(A){let N=this,L=N.getGraphicalProps(A);L.singular.forEach(function(v){N[v]=N[v].destroy()}),L.plural.forEach(function(v){N[v].forEach(function(p){p&&p.element&&p.destroy()}),delete N[v]})}firePointEvent(A,N,L){let v=this,p=this.series.options;v.manageEvent(A),A==="click"&&p.allowPointSelect&&(L=function(c){!v.destroyed&&v.select&&v.select(null,c.ctrlKey||c.metaKey||c.shiftKey)}),E(v,A,N,L)}getClassName(){return"highcharts-point"+(this.selected?" highcharts-point-select":"")+(this.negative?" highcharts-negative":"")+(this.isNull?" highcharts-null-point":"")+(this.colorIndex!==void 0?" highcharts-color-"+this.colorIndex:"")+(this.options.className?" "+this.options.className:"")+(this.zone&&this.zone.className?" "+this.zone.className.replace("highcharts-negative",""):"")}getGraphicalProps(A){let N,L,v=this,p=[],c={singular:[],plural:[]};for((A=A||{graphic:1,dataLabel:1}).graphic&&p.push("graphic","connector"),A.dataLabel&&p.push("dataLabel","dataLabelPath","dataLabelUpper"),L=p.length;L--;)v[N=p[L]]&&c.singular.push(N);return["graphic","dataLabel"].forEach(function(h){let T=h+"s";A[h]&&v[T]&&c.plural.push(T)}),c}getLabelConfig(){return{x:this.category,y:this.y,color:this.color,colorIndex:this.colorIndex,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}}getNestedProperty(A){return A?A.indexOf("custom.")===0?C(A,this.options):this[A]:void 0}getZone(){let A=this.series,N=A.zones,L=A.zoneAxis||"y",v,p=0;for(v=N[0];this[L]>=v.value;)v=N[++p];return this.nonZonedColor||(this.nonZonedColor=this.color),v&&v.color&&!this.options.color?this.color=v.color:this.color=this.nonZonedColor,v}hasNewShapeType(){return(this.graphic&&(this.graphic.symbolName||this.graphic.element.nodeName))!==this.shapeType}constructor(A,N,L){this.formatPrefix="point",this.visible=!0,this.series=A,this.applyOptions(N,L),this.id??(this.id=F()),this.resolveColor(),A.chart.pointCount++,E(this,"afterInit")}isValid(){return(f(this.x)||this.x instanceof Date)&&f(this.y)}optionsToObject(A){let N=this.series,L=N.options.keys,v=L||N.pointArrayMap||["y"],p=v.length,c={},h,T=0,I=0;if(f(A)||A===null)c[v[0]]=A;else if(y(A))for(!L&&A.length>p&&((h=typeof A[0])=="string"?c.name=A[0]:h==="number"&&(c.x=A[0]),T++);I0?k.prototype.setNestedProperty(c,A[T],v[I]):c[v[I]]=A[T]),T++,I++;else typeof A=="object"&&(c=A,A.dataLabels&&(N.hasDataLabels=()=>!0),A.marker&&(N._hasPointMarkers=!0));return c}pos(A,N=this.plotY){if(!this.destroyed){let{plotX:L,series:v}=this,{chart:p,xAxis:c,yAxis:h}=v,T=0,I=0;if(f(L)&&f(N))return A&&(T=c?c.pos:p.plotLeft,I=h?h.pos:p.plotTop),p.inverted&&c&&h?[h.len-N+I,c.len-L+T]:[L+T,N+I]}}resolveColor(){let A=this.series,N=A.chart.options.chart,L=A.chart.styledMode,v,p,c=N.colorCount,h;delete this.nonZonedColor,A.options.colorByPoint?(L||(v=(p=A.options.colors||A.chart.options.colors)[A.colorCounter],c=p.length),h=A.colorCounter,A.colorCounter++,A.colorCounter===c&&(A.colorCounter=0)):(L||(v=A.color),h=A.colorIndex),this.colorIndex=O(this.options.colorIndex,h),this.color=O(this.options.color,v)}setNestedProperty(A,N,L){return L.split(".").reduce(function(v,p,c,h){let T=h.length-1===c;return v[p]=T?N:S(v[p],!0)?v[p]:{},v[p]},A),A}shouldDraw(){return!this.isNull}tooltipFormatter(A){let N=this.series,L=N.tooltipOptions,v=O(L.valueDecimals,""),p=L.valuePrefix||"",c=L.valueSuffix||"";return N.chart.styledMode&&(A=N.chart.tooltip.styledModeFormat(A)),(N.pointArrayMap||["y"]).forEach(function(h){h="{point."+h,(p||c)&&(A=A.replace(RegExp(h+"}","g"),p+h+"}"+c)),A=A.replace(RegExp(h+"}","g"),h+":,."+v+"f}")}),g(A,{point:this,series:this.series},N.chart)}update(A,N,L,v){let p,c=this,h=c.series,T=c.graphic,I=h.chart,P=h.options;function w(){c.applyOptions(A);let U=T&&c.hasMockGraphic,$=c.y===null?!U:U;T&&$&&(c.graphic=T.destroy(),delete c.hasMockGraphic),S(A,!0)&&(T&&T.element&&A&&A.marker&&A.marker.symbol!==void 0&&(c.graphic=T.destroy()),A!=null&&A.dataLabels&&c.dataLabel&&(c.dataLabel=c.dataLabel.destroy())),p=c.index,h.updateParallelArrays(c,p),P.data[p]=S(P.data[p],!0)||S(A,!0)?c.options:O(A,P.data[p]),h.isDirty=h.isDirtyData=!0,!h.fixedBox&&h.hasCartesianSeries&&(I.isDirtyBox=!0),P.legendType==="point"&&(I.isDirtyLegend=!0),N&&I.redraw(L)}N=O(N,!0),v===!1?w():c.firePointEvent("update",{options:A},w)}remove(A,N){this.series.removePoint(this.series.data.indexOf(this),A,N)}select(A,N){let L=this,v=L.series,p=v.chart;A=O(A,!L.selected),this.selectedStaging=A,L.firePointEvent(A?"select":"unselect",{accumulate:N},function(){L.selected=L.options.selected=A,v.options.data[v.data.indexOf(L)]=L.options,L.setState(A&&"select"),N||p.getSelectedPoints().forEach(function(c){let h=c.series;c.selected&&c!==L&&(c.selected=c.options.selected=!1,h.options.data[h.data.indexOf(c)]=c.options,c.setState(p.hoverPoints&&h.options.inactiveOtherPoints?"inactive":""),c.firePointEvent("unselect"))})}),delete this.selectedStaging}onMouseOver(A){let{inverted:N,pointer:L}=this.series.chart;L&&(A=A?L.normalize(A):L.getChartCoordinatesFromPoint(this,N),L.runPointActions(A,this))}onMouseOut(){let A=this.series.chart;this.firePointEvent("mouseOut"),this.series.options.inactiveOtherPoints||(A.hoverPoints||[]).forEach(function(N){N.setState()}),A.hoverPoints=A.hoverPoint=null}manageEvent(A){var v,p,c,h,T;let N=this.series.options.point||{},L=(v=N.events)==null?void 0:v[A];d(L)&&(!((p=this.hcEvents)!=null&&p[A])||((h=(c=this.hcEvents)==null?void 0:c[A])==null?void 0:h.map(I=>I.fn).indexOf(L))===-1)?(b(this,A,L),this.hasImportedEvents=!0):this.hasImportedEvents&&!L&&((T=this.hcEvents)!=null&&T[A])&&(D(this,A),delete this.hcEvents[A],Object.keys(this.hcEvents)||(this.hasImportedEvents=!1))}setState(A,N){let L=this.series,v=this.state,p=L.options.states[A||"normal"]||{},c=_.plotOptions[L.type].marker&&L.options.marker,h=c&&c.enabled===!1,T=c&&c.states&&c.states[A||"normal"]||{},I=T.enabled===!1,P=this.marker||{},w=L.chart,U=c&&L.markerAttribs,$=L.halo,Y,W,z,Q=L.stateMarkerGraphic,B;if((A=A||"")===this.state&&!N||this.selected&&A!=="select"||p.enabled===!1||A&&(I||h&&T.enabled===!1)||A&&P.states&&P.states[A]&&P.states[A].enabled===!1)return;if(this.state=A,U&&(Y=L.markerAttribs(this,A)),this.graphic&&!this.hasMockGraphic){if(v&&this.graphic.removeClass("highcharts-point-"+v),A&&this.graphic.addClass("highcharts-point-"+A),!w.styledMode){W=L.pointAttribs(this,A),z=O(w.options.chart.animation,p.animation);let V=W.opacity;L.options.inactiveOtherPoints&&f(V)&&(this.dataLabels||[]).forEach(function(H){H&&!H.hasClass("highcharts-data-label-hidden")&&(H.animate({opacity:V},z),H.connector&&H.connector.animate({opacity:V},z))}),this.graphic.animate(W,z)}Y&&this.graphic.animate(Y,O(w.options.chart.animation,T.animation,c.animation)),Q&&Q.hide()}else A&&T&&(B=P.symbol||L.symbol,Q&&Q.currentSymbol!==B&&(Q=Q.destroy()),Y&&(Q?Q[N?"animate":"attr"]({x:Y.x,y:Y.y}):B&&(L.stateMarkerGraphic=Q=w.renderer.symbol(B,Y.x,Y.y,Y.width,Y.height).add(L.markerGroup),Q.currentSymbol=B)),!w.styledMode&&Q&&this.state!=="inactive"&&Q.attr(L.pointAttribs(this,A))),Q&&(Q[A&&this.isInside?"show":"hide"](),Q.element.point=this,Q.addClass(this.getClassName(),!0));let j=p.halo,q=this.graphic||Q,G=q&&q.visibility||"inherit";j&&j.size&&q&&G!=="hidden"&&!this.isCluster?($||(L.halo=$=w.renderer.path().add(q.parentGroup)),$.show()[N?"animate":"attr"]({d:this.haloPath(j.size)}),$.attr({class:"highcharts-halo highcharts-color-"+O(this.colorIndex,L.colorIndex)+(this.className?" "+this.className:""),visibility:G,zIndex:-1}),$.point=this,w.styledMode||$.attr(m({fill:this.color||L.color,"fill-opacity":j.opacity},i.filterUserAttributes(j.attributes||{})))):$&&$.point&&$.point.haloPath&&$.animate({d:$.point.haloPath(0)},null,$.hide),E(this,"afterSetState",{state:A})}haloPath(A){let N=this.pos();return N?this.series.chart.renderer.symbols.circle(Math.floor(N[0])-A,N[1]-A,2*A,2*A):[]}}return k}),r(n,"Core/Pointer.js",[n["Core/Color/Color.js"],n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o,a){var s;let{parse:l}=i,{charts:u,composed:_}=o,{addEvent:g,attr:b,css:R,extend:m,find:E,fireEvent:C,isNumber:y,isObject:d,objectEach:f,offset:S,pick:O,pushUnique:x,splat:D}=a;class F{applyInactiveState(M){let A=[],N;(M||[]).forEach(function(L){N=L.series,A.push(N),N.linkedParent&&A.push(N.linkedParent),N.linkedSeries&&(A=A.concat(N.linkedSeries)),N.navigatorSeries&&A.push(N.navigatorSeries)}),this.chart.series.forEach(function(L){A.indexOf(L)===-1?L.setState("inactive",!0):L.options.inactiveOtherPoints&&L.setAllPointsToState("inactive")})}destroy(){let M=this;this.eventsToUnbind.forEach(A=>A()),this.eventsToUnbind=[],!o.chartCount&&(F.unbindDocumentMouseUp&&(F.unbindDocumentMouseUp=F.unbindDocumentMouseUp()),F.unbindDocumentTouchEnd&&(F.unbindDocumentTouchEnd=F.unbindDocumentTouchEnd())),clearInterval(M.tooltipTimeout),f(M,function(A,N){M[N]=void 0})}getSelectionMarkerAttrs(M,A){let N={args:{chartX:M,chartY:A},attrs:{},shapeType:"rect"};return C(this,"getSelectionMarkerAttrs",N,L=>{let v,{chart:p,zoomHor:c,zoomVert:h}=this,{mouseDownX:T=0,mouseDownY:I=0}=p,P=L.attrs;P.x=p.plotLeft,P.y=p.plotTop,P.width=c?1:p.plotWidth,P.height=h?1:p.plotHeight,c&&(v=M-T,P.width=Math.max(1,Math.abs(v)),P.x=(v>0?0:v)+T),h&&(v=A-I,P.height=Math.max(1,Math.abs(v)),P.y=(v>0?0:v)+I)}),N}drag(M){let{chart:A}=this,{mouseDownX:N=0,mouseDownY:L=0}=A,{panning:v,panKey:p,selectionMarkerFill:c}=A.options.chart,h=A.plotLeft,T=A.plotTop,I=A.plotWidth,P=A.plotHeight,w=d(v)?v.enabled:v,U=p&&M[`${p}Key`],$=M.chartX,Y=M.chartY,W,z=this.selectionMarker;if((!z||!z.touch)&&($h+I&&($=h+I),YT+P&&(Y=T+P),this.hasDragged=Math.sqrt(Math.pow(N-$,2)+Math.pow(L-Y,2)),this.hasDragged>10)){W=A.isInsidePlot(N-h,L-T,{visiblePlotOnly:!0});let{shapeType:Q,attrs:B}=this.getSelectionMarkerAttrs($,Y);(A.hasCartesianSeries||A.mapView)&&this.hasZoom&&W&&!U&&!z&&(this.selectionMarker=z=A.renderer[Q](),z.attr({class:"highcharts-selection-marker",zIndex:7}).add(),A.styledMode||z.attr({fill:c||l("#334eff").setOpacity(.25).get()})),z&&z.attr(B),W&&!z&&w&&A.pan(M,v)}}dragStart(M){let A=this.chart;A.mouseIsDown=M.type,A.cancelClick=!1,A.mouseDownX=M.chartX,A.mouseDownY=M.chartY}getSelectionBox(M){let A={args:{marker:M},result:M.getBBox()};return C(this,"getSelectionBox",A),A.result}drop(M){let A,{chart:N,selectionMarker:L}=this;for(let v of N.axes)v.isPanning&&(v.isPanning=!1,(v.options.startOnTick||v.options.endOnTick||v.series.some(p=>p.boosted))&&(v.forceRedraw=!0,v.setExtremes(v.userMin,v.userMax,!1),A=!0));if(A&&N.redraw(),L&&M){if(this.hasDragged){let v=this.getSelectionBox(L);N.transform({axes:N.axes.filter(p=>p.zoomEnabled&&(p.coll==="xAxis"&&this.zoomX||p.coll==="yAxis"&&this.zoomY)),selection:{originalEvent:M,xAxis:[],yAxis:[],...v},from:v})}y(N.index)&&(this.selectionMarker=L.destroy())}N&&y(N.index)&&(R(N.container,{cursor:N._cursor}),N.cancelClick=this.hasDragged>10,N.mouseIsDown=!1,this.hasDragged=0,this.pinchDown=[])}findNearestKDPoint(M,A,N){let L;return M.forEach(function(v){let p=!(v.noSharedTooltip&&A)&&0>v.options.findNearestPointBy.indexOf("y"),c=v.searchPoint(N,p);d(c,!0)&&c.series&&(!d(L,!0)||function(h,T){var U,$;let I=h.distX-T.distX,P=h.dist-T.dist,w=((U=T.series.group)==null?void 0:U.zIndex)-(($=h.series.group)==null?void 0:$.zIndex);return I!==0&&A?I:P!==0?P:w!==0?w:h.series.index>T.series.index?-1:1}(L,c)>0)&&(L=c)}),L}getChartCoordinatesFromPoint(M,A){let{xAxis:N,yAxis:L}=M.series,v=M.shapeArgs;if(N&&L){let p=M.clientX??M.plotX??0,c=M.plotY||0;return M.isNode&&v&&y(v.x)&&y(v.y)&&(p=v.x,c=v.y),A?{chartX:L.len+L.pos-c,chartY:N.len+N.pos-p}:{chartX:p+N.pos,chartY:c+L.pos}}if(v&&v.x&&v.y)return{chartX:v.x,chartY:v.y}}getChartPosition(){if(this.chartPosition)return this.chartPosition;let{container:M}=this.chart,A=S(M);this.chartPosition={left:A.left,top:A.top,scaleX:1,scaleY:1};let{offsetHeight:N,offsetWidth:L}=M;return L>2&&N>2&&(this.chartPosition.scaleX=A.width/L,this.chartPosition.scaleY=A.height/N),this.chartPosition}getCoordinates(M){let A={xAxis:[],yAxis:[]};for(let N of this.chart.axes)A[N.isXAxis?"xAxis":"yAxis"].push({axis:N,value:N.toValue(M[N.horiz?"chartX":"chartY"])});return A}getHoverData(M,A,N,L,v,p){let c=[],h=function(U){return U.visible&&!(!v&&U.directTouch)&&O(U.options.enableMouseTracking,!0)},T=A,I,P={chartX:p?p.chartX:void 0,chartY:p?p.chartY:void 0,shared:v};C(this,"beforeGetHoverData",P),I=T&&!T.stickyTracking?[T]:N.filter(U=>U.stickyTracking&&(P.filter||h)(U));let w=L&&M||!p?M:this.findNearestKDPoint(I,v,p);return T=w&&w.series,w&&(v&&!T.noSharedTooltip?(I=N.filter(function(U){return P.filter?P.filter(U):h(U)&&!U.noSharedTooltip})).forEach(function(U){let $=E(U.points,function(Y){return Y.x===w.x&&!Y.isNull});d($)&&(U.boosted&&U.boost&&($=U.boost.getPoint($)),c.push($))}):c.push(w)),C(this,"afterGetHoverData",P={hoverPoint:w}),{hoverPoint:P.hoverPoint,hoverSeries:T,hoverPoints:c}}getPointFromEvent(M){let A=M.target,N;for(;A&&!N;)N=A.point,A=A.parentNode;return N}onTrackerMouseOut(M){let A=this.chart,N=M.relatedTarget,L=A.hoverSeries;this.isDirectTouch=!1,!L||!N||L.stickyTracking||this.inClass(N,"highcharts-tooltip")||this.inClass(N,"highcharts-series-"+L.index)&&this.inClass(N,"highcharts-tracker")||L.onMouseOut()}inClass(M,A){let N=M,L;for(;N;){if(L=b(N,"class")){if(L.indexOf(A)!==-1)return!0;if(L.indexOf("highcharts-container")!==-1)return!1}N=N.parentElement}}constructor(M,A){var N;this.hasDragged=0,this.eventsToUnbind=[],this.options=A,this.chart=M,this.runChartClick=!!((N=A.chart.events)!=null&&N.click),this.pinchDown=[],this.setDOMEvents(),C(this,"afterInit")}normalize(M,A){let N=M.touches,L=N?N.length?N.item(0):O(N.changedTouches,M.changedTouches)[0]:M;A||(A=this.getChartPosition());let v=L.pageX-A.left,p=L.pageY-A.top;return m(M,{chartX:Math.round(v/=A.scaleX),chartY:Math.round(p/=A.scaleY)})}onContainerClick(M){let A=this.chart,N=A.hoverPoint,L=this.normalize(M),v=A.plotLeft,p=A.plotTop;!A.cancelClick&&(N&&this.inClass(L.target,"highcharts-tracker")?(C(N.series,"click",m(L,{point:N})),A.hoverPoint&&N.firePointEvent("click",L)):(m(L,this.getCoordinates(L)),A.isInsidePlot(L.chartX-v,L.chartY-p,{visiblePlotOnly:!0})&&C(A,"click",L)))}onContainerMouseDown(M){var N;let A=(1&(M.buttons||M.button))==1;M=this.normalize(M),o.isFirefox&&M.button!==0&&this.onContainerMouseMove(M),(M.button===void 0||A)&&(this.zoomOption(M),A&&((N=M.preventDefault)==null||N.call(M)),this.dragStart(M))}onContainerMouseLeave(M){let{pointer:A}=u[O(F.hoverChartIndex,-1)]||{};M=this.normalize(M),this.onContainerMouseMove(M),A&&M.relatedTarget&&!this.inClass(M.relatedTarget,"highcharts-tooltip")&&(A.reset(),A.chartPosition=void 0)}onContainerMouseEnter(){delete this.chartPosition}onContainerMouseMove(M){let A=this.chart,N=A.tooltip,L=this.normalize(M);this.setHoverChartIndex(M),(A.mouseIsDown==="mousedown"||this.touchSelect(L))&&this.drag(L),!A.openMenu&&(this.inClass(L.target,"highcharts-tracker")||A.isInsidePlot(L.chartX-A.plotLeft,L.chartY-A.plotTop,{visiblePlotOnly:!0}))&&!(N&&N.shouldStickOnContact(L))&&(this.inClass(L.target,"highcharts-no-tooltip")?this.reset(!1,0):this.runPointActions(L))}onDocumentTouchEnd(M){this.onDocumentMouseUp(M)}onContainerTouchMove(M){this.touchSelect(M)?this.onContainerMouseMove(M):this.touch(M)}onContainerTouchStart(M){this.touchSelect(M)?this.onContainerMouseDown(M):(this.zoomOption(M),this.touch(M,!0))}onDocumentMouseMove(M){let A=this.chart,N=A.tooltip,L=this.chartPosition,v=this.normalize(M,L);!L||A.isInsidePlot(v.chartX-A.plotLeft,v.chartY-A.plotTop,{visiblePlotOnly:!0})||N&&N.shouldStickOnContact(v)||this.inClass(v.target,"highcharts-tracker")||this.reset()}onDocumentMouseUp(M){var A,N;(N=(A=u[O(F.hoverChartIndex,-1)])==null?void 0:A.pointer)==null||N.drop(M)}pinch(M){let A=this,{chart:N,hasZoom:L,lastTouches:v}=A,p=[].map.call(M.touches||[],P=>A.normalize(P)),c=p.length,h=c===1&&(A.inClass(M.target,"highcharts-tracker")&&N.runTrackerClick||A.runChartClick),T=N.tooltip,I=c===1&&O(T==null?void 0:T.options.followTouchMove,!0);c>1?A.initiated=!0:I&&(A.initiated=!1),L&&A.initiated&&!h&&M.cancelable!==!1&&M.preventDefault(),M.type==="touchstart"?(A.pinchDown=p,A.res=!0):I?this.runPointActions(A.normalize(M)):v&&(C(N,"touchpan",{originalEvent:M,touches:p},()=>{let P=w=>{let U=w[0],$=w[1]||U;return{x:U.chartX,y:U.chartY,width:$.chartX-U.chartX,height:$.chartY-U.chartY}};N.transform({axes:N.axes.filter(w=>w.zoomEnabled&&(this.zoomHor&&w.horiz||this.zoomVert&&!w.horiz)),to:P(p),from:P(v),trigger:M.type})}),A.res&&(A.res=!1,this.reset(!1,0))),A.lastTouches=p}reset(M,A){let N=this.chart,L=N.hoverSeries,v=N.hoverPoint,p=N.hoverPoints,c=N.tooltip,h=c&&c.shared?p:v;M&&h&&D(h).forEach(function(T){T.series.isCartesian&&T.plotX===void 0&&(M=!1)}),M?c&&h&&D(h).length&&(c.refresh(h),c.shared&&p?p.forEach(function(T){T.setState(T.state,!0),T.series.isCartesian&&(T.series.xAxis.crosshair&&T.series.xAxis.drawCrosshair(null,T),T.series.yAxis.crosshair&&T.series.yAxis.drawCrosshair(null,T))}):v&&(v.setState(v.state,!0),N.axes.forEach(function(T){T.crosshair&&v.series[T.coll]===T&&T.drawCrosshair(null,v)}))):(v&&v.onMouseOut(),p&&p.forEach(function(T){T.setState()}),L&&L.onMouseOut(),c&&c.hide(A),this.unDocMouseMove&&(this.unDocMouseMove=this.unDocMouseMove()),N.axes.forEach(function(T){T.hideCrosshair()}),N.hoverPoints=N.hoverPoint=void 0)}runPointActions(M,A,N){let L=this.chart,v=L.series,p=L.tooltip&&L.tooltip.options.enabled?L.tooltip:void 0,c=!!p&&p.shared,h=A||L.hoverPoint,T=h&&h.series||L.hoverSeries,I=(!M||M.type!=="touchmove")&&(!!A||T&&T.directTouch&&this.isDirectTouch),P=this.getHoverData(h,T,v,I,c,M);h=P.hoverPoint,T=P.hoverSeries;let w=P.hoverPoints,U=T&&T.tooltipOptions.followPointer&&!T.tooltipOptions.split,$=c&&T&&!T.noSharedTooltip;if(h&&(N||h!==L.hoverPoint||p&&p.isHidden)){if((L.hoverPoints||[]).forEach(function(Y){w.indexOf(Y)===-1&&Y.setState()}),L.hoverSeries!==T&&T.onMouseOver(),this.applyInactiveState(w),(w||[]).forEach(function(Y){Y.setState("hover")}),L.hoverPoint&&L.hoverPoint.firePointEvent("mouseOut"),!h.series)return;L.hoverPoints=w,L.hoverPoint=h,h.firePointEvent("mouseOver",void 0,()=>{p&&h&&p.refresh($?w:h,M)})}else if(U&&p&&!p.isHidden){let Y=p.getAnchor([{}],M);L.isInsidePlot(Y[0],Y[1],{visiblePlotOnly:!0})&&p.updatePosition({plotX:Y[0],plotY:Y[1]})}this.unDocMouseMove||(this.unDocMouseMove=g(L.container.ownerDocument,"mousemove",Y=>{var W,z;return(z=(W=u[F.hoverChartIndex??-1])==null?void 0:W.pointer)==null?void 0:z.onDocumentMouseMove(Y)}),this.eventsToUnbind.push(this.unDocMouseMove)),L.axes.forEach(function(Y){let W,z=O((Y.crosshair||{}).snap,!0);!z||(W=L.hoverPoint)&&W.series[Y.coll]===Y||(W=E(w,Q=>Q.series&&Q.series[Y.coll]===Y)),W||!z?Y.drawCrosshair(M,W):Y.hideCrosshair()})}setDOMEvents(){let M=this.chart.container,A=M.ownerDocument;M.onmousedown=this.onContainerMouseDown.bind(this),M.onmousemove=this.onContainerMouseMove.bind(this),M.onclick=this.onContainerClick.bind(this),this.eventsToUnbind.push(g(M,"mouseenter",this.onContainerMouseEnter.bind(this)),g(M,"mouseleave",this.onContainerMouseLeave.bind(this))),F.unbindDocumentMouseUp||(F.unbindDocumentMouseUp=g(A,"mouseup",this.onDocumentMouseUp.bind(this)));let N=this.chart.renderTo.parentElement;for(;N&&N.tagName!=="BODY";)this.eventsToUnbind.push(g(N,"scroll",()=>{delete this.chartPosition})),N=N.parentElement;this.eventsToUnbind.push(g(M,"touchstart",this.onContainerTouchStart.bind(this),{passive:!1}),g(M,"touchmove",this.onContainerTouchMove.bind(this),{passive:!1})),F.unbindDocumentTouchEnd||(F.unbindDocumentTouchEnd=g(A,"touchend",this.onDocumentTouchEnd.bind(this),{passive:!1}))}setHoverChartIndex(M){var L;let A=this.chart,N=o.charts[O(F.hoverChartIndex,-1)];N&&N!==A&&((L=N.pointer)==null||L.onContainerMouseLeave(M||{relatedTarget:A.container})),N&&N.mouseIsDown||(F.hoverChartIndex=A.index)}touch(M,A){let N,{chart:L,pinchDown:v=[]}=this;this.setHoverChartIndex(),M.touches.length===1?(M=this.normalize(M),L.isInsidePlot(M.chartX-L.plotLeft,M.chartY-L.plotTop,{visiblePlotOnly:!0})&&!L.openMenu?(A&&this.runPointActions(M),M.type==="touchmove"&&(N=!!v[0]&&Math.pow(v[0].chartX-M.chartX,2)+Math.pow(v[0].chartY-M.chartY,2)>=16),O(N,!0)&&this.pinch(M)):A&&this.reset()):M.touches.length===2&&this.pinch(M)}touchSelect(M){return!!(this.chart.zooming.singleTouch&&M.touches&&M.touches.length===1)}zoomOption(M){let A=this.chart,N=A.inverted,L=A.zooming.type||"",v,p;/touch/.test(M.type)&&(L=O(A.zooming.pinchType,L)),this.zoomX=v=/x/.test(L),this.zoomY=p=/y/.test(L),this.zoomHor=v&&!N||p&&N,this.zoomVert=p&&!N||v&&N,this.hasZoom=v||p}}return(s=F||(F={})).compose=function(k){x(_,"Core.Pointer")&&g(k,"beforeRender",function(){this.pointer=new s(this,this.options)})},F}),r(n,"Core/Legend/Legend.js",[n["Core/Animation/AnimationUtilities.js"],n["Core/Templating.js"],n["Core/Globals.js"],n["Core/Series/Point.js"],n["Core/Renderer/RendererUtilities.js"],n["Core/Utilities.js"]],function(i,o,a,s,l,u){var _;let{animObject:g,setAnimation:b}=i,{format:R}=o,{composed:m,marginNames:E}=a,{distribute:C}=l,{addEvent:y,createElement:d,css:f,defined:S,discardElement:O,find:x,fireEvent:D,isNumber:F,merge:k,pick:M,pushUnique:A,relativeLength:N,stableSort:L,syncTimeout:v}=u;class p{constructor(h,T){this.allItems=[],this.initialItemY=0,this.itemHeight=0,this.itemMarginBottom=0,this.itemMarginTop=0,this.itemX=0,this.itemY=0,this.lastItemY=0,this.lastLineHeight=0,this.legendHeight=0,this.legendWidth=0,this.maxItemWidth=0,this.maxLegendWidth=0,this.offsetWidth=0,this.padding=0,this.pages=[],this.symbolHeight=0,this.symbolWidth=0,this.titleHeight=0,this.totalItemWidth=0,this.widthOption=0,this.chart=h,this.setOptions(T),T.enabled&&(this.render(),y(this.chart,"endResize",function(){this.legend.positionCheckboxes()})),y(this.chart,"render",()=>{this.options.enabled&&this.proximate&&(this.proximatePositions(),this.positionItems())})}setOptions(h){let T=M(h.padding,8);this.options=h,this.chart.styledMode||(this.itemStyle=h.itemStyle,this.itemHiddenStyle=k(this.itemStyle,h.itemHiddenStyle)),this.itemMarginTop=h.itemMarginTop,this.itemMarginBottom=h.itemMarginBottom,this.padding=T,this.initialItemY=T-5,this.symbolWidth=M(h.symbolWidth,16),this.pages=[],this.proximate=h.layout==="proximate"&&!this.chart.inverted,this.baseline=void 0}update(h,T){let I=this.chart;this.setOptions(k(!0,this.options,h)),this.destroy(),I.isDirtyLegend=I.isDirtyBox=!0,M(T,!0)&&I.redraw(),D(this,"afterUpdate",{redraw:T})}colorizeItem(h,T){let{area:I,group:P,label:w,line:U,symbol:$}=h.legendItem||{};if(P==null||P[T?"removeClass":"addClass"]("highcharts-legend-item-hidden"),!this.chart.styledMode){let{itemHiddenStyle:Y={}}=this,W=Y.color,{fillColor:z,fillOpacity:Q,lineColor:B,marker:j}=h.options,q=G=>(!T&&(G.fill&&(G.fill=W),G.stroke&&(G.stroke=W)),G);w==null||w.css(k(T?this.itemStyle:Y)),U==null||U.attr(q({stroke:B||h.color})),$&&$.attr(q(j&&$.isMarker?h.pointAttribs():{fill:h.color})),I==null||I.attr(q({fill:z||h.color,"fill-opacity":z?1:Q??.75}))}D(this,"afterColorizeItem",{item:h,visible:T})}positionItems(){this.allItems.forEach(this.positionItem,this),this.chart.isResizing||this.positionCheckboxes()}positionItem(h){let{group:T,x:I=0,y:P=0}=h.legendItem||{},w=this.options,U=w.symbolPadding,$=!w.rtl,Y=h.checkbox;if(T&&T.element){let W={translateX:$?I:this.legendWidth-I-2*U-4,translateY:P};T[S(T.translateY)?"animate":"attr"](W,void 0,()=>{D(this,"afterPositionItem",{item:h})})}Y&&(Y.x=I,Y.y=P)}destroyItem(h){let T=h.checkbox,I=h.legendItem||{};for(let P of["group","label","line","symbol"])I[P]&&(I[P]=I[P].destroy());T&&O(T),h.legendItem=void 0}destroy(){for(let h of this.getAllItems())this.destroyItem(h);for(let h of["clipRect","up","down","pager","nav","box","title","group"])this[h]&&(this[h]=this[h].destroy());this.display=null}positionCheckboxes(){let h,T=this.group&&this.group.alignAttr,I=this.clipHeight||this.legendHeight,P=this.titleHeight;T&&(h=T.translateY,this.allItems.forEach(function(w){let U,$=w.checkbox;$&&(U=h+P+$.y+(this.scrollOffset||0)+3,f($,{left:T.translateX+w.checkboxOffset+$.x-20+"px",top:U+"px",display:this.proximate||U>h-6&&U1.5*te?oe.height:te))}layoutItem(h){let T=this.options,I=this.padding,P=T.layout==="horizontal",w=h.itemHeight,U=this.itemMarginBottom,$=this.itemMarginTop,Y=P?M(T.itemDistance,20):0,W=this.maxLegendWidth,z=T.alignColumns&&this.totalItemWidth>W?this.maxItemWidth:h.itemWidth,Q=h.legendItem||{};P&&this.itemX-I+z>W&&(this.itemX=I,this.lastLineHeight&&(this.itemY+=$+this.lastLineHeight+U),this.lastLineHeight=0),this.lastItemY=$+this.itemY+U,this.lastLineHeight=Math.max(w,this.lastLineHeight),Q.x=this.itemX,Q.y=this.itemY,P?this.itemX+=z:(this.itemY+=$+w+U,this.lastLineHeight=w),this.offsetWidth=this.widthOption||Math.max((P?this.itemX-I-(h.checkbox?0:Y):z)+I,this.offsetWidth)}getAllItems(){let h=[];return this.chart.series.forEach(function(T){let I=T&&T.options;T&&M(I.showInLegend,!S(I.linkedTo)&&void 0,!0)&&(h=h.concat((T.legendItem||{}).labels||(I.legendType==="point"?T.data:T)))}),D(this,"afterGetAllItems",{allItems:h}),h}getAlignment(){let h=this.options;return this.proximate?h.align.charAt(0)+"tv":h.floating?"":h.align.charAt(0)+h.verticalAlign.charAt(0)+h.layout.charAt(0)}adjustMargins(h,T){let I=this.chart,P=this.options,w=this.getAlignment();w&&[/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/].forEach(function(U,$){U.test(w)&&!S(h[$])&&(I[E[$]]=Math.max(I[E[$]],I.legend[($+1)%2?"legendHeight":"legendWidth"]+[1,-1,-1,1][$]*P[$%2?"x":"y"]+M(P.margin,12)+T[$]+(I.titleOffset[$]||0)))})}proximatePositions(){let h,T=this.chart,I=[],P=this.options.align==="left";for(let w of(this.allItems.forEach(function(U){let $,Y,W=P,z,Q;U.yAxis&&(U.xAxis.options.reversed&&(W=!W),U.points&&($=x(W?U.points:U.points.slice(0).reverse(),function(B){return F(B.plotY)})),Y=this.itemMarginTop+U.legendItem.label.getBBox().height+this.itemMarginBottom,Q=U.yAxis.top-T.plotTop,z=U.visible?($?$.plotY:U.yAxis.height)+(Q-.3*Y):Q+U.yAxis.height,I.push({target:z,size:Y,item:U}))},this),C(I,T.plotHeight)))h=w.item.legendItem||{},F(w.pos)&&(h.y=T.plotTop-T.spacing[0]+w.pos)}render(){let h=this.chart,T=h.renderer,I=this.options,P=this.padding,w=this.getAllItems(),U,$,Y,W=this.group,z,Q=this.box;this.itemX=P,this.itemY=this.initialItemY,this.offsetWidth=0,this.lastItemY=0,this.widthOption=N(I.width,h.spacingBox.width-P),z=h.spacingBox.width-2*P-I.x,["rm","lm"].indexOf(this.getAlignment().substring(0,2))>-1&&(z/=2),this.maxLegendWidth=this.widthOption||z,W||(this.group=W=T.g("legend").addClass(I.className||"").attr({zIndex:7}).add(),this.contentGroup=T.g().attr({zIndex:1}).add(W),this.scrollGroup=T.g().add(this.contentGroup)),this.renderTitle(),L(w,(B,j)=>(B.options&&B.options.legendIndex||0)-(j.options&&j.options.legendIndex||0)),I.reversed&&w.reverse(),this.allItems=w,this.display=U=!!w.length,this.lastLineHeight=0,this.maxItemWidth=0,this.totalItemWidth=0,this.itemHeight=0,w.forEach(this.renderItem,this),w.forEach(this.layoutItem,this),$=(this.widthOption||this.offsetWidth)+P,Y=this.lastItemY+this.lastLineHeight+this.titleHeight,Y=this.handleOverflow(Y)+P,Q||(this.box=Q=T.rect().addClass("highcharts-legend-box").attr({r:I.borderRadius}).add(W)),h.styledMode||Q.attr({stroke:I.borderColor,"stroke-width":I.borderWidth||0,fill:I.backgroundColor||"none"}).shadow(I.shadow),$>0&&Y>0&&Q[Q.placed?"animate":"attr"](Q.crisp.call({},{x:0,y:0,width:$,height:Y},Q.strokeWidth())),W[U?"show":"hide"](),h.styledMode&&W.getStyle("display")==="none"&&($=Y=0),this.legendWidth=$,this.legendHeight=Y,U&&this.align(),this.proximate||this.positionItems(),D(this,"afterRender")}align(h=this.chart.spacingBox){let T=this.chart,I=this.options,P=h.y;/(lth|ct|rth)/.test(this.getAlignment())&&T.titleOffset[0]>0?P+=T.titleOffset[0]:/(lbh|cb|rbh)/.test(this.getAlignment())&&T.titleOffset[2]>0&&(P-=T.titleOffset[2]),P!==h.y&&(h=k(h,{y:P})),T.hasRendered||(this.group.placed=!1),this.group.align(k(I,{width:this.legendWidth,height:this.legendHeight,verticalAlign:this.proximate?"top":I.verticalAlign}),!0,h)}handleOverflow(h){let T=this,I=this.chart,P=I.renderer,w=this.options,U=w.y,$=w.verticalAlign==="top",Y=this.padding,W=w.maxHeight,z=w.navigation,Q=M(z.animation,!0),B=z.arrowSize||12,j=this.pages,q=this.allItems,G=function(ne){typeof ne=="number"?te.attr({height:ne}):te&&(T.clipRect=te.destroy(),T.contentGroup.clip()),T.contentGroup.div&&(T.contentGroup.div.style.clip=ne?"rect("+Y+"px,9999px,"+(Y+ne)+"px,0)":"auto")},V=function(ne){return T[ne]=P.circle(0,0,1.3*B).translate(B/2,B/2).add(oe),I.styledMode||T[ne].attr("fill","rgba(0,0,0,0.0001)"),T[ne]},H,K,X,ee=I.spacingBox.height+($?-U:U)-Y,oe=this.nav,te=this.clipRect;return w.layout!=="horizontal"||w.verticalAlign==="middle"||w.floating||(ee/=2),W&&(ee=Math.min(ee,W)),j.length=0,h&&ee>0&&h>ee&&z.enabled!==!1?(this.clipHeight=H=Math.max(ee-20-this.titleHeight-Y,0),this.currentPage=M(this.currentPage,1),this.fullHeight=h,q.forEach((ne,se)=>{let ie=(X=ne.legendItem||{}).y||0,he=Math.round(X.label.getBBox().height),Z=j.length;(!Z||ie-j[Z-1]>H&&(K||ie)!==j[Z-1])&&(j.push(K||ie),Z++),X.pageIx=Z-1,K&&((q[se-1].legendItem||{}).pageIx=Z-1),se===q.length-1&&ie+he-j[Z-1]>H&&ie>j[Z-1]&&(j.push(ie),X.pageIx=Z),ie!==K&&(K=ie)}),te||(te=T.clipRect=P.clipRect(0,Y-2,9999,0),T.contentGroup.clip(te)),G(H),oe||(this.nav=oe=P.g().attr({zIndex:1}).add(this.group),this.up=P.symbol("triangle",0,0,B,B).add(oe),V("upTracker").on("click",function(){T.scroll(-1,Q)}),this.pager=P.text("",15,10).addClass("highcharts-legend-navigation"),!I.styledMode&&z.style&&this.pager.css(z.style),this.pager.add(oe),this.down=P.symbol("triangle-down",0,0,B,B).add(oe),V("downTracker").on("click",function(){T.scroll(1,Q)})),T.scroll(0),h=ee):oe&&(G(),this.nav=oe.destroy(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0),h}scroll(h,T){let I=this.chart,P=this.pages,w=P.length,U=this.clipHeight,$=this.options.navigation,Y=this.pager,W=this.padding,z=this.currentPage+h;z>w&&(z=w),z>0&&(T!==void 0&&b(T,I),this.nav.attr({translateX:W,translateY:U+this.padding+7+this.titleHeight,visibility:"inherit"}),[this.up,this.upTracker].forEach(function(Q){Q.attr({class:z===1?"highcharts-legend-nav-inactive":"highcharts-legend-nav-active"})}),Y.attr({text:z+"/"+w}),[this.down,this.downTracker].forEach(function(Q){Q.attr({x:18+this.pager.getBBox().width,class:z===w?"highcharts-legend-nav-inactive":"highcharts-legend-nav-active"})},this),I.styledMode||(this.up.attr({fill:z===1?$.inactiveColor:$.activeColor}),this.upTracker.css({cursor:z===1?"default":"pointer"}),this.down.attr({fill:z===w?$.inactiveColor:$.activeColor}),this.downTracker.css({cursor:z===w?"default":"pointer"})),this.scrollOffset=-P[z-1]+this.initialItemY,this.scrollGroup.animate({translateY:this.scrollOffset}),this.currentPage=z,this.positionCheckboxes(),v(()=>{D(this,"afterScroll",{currentPage:z})},g(M(T,I.renderer.globalAnimation,!0)).duration))}setItemEvents(h,T,I){let P=this,w=h.legendItem||{},U=P.chart.renderer.boxWrapper,$=h instanceof s,Y="highcharts-legend-"+($?"point":"series")+"-active",W=P.chart.styledMode,z=I?[T,w.symbol]:[w.group],Q=B=>{P.allItems.forEach(j=>{h!==j&&[j].concat(j.linkedSeries||[]).forEach(q=>{q.setState(B,!$)})})};for(let B of z)B&&B.on("mouseover",function(){h.visible&&Q("inactive"),h.setState("hover"),h.visible&&U.addClass(Y),W||T.css(P.options.itemHoverStyle)}).on("mouseout",function(){P.chart.styledMode||T.css(k(h.visible?P.itemStyle:P.itemHiddenStyle)),Q(""),U.removeClass(Y),h.setState()}).on("click",function(j){let q="legendItemClick",G=function(){h.setVisible&&h.setVisible(),Q(h.visible?"inactive":"")};U.removeClass(Y),j={browserEvent:j},h.firePointEvent?h.firePointEvent(q,j,G):D(h,q,j,G)})}createCheckboxForItem(h){h.checkbox=d("input",{type:"checkbox",className:"highcharts-legend-checkbox",checked:h.selected,defaultChecked:h.selected},this.options.itemCheckboxStyle,this.chart.container),y(h.checkbox,"click",function(T){let I=T.target;D(h.series||h,"checkboxClick",{checked:I.checked,item:h},function(){h.select()})})}}return(_=p||(p={})).compose=function(c){A(m,"Core.Legend")&&y(c,"beforeMargins",function(){this.legend=new _(this,this.options.legend)})},p}),r(n,"Core/Legend/LegendSymbol.js",[n["Core/Utilities.js"]],function(i){var o;let{extend:a,merge:s,pick:l}=i;return function(u){function _(g,b,R){var L;let m=this.legendItem=this.legendItem||{},{chart:E,options:C}=this,{baseline:y=0,symbolWidth:d,symbolHeight:f}=g,S=this.symbol||"circle",O=f/2,x=E.renderer,D=m.group,F=y-Math.round(f*(R?.4:.3)),k={},M,A=C.marker,N=0;if(E.styledMode||(k["stroke-width"]=Math.min(C.lineWidth||0,24),C.dashStyle?k.dashstyle=C.dashStyle:C.linecap==="square"||(k["stroke-linecap"]="round")),m.line=x.path().addClass("highcharts-graph").attr(k).add(D),R&&(m.area=x.path().addClass("highcharts-area").add(D)),k["stroke-linecap"]&&(N=Math.min(m.line.strokeWidth(),d)/2),d){let v=[["M",N,F],["L",d-N,F]];m.line.attr({d:v}),(L=m.area)==null||L.attr({d:[...v,["L",d-N,y],["L",N,y]]})}if(A&&A.enabled!==!1&&d){let v=Math.min(l(A.radius,O),O);S.indexOf("url")===0&&(A=s(A,{width:f,height:f}),v=0),m.symbol=M=x.symbol(S,d/2-v,F-v,2*v,2*v,a({context:"legend"},A)).addClass("highcharts-point").add(D),M.isMarker=!0}}u.areaMarker=function(g,b){_.call(this,g,b,!0)},u.lineMarker=_,u.rectangle=function(g,b){let R=b.legendItem||{},m=g.options,E=g.symbolHeight,C=m.squareSymbol,y=C?E:g.symbolWidth;R.symbol=this.chart.renderer.rect(C?(g.symbolWidth-E)/2:0,g.baseline-E+1,y,E,l(g.options.symbolRadius,E/2)).addClass("highcharts-point").attr({zIndex:3}).add(R.group)}}(o||(o={})),o}),r(n,"Core/Series/SeriesDefaults.js",[],function(){return{lineWidth:2,allowPointSelect:!1,crisp:!0,showCheckbox:!1,animation:{duration:1e3},enableMouseTracking:!0,events:{},marker:{enabledThreshold:2,lineColor:"#ffffff",lineWidth:0,radius:4,states:{normal:{animation:!0},hover:{animation:{duration:150},enabled:!0,radiusPlus:2,lineWidthPlus:1},select:{fillColor:"#cccccc",lineColor:"#000000",lineWidth:2}}},point:{events:{}},dataLabels:{animation:{},align:"center",borderWidth:0,defer:!0,formatter:function(){let{numberFormatter:i}=this.series.chart;return typeof this.y!="number"?"":i(this.y,-1)},padding:5,style:{fontSize:"0.7em",fontWeight:"bold",color:"contrast",textOutline:"1px contrast"},verticalAlign:"bottom",x:0,y:0},cropThreshold:300,opacity:1,pointRange:0,softThreshold:!0,states:{normal:{animation:!0},hover:{animation:{duration:150},lineWidthPlus:1,marker:{},halo:{size:10,opacity:.25}},select:{animation:{duration:0}},inactive:{animation:{duration:150},opacity:.2}},stickyTracking:!0,turboThreshold:1e3,findNearestPointBy:"x"}}),r(n,"Core/Series/SeriesRegistry.js",[n["Core/Globals.js"],n["Core/Defaults.js"],n["Core/Series/Point.js"],n["Core/Utilities.js"]],function(i,o,a,s){var l;let{defaultOptions:u}=o,{extend:_,extendClass:g,merge:b}=s;return function(R){function m(E,C){let y=u.plotOptions||{},d=C.defaultOptions,f=C.prototype;return f.type=E,f.pointClass||(f.pointClass=a),!R.seriesTypes[E]&&(d&&(y[E]=d),R.seriesTypes[E]=C,!0)}R.seriesTypes=i.seriesTypes,R.registerSeriesType=m,R.seriesType=function(E,C,y,d,f){let S=u.plotOptions||{};if(C=C||"",S[E]=b(S[C],y),delete R.seriesTypes[E],m(E,g(R.seriesTypes[C]||function(){},d)),R.seriesTypes[E].prototype.type=E,f){class O extends a{}_(O.prototype,f),R.seriesTypes[E].prototype.pointClass=O}return R.seriesTypes[E]}}(l||(l={})),l}),r(n,"Core/Series/Series.js",[n["Core/Animation/AnimationUtilities.js"],n["Core/Defaults.js"],n["Core/Foundation.js"],n["Core/Globals.js"],n["Core/Legend/LegendSymbol.js"],n["Core/Series/Point.js"],n["Core/Series/SeriesDefaults.js"],n["Core/Series/SeriesRegistry.js"],n["Core/Renderer/SVG/SVGElement.js"],n["Core/Utilities.js"]],function(i,o,a,s,l,u,_,g,b,R){let{animObject:m,setAnimation:E}=i,{defaultOptions:C}=o,{registerEventOptions:y}=a,{svg:d,win:f}=s,{seriesTypes:S}=g,{arrayMax:O,arrayMin:x,clamp:D,correctFloat:F,defined:k,destroyObjectProperties:M,diffObjects:A,erase:N,error:L,extend:v,find:p,fireEvent:c,getClosestDistance:h,getNestedProperty:T,insertItem:I,isArray:P,isNumber:w,isString:U,merge:$,objectEach:Y,pick:W,removeEvent:z,splat:Q,syncTimeout:B}=R;class j{constructor(){this.zoneAxis="y"}init(G,V){let H;c(this,"init",{options:V});let K=this,X=G.series;this.eventsToUnbind=[],K.chart=G,K.options=K.setOptions(V);let ee=K.options,oe=ee.visible!==!1;K.linkedSeries=[],K.bindAxes(),v(K,{name:ee.name,state:"",visible:oe,selected:ee.selected===!0}),y(this,ee);let te=ee.events;(te&&te.click||ee.point&&ee.point.events&&ee.point.events.click||ee.allowPointSelect)&&(G.runTrackerClick=!0),K.getColor(),K.getSymbol(),K.parallelArrays.forEach(function(ne){K[ne+"Data"]||(K[ne+"Data"]=[])}),K.isCartesian&&(G.hasCartesianSeries=!0),X.length&&(H=X[X.length-1]),K._i=W(H&&H._i,-1)+1,K.opacity=K.options.opacity,G.orderItems("series",I(this,X)),ee.dataSorting&&ee.dataSorting.enabled?K.setDataSortingOptions():K.points||K.data||K.setData(ee.data,!1),c(this,"afterInit")}is(G){return S[G]&&this instanceof S[G]}bindAxes(){let G,V=this,H=V.options,K=V.chart;c(this,"bindAxes",null,function(){(V.axisTypes||[]).forEach(function(X){K[X].forEach(function(ee){G=ee.options,(W(H[X],0)===ee.index||H[X]!==void 0&&H[X]===G.id)&&(I(V,ee.series),V[X]=ee,ee.isDirty=!0)}),V[X]||V.optionalAxis===X||L(18,!0,K)})}),c(this,"afterBindAxes")}updateParallelArrays(G,V,H){let K=G.series,X=w(V)?function(ee){let oe=ee==="y"&&K.toYData?K.toYData(G):G[ee];K[ee+"Data"][V]=oe}:function(ee){Array.prototype[V].apply(K[ee+"Data"],H)};K.parallelArrays.forEach(X)}hasData(){return this.visible&&this.dataMax!==void 0&&this.dataMin!==void 0||this.visible&&this.yData&&this.yData.length>0}hasMarkerChanged(G,V){let H=G.marker,K=V.marker||{};return H&&(K.enabled&&!H.enabled||K.symbol!==H.symbol||K.height!==H.height||K.width!==H.width)}autoIncrement(G){let V=this.options,H=V.pointIntervalUnit,K=V.relativeXValue,X=this.chart.time,ee=this.xIncrement,oe,te;return ee=W(ee,V.pointStart,0),this.pointInterval=te=W(this.pointInterval,V.pointInterval,1),K&&w(G)&&(te*=G),H&&(oe=new X.Date(ee),H==="day"?X.set("Date",oe,X.get("Date",oe)+te):H==="month"?X.set("Month",oe,X.get("Month",oe)+te):H==="year"&&X.set("FullYear",oe,X.get("FullYear",oe)+te),te=oe.getTime()-ee),K&&w(G)?ee+te:(this.xIncrement=ee+te,ee)}setDataSortingOptions(){let G=this.options;v(this,{requireSorting:!1,sorted:!1,enabledDataSorting:!0,allowDG:!1}),k(G.pointRange)||(G.pointRange=1)}setOptions(G){var ue,de;let V,H=this.chart,K=H.options.plotOptions,X=H.userOptions||{},ee=$(G),oe=H.styledMode,te={plotOptions:K,userOptions:ee};c(this,"setOptions",te);let ne=te.plotOptions[this.type],se=X.plotOptions||{},ie=se.series||{},he=C.plotOptions[this.type]||{},Z=se[this.type]||{};this.userOptions=te.userOptions;let J=$(ne,K.series,Z,ee);this.tooltipOptions=$(C.tooltip,(ue=C.plotOptions.series)==null?void 0:ue.tooltip,he==null?void 0:he.tooltip,H.userOptions.tooltip,(de=se.series)==null?void 0:de.tooltip,Z.tooltip,ee.tooltip),this.stickyTracking=W(ee.stickyTracking,Z.stickyTracking,ie.stickyTracking,!!this.tooltipOptions.shared&&!this.noSharedTooltip||J.stickyTracking),ne.marker===null&&delete J.marker,this.zoneAxis=J.zoneAxis||"y";let ae=this.zones=(J.zones||[]).map(le=>({...le}));return(J.negativeColor||J.negativeFillColor)&&!J.zones&&(V={value:J[this.zoneAxis+"Threshold"]||J.threshold||0,className:"highcharts-negative"},oe||(V.color=J.negativeColor,V.fillColor=J.negativeFillColor),ae.push(V)),ae.length&&k(ae[ae.length-1].value)&&ae.push(oe?{}:{color:this.color,fillColor:this.fillColor}),c(this,"afterSetOptions",{options:J}),J}getName(){return W(this.options.name,"Series "+(this.index+1))}getCyclic(G,V,H){let K,X,ee=this.chart,oe=`${G}Index`,te=`${G}Counter`,ne=(H==null?void 0:H.length)||ee.options.chart.colorCount;!V&&(k(X=W(G==="color"?this.options.colorIndex:void 0,this[oe]))?K=X:(ee.series.length||(ee[te]=0),K=ee[te]%ne,ee[te]+=1),H&&(V=H[K])),K!==void 0&&(this[oe]=K),this[G]=V}getColor(){this.chart.styledMode?this.getCyclic("color"):this.options.colorByPoint?this.color="#cccccc":this.getCyclic("color",this.options.color||C.plotOptions[this.type].color,this.chart.options.colors)}getPointsCollection(){return(this.hasGroupedData?this.points:this.data)||[]}getSymbol(){let G=this.options.marker;this.getCyclic("symbol",G.symbol,this.chart.options.symbols)}findPointIndex(G,V){let H,K,X,ee=G.id,oe=G.x,te=this.points,ne=this.options.dataSorting;if(ee){let se=this.chart.get(ee);se instanceof u&&(H=se)}else if(this.linkedParent||this.enabledDataSorting||this.options.relativeXValue){let se=ie=>!ie.touched&&ie.index===G.index;if(ne&&ne.matchByName?se=ie=>!ie.touched&&ie.name===G.name:this.options.relativeXValue&&(se=ie=>!ie.touched&&ie.options.x===G.x),!(H=p(te,se)))return}return H&&(X=H&&H.index)!==void 0&&(K=!0),X===void 0&&w(oe)&&(X=this.xData.indexOf(oe,V)),X!==-1&&X!==void 0&&this.cropped&&(X=X>=this.cropStart?X-this.cropStart:X),!K&&w(X)&&te[X]&&te[X].touched&&(X=void 0),X}updateData(G,V){let H=this.options,K=H.dataSorting,X=this.points,ee=[],oe=this.requireSorting,te=G.length===X.length,ne,se,ie,he,Z=!0;if(this.xIncrement=null,G.forEach(function(J,ae){let ue,de=k(J)&&this.pointClass.prototype.optionsToObject.call({series:this},J)||{},le=de.x;de.id||w(le)?((ue=this.findPointIndex(de,he))===-1||ue===void 0?ee.push(J):X[ue]&&J!==H.data[ue]?(X[ue].update(J,!1,null,!1),X[ue].touched=!0,oe&&(he=ue+1)):X[ue]&&(X[ue].touched=!0),(!te||ae!==ue||K&&K.enabled||this.hasDerivedData)&&(ne=!0)):ee.push(J)},this),ne)for(se=X.length;se--;)(ie=X[se])&&!ie.touched&&ie.remove&&ie.remove(!1,V);else!te||K&&K.enabled?Z=!1:(G.forEach(function(J,ae){J===X[ae].y||X[ae].destroyed||X[ae].update(J,!1,null,!1)}),ee.length=0);return X.forEach(function(J){J&&(J.touched=!1)}),!!Z&&(ee.forEach(function(J){this.addPoint(J,!1,null,null,!1)},this),this.xIncrement===null&&this.xData&&this.xData.length&&(this.xIncrement=O(this.xData),this.autoIncrement()),!0)}setData(G,V=!0,H,K){var Ne;let X=this,ee=X.points,oe=ee&&ee.length||0,te=X.options,ne=X.chart,se=te.dataSorting,ie=X.xAxis,he=te.turboThreshold,Z=this.xData,J=this.yData,ae=X.pointArrayMap,ue=ae&&ae.length,de=te.keys,le,me,ge,_e=0,be=1,Te=null,ye;ne.options.chart.allowMutatingData||(te.data&&delete X.options.data,X.userOptions.data&&delete X.userOptions.data,ye=$(!0,G));let Re=(G=ye||G||[]).length;if(se&&se.enabled&&(G=this.sortData(G)),ne.options.chart.allowMutatingData&&K!==!1&&Re&&oe&&!X.cropped&&!X.hasGroupedData&&X.visible&&!X.boosted&&(ge=this.updateData(G,H)),!ge){if(X.xIncrement=null,X.colorCounter=0,this.parallelArrays.forEach(function(xe){X[xe+"Data"].length=0}),he&&Re>he)if(w(Te=X.getFirstValidPoint(G)))for(le=0;le=0?_e:0,be=be>=0?be:1),Te.length===1&&(be=0),_e===be)for(le=0;le{let oe=T(H,X),te=T(H,ee);return teoe?1:0}).forEach(function(X,ee){X.x=ee},this),V.linkedSeries&&V.linkedSeries.forEach(function(X){let ee=X.options,oe=ee.data;ee.dataSorting&&ee.dataSorting.enabled||!oe||(oe.forEach(function(te,ne){oe[ne]=K(X,te),G[ne]&&(oe[ne].x=G[ne].x,oe[ne].index=ne)}),X.setData(oe,!1))}),G}getProcessedData(G){let V=this,H=V.xAxis,K=V.options,X=K.cropThreshold,ee=G||V.getExtremesFromAll||K.getExtremesFromAll,oe=H==null?void 0:H.logarithmic,te=V.isCartesian,ne,se,ie=0,he,Z,J,ae=V.xData,ue=V.yData,de=!1,le=ae.length;H&&(Z=(he=H.getExtremes()).min,J=he.max,de=!!(H.categories&&!H.names.length)),te&&V.sorted&&!ee&&(!X||le>X||V.forceCrop)&&(ae[le-1]J?(ae=[],ue=[]):V.yData&&(ae[0]J)&&(ae=(ne=this.cropData(V.xData,V.yData,Z,J)).xData,ue=ne.yData,ie=ne.start,se=!0));let me=h([oe?ae.map(oe.log2lin):ae],()=>V.requireSorting&&!de&&L(15,!1,V.chart));return{xData:ae,yData:ue,cropped:se,cropStart:ie,closestPointRange:me}}processData(G){let V=this.xAxis;if(this.isCartesian&&!this.isDirty&&!V.isDirty&&!this.yAxis.isDirty&&!G)return!1;let H=this.getProcessedData();this.cropped=H.cropped,this.cropStart=H.cropStart,this.processedXData=H.xData,this.processedYData=H.yData,this.closestPointRange=this.basePointRange=H.closestPointRange,c(this,"afterProcessData")}cropData(G,V,H,K){let X=G.length,ee,oe,te=0,ne=X;for(ee=0;ee=H){te=Math.max(0,ee-1);break}for(oe=ee;oeK){ne=oe+1;break}return{xData:G.slice(te,ne),yData:V.slice(te,ne),start:te,end:ne}}generatePoints(){let G=this.options,V=this.processedData||G.data,H=this.processedXData,K=this.processedYData,X=this.pointClass,ee=H.length,oe=this.cropStart||0,te=this.hasGroupedData,ne=G.keys,se=[],ie=G.dataGrouping&&G.dataGrouping.groupAll?oe:0,he,Z,J,ae,ue=this.data;if(!ue&&!te){let de=[];de.length=V.length,ue=this.data=de}for(ne&&te&&(this.options.keys=!1),ae=0;ae0:Z.length)||!te),ie=V||this.getExtremesFromAll||this.options.getExtremesFromAll||this.cropped||!H||(X[J+oe]||he)>=ue&&(X[J-oe]||he)<=de,se&&ie)if(ae=Z.length)for(;ae--;)w(Z[ae])&&(ee[le++]=Z[ae]);else ee[le++]=Z;let ge={activeYData:ee,dataMin:x(ee),dataMax:O(ee)};return c(this,"afterGetExtremes",{dataExtremes:ge}),ge}applyExtremes(){let G=this.getExtremes();return this.dataMin=G.dataMin,this.dataMax=G.dataMax,G}getFirstValidPoint(G){let V=G.length,H=0,K=null;for(;K===null&&H1)&&(ee.step=function(he,Z){ie&&ie.apply(Z,arguments),Z.prop==="width"&&(ne!=null&&ne.element)&&ne.attr(X?"height":"width",he+99)}),te.addClass("highcharts-animating").animate(se,ee)}}afterAnimate(){this.setClip(),Y(this.chart.sharedClips,(G,V,H)=>{G&&!this.chart.container.querySelector(`[clip-path="url(#${G.id})"]`)&&(G.destroy(),delete H[V])}),this.finishedAnimating=!0,c(this,"afterAnimate")}drawPoints(G=this.points){let V,H,K,X,ee,oe,te,ne=this.chart,se=ne.styledMode,{colorAxis:ie,options:he}=this,Z=he.marker,J=this[this.specialGroup||"markerGroup"],ae=this.xAxis,ue=W(Z.enabled,!ae||!!ae.isRadial||null,this.closestPointRangePx>=Z.enabledThreshold*Z.radius);if(Z.enabled!==!1||this._hasPointMarkers)for(V=0;V0||H.hasImage)&&(H.graphic=K=ne.renderer.symbol(de,te.x,te.y,te.width,te.height,oe?ee:Z).add(J),this.enabledDataSorting&&ne.hasRendered&&(K.attr({x:H.startXPos}),X="animate")),K&&X==="animate"&&K[le?"show":"hide"](le).animate(te),K){let me=this.pointAttribs(H,se||!H.selected?void 0:"select");se?ie&&K.css({fill:me.fill}):K[X](me)}K&&K.addClass(H.getClassName(),!0)}else K&&(H.graphic=K.destroy())}markerAttribs(G,V){let H=this.options,K=H.marker,X=G.marker||{},ee=X.symbol||K.symbol,oe={},te,ne,se=W(X.radius,K&&K.radius);V&&(te=K.states[V],se=W((ne=X.states&&X.states[V])&&ne.radius,te&&te.radius,se&&se+(te&&te.radiusPlus||0))),G.hasImage=ee&&ee.indexOf("url")===0,G.hasImage&&(se=0);let ie=G.pos();return w(se)&&ie&&(oe.x=ie[0]-se,oe.y=ie[1]-se,H.crisp&&(oe.x=Math.floor(oe.x))),se&&(oe.width=oe.height=2*se),oe}pointAttribs(G,V){let H=this.options.marker,K=G&&G.options,X=K&&K.marker||{},ee=K&&K.color,oe=G&&G.color,te=G&&G.zone&&G.zone.color,ne,se,ie=this.color,he,Z,J=W(X.lineWidth,H.lineWidth),ae=1;return ie=ee||te||oe||ie,he=X.fillColor||H.fillColor||ie,Z=X.lineColor||H.lineColor||ie,V=V||"normal",ne=H.states[V]||{},J=W((se=X.states&&X.states[V]||{}).lineWidth,ne.lineWidth,J+W(se.lineWidthPlus,ne.lineWidthPlus,0)),he=se.fillColor||ne.fillColor||he,{stroke:Z=se.lineColor||ne.lineColor||Z,"stroke-width":J,fill:he,opacity:ae=W(se.opacity,ne.opacity,ae)}}destroy(G){let V,H,K,X=this,ee=X.chart,oe=/AppleWebKit\/533/.test(f.navigator.userAgent),te=X.data||[];for(c(X,"destroy",{keepEventsForUpdate:G}),this.removeEvents(G),(X.axisTypes||[]).forEach(function(ne){(K=X[ne])&&K.series&&(N(K.series,X),K.isDirty=K.forceRedraw=!0)}),X.legendItem&&X.chart.legend.destroyItem(X),V=te.length;V--;)(H=te[V])&&H.destroy&&H.destroy();for(let ne of X.zones)M(ne,void 0,!0);R.clearTimeout(X.animationTimeout),Y(X,function(ne,se){ne instanceof b&&!ne.survive&&ne[oe&&se==="group"?"hide":"destroy"]()}),ee.hoverSeries===X&&(ee.hoverSeries=void 0),N(ee.series,X),ee.orderItems("series"),Y(X,function(ne,se){G&&se==="hcEvents"||delete X[se]})}applyZones(){let{area:G,chart:V,graph:H,zones:K,points:X,xAxis:ee,yAxis:oe,zoneAxis:te}=this,{inverted:ne,renderer:se}=V,ie=this[`${te}Axis`],{isXAxis:he,len:Z=0}=ie||{},J=((H==null?void 0:H.strokeWidth())||0)/2+1,ae=(ue,de=0,le=0)=>{ne&&(le=Z-le);let{translated:me=0,lineClip:ge}=ue,_e=le-me;ge==null||ge.push(["L",de,Math.abs(_e){ge.forEach((_e,be)=>{(_e[0]==="M"||_e[0]==="L")&&(ge[be]=[_e[0],he?Z-_e[1]:_e[1],he?_e[2]:Z-_e[2]])})};if(K.forEach(ge=>{ge.lineClip=[],ge.translated=D(ie.toPixels(W(ge.value,ue),!0)||0,0,Z)}),H&&!this.showLine&&H.hide(),G&&G.hide(),te==="y"&&X.length{var ze,nt;let _e=ge.lineClip||[],be=Math.round(ge.translated||0);ee.reversed&&_e.reverse();let{clip:Te,simpleClip:ye}=ge,Re=0,Ne=0,xe=ee.len,Ie=oe.len;he?(Re=be,xe=me):(Ne=be,Ie=me);let Ue=[["M",Re,Ne],["L",xe,Ne],["L",xe,Ie],["L",Re,Ie],["Z"]],Ge=[Ue[0],..._e,Ue[1],Ue[2],...le,Ue[3],Ue[4]];le=_e.reverse(),me=be,ne&&(de(Ge),G&&de(Ue)),Te?(Te.animate({d:Ge}),ye==null||ye.animate({d:Ue})):(Te=ge.clip=se.path(Ge),G&&(ye=ge.simpleClip=se.path(Ue))),H&&((ze=ge.graph)==null||ze.clip(Te)),G&&((nt=ge.area)==null||nt.clip(ye))})}else this.visible&&(H&&H.show(),G&&G.show())}plotGroup(G,V,H,K,X){let ee=this[G],oe=!ee,te={visibility:H,zIndex:K||.1};return k(this.opacity)&&!this.chart.styledMode&&this.state!=="inactive"&&(te.opacity=this.opacity),ee||(this[G]=ee=this.chart.renderer.g().add(X)),ee.addClass("highcharts-"+V+" highcharts-series-"+this.index+" highcharts-"+this.type+"-series "+(k(this.colorIndex)?"highcharts-color-"+this.colorIndex+" ":"")+(this.options.className||"")+(ee.hasClass("highcharts-tracker")?" highcharts-tracker":""),!0),ee.attr(te)[oe?"attr":"animate"](this.getPlotBox(V)),ee}getPlotBox(G){let V=this.xAxis,H=this.yAxis,K=this.chart,X=K.inverted&&!K.polar&&V&&this.invertible&&G==="series";return K.inverted&&(V=H,H=this.xAxis),{translateX:V?V.left:K.plotLeft,translateY:H?H.top:K.plotTop,rotation:X?90:0,rotationOriginX:X?(V.len-H.len)/2:0,rotationOriginY:X?(V.len+H.len)/2:0,scaleX:X?-1:1,scaleY:1}}removeEvents(G){let{eventsToUnbind:V}=this;G||z(this),V.length&&(V.forEach(H=>{H()}),V.length=0)}render(){var se,ie,he,Z,J;let G=this,{chart:V,options:H,hasRendered:K}=G,X=m(H.animation),ee=G.visible?"inherit":"hidden",oe=H.zIndex,te=V.seriesGroup,ne=G.finishedAnimating?0:X.duration;c(this,"render"),G.plotGroup("group","series",ee,oe,te),G.markerGroup=G.plotGroup("markerGroup","markers",ee,oe,te),H.clip!==!1&&G.setClip(),ne&&((se=G.animate)==null||se.call(G,!0)),G.drawGraph&&(G.drawGraph(),G.applyZones()),G.visible&&G.drawPoints(),(ie=G.drawDataLabels)==null||ie.call(G),(he=G.redrawPoints)==null||he.call(G),H.enableMouseTracking&&((Z=G.drawTracker)==null||Z.call(G)),ne&&((J=G.animate)==null||J.call(G)),K||(ne&&X.defer&&(ne+=X.defer),G.animationTimeout=B(()=>{G.afterAnimate()},ne||0)),G.isDirty=!1,G.hasRendered=!0,c(G,"afterRender")}redraw(){let G=this.isDirty||this.isDirtyData;this.translate(),this.render(),G&&delete this.kdTree}reserveSpace(){return this.visible||!this.chart.options.chart.ignoreHiddenSeries}searchPoint(G,V){let{xAxis:H,yAxis:K}=this,X=this.chart.inverted;return this.searchKDTree({clientX:X?H.len-G.chartY+H.pos:G.chartX-H.pos,plotY:X?K.len-G.chartX+K.pos:G.chartY-K.pos},V,G)}buildKDTree(G){this.buildingKdTree=!0;let V=this,H=V.options.findNearestPointBy.indexOf("y")>-1?2:1;delete V.kdTree,B(function(){V.kdTree=function K(X,ee,oe){let te,ne,se=X==null?void 0:X.length;if(se)return te=V.kdAxisArray[ee%oe],X.sort((ie,he)=>(ie[te]||0)-(he[te]||0)),{point:X[ne=Math.floor(se/2)],left:K(X.slice(0,ne),ee+1,oe),right:K(X.slice(ne+1),ee+1,oe)}}(V.getValidPoints(void 0,!V.directTouch),H,H),V.buildingKdTree=!1},V.options.kdNow||(G==null?void 0:G.type)==="touchstart"?0:1)}searchKDTree(G,V,H){let K=this,[X,ee]=this.kdAxisArray,oe=V?"distX":"dist",te=(K.options.findNearestPointBy||"").indexOf("y")>-1?2:1,ne=!!K.isBubble;if(this.kdTree||this.buildingKdTree||this.buildKDTree(H),this.kdTree)return function se(ie,he,Z,J){var Te;let ae=he.point,ue=K.kdAxisArray[Z%J],de,le,me=ae;(function(ye,Re){var Ee;let Ne=ye[X],xe=Re[X],Ie=k(Ne)&&k(xe)?Ne-xe:null,Ue=ye[ee],Ge=Re[ee],ze=k(Ue)&&k(Ge)?Ue-Ge:0,nt=ne&&((Ee=Re.marker)==null?void 0:Ee.radius)||0;Re.dist=Math.sqrt((Ie&&Ie*Ie||0)+ze*ze)-nt,Re.distX=k(Ie)?Math.abs(Ie)-nt:Number.MAX_VALUE})(ie,ae);let ge=(ie[ue]||0)-(ae[ue]||0)+(ne&&((Te=ae.marker)==null?void 0:Te.radius)||0),_e=ge<0?"left":"right",be=ge<0?"right":"left";return he[_e]&&(me=(de=se(ie,he[_e],Z+1,J))[oe]=0&&ee<=(K?K.len:V.plotHeight)&&X>=0&&X<=(H?H.len:V.plotWidth)}drawTracker(){var he;let G=this,V=G.options,H=V.trackByArea,K=[].concat((H?G.areaPath:G.graphPath)||[]),X=G.chart,ee=X.pointer,oe=X.renderer,te=((he=X.options.tooltip)==null?void 0:he.snap)||0,ne=()=>{V.enableMouseTracking&&X.hoverSeries!==G&&G.onMouseOver()},se="rgba(192,192,192,"+(d?1e-4:.002)+")",ie=G.tracker;ie?ie.attr({d:K}):G.graph&&(G.tracker=ie=oe.path(K).attr({visibility:G.visible?"inherit":"hidden",zIndex:2}).addClass(H?"highcharts-tracker-area":"highcharts-tracker-line").add(G.group),X.styledMode||ie.attr({"stroke-linecap":"round","stroke-linejoin":"round",stroke:se,fill:H?se:"none","stroke-width":G.graph.strokeWidth()+(H?0:2*te)}),[G.tracker,G.markerGroup,G.dataLabelsGroup].forEach(Z=>{Z&&(Z.addClass("highcharts-tracker").on("mouseover",ne).on("mouseout",J=>{ee==null||ee.onTrackerMouseOut(J)}),V.cursor&&!X.styledMode&&Z.css({cursor:V.cursor}),Z.on("touchstart",ne))})),c(this,"afterDrawTracker")}addPoint(G,V,H,K,X){let ee,oe,te=this.options,ne=this.data,se=this.chart,ie=this.xAxis,he=ie&&ie.hasNames&&ie.names,Z=te.data,J=this.xData;V=W(V,!0);let ae={series:this};this.pointClass.prototype.applyOptions.apply(ae,[G]);let ue=ae.x;if(oe=J.length,this.requireSorting&&ueue;)oe--;this.updateParallelArrays(ae,"splice",[oe,0,0]),this.updateParallelArrays(ae,oe),he&&ae.name&&(he[ue]=ae.name),Z.splice(oe,0,G),(ee||this.processedData)&&(this.data.splice(oe,0,null),this.processData()),te.legendType==="point"&&this.generatePoints(),H&&(ne[0]&&ne[0].remove?ne[0].remove(!1):(ne.shift(),this.updateParallelArrays(ae,"shift"),Z.shift())),X!==!1&&c(this,"addPoint",{point:ae}),this.isDirty=!0,this.isDirtyData=!0,V&&se.redraw(K)}removePoint(G,V,H){let K=this,X=K.data,ee=X[G],oe=K.points,te=K.chart,ne=function(){oe&&oe.length===X.length&&oe.splice(G,1),X.splice(G,1),K.options.data.splice(G,1),K.updateParallelArrays(ee||{series:K},"splice",[G,1]),ee&&ee.destroy(),K.isDirty=!0,K.isDirtyData=!0,V&&te.redraw()};E(H,te),V=W(V,!0),ee?ee.firePointEvent("remove",null,ne):ne()}remove(G,V,H,K){let X=this,ee=X.chart;function oe(){X.destroy(K),ee.isDirtyLegend=ee.isDirtyBox=!0,ee.linkSeries(K),W(G,!0)&&ee.redraw(V)}H!==!1?c(X,"remove",null,oe):oe()}update(G,V){var de,le,me;c(this,"update",{options:G=A(G,this.userOptions)});let H=this,K=H.chart,X=H.userOptions,ee=H.initialType||H.type,oe=K.options.plotOptions,te=S[ee].prototype,ne=H.finishedAnimating&&{animation:!1},se={},ie,he,Z=["colorIndex","eventOptions","navigatorSeries","symbolIndex","baseSeries"],J=G.type||X.type||K.options.chart.type,ae=!(this.hasDerivedData||J&&J!==this.type||G.pointStart!==void 0||G.pointInterval!==void 0||G.relativeXValue!==void 0||G.joinBy||G.mapData||["dataGrouping","pointStart","pointInterval","pointIntervalUnit","keys"].some(ge=>H.hasOptionChanged(ge)));J=J||ee,ae&&(Z.push("data","isDirtyData","isDirtyCanvas","points","processedData","processedXData","processedYData","xIncrement","cropped","_hasPointMarkers","hasDataLabels","nodes","layout","level","mapMap","mapData","minY","maxY","minX","maxX","transformGroups"),G.visible!==!1&&Z.push("area","graph"),H.parallelArrays.forEach(function(ge){Z.push(ge+"Data")}),G.data&&(G.dataSorting&&v(H.options.dataSorting,G.dataSorting),this.setData(G.data,!1))),G=$(X,{index:X.index===void 0?H.index:X.index,pointStart:((de=oe==null?void 0:oe.series)==null?void 0:de.pointStart)??X.pointStart??((le=H.xData)==null?void 0:le[0])},!ae&&{data:H.options.data},G,ne),ae&&G.data&&(G.data=H.options.data),(Z=["group","markerGroup","dataLabelsGroup","transformGroup"].concat(Z)).forEach(function(ge){Z[ge]=H[ge],delete H[ge]});let ue=!1;if(S[J]){if(ue=J!==H.type,H.remove(!1,!1,!1,!0),ue)if(K.propFromSeries(),Object.setPrototypeOf)Object.setPrototypeOf(H,S[J].prototype);else{let ge=Object.hasOwnProperty.call(H,"hcEvents")&&H.hcEvents;for(he in te)H[he]=void 0;v(H,S[J].prototype),ge?H.hcEvents=ge:delete H.hcEvents}}else L(17,!0,K,{missingModuleFor:J});if(Z.forEach(function(ge){H[ge]=Z[ge]}),H.init(K,G),ae&&this.points)for(let ge of((ie=H.options).visible===!1?(se.graphic=1,se.dataLabel=1):(this.hasMarkerChanged(ie,X)&&(se.graphic=1),(me=H.hasDataLabels)!=null&&me.call(H)||(se.dataLabel=1)),this.points))ge&&ge.series&&(ge.resolveColor(),Object.keys(se).length&&ge.destroyElements(se),ie.showInLegend===!1&&ge.legendItem&&K.legend.destroyItem(ge));H.initialType=ee,K.linkSeries(),K.setSortedData(),ue&&H.linkedSeries.length&&(H.isDirtyData=!0),c(this,"afterUpdate"),W(V,!0)&&K.redraw(!!ae&&void 0)}setName(G){this.name=this.options.name=this.userOptions.name=G,this.chart.isDirtyLegend=!0}hasOptionChanged(G){var oe,te;let V=this.chart,H=this.options[G],K=V.options.plotOptions,X=this.userOptions[G],ee=W((oe=K==null?void 0:K[this.type])==null?void 0:oe[G],(te=K==null?void 0:K.series)==null?void 0:te[G]);return X&&!k(ee)?H!==X:H!==W(ee,H)}onMouseOver(){let G=this.chart,V=G.hoverSeries,H=G.pointer;H==null||H.setHoverChartIndex(),V&&V!==this&&V.onMouseOut(),this.options.events.mouseOver&&c(this,"mouseOver"),this.setState("hover"),G.hoverSeries=this}onMouseOut(){let G=this.options,V=this.chart,H=V.tooltip,K=V.hoverPoint;V.hoverSeries=null,K&&K.onMouseOut(),this&&G.events.mouseOut&&c(this,"mouseOut"),H&&!this.stickyTracking&&(!H.shared||this.noSharedTooltip)&&H.hide(),V.series.forEach(function(X){X.setState("",!0)})}setState(G,V){let H=this,K=H.options,X=H.graph,ee=K.inactiveOtherPoints,oe=K.states,te=W(oe[G||"normal"]&&oe[G||"normal"].animation,H.chart.options.chart.animation),ne=K.lineWidth,se=K.opacity;if(G=G||"",H.state!==G&&([H.group,H.markerGroup,H.dataLabelsGroup].forEach(function(ie){ie&&(H.state&&ie.removeClass("highcharts-series-"+H.state),G&&ie.addClass("highcharts-series-"+G))}),H.state=G,!H.chart.styledMode)){if(oe[G]&&oe[G].enabled===!1)return;if(G&&(ne=oe[G].lineWidth||ne+(oe[G].lineWidthPlus||0),se=W(oe[G].opacity,se)),X&&!X.dashstyle&&w(ne))for(let ie of[X,...this.zones.map(he=>he.graph)])ie==null||ie.animate({"stroke-width":ne},te);ee||[H.group,H.markerGroup,H.dataLabelsGroup,H.labelBySeries].forEach(function(ie){ie&&ie.animate({opacity:se},te)})}V&&ee&&H.points&&H.setAllPointsToState(G||void 0)}setAllPointsToState(G){this.points.forEach(function(V){V.setState&&V.setState(G)})}setVisible(G,V){var te;let H=this,K=H.chart,X=K.options.chart.ignoreHiddenSeries,ee=H.visible;H.visible=G=H.options.visible=H.userOptions.visible=G===void 0?!ee:G;let oe=G?"show":"hide";["group","dataLabelsGroup","markerGroup","tracker","tt"].forEach(ne=>{var se;(se=H[ne])==null||se[oe]()}),(K.hoverSeries===H||((te=K.hoverPoint)==null?void 0:te.series)===H)&&H.onMouseOut(),H.legendItem&&K.legend.colorizeItem(H,G),H.isDirty=!0,H.options.stacking&&K.series.forEach(ne=>{ne.options.stacking&&ne.visible&&(ne.isDirty=!0)}),H.linkedSeries.forEach(ne=>{ne.setVisible(G,!1)}),X&&(K.isDirtyBox=!0),c(H,oe),V!==!1&&K.redraw()}show(){this.setVisible(!0)}hide(){this.setVisible(!1)}select(G){this.selected=G=this.options.selected=G===void 0?!this.selected:G,this.checkbox&&(this.checkbox.checked=G),c(this,G?"select":"unselect")}shouldShowTooltip(G,V,H={}){return H.series=this,H.visiblePlotOnly=!0,this.chart.isInsidePlot(G,V,H)}drawLegendSymbol(G,V){var H;(H=l[this.options.legendSymbol||"rectangle"])==null||H.call(this,G,V)}}return j.defaultOptions=_,j.types=g.seriesTypes,j.registerType=g.registerSeriesType,v(j.prototype,{axisTypes:["xAxis","yAxis"],coll:"series",colorCounter:0,directTouch:!1,invertible:!0,isCartesian:!0,kdAxisArray:["clientX","plotY"],parallelArrays:["x","y"],pointClass:u,requireSorting:!0,sorted:!0}),g.series=j,j}),r(n,"Core/Chart/Chart.js",[n["Core/Animation/AnimationUtilities.js"],n["Core/Axis/Axis.js"],n["Core/Defaults.js"],n["Core/Templating.js"],n["Core/Foundation.js"],n["Core/Globals.js"],n["Core/Renderer/RendererRegistry.js"],n["Core/Series/Series.js"],n["Core/Series/SeriesRegistry.js"],n["Core/Renderer/SVG/SVGRenderer.js"],n["Core/Time.js"],n["Core/Utilities.js"],n["Core/Renderer/HTML/AST.js"],n["Core/Axis/Tick.js"]],function(i,o,a,s,l,u,_,g,b,R,m,E,C,y){let{animate:d,animObject:f,setAnimation:S}=i,{defaultOptions:O,defaultTime:x}=a,{numberFormat:D}=s,{registerEventOptions:F}=l,{charts:k,doc:M,marginNames:A,svg:N,win:L}=u,{seriesTypes:v}=b,{addEvent:p,attr:c,createElement:h,css:T,defined:I,diffObjects:P,discardElement:w,erase:U,error:$,extend:Y,find:W,fireEvent:z,getStyle:Q,isArray:B,isNumber:j,isObject:q,isString:G,merge:V,objectEach:H,pick:K,pInt:X,relativeLength:ee,removeEvent:oe,splat:te,syncTimeout:ne,uniqueKey:se}=E;class ie{static chart(Z,J,ae){return new ie(Z,J,ae)}constructor(Z,J,ae){this.sharedClips={};let ue=[...arguments];(G(Z)||Z.nodeName)&&(this.renderTo=ue.shift()),this.init(ue[0],ue[1])}setZoomOptions(){let Z=this.options.chart,J=Z.zooming;this.zooming={...J,type:K(Z.zoomType,J.type),key:K(Z.zoomKey,J.key),pinchType:K(Z.pinchType,J.pinchType),singleTouch:K(Z.zoomBySingleTouch,J.singleTouch,!1),resetButton:V(J.resetButton,Z.resetZoomButton)}}init(Z,J){z(this,"init",{args:arguments},function(){let ae=V(O,Z),ue=ae.chart;this.userOptions=Y({},Z),this.margin=[],this.spacing=[],this.labelCollectors=[],this.callback=J,this.isResizing=0,this.options=ae,this.axes=[],this.series=[],this.time=Z.time&&Object.keys(Z.time).length?new m(Z.time):u.time,this.numberFormatter=ue.numberFormatter||D,this.styledMode=ue.styledMode,this.hasCartesianSeries=ue.showAxes,this.index=k.length,k.push(this),u.chartCount++,F(this,ue),this.xAxis=[],this.yAxis=[],this.pointCount=this.colorCounter=this.symbolCounter=0,this.setZoomOptions(),z(this,"afterInit"),this.firstRender()})}initSeries(Z){let J=this.options.chart,ae=Z.type||J.type,ue=v[ae];ue||$(17,!0,this,{missingModuleFor:ae});let de=new ue;return typeof de.init=="function"&&de.init(this,Z),de}setSortedData(){this.getSeriesOrderByLinks().forEach(function(Z){Z.points||Z.data||!Z.enabledDataSorting||Z.setData(Z.options.data,!1)})}getSeriesOrderByLinks(){return this.series.concat().sort(function(Z,J){return Z.linkedSeries.length||J.linkedSeries.length?J.linkedSeries.length-Z.linkedSeries.length:0})}orderItems(Z,J=0){let ae=this[Z],ue=this.options[Z]=te(this.options[Z]).slice(),de=this.userOptions[Z]=this.userOptions[Z]?te(this.userOptions[Z]).slice():[];if(this.hasRendered&&(ue.splice(J),de.splice(J)),ae)for(let le=J,me=ae.length;le=Math.max(_e+le,Ue.pos)&&Ge<=Math.min(_e+le+ye.width,Ue.pos+Ue.len)||(xe.isInsidePlot=!1)}if(!ae.ignoreY&&xe.isInsidePlot){let Ue=!ue&&ae.axis&&!ae.axis.isXAxis&&ae.axis||Te&&(ue?Te.xAxis:Te.yAxis)||{pos:me,len:1/0},Ge=ae.paneCoordinates?Ue.pos+Ne:me+Ne;Ge>=Math.max(be+me,Ue.pos)&&Ge<=Math.min(be+me+ye.height,Ue.pos+Ue.len)||(xe.isInsidePlot=!1)}return z(this,"afterIsInsidePlot",xe),xe.isInsidePlot}redraw(Z){z(this,"beforeRedraw");let J=this.hasCartesianSeries?this.axes:this.colorAxis||[],ae=this.series,ue=this.pointer,de=this.legend,le=this.userOptions.legend,me=this.renderer,ge=me.isHidden(),_e=[],be,Te,ye,Re=this.isDirtyBox,Ne=this.isDirtyLegend,xe;for(me.rootFontSize=me.boxWrapper.getStyle("font-size"),this.setResponsive&&this.setResponsive(!1),S(!!this.hasRendered&&Z,this),ge&&this.temporaryDisplay(),this.layOutTitles(!1),ye=ae.length;ye--;)if(((xe=ae[ye]).options.stacking||xe.options.centerInCategory)&&(Te=!0,xe.isDirty)){be=!0;break}if(be)for(ye=ae.length;ye--;)(xe=ae[ye]).options.stacking&&(xe.isDirty=!0);ae.forEach(function(Ie){Ie.isDirty&&(Ie.options.legendType==="point"?(typeof Ie.updateTotals=="function"&&Ie.updateTotals(),Ne=!0):le&&(le.labelFormatter||le.labelFormat)&&(Ne=!0)),Ie.isDirtyData&&z(Ie,"updatedData")}),Ne&&de&&de.options.enabled&&(de.render(),this.isDirtyLegend=!1),Te&&this.getStacks(),J.forEach(function(Ie){Ie.updateNames(),Ie.setScale()}),this.getMargins(),J.forEach(function(Ie){Ie.isDirty&&(Re=!0)}),J.forEach(function(Ie){let Ue=Ie.min+","+Ie.max;Ie.extKey!==Ue&&(Ie.extKey=Ue,_e.push(function(){z(Ie,"afterSetExtremes",Y(Ie.eventArgs,Ie.getExtremes())),delete Ie.eventArgs})),(Re||Te)&&Ie.redraw()}),Re&&this.drawChartBox(),z(this,"predraw"),ae.forEach(function(Ie){(Re||Ie.isDirty)&&Ie.visible&&Ie.redraw(),Ie.isDirtyData=!1}),ue&&ue.reset(!0),me.draw(),z(this,"redraw"),z(this,"render"),ge&&this.temporaryDisplay(!0),_e.forEach(function(Ie){Ie.call()})}get(Z){let J=this.series;function ae(de){return de.id===Z||de.options&&de.options.id===Z}let ue=W(this.axes,ae)||W(this.series,ae);for(let de=0;!ue&&de(J.getPointsCollection().forEach(ae=>{K(ae.selectedStaging,ae.selected)&&Z.push(ae)}),Z),[])}getSelectedSeries(){return this.series.filter(function(Z){return Z.selected})}setTitle(Z,J,ae){this.applyDescription("title",Z),this.applyDescription("subtitle",J),this.applyDescription("caption",void 0),this.layOutTitles(ae)}applyDescription(Z,J){let ae=this,ue=this.options[Z]=V(this.options[Z],J),de=this[Z];de&&J&&(this[Z]=de=de.destroy()),ue&&!de&&((de=this.renderer.text(ue.text,0,0,ue.useHTML).attr({align:ue.align,class:"highcharts-"+Z,zIndex:ue.zIndex||4}).add()).update=function(le,me){ae.applyDescription(Z,le),ae.layOutTitles(me)},this.styledMode||de.css(Y(Z==="title"?{fontSize:this.options.isStock?"1em":"1.2em"}:{},ue.style)),this[Z]=de)}layOutTitles(Z=!0){let J=[0,0,0],ae=this.renderer,ue=this.spacingBox;["title","subtitle","caption"].forEach(function(le){let me=this[le],ge=this.options[le],_e=ge.verticalAlign||"top",be=le==="title"?_e==="top"?-3:0:_e==="top"?J[0]+2:0;if(me){me.css({width:(ge.width||ue.width+(ge.widthAdjust||0))+"px"});let Te=ae.fontMetrics(me).b,ye=Math.round(me.getBBox(ge.useHTML).height);me.align(Y({y:_e==="bottom"?Te:be+Te,height:ye},ge),!1,"spacingBox"),ge.floating||(_e==="top"?J[0]=Math.ceil(J[0]+ye):_e==="bottom"&&(J[2]=Math.ceil(J[2]+ye)))}},this),J[0]&&(this.options.title.verticalAlign||"top")==="top"&&(J[0]+=this.options.title.margin),J[2]&&this.options.caption.verticalAlign==="bottom"&&(J[2]+=this.options.caption.margin);let de=!this.titleOffset||this.titleOffset.join(",")!==J.join(",");this.titleOffset=J,z(this,"afterLayOutTitles"),!this.isDirtyBox&&de&&(this.isDirtyBox=this.isDirtyLegend=de,this.hasRendered&&Z&&this.isDirtyBox&&this.redraw())}getContainerBox(){return{width:Q(this.renderTo,"width",!0)||0,height:Q(this.renderTo,"height",!0)||0}}getChartSize(){let Z=this.options.chart,J=Z.width,ae=Z.height,ue=this.getContainerBox();this.chartWidth=Math.max(0,J||ue.width||600),this.chartHeight=Math.max(0,ee(ae,this.chartWidth)||(ue.height>1?ue.height:400)),this.containerBox=ue}temporaryDisplay(Z){let J=this.renderTo,ae;if(Z)for(;J&&J.style;)J.hcOrigStyle&&(T(J,J.hcOrigStyle),delete J.hcOrigStyle),J.hcOrigDetached&&(M.body.removeChild(J),J.hcOrigDetached=!1),J=J.parentNode;else for(;J&&J.style&&(M.body.contains(J)||J.parentNode||(J.hcOrigDetached=!0,M.body.appendChild(J)),(Q(J,"display",!1)==="none"||J.hcOricDetached)&&(J.hcOrigStyle={display:J.style.display,height:J.style.height,overflow:J.style.overflow},ae={display:"block",overflow:"hidden"},J!==this.renderTo&&(ae.height=0),T(J,ae),J.offsetWidth||J.style.setProperty("display","block","important")),(J=J.parentNode)!==M.body););}setClassName(Z){this.container.className="highcharts-container "+(Z||"")}getContainer(){var ye;let Z=this.options,J=Z.chart,ae="data-highcharts-chart",ue=se(),de,le=this.renderTo;le||(this.renderTo=le=J.renderTo),G(le)&&(this.renderTo=le=M.getElementById(le)),le||$(13,!0,this);let me=X(c(le,ae));j(me)&&k[me]&&k[me].hasRendered&&k[me].destroy(),c(le,ae,this.index),le.innerHTML=C.emptyHTML,J.skipClone||le.offsetWidth||this.temporaryDisplay(),this.getChartSize();let ge=this.chartHeight,_e=this.chartWidth;T(le,{overflow:"hidden"}),this.styledMode||(de=Y({position:"relative",overflow:"hidden",width:_e+"px",height:ge+"px",textAlign:"left",lineHeight:"normal",zIndex:0,"-webkit-tap-highlight-color":"rgba(0,0,0,0)",userSelect:"none","touch-action":"manipulation",outline:"none"},J.style||{}));let be=h("div",{id:ue},de,le);this.container=be,this.getChartSize(),_e===this.chartWidth||(_e=this.chartWidth,this.styledMode||T(be,{width:K((ye=J.style)==null?void 0:ye.width,_e+"px")})),this.containerBox=this.getContainerBox(),this._cursor=be.style.cursor;let Te=J.renderer||!N?_.getRendererType(J.renderer):R;if(this.renderer=new Te(be,_e,ge,void 0,J.forExport,Z.exporting&&Z.exporting.allowHTML,this.styledMode),S(void 0,this),this.setClassName(J.className),this.styledMode)for(let Re in Z.defs)this.renderer.definition(Z.defs[Re]);else this.renderer.setStyle(J.style);this.renderer.chartIndex=this.index,z(this,"afterGetContainer")}getMargins(Z){let{spacing:J,margin:ae,titleOffset:ue}=this;this.resetMargins(),ue[0]&&!I(ae[0])&&(this.plotTop=Math.max(this.plotTop,ue[0]+J[0])),ue[2]&&!I(ae[2])&&(this.marginBottom=Math.max(this.marginBottom,ue[2]+J[2])),this.legend&&this.legend.display&&this.legend.adjustMargins(ae,J),z(this,"getMargins"),Z||this.getAxisMargins()}getAxisMargins(){let Z=this,J=Z.axisOffset=[0,0,0,0],ae=Z.colorAxis,ue=Z.margin,de=function(le){le.forEach(function(me){me.visible&&me.getOffset()})};Z.hasCartesianSeries?de(Z.axes):ae&&ae.length&&de(ae),A.forEach(function(le,me){I(ue[me])||(Z[le]+=J[me])}),Z.setChartSize()}getOptions(){return P(this.userOptions,O)}reflow(Z){var de;let J=this,ae=J.containerBox,ue=J.getContainerBox();(de=J.pointer)==null||delete de.chartPosition,!J.isPrinting&&!J.isResizing&&ae&&ue.width&&((ue.width!==ae.width||ue.height!==ae.height)&&(E.clearTimeout(J.reflowTimeout),J.reflowTimeout=ne(function(){J.container&&J.setSize(void 0,void 0,!1)},Z?100:0)),J.containerBox=ue)}setReflow(){let Z=this,J=ae=>{var ue;(ue=Z.options)!=null&&ue.chart.reflow&&Z.hasLoaded&&Z.reflow(ae)};if(typeof ResizeObserver=="function")new ResizeObserver(J).observe(Z.renderTo);else{let ae=p(L,"resize",J);p(this,"destroy",ae)}}setSize(Z,J,ae){let ue=this,de=ue.renderer;ue.isResizing+=1,S(ae,ue);let le=de.globalAnimation;ue.oldChartHeight=ue.chartHeight,ue.oldChartWidth=ue.chartWidth,Z!==void 0&&(ue.options.chart.width=Z),J!==void 0&&(ue.options.chart.height=J),ue.getChartSize();let{chartWidth:me,chartHeight:ge,scrollablePixelsX:_e=0,scrollablePixelsY:be=0}=ue;(ue.isDirtyBox||me!==ue.oldChartWidth||ge!==ue.oldChartHeight)&&(ue.styledMode||(le?d:T)(ue.container,{width:`${me+_e}px`,height:`${ge+be}px`},le),ue.setChartSize(!0),de.setSize(me,ge,le),ue.axes.forEach(function(Te){Te.isDirty=!0,Te.setScale()}),ue.isDirtyLegend=!0,ue.isDirtyBox=!0,ue.layOutTitles(),ue.getMargins(),ue.redraw(le),ue.oldChartHeight=void 0,z(ue,"resize"),setTimeout(()=>{ue&&z(ue,"endResize",void 0,()=>{ue.isResizing-=1})},f(le).duration))}setChartSize(Z){let J,ae,ue,de,le=this.inverted,me=this.renderer,ge=this.chartWidth,_e=this.chartHeight,be=this.options.chart,Te=this.spacing,ye=this.clipOffset;this.plotLeft=J=Math.round(this.plotLeft),this.plotTop=ae=Math.round(this.plotTop),this.plotWidth=ue=Math.max(0,Math.round(ge-J-this.marginRight)),this.plotHeight=de=Math.max(0,Math.round(_e-ae-this.marginBottom)),this.plotSizeX=le?de:ue,this.plotSizeY=le?ue:de,this.plotBorderWidth=be.plotBorderWidth||0,this.spacingBox=me.spacingBox={x:Te[3],y:Te[0],width:ge-Te[3]-Te[1],height:_e-Te[0]-Te[2]},this.plotBox=me.plotBox={x:J,y:ae,width:ue,height:de};let Re=2*Math.floor(this.plotBorderWidth/2),Ne=Math.ceil(Math.max(Re,ye[3])/2),xe=Math.ceil(Math.max(Re,ye[0])/2);this.clipBox={x:Ne,y:xe,width:Math.floor(this.plotSizeX-Math.max(Re,ye[1])/2-Ne),height:Math.max(0,Math.floor(this.plotSizeY-Math.max(Re,ye[2])/2-xe))},Z||(this.axes.forEach(function(Ie){Ie.setAxisSize(),Ie.setAxisTranslation()}),me.alignElements()),z(this,"afterSetChartSize",{skipAxes:Z})}resetMargins(){z(this,"resetMargins");let Z=this,J=Z.options.chart;["margin","spacing"].forEach(function(ae){let ue=J[ae],de=q(ue)?ue:[ue,ue,ue,ue];["Top","Right","Bottom","Left"].forEach(function(le,me){Z[ae][me]=K(J[ae+le],de[me])})}),A.forEach(function(ae,ue){Z[ae]=K(Z.margin[ue],Z.spacing[ue])}),Z.axisOffset=[0,0,0,0],Z.clipOffset=[0,0,0,0]}drawChartBox(){let Z=this.options.chart,J=this.renderer,ae=this.chartWidth,ue=this.chartHeight,de=this.styledMode,le=this.plotBGImage,me=Z.backgroundColor,ge=Z.plotBackgroundColor,_e=Z.plotBackgroundImage,be=this.plotLeft,Te=this.plotTop,ye=this.plotWidth,Re=this.plotHeight,Ne=this.plotBox,xe=this.clipRect,Ie=this.clipBox,Ue=this.chartBackground,Ge=this.plotBackground,ze=this.plotBorder,nt,Ee,Se,ve="animate";Ue||(this.chartBackground=Ue=J.rect().addClass("highcharts-background").add(),ve="attr"),de?nt=Ee=Ue.strokeWidth():(Ee=(nt=Z.borderWidth||0)+(Z.shadow?8:0),Se={fill:me||"none"},(nt||Ue["stroke-width"])&&(Se.stroke=Z.borderColor,Se["stroke-width"]=nt),Ue.attr(Se).shadow(Z.shadow)),Ue[ve]({x:Ee/2,y:Ee/2,width:ae-Ee-nt%2,height:ue-Ee-nt%2,r:Z.borderRadius}),ve="animate",Ge||(ve="attr",this.plotBackground=Ge=J.rect().addClass("highcharts-plot-background").add()),Ge[ve](Ne),!de&&(Ge.attr({fill:ge||"none"}).shadow(Z.plotShadow),_e&&(le?(_e!==le.attr("href")&&le.attr("href",_e),le.animate(Ne)):this.plotBGImage=J.image(_e,be,Te,ye,Re).add())),xe?xe.animate({width:Ie.width,height:Ie.height}):this.clipRect=J.clipRect(Ie),ve="animate",ze||(ve="attr",this.plotBorder=ze=J.rect().addClass("highcharts-plot-border").attr({zIndex:1}).add()),de||ze.attr({stroke:Z.plotBorderColor,"stroke-width":Z.plotBorderWidth||0,fill:"none"}),ze[ve](ze.crisp({x:be,y:Te,width:ye,height:Re},-ze.strokeWidth())),this.isDirtyBox=!1,z(this,"afterDrawChartBox")}propFromSeries(){let Z,J,ae,ue=this,de=ue.options.chart,le=ue.options.series;["inverted","angular","polar"].forEach(function(me){for(J=v[de.type],ae=de[me]||J&&J.prototype[me],Z=le&&le.length;!ae&&Z--;)(J=v[le[Z].type])&&J.prototype[me]&&(ae=!0);ue[me]=ae})}linkSeries(Z){let J=this,ae=J.series;ae.forEach(function(ue){ue.linkedSeries.length=0}),ae.forEach(function(ue){let{linkedTo:de}=ue.options;if(G(de)){let le;(le=de===":previous"?J.series[ue.index-1]:J.get(de))&&le.linkedParent!==ue&&(le.linkedSeries.push(ue),ue.linkedParent=le,le.enabledDataSorting&&ue.setDataSortingOptions(),ue.visible=K(ue.options.visible,le.options.visible,ue.visible))}}),z(this,"afterLinkSeries",{isUpdating:Z})}renderSeries(){this.series.forEach(function(Z){Z.translate(),Z.render()})}render(){var be;let Z=this.axes,J=this.colorAxis,ae=this.renderer,ue=this.options.chart.axisLayoutRuns||2,de=Te=>{Te.forEach(ye=>{ye.visible&&ye.render()})},le=0,me=!0,ge,_e=0;for(let Te of(this.setTitle(),z(this,"beforeMargins"),(be=this.getStacks)==null||be.call(this),this.getMargins(!0),this.setChartSize(),Z)){let{options:ye}=Te,{labels:Re}=ye;if(Te.horiz&&Te.visible&&Re.enabled&&Te.series.length&&Te.coll!=="colorAxis"&&!this.polar){le=ye.tickLength,Te.createGroups();let Ne=new y(Te,0,"",!0),xe=Ne.createLabel("x",Re);if(Ne.destroy(),xe&&K(Re.reserveSpace,!j(ye.crossing))&&(le=xe.getBBox().height+Re.distance+Math.max(ye.offset||0,0)),le){xe==null||xe.destroy();break}}}for(this.plotHeight=Math.max(this.plotHeight-le,0);(me||ge||ue>1)&&_e(_e?1:1.1),ge=ye/this.plotHeight>(_e?1:1.05),_e++}this.drawChartBox(),this.hasCartesianSeries?de(Z):J&&J.length&&de(J),this.seriesGroup||(this.seriesGroup=ae.g("series-group").attr({zIndex:3}).shadow(this.options.chart.seriesGroupShadow).add()),this.renderSeries(),this.addCredits(),this.setResponsive&&this.setResponsive(),this.hasRendered=!0}addCredits(Z){let J=this,ae=V(!0,this.options.credits,Z);ae.enabled&&!this.credits&&(this.credits=this.renderer.text(ae.text+(this.mapCredits||""),0,0).addClass("highcharts-credits").on("click",function(){ae.href&&(L.location.href=ae.href)}).attr({align:ae.position.align,zIndex:8}),J.styledMode||this.credits.css(ae.style),this.credits.add().align(ae.position),this.credits.update=function(ue){J.credits=J.credits.destroy(),J.addCredits(ue)})}destroy(){let Z,J=this,ae=J.axes,ue=J.series,de=J.container,le=de&&de.parentNode;for(z(J,"destroy"),J.renderer.forExport?U(k,J):k[J.index]=void 0,u.chartCount--,J.renderTo.removeAttribute("data-highcharts-chart"),oe(J),Z=ae.length;Z--;)ae[Z]=ae[Z].destroy();for(this.scroller&&this.scroller.destroy&&this.scroller.destroy(),Z=ue.length;Z--;)ue[Z]=ue[Z].destroy();["title","subtitle","chartBackground","plotBackground","plotBGImage","plotBorder","seriesGroup","clipRect","credits","pointer","rangeSelector","legend","resetZoomButton","tooltip","renderer"].forEach(function(me){let ge=J[me];ge&&ge.destroy&&(J[me]=ge.destroy())}),de&&(de.innerHTML=C.emptyHTML,oe(de),le&&w(de)),H(J,function(me,ge){delete J[ge]})}firstRender(){var ue;let Z=this,J=Z.options;Z.getContainer(),Z.resetMargins(),Z.setChartSize(),Z.propFromSeries(),Z.getAxes();let ae=B(J.series)?J.series:[];J.series=[],ae.forEach(function(de){Z.initSeries(de)}),Z.linkSeries(),Z.setSortedData(),z(Z,"beforeRender"),Z.render(),(ue=Z.pointer)==null||ue.getChartPosition(),Z.renderer.imgCount||Z.hasLoaded||Z.onload(),Z.temporaryDisplay(!0)}onload(){this.callbacks.concat([this.callback]).forEach(function(Z){Z&&this.index!==void 0&&Z.apply(this,[this])},this),z(this,"load"),z(this,"render"),I(this.index)&&this.setReflow(),this.warnIfA11yModuleNotLoaded(),this.hasLoaded=!0}warnIfA11yModuleNotLoaded(){let{options:Z,title:J}=this;!Z||this.accessibility||(this.renderer.boxWrapper.attr({role:"img","aria-label":(J&&J.element.textContent||"").replace(/this.transform({reset:!0,trigger:"zoom"}))}pan(Z,J){let ae=this,ue=typeof J=="object"?J:{enabled:J,type:"x"},de=ue.type,le=de&&ae[{x:"xAxis",xy:"axes",y:"yAxis"}[de]].filter(ge=>ge.options.panningEnabled&&!ge.options.isInternal),me=ae.options.chart;me!=null&&me.panning&&(me.panning=ue),z(this,"pan",{originalEvent:Z},()=>{ae.transform({axes:le,event:Z,to:{x:Z.chartX-(ae.mouseDownX||0),y:Z.chartY-(ae.mouseDownY||0)},trigger:"pan"}),T(ae.container,{cursor:"move"})})}transform(Z){var Re;let{axes:J=this.axes,event:ae,from:ue={},reset:de,selection:le,to:me={},trigger:ge}=Z,{inverted:_e,resetZoomButton:be}=this,Te=!1,ye;for(let Ne of((Re=this.hoverPoints)==null||Re.forEach(xe=>xe.setState()),J)){let{horiz:xe,len:Ie,minPointOffset:Ue=0,options:Ge,reversed:ze}=Ne,nt=xe?"width":"height",Ee=xe?"x":"y",Se=me[nt]||Ne.len,ve=ue[nt]||Ne.len,Ae=10>Math.abs(Se)?1:Se/ve,Pe=(ue[Ee]||0)+ve/2-Ne.pos,$e=Pe-((me[Ee]??Ne.pos)+Se/2-Ne.pos)/Ae,He=ze&&!_e||!ze&&_e?-1:1;if(!de&&(Pe<0||Pe>Ne.len))continue;let Be=Ne.toValue($e,!0)+Ue*He,ke=Ne.toValue($e+Ie/Ae,!0)-(Ue*He||0),Ve=Ne.allExtremes;if(Be>ke&&([Be,ke]=[ke,Be]),Ae===1&&!de&&Ne.coll==="yAxis"&&!Ve){for(let gi of Ne.series){let bn=gi.getExtremes(gi.getProcessedData(!0).yData,!0);Ve??(Ve={dataMin:Number.MAX_VALUE,dataMax:-Number.MAX_VALUE}),j(bn.dataMin)&&j(bn.dataMax)&&(Ve.dataMin=Math.min(bn.dataMin,Ve.dataMin),Ve.dataMax=Math.max(bn.dataMax,Ve.dataMax))}Ne.allExtremes=Ve}let{dataMin:xt,dataMax:qe,min:rt,max:Ot}=Y(Ne.getExtremes(),Ve||{}),Pt=xt??Ge.min,bt=qe??Ge.max,kn=ke-Be,hi=Ne.categories?0:Math.min(kn,bt-Pt),Fn=Pt-hi*(I(Ge.min)?0:Ge.minPadding),cn=bt+hi*(I(Ge.max)?0:Ge.maxPadding),Bn=Ne.allowZoomOutside||Ae===1||ge!=="zoom"&&Ae>1,ur=Math.min(Ge.min??Fn,Fn,Bn?rt:Fn),Un=Math.max(Ge.max??cn,cn,Bn?Ot:cn);(!Ne.isOrdinal||Ae!==1||de)&&(Be=1&&(ke=Be+kn)),ke>Un&&(ke=Un,Ae>=1&&(Be=ke-kn)),(de||Ne.series.length&&(Be!==rt||ke!==Ot)&&Be>=ur&&ke<=Un)&&(le?le[Ne.coll].push({axis:Ne,min:Be,max:ke}):(Ne.isPanning=ge!=="zoom",Ne.setExtremes(de?void 0:Be,de?void 0:ke,!1,!1,{move:$e,trigger:ge,scale:Ae}),!de&&(Be>ur||ke{delete Z.selection,Z.trigger="zoom",this.transform(Z)}):(ye&&!be?this.showResetZoom():!ye&&be&&(this.resetZoomButton=be.destroy()),this.redraw(ge==="zoom"&&(this.options.chart.animation??this.pointCount<100)))),Te}}return Y(ie.prototype,{callbacks:[],collectionsWithInit:{xAxis:[ie.prototype.addAxis,[!0]],yAxis:[ie.prototype.addAxis,[!1]],series:[ie.prototype.addSeries]},collectionsWithUpdate:["xAxis","yAxis","series"],propsRequireDirtyBox:["backgroundColor","borderColor","borderWidth","borderRadius","plotBackgroundColor","plotBackgroundImage","plotBorderColor","plotBorderWidth","plotShadow","shadow"],propsRequireReflow:["margin","marginTop","marginRight","marginBottom","marginLeft","spacing","spacingTop","spacingRight","spacingBottom","spacingLeft"],propsRequireUpdateSeries:["chart.inverted","chart.polar","chart.ignoreHiddenSeries","chart.type","colors","plotOptions","time","tooltip"]}),ie}),r(n,"Extensions/ScrollablePlotArea.js",[n["Core/Animation/AnimationUtilities.js"],n["Core/Globals.js"],n["Core/Renderer/RendererRegistry.js"],n["Core/Utilities.js"]],function(i,o,a,s){let{stop:l}=i,{composed:u}=o,{addEvent:_,createElement:g,css:b,defined:R,merge:m,pushUnique:E}=s;function C(){let f=this.scrollablePlotArea;(this.scrollablePixelsX||this.scrollablePixelsY)&&!f&&(this.scrollablePlotArea=f=new d(this)),f==null||f.applyFixed()}function y(){this.chart.scrollablePlotArea&&(this.chart.scrollablePlotArea.isDirty=!0)}class d{static compose(S,O,x){E(u,this.compose)&&(_(S,"afterInit",y),_(O,"afterSetChartSize",D=>this.afterSetSize(D.target,D)),_(O,"render",C),_(x,"show",y))}static afterSetSize(S,O){let x,D,F,{minWidth:k,minHeight:M}=S.options.chart.scrollablePlotArea||{},{clipBox:A,plotBox:N,inverted:L,renderer:v}=S;if(!v.forExport&&(k?(S.scrollablePixelsX=x=Math.max(0,k-S.chartWidth),x&&(S.scrollablePlotBox=m(S.plotBox),N.width=S.plotWidth+=x,A[L?"height":"width"]+=x,F=!0)):M&&(S.scrollablePixelsY=D=Math.max(0,M-S.chartHeight),R(D)&&(S.scrollablePlotBox=m(S.plotBox),N.height=S.plotHeight+=D,A[L?"width":"height"]+=D,F=!1)),R(F)&&!O.skipAxes))for(let p of S.axes)p.horiz===F&&(p.setAxisSize(),p.setAxisTranslation())}constructor(S){var c;let O,x=S.options.chart,D=a.getRendererType(),F=x.scrollablePlotArea||{},k=this.moveFixedElements.bind(this),M={WebkitOverflowScrolling:"touch",overflowX:"hidden",overflowY:"hidden"};S.scrollablePixelsX&&(M.overflowX="auto"),S.scrollablePixelsY&&(M.overflowY="auto"),this.chart=S;let A=this.parentDiv=g("div",{className:"highcharts-scrolling-parent"},{position:"relative"},S.renderTo),N=this.scrollingContainer=g("div",{className:"highcharts-scrolling"},M,A),L=this.innerContainer=g("div",{className:"highcharts-inner-container"},void 0,N),v=this.fixedDiv=g("div",{className:"highcharts-fixed"},{position:"absolute",overflow:"hidden",pointerEvents:"none",zIndex:(((c=x.style)==null?void 0:c.zIndex)||0)+2,top:0},void 0,!0),p=this.fixedRenderer=new D(v,S.chartWidth,S.chartHeight,x.style);this.mask=p.path().attr({fill:x.backgroundColor||"#fff","fill-opacity":F.opacity??.85,zIndex:-1}).addClass("highcharts-scrollable-mask").add(),N.parentNode.insertBefore(v,N),b(S.renderTo,{overflow:"visible"}),_(S,"afterShowResetZoom",k),_(S,"afterApplyDrilldown",k),_(S,"afterLayOutTitles",k),_(N,"scroll",()=>{let{pointer:h,hoverPoint:T}=S;h&&(delete h.chartPosition,T&&(O=T),h.runPointActions(void 0,O,!0))}),L.appendChild(S.container)}applyFixed(){var j;let{chart:S,fixedRenderer:O,isDirty:x,scrollingContainer:D}=this,{axisOffset:F,chartWidth:k,chartHeight:M,container:A,plotHeight:N,plotLeft:L,plotTop:v,plotWidth:p,scrollablePixelsX:c=0,scrollablePixelsY:h=0}=S,{scrollPositionX:T=0,scrollPositionY:I=0}=S.options.chart.scrollablePlotArea||{},P=k+c,w=M+h;O.setSize(k,M),(x??!0)&&(this.isDirty=!1,this.moveFixedElements()),l(S.container),b(A,{width:`${P}px`,height:`${w}px`}),S.renderer.boxWrapper.attr({width:P,height:w,viewBox:[0,0,P,w].join(" ")}),(j=S.chartBackground)==null||j.attr({width:P,height:w}),b(D,{width:`${k}px`,height:`${M}px`}),R(x)||(D.scrollLeft=c*T,D.scrollTop=h*I);let U=v-F[0]-1,$=L-F[3]-1,Y=v+N+F[2]+1,W=L+p+F[1]+1,z=L+p-c,Q=v+N-h,B=[["M",0,0]];c?B=[["M",0,U],["L",L-1,U],["L",L-1,Y],["L",0,Y],["Z"],["M",z,U],["L",k,U],["L",k,Y],["L",z,Y],["Z"]]:h&&(B=[["M",$,0],["L",$,v-1],["L",W,v-1],["L",W,0],["Z"],["M",$,Q],["L",$,M],["L",W,M],["L",W,Q],["Z"]]),S.redrawTrigger!=="adjustHeight"&&this.mask.attr({d:B})}moveFixedElements(){let S,{container:O,inverted:x,scrollablePixelsX:D,scrollablePixelsY:F}=this.chart,k=this.fixedRenderer,M=[".highcharts-breadcrumbs-group",".highcharts-contextbutton",".highcharts-caption",".highcharts-credits",".highcharts-legend",".highcharts-legend-checkbox",".highcharts-navigator-series",".highcharts-navigator-xaxis",".highcharts-navigator-yaxis",".highcharts-navigator",".highcharts-reset-zoom",".highcharts-drillup-button",".highcharts-scrollbar",".highcharts-subtitle",".highcharts-title"];for(let A of(D&&!x?S=".highcharts-yaxis":D&&x||F&&!x?S=".highcharts-xaxis":F&&x&&(S=".highcharts-yaxis"),S&&M.push(`${S}:not(.highcharts-radial-axis)`,`${S}-labels:not(.highcharts-radial-axis-labels)`),M))[].forEach.call(O.querySelectorAll(A),N=>{(N.namespaceURI===k.SVG_NS?k.box:k.box.parentNode).appendChild(N),N.style.pointerEvents="auto"})}}return d}),r(n,"Core/Axis/Stacking/StackItem.js",[n["Core/Templating.js"],n["Core/Series/SeriesRegistry.js"],n["Core/Utilities.js"]],function(i,o,a){let{format:s}=i,{series:l}=o,{destroyObjectProperties:u,fireEvent:_,isNumber:g,pick:b}=a;return class{constructor(R,m,E,C,y){let d=R.chart.inverted,f=R.reversed;this.axis=R;let S=this.isNegative=!!E!=!!f;this.options=m=m||{},this.x=C,this.total=null,this.cumulative=null,this.points={},this.hasValidPoints=!1,this.stack=y,this.leftCliff=0,this.rightCliff=0,this.alignOptions={align:m.align||(d?S?"left":"right":"center"),verticalAlign:m.verticalAlign||(d?"middle":S?"bottom":"top"),y:m.y,x:m.x},this.textAlign=m.textAlign||(d?S?"right":"left":"center")}destroy(){u(this,this.axis)}render(R){let m=this.axis.chart,E=this.options,C=E.format,y=C?s(C,this,m):E.formatter.call(this);if(this.label)this.label.attr({text:y,visibility:"hidden"});else{this.label=m.renderer.label(y,null,void 0,E.shape,void 0,void 0,E.useHTML,!1,"stack-labels");let d={r:E.borderRadius||0,text:y,padding:b(E.padding,5),visibility:"hidden"};m.styledMode||(d.fill=E.backgroundColor,d.stroke=E.borderColor,d["stroke-width"]=E.borderWidth,this.label.css(E.style||{})),this.label.attr(d),this.label.added||this.label.add(R)}this.label.labelrank=m.plotSizeY,_(this,"afterRender")}setOffset(R,m,E,C,y,d){let{alignOptions:f,axis:S,label:O,options:x,textAlign:D}=this,F=S.chart,k=this.getStackBox({xOffset:R,width:m,boxBottom:E,boxTop:C,defaultX:y,xAxis:d}),{verticalAlign:M}=f;if(O&&k){let A=O.getBBox(void 0,0),N=O.padding,L=b(x.overflow,"justify")==="justify",v;f.x=x.x||0,f.y=x.y||0;let{x:p,y:c}=this.adjustStackPosition({labelBox:A,verticalAlign:M,textAlign:D});k.x-=p,k.y-=c,O.align(f,!1,k),(v=F.isInsidePlot(O.alignAttr.x+f.x+p,O.alignAttr.y+f.y+c))||(L=!1),L&&l.prototype.justifyDataLabel.call(S,O,f,O.alignAttr,A,k),O.attr({x:O.alignAttr.x,y:O.alignAttr.y,rotation:x.rotation,rotationOriginX:A.width*{left:0,center:.5,right:1}[x.textAlign||"center"],rotationOriginY:A.height/2}),b(!L&&x.crop,!0)&&(v=g(O.x)&&g(O.y)&&F.isInsidePlot(O.x-N+(O.width||0),O.y)&&F.isInsidePlot(O.x+N,O.y)),O[v?"show":"hide"]()}_(this,"afterSetOffset",{xOffset:R,width:m})}adjustStackPosition({labelBox:R,verticalAlign:m,textAlign:E}){let C={bottom:0,middle:1,top:2,right:1,center:0,left:-1},y=C[m],d=C[E];return{x:R.width/2+R.width/2*d,y:R.height/2*y}}getStackBox(R){let m=this.axis,E=m.chart,{boxTop:C,defaultX:y,xOffset:d,width:f,boxBottom:S}=R,O=m.stacking.usePercentage?100:b(C,this.total,0),x=m.toPixels(O),D=R.xAxis||E.xAxis[0],F=b(y,D.translate(this.x))+d,k=Math.abs(x-m.toPixels(S||g(m.min)&&m.logarithmic&&m.logarithmic.lin2log(m.min)||0)),M=E.inverted,A=this.isNegative;return M?{x:(A?x:x-k)-E.plotLeft,y:D.height-F-f,width:k,height:f}:{x:F+D.transB-E.plotLeft,y:(A?x-k:x)-E.plotTop,width:f,height:k}}}}),r(n,"Core/Axis/Stacking/StackingAxis.js",[n["Core/Animation/AnimationUtilities.js"],n["Core/Axis/Axis.js"],n["Core/Series/SeriesRegistry.js"],n["Core/Axis/Stacking/StackItem.js"],n["Core/Utilities.js"]],function(i,o,a,s,l){var u;let{getDeferredAnimation:_}=i,{series:{prototype:g}}=a,{addEvent:b,correctFloat:R,defined:m,destroyObjectProperties:E,fireEvent:C,isArray:y,isNumber:d,objectEach:f,pick:S}=l;function O(){let v=this.inverted;this.axes.forEach(p=>{p.stacking&&p.stacking.stacks&&p.hasVisibleSeries&&(p.stacking.oldStacks=p.stacking.stacks)}),this.series.forEach(p=>{let c=p.xAxis&&p.xAxis.options||{};p.options.stacking&&p.reserveSpace()&&(p.stackKey=[p.type,S(p.options.stack,""),v?c.top:c.left,v?c.height:c.width].join(","))})}function x(){var p;let v=this.stacking;if(v){let c=v.stacks;f(c,(h,T)=>{E(h),delete c[T]}),(p=v.stackTotalGroup)==null||p.destroy()}}function D(){this.stacking||(this.stacking=new L(this))}function F(v,p,c,h){return!m(v)||v.x!==p||h&&v.stackKey!==h?v={x:p,index:0,key:h,stackKey:h}:v.index++,v.key=[c,p,v.index].join(","),v}function k(){let v,p=this,c=p.yAxis,h=p.stackKey||"",T=c.stacking.stacks,I=p.processedXData,P=p.options.stacking,w=p[P+"Stacker"];w&&[h,"-"+h].forEach(U=>{var Q;let $=I.length,Y,W,z;for(;$--;)Y=I[$],v=p.getStackIndicator(v,Y,p.index,U),W=(Q=T[U])==null?void 0:Q[Y],(z=W==null?void 0:W.points[v.key||""])&&w.call(p,z,W,$)})}function M(v,p,c){let h=p.total?100/p.total:0;v[0]=R(v[0]*h),v[1]=R(v[1]*h),this.stackedYData[c]=v[1]}function A(v){(this.is("column")||this.is("columnrange"))&&(this.options.centerInCategory&&!this.options.stacking&&this.chart.series.length>1?g.setStackedPoints.call(this,v,"group"):v.stacking.resetStacks())}function N(v,p){var se,ie;let c,h,T,I,P,w,U,$,Y,W=p||this.options.stacking;if(!W||!this.reserveSpace()||({group:"xAxis"}[W]||"yAxis")!==v.coll)return;let z=this.processedXData,Q=this.processedYData,B=[],j=Q.length,q=this.options,G=q.threshold||0,V=q.startFromThreshold?G:0,H=q.stack,K=p?`${this.type},${W}`:this.stackKey||"",X="-"+K,ee=this.negStacks,oe=v.stacking,te=oe.stacks,ne=oe.oldStacks;for(oe.stacksTouched+=1,U=0;U0&&this.singleStacks===!1&&(T.points[w][0]=T.points[this.index+","+$+",0"][0])):(delete T.points[w],delete T.points[this.index]);let he=T.total||0;W==="percent"?(I=h?K:X,he=ee&&((ie=te[I])!=null&&ie[$])?(I=te[I][$]).total=Math.max(I.total||0,he)+Math.abs(Y)||0:R(he+(Math.abs(Y)||0))):W==="group"?(y(Y)&&(Y=Y[0]),Y!==null&&he++):he=R(he+(Y||0)),W==="group"?T.cumulative=(he||1)-1:T.cumulative=R(S(T.cumulative,V)+(Y||0)),T.total=he,Y!==null&&(T.points[w].push(T.cumulative),B[U]=T.cumulative,T.hasValidPoints=!0)}W==="percent"&&(oe.usePercentage=!0),W!=="group"&&(this.stackedYData=B),oe.oldStacks={}}class L{constructor(p){this.oldStacks={},this.stacks={},this.stacksTouched=0,this.axis=p}buildStacks(){let p,c,h=this.axis,T=h.series,I=h.coll==="xAxis",P=h.options.reversedStacks,w=T.length;for(this.resetStacks(),this.usePercentage=!1,c=w;c--;)p=T[P?c:w-c-1],I&&p.setGroupedPoints(h),p.setStackedPoints(h);if(!I)for(c=0;c{f(p,c=>{c.cumulative=c.total})}))}resetStacks(){f(this.stacks,p=>{f(p,(c,h)=>{d(c.touched)&&c.touched{f(U,$=>{$.render(P)})}),P.animate({opacity:1},I)}}return(u||(u={})).compose=function(v,p,c){let h=p.prototype,T=c.prototype;h.getStacks||(b(v,"init",D),b(v,"destroy",x),h.getStacks=O,T.getStackIndicator=F,T.modifyStacks=k,T.percentStacker=M,T.setGroupedPoints=A,T.setStackedPoints=N)},u}),r(n,"Series/Line/LineSeries.js",[n["Core/Series/Series.js"],n["Core/Series/SeriesRegistry.js"],n["Core/Utilities.js"]],function(i,o,a){let{defined:s,merge:l,isObject:u}=a;class _ extends i{drawGraph(){let b=this.options,R=(this.gappedPath||this.getGraphPath).call(this),m=this.chart.styledMode;[this,...this.zones].forEach((E,C)=>{let y,d=E.graph,f=d?"animate":"attr",S=E.dashStyle||b.dashStyle;d?(d.endX=this.preventGraphAnimation?null:R.xMap,d.animate({d:R})):R.length&&(E.graph=d=this.chart.renderer.path(R).addClass("highcharts-graph"+(C?` highcharts-zone-graph-${C-1} `:" ")+(C&&E.className||"")).attr({zIndex:1}).add(this.group)),d&&!m&&(y={stroke:!C&&b.lineColor||E.color||this.color||"#cccccc","stroke-width":b.lineWidth||0,fill:this.fillGraph&&this.color||"none"},S?y.dashstyle=S:b.linecap!=="square"&&(y["stroke-linecap"]=y["stroke-linejoin"]="round"),d[f](y).shadow(C<2&&b.shadow&&l({filterUnits:"userSpaceOnUse"},u(b.shadow)?b.shadow:{}))),d&&(d.startX=R.xMap,d.isArea=R.isArea)})}getGraphPath(b,R,m){let E=this,C=E.options,y=[],d=[],f,S=C.step,O=(b=b||E.points).reversed;return O&&b.reverse(),(S={right:1,center:2}[S]||S&&3)&&O&&(S=4-S),(b=this.getValidPoints(b,!1,!(C.connectNulls&&!R&&!m))).forEach(function(x,D){let F,k=x.plotX,M=x.plotY,A=b[D-1],N=x.isNull||typeof M!="number";(x.leftCliff||A&&A.rightCliff)&&!m&&(f=!0),N&&!s(R)&&D>0?f=!C.connectNulls:N&&!R?f=!0:(D===0||f?F=[["M",x.plotX,x.plotY]]:E.getPointSpline?F=[E.getPointSpline(b,x,D)]:S?(F=S===1?[["L",A.plotX,M]]:S===2?[["L",(A.plotX+k)/2,A.plotY],["L",(A.plotX+k)/2,M]]:[["L",k,A.plotY]]).push(["L",k,M]):F=[["L",k,M]],d.push(x.x),S&&(d.push(x.x),S===2&&d.push(x.x)),y.push.apply(y,F),f=!1)}),y.xMap=d,E.graphPath=y,y}}return _.defaultOptions=l(i.defaultOptions,{legendSymbol:"lineMarker"}),o.registerSeriesType("line",_),_}),r(n,"Series/Area/AreaSeries.js",[n["Core/Series/SeriesRegistry.js"],n["Core/Utilities.js"]],function(i,o){let{seriesTypes:{line:a}}=i,{extend:s,merge:l,objectEach:u,pick:_}=o;class g extends a{drawGraph(){this.areaPath=[],super.drawGraph.apply(this);let{areaPath:R,options:m}=this;[this,...this.zones].forEach((E,C)=>{let y={},d=E.fillColor||m.fillColor,f=E.area,S=f?"animate":"attr";f?(f.endX=this.preventGraphAnimation?null:R.xMap,f.animate({d:R})):(y.zIndex=0,(f=E.area=this.chart.renderer.path(R).addClass("highcharts-area"+(C?` highcharts-zone-area-${C-1} `:" ")+(C&&E.className||"")).add(this.group)).isArea=!0),this.chart.styledMode||(y.fill=d||E.color||this.color,y["fill-opacity"]=d?1:m.fillOpacity??.75,f.css({pointerEvents:this.stickyTracking?"none":"auto"})),f[S](y),f.startX=R.xMap,f.shiftUnit=m.step?2:1})}getGraphPath(R){let m,E,C,y=a.prototype.getGraphPath,d=this.options,f=d.stacking,S=this.yAxis,O=[],x=[],D=this.index,F=S.stacking.stacks[this.stackKey],k=d.threshold,M=Math.round(S.getThreshold(d.threshold)),A=_(d.connectNulls,f==="percent"),N=function(T,I,P){let w=R[T],U=f&&F[w.x].points[D],$=w[P+"Null"]||0,Y=w[P+"Cliff"]||0,W,z,Q=!0;Y||$?(W=($?U[0]:U[1])+Y,z=U[0]+Y,Q=!!$):!f&&R[I]&&R[I].isNull&&(W=z=k),W!==void 0&&(x.push({plotX:m,plotY:W===null?M:S.getThreshold(W),isNull:Q,isCliff:!0}),O.push({plotX:m,plotY:z===null?M:S.getThreshold(z),doCurve:!1}))};R=R||this.points,f&&(R=this.getStackPoints(R));for(let T=0,I=R.length;TM.visible);C.forEach(function(M,A){let N=0,L,v;if(S[M]&&!S[M].isNull)E.push(S[M]),[-1,1].forEach(function(p){let c=p===1?"rightNull":"leftNull",h=f[C[A+p]],T=0;if(h){let I=F;for(;I>=0&&I=0&&pk&&E>f?(E=Math.max(k,f),y=2*f-E):EA&&y>f?(y=Math.max(A,f),E=2*f-y):y=Math.abs(M)&&c>.5;return N=c-(M=Math.round(M)+p),h&&N&&(M-=1,N+=1),{x:k,y:M,width:A,height:N}}adjustForMissingColumns(k,M,A,N){var L;if(!A.isNull&&N.columnCount>1){let v=this.xAxis.series.filter(T=>T.visible).map(T=>T.index),p=0,c=0;x((L=this.xAxis.stacking)==null?void 0:L.stacks,T=>{if(typeof A.x=="number"){let I=T[A.x.toString()];if(I&&d(I.points[this.index])){let P=Object.keys(I.points).filter(w=>!w.match(",")&&I.points[w]&&I.points[w].length>1).map(parseFloat).filter(w=>v.indexOf(w)!==-1).sort((w,U)=>U-w);p=P.indexOf(this.index),c=P.length}}}),p=this.xAxis.reversed?c-1-p:p;let h=(c-1)*N.paddedWidth+M;k=(A.plotX||0)+h/2-M-p*N.paddedWidth}return k}translate(){let k=this,M=k.chart,A=k.options,N=k.dense=k.closestPointRange*k.xAxis.transA<2,L=k.borderWidth=O(A.borderWidth,N?0:1),v=k.xAxis,p=k.yAxis,c=A.threshold,h=O(A.minPointLength,5),T=k.getColumnMetrics(),I=T.width,P=k.pointXOffset=T.offset,w=k.dataMin,U=k.dataMax,$=k.barW=Math.max(I,1+2*L),Y=k.translatedThreshold=p.getThreshold(c);M.inverted&&(Y-=.5),A.pointPadding&&($=Math.ceil($)),l.prototype.translate.apply(k),k.points.forEach(function(W){let z=O(W.yBottom,Y),Q=999+Math.abs(z),B=W.plotX||0,j=m(W.plotY,-Q,p.len+Q),q,G=Math.min(j,z),V=Math.max(j,z)-G,H=I,K=B+P,X=$;h&&Math.abs(V)h?z-h:Y-(q?h:0)),E(W.options.pointWidth)&&(K-=Math.round(((H=X=Math.ceil(W.options.pointWidth))-I)/2)),A.centerInCategory&&!A.stacking&&(K=k.adjustForMissingColumns(K,H,W,T)),W.barX=K,W.pointWidth=H,W.tooltipPos=M.inverted?[m(p.len+p.pos-M.plotLeft-j,p.pos-M.plotLeft,p.len+p.pos-M.plotLeft),v.len+v.pos-M.plotTop-K-X/2,V]:[v.left-M.plotLeft+K+X/2,m(j+p.pos-M.plotTop,p.pos-M.plotTop,p.len+p.pos-M.plotTop),V],W.shapeType=k.pointClass.prototype.shapeType||"roundedRect",W.shapeArgs=k.crispCol(K,W.isNull?Y:G,X,W.isNull?0:V)}),y(this,"afterColumnTranslate")}drawGraph(){this.group[this.dense?"addClass":"removeClass"]("highcharts-dense-data")}pointAttribs(k,M){let A=this.options,N=this.pointAttrToOptions||{},L=N.stroke||"borderColor",v=N["stroke-width"]||"borderWidth",p,c,h,T=k&&k.color||this.color,I=k&&k[L]||A[L]||T,P=k&&k.options.dashStyle||A.dashStyle,w=k&&k[v]||A[v]||this[v]||0,U=O(k&&k.opacity,A.opacity,1);k&&this.zones.length&&(c=k.getZone(),T=k.options.color||c&&(c.color||k.nonZonedColor)||this.color,c&&(I=c.borderColor||I,P=c.dashStyle||P,w=c.borderWidth||w)),M&&k&&(h=(p=S(A.states[M],k.options.states&&k.options.states[M]||{})).brightness,T=p.color||h!==void 0&&b(T).brighten(p.brightness).get()||T,I=p[L]||I,w=p[v]||w,P=p.dashStyle||P,U=O(p.opacity,U));let $={fill:T,stroke:I,"stroke-width":w,opacity:U};return P&&($.dashstyle=P),$}drawPoints(k=this.points){let M,A=this,N=this.chart,L=A.options,v=N.renderer,p=L.animationLimit||250;k.forEach(function(c){let h=c.plotY,T=c.graphic,I=!!T,P=T&&N.pointCountv==null?void 0:v.enabled)}function x(v,p,c,h,T){let I=this.chart,P=this.isCartesian&&I.inverted,w=this.enabledDataSorting,U=v.plotX,$=v.plotY,Y=c.rotation||0,W=_(U)&&_($)&&I.isInsidePlot(U,Math.round($),{inverted:P,paneCoordinates:!0,series:this}),z=Y===0&&y(c.overflow,w?"none":"justify")==="justify",Q=this.visible&&v.visible!==!1&&_(U)&&(v.series.forceDL||w&&!z||W||y(c.inside,!!this.options.stacking)&&h&&I.isInsidePlot(U,P?h.x+1:h.y+h.height-1,{inverted:P,paneCoordinates:!0,series:this})),B=v.pos();if(Q&&B){var j;let q=p.getBBox(),G=p.getBBox(void 0,0),V={right:1,center:.5}[c.align||0]||0,H={bottom:1,middle:.5}[c.verticalAlign||0]||0;if(h=g({x:B[0],y:Math.round(B[1]),width:0,height:0},h||{}),g(c,{width:q.width,height:q.height}),j=h,w&&this.xAxis&&!z&&this.setDataLabelStartPos(v,p,T,W,j),p.align(E(c,{width:G.width,height:G.height}),!1,h,!1),p.alignAttr.x+=V*(G.width-q.width),p.alignAttr.y+=H*(G.height-q.height),p[p.placed?"animate":"attr"]({x:p.alignAttr.x+(q.width-G.width)/2,y:p.alignAttr.y+(q.height-G.height)/2,rotationOriginX:(p.width||0)/2,rotationOriginY:(p.height||0)/2}),z&&h.height>=0)this.justifyDataLabel(p,c,p.alignAttr,q,h,T);else if(y(c.crop,!0)){let{x:K,y:X}=p.alignAttr;Q=I.isInsidePlot(K,X,{paneCoordinates:!0,series:this})&&I.isInsidePlot(K+q.width-1,X+q.height-1,{paneCoordinates:!0,series:this})}c.shape&&!Y&&p[T?"attr":"animate"]({anchorX:B[0],anchorY:B[1]})}T&&w&&(p.placed=!1),Q||w&&!z?(p.show(),p.placed=!0):(p.hide(),p.placed=!1)}function D(){return this.plotGroup("dataLabelsGroup","data-labels",this.hasRendered?"inherit":"hidden",this.options.dataLabels.zIndex||6)}function F(v){let p=this.hasRendered||0,c=this.initDataLabelsGroup().attr({opacity:+p});return!p&&c&&(this.visible&&c.show(),this.options.animation?c.animate({opacity:1},v):c.attr({opacity:1})),c}function k(v){var Q;let p;v=v||this.points;let c=this,h=c.chart,T=c.options,I=h.renderer,{backgroundColor:P,plotBackgroundColor:w}=h.options.chart,U=I.getContrast(m(w)&&w||m(P)&&P||"#000000"),$=N(c),{animation:Y,defer:W}=$[0],z=W?l(h,Y,c):{defer:0,duration:0};b(this,"drawDataLabels"),(Q=c.hasDataLabels)!=null&&Q.call(c)&&(p=this.initDataLabels(z),v.forEach(B=>{var G,V;let j=B.dataLabels||[];f(A($,B.dlOptions||((G=B.options)==null?void 0:G.dataLabels))).forEach((H,K)=>{var le;let X=H.enabled&&(B.visible||B.dataLabelOnHidden)&&(!B.isNull||B.dataLabelOnNull)&&function(me,ge){let _e=ge.filter;if(_e){let be=_e.operator,Te=me[_e.property],ye=_e.value;return be===">"&&Te>ye||be==="<"&&Te="&&Te>=ye||be==="<="&&Te<=ye||be==="=="&&Te==ye||be==="==="&&Te===ye||be==="!="&&Te!=ye||be==="!=="&&Te!==ye}return!0}(B,H),{backgroundColor:ee,borderColor:oe,distance:te,style:ne={}}=H,se,ie,he,Z,J={},ae=j[K],ue=!ae,de;if(X&&(ie=y(H[B.formatPrefix+"Format"],H.format),se=B.getLabelConfig(),he=_(ie)?u(ie,se,h):(H[B.formatPrefix+"Formatter"]||H.formatter).call(se,H),Z=H.rotation,!h.styledMode&&(ne.color=y(H.color,ne.color,m(c.color)?c.color:void 0,"#000000"),ne.color==="contrast"?(ee!=="none"&&(de=ee),B.contrastColor=I.getContrast(de!=="auto"&&de||B.color||c.color),ne.color=de||!_(te)&&H.inside||0>d(te||0)||T.stacking?B.contrastColor:U):delete B.contrastColor,T.cursor&&(ne.cursor=T.cursor)),J={r:H.borderRadius||0,rotation:Z,padding:H.padding,zIndex:1},h.styledMode||(J.fill=ee==="auto"?B.color:ee,J.stroke=oe==="auto"?B.color:oe,J["stroke-width"]=H.borderWidth),C(J,(me,ge)=>{me===void 0&&delete J[ge]})),!ae||X&&_(he)&&!!ae.div==!!H.useHTML&&(ae.rotation&&H.rotation||ae.rotation===H.rotation)||(ae=void 0,ue=!0),X&&_(he)&&(ae?J.text=he:(ae=I.label(he,0,0,H.shape,void 0,void 0,H.useHTML,void 0,"data-label")).addClass(" highcharts-data-label-color-"+B.colorIndex+" "+(H.className||"")+(H.useHTML?" highcharts-tracker":"")),ae)){ae.options=H,ae.attr(J),h.styledMode||ae.css(ne).shadow(H.shadow);let me=H[B.formatPrefix+"TextPath"]||H.textPath;me&&!H.useHTML&&(ae.setTextPath(((le=B.getDataLabelPath)==null?void 0:le.call(B,ae))||B.graphic,me),B.dataLabelPath&&!me.enabled&&(B.dataLabelPath=B.dataLabelPath.destroy())),ae.added||ae.add(p),c.alignDataLabel(B,ae,H,void 0,ue),ae.isActive=!0,j[K]&&j[K]!==ae&&j[K].destroy(),j[K]=ae}});let q=j.length;for(;q--;)j[q]&&j[q].isActive?j[q].isActive=!1:((V=j[q])==null||V.destroy(),j.splice(q,1));B.dataLabel=j[0],B.dataLabels=j})),b(this,"afterDrawDataLabels")}function M(v,p,c,h,T,I){let P=this.chart,w=p.align,U=p.verticalAlign,$=v.box?0:v.padding||0,{x:Y=0,y:W=0}=p,z,Q;return(z=(c.x||0)+$)<0&&(w==="right"&&Y>=0?(p.align="left",p.inside=!0):Y-=z,Q=!0),(z=(c.x||0)+h.width-$)>P.plotWidth&&(w==="left"&&Y<=0?(p.align="right",p.inside=!0):Y+=P.plotWidth-z,Q=!0),(z=c.y+$)<0&&(U==="bottom"&&W>=0?(p.verticalAlign="top",p.inside=!0):W-=z,Q=!0),(z=(c.y||0)+h.height-$)>P.plotHeight&&(U==="top"&&W<=0?(p.verticalAlign="bottom",p.inside=!0):W+=P.plotHeight-z,Q=!0),Q&&(p.x=Y,p.y=W,v.placed=!I,v.align(p,void 0,T)),Q}function A(v,p){let c=[],h;if(R(v)&&!R(p))c=v.map(function(T){return E(T,p)});else if(R(p)&&!R(v))c=p.map(function(T){return E(v,T)});else if(R(v)||R(p)){if(R(v)&&R(p))for(h=Math.max(v.length,p.length);h--;)c[h]=E(v[h],p[h])}else c=E(v,p);return c}function N(v){var c,h;let p=v.chart.options.plotOptions;return f(A(A((c=p==null?void 0:p.series)==null?void 0:c.dataLabels,(h=p==null?void 0:p[v.type])==null?void 0:h.dataLabels),v.options.dataLabels))}function L(v,p,c,h,T){let I=this.chart,P=I.inverted,w=this.xAxis,U=w.reversed,$=((P?p.height:p.width)||0)/2,Y=v.pointWidth,W=Y?Y/2:0;p.startXPos=P?T.x:U?-$-W:w.width-$+W,p.startYPos=P?U?this.yAxis.height-$+W:-$-W:T.y,h?p.visibility==="hidden"&&(p.show(),p.attr({opacity:0}).animate({opacity:1})):p.attr({opacity:1}).animate({opacity:0},void 0,p.hide),I.hasRendered&&(c&&p.attr({x:p.startXPos,y:p.startYPos}),p.placed=!0)}S.compose=function(v){let p=v.prototype;p.initDataLabels||(p.initDataLabels=F,p.initDataLabelsGroup=D,p.alignDataLabel=x,p.drawDataLabels=k,p.justifyDataLabel=M,p.setDataLabelStartPos=L,p.hasDataLabels=O)}}(s||(s={})),s}),r(n,"Series/Column/ColumnDataLabel.js",[n["Core/Series/DataLabel.js"],n["Core/Globals.js"],n["Core/Series/SeriesRegistry.js"],n["Core/Utilities.js"]],function(i,o,a,s){var l;let{composed:u}=o,{series:_}=a,{merge:g,pick:b,pushUnique:R}=s;return function(m){function E(C,y,d,f,S){let O=this.chart.inverted,x=C.series,D=(x.xAxis?x.xAxis.len:this.chart.plotSizeX)||0,F=(x.yAxis?x.yAxis.len:this.chart.plotSizeY)||0,k=C.dlBox||C.shapeArgs,M=b(C.below,C.plotY>b(this.translatedThreshold,F)),A=b(d.inside,!!this.options.stacking);if(k){if(f=g(k),!(d.overflow==="allow"&&d.crop===!1)){f.y<0&&(f.height+=f.y,f.y=0);let N=f.y+f.height-F;N>0&&N {series.name}
',pointFormat:"x: {point.x}
y: {point.y}
"}}}),r(n,"Series/Scatter/ScatterSeries.js",[n["Series/Scatter/ScatterSeriesDefaults.js"],n["Core/Series/SeriesRegistry.js"],n["Core/Utilities.js"]],function(i,o,a){let{column:s,line:l}=o.seriesTypes,{addEvent:u,extend:_,merge:g}=a;class b extends l{applyJitter(){let m=this,E=this.options.jitter,C=this.points.length;E&&this.points.forEach(function(y,d){["x","y"].forEach(function(f,S){let O,x="plot"+f.toUpperCase(),D,F,k;E[f]&&!y.isNull&&(O=m[f+"Axis"],k=E[f]*O.transA,O&&!O.isLog&&(D=Math.max(0,y[x]-k),F=Math.min(O.len,y[x]+k),y[x]=D+(F-D)*function(M){let A=1e4*Math.sin(M);return A-Math.floor(A)}(d+S*C),f==="x"&&(y.clientX=y.plotX)))})})}drawGraph(){this.options.lineWidth?super.drawGraph():this.graph&&(this.graph=this.graph.destroy())}}return b.defaultOptions=g(l.defaultOptions,i),_(b.prototype,{drawTracker:s.prototype.drawTracker,sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:["group","markerGroup","dataLabelsGroup"]}),u(b,"afterTranslate",function(){this.applyJitter()}),o.registerSeriesType("scatter",b),b}),r(n,"Series/CenteredUtilities.js",[n["Core/Globals.js"],n["Core/Series/Series.js"],n["Core/Utilities.js"]],function(i,o,a){var s,l;let{deg2rad:u}=i,{fireEvent:_,isNumber:g,pick:b,relativeLength:R}=a;return(l=s||(s={})).getCenter=function(){let m=this.options,E=this.chart,C=2*(m.slicedOffset||0),y=E.plotWidth-2*C,d=E.plotHeight-2*C,f=m.center,S=Math.min(y,d),O=m.thickness,x,D=m.size,F=m.innerSize||0,k,M;typeof D=="string"&&(D=parseFloat(D)),typeof F=="string"&&(F=parseFloat(F));let A=[b(f[0],"50%"),b(f[1],"50%"),b(D&&D<0?void 0:m.size,"100%"),b(F&&F<0?void 0:m.innerSize||0,"0%")];for(!E.angular||this instanceof o||(A[3]=0),k=0;k<4;++k)M=A[k],x=k<2||k===2&&/%$/.test(M),A[k]=R(M,[y,d,S,A[2]][k])+(x?C:0);return A[3]>A[2]&&(A[3]=A[2]),g(O)&&2*O0&&(A[3]=A[2]-2*O),_(this,"afterGetCenter",{positions:A}),A},l.getStartAndEndRadians=function(m,E){let C=g(m)?m:0,y=g(E)&&E>C&&E-C<360?E:C+360;return{start:u*(C+-90),end:u*(y+-90)}},s}),r(n,"Series/Pie/PiePoint.js",[n["Core/Animation/AnimationUtilities.js"],n["Core/Series/Point.js"],n["Core/Utilities.js"]],function(i,o,a){let{setAnimation:s}=i,{addEvent:l,defined:u,extend:_,isNumber:g,pick:b,relativeLength:R}=a;class m extends o{getConnectorPath(C){let y=C.dataLabelPosition,d=C.options||{},f=d.connectorShape,S=this.connectorShapes[f]||f;return y&&S.call(this,{...y.computed,alignment:y.alignment},y.connectorPosition,d)||[]}getTranslate(){return this.sliced&&this.slicedTranslation||{translateX:0,translateY:0}}haloPath(C){let y=this.shapeArgs;return this.sliced||!this.visible?[]:this.series.chart.renderer.symbols.arc(y.x,y.y,y.r+C,y.r+C,{innerR:y.r-1,start:y.start,end:y.end,borderRadius:y.borderRadius})}constructor(C,y,d){super(C,y,d),this.half=0,this.name??(this.name="Slice");let f=S=>{this.slice(S.type==="select")};l(this,"select",f),l(this,"unselect",f)}isValid(){return g(this.y)&&this.y>=0}setVisible(C,y=!0){C!==this.visible&&this.update({visible:C??!this.visible},y,void 0,!1)}slice(C,y,d){let f=this.series;s(d,f.chart),y=b(y,!0),this.sliced=this.options.sliced=C=u(C)?C:!this.sliced,f.options.data[f.data.indexOf(this)]=this.options,this.graphic&&this.graphic.animate(this.getTranslate())}}return _(m.prototype,{connectorShapes:{fixedOffset:function(E,C,y){let d=C.breakAt,f=C.touchingSliceAt,S=y.softConnector?["C",E.x+(E.alignment==="left"?-5:5),E.y,2*d.x-f.x,2*d.y-f.y,d.x,d.y]:["L",d.x,d.y];return[["M",E.x,E.y],S,["L",f.x,f.y]]},straight:function(E,C){let y=C.touchingSliceAt;return[["M",E.x,E.y],["L",y.x,y.y]]},crookedLine:function(E,C,y){let{breakAt:d,touchingSliceAt:f}=C,{series:S}=this,[O,x,D]=S.center,F=D/2,{plotLeft:k,plotWidth:M}=S.chart,A=E.alignment==="left",{x:N,y:L}=E,v=d.x;if(y.crookDistance){let c=R(y.crookDistance,1);v=A?O+F+(M+k-O-F)*(1-c):k+(O-F)*c}else v=O+(x-L)*Math.tan((this.angle||0)-Math.PI/2);let p=[["M",N,L]];return(A?v<=N&&v>=d.x:v>=N&&v<=d.x)&&p.push(["L",v,L]),p.push(["L",d.x,d.y],["L",f.x,f.y]),p}}}),m}),r(n,"Series/Pie/PieSeriesDefaults.js",[],function(){return{borderRadius:3,center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{connectorPadding:5,connectorShape:"crookedLine",crookDistance:void 0,distance:30,enabled:!0,formatter:function(){return this.point.isNull?void 0:this.point.name},softConnector:!0,x:0},fillColor:void 0,ignoreHiddenPoint:!0,inactiveOtherPoints:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,stickyTracking:!1,tooltip:{followPointer:!0},borderColor:"#ffffff",borderWidth:1,lineWidth:void 0,states:{hover:{brightness:.1}}}}),r(n,"Series/Pie/PieSeries.js",[n["Series/CenteredUtilities.js"],n["Series/Column/ColumnSeries.js"],n["Core/Globals.js"],n["Series/Pie/PiePoint.js"],n["Series/Pie/PieSeriesDefaults.js"],n["Core/Series/Series.js"],n["Core/Series/SeriesRegistry.js"],n["Core/Renderer/SVG/Symbols.js"],n["Core/Utilities.js"]],function(i,o,a,s,l,u,_,g,b){let{getStartAndEndRadians:R}=i,{noop:m}=a,{clamp:E,extend:C,fireEvent:y,merge:d,pick:f}=b;class S extends u{animate(x){let D=this,F=D.points,k=D.startAngleRad;x||F.forEach(function(M){let A=M.graphic,N=M.shapeArgs;A&&N&&(A.attr({r:f(M.startR,D.center&&D.center[3]/2),start:k,end:k}),A.animate({r:N.r,start:N.start,end:N.end},D.options.animation))})}drawEmpty(){let x,D,F=this.startAngleRad,k=this.endAngleRad,M=this.options;this.total===0&&this.center?(x=this.center[0],D=this.center[1],this.graph||(this.graph=this.chart.renderer.arc(x,D,this.center[1]/2,0,F,k).addClass("highcharts-empty-series").add(this.group)),this.graph.attr({d:g.arc(x,D,this.center[2]/2,0,{start:F,end:k,innerR:this.center[3]/2})}),this.chart.styledMode||this.graph.attr({"stroke-width":M.borderWidth,fill:M.fillColor||"none",stroke:M.color||"#cccccc"})):this.graph&&(this.graph=this.graph.destroy())}drawPoints(){let x=this.chart.renderer;this.points.forEach(function(D){D.graphic&&D.hasNewShapeType()&&(D.graphic=D.graphic.destroy()),D.graphic||(D.graphic=x[D.shapeType](D.shapeArgs).add(D.series.group),D.delayedRendering=!0)})}generatePoints(){super.generatePoints(),this.updateTotals()}getX(x,D,F,k){let M=this.center,A=this.radii?this.radii[F.index]||0:M[2]/2,N=k.dataLabelPosition,L=(N==null?void 0:N.distance)||0,v=Math.asin(E((x-M[1])/(A+L),-1,1));return M[0]+Math.cos(v)*(A+L)*(D?-1:1)+(L>0?(D?-1:1)*(k.padding||0):0)}hasData(){return!!this.processedXData.length}redrawPoints(){let x,D,F,k,M=this,A=M.chart;this.drawEmpty(),M.group&&!A.styledMode&&M.group.shadow(M.options.shadow),M.points.forEach(function(N){let L={};D=N.graphic,!N.isNull&&D?(k=N.shapeArgs,x=N.getTranslate(),A.styledMode||(F=M.pointAttribs(N,N.selected&&"select")),N.delayedRendering?(D.setRadialReference(M.center).attr(k).attr(x),A.styledMode||D.attr(F).attr({"stroke-linejoin":"round"}),N.delayedRendering=!1):(D.setRadialReference(M.center),A.styledMode||d(!0,L,F),d(!0,L,k,x),D.animate(L)),D.attr({visibility:N.visible?"inherit":"hidden"}),D.addClass(N.getClassName(),!0)):D&&(N.graphic=D.destroy())})}sortByAngle(x,D){x.sort(function(F,k){return F.angle!==void 0&&(k.angle-F.angle)*D})}translate(x){y(this,"translate"),this.generatePoints();let D=this.options,F=D.slicedOffset,k=R(D.startAngle,D.endAngle),M=this.startAngleRad=k.start,A=(this.endAngleRad=k.end)-M,N=this.points,L=D.ignoreHiddenPoint,v=N.length,p,c,h,T,I,P,w,U=0;for(x||(this.center=x=this.getCenter()),P=0;P1.5*Math.PI?h-=2*Math.PI:h<-Math.PI/2&&(h+=2*Math.PI),w.slicedTranslation={translateX:Math.round(Math.cos(h)*F),translateY:Math.round(Math.sin(h)*F)},T=Math.cos(h)*x[2]/2,I=Math.sin(h)*x[2]/2,w.tooltipPos=[x[0]+.7*T,x[1]+.7*I],w.half=h<-Math.PI/2||h>Math.PI/2?1:0,w.angle=h}y(this,"afterTranslate")}updateTotals(){let x=this.points,D=x.length,F=this.options.ignoreHiddenPoint,k,M,A=0;for(k=0;k0&&(M.visible||!F)?M.y/A*100:0,M.total=A}}return S.defaultOptions=d(u.defaultOptions,l),C(S.prototype,{axisTypes:[],directTouch:!0,drawGraph:void 0,drawTracker:o.prototype.drawTracker,getCenter:i.getCenter,getSymbol:m,invertible:!1,isCartesian:!1,noSharedTooltip:!0,pointAttribs:o.prototype.pointAttribs,pointClass:s,requireSorting:!1,searchPoint:m,trackerGroups:["group","dataLabelsGroup"]}),_.registerSeriesType("pie",S),S}),r(n,"Series/Pie/PieDataLabel.js",[n["Core/Series/DataLabel.js"],n["Core/Globals.js"],n["Core/Renderer/RendererUtilities.js"],n["Core/Series/SeriesRegistry.js"],n["Core/Utilities.js"]],function(i,o,a,s,l){var u;let{composed:_,noop:g}=o,{distribute:b}=a,{series:R}=s,{arrayMax:m,clamp:E,defined:C,pick:y,pushUnique:d,relativeLength:f}=l;return function(S){let O={radialDistributionY:function(M,A){var N;return(((N=A.dataLabelPosition)==null?void 0:N.top)||0)+M.distributeBox.pos},radialDistributionX:function(M,A,N,L,v){let p=v.dataLabelPosition;return M.getX(N<((p==null?void 0:p.top)||0)+2||N>((p==null?void 0:p.bottom)||0)-2?L:N,A.half,A,v)},justify:function(M,A,N,L){var v;return L[0]+(M.half?-1:1)*(N+(((v=A.dataLabelPosition)==null?void 0:v.distance)||0))},alignToPlotEdges:function(M,A,N,L){let v=M.getBBox().width;return A?v+L:N-v-L},alignToConnectors:function(M,A,N,L){let v=0,p;return M.forEach(function(c){(p=c.dataLabel.getBBox().width)>v&&(v=p)}),A?v+L:N-v-L}};function x(M,A){let{center:N,options:L}=this,v=N[2]/2,p=M.angle||0,c=Math.cos(p),h=Math.sin(p),T=N[0]+c*v,I=N[1]+h*v,P=Math.min((L.slicedOffset||0)+(L.borderWidth||0),A/5);return{natural:{x:T+c*A,y:I+h*A},computed:{},alignment:A<0?"center":M.half?"right":"left",connectorPosition:{breakAt:{x:T+c*P,y:I+h*P},touchingSliceAt:{x:T,y:I}},distance:A}}function D(){var Q;let M=this,A=M.points,N=M.chart,L=N.plotWidth,v=N.plotHeight,p=N.plotLeft,c=Math.round(N.chartWidth/3),h=M.center,T=h[2]/2,I=h[1],P=[[],[]],w=[0,0,0,0],U=M.dataLabelPositioners,$,Y,W,z=0;M.visible&&((Q=M.hasDataLabels)!=null&&Q.call(M))&&(A.forEach(B=>{(B.dataLabels||[]).forEach(j=>{j.shortened&&(j.attr({width:"auto"}).css({width:"auto",textOverflow:"clip"}),j.shortened=!1)})}),R.prototype.drawDataLabels.apply(M),A.forEach(B=>{(B.dataLabels||[]).forEach((j,q)=>{var K;let G=h[2]/2,V=j.options,H=f((V==null?void 0:V.distance)||0,G);q===0&&P[B.half].push(B),!C((K=V==null?void 0:V.style)==null?void 0:K.width)&&j.getBBox().width>c&&(j.css({width:Math.round(.7*c)+"px"}),j.shortened=!0),j.dataLabelPosition=this.getDataLabelPosition(B,H),z=Math.max(z,H)})}),P.forEach((B,j)=>{let q=B.length,G=[],V,H,K=0,X;q&&(M.sortByAngle(B,j-.5),z>0&&(V=Math.max(0,I-T-z),H=Math.min(I+T+z,N.plotHeight),B.forEach(ee=>{(ee.dataLabels||[]).forEach(oe=>{var ne;let te=oe.dataLabelPosition;te&&te.distance>0&&(te.top=Math.max(0,I-T-te.distance),te.bottom=Math.min(I+T+te.distance,N.plotHeight),K=oe.getBBox().height||21,ee.distributeBox={target:(((ne=oe.dataLabelPosition)==null?void 0:ne.natural.y)||0)-te.top+K/2,size:K,rank:ee.y},G.push(ee.distributeBox))})}),b(G,X=H+K-V,X/5)),B.forEach(ee=>{(ee.dataLabels||[]).forEach(oe=>{let te=oe.options||{},ne=ee.distributeBox,se=oe.dataLabelPosition,ie=(se==null?void 0:se.natural.y)||0,he=te.connectorPadding||0,Z=0,J=ie,ae="inherit";if(se){if(G&&C(ne)&&se.distance>0&&(ne.pos===void 0?ae="hidden":(W=ne.size,J=U.radialDistributionY(ee,oe))),te.justify)Z=U.justify(ee,oe,T,h);else switch(te.alignTo){case"connectors":Z=U.alignToConnectors(B,j,L,p);break;case"plotEdges":Z=U.alignToPlotEdges(oe,j,L,p);break;default:Z=U.radialDistributionX(M,ee,J,ie,oe)}if(se.attribs={visibility:ae,align:se.alignment},se.posAttribs={x:Z+(te.x||0)+({left:he,right:-he}[se.alignment]||0),y:J+(te.y||0)-oe.getBBox().height/2},se.computed.x=Z,se.computed.y=J,y(te.crop,!0)){let ue;Z-(Y=oe.getBBox().width)L-he&&j===0&&(ue=Math.round(Z+Y-L+he),w[1]=Math.max(ue,w[1])),J-W/2<0?w[0]=Math.max(Math.round(-J+W/2),w[0]):J+W/2>v&&(w[2]=Math.max(Math.round(J+W/2-v),w[2])),se.sideOverflow=ue}}})}))}),(m(w)===0||this.verifyDataLabelOverflow(w))&&(this.placeDataLabels(),this.points.forEach(B=>{(B.dataLabels||[]).forEach(j=>{var H;let{connectorColor:q,connectorWidth:G=1}=j.options||{},V=j.dataLabelPosition;if(G){let K;$=j.connector,V&&V.distance>0?(K=!$,$||(j.connector=$=N.renderer.path().addClass("highcharts-data-label-connector highcharts-color-"+B.colorIndex+(B.className?" "+B.className:"")).add(M.dataLabelsGroup)),N.styledMode||$.attr({"stroke-width":G,stroke:q||B.color||"#666666"}),$[K?"attr":"animate"]({d:B.getConnectorPath(j)}),$.attr({visibility:(H=V.attribs)==null?void 0:H.visibility})):$&&(j.connector=$.destroy())}})})))}function F(){this.points.forEach(M=>{(M.dataLabels||[]).forEach(A=>{var L;let N=A.dataLabelPosition;N?(N.sideOverflow&&(A.css({width:Math.max(A.getBBox().width-N.sideOverflow,0)+"px",textOverflow:(((L=A.options)==null?void 0:L.style)||{}).textOverflow||"ellipsis"}),A.shortened=!0),A.attr(N.attribs),A[A.moved?"animate":"attr"](N.posAttribs),A.moved=!0):A&&A.attr({y:-9999})}),delete M.distributeBox},this)}function k(M){let A=this.center,N=this.options,L=N.center,v=N.minSize||80,p=v,c=N.size!==null;return!c&&(L[0]!==null?p=Math.max(A[2]-Math.max(M[1],M[3]),v):(p=Math.max(A[2]-M[1]-M[3],v),A[0]+=(M[3]-M[1])/2),L[1]!==null?p=E(p,v,A[2]-Math.max(M[0],M[2])):(p=E(p,v,A[2]-M[0]-M[2]),A[1]+=(M[0]-M[2])/2),p!(x.x>=O.x+O.width||x.x+x.width<=O.x||x.y>=O.y+O.height||x.y+x.height<=O.y),E,C,y,d,f,S=!1;for(let O=0;O(x.labelrank||0)-(O.labelrank||0));for(let O=0;O{s(C,y=>{y.label&&R.push(y.label)})});for(let E of b.series||[])if(E.visible&&((m=E.hasDataLabels)!=null&&m.call(E))){let C=y=>{for(let d of y)d.visible&&(d.dataLabels||[]).forEach(f=>{var O;let S=f.options||{};f.labelrank=l(S.labelrank,d.labelrank,(O=d.shapeArgs)==null?void 0:O.height),S.allowOverlap??Number(S.distance)>0?(f.oldOpacity=f.opacity,f.newOpacity=1,_(f,b)):R.push(f)})};C(E.nodes||[]),C(E.points)}this.hideOverlappingLabels(R)}return{compose:function(b){let R=b.prototype;R.hideOverlappingLabels||(R.hideOverlappingLabels=u,o(b,"render",g))}}}),r(n,"Extensions/BorderRadius.js",[n["Core/Defaults.js"],n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o,a){let{defaultOptions:s}=i,{noop:l}=o,{addEvent:u,extend:_,isObject:g,merge:b,relativeLength:R}=a,m={radius:0,scope:"stack",where:void 0},E=l,C=l;function y(x,D,F,k,M={}){let A=E(x,D,F,k,M),{innerR:N=0,r:L=F,start:v=0,end:p=0}=M;if(M.open||!M.borderRadius)return A;let c=p-v,h=Math.sin(c/2),T=Math.max(Math.min(R(M.borderRadius||0,L-N),(L-N)/2,L*h/(1+h)),0),I=Math.min(T,c/Math.PI*2*N),P=A.length-1;for(;P--;)(function(w,U,$){let Y,W,z,Q=w[U],B=w[U+1];if(B[0]==="Z"&&(B=w[0]),(Q[0]==="M"||Q[0]==="L")&&B[0]==="A"?(Y=Q,W=B,z=!0):Q[0]==="A"&&(B[0]==="M"||B[0]==="L")&&(Y=B,W=Q),Y&&W&&W.params){let j=W[1],q=W[5],G=W.params,{start:V,end:H,cx:K,cy:X}=G,ee=q?j-$:j+$,oe=ee?Math.asin($/ee):0,te=q?oe:-oe,ne=Math.cos(oe)*ee;z?(G.start=V+te,Y[1]=K+ne*Math.cos(V),Y[2]=X+ne*Math.sin(V),w.splice(U+1,0,["A",$,$,0,0,1,K+j*Math.cos(G.start),X+j*Math.sin(G.start)])):(G.end=H-te,W[6]=K+j*Math.cos(G.end),W[7]=X+j*Math.sin(G.end),w.splice(U+1,0,["A",$,$,0,0,1,K+ne*Math.cos(H),X+ne*Math.sin(H)])),W[4]=Math.abs(G.end-G.start)1?I:T);return A}function d(){var x,D;if(this.options.borderRadius&&!(this.chart.is3d&&this.chart.is3d())){let{options:F,yAxis:k}=this,M=F.stacking==="percent",A=(D=(x=s.plotOptions)==null?void 0:x[this.type])==null?void 0:D.borderRadius,N=f(F.borderRadius,g(A)?A:{}),L=k.options.reversed;for(let v of this.points){let{shapeArgs:p}=v;if(v.shapeType==="roundedRect"&&p){let{width:c=0,height:h=0,y:T=0}=p,I=T,P=h;if(N.scope==="stack"&&v.stackTotal){let Y=k.translate(M?100:v.stackTotal,!1,!0,!1,!0),W=k.translate(F.threshold||0,!1,!0,!1,!0),z=this.crispCol(0,Math.min(Y,W),0,Math.abs(Y-W));I=z.y,P=z.height}let w=(v.negative?-1:1)*(L?-1:1)==-1,U=N.where;!U&&this.is("waterfall")&&Math.abs((v.yBottom||0)-(this.translatedThreshold||0))>this.borderWidth&&(U="all"),U||(U="end");let $=Math.min(R(N.radius,c),c/2,U==="all"?h/2:1/0)||0;U==="end"&&(w&&(I-=$),P+=$),_(p,{brBoxHeight:P,brBoxY:I,r:$})}}}}function f(x,D){return g(x)||(x={radius:x||0}),b(m,D,x)}function S(){let x=f(this.options.borderRadius);for(let D of this.points){let F=D.shapeArgs;F&&(F.borderRadius=R(x.radius,(F.r||0)-(F.innerR||0)))}}function O(x,D,F,k,M={}){let A=C(x,D,F,k,M),{r:N=0,brBoxHeight:L=k,brBoxY:v=D}=M,p=D-v,c=v+L-(D+k),h=p-N>-.1?0:N,T=c-N>-.1?0:N,I=Math.max(h&&p,0),P=Math.max(T&&c,0),w=[x+h,D],U=[x+F-h,D],$=[x+F,D+h],Y=[x+F,D+k-T],W=[x+F-T,D+k],z=[x+T,D+k],Q=[x,D+k-T],B=[x,D+h],j=(q,G)=>Math.sqrt(Math.pow(q,2)-Math.pow(G,2));if(I){let q=j(h,h-I);w[0]-=q,U[0]+=q,$[1]=B[1]=D+h-I}if(k=_(y.minWidth,0)&&this.chartHeight>=_(y.minHeight,0)}).call(this)&&C.push(E._id)}function m(E,C){let y=this.options.responsive,d=this.currentResponsive,f=[],S;!C&&y&&y.rules&&y.rules.forEach(D=>{D._id===void 0&&(D._id=g()),this.matchResponsiveRule(D,f)},this);let O=u(...f.map(D=>l((y||{}).rules||[],F=>F._id===D)).map(D=>D&&D.chartOptions));O.isResponsiveOptions=!0,f=f.toString()||void 0;let x=d&&d.ruleIds;f!==x&&(d&&this.update(d.undoOptions,E,!0),f?((S=a(O,this.options,!0,this.collectionsWithUpdate)).isResponsiveOptions=!0,this.currentResponsive={ruleIds:f,mergedOptions:O,undoOptions:S},this.update(O,E,!0)):this.currentResponsive=void 0)}b.compose=function(E){let C=E.prototype;return C.matchResponsiveRule||s(C,{matchResponsiveRule:R,setResponsive:m}),E}}(o||(o={})),o}),r(n,"masters/highcharts.src.js",[n["Core/Globals.js"],n["Core/Utilities.js"],n["Core/Defaults.js"],n["Core/Animation/Fx.js"],n["Core/Animation/AnimationUtilities.js"],n["Core/Renderer/HTML/AST.js"],n["Core/Templating.js"],n["Core/Renderer/RendererRegistry.js"],n["Core/Renderer/RendererUtilities.js"],n["Core/Renderer/SVG/SVGElement.js"],n["Core/Renderer/SVG/SVGRenderer.js"],n["Core/Renderer/HTML/HTMLElement.js"],n["Core/Axis/Axis.js"],n["Core/Axis/DateTimeAxis.js"],n["Core/Axis/LogarithmicAxis.js"],n["Core/Axis/PlotLineOrBand/PlotLineOrBand.js"],n["Core/Axis/Tick.js"],n["Core/Tooltip.js"],n["Core/Series/Point.js"],n["Core/Pointer.js"],n["Core/Legend/Legend.js"],n["Core/Legend/LegendSymbol.js"],n["Core/Chart/Chart.js"],n["Extensions/ScrollablePlotArea.js"],n["Core/Axis/Stacking/StackingAxis.js"],n["Core/Axis/Stacking/StackItem.js"],n["Core/Series/Series.js"],n["Core/Series/SeriesRegistry.js"],n["Series/Column/ColumnDataLabel.js"],n["Series/Pie/PieDataLabel.js"],n["Core/Series/DataLabel.js"],n["Extensions/OverlappingDataLabels.js"],n["Extensions/BorderRadius.js"],n["Core/Responsive.js"],n["Core/Color/Color.js"],n["Core/Time.js"]],function(i,o,a,s,l,u,_,g,b,R,m,E,C,y,d,f,S,O,x,D,F,k,M,A,N,L,v,p,c,h,T,I,P,w,U,$){return i.AST=u,i.Axis=C,i.Chart=M,i.Color=U,i.DataLabel=T,i.Fx=s,i.HTMLElement=E,i.Legend=F,i.LegendSymbol=k,i.OverlappingDataLabels=i.OverlappingDataLabels||I,i.PlotLineOrBand=f,i.Point=x,i.Pointer=D,i.RendererRegistry=g,i.Series=v,i.SeriesRegistry=p,i.StackItem=L,i.SVGElement=R,i.SVGRenderer=m,i.Templating=_,i.Tick=S,i.Time=$,i.Tooltip=O,i.animate=l.animate,i.animObject=l.animObject,i.chart=M.chart,i.color=U.parse,i.dateFormat=_.dateFormat,i.defaultOptions=a.defaultOptions,i.distribute=b.distribute,i.format=_.format,i.getDeferredAnimation=l.getDeferredAnimation,i.getOptions=a.getOptions,i.numberFormat=_.numberFormat,i.seriesType=p.seriesType,i.setAnimation=l.setAnimation,i.setOptions=a.setOptions,i.stop=l.stop,i.time=a.defaultTime,i.timers=s.timers,P.compose(i.Series,i.SVGElement,i.SVGRenderer),c.compose(i.Series.types.column),T.compose(i.Series),y.compose(i.Axis),E.compose(i.SVGRenderer),F.compose(i.Chart),d.compose(i.Axis),I.compose(i.Chart),h.compose(i.Series.types.pie),f.compose(i.Axis),D.compose(i.Chart),w.compose(i.Chart),A.compose(i.Axis,i.Chart,i.Series),N.compose(i.Axis,i.Chart,i.Series),O.compose(i.Pointer),o.extend(i,o),i}),r(n,"Series/DataModifyComposition.js",[n["Core/Axis/Axis.js"],n["Core/Series/Point.js"],n["Core/Series/Series.js"],n["Core/Utilities.js"]],function(i,o,a,s){var l;let{tooltipFormatter:u}=o.prototype,{addEvent:_,arrayMax:g,arrayMin:b,correctFloat:R,defined:m,isArray:E,isNumber:C,isString:y,pick:d}=s;return function(f){function S(v,p,c){!this.isXAxis&&(this.series.forEach(function(h){v==="compare"&&typeof p!="boolean"?h.setCompare(p,!1):v!=="cumulative"||y(p)||h.setCumulative(p,!1)}),d(c,!0)&&this.chart.redraw())}function O(v){let p=this,{numberFormatter:c}=p.series.chart,h=function(T){v=v.replace("{point."+T+"}",(p[T]>0&&T==="change"?"+":"")+c(p[T],d(p.series.tooltipOptions.changeDecimals,2)))};return m(p.change)&&h("change"),m(p.cumulativeSum)&&h("cumulativeSum"),u.apply(this,[v])}function x(){let v,p=this.options.compare;(p==="percent"||p==="value"||this.options.cumulative)&&(v=new L(this),p==="percent"||p==="value"?v.initCompare(p):v.initCumulative()),this.dataModify=v}function D(v){let p=v.dataExtremes,c=p.activeYData;if(this.dataModify&&p){let h;this.options.compare?h=[this.dataModify.modifyValue(p.dataMin),this.dataModify.modifyValue(p.dataMax)]:this.options.cumulative&&E(c)&&c.length>=2&&(h=L.getCumulativeExtremes(c)),h&&(p.dataMin=b(h),p.dataMax=g(h))}}function F(v,p){this.options.compare=this.userOptions.compare=v,this.update({},d(p,!0)),this.dataModify&&(v==="value"||v==="percent")?this.dataModify.initCompare(v):this.points.forEach(c=>{delete c.change})}function k(){if(this.xAxis&&this.processedYData&&this.dataModify){let v=this.processedXData,p=this.processedYData,c=p.length,h=this.options.compareStart===!0?0:1,T=-1,I;for(this.pointArrayMap&&(T=this.pointArrayMap.indexOf(this.options.pointValKey||this.pointValKey||"y")),I=0;I-1?p[I][T]:p[I];if(C(P)&&P!==0&&v[I+h]>=(this.xAxis.min||0)){this.dataModify.compareValue=P;break}}}}function M(v,p){this.setModifier("compare",v,p)}function A(v,p){v=d(v,!1),this.options.cumulative=this.userOptions.cumulative=v,this.update({},d(p,!0)),this.dataModify?this.dataModify.initCumulative():this.points.forEach(c=>{delete c.cumulativeSum})}function N(v,p){this.setModifier("cumulative",v,p)}f.compose=function(v,p,c){let h=p.prototype,T=c.prototype,I=v.prototype;return I.setCompare||(I.setCompare=F,I.setCumulative=A,_(v,"afterInit",x),_(v,"afterGetExtremes",D),_(v,"afterProcessData",k)),h.setCompare||(h.setCompare=M,h.setModifier=S,h.setCumulative=N,T.tooltipFormatter=O),v};class L{constructor(p){this.series=p}modifyValue(){return 0}static getCumulativeExtremes(p){let c=1/0,h=-1/0;return p.reduce((T,I)=>{let P=T+I;return c=Math.min(c,P,T),h=Math.max(h,P,T),P}),[c,h]}initCompare(p){this.modifyValue=function(c,h){c===null&&(c=0);let T=this.compareValue;if(c!==void 0&&T!==void 0){if(p==="value"?c-=T:c=c/T*100-(this.series.options.compareBase===100?0:100),h!==void 0){let I=this.series.points[h];I&&(I.change=c)}return c}return 0}}initCumulative(){this.modifyValue=function(p,c){if(p===null&&(p=0),p!==void 0&&c!==void 0){let h=c>0?this.series.points[c-1]:null;h&&h.cumulativeSum&&(p=R(h.cumulativeSum+p));let T=this.series.points[c];return T&&(T.cumulativeSum=p),p}return 0}}}f.Additions=L}(l||(l={})),l}),r(n,"Stock/Navigator/ChartNavigatorComposition.js",[n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o){let a,{isTouchDevice:s}=i,{addEvent:l,merge:u,pick:_}=o,g=[];function b(){this.navigator&&this.navigator.setBaseSeries(null,!1)}function R(){var F;let f,S,O,x=this.legend,D=this.navigator;if(D){f=x&&x.options,S=D.xAxis,O=D.yAxis;let{scrollbarHeight:k,scrollButtonSize:M}=D;this.inverted?(D.left=D.opposite?this.chartWidth-k-D.height:this.spacing[3]+k,D.top=this.plotTop+M):(D.left=_(S.left,this.plotLeft+M),D.top=D.navigatorOptions.top||this.chartHeight-D.height-k-(((F=this.scrollbar)==null?void 0:F.options.margin)||0)-this.spacing[2]-(this.rangeSelector&&this.extraBottomMargin?this.rangeSelector.getHeight():0)-(f&&f.verticalAlign==="bottom"&&f.layout!=="proximate"&&f.enabled&&!f.floating?x.legendHeight+_(f.margin,10):0)-(this.titleOffset?this.titleOffset[2]:0)),S&&O&&(this.inverted?S.options.left=O.options.left=D.left:S.options.top=O.options.top=D.top,S.setAxisSize(),O.setAxisSize())}}function m(f){!this.navigator&&!this.scroller&&(this.options.navigator.enabled||this.options.scrollbar.enabled)&&(this.scroller=this.navigator=new a(this),_(f.redraw,!0)&&this.redraw(f.animation))}function E(){let f=this.options;(f.navigator.enabled||f.scrollbar.enabled)&&(this.scroller=this.navigator=new a(this))}function C(){let f=this.options,S=f.navigator,O=f.rangeSelector;if((S&&S.enabled||O&&O.enabled)&&(!s&&this.zooming.type==="x"||s&&this.zooming.pinchType==="x"))return!1}function y(f){let S=f.navigator;if(S&&f.xAxis[0]){let O=f.xAxis[0].getExtremes();S.render(O.min,O.max)}}function d(f){let S=f.options.navigator||{},O=f.options.scrollbar||{};!this.navigator&&!this.scroller&&(S.enabled||O.enabled)&&(u(!0,this.options.navigator,S),u(!0,this.options.scrollbar,O),delete f.options.navigator,delete f.options.scrollbar)}return{compose:function(f,S){if(o.pushUnique(g,f)){let O=f.prototype;a=S,O.callbacks.push(y),l(f,"afterAddSeries",b),l(f,"afterSetChartSize",R),l(f,"afterUpdate",m),l(f,"beforeRender",E),l(f,"beforeShowResetZoom",C),l(f,"update",d)}}}}),r(n,"Core/Axis/NavigatorAxisComposition.js",[n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o){let{isTouchDevice:a}=i,{addEvent:s,correctFloat:l,defined:u,isNumber:_,pick:g}=o;function b(){this.navigatorAxis||(this.navigatorAxis=new m(this))}function R(E){let C,y=this.chart,d=y.options,f=d.navigator,S=this.navigatorAxis,O=y.zooming.pinchType,x=d.rangeSelector,D=y.zooming.type;if(this.isXAxis&&(f!=null&&f.enabled||x!=null&&x.enabled)){if(D==="y"&&E.trigger==="zoom")C=!1;else if((E.trigger==="zoom"&&D==="xy"||a&&O==="xy")&&this.options.range){let F=S.previousZoom;u(E.min)?S.previousZoom=[this.min,this.max]:F&&(E.min=F[0],E.max=F[1],S.previousZoom=void 0)}}C!==void 0&&E.preventDefault()}class m{static compose(C){C.keepProps.includes("navigatorAxis")||(C.keepProps.push("navigatorAxis"),s(C,"init",b),s(C,"setExtremes",R))}constructor(C){this.axis=C}destroy(){this.axis=void 0}toFixedRange(C,y,d,f){var A;let S=this.axis,O=S.chart,x=g((A=S.ordinal)==null?void 0:A.convertOverscroll(S.options.overscroll),0),D=g(d,S.translate(C,!0,!S.horiz)),F=g(f,S.translate(y,!0,!S.horiz)),k=O&&O.fixedRange,M=(S.pointRange||0)/2;if(u(d)||(D=l(D+M)),u(f)||(F=l(F-M)),k&&S.dataMin&&S.dataMax){let N=S.dataMax+x;F>=N&&(D=l(N-k),F=l(N)),D<=S.dataMin&&(F=l(S.dataMin+k))}return _(D)&&_(F)||(D=F=void 0),{min:D,max:F}}}return m}),r(n,"Stock/Navigator/NavigatorDefaults.js",[n["Core/Color/Color.js"],n["Core/Series/SeriesRegistry.js"]],function(i,o){let{parse:a}=i,{seriesTypes:s}=o;return{height:40,margin:25,maskInside:!0,handles:{width:7,height:15,symbols:["navigator-handle","navigator-handle"],enabled:!0,lineWidth:1,backgroundColor:"#f2f2f2",borderColor:"#999999"},maskFill:a("#667aff").setOpacity(.3).get(),outlineColor:"#999999",outlineWidth:1,series:{type:s.areaspline===void 0?"line":"areaspline",fillOpacity:.05,lineWidth:1,compare:null,sonification:{enabled:!1},dataGrouping:{approximation:"average",enabled:!0,groupPixelWidth:2,firstAnchor:"firstPoint",anchor:"middle",lastAnchor:"lastPoint",units:[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2,3,4]],["week",[1,2,3]],["month",[1,3,6]],["year",null]]},dataLabels:{enabled:!1,zIndex:2},id:"highcharts-navigator-series",className:"highcharts-navigator-series",lineColor:null,marker:{enabled:!1},threshold:null},xAxis:{className:"highcharts-navigator-xaxis",tickLength:0,lineWidth:0,gridLineColor:"#e6e6e6",gridLineWidth:1,tickPixelInterval:200,labels:{align:"left",style:{color:"#000000",fontSize:"0.7em",opacity:.6,textOutline:"2px contrast"},x:3,y:-4},crosshair:!1},yAxis:{className:"highcharts-navigator-yaxis",gridLineWidth:0,startOnTick:!1,endOnTick:!1,minPadding:.1,maxPadding:.1,labels:{enabled:!1},crosshair:!1,title:{text:null},tickLength:0,tickWidth:0}}}),r(n,"Stock/Navigator/NavigatorSymbols.js",[],function(){return{"navigator-handle":function(i,o,a,s,l={}){let u=l.width?l.width/2:a,_=Math.round(u/3)+.5;return[["M",-u-1,.5],["L",u,.5],["L",u,(s=l.height||s)+.5],["L",-u-1,s+.5],["L",-u-1,.5],["M",-_,4],["L",-_,s-3],["M",_-1,4],["L",_-1,s-3]]}}}),r(n,"Stock/Utilities/StockUtilities.js",[n["Core/Utilities.js"]],function(i){let{defined:o}=i;return{setFixedRange:function(a){let s=this.xAxis[0];o(s.dataMax)&&o(s.dataMin)&&a?this.fixedRange=Math.min(a,s.dataMax-s.dataMin):this.fixedRange=a}}}),r(n,"Stock/Navigator/NavigatorComposition.js",[n["Core/Defaults.js"],n["Core/Globals.js"],n["Core/Axis/NavigatorAxisComposition.js"],n["Stock/Navigator/NavigatorDefaults.js"],n["Stock/Navigator/NavigatorSymbols.js"],n["Core/Renderer/RendererRegistry.js"],n["Stock/Utilities/StockUtilities.js"],n["Core/Utilities.js"]],function(i,o,a,s,l,u,_,g){let{setOptions:b}=i,{composed:R}=o,{getRendererType:m}=u,{setFixedRange:E}=_,{addEvent:C,extend:y,pushUnique:d}=g;function f(){this.chart.navigator&&!this.options.isInternal&&this.chart.navigator.setBaseSeries(null,!1)}return{compose:function(S,O,x){a.compose(O),d(R,"Navigator")&&(S.prototype.setFixedRange=E,y(m().prototype.symbols,l),C(x,"afterUpdate",f),b({navigator:s}))}}}),r(n,"Core/Axis/ScrollbarAxis.js",[n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o){var a;let{composed:s}=i,{addEvent:l,defined:u,pick:_,pushUnique:g}=o;return function(b){let R;function m(d){let f=_(d.options&&d.options.min,d.min),S=_(d.options&&d.options.max,d.max);return{axisMin:f,axisMax:S,scrollMin:u(d.dataMin)?Math.min(f,d.min,d.dataMin,_(d.threshold,1/0)):f,scrollMax:u(d.dataMax)?Math.max(S,d.max,d.dataMax,_(d.threshold,-1/0)):S}}function E(){let d=this.scrollbar,f=d&&!d.options.opposite,S=this.horiz?2:f?3:1;d&&(this.chart.scrollbarsOffsets=[0,0],this.chart.axisOffset[S]+=d.size+(d.options.margin||0))}function C(){let d=this;d.options&&d.options.scrollbar&&d.options.scrollbar.enabled&&(d.options.scrollbar.vertical=!d.horiz,d.options.startOnTick=d.options.endOnTick=!1,d.scrollbar=new R(d.chart.renderer,d.options.scrollbar,d.chart),l(d.scrollbar,"changed",function(f){let S,O,{axisMin:x,axisMax:D,scrollMin:F,scrollMax:k}=m(d),M=k-F;if(u(x)&&u(D))if(d.horiz&&!d.reversed||!d.horiz&&d.reversed?(S=F+M*this.to,O=F+M*this.from):(S=F+M*(1-this.from),O=F+M*(1-this.to)),this.shouldUpdateExtremes(f.DOMType)){let A=f.DOMType!=="mousemove"&&f.DOMType!=="touchmove"&&void 0;d.setExtremes(O,S,!0,A,f)}else this.setRange(this.from,this.to)}))}function y(){let d,f,S,{scrollMin:O,scrollMax:x}=m(this),D=this.scrollbar,F=this.axisTitleMargin+(this.titleOffset||0),k=this.chart.scrollbarsOffsets,M=this.options.margin||0;if(D&&k){if(this.horiz)this.opposite||(k[1]+=F),D.position(this.left,this.top+this.height+2+k[1]-(this.opposite?M:0),this.width,this.height),this.opposite||(k[1]+=M),d=1;else{let A;this.opposite&&(k[0]+=F),A=D.options.opposite?this.left+this.width+2+k[0]-(this.opposite?0:M):this.opposite?0:M,D.position(A,this.top,this.width,this.height),this.opposite&&(k[0]+=M),d=0}k[d]+=D.size+(D.options.margin||0),isNaN(O)||isNaN(x)||!u(this.min)||!u(this.max)||this.min===this.max?D.setRange(0,1):(f=(this.min-O)/(x-O),S=(this.max-O)/(x-O),this.horiz&&!this.reversed||!this.horiz&&this.reversed?D.setRange(f,S):D.setRange(1-S,1-f))}}b.compose=function(d,f){g(s,"Axis.Scrollbar")&&(R=f,l(d,"afterGetOffset",E),l(d,"afterInit",C),l(d,"afterRender",y))}}(a||(a={})),a}),r(n,"Stock/Scrollbar/ScrollbarDefaults.js",[],function(){return{height:10,barBorderRadius:5,buttonBorderRadius:0,buttonsEnabled:!1,liveRedraw:void 0,margin:void 0,minWidth:6,opposite:!0,step:.2,zIndex:3,barBackgroundColor:"#cccccc",barBorderWidth:0,barBorderColor:"#cccccc",buttonArrowColor:"#333333",buttonBackgroundColor:"#e6e6e6",buttonBorderColor:"#cccccc",buttonBorderWidth:1,rifleColor:"none",trackBackgroundColor:"rgba(255, 255, 255, 0.001)",trackBorderColor:"#cccccc",trackBorderRadius:5,trackBorderWidth:1}}),r(n,"Stock/Scrollbar/Scrollbar.js",[n["Core/Defaults.js"],n["Core/Globals.js"],n["Core/Axis/ScrollbarAxis.js"],n["Stock/Scrollbar/ScrollbarDefaults.js"],n["Core/Utilities.js"]],function(i,o,a,s,l){let{defaultOptions:u}=i,{addEvent:_,correctFloat:g,defined:b,destroyObjectProperties:R,fireEvent:m,merge:E,pick:C,removeEvent:y}=l;class d{static compose(S){a.compose(S,d)}static swapXY(S,O){return O&&S.forEach(x=>{let D,F=x.length;for(let k=0;kthis.calculatedWidth?O.minWidth:0;return{chartX:(S.chartX-this.x-this.xOffset)/(this.barWidth-x),chartY:(S.chartY-this.y-this.yOffset)/(this.barWidth-x)}}destroy(){let S=this,O=S.chart.scroller;S.removeEvents(),["track","scrollbarRifles","scrollbar","scrollbarGroup","group"].forEach(function(x){S[x]&&S[x].destroy&&(S[x]=S[x].destroy())}),O&&S===O.scrollbar&&(O.scrollbar=null,R(O.scrollbarButtons))}drawScrollbarButton(S){let O=this.renderer,x=this.scrollbarButtons,D=this.options,F=this.size,k=O.g().add(this.group);if(x.push(k),D.buttonsEnabled){let M=O.rect().addClass("highcharts-scrollbar-button").add(k);this.chart.styledMode||M.attr({stroke:D.buttonBorderColor,"stroke-width":D.buttonBorderWidth,fill:D.buttonBackgroundColor}),M.attr(M.crisp({x:-.5,y:-.5,width:F+1,height:F+1,r:D.buttonBorderRadius},M.strokeWidth()));let A=O.path(d.swapXY([["M",F/2+(S?-1:1),F/2-3],["L",F/2+(S?-1:1),F/2+3],["L",F/2+(S?2:-2),F/2]],D.vertical)).addClass("highcharts-scrollbar-arrow").add(x[S]);this.chart.styledMode||A.attr({fill:D.buttonArrowColor})}}init(S,O,x){this.scrollbarButtons=[],this.renderer=S,this.userOptions=O,this.options=E(s,u.scrollbar,O),this.options.margin=C(this.options.margin,10),this.chart=x,this.size=C(this.options.size,this.options.height),O.enabled&&(this.render(),this.addEvents())}mouseDownHandler(S){var D;let O=((D=this.chart.pointer)==null?void 0:D.normalize(S))||S,x=this.cursorToScrollbarPosition(O);this.chartX=x.chartX,this.chartY=x.chartY,this.initPositions=[this.from,this.to],this.grabbedCenter=!0}mouseMoveHandler(S){var k;let O,x=((k=this.chart.pointer)==null?void 0:k.normalize(S))||S,D=this.options.vertical?"chartY":"chartX",F=this.initPositions||[];this.grabbedCenter&&(!S.touches||S.touches[0][D]!==0)&&(O=this.cursorToScrollbarPosition(x)[D]-this[D],this.hasDragged=!0,this.updatePosition(F[0]+O,F[1]+O),this.hasDragged&&m(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMType:S.type,DOMEvent:S}))}mouseUpHandler(S){this.hasDragged&&m(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMType:S.type,DOMEvent:S}),this.grabbedCenter=this.hasDragged=this.chartX=this.chartY=null}position(S,O,x,D){let{buttonsEnabled:F,margin:k=0,vertical:M}=this.options,A=this.rendered?"animate":"attr",N=D,L=0;this.group.show(),this.x=S,this.y=O+this.trackBorderWidth,this.width=x,this.height=D,this.xOffset=N,this.yOffset=L,M?(this.width=this.yOffset=x=L=this.size,this.xOffset=N=0,this.yOffset=L=F?this.size:0,this.barWidth=D-(F?2*x:0),this.x=S+=k):(this.height=D=this.size,this.xOffset=N=F?this.size:0,this.barWidth=x-(F?2*D:0),this.y=this.y+k),this.group[A]({translateX:S,translateY:this.y}),this.track[A]({width:x,height:D}),this.scrollbarButtons[1][A]({translateX:M?0:x-N,translateY:M?D-L:0})}removeEvents(){this._events.forEach(function(S){y.apply(null,S)}),this._events.length=0}render(){let S=this.renderer,O=this.options,x=this.size,D=this.chart.styledMode,F=S.g("scrollbar").attr({zIndex:O.zIndex}).hide().add();this.group=F,this.track=S.rect().addClass("highcharts-scrollbar-track").attr({r:O.trackBorderRadius||0,height:x,width:x}).add(F),D||this.track.attr({fill:O.trackBackgroundColor,stroke:O.trackBorderColor,"stroke-width":O.trackBorderWidth});let k=this.trackBorderWidth=this.track.strokeWidth();this.track.attr({x:-k%2/2,y:-k%2/2}),this.scrollbarGroup=S.g().add(F),this.scrollbar=S.rect().addClass("highcharts-scrollbar-thumb").attr({height:x-k,width:x-k,r:O.barBorderRadius||0}).add(this.scrollbarGroup),this.scrollbarRifles=S.path(d.swapXY([["M",-3,x/4],["L",-3,2*x/3],["M",0,x/4],["L",0,2*x/3],["M",3,x/4],["L",3,2*x/3]],O.vertical)).addClass("highcharts-scrollbar-rifles").add(this.scrollbarGroup),D||(this.scrollbar.attr({fill:O.barBackgroundColor,stroke:O.barBorderColor,"stroke-width":O.barBorderWidth}),this.scrollbarRifles.attr({stroke:O.rifleColor,"stroke-width":1})),this.scrollbarStrokeWidth=this.scrollbar.strokeWidth(),this.scrollbarGroup.translate(-this.scrollbarStrokeWidth%2/2,-this.scrollbarStrokeWidth%2/2),this.drawScrollbarButton(0),this.drawScrollbarButton(1)}setRange(S,O){let x,D,F=this.options,k=F.vertical,M=F.minWidth,A=this.barWidth,N=!this.rendered||this.hasDragged||this.chart.navigator&&this.chart.navigator.hasDragged?"attr":"animate";if(!b(A))return;let L=A*Math.min(O,1);x=Math.ceil(A*(S=Math.max(S,0))),this.calculatedWidth=D=g(L-x),D=1?this.group.hide():this.group.show()),this.rendered=!0}shouldUpdateExtremes(S){return C(this.options.liveRedraw,o.svg&&!o.isTouchDevice&&!this.chart.boosted)||S==="mouseup"||S==="touchend"||!b(S)}trackClick(S){var k;let O=((k=this.chart.pointer)==null?void 0:k.normalize(S))||S,x=this.to-this.from,D=this.y+this.scrollbarTop,F=this.x+this.scrollbarLeft;this.options.vertical&&O.chartY>D||!this.options.vertical&&O.chartX>F?this.updatePosition(this.from+x,this.to+x):this.updatePosition(this.from-x,this.to-x),m(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:S})}update(S){this.destroy(),this.init(this.chart.renderer,E(!0,this.options,S),this.chart)}updatePosition(S,O){O>1&&(S=g(1-g(O-S)),O=1),S<0&&(O=g(O-S),S=0),this.from=S,this.to=O}}return d.defaultOptions=s,u.scrollbar=E(!0,d.defaultOptions,u.scrollbar),d}),r(n,"Stock/Navigator/Navigator.js",[n["Core/Axis/Axis.js"],n["Stock/Navigator/ChartNavigatorComposition.js"],n["Core/Defaults.js"],n["Core/Globals.js"],n["Core/Axis/NavigatorAxisComposition.js"],n["Stock/Navigator/NavigatorComposition.js"],n["Stock/Scrollbar/Scrollbar.js"],n["Core/Utilities.js"]],function(i,o,a,s,l,u,_,g){let{defaultOptions:b}=a,{isTouchDevice:R}=s,{addEvent:m,clamp:E,correctFloat:C,defined:y,destroyObjectProperties:d,erase:f,extend:S,find:O,fireEvent:x,isArray:D,isNumber:F,merge:k,pick:M,removeEvent:A,splat:N}=g;function L(p,...c){let h=[].filter.call(c,F);if(h.length)return Math[p].apply(0,h)}class v{static compose(c,h,T){o.compose(c,v),u.compose(c,h,T)}constructor(c){this.scrollbarHeight=0,this.init(c)}drawHandle(c,h,T,I){let P=this.navigatorOptions.handles.height;this.handles[h][I](T?{translateX:Math.round(this.left+this.height/2),translateY:Math.round(this.top+parseInt(c,10)+.5-P)}:{translateX:Math.round(this.left+parseInt(c,10)),translateY:Math.round(this.top+this.height/2-P/2-1)})}drawOutline(c,h,T,I){let P=this.navigatorOptions.maskInside,w=this.outline.strokeWidth(),U=w/2,$=w%2/2,Y=this.scrollButtonSize,W=this.size,z=this.top,Q=this.height,B=z-U,j=z+Q,q=this.left,G,V;T?(G=z+h+$,h=z+c+$,V=[["M",q+Q,z-Y-$],["L",q+Q,G],["L",q,G],["M",q,h],["L",q+Q,h],["L",q+Q,z+W+Y]],P&&V.push(["M",q+Q,G-U],["L",q+Q,h+U])):(q-=Y,c+=q+Y-$,h+=q+Y-$,V=[["M",q,B],["L",c,B],["L",c,j],["M",h,j],["L",h,B],["L",q+W+2*Y,z+U]],P&&V.push(["M",c-U,B],["L",h+U,B])),this.outline[I]({d:V})}drawMasks(c,h,T,I){let P,w,U,$,Y=this.left,W=this.top,z=this.height;T?(U=[Y,Y,Y],$=[W,W+c,W+h],w=[z,z,z],P=[c,h-c,this.size-h]):(U=[Y,Y+c,Y+h],$=[W,W,W],w=[c,h-c,this.size-h],P=[z,z,z]),this.shades.forEach((Q,B)=>{Q[I]({x:U[B],y:$[B],width:w[B],height:P[B]})})}renderElements(){let c=this,h=c.navigatorOptions,T=h.maskInside,I=c.chart,P=I.inverted,w=I.renderer,U={cursor:P?"ns-resize":"ew-resize"},$=c.navigatorGroup=w.g("navigator").attr({zIndex:8,visibility:"hidden"}).add();if([!T,T,!T].forEach((Y,W)=>{let z=w.rect().addClass("highcharts-navigator-mask"+(W===1?"-inside":"-outside")).add($);I.styledMode||(z.attr({fill:Y?h.maskFill:"rgba(0,0,0,0)"}),W===1&&z.css(U)),c.shades[W]=z}),c.outline=w.path().addClass("highcharts-navigator-outline").add($),I.styledMode||c.outline.attr({"stroke-width":h.outlineWidth,stroke:h.outlineColor}),h.handles&&h.handles.enabled){let Y=h.handles,{height:W,width:z}=Y;[0,1].forEach(Q=>{c.handles[Q]=w.symbol(Y.symbols[Q],-z/2-1,0,z,W,Y),I.inverted&&c.handles[Q].attr({rotation:90,rotationOriginX:Math.floor(-z/2),rotationOriginY:(W+z)/2}),c.handles[Q].attr({zIndex:7-Q}).addClass("highcharts-navigator-handle highcharts-navigator-handle-"+["left","right"][Q]).add($),I.styledMode||c.handles[Q].attr({fill:Y.backgroundColor,stroke:Y.borderColor,"stroke-width":Y.lineWidth}).css(U)})}}update(c){(this.series||[]).forEach(h=>{h.baseSeries&&delete h.baseSeries.navigatorSeries}),this.destroy(),k(!0,this.chart.options.navigator,c),this.init(this.chart)}render(c,h,T,I){let P=this.chart,w=this.xAxis,U=w.pointRange||0,$=w.navigatorAxis.fake?P.xAxis[0]:w,Y=this.navigatorEnabled,W=this.rendered,z=P.inverted,Q=P.xAxis[0].minRange,B=P.xAxis[0].options.maxRange,j=this.scrollButtonSize,q,G,V,H=this.scrollbarHeight,K,X;if(this.hasDragged&&!y(T))return;if(c=C(c-U/2),h=C(h+U/2),!F(c)||!F(h)){if(!W)return;T=0,I=M(w.width,$.width)}this.left=M(w.left,P.plotLeft+j+(z?P.plotWidth:0));let ee=this.size=K=M(w.len,(z?P.plotHeight:P.plotWidth)-2*j);q=z?H:K+2*j,T=M(T,w.toPixels(c,!0)),I=M(I,w.toPixels(h,!0)),F(T)&&Math.abs(T)!==1/0||(T=0,I=q);let oe=w.toValue(T,!0),te=w.toValue(I,!0),ne=Math.abs(C(te-oe));neB&&(this.grabbedLeft?T=w.toPixels(te-B-U,!0):this.grabbedRight&&(I=w.toPixels(oe+B+U,!0))),this.zoomedMax=E(Math.max(T,I),0,ee),this.zoomedMin=E(this.fixedWidth?this.zoomedMax-this.fixedWidth:Math.min(T,I),0,ee),this.range=this.zoomedMax-this.zoomedMin,ee=Math.round(this.zoomedMax);let se=Math.round(this.zoomedMin);Y&&(this.navigatorGroup.attr({visibility:"inherit"}),X=W&&!this.hasDragged?"animate":"attr",this.drawMasks(se,ee,z,X),this.drawOutline(se,ee,z,X),this.navigatorOptions.handles.enabled&&(this.drawHandle(se,0,z,X),this.drawHandle(ee,1,z,X))),this.scrollbar&&(z?(V=this.top-j,G=this.left-H+(Y||!$.opposite?0:($.titleOffset||0)+$.axisTitleMargin),H=K+2*j):(V=this.top+(Y?this.height:-H),G=this.left-j),this.scrollbar.position(G,V,q,H),this.scrollbar.setRange(this.zoomedMin/(K||1),this.zoomedMax/(K||1))),this.rendered=!0,x(this,"afterRender")}addMouseEvents(){let c=this,h=c.chart,T=h.container,I=[],P,w;c.mouseMoveHandler=P=function(U){c.onMouseMove(U)},c.mouseUpHandler=w=function(U){c.onMouseUp(U)},(I=c.getPartsEvents("mousedown")).push(m(h.renderTo,"mousemove",P),m(T.ownerDocument,"mouseup",w),m(h.renderTo,"touchmove",P),m(T.ownerDocument,"touchend",w)),I.concat(c.getPartsEvents("touchstart")),c.eventsToUnbind=I,c.series&&c.series[0]&&I.push(m(c.series[0].xAxis,"foundExtremes",function(){h.navigator.modifyNavigatorAxisExtremes()}))}getPartsEvents(c){let h=this,T=[];return["shades","handles"].forEach(function(I){h[I].forEach(function(P,w){T.push(m(P.element,c,function(U){h[I+"Mousedown"](U,w)}))})}),T}shadesMousedown(c,h){var j;c=((j=this.chart.pointer)==null?void 0:j.normalize(c))||c;let T=this.chart,I=this.xAxis,P=this.zoomedMin,w=this.size,U=this.range,$=this.left,Y=c.chartX,W,z,Q,B;T.inverted&&(Y=c.chartY,$=this.top),h===1?(this.grabbedCenter=Y,this.fixedWidth=U,this.dragOffset=Y-P):(B=Y-$-U/2,h===0?B=Math.max(0,B):h===2&&B+U>=w&&(B=w-U,this.reversedExtremes?(B-=U,z=this.getUnionExtremes().dataMin):W=this.getUnionExtremes().dataMax),B!==P&&(this.fixedWidth=U,y((Q=I.navigatorAxis.toFixedRange(B,B+U,z,W)).min)&&x(this,"setRange",{min:Math.min(Q.min,Q.max),max:Math.max(Q.min,Q.max),redraw:!0,eventArguments:{trigger:"navigator"}})))}handlesMousedown(c,h){var w;c=((w=this.chart.pointer)==null?void 0:w.normalize(c))||c;let T=this.chart,I=T.xAxis[0],P=this.reversedExtremes;h===0?(this.grabbedLeft=!0,this.otherHandlePos=this.zoomedMax,this.fixedExtreme=P?I.min:I.max):(this.grabbedRight=!0,this.otherHandlePos=this.zoomedMin,this.fixedExtreme=P?I.max:I.min),T.setFixedRange(void 0)}onMouseMove(c){var W;let h=this,T=h.chart,I=h.navigatorSize,P=h.range,w=h.dragOffset,U=T.inverted,$=h.left,Y;(!c.touches||c.touches[0].pageX!==0)&&(Y=(c=((W=T.pointer)==null?void 0:W.normalize(c))||c).chartX,U&&($=h.top,Y=c.chartY),h.grabbedLeft?(h.hasDragged=!0,h.render(0,0,Y-$,h.otherHandlePos)):h.grabbedRight?(h.hasDragged=!0,h.render(0,0,h.otherHandlePos,Y-$)):h.grabbedCenter&&(h.hasDragged=!0,YI+w-P&&(Y=I+w-P),h.render(0,0,Y-w,Y-w+P)),h.hasDragged&&h.scrollbar&&M(h.scrollbar.options.liveRedraw,!R&&!this.chart.boosted)&&(c.DOMType=c.type,setTimeout(function(){h.onMouseUp(c)},0)))}onMouseUp(c){let h,T,I,P,w,U,$=this.chart,Y=this.xAxis,W=this.scrollbar,z=c.DOMEvent||c,Q=$.inverted,B=this.rendered&&!this.hasDragged?"animate":"attr";(this.hasDragged&&(!W||!W.hasDragged)||c.trigger==="scrollbar")&&(I=this.getUnionExtremes(),this.zoomedMin===this.otherHandlePos?P=this.fixedExtreme:this.zoomedMax===this.otherHandlePos&&(w=this.fixedExtreme),this.zoomedMax===this.size&&(w=this.reversedExtremes?I.dataMin:I.dataMax),this.zoomedMin===0&&(P=this.reversedExtremes?I.dataMax:I.dataMin),y((U=Y.navigatorAxis.toFixedRange(this.zoomedMin,this.zoomedMax,P,w)).min)&&x(this,"setRange",{min:Math.min(U.min,U.max),max:Math.max(U.min,U.max),redraw:!0,animation:!this.hasDragged&&null,eventArguments:{trigger:"navigator",triggerOp:"navigator-drag",DOMEvent:z}})),c.DOMType!=="mousemove"&&c.DOMType!=="touchmove"&&(this.grabbedLeft=this.grabbedRight=this.grabbedCenter=this.fixedWidth=this.fixedExtreme=this.otherHandlePos=this.hasDragged=this.dragOffset=null),this.navigatorEnabled&&F(this.zoomedMin)&&F(this.zoomedMax)&&(T=Math.round(this.zoomedMin),h=Math.round(this.zoomedMax),this.shades&&this.drawMasks(T,h,Q,B),this.outline&&this.drawOutline(T,h,Q,B),this.navigatorOptions.handles.enabled&&Object.keys(this.handles).length===this.handles.length&&(this.drawHandle(T,0,Q,B),this.drawHandle(h,1,Q,B)))}removeEvents(){this.eventsToUnbind&&(this.eventsToUnbind.forEach(function(c){c()}),this.eventsToUnbind=void 0),this.removeBaseSeriesEvents()}removeBaseSeriesEvents(){let c=this.baseSeries||[];this.navigatorEnabled&&c[0]&&(this.navigatorOptions.adaptToUpdatedData!==!1&&c.forEach(function(h){A(h,"updatedData",this.updatedDataHandler)},this),c[0].xAxis&&A(c[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes))}init(c){let h=c.options,T=h.navigator||{},I=T.enabled,P=h.scrollbar||{},w=P.enabled,U=I&&T.height||0,$=w&&P.height||0,Y=P.buttonsEnabled&&$||0;this.handles=[],this.shades=[],this.chart=c,this.setBaseSeries(),this.height=U,this.scrollbarHeight=$,this.scrollButtonSize=Y,this.scrollbarEnabled=w,this.navigatorEnabled=I,this.navigatorOptions=T,this.scrollbarOptions=P,this.opposite=M(T.opposite,!!(!I&&c.inverted));let W=this,z=W.baseSeries,Q=c.xAxis.length,B=c.yAxis.length,j=z&&z[0]&&z[0].xAxis||c.xAxis[0]||{options:{}};if(c.isDirtyBox=!0,W.navigatorEnabled?(W.xAxis=new i(c,k({breaks:j.options.breaks,ordinal:j.options.ordinal,overscroll:j.options.overscroll},T.xAxis,{id:"navigator-x-axis",yAxis:"navigator-y-axis",type:"datetime",index:Q,isInternal:!0,offset:0,keepOrdinalPadding:!0,startOnTick:!1,endOnTick:!1,minPadding:0,maxPadding:0,zoomEnabled:!1},c.inverted?{offsets:[Y,0,-Y,0],width:U}:{offsets:[0,-Y,0,Y],height:U}),"xAxis"),W.yAxis=new i(c,k(T.yAxis,{id:"navigator-y-axis",alignTicks:!1,offset:0,index:B,isInternal:!0,reversed:M(T.yAxis&&T.yAxis.reversed,c.yAxis[0]&&c.yAxis[0].reversed,!1),zoomEnabled:!1},c.inverted?{width:U}:{height:U}),"yAxis"),z||T.series.data?W.updateNavigatorSeries(!1):c.series.length===0&&(W.unbindRedraw=m(c,"beforeRedraw",function(){c.series.length>0&&!W.series&&(W.setBaseSeries(),W.unbindRedraw())})),W.reversedExtremes=c.inverted&&!W.xAxis.reversed||!c.inverted&&W.xAxis.reversed,W.renderElements(),W.addMouseEvents()):(W.xAxis={chart:c,navigatorAxis:{fake:!0},translate:function(q,G){let V=c.xAxis[0],H=V.getExtremes(),K=V.len-2*Y,X=L("min",V.options.min,H.dataMin),ee=L("max",V.options.max,H.dataMax)-X;return G?q*ee/K+X:K*(q-X)/ee},toPixels:function(q){return this.translate(q)},toValue:function(q){return this.translate(q,!0)}},W.xAxis.navigatorAxis.axis=W.xAxis,W.xAxis.navigatorAxis.toFixedRange=l.prototype.toFixedRange.bind(W.xAxis.navigatorAxis)),c.options.scrollbar.enabled){let q=k(c.options.scrollbar,{vertical:c.inverted});!F(q.margin)&&W.navigatorEnabled&&(q.margin=c.inverted?-3:3),c.scrollbar=W.scrollbar=new _(c.renderer,q,c),m(W.scrollbar,"changed",function(G){let V=W.size,H=V*this.to,K=V*this.from;W.hasDragged=W.scrollbar.hasDragged,W.render(0,0,K,H),this.shouldUpdateExtremes(G.DOMType)&&setTimeout(function(){W.onMouseUp(G)})})}W.addBaseSeriesEvents(),W.addChartEvents()}getUnionExtremes(c){let h,T=this.chart.xAxis[0],I=this.xAxis,P=I.options,w=T.options;return c&&T.dataMin===null||(h={dataMin:M(P&&P.min,L("min",w.min,T.dataMin,I.dataMin,I.min)),dataMax:M(P&&P.max,L("max",w.max,T.dataMax,I.dataMax,I.max))}),h}setBaseSeries(c,h){let T=this.chart,I=this.baseSeries=[];c=c||T.options&&T.options.navigator.baseSeries||(T.series.length?O(T.series,P=>!P.options.isInternal).index:0),(T.series||[]).forEach((P,w)=>{!P.options.isInternal&&(P.options.showInNavigator||(w===c||P.options.id===c)&&P.options.showInNavigator!==!1)&&I.push(P)}),this.xAxis&&!this.xAxis.navigatorAxis.fake&&this.updateNavigatorSeries(!0,h)}updateNavigatorSeries(c,h){let T=this,I=T.chart,P=T.baseSeries,w={enableMouseTracking:!1,index:null,linkedTo:null,group:"nav",padXAxis:!1,xAxis:"navigator-x-axis",yAxis:"navigator-y-axis",showInLegend:!1,stacking:void 0,isInternal:!0,states:{inactive:{opacity:1}}},U=T.series=(T.series||[]).filter(Q=>{let B=Q.baseSeries;return!(0>P.indexOf(B))||(B&&(A(B,"updatedData",T.updatedDataHandler),delete B.navigatorSeries),Q.chart&&Q.destroy(),!1)}),$,Y,W=T.navigatorOptions.series,z;P&&P.length&&P.forEach(Q=>{let B=Q.navigatorSeries,j=S({color:Q.color,visible:Q.visible},D(W)?b.navigator.series:W);if(B&&T.navigatorOptions.adaptToUpdatedData===!1)return;w.name="Navigator "+P.length,z=($=Q.options||{}).navigatorOptions||{},j.dataLabels=N(j.dataLabels),(Y=k($,w,j,z)).pointRange=M(j.pointRange,z.pointRange,b.plotOptions[Y.type||"line"].pointRange);let q=z.data||j.data;T.hasNavigatorData=T.hasNavigatorData||!!q,Y.data=q||$.data&&$.data.slice(0),B&&B.options?B.update(Y,h):(Q.navigatorSeries=I.initSeries(Y),I.setSortedData(),Q.navigatorSeries.baseSeries=Q,U.push(Q.navigatorSeries))}),(W.data&&!(P&&P.length)||D(W))&&(T.hasNavigatorData=!1,(W=N(W)).forEach((Q,B)=>{w.name="Navigator "+(U.length+1),(Y=k(b.navigator.series,{color:I.series[B]&&!I.series[B].options.isInternal&&I.series[B].color||I.options.colors[B]||I.options.colors[0]},w,Q)).data=Q.data,Y.data&&(T.hasNavigatorData=!0,U.push(I.initSeries(Y)))})),c&&this.addBaseSeriesEvents()}addBaseSeriesEvents(){let c=this,h=c.baseSeries||[];h[0]&&h[0].xAxis&&h[0].eventsToUnbind.push(m(h[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes)),h.forEach(T=>{T.eventsToUnbind.push(m(T,"show",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!0,!1)})),T.eventsToUnbind.push(m(T,"hide",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!1,!1)})),this.navigatorOptions.adaptToUpdatedData!==!1&&T.xAxis&&T.eventsToUnbind.push(m(T,"updatedData",this.updatedDataHandler)),T.eventsToUnbind.push(m(T,"remove",function(){this.navigatorSeries&&(f(c.series,this.navigatorSeries),y(this.navigatorSeries.options)&&this.navigatorSeries.remove(!1),delete this.navigatorSeries)}))})}getBaseSeriesMin(c){return this.baseSeries.reduce(function(h,T){return Math.min(h,T.xData&&T.xData.length?T.xData[0]:h)},c)}modifyNavigatorAxisExtremes(){let c=this.xAxis;if(c.getExtremes!==void 0){let h=this.getUnionExtremes(!0);h&&(h.dataMin!==c.min||h.dataMax!==c.max)&&(c.min=h.dataMin,c.max=h.dataMax)}}modifyBaseAxisExtremes(){var q;let c,h,T=this.chart.navigator,I=this.getExtremes(),P=I.min,w=I.max,U=I.dataMin,$=I.dataMax,Y=w-P,W=T.stickToMin,z=T.stickToMax,Q=M((q=this.ordinal)==null?void 0:q.convertOverscroll(this.options.overscroll),0),B=T.series&&T.series[0],j=!!this.setExtremes;!(this.eventArgs&&this.eventArgs.trigger==="rangeSelectorButton")&&(W&&(c=(h=U)+Y),z&&(c=$+Q,W||(h=Math.max(U,c-Y,T.getBaseSeriesMin(B&&B.xData?B.xData[0]:-Number.MAX_VALUE)))),j&&(W||z)&&F(h)&&(this.min=this.userMin=h,this.max=this.userMax=c)),T.stickToMin=T.stickToMax=null}updatedDataHandler(){let c=this.chart.navigator,h=this.navigatorSeries,T=c.reversedExtremes?Math.round(c.zoomedMin)===0:Math.round(c.zoomedMax)>=Math.round(c.size);c.stickToMax=M(this.chart.options.navigator&&this.chart.options.navigator.stickToMax,T),c.stickToMin=c.shouldStickToMin(this,c),h&&!c.hasNavigatorData&&(h.options.pointStart=this.xData[0],h.setData(this.options.data,!1,null,!1))}shouldStickToMin(c,h){let T=h.getBaseSeriesMin(c.xData[0]),I=c.xAxis,P=I.max,w=I.min,U=I.options.range;return!!(F(P)&&F(w))&&(U&&P-T>0?P-T{c.destroy&&c.destroy()}),["series","xAxis","yAxis","shades","outline","scrollbarTrack","scrollbarRifles","scrollbarGroup","scrollbar","navigatorGroup","rendered"].forEach(c=>{this[c]&&this[c].destroy&&this[c].destroy(),this[c]=null}),[this.handles].forEach(c=>{d(c)})}}return v}),r(n,"Core/Axis/OrdinalAxis.js",[n["Core/Axis/Axis.js"],n["Core/Globals.js"],n["Core/Series/Series.js"],n["Core/Utilities.js"]],function(i,o,a,s){var l;let{addEvent:u,correctFloat:_,css:g,defined:b,error:R,isNumber:m,pick:E,timeUnits:C,isString:y}=s;return function(d){function f(p,c,h,T,I=[],P=0,w){let U={},$=this.options.tickPixelInterval,Y=this.chart.time,W=[],z,Q,B,j,q,G=0,V=[],H=-Number.MAX_VALUE;if(!this.options.ordinal&&!this.options.breaks||!I||I.length<3||c===void 0)return Y.getTimeTicks.apply(Y,arguments);let K=I.length;for(z=0;zh,I[z]5*P||q){if(I[z]>H){for(Q=Y.getTimeTicks(p,I[G],I[z],T);Q.length&&Q[0]<=H;)Q.shift();Q.length&&(H=Q[Q.length-1]),W.push(V.length),V=V.concat(Q)}G=z+1}if(q)break}if(Q){if(j=Q.info,w&&j.unitRange<=C.hour){for(G=1,z=V.length-1;Gh?X-1:X,se=void 0;Z--;)he=Math.abs(se-(ne=ee[Z])),se&&he<.8*$&&(ie===null||he<.8*ie)?(U[V[Z]]&&!U[V[Z+1]]?(te=Z+1,se=ne):te=Z,V.splice(te,1)):se=ne}return V}function S(p){let c=this.ordinal.positions;if(!c)return p;let h=c.length-1,T;return p<0?p=c[0]:p>h?p=c[h]:(h=Math.floor(p),T=p-h),T!==void 0&&c[h]!==void 0?c[h]+(T?T*(c[h+1]-c[h]):0):p}function O(p){let c=this.ordinal,h=this.old?this.old.min:this.min,T=this.old?this.old.transA:this.transA,I=c.getExtendedPositions();if(I&&I.length){let P=_((p-h)*T+this.minPixelPadding),w=_(c.getIndexOfPoint(P,I)),U=_(w%1);if(w>=0&&w<=I.length-1){let $=I[Math.floor(w)],Y=I[Math.ceil(w)];return I[Math.floor(w)]+U*(Y-$)}}return p}function x(p,c){let h=d.Additions.findIndexOf(p,c,!0);if(p[h]===c)return h;let T=(c-p[h])/(p[h+1]-p[h]);return h+T}function D(){this.ordinal||(this.ordinal=new d.Additions(this))}function F(){let{eventArgs:p,options:c}=this;if(this.isXAxis&&b(c.overscroll)&&c.overscroll!==0&&m(this.max)&&m(this.min)&&(this.options.ordinal&&!this.ordinal.originalOrdinalRange&&this.ordinal.getExtendedPositions(!1),this.max===this.dataMax&&((p==null?void 0:p.trigger)!=="pan"||this.isInternal)&&(p==null?void 0:p.trigger)!=="navigator")){let h=this.ordinal.convertOverscroll(c.overscroll);this.max+=h,!this.isInternal&&b(this.userMin)&&(p==null?void 0:p.trigger)!=="mousewheel"&&(this.min+=h)}}function k(){this.horiz&&!this.isDirty&&(this.isDirty=this.isOrdinal&&this.chart.navigator&&!this.chart.navigator.adaptToUpdatedData)}function M(){this.ordinal&&(this.ordinal.beforeSetTickPositions(),this.tickInterval=this.ordinal.postProcessTickInterval(this.tickInterval))}function A(p){let c=this.xAxis[0],h=c.ordinal.convertOverscroll(c.options.overscroll),T=p.originalEvent.chartX,I=this.options.chart.panning,P=!1;if(I&&I.type!=="y"&&c.options.ordinal&&c.series.length){let w,U,$=this.mouseDownX,Y=c.getExtremes(),W=Y.dataMax,z=Y.min,Q=Y.max,B=this.hoverPoints,j=c.closestPointRange||c.ordinal&&c.ordinal.overscrollPointsRange,q=Math.round(($-T)/(c.translationSlope*(c.ordinal.slope||j))),G=c.ordinal.getExtendedPositions(),V={ordinal:{positions:G,extendedOrdinalPositions:G}},H=c.index2val,K=c.val2lin;V.ordinal.positions?Math.abs(q)>1&&(B&&B.forEach(function(X){X.setState()}),W>(U=V.ordinal.positions)[U.length-1]&&U.push(W),this.setFixedRange(Q-z),(w=c.navigatorAxis.toFixedRange(void 0,void 0,H.apply(V,[K.apply(V,[z,!0])+q]),H.apply(V,[K.apply(V,[Q,!0])+q]))).min>=Math.min(Y.dataMin,z)&&w.max<=Math.max(W,Q)+h&&c.setExtremes(w.min,w.max,!0,!1,{trigger:"pan"}),this.mouseDownX=T,g(this.container,{cursor:"move"})):P=!0}else P=!0;P||I&&/y/.test(I.type)?h&&(c.max=c.dataMax+h):p.preventDefault()}function N(){let p=this.xAxis;p&&p.options.ordinal&&(delete p.ordinal.index,delete p.ordinal.originalOrdinalRange)}function L(p,c){let h,T=this.ordinal,I=T.positions,P=T.slope,w;if(!I)return p;let U=I.length;if(I[0]<=p&&I[U-1]>=p)h=x(I,p);else{if(!((w=T.getExtendedPositions&&T.getExtendedPositions())&&w.length))return p;let $=w.length;P||(P=(w[$-1]-w[0])/$);let Y=x(w,I[0]);if(p>=w[0]&&p<=w[$-1])h=x(w,p)-Y;else{if(!c)return p;h=p0&&oe.options.id!=="highcharts-navigator-series"&&oe.processedXData.length>1&&(H=ee!==oe.processedXData[1]-oe.processedXData[0]),ee=oe.processedXData[1]-oe.processedXData[0],oe.boosted&&(K=oe.boosted),oe.reserveSpace()&&(oe.takeOrdinalPosition!==!1||w)&&($=(q=q.concat(oe.processedXData)).length,q.sort(function(ne,se){return ne-se}),G=Math.min(G,E(oe.closestPointRange,G)),$)){for(te=0;te<$-1;)q[te]!==q[te+1]&&Y.push(q[te+1]),te++;Y[0]!==q[0]&&Y.unshift(q[0]),q=Y}}),c.ordinal.originalOrdinalRange||(c.ordinal.originalOrdinalRange=(q.length-1)*G),H&&K&&(q.pop(),q.shift()),($=q.length)>2){for(W=q[1]-q[0],j=$-1;j--&&!V;)q[j+1]-q[j]!==W&&(V=!0);!c.options.keepOrdinalPadding&&(q[0]-I>W||P-q[q.length-1]>W)&&(V=!0)}else c.options.overscroll&&($===2?G=q[1]-q[0]:$===1?(G=c.ordinal.convertOverscroll(c.options.overscroll),q=[q[0],q[0]+G]):G=h.overscrollPointsRange);V||c.forceOrdinal?(c.options.overscroll&&(h.overscrollPointsRange=G,q=q.concat(h.getOverscrollPositions())),h.positions=q,z=c.ordinal2lin(Math.max(I,q[0]),!0),Q=Math.max(c.ordinal2lin(Math.min(P,q[q.length-1]),!0),1),h.slope=B=(P-I)/(Q-z),h.offset=I-z*B):(h.overscrollPointsRange=E(c.closestPointRange,h.overscrollPointsRange),h.positions=c.ordinal.slope=h.offset=void 0)}c.isOrdinal=U&&V,h.groupIntervalFactor=null}static findIndexOf(c,h,T){let I=0,P=c.length-1,w;for(;IQ.x>=W&&Q.x<=z)};I.series.forEach(Y=>{var z;let W=(z=Y.points)==null?void 0:z[0];b(W==null?void 0:W.plotX)&&(W.plotX{p.updateNames(),p.setScale()}),this.getAxisMargins(),L.render();let v=L.options.verticalAlign;L.options.floating||(v==="bottom"?this.extraBottomMargin=!0:v==="middle"||(this.extraTopMargin=!0))}}function D(N){let L,v,p,c,h=N.rangeSelector,T=()=>{h&&(L=N.xAxis[0].getExtremes(),v=N.legend,c=h&&h.options.verticalAlign,E(L.min)&&h.render(L.min,L.max),v.display&&c==="top"&&c===v.options.verticalAlign&&(p=C(N.spacingBox),v.options.layout==="vertical"?p.y=N.plotTop:p.y+=h.getHeight(),v.group.placed=!1,v.align(p)))};h&&(m(f,I=>I[0]===N)||f.push([N,[g(N.xAxis[0],"afterSetExtremes",function(I){h&&h.render(I.min,I.max)}),g(N,"redraw",T)]]),T())}function F(){for(let N=0,L=f.length;Np()),f.splice(N,1);return}}}function k(){let N=this.rangeSelector;if(N){let L=N.getHeight();this.extraTopMargin&&(this.plotTop+=L),this.extraBottomMargin&&(this.marginBottom+=L)}}function M(){let N=this.rangeSelector;if(N&&!N.options.floating){N.render();let L=N.options.verticalAlign;L==="bottom"?this.extraBottomMargin=!0:L!=="middle"&&(this.extraTopMargin=!0)}}function A(N){let L=N.options.rangeSelector,v=this.extraBottomMargin,p=this.extraTopMargin,c=this.rangeSelector;if(L&&L.enabled&&!b(c)&&this.options.rangeSelector&&(this.options.rangeSelector.enabled=!0,this.rangeSelector=c=new l(this)),this.extraBottomMargin=!1,this.extraTopMargin=!1,c){D(this);let h=L&&L.verticalAlign||c.options&&c.options.verticalAlign;c.options.floating||(h==="bottom"?this.extraBottomMargin=!0:h==="middle"||(this.extraTopMargin=!0)),(this.extraBottomMargin!==v||this.extraTopMargin!==p)&&(this.isDirtyBox=!0)}}return{compose:function(N,L,v){if(l=v,d(_,"RangeSelector")){let p=L.prototype;N.prototype.minFromRange=S,g(L,"afterGetContainer",O),g(L,"beforeRender",x),g(L,"destroy",F),g(L,"getMargins",k),g(L,"render",M),g(L,"update",A),p.callbacks.push(D),R(u,{rangeSelector:a.rangeSelector}),R(u.lang,a.lang)}}}}),r(n,"Stock/RangeSelector/RangeSelector.js",[n["Core/Axis/Axis.js"],n["Core/Defaults.js"],n["Core/Globals.js"],n["Stock/RangeSelector/RangeSelectorComposition.js"],n["Core/Renderer/SVG/SVGElement.js"],n["Core/Utilities.js"]],function(i,o,a,s,l,u){let{defaultOptions:_}=o,{addEvent:g,createElement:b,css:R,defined:m,destroyObjectProperties:E,discardElement:C,extend:y,fireEvent:d,isNumber:f,merge:S,objectEach:O,pad:x,pick:D,pInt:F,splat:k}=u;class M{static compose(N,L){s.compose(N,L,M)}constructor(N){this.buttonOptions=M.prototype.defaultButtons,this.initialButtonGroupWidth=0,this.chart=N,this.init(N)}clickButton(N,L){let v=this.chart,p=this.buttonOptions[N],c=v.xAxis[0],h=v.scroller&&v.scroller.getUnionExtremes()||c||{},T=p.type,I=p.dataGrouping,P=h.dataMin,w=h.dataMax,U,$=c&&Math.round(Math.min(c.max,D(w,c.max))),Y,W=p._range,z,Q,B,j,q,G=!0;if(P!==null&&w!==null){if(this.setSelected(N),I&&(this.forcedDataGrouping=!0,i.prototype.setDataGrouping.call(c||{chart:this.chart},I,!1),this.frozenStates=p.preserveDataGrouping),T==="month"||T==="year")c?(j={range:p,max:$,chart:v,dataMin:P,dataMax:w},U=c.minFromRange.call(j),f(j.newMax)&&($=j.newMax),G=!1):W=p;else if(W)$=Math.min((U=Math.max($-W,P))+W,w),G=!1;else if(T==="ytd")if(c)(w===void 0||P===void 0)&&(P=Number.MAX_VALUE,w=Number.MIN_VALUE,v.series.forEach(V=>{let H=V.xData;H&&(P=Math.min(H[0],P),w=Math.max(H[H.length-1],w))}),L=!1),U=z=(q=this.getYTDExtremes(w,P,v.time.useUTC)).min,$=q.max;else{this.deferredYTDClick=N;return}else T==="all"&&c&&(v.navigator&&v.navigator.baseSeries[0]&&(v.navigator.baseSeries[0].xAxis.options.range=void 0),U=P,$=w);G&&p._offsetMin&&m(U)&&(U+=p._offsetMin),p._offsetMax&&m($)&&($+=p._offsetMax),this.dropdown&&(this.dropdown.selectedIndex=N+1),c?(c.setExtremes(U,$,D(L,!0),void 0,{trigger:"rangeSelectorButton",rangeSelectorButton:p}),v.setFixedRange(p._range)):(B=(Y=k(v.options.xAxis)[0]).range,Y.range=W,Q=Y.min,Y.min=z,g(v,"load",function(){v.setFixedRange(p._range),Y.range=B,Y.min=Q})),d(this,"afterBtnClick")}}setSelected(N){this.selected=this.options.selected=N}init(N){let L=this,v=N.options.rangeSelector,p=v.buttons||L.defaultButtons.slice(),c=v.selected,h=function(){let T=L.minInput,I=L.maxInput;T&&T.blur&&d(T,"blur"),I&&I.blur&&d(I,"blur")};L.chart=N,L.options=v,L.buttons=[],L.buttonOptions=p,this.eventsToUnbind=[],this.eventsToUnbind.push(g(N.container,"mousedown",h)),this.eventsToUnbind.push(g(N,"resize",h)),p.forEach(L.computeButtonRange),c!==void 0&&p[c]&&this.clickButton(c,!1),this.eventsToUnbind.push(g(N,"load",function(){N.xAxis&&N.xAxis[0]&&g(N.xAxis[0],"setExtremes",function(T){f(this.max)&&f(this.min)&&this.max-this.min!==N.fixedRange&&T.trigger!=="rangeSelectorButton"&&T.trigger!=="updatedData"&&L.forcedDataGrouping&&!L.frozenStates&&this.setDataGrouping(!1,!1)})}))}updateButtonStates(){let N=this,L=this.chart,v=this.dropdown,p=L.xAxis[0],c=Math.round(p.max-p.min),h=!p.hasVisibleSeries,T=24*36e5,I=L.scroller&&L.scroller.getUnionExtremes()||p,P=I.dataMin,w=I.dataMax,U=N.getYTDExtremes(w,P,L.time.useUTC),$=U.min,Y=U.max,W=N.selected,z=N.options.allButtonsEnabled,Q=N.buttons,B=f(W),j=!1;N.buttonOptions.forEach((q,G)=>{var ue;let V=q._range,H=q.type,K=q.count||1,X=Q[G],ee=q._offsetMax-q._offsetMin,oe=G===W,te=V>w-P,ne=VV&&(Z=!0)}else(H==="month"||H==="year")&&c+36e5>={month:28,year:365}[H]*T*K-ee&&c-36e5<={month:31,year:366}[H]*T*K+ee?Z=!0:H==="ytd"?(Z=Y-$+ee===c,ie=!oe):H==="all"&&(Z=p.max-p.min>=w-P,he=!oe&&B&&Z);let J=!z&&!(j&&H==="all")&&(te||ne||he||h),ae=j&&H==="all"||oe&&Z||Z&&!B&&!ie||oe&&N.frozenStates;J?se=3:ae&&(B=!0,se=2),X.state!==se&&(X.setState(se),v&&(v.options[G+1].disabled=J,se===2&&(v.selectedIndex=G+1)),se===0&&W===G?N.setSelected():(se===2&&!m(W)||j)&&N.setSelected(G))})}computeButtonRange(N){let L=N.type,v=N.count||1,p={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,week:6048e5};p[L]?N._range=p[L]*v:(L==="month"||L==="year")&&(N._range=24*{month:30,year:365}[L]*36e5*v),N._offsetMin=D(N.offsetMin,0),N._offsetMax=D(N.offsetMax,0),N._range+=N._offsetMax-N._offsetMin}getInputValue(N){let L=N==="min"?this.minInput:this.maxInput,v=this.chart.options.rangeSelector,p=this.chart.time;return L?(L.type==="text"&&v.inputDateParser||this.defaultInputDateParser)(L.value,p.useUTC,p):0}setInputValue(N,L){let v=this.options,p=this.chart.time,c=N==="min"?this.minInput:this.maxInput,h=N==="min"?this.minDateBox:this.maxDateBox;if(c){let T=c.getAttribute("data-hc-time"),I=m(T)?Number(T):void 0;if(m(L)){let P=I;m(P)&&c.setAttribute("data-hc-time-previous",P),c.setAttribute("data-hc-time",L),I=L}c.value=p.dateFormat(this.inputTypeFormats[c.type]||v.inputEditDateFormat,I),h&&h.attr({text:p.dateFormat(v.inputDateFormat,I)})}}setInputExtremes(N,L,v){let p=N==="min"?this.minInput:this.maxInput;if(p){let c=this.inputTypeFormats[p.type],h=this.chart.time;if(c){let T=h.dateFormat(c,L);p.min!==T&&(p.min=T);let I=h.dateFormat(c,v);p.max!==I&&(p.max=I)}}}showInput(N){let L=N==="min"?this.minDateBox:this.maxDateBox,v=N==="min"?this.minInput:this.maxInput;if(v&&L&&this.inputGroup){let p=v.type==="text",{translateX:c=0,translateY:h=0}=this.inputGroup,{x:T=0,width:I=0,height:P=0}=L,{inputBoxWidth:w}=this.options;R(v,{width:p?I+(w?-2:20)+"px":"auto",height:P-2+"px",border:"2px solid silver"}),p&&w?R(v,{left:c+T+"px",top:h+"px"}):R(v,{left:Math.min(Math.round(T+c-(v.offsetWidth-I)/2),this.chart.chartWidth-v.offsetWidth)+"px",top:h-(v.offsetHeight-P)/2+"px"})}}hideInput(N){let L=N==="min"?this.minInput:this.maxInput;L&&R(L,{top:"-9999em",border:0,width:"1px",height:"1px"})}defaultInputDateParser(N,L,v){let p=N.split("/").join("-").split(" ").join("T");if(p.indexOf("T")===-1&&(p+="T00:00"),L)p+="Z";else{let h;if(a.isSafari&&!((h=p).length>6&&(h.lastIndexOf("-")===h.length-6||h.lastIndexOf("+")===h.length-6))){let T=new Date(p).getTimezoneOffset()/60;p+=T<=0?`+${x(-T)}:00`:`-${x(T)}:00`}}let c=Date.parse(p);if(!f(c)){let h=N.split("-");c=Date.UTC(F(h[0]),F(h[1])-1,F(h[2]))}return v&&L&&f(c)&&(c+=v.getTimezoneOffset(c)),c}drawInput(N){let{chart:L,div:v,inputGroup:p}=this,c=this,h=L.renderer.style||{},T=L.renderer,I=L.options.rangeSelector,P=_.lang,w=N==="min";function U(){let{maxInput:B,minInput:j}=c,q=L.xAxis[0],G=L.scroller&&L.scroller.getUnionExtremes()||q,V=G.dataMin,H=G.dataMax,K=c.getInputValue(N);K!==Number(z.getAttribute("data-hc-time-previous"))&&f(K)&&(z.setAttribute("data-hc-time-previous",K),w&&B&&f(V)?K>Number(B.getAttribute("data-hc-time"))?K=void 0:KH&&(K=H)),K!==void 0&&q.setExtremes(w?K:q.min,w?q.max:K,void 0,void 0,{trigger:"rangeSelectorInput"}))}let $=P[w?"rangeSelectorFrom":"rangeSelectorTo"]||"",Y=T.label($,0).addClass("highcharts-range-label").attr({padding:$?2:0,height:$?I.inputBoxHeight:0}).add(p),W=T.label("",0).addClass("highcharts-range-input").attr({padding:2,width:I.inputBoxWidth,height:I.inputBoxHeight,"text-align":"center"}).on("click",function(){c.showInput(N),c[N+"Input"].focus()});L.styledMode||W.attr({stroke:I.inputBoxBorderColor,"stroke-width":1}),W.add(p);let z=b("input",{name:N,className:"highcharts-range-selector"},void 0,v);z.setAttribute("type",function(B){if(B.indexOf("%L")!==-1)return"text";let j=["a","A","d","e","w","b","B","m","o","y","Y"].some(G=>B.indexOf("%"+G)!==-1),q=["H","k","I","l","M","S"].some(G=>B.indexOf("%"+G)!==-1);return j&&q?"datetime-local":j?"date":q?"time":"text"}(I.inputDateFormat||"%e %b %Y")),L.styledMode||(Y.css(S(h,I.labelStyle)),W.css(S({color:"#333333"},h,I.inputStyle)),R(z,y({position:"absolute",border:0,boxShadow:"0 0 15px rgba(0,0,0,0.3)",width:"1px",height:"1px",padding:0,textAlign:"center",fontSize:h.fontSize,fontFamily:h.fontFamily,top:"-9999em"},I.inputStyle))),z.onfocus=()=>{c.showInput(N)},z.onblur=()=>{z===a.doc.activeElement&&U(),c.hideInput(N),c.setInputValue(N),z.blur()};let Q=!1;return z.onchange=()=>{Q||(U(),c.hideInput(N),z.blur())},z.onkeypress=B=>{B.keyCode===13&&U()},z.onkeydown=B=>{Q=!0,(B.keyCode===38||B.keyCode===40)&&U()},z.onkeyup=()=>{Q=!1},{dateBox:W,input:z,label:Y}}getPosition(){let N=this.chart,L=N.options.rangeSelector,v=L.verticalAlign==="top"?N.plotTop-N.axisOffset[0]:0;return{buttonTop:v+L.buttonPosition.y,inputTop:v+L.inputPosition.y-10}}getYTDExtremes(N,L,v){let p=this.chart.time,c=new p.Date(N),h=p.get("FullYear",c),T=Math.max(L,v?p.Date.UTC(h,0,1):+new p.Date(h,0,1)),I=c.getTime();return{max:Math.min(N||I,I),min:T}}render(N,L){let v=this.chart,p=v.renderer,c=v.container,h=v.options,T=h.rangeSelector,I=D(h.chart.style&&h.chart.style.zIndex,0)+1,P=T.inputEnabled,w=this.rendered;if(T.enabled!==!1){if(!w&&(this.group=p.g("range-selector-group").attr({zIndex:7}).add(),this.div=b("div",void 0,{position:"relative",height:0,zIndex:I}),this.buttonOptions.length&&this.renderButtons(),c.parentNode&&c.parentNode.insertBefore(this.div,c),P)){this.inputGroup=p.g("input-group").add(this.group);let U=this.drawInput("min");this.minDateBox=U.dateBox,this.minLabel=U.label,this.minInput=U.input;let $=this.drawInput("max");this.maxDateBox=$.dateBox,this.maxLabel=$.label,this.maxInput=$.input}if(P){this.setInputValue("min",N),this.setInputValue("max",L);let U=v.scroller&&v.scroller.getUnionExtremes()||v.xAxis[0]||{};if(m(U.dataMin)&&m(U.dataMax)){let $=v.xAxis[0].minRange||0;this.setInputExtremes("min",U.dataMin,Math.min(U.dataMax,this.getInputValue("max"))-$),this.setInputExtremes("max",Math.max(U.dataMin,this.getInputValue("min"))+$,U.dataMax)}if(this.inputGroup){let $=0;[this.minLabel,this.minDateBox,this.maxLabel,this.maxDateBox].forEach(Y=>{if(Y){let{width:W}=Y.getBBox();W&&(Y.attr({x:$}),$+=W+T.inputSpacing)}})}}this.alignElements(),this.rendered=!0}}renderButtons(){let{buttons:N,chart:L,options:v}=this,p=_.lang,c=L.renderer,h=S(v.buttonTheme),T=h&&h.states,I=h.width||28;delete h.width,delete h.states,this.buttonGroup=c.g("range-selector-buttons").add(this.group);let P=this.dropdown=b("select",void 0,{position:"absolute",width:"1px",height:"1px",padding:0,border:0,top:"-9999em",cursor:"pointer",opacity:1e-4},this.div);g(P,"touchstart",()=>{P.style.fontSize="16px"}),[[a.isMS?"mouseover":"mouseenter"],[a.isMS?"mouseout":"mouseleave"],["change","click"]].forEach(([w,U])=>{g(P,w,()=>{let $=N[this.currentButtonIndex()];$&&d($.element,U||w)})}),this.zoomText=c.label(p&&p.rangeSelectorZoom||"",0).attr({padding:v.buttonTheme.padding,height:v.buttonTheme.height,paddingLeft:0,paddingRight:0}).add(this.buttonGroup),this.chart.styledMode||(this.zoomText.css(v.labelStyle),h["stroke-width"]=D(h["stroke-width"],0)),b("option",{textContent:this.zoomText.textStr,disabled:!0},void 0,P),this.buttonOptions.forEach((w,U)=>{b("option",{textContent:w.title||w.text},void 0,P),N[U]=c.button(w.text,0,0,$=>{let Y,W=w.events&&w.events.click;W&&(Y=W.call(w,$)),Y!==!1&&this.clickButton(U),this.isActive=!0},h,T&&T.hover,T&&T.select,T&&T.disabled).attr({"text-align":"center",width:I}).add(this.buttonGroup),w.title&&N[U].attr("title",w.title)})}alignElements(){let{buttonGroup:N,buttons:L,chart:v,group:p,inputGroup:c,options:h,zoomText:T}=this,I=v.options,P=I.exporting&&I.exporting.enabled!==!1&&I.navigation&&I.navigation.buttonOptions,{buttonPosition:w,inputPosition:U,verticalAlign:$}=h,Y=(z,Q)=>P&&this.titleCollision(v)&&$==="top"&&Q.align==="right"&&Q.y-z.getBBox().height-12<(P.y||0)+(P.height||0)+v.spacing[0]?-40:0,W=v.plotLeft;if(p&&w&&U){let z=w.x-v.spacing[3];if(N){if(this.positionButtons(),!this.initialButtonGroupWidth){let X=0;T&&(X+=T.getBBox().width+5),L.forEach((ee,oe)=>{X+=ee.width||0,oe!==L.length-1&&(X+=h.buttonSpacing)}),this.initialButtonGroupWidth=X}W-=v.spacing[3],this.updateButtonStates();let K=Y(N,w);this.alignButtonGroup(K),p.placed=N.placed=v.hasLoaded}let Q=0;c&&(Q=Y(c,U),U.align==="left"?z=W:U.align==="right"&&(z=-Math.max(v.axisOffset[1],-Q)),c.align({y:U.y,width:c.getBBox().width,align:U.align,x:U.x+z-2},!0,v.spacingBox),c.placed=v.hasLoaded),this.handleCollision(Q),p.align({verticalAlign:$},!0,v.spacingBox);let B=p.alignAttr.translateY,j=p.getBBox().height+20,q=0;if($==="bottom"){let K=v.legend&&v.legend.options;q=B-(j=j+(K&&K.verticalAlign==="bottom"&&K.enabled&&!K.floating?v.legend.legendHeight+D(K.margin,10):0)-20)-(h.floating?0:h.y)-(v.titleOffset?v.titleOffset[2]:0)-10}$==="top"?(h.floating&&(q=0),v.titleOffset&&v.titleOffset[0]&&(q=v.titleOffset[0]),q+=v.margin[0]-v.spacing[0]||0):$==="middle"&&(U.y===w.y?q=B:(U.y||w.y)&&(U.y<0||w.y<0?q-=Math.min(U.y,w.y):q=B-j)),p.translate(h.x,h.y+Math.floor(q));let{minInput:G,maxInput:V,dropdown:H}=this;h.inputEnabled&&G&&V&&(G.style.marginTop=p.translateY+"px",V.style.marginTop=p.translateY+"px"),H&&(H.style.marginTop=p.translateY+"px")}}alignButtonGroup(N,L){let{chart:v,options:p,buttonGroup:c}=this,{buttonPosition:h}=p,T=v.plotLeft-v.spacing[3],I=h.x-v.spacing[3];h.align==="right"?I+=N-T:h.align==="center"&&(I-=T/2),c&&c.align({y:h.y,width:D(L,this.initialButtonGroupWidth),align:h.align,x:I},!0,v.spacingBox)}positionButtons(){let{buttons:N,chart:L,options:v,zoomText:p}=this,c=L.hasLoaded?"animate":"attr",{buttonPosition:h}=v,T=L.plotLeft,I=T;p&&p.visibility!=="hidden"&&(p[c]({x:D(T+h.x,T)}),I+=h.x+p.getBBox().width+5);for(let P=0,w=this.buttonOptions.length;P{let U=0;return this.buttons.forEach($=>{let Y=$.getBBox();Y.width>U&&(U=Y.width)}),U},P=U=>{if(p&&v){let $=p.alignAttr.translateX+p.alignOptions.x-N+p.getBBox().x+2,Y=p.alignOptions.width,W=v.alignAttr.translateX+v.getBBox().x;return W+U>$&&$+Y>W&&c.y{p&&v&&p.attr({translateX:p.alignAttr.translateX+(L.axisOffset[1]>=-N?0:-N),translateY:p.alignAttr.translateY+v.getBBox().height+10})};if(v){if(h==="always"){this.collapseButtons(N),P(I())&&w();return}h==="never"&&this.expandButtons()}p&&v?T.align===c.align||P(this.initialButtonGroupWidth+20)?h==="responsive"?(this.collapseButtons(N),P(I())&&w()):w():h==="responsive"&&this.expandButtons():v&&h==="responsive"&&(this.initialButtonGroupWidth>L.plotWidth?this.collapseButtons(N):this.expandButtons())}collapseButtons(N){let{buttons:L,buttonOptions:v,chart:p,dropdown:c,options:h,zoomText:T}=this;if(this.isCollapsed===!0)return;this.isCollapsed=!0;let I=p.userOptions.rangeSelector&&p.userOptions.rangeSelector.buttonTheme||{},P=$=>({text:$?`${$} ▾`:"▾",width:"auto",paddingLeft:D(h.buttonTheme.paddingLeft,I.padding,8),paddingRight:D(h.buttonTheme.paddingRight,I.padding,8)});T&&T.hide();let w=!1;v.forEach(($,Y)=>{let W=L[Y];W.state!==2?W.hide():(W.show(),W.attr(P($.text)),w=!0)}),w||(c&&(c.selectedIndex=0),L[0].show(),L[0].attr(P(this.zoomText&&this.zoomText.textStr)));let{align:U}=h.buttonPosition;this.positionButtons(),(U==="right"||U==="center")&&this.alignButtonGroup(N,L[this.currentButtonIndex()].getBBox().width),this.showDropdown()}expandButtons(){let{buttons:N,buttonOptions:L,options:v,zoomText:p}=this;this.hideDropdown(),this.isCollapsed!==!1&&(this.isCollapsed=!1,p&&p.show(),L.forEach((c,h)=>{let T=N[h];T.show(),T.attr({text:c.text,width:v.buttonTheme.width||28,paddingLeft:D(v.buttonTheme.paddingLeft,"unset"),paddingRight:D(v.buttonTheme.paddingRight,"unset")}),T.state<2&&T.setState(0)}),this.positionButtons())}currentButtonIndex(){let{dropdown:N}=this;return N&&N.selectedIndex>0?N.selectedIndex-1:0}showDropdown(){let{buttonGroup:N,buttons:L,chart:v,dropdown:p}=this;if(N&&p){let{translateX:c=0,translateY:h=0}=N,T=L[this.currentButtonIndex()].getBBox();R(p,{left:v.plotLeft+c+"px",top:h+.5+"px",width:T.width+"px",height:T.height+"px"}),this.hasVisibleDropdown=!0}}hideDropdown(){let{dropdown:N}=this;N&&(R(N,{top:"-9999em",width:"1px",height:"1px"}),this.hasVisibleDropdown=!1)}getHeight(){let N=this.options,L=this.group,v=N.inputPosition,p=N.buttonPosition,c=N.y,h=p.y,T=v.y,I=0;if(N.height)return N.height;this.alignElements(),I=L?L.getBBox(!0).height+13+c:0;let P=Math.min(T,h);return(T<0&&h<0||T>0&&h>0)&&(I+=Math.abs(P)),I}titleCollision(N){return!(N.options.title.text||N.options.subtitle.text)}update(N){let L=this.chart;S(!0,L.options.rangeSelector,N),this.destroy(),this.init(L),this.render()}destroy(){let N=this,L=N.minInput,v=N.maxInput;N.eventsToUnbind&&(N.eventsToUnbind.forEach(p=>p()),N.eventsToUnbind=void 0),E(N.buttons),L&&(L.onfocus=L.onblur=L.onchange=null),v&&(v.onfocus=v.onblur=v.onchange=null),O(N,function(p,c){p&&c!=="chart"&&(p instanceof l?p.destroy():p instanceof t.HTMLElement&&C(p)),p!==M.prototype[c]&&(N[c]=null)},this)}}return y(M.prototype,{defaultButtons:[{type:"month",count:1,text:"1m",title:"View 1 month"},{type:"month",count:3,text:"3m",title:"View 3 months"},{type:"month",count:6,text:"6m",title:"View 6 months"},{type:"ytd",text:"YTD",title:"View year to date"},{type:"year",count:1,text:"1y",title:"View 1 year"},{type:"all",text:"All",title:"View all"}],inputTypeFormats:{"datetime-local":"%Y-%m-%dT%H:%M:%S",date:"%Y-%m-%d",time:"%H:%M:%S"}}),M}),r(n,"Core/Chart/StockChart.js",[n["Core/Chart/Chart.js"],n["Core/Templating.js"],n["Core/Defaults.js"],n["Stock/Navigator/NavigatorDefaults.js"],n["Stock/RangeSelector/RangeSelectorDefaults.js"],n["Stock/Scrollbar/ScrollbarDefaults.js"],n["Stock/Utilities/StockUtilities.js"],n["Core/Utilities.js"]],function(i,o,a,s,l,u,_,g){let{format:b}=o,{getOptions:R}=a,{setFixedRange:m}=_,{addEvent:E,clamp:C,defined:y,extend:d,find:f,isNumber:S,isString:O,merge:x,pick:D,splat:F}=g;function k(N,L,v){var p,c;return N==="xAxis"?{minPadding:0,maxPadding:0,overscroll:0,ordinal:!0}:N==="yAxis"?{labels:{y:-2},opposite:v.opposite??L.opposite??!0,showLastLabel:!!(L.categories||L.type==="category"),title:{text:((p=v.title)==null?void 0:p.text)!=="Values"?(c=v.title)==null?void 0:c.text:null}}:{}}function M(N,L){if(N==="xAxis"){let v=D(L.navigator&&L.navigator.enabled,s.enabled,!0),p={type:"datetime",categories:void 0};return v&&(p.startOnTick=!1,p.endOnTick=!1),p}return{}}class A extends i{init(L,v){let p=R(),c=L.xAxis,h=L.yAxis,T=D(L.navigator&&L.navigator.enabled,s.enabled,!0);L.xAxis=L.yAxis=void 0;let I=x({chart:{panning:{enabled:!0,type:"x"},zooming:{pinchType:"x",mouseWheel:{type:"x"}}},navigator:{enabled:T},scrollbar:{enabled:D(u.enabled,!0)},rangeSelector:{enabled:D(l.rangeSelector.enabled,!0)},title:{text:null},tooltip:{split:D(p.tooltip&&p.tooltip.split,!0),crosshairs:!0},legend:{enabled:!1}},L,{isStock:!0});L.xAxis=c,L.yAxis=h,I.xAxis=F(L.xAxis||{}).map(P=>x(k("xAxis",P,p.xAxis),P,M("xAxis",L))),I.yAxis=F(L.yAxis||{}).map(P=>x(k("yAxis",P,p.yAxis),P)),super.init(I,v)}createAxis(L,v){return v.axis=x(k(L,v.axis,R()[L]),v.axis,M(L,this.userOptions)),super.createAxis(L,v)}}return E(i,"update",function(N){let L=N.options;"scrollbar"in L&&this.navigator&&(x(!0,this.options.scrollbar,L.scrollbar),this.navigator.update({}),delete L.scrollbar)}),function(N){function L(w){if(!this.crosshair||!this.crosshair.label||!this.crosshair.label.enabled||!this.cross||!S(this.min)||!S(this.max))return;let U=this.chart,$=this.logarithmic,Y=this.crosshair.label,W=this.horiz,z=this.opposite,Q=this.left,B=this.top,j=this.width,q=this.options.tickPosition==="inside",G=this.crosshair.snap!==!1,V=w.e||this.cross&&this.cross.e,H=w.point,K=this.crossLabel,X,ee,oe=Y.format,te="",ne,se=0,ie=this.min,he=this.max;$&&(ie=$.lin2log(this.min),he=$.lin2log(this.max));let Z=W?"center":z?this.labelAlign==="right"?"right":"left":this.labelAlign==="left"?"left":"center";K||(K=this.crossLabel=U.renderer.label("",0,void 0,Y.shape||"callout").addClass("highcharts-crosshair-label highcharts-color-"+(H&&H.series?H.series.colorIndex:this.series[0]&&this.series[0].colorIndex)).attr({align:Y.align||Z,padding:D(Y.padding,8),r:D(Y.borderRadius,3),zIndex:2}).add(this.labelGroup),U.styledMode||K.attr({fill:Y.backgroundColor||H&&H.series&&H.series.color||"#666666",stroke:Y.borderColor||"","stroke-width":Y.borderWidth||0}).css(d({color:"#ffffff",fontWeight:"normal",fontSize:"0.7em",textAlign:"center"},Y.style||{}))),W?(X=G?(H.plotX||0)+Q:V.chartX,ee=B+(z?0:this.height)):(X=Q+this.offset+(z?j:0),ee=G?(H.plotY||0)+B:V.chartY),oe||Y.formatter||(this.dateTime&&(te="%b %d, %Y"),oe="{value"+(te?":"+te:"")+"}");let J=G?this.isXAxis?H.x:H.y:this.toValue(W?V.chartX:V.chartY),ae=H&&H.series?H.series.isPointInside(H):S(J)&&J>ie&&J=ne.right&&(se=-(le+de.width-ne.right)),K.attr({x:X+se,y:ee,anchorX:W?X:this.opposite?0:U.chartWidth,anchorY:W?this.opposite?U.chartHeight:0:ee+de.height/2})}function v(){this.crossLabel&&(this.crossLabel=this.crossLabel.hide())}function p(w){let U=this.chart,$=this.options,Y=U._labelPanes=U._labelPanes||{},W=$.labels;if(U.options.isStock&&this.coll==="yAxis"){let z=$.top+","+$.height;!Y[z]&&W.enabled&&(W.distance===15&&this.side===1&&(W.distance=0),W.align===void 0&&(W.align="right"),Y[z]=this,w.align="right",w.preventDefault())}}function c(){let w=this.chart,U=this.options&&this.options.top+","+this.options.height;U&&w._labelPanes&&w._labelPanes[U]===this&&delete w._labelPanes[U]}function h(w){let U=this,$=U.isLinked&&!U.series&&U.linkedParent?U.linkedParent.series:U.series,Y=U.chart,W=Y.renderer,z=U.left,Q=U.top,B=[],j=w.translatedValue,q=w.value,G=w.force,V,H,K,X,ee=[],oe,te;if(Y.options.isStock&&w.acrossPanes!==!1&&U.coll==="xAxis"||U.coll==="yAxis"){for(let ne of(w.preventDefault(),ee=(se=>{let ie=se==="xAxis"?"yAxis":"xAxis",he=U.options[ie];return S(he)?[Y[ie][he]]:O(he)?[Y.get(he)]:$.map(Z=>Z[ie])})(U.coll),U.isXAxis?Y.yAxis:Y.xAxis))if(!y(ne.options.id)||ne.options.id.indexOf("navigator")===-1){let se=ne.isXAxis?"yAxis":"xAxis";U===(y(ne.options[se])?Y[se][ne.options[se]]:Y[se][0])&&ee.push(ne)}for(let ne of(oe=ee.length?[]:[U.isXAxis?Y.yAxis[0]:Y.xAxis[0]],ee))oe.indexOf(ne)!==-1||f(oe,se=>se.pos===ne.pos&&se.len===ne.len)||oe.push(ne);if(S(te=D(j,U.translate(q||0,void 0,void 0,w.old))))if(U.horiz)for(let ne of oe){let se;X=(H=ne.pos)+ne.len,V=K=Math.round(te+U.transB),G!=="pass"&&(Vz+U.width)&&(G?V=K=C(V,z,z+U.width):se=!0),se||B.push(["M",V,H],["L",K,X])}else for(let ne of oe){let se;K=(V=ne.pos)+ne.len,H=X=Math.round(Q+U.height-te),G!=="pass"&&(HQ+U.height)&&(G?H=X=C(H,Q,Q+U.height):se=!0),se||B.push(["M",V,H],["L",K,X])}w.path=B.length>0?W.crispPolyLine(B,w.lineWidth||1):void 0}}function T(w){if(this.chart.options.isStock){let U;this.is("column")||this.is("columnrange")?U={borderWidth:0,shadow:!1}:this.is("scatter")||this.is("sma")||(U={marker:{enabled:!1,radius:2}}),U&&(w.plotOptions[this.type]=x(w.plotOptions[this.type],U))}}function I(){let w=this.chart,U=this.options.dataGrouping;return this.allowDG!==!1&&U&&D(U.enabled,w.options.isStock)}function P(w,U){for(let $=0;$ {series.name}
High: {point.high}
Low: {point.low}
Close: {point.close}
'},threshold:null,states:{hover:{lineWidth:3}},stickyTracking:!0}}),r(n,"Series/HLC/HLCSeries.js",[n["Series/HLC/HLCPoint.js"],n["Series/HLC/HLCSeriesDefaults.js"],n["Core/Series/SeriesRegistry.js"],n["Core/Utilities.js"]],function(i,o,a,s){let{column:l}=a.seriesTypes,{extend:u,merge:_}=s;class g extends l{extendStem(R,m,E){let C=R[0],y=R[1];typeof C[2]=="number"&&(C[2]=Math.max(E+m,C[2])),typeof y[2]=="number"&&(y[2]=Math.min(E-m,y[2]))}getPointPath(R,m){let E=m.strokeWidth(),C=R.series,y=E%2/2,d=Math.round(R.plotX)-y,f=Math.round(R.shapeArgs.width/2),S=R.plotClose,O=[["M",d,Math.round(R.yBottom)],["L",d,Math.round(R.plotHigh)]];return R.close!==null&&(S=Math.round(R.plotClose)+y,O.push(["M",d,S],["L",d+f,S]),C.extendStem(O,E/2,S)),O}drawSinglePoint(R){let m=R.series,E=m.chart,C,y=R.graphic;R.plotY!==void 0&&(y||(R.graphic=y=E.renderer.path().add(m.group)),E.styledMode||y.attr(m.pointAttribs(R,R.selected&&"select")),C=m.getPointPath(R,y),y[y?"animate":"attr"]({d:C}).addClass(R.getClassName(),!0))}drawPoints(){this.points.forEach(this.drawSinglePoint)}init(){super.init.apply(this,arguments),this.options.stacking=void 0}pointAttribs(R,m){let E=super.pointAttribs.call(this,R,m);return delete E.fill,E}toYData(R){return[R.high,R.low,R.close]}translate(){let R=this,m=R.yAxis,E=this.pointArrayMap&&this.pointArrayMap.slice()||[],C=E.map(y=>`plot${y.charAt(0).toUpperCase()+y.slice(1)}`);C.push("yBottom"),E.push("low"),super.translate.apply(R),R.points.forEach(function(y){E.forEach(function(d,f){let S=y[d];S!==null&&(R.dataModify&&(S=R.dataModify.modifyValue(S)),y[C[f]]=m.toPixels(S,!0))}),y.tooltipPos[1]=y.plotHigh+m.pos-R.chart.plotTop})}}return g.defaultOptions=_(l.defaultOptions,o),u(g.prototype,{pointClass:i,animate:null,directTouch:!1,pointArrayMap:["high","low","close"],pointAttrToOptions:{stroke:"color","stroke-width":"lineWidth"},pointValKey:"close"}),a.registerSeriesType("hlc",g),g}),r(n,"Series/OHLC/OHLCPoint.js",[n["Core/Series/SeriesRegistry.js"]],function(i){let{seriesTypes:{hlc:o}}=i;class a extends o.prototype.pointClass{getClassName(){return super.getClassName.call(this)+(this.open {series.name}
Open: {point.open}
High: {point.high}
Low: {point.low}
Close: {point.close}
'}}}),r(n,"Series/OHLC/OHLCSeries.js",[n["Core/Globals.js"],n["Series/OHLC/OHLCPoint.js"],n["Series/OHLC/OHLCSeriesDefaults.js"],n["Core/Series/SeriesRegistry.js"],n["Core/Utilities.js"]],function(i,o,a,s,l){let{composed:u}=i,{hlc:_}=s.seriesTypes,{addEvent:g,extend:b,merge:R,pushUnique:m}=l;function E(d){let f=d.options,S=f.dataGrouping;S&&f.useOhlcData&&f.id!=="highcharts-navigator-series"&&(S.approximation="ohlc")}function C(d){let f=d.options;f.useOhlcData&&f.id!=="highcharts-navigator-series"&&b(this,{pointValKey:y.prototype.pointValKey,pointArrayMap:y.prototype.pointArrayMap,toYData:y.prototype.toYData})}class y extends _{static compose(f,...S){m(u,"OHLCSeries")&&(g(f,"afterSetOptions",E),g(f,"init",C))}getPointPath(f,S){let O=super.getPointPath(f,S),x=S.strokeWidth(),D=x%2/2,F=Math.round(f.plotX)-D,k=Math.round(f.shapeArgs.width/2),M=f.plotOpen;return f.open!==null&&(M=Math.round(f.plotOpen)+D,O.push(["M",F,M],["L",F-k,M]),super.extendStem(O,x/2,M)),O}pointAttribs(f,S){let O=super.pointAttribs.call(this,f,S),x=this.options;return delete O.fill,!f.options.color&&x.upColor&&f.openm&&(b-=Math.round((E-m)/2),m=E),y=_[g](b,R,m,E),d&&f){let S=d;if(g==="circle")S=b+m/2;else{let x=y[0],D=y[1];x[0]==="M"&&D[0]==="L"&&(S=(x[1]+D[1])/2)}let O=R>f?R:R+E;y.push(["M",S,O],["L",d,f]),y=y.concat(_.circle(d-1,f-1,2,2))}return y}}a.compose=function(_){if(s.indexOf(_)===-1){s.push(_);let b=_.prototype.symbols;b.flag=l,u(b,"circle"),u(b,"square")}let g=i.getRendererType();s.indexOf(g)&&s.push(g)}}(o||(o={})),o}),r(n,"Series/OnSeriesComposition.js",[n["Series/Column/ColumnSeries.js"],n["Core/Globals.js"],n["Core/Series/Series.js"],n["Core/Utilities.js"]],function(i,o,a,s){var l;let{composed:u}=o,{prototype:_}=i,{prototype:g}=a,{defined:b,pushUnique:R,stableSort:m}=s;return function(E){function C(d){return g.getPlotBox.call(this.options.onSeries&&this.chart.get(this.options.onSeries)||this,d)}function y(){var Y,W;_.translate.apply(this);let d=this,f=d.options,S=d.chart,O=d.points,x=f.onSeries,D=x&&S.get(x),F=D&&D.options.step,k=D&&D.points,M=S.inverted,A=d.xAxis,N=d.yAxis,L=O.length-1,v,p,c=f.onKey||"y",h=k&&k.length,T=0,I,P,w,U,$;if(D&&D.visible&&h){for(T=(D.pointXOffset||0)+(D.barW||0)/2,U=D.currentDataGrouping,P=k[h-1].x+(U?U.totalRange:0),m(O,(z,Q)=>z.x-Q.x),c="plot"+c[0].toUpperCase()+c.substr(1);h--&&O[L];)if(I=k[h],(v=O[L]).y=I.y,I.x<=v.x&&I[c]!==void 0){if(v.x<=P&&(v.plotY=I[c],I.xMath.pow(1-K,3)*z[X]+3*(1-K)*(1-K)*K*B[X]+3*(1-K)*K*K*j[X]+K*K*K*Q[X],G=0,V=1,H;for(let K=0;K<100;K++){let X=(G+V)/2,ee=q(X,0);if(ee===null)break;if(.25>Math.abs(ee-v.plotX)){H=X;break}ee{let B;z.plotX+=T,(z.plotY===void 0||M)&&(z.plotX>=0&&z.plotX<=A.len?M?(z.plotY=A.translate(z.x,0,1,0,1),z.plotX=b(z.y)?N.translate(z.y,0,0,0,1):0):z.plotY=(A.opposite?0:d.yAxis.len)+A.offset:z.shapeArgs={}),(p=O[Q-1])&&p.plotX===z.plotX&&(p.stackIndex===void 0&&(p.stackIndex=0),B=p.stackIndex+1),z.stackIndex=B}),this.onSeries=D}E.compose=function(d){if(R(u,"OnSeries")){let f=d.prototype;f.getPlotBox=C,f.translate=y}return d},E.getPlotBox=C,E.translate=y}(l||(l={})),l}),r(n,"Series/Flags/FlagsSeries.js",[n["Series/Flags/FlagsPoint.js"],n["Series/Flags/FlagsSeriesDefaults.js"],n["Series/Flags/FlagsSymbols.js"],n["Core/Globals.js"],n["Series/OnSeriesComposition.js"],n["Core/Renderer/RendererUtilities.js"],n["Core/Series/SeriesRegistry.js"],n["Core/Renderer/SVG/SVGElement.js"],n["Core/Utilities.js"]],function(i,o,a,s,l,u,_,g,b){let{noop:R}=s,{distribute:m}=u,{series:E,seriesTypes:{column:C}}=_,{addEvent:y,defined:d,extend:f,merge:S,objectEach:O,wrap:x}=b;class D extends C{animate(k){k&&this.setClip()}drawPoints(){let k,M,A,N,L,v,p,c,h,T,I,P=this.points,w=this.chart,U=w.renderer,$=w.inverted,Y=this.options,W=Y.y,z=this.yAxis,Q={},B=[];for(N=P.length;N--;)L=P[N],T=($?L.plotY:L.plotX)>this.xAxis.len,k=L.plotX,p=L.stackIndex,A=L.options.shape||Y.shape,(M=L.plotY)!==void 0&&(M=L.plotY+W-(p!==void 0&&p*Y.stackDistance)),L.anchorX=p?void 0:L.plotX,c=p?void 0:L.plotY,I=A!=="flag",v=L.graphic,M!==void 0&&k>=0&&!T?(v&&L.hasNewShapeType()&&(v=v.destroy()),v||(v=L.graphic=U.label("",null,null,A,null,null,Y.useHTML).addClass("highcharts-point").add(this.markerGroup),L.graphic.div&&(L.graphic.div.point=L),v.isNew=!0),v.attr({align:I?"center":"left",width:Y.width,height:Y.height,"text-align":Y.textAlign}),w.styledMode||v.attr(this.pointAttribs(L)).css(S(Y.style,L.style)).shadow(Y.shadow),k>0&&(k-=v.strokeWidth()%2),h={y:M,anchorY:c},Y.allowOverlapX&&(h.x=k,h.anchorX=L.anchorX),v.attr({text:L.options.title||Y.title||"A"})[v.isNew?"attr":"animate"](h),Y.allowOverlapX||(Q[L.plotX]?Q[L.plotX].size=Math.max(Q[L.plotX].size,v.width||0):Q[L.plotX]={align:I?.5:0,size:v.width||0,target:k,anchorX:k}),L.tooltipPos=[k,M+z.pos-w.plotTop]):v&&(L.graphic=v.destroy());if(!Y.allowOverlapX){let j=100;for(let q of(O(Q,function(G){G.plotX=G.anchorX,B.push(G),j=Math.max(G.size,j)}),m(B,$?z.len:this.xAxis.len,j),P)){let G=q.plotX,V=q.graphic,H=V&&Q[G];H&&V&&(d(H.pos)?V[V.isNew?"attr":"animate"]({x:H.pos+(H.align||0)*H.size,anchorX:q.anchorX}).show().isNew=!1:V.hide().isNew=!0)}}Y.useHTML&&this.markerGroup&&x(this.markerGroup,"on",function(j){return g.prototype.on.apply(j.apply(this,[].slice.call(arguments,1)),[].slice.call(arguments,1))})}drawTracker(){let k=this.points;for(let M of(super.drawTracker(),k)){let A=M.graphic;A&&(M.unbindMouseOver&&M.unbindMouseOver(),M.unbindMouseOver=y(A.element,"mouseover",function(){for(let N of(M.stackIndex>0&&!M.raised&&(M._y=A.y,A.attr({y:M._y-8}),M.raised=!0),k))N!==M&&N.raised&&N.graphic&&(N.graphic.attr({y:N._y}),N.raised=!1)}))}}pointAttribs(k,M){let A=this.options,N=k&&k.color||this.color,L=A.lineColor,v=k&&k.lineWidth,p=k&&k.fillColor||A.fillColor;return M&&(p=A.states[M].fillColor,L=A.states[M].lineColor,v=A.states[M].lineWidth),{fill:p||N,stroke:L||N,"stroke-width":v||A.lineWidth||0}}setClip(){E.prototype.setClip.apply(this,arguments),this.options.clip!==!1&&this.sharedClipKey&&this.markerGroup&&this.markerGroup.clip(this.chart.sharedClips[this.sharedClipKey])}}return D.compose=a.compose,D.defaultOptions=S(C.defaultOptions,o),l.compose(D),f(D.prototype,{allowDG:!1,forceCrop:!0,invertible:!1,noSharedTooltip:!0,pointClass:i,sorted:!1,takeOrdinalPosition:!1,trackerGroups:["markerGroup"],buildKDTree:R,init:E.prototype.init}),_.registerSeriesType("flags",D),D}),r(n,"Core/Axis/BrokenAxis.js",[n["Core/Axis/Stacking/StackItem.js"],n["Core/Utilities.js"]],function(i,o){var a;let{addEvent:s,find:l,fireEvent:u,isArray:_,isNumber:g,pick:b}=o;return function(R){function m(){this.brokenAxis!==void 0&&this.brokenAxis.setBreaks(this.options.breaks,!1)}function E(){var D;(D=this.brokenAxis)!=null&&D.hasBreaks&&(this.options.ordinal=!1)}function C(){let D=this.brokenAxis;if(D!=null&&D.hasBreaks){let F=this.tickPositions,k=this.tickPositions.info,M=[];for(let A=0;Aw.to||M>w.from&&Aw.from&&Aw.from&&A>w.to&&A0){let L,v;for(this.options.gapUnit!=="value"&&(A*=this.basePointRange),F&&F>A&&F>=this.basePointRange&&(A=F);N--;)if(v&&v.visible!==!1||(v=k[N+1]),L=k[N],v.visible!==!1&&L.visible!==!1){if(v.x-L.x>A){let p=(L.x+v.x)/2;k.splice(N+1,0,{isNull:!0,x:p}),M.stacking&&this.options.stacking&&((M.stacking.stacks[this.stackKey][p]=new i(M,M.options.stackLabels,!1,p,this.stack)).total=0)}v=L}}return this.getGraphPath(k)}R.compose=function(D,F){if(!D.keepProps.includes("brokenAxis")){D.keepProps.push("brokenAxis"),s(D,"init",y),s(D,"afterInit",m),s(D,"afterSetTickPositions",C),s(D,"afterSetOptions",E);let k=F.prototype;k.drawBreaks=S,k.gappedPath=O,s(F,"afterGeneratePoints",d),s(F,"afterRender",f)}return D};class x{static isInBreak(F,k){let M=F.repeat||1/0,A=F.from,N=F.to-F.from,L=k>=A?(k-A)%M:M-(A-k)%M;return F.inclusive?L<=N:L=A);L++)(N.to=F)break;if(x.isInBreak(N,F)){A-=F-N.from;break}}return A}constructor(F){this.hasBreaks=!1,this.axis=F}findBreakAt(F,k){return l(k,function(M){return M.fromP;)U-=I;for(;Uthis.chart.plotSizeX/y||f&&S.forced)&&(d=!0));return d?y:0}function R(){this.series.forEach(function(E){E.hasProcessed=!1})}function m(E,C){let y;if(C=_(C,!0),E||(E={forced:!1,units:null}),this instanceof a)for(y=this.series.length;y--;)this.series[y].update({dataGrouping:E},!1);else this.chart.options.series.forEach(function(d){d.dataGrouping=typeof E=="boolean"?E:u(E,d.dataGrouping)});this.ordinal&&(this.ordinal.slope=void 0),C&&this.chart.redraw()}return{compose:function(E){a=E;let C=E.prototype;C.applyGrouping||(s(E,"afterSetScale",R),s(E,"postProcessData",g),l(C,{applyGrouping:g,getGroupPixelWidth:b,setDataGrouping:m}))}}}),r(n,"Extensions/DataGrouping/DataGroupingSeriesComposition.js",[n["Extensions/DataGrouping/ApproximationRegistry.js"],n["Extensions/DataGrouping/DataGroupingDefaults.js"],n["Core/Axis/DateTimeAxis.js"],n["Core/Defaults.js"],n["Core/Series/SeriesRegistry.js"],n["Core/Utilities.js"]],function(i,o,a,s,l,u){let{series:{prototype:_}}=l,{addEvent:g,defined:b,error:R,extend:m,isNumber:E,merge:C,pick:y}=u,d=_.generatePoints;function f(k){var M;let A,N,L=this.chart,v=this.options.dataGrouping,p=this.allowDG!==!1&&v&&y(v.enabled,L.options.isStock),c=this.reserveSpace(),h=this.currentDataGrouping,T,I,P=!1;p&&!this.requireSorting&&(this.requireSorting=P=!0);let w=!!(this.isCartesian&&!this.isDirty&&!this.xAxis.isDirty&&!this.yAxis.isDirty&&!k)||!p;if(P&&(this.requireSorting=!1),w)return;this.destroyGroupedData();let U=v.groupAll?this.xData:this.processedXData,$=v.groupAll?this.yData:this.processedYData,Y=L.plotSizeX,W=this.xAxis,z=W.options.ordinal,Q=this.groupPixelWidth;if(Q&&U&&U.length&&Y){N=!0,this.isDirty=!0,this.points=null;let B=W.getExtremes(),j=B.min,q=B.max,G=z&&W.ordinal&&W.ordinal.getGroupIntervalFactor(j,q,this)||1,V=Q*(q-j)/Y*G,H=W.getTimeTicks(a.Additions.prototype.normalizeTimeTickInterval(V,v.units||o.units),Math.min(j,U[0]),Math.max(q,U[U.length-1]),W.options.startOfWeek,U,this.closestPointRange),K=_.groupData.apply(this,[U,$,H,v.approximation]),X=K.groupedXData,ee=K.groupedYData,oe=0;for(v&&v.smoothed&&X.length&&(v.firstAnchor="firstPoint",v.anchor="middle",v.lastAnchor="lastPoint",R(32,!1,L,{"dataGrouping.smoothed":"use dataGrouping.anchor"})),A=1;A=ne[0]){let me;le++;let ge=te.groupMap[0].start,_e=te.groupMap[0].length;E(ge)&&E(_e)&&(me=ge+(_e-1)),ne[0]={start:ne[0],middle:ne[0]+.5*he,end:ne[0]+he,firstPoint:te.xData[0],lastPoint:me&&te.xData[me]}[ae]}if(Z>0&&ue&&he&&ne[Z]>=se-he){de--;let me=te.groupMap[te.groupMap.length-1].start;ne[Z]={start:ne[Z],middle:ne[Z]+.5*he,end:ne[Z]+he,firstPoint:me&&te.xData[me],lastPoint:te.xData[te.xData.length-1]}[ue]}if(J&&J!=="start"){let me=he*{middle:.5,end:1}[J];for(;de>=le;)ne[de]+=me,de--}}(this,X,q),c&&(b((M=X)[0])&&E(W.min)&&E(W.dataMin)&&M[0]W.max&&((!b(W.options.max)&&E(W.dataMax)&&W.max>=W.dataMax||W.max===W.dataMax)&&(W.max=Math.max(M[M.length-1],W.max)),W.dataMax=Math.max(M[M.length-1],W.dataMax))),v.groupAll&&(this.allGroupedData=ee,X=(I=this.cropData(X,ee,W.min,W.max)).xData,ee=I.yData,this.cropStart=I.start),this.processedXData=X,this.processedYData=ee}else this.groupMap=null;this.hasGroupedData=N,this.preventGraphAnimation=(h&&h.totalRange)!==(T&&T.totalRange)}function S(){this.groupedData&&(this.groupedData.forEach(function(k,M){k&&(this.groupedData[M]=k.destroy?k.destroy():null)},this),this.groupedData.length=0,delete this.allGroupedData)}function O(){d.apply(this),this.destroyGroupedData(),this.groupedData=this.hasGroupedData?this.points:null}function x(){return this.is("arearange")?"range":this.is("ohlc")?"ohlc":this.is("hlc")?"hlc":this.is("column")||this.options.cumulative?"sum":"average"}function D(k,M,A,N){let L=this,v=L.data,p=L.options&&L.options.data,c=[],h=[],T=[],I=k.length,P=!!M,w=[],U=L.pointArrayMap,$=U&&U.length,Y=["x"].concat(U||["y"]),W=this.options.dataGrouping&&this.options.dataGrouping.groupAll,z,Q,B,j=0,q=0,G=typeof N=="function"?N:N&&i[N]?i[N]:i[L.getDGApproximation&&L.getDGApproximation()||"average"];if($){let H=U.length;for(;H--;)w.push([])}else w.push([]);let V=$||1;for(let H=0;H<=I;H++)if(!(k[H]=A[j+1]||H===I;){z=A[j],L.dataGroupInfo={start:W?q:L.cropStart+q,length:w[0].length,groupStart:z},B=G.apply(L,w),L.pointClass&&!b(L.dataGroupInfo.options)&&(L.dataGroupInfo.options=C(L.pointClass.prototype.optionsToObject.call({series:L},L.options.data[L.cropStart+q])),Y.forEach(function(K){delete L.dataGroupInfo.options[K]})),B!==void 0&&(c.push(z),h.push(B),T.push(L.dataGroupInfo)),q=H;for(let K=0;K{let g=_.axis.getExtremes(),b=g.min,R=g.max,m=s(_.axis.minPointOffset,0);return a(b)&&a(R)&&_.value>=b-m&&_.value<=R+m&&!_.axis.options.isInternal})[0]},getFieldType:function(u,_){let g=l[u],b=typeof _;return o(g)&&(b=g),{string:"text",number:"number",boolean:"checkbox"}[b]}}}),r(n,"Extensions/MouseWheelZoom/MouseWheelZoom.js",[n["Core/Utilities.js"],n["Extensions/Annotations/NavigationBindingsUtilities.js"]],function(i,o){let a,{addEvent:s,isObject:l,pick:u,defined:_,merge:g}=i,{getAssignedAxis:b}=o,R=[],m={enabled:!0,sensitivity:1.1},E=d=>(l(d)||(d={enabled:d??!0}),g(m,d)),C=function(d,f,S,O,x,D,F){let k=u(F.type,d.zooming.type,""),M=[];k==="x"?M=S:k==="y"?M=O:k==="xy"&&(M=d.axes);let A=d.transform({axes:M,to:{x:x-5,y:D-5,width:10,height:10},from:{x:x-5*f,y:D-5*f,width:10*f,height:10*f},trigger:"mousewheel"});return A&&(_(a)&&clearTimeout(a),a=setTimeout(()=>{var N;(N=d.pointer)==null||N.drop()},400)),A};function y(){let d=E(this.zooming.mouseWheel);d.enabled&&s(this.container,"wheel",f=>{var x,D;f=((x=this.pointer)==null?void 0:x.normalize(f))||f;let{pointer:S}=this,O=S&&!S.inClass(f.target,"highcharts-no-mousewheel");if(this.isInsidePlot(f.chartX-this.plotLeft,f.chartY-this.plotTop)&&O){let F=d.sensitivity||1.1,k=f.detail||(f.deltaY||0)/120,M=b(S.getCoordinates(f).xAxis),A=b(S.getCoordinates(f).yAxis);C(this,Math.pow(F,k),M?[M.axis]:this.xAxis,A?[A.axis]:this.yAxis,f.chartX,f.chartY,d)&&((D=f.preventDefault)==null||D.call(f))}})}return{compose:function(d){R.indexOf(d)===-1&&(R.push(d),s(d,"afterGetContainer",y))}}}),r(n,"masters/modules/mouse-wheel-zoom.src.js",[n["Core/Globals.js"],n["Extensions/MouseWheelZoom/MouseWheelZoom.js"]],function(i,o){return i.MouseWheelZoom=i.MouseWheelZoom||o,i.MouseWheelZoom.compose(i.Chart),i}),r(n,"masters/modules/stock.src.js",[n["Core/Globals.js"],n["Series/DataModifyComposition.js"],n["Stock/Navigator/Navigator.js"],n["Core/Axis/OrdinalAxis.js"],n["Stock/RangeSelector/RangeSelector.js"],n["Stock/Scrollbar/Scrollbar.js"],n["Core/Chart/StockChart.js"],n["Series/OHLC/OHLCSeries.js"],n["Series/Flags/FlagsSeries.js"]],function(i,o,a,s,l,u,_,g,b){return i.Navigator=i.Navigator||a,i.OrdinalAxis=i.OrdinalAxis||s,i.RangeSelector=i.RangeSelector||l,i.Scrollbar=i.Scrollbar||u,i.stockChart=i.stockChart||_.stockChart,i.StockChart=i.StockChart||i.stockChart,i.extend(i.StockChart,_),o.compose(i.Series,i.Axis,i.Point),b.compose(i.Renderer),g.compose(i.Series),i.Navigator.compose(i.Chart,i.Axis,i.Series),i.OrdinalAxis.compose(i.Axis,i.Series,i.Chart),i.RangeSelector.compose(i.Axis,i.Chart),i.Scrollbar.compose(i.Axis),i.StockChart.compose(i.Chart,i.Axis,i.Series,i.SVGRenderer),i}),r(n,"masters/highstock.src.js",[n["masters/highcharts.src.js"]],function(i){return i.product="Highstock",i}),n["masters/highstock.src.js"]._modules=n,n["masters/highstock.src.js"]})})(Hw);var O3=Hw.exports;const Ns=Dn(O3);var zw={exports:{}};(function(e){(function(t){e.exports?(t.default=t,e.exports=t):t(typeof Highcharts<"u"?Highcharts:void 0)})(function(t){var n=t?t._modules:{};function r(i,o,a,s){i.hasOwnProperty(o)||(i[o]=s.apply(null,a),typeof CustomEvent=="function"&&window.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:o,module:i[o]}})))}r(n,"Accessibility/Utils/HTMLUtilities.js",[n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o){let{doc:a,win:s}=i,{css:l}=o,u=s.EventTarget&&new s.EventTarget||"none";function _(b){if(typeof s.MouseEvent=="function")return new s.MouseEvent(b.type,b);if(a.createEvent){let R=a.createEvent("MouseEvent");if(R.initMouseEvent)return R.initMouseEvent(b.type,b.bubbles,b.cancelable,b.view||s,b.detail,b.screenX,b.screenY,b.clientX,b.clientY,b.ctrlKey,b.altKey,b.shiftKey,b.metaKey,b.button,b.relatedTarget),R}return g(b.type)}function g(b,R,m){let E=R||{x:0,y:0};if(typeof s.MouseEvent=="function")return new s.MouseEvent(b,{bubbles:!0,cancelable:!0,composed:!0,button:0,buttons:1,relatedTarget:m||u,view:s,detail:b==="click"?1:0,screenX:E.x,screenY:E.y,clientX:E.x,clientY:E.y});if(a.createEvent){let C=a.createEvent("MouseEvent");if(C.initMouseEvent)return C.initMouseEvent(b,!0,!0,s,b==="click"?1:0,E.x,E.y,E.x,E.y,!1,!1,!1,!1,0,null),C}return{type:b}}return{addClass:function(b,R){b.classList?b.classList.add(R):0>b.className.indexOf(R)&&(b.className+=" "+R)},cloneMouseEvent:_,cloneTouchEvent:function(b){let R=E=>{let C=[];for(let y=0;y/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")},getElement:function(b){return a.getElementById(b)},getFakeMouseEvent:g,getHeadingTagNameForElement:function(b){let R=y=>"h"+Math.min(6,parseInt(y.slice(1),10)+1),m=y=>/H[1-6]/.test(y),E=y=>{let d=y;for(;d=d.previousSibling;){let f=d.tagName||"";if(m(f))return f}return""},C=y=>{let d=E(y);if(d)return R(d);let f=y.parentElement;if(!f)return"p";let S=f.tagName;return m(S)?R(S):C(f)};return C(b)},removeChildNodes:function(b){for(;b.lastChild;)b.removeChild(b.lastChild)},removeClass:function(b,R){b.classList?b.classList.remove(R):b.className=b.className.replace(RegExp(R,"g"),"")},removeElement:function(b){b&&b.parentNode&&b.parentNode.removeChild(b)},reverseChildNodes:function(b){let R=b.childNodes.length;for(;R--;)b.appendChild(b.childNodes[R])},simulatedEventTarget:u,stripHTMLTagsFromString:function(b,R=!1){return typeof b=="string"?R?b.replace(/<\/?[^>]+(>|$)/g,""):b.replace(/<\/?(?!\s)[^>]+(>|$)/g,""):b},visuallyHideElement:function(b){l(b,{position:"absolute",width:"1px",height:"1px",overflow:"hidden",whiteSpace:"nowrap",clip:"rect(1px, 1px, 1px, 1px)",marginTop:"-3px","-ms-filter":"progid:DXImageTransform.Microsoft.Alpha(Opacity=1)",filter:"alpha(opacity=1)",opacity:.01})}}}),r(n,"Accessibility/A11yI18n.js",[n["Core/Templating.js"],n["Core/Utilities.js"]],function(i,o){var a;let{format:s}=i,{getNestedProperty:l,pick:u}=o;return function(_){function g(R,m,E){let C=(O,x)=>{let D=O.slice(x||0),F=D.indexOf("{"),k=D.indexOf("}");if(F>-1&&k>F)return{statement:D.substring(F+1,k),begin:x+F+1,end:x+k}},y=[],d,f,S=0;do d=C(R,S),(f=R.substring(S,d&&d.begin-1)).length&&y.push({value:f,type:"constant"}),d&&y.push({value:d.statement,type:"statement"}),S=d?d.end+1:S+1;while(d);return y.forEach(O=>{O.type==="statement"&&(O.value=function(x,D){let F,k,M=x.indexOf("#each("),A=x.indexOf("#plural("),N=x.indexOf("["),L=x.indexOf("]");if(M>-1){let p=x.slice(M).indexOf(")")+M,c=x.substring(0,M),h=x.substring(p+1),T=x.substring(M+6,p).split(","),I=Number(T[1]),P;if(k="",F=l(T[0],D)){P=(I=isNaN(I)?F.length:I)<0?F.length+I:Math.min(I,F.length);for(let w=0;w-1){var v;let p=x.slice(A).indexOf(")")+A,c=x.substring(A+8,p).split(",");switch(Number(l(c[0],D))){case 0:k=u(c[4],c[1]);break;case 1:k=u(c[2],c[1]);break;case 2:k=u(c[3],c[1]);break;default:k=c[1]}return k?(v=k).trim&&v.trim()||v.replace(/^\s+|\s+$/g,""):""}if(N>-1){let p,c=x.substring(0,N),h=Number(x.substring(N+1,L));return F=l(c,D),!isNaN(h)&&F&&(h<0?(p=F[F.length+h])===void 0&&(p=F[0]):(p=F[h])===void 0&&(p=F[F.length-1])),p!==void 0?p:""}return"{"+x+"}"}(O.value,m))}),s(y.reduce((O,x)=>O+x.value,""),m,E)}function b(R,m){let E=R.split("."),C=this.options.lang,y=0;for(;y!!C.graphic);return E&&E.graphic&&E.graphic.element}}function R(m){let E=b(m);return E&&E.parentNode||m.graph&&m.graph.element||m.group&&m.group.element}return{fireEventOnWrappedOrUnwrappedElement:function m(E,C){let y=C.type,d=E.hcEvents;s.createEvent&&(E.dispatchEvent||E.fireEvent)?E.dispatchEvent?E.dispatchEvent(C):E.fireEvent(y,C):d&&d[y]?g(E,y,C):E.element&&m(E.element,C)},getChartTitle:function(m){return l(m.options.title.text||m.langFormat("accessibility.defaultChartTitle",{chart:m}),m.renderer.forExport)},getAxisDescription:function(m){var E,C;return m&&(((E=m.options.accessibility)==null?void 0:E.description)||((C=m.axisTitle)==null?void 0:C.textStr)||m.options.id||m.categories&&"categories"||m.dateTime&&"Time"||"values")},getAxisRangeDescription:function(m){let E=m.options||{};return E.accessibility&&E.accessibility.rangeDescription!==void 0?E.accessibility.rangeDescription:m.categories?function(C){let y=C.chart;return C.dataMax&&C.dataMin?y.langFormat("accessibility.axis.rangeCategories",{chart:y,axis:C,numCategories:C.dataMax-C.dataMin+1}):""}(m):m.dateTime&&(m.min===0||m.dataMin===0)?function(C){let y=C.chart,d={},f=C.dataMin||C.min||0,S=C.dataMax||C.max||0,O="Seconds";d.Seconds=(S-f)/1e3,d.Minutes=d.Seconds/60,d.Hours=d.Minutes/60,d.Days=d.Hours/24,["Minutes","Hours","Days"].forEach(function(D){d[D]>2&&(O=D)});let x=d[O].toFixed(O!=="Seconds"&&O!=="Minutes"?1:0);return y.langFormat("accessibility.axis.timeRange"+O,{chart:y,axis:C,range:x.replace(".0","")})}(m):function(C){let y=C.chart,d=y.options,f=d&&d.accessibility&&d.accessibility.screenReaderSection.axisRangeDateFormat||"",S={min:C.dataMin||C.min||0,max:C.dataMax||C.max||0},O=function(x){return C.dateTime?y.time.dateFormat(f,S[x]):S[x].toString()};return y.langFormat("accessibility.axis.rangeFromTo",{chart:y,axis:C,rangeFrom:O("min"),rangeTo:O("max")})}(m)},getPointFromXY:function(m,E,C){let y=m.length,d;for(;y--;)if(d=_(m[y].points||[],function(f){return f.x===E&&f.y===C}))return d},getSeriesFirstPointElement:b,getSeriesFromName:function(m,E){return E?(m.series||[]).filter(function(C){return C.name===E}):m.series},getSeriesA11yElement:R,unhideChartElementFromAT:function m(E,C){C.setAttribute("aria-hidden",!1),C!==E.renderTo&&C.parentNode&&C.parentNode!==s.body&&(Array.prototype.forEach.call(C.parentNode.childNodes,function(y){y.hasAttribute("aria-hidden")||y.setAttribute("aria-hidden",!0)}),m(E,C.parentNode))},hideSeriesFromAT:function(m){let E=R(m);E&&E.setAttribute("aria-hidden",!0)},scrollAxisToPoint:function(m){let E=m.series.xAxis,C=m.series.yAxis,y=E&&E.scrollbar?E:C,d=y&&y.scrollbar;if(d&&u(d.to)&&u(d.from)){let f=d.to-d.from,S=function(O,x){if(!u(O.dataMin)||!u(O.dataMax))return 0;let D=O.toPixels(O.dataMin),F=O.toPixels(O.dataMax),k=O.coll==="xAxis"?"x":"y";return(O.toPixels(x[k]||0)-D)/(F-D)}(y,m);d.updatePosition(S-f/2,S+f/2),g(d,"changed",{from:d.from,to:d.to,trigger:"scrollbar",DOMEvent:null})}}}}),r(n,"Accessibility/Utils/DOMElementProvider.js",[n["Core/Globals.js"],n["Accessibility/Utils/HTMLUtilities.js"]],function(i,o){let{doc:a}=i,{removeElement:s}=o;return class{constructor(){this.elements=[]}createElement(){let l=a.createElement.apply(a,arguments);return this.elements.push(l),l}removeElement(l){s(l),this.elements.splice(this.elements.indexOf(l),1)}destroyCreatedElements(){this.elements.forEach(function(l){s(l)}),this.elements=[]}}}),r(n,"Accessibility/Utils/EventProvider.js",[n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o){let{addEvent:a}=o;return class{constructor(){this.eventRemovers=[]}addEvent(){let s=a.apply(i,arguments);return this.eventRemovers.push(s),s}removeEvent(s){let l=this.eventRemovers.indexOf(s);this.eventRemovers[l](),this.eventRemovers.splice(l,1)}removeAddedEvents(){this.eventRemovers.forEach(s=>s()),this.eventRemovers=[]}}}),r(n,"Accessibility/AccessibilityComponent.js",[n["Accessibility/Utils/ChartUtilities.js"],n["Accessibility/Utils/DOMElementProvider.js"],n["Accessibility/Utils/EventProvider.js"],n["Accessibility/Utils/HTMLUtilities.js"],n["Core/Utilities.js"]],function(i,o,a,s,l){let{fireEventOnWrappedOrUnwrappedElement:u}=i,{getFakeMouseEvent:_}=s,{extend:g}=l;class b{initBase(m,E){this.chart=m,this.eventProvider=new a,this.domElementProvider=new o,this.proxyProvider=E,this.keyCodes={left:37,right:39,up:38,down:40,enter:13,space:32,esc:27,tab:9,pageUp:33,pageDown:34,end:35,home:36}}addEvent(m,E,C,y){return this.eventProvider.addEvent(m,E,C,y)}createElement(m,E){return this.domElementProvider.createElement(m,E)}fakeClickEvent(m){u(m,_("click"))}destroyBase(){this.domElementProvider.destroyCreatedElements(),this.eventProvider.removeAddedEvents()}}return g(b.prototype,{init(){},getKeyboardNavigation:function(){},onChartUpdate(){},onChartRender(){},destroy(){}}),b}),r(n,"Accessibility/KeyboardNavigationHandler.js",[n["Core/Utilities.js"]],function(i){let{find:o}=i;return class{constructor(a,s){this.chart=a,this.keyCodeMap=s.keyCodeMap||[],this.validate=s.validate,this.init=s.init,this.terminate=s.terminate,this.response={success:1,prev:2,next:3,noHandler:4,fail:5}}run(a){let s=a.which||a.keyCode,l=this.response.noHandler,u=o(this.keyCodeMap,function(_){return _[0].indexOf(s)>-1});return u?l=u[1].call(this,s,a):s===9&&(l=this.response[a.shiftKey?"prev":"next"]),l}}}),r(n,"Accessibility/Components/ContainerComponent.js",[n["Accessibility/AccessibilityComponent.js"],n["Accessibility/KeyboardNavigationHandler.js"],n["Accessibility/Utils/ChartUtilities.js"],n["Core/Globals.js"],n["Accessibility/Utils/HTMLUtilities.js"]],function(i,o,a,s,l){let{unhideChartElementFromAT:u,getChartTitle:_}=a,{doc:g}=s,{stripHTMLTagsFromString:b}=l;return class extends i{onChartUpdate(){this.handleSVGTitleElement(),this.setSVGContainerLabel(),this.setGraphicContainerAttrs(),this.setRenderToAttrs(),this.makeCreditsAccessible()}handleSVGTitleElement(){let R=this.chart,m="highcharts-title-"+R.index,E=b(R.langFormat("accessibility.svgContainerTitle",{chartTitle:_(R)}));if(E.length){let C=this.svgTitleElement=this.svgTitleElement||g.createElementNS("http://www.w3.org/2000/svg","title");C.textContent=E,C.id=m,R.renderTo.insertBefore(C,R.renderTo.firstChild)}}setSVGContainerLabel(){let R=this.chart,m=R.langFormat("accessibility.svgContainerLabel",{chartTitle:_(R)});R.renderer.box&&m.length&&R.renderer.box.setAttribute("aria-label",m)}setGraphicContainerAttrs(){let R=this.chart,m=R.langFormat("accessibility.graphicContainerLabel",{chartTitle:_(R)});m.length&&R.container.setAttribute("aria-label",m)}setRenderToAttrs(){let R=this.chart,m=R.options.accessibility.landmarkVerbosity!=="disabled",E=R.langFormat("accessibility.chartContainerLabel",{title:_(R),chart:R});E&&(R.renderTo.setAttribute("role",m?"region":"group"),R.renderTo.setAttribute("aria-label",E))}makeCreditsAccessible(){let R=this.chart,m=R.credits;m&&(m.textStr&&m.element.setAttribute("aria-label",R.langFormat("accessibility.credits",{creditsStr:b(m.textStr,R.renderer.forExport)})),u(R,m.element))}getKeyboardNavigation(){let R=this.chart;return new o(R,{keyCodeMap:[],validate:function(){return!0},init:function(){let m=R.accessibility;m&&m.keyboardNavigation.tabindexContainer.focus()}})}destroy(){this.chart.renderTo.setAttribute("aria-hidden",!0)}}}),r(n,"Accessibility/FocusBorder.js",[n["Core/Utilities.js"]],function(i){var o;let{addEvent:a,pick:s}=i;return function(l){let u=["x","y","transform","width","height","r","d","stroke-width"];function _(){let m=this.focusElement,E=this.options.accessibility.keyboardNavigation.focusBorder;m&&(m.removeFocusBorder(),E.enabled&&m.addFocusBorder(E.margin,{stroke:E.style.color,strokeWidth:E.style.lineWidth,r:E.style.borderRadius}))}function g(m,E){let C=this.options.accessibility.keyboardNavigation.focusBorder,y=E||m.element;y&&y.focus&&(y.hcEvents&&y.hcEvents.focusin||a(y,"focusin",function(){}),y.focus(),C.hideBrowserFocusOutline&&(y.style.outline="none")),this.focusElement&&this.focusElement.removeFocusBorder(),this.focusElement=m,this.renderFocusBorder()}function b(m,E){this.focusBorder&&this.removeFocusBorder();let C=this.getBBox(),y=s(m,3),d=this.parentGroup,f=this.scaleX||d&&d.scaleX,S=this.scaleY||d&&d.scaleY,O=(f?!S:S)?Math.abs(f||S||1):(Math.abs(f||1)+Math.abs(S||1))/2;C.x+=this.translateX?this.translateX:0,C.y+=this.translateY?this.translateY:0;let x=C.x-y,D=C.y-y,F=C.width+2*y,k=C.height+2*y,M=!!this.text;if(this.element.nodeName==="text"||M){let A,N,L=!!this.rotation,v=M?{x:L?1:0,y:0}:(A=0,N=0,this.attr("text-anchor")==="middle"?A=N=.5:this.rotation?A=.25:N=.75,{x:A,y:N}),p=+this.attr("x"),c=+this.attr("y");if(isNaN(p)||(x=p-C.width*v.x-y),isNaN(c)||(D=c-C.height*v.y-y),M&&L){let h=F;F=k,k=h,isNaN(p)||(x=p-C.height*v.x-y),isNaN(c)||(D=c-C.width*v.y-y)}}this.focusBorder=this.renderer.rect(x,D,F,k,parseInt((E&&E.r||0).toString(),10)/O).addClass("highcharts-focus-border").attr({zIndex:99}).add(d),this.renderer.styledMode||this.focusBorder.attr({stroke:E&&E.stroke,"stroke-width":(E&&E.strokeWidth||0)/O}),function(A,...N){A.focusBorderUpdateHooks||(A.focusBorderUpdateHooks={},u.forEach(L=>{let v=L+"Setter",p=A[v]||A._defaultSetter;A.focusBorderUpdateHooks[v]=p,A[v]=function(){let c=p.apply(A,arguments);return A.addFocusBorder.apply(A,N),c}}))}(this,m,E),function(A){if(A.focusBorderDestroyHook)return;let N=A.destroy;A.destroy=function(){return A.focusBorder&&A.focusBorder.destroy&&A.focusBorder.destroy(),N.apply(A,arguments)},A.focusBorderDestroyHook=N}(this)}function R(){var m;m=this,m.focusBorderUpdateHooks&&(Object.keys(m.focusBorderUpdateHooks).forEach(E=>{let C=m.focusBorderUpdateHooks[E];C===m._defaultSetter?delete m[E]:m[E]=C}),delete m.focusBorderUpdateHooks),this.focusBorderDestroyHook&&(this.destroy=this.focusBorderDestroyHook,delete this.focusBorderDestroyHook),this.focusBorder&&(this.focusBorder.destroy(),delete this.focusBorder)}l.compose=function(m,E){let C=m.prototype,y=E.prototype;C.renderFocusBorder||(C.renderFocusBorder=_,C.setFocusToElement=g),y.addFocusBorder||(y.addFocusBorder=b,y.removeFocusBorder=R)}}(o||(o={})),o}),r(n,"Accessibility/Utils/Announcer.js",[n["Core/Renderer/HTML/AST.js"],n["Accessibility/Utils/DOMElementProvider.js"],n["Core/Globals.js"],n["Accessibility/Utils/HTMLUtilities.js"],n["Core/Utilities.js"]],function(i,o,a,s,l){let{doc:u}=a,{addClass:_,visuallyHideElement:g}=s,{attr:b}=l;return class{constructor(R,m){this.chart=R,this.domElementProvider=new o,this.announceRegion=this.addAnnounceRegion(m)}destroy(){this.domElementProvider.destroyCreatedElements()}announce(R){i.setElementHTML(this.announceRegion,R),this.clearAnnouncementRegionTimer&&clearTimeout(this.clearAnnouncementRegionTimer),this.clearAnnouncementRegionTimer=setTimeout(()=>{this.announceRegion.innerHTML=i.emptyHTML,delete this.clearAnnouncementRegionTimer},3e3)}addAnnounceRegion(R){let m=this.chart.announcerContainer||this.createAnnouncerContainer(),E=this.domElementProvider.createElement("div");return b(E,{"aria-hidden":!1,"aria-live":R,"aria-atomic":!0}),this.chart.styledMode?_(E,"highcharts-visually-hidden"):g(E),m.appendChild(E),E}createAnnouncerContainer(){let R=this.chart,m=u.createElement("div");return b(m,{"aria-hidden":!1,class:"highcharts-announcer-container"}),m.style.position="relative",R.renderTo.insertBefore(m,R.renderTo.firstChild),R.announcerContainer=m,m}}}),r(n,"Accessibility/Components/AnnotationsA11y.js",[n["Accessibility/Utils/HTMLUtilities.js"]],function(i){let{escapeStringForHTML:o,stripHTMLTagsFromString:a}=i;function s(g){return(g.annotations||[]).reduce((b,R)=>(R.options&&R.options.visible!==!1&&(b=b.concat(R.labels)),b),[])}function l(g){return g.options&&g.options.accessibility&&g.options.accessibility.description||g.graphic&&g.graphic.text&&g.graphic.text.textStr||""}function u(g){let b=g.options&&g.options.accessibility&&g.options.accessibility.description;if(b)return b;let R=g.chart,m=l(g),E=g.points,C=O=>O.graphic&&O.graphic.element&&O.graphic.element.getAttribute("aria-label")||"",y=E.filter(O=>!!O.graphic).map(O=>{let x=O.accessibility&&O.accessibility.valueDescription||C(O),D=O&&O.series.name||"";return(D?D+", ":"")+"data point "+x}).filter(O=>!!O),d=y.length,f=d>1?"MultiplePoints":d?"SinglePoint":"NoPoints",S={annotationText:m,annotation:g,numPoints:d,annotationPoint:y[0],additionalAnnotationPoints:y.slice(1)};return R.langFormat("accessibility.screenReaderSection.annotations.description"+f,S)}function _(g){return s(g).map(b=>{let R=o(a(u(b),g.renderer.forExport));return R?`
  • ${R}
  • `:""})}return{getAnnotationsInfoHTML:function(g){let b=g.annotations;return b&&b.length?`
      ${_(g).join(" ")}
    `:""},getAnnotationLabelDescription:u,getAnnotationListItems:_,getPointAnnotationTexts:function(g){let b=s(g.series.chart).filter(R=>R.points.indexOf(g)>-1);return b.length?b.map(R=>`${l(R)}`):[]}}}),r(n,"Accessibility/Components/InfoRegionsComponent.js",[n["Accessibility/A11yI18n.js"],n["Accessibility/AccessibilityComponent.js"],n["Accessibility/Utils/Announcer.js"],n["Accessibility/Components/AnnotationsA11y.js"],n["Core/Renderer/HTML/AST.js"],n["Accessibility/Utils/ChartUtilities.js"],n["Core/Templating.js"],n["Core/Globals.js"],n["Accessibility/Utils/HTMLUtilities.js"],n["Core/Utilities.js"]],function(i,o,a,s,l,u,_,g,b,R){let{getAnnotationsInfoHTML:m}=s,{getAxisDescription:E,getAxisRangeDescription:C,getChartTitle:y,unhideChartElementFromAT:d}=u,{format:f}=_,{doc:S}=g,{addClass:O,getElement:x,getHeadingTagNameForElement:D,stripHTMLTagsFromString:F,visuallyHideElement:k}=b,{attr:M,pick:A,replaceNested:N}=R;function L(v){return N(v,[/<([\w\-.:!]+)\b[^<>]*>\s*<\/\1>/g,""])}return class extends o{constructor(){super(...arguments),this.screenReaderSections={}}init(){let v=this.chart,p=this;this.initRegionsDefinitions(),this.addEvent(v,"aftergetTableAST",function(c){p.onDataTableCreated(c)}),this.addEvent(v,"afterViewData",function(c){c.wasHidden&&(p.dataTableDiv=c.element,setTimeout(function(){p.focusDataTable()},300))}),this.addEvent(v,"afterHideData",function(){p.viewDataTableButton&&p.viewDataTableButton.setAttribute("aria-expanded","false")}),this.announcer=new a(v,"assertive")}initRegionsDefinitions(){let v=this,p=this.chart.options.accessibility;this.screenReaderSections={before:{element:null,buildContent:function(c){let h=p.screenReaderSection.beforeChartFormatter;return h?h(c):v.defaultBeforeChartFormatter(c)},insertIntoDOM:function(c,h){h.renderTo.insertBefore(c,h.renderTo.firstChild)},afterInserted:function(){v.sonifyButtonId!==void 0&&v.initSonifyButton(v.sonifyButtonId),v.dataTableButtonId!==void 0&&v.initDataTableButton(v.dataTableButtonId)}},after:{element:null,buildContent:function(c){let h=p.screenReaderSection.afterChartFormatter;return h?h(c):v.defaultAfterChartFormatter()},insertIntoDOM:function(c,h){h.renderTo.insertBefore(c,h.container.nextSibling)},afterInserted:function(){v.chart.accessibility&&p.keyboardNavigation.enabled&&v.chart.accessibility.keyboardNavigation.updateExitAnchor()}}}}onChartRender(){let v=this;this.linkedDescriptionElement=this.getLinkedDescriptionElement(),this.setLinkedDescriptionAttrs(),Object.keys(this.screenReaderSections).forEach(function(p){v.updateScreenReaderSection(p)})}getLinkedDescriptionElement(){let v=this.chart.options.accessibility.linkedDescription;if(!v)return;if(typeof v!="string")return v;let p=f(v,this.chart),c=S.querySelectorAll(p);if(c.length===1)return c[0]}setLinkedDescriptionAttrs(){let v=this.linkedDescriptionElement;v&&(v.setAttribute("aria-hidden","true"),O(v,"highcharts-linked-description"))}updateScreenReaderSection(v){let p=this.chart,c=this.screenReaderSections[v],h=c.buildContent(p),T=c.element=c.element||this.createElement("div"),I=T.firstChild||this.createElement("div");h?(this.setScreenReaderSectionAttribs(T,v),l.setElementHTML(I,h),T.appendChild(I),c.insertIntoDOM(T,p),p.styledMode?O(I,"highcharts-visually-hidden"):k(I),d(p,I),c.afterInserted&&c.afterInserted()):(T.parentNode&&T.parentNode.removeChild(T),c.element=null)}setScreenReaderSectionAttribs(v,p){let c=this.chart,h=c.langFormat("accessibility.screenReaderSection."+p+"RegionLabel",{chart:c,chartTitle:y(c)});M(v,{id:`highcharts-screen-reader-region-${p}-${c.index}`,"aria-label":h||void 0}),v.style.position="relative",h&&v.setAttribute("role",c.options.accessibility.landmarkVerbosity==="all"?"region":"group")}defaultBeforeChartFormatter(){let v=this.chart,p=v.options.accessibility.screenReaderSection.beforeChartFormat;if(!p)return"";let c=this.getAxesDescription(),h=v.sonify&&v.options.sonification&&v.options.sonification.enabled,T="highcharts-a11y-sonify-data-btn-"+v.index,I="hc-linkto-highcharts-data-table-"+v.index,P=m(v),w=v.langFormat("accessibility.screenReaderSection.annotations.heading",{chart:v}),U={headingTagName:D(v.renderTo),chartTitle:y(v),typeDescription:this.getTypeDescriptionText(),chartSubtitle:this.getSubtitleText(),chartLongdesc:this.getLongdescText(),xAxisDescription:c.xAxis,yAxisDescription:c.yAxis,playAsSoundButton:h?this.getSonifyButtonText(T):"",viewTableButton:v.getCSV?this.getDataTableButtonText(I):"",annotationsTitle:P?w:"",annotationsList:P},$=i.i18nFormat(p,U,v);return this.dataTableButtonId=I,this.sonifyButtonId=T,L($)}defaultAfterChartFormatter(){let v=this.chart,p=v.options.accessibility.screenReaderSection.afterChartFormat;if(!p)return"";let c={endOfChartMarker:this.getEndOfChartMarkerText()};return L(i.i18nFormat(p,c,v))}getLinkedDescription(){let v=this.linkedDescriptionElement;return F(v&&v.innerHTML||"",this.chart.renderer.forExport)}getLongdescText(){let v=this.chart.options,p=v.caption,c=p&&p.text,h=this.getLinkedDescription();return v.accessibility.description||h||c||""}getTypeDescriptionText(){let v=this.chart;return v.types?v.options.accessibility.typeDescription||function(p,c){let h=c[0],T=p.series&&p.series[0]||{},I=p.mapView&&p.mapView.geoMap&&p.mapView.geoMap.title,P={numSeries:p.series.length,numPoints:T.points&&T.points.length,chart:p,mapTitle:I};return h?h==="map"||h==="tiledwebmap"?P.mapTitle?p.langFormat("accessibility.chartTypes.mapTypeDescription",P):p.langFormat("accessibility.chartTypes.unknownMap",P):p.types.length>1?p.langFormat("accessibility.chartTypes.combinationChart",P):function(w,U,$){let Y=U[0],W=w.langFormat("accessibility.seriesTypeDescriptions."+Y,$),z=w.series&&w.series.length<2?"Single":"Multiple";return(w.langFormat("accessibility.chartTypes."+Y+z,$)||w.langFormat("accessibility.chartTypes.default"+z,$))+(W?" "+W:"")}(p,c,P):p.langFormat("accessibility.chartTypes.emptyChart",P)}(v,v.types):""}getDataTableButtonText(v){let p=this.chart;return'"}getSonifyButtonText(v){let p=this.chart;return p.options.sonification&&p.options.sonification.enabled===!1?"":'"}getSubtitleText(){let v=this.chart.options.subtitle;return F(v&&v.text||"",this.chart.renderer.forExport)}getEndOfChartMarkerText(){let v=x(`highcharts-end-of-chart-marker-${this.chart.index}`);if(v)return v.outerHTML;let p=this.chart,c=p.langFormat("accessibility.screenReaderSection.endOfChartMarker",{chart:p});return'
    '+c+"
    "}onDataTableCreated(v){let p=this.chart;if(p.options.accessibility.enabled){this.viewDataTableButton&&this.viewDataTableButton.setAttribute("aria-expanded","true");let c=v.tree.attributes||{};c.tabindex=-1,c.summary=p.langFormat("accessibility.table.tableSummary",{chart:p}),v.tree.attributes=c}}focusDataTable(){let v=this.dataTableDiv,p=v&&v.getElementsByTagName("table")[0];p&&p.focus&&p.focus()}initSonifyButton(v){let p=this.sonifyButton=x(v),c=this.chart,h=T=>{p&&(p.setAttribute("aria-hidden","true"),p.setAttribute("aria-label","")),T.preventDefault(),T.stopPropagation();let I=c.langFormat("accessibility.sonification.playAsSoundClickAnnouncement",{chart:c});this.announcer.announce(I),setTimeout(()=>{p&&(p.removeAttribute("aria-hidden"),p.removeAttribute("aria-label")),c.sonify&&c.sonify()},1e3)};p&&c&&(p.setAttribute("tabindex",-1),p.onclick=function(T){(c.options.accessibility&&c.options.accessibility.screenReaderSection.onPlayAsSoundClick||h).call(this,T,c)})}initDataTableButton(v){let p=this.viewDataTableButton=x(v),c=this.chart,h=v.replace("hc-linkto-","");p&&(M(p,{tabindex:-1,"aria-expanded":!!x(h)}),p.onclick=c.options.accessibility.screenReaderSection.onViewDataTableClick||function(){c.viewData()})}getAxesDescription(){let v=this.chart,p=function(w,U){let $=v[w];return $.length>1||$[0]&&A($[0].options.accessibility&&$[0].options.accessibility.enabled,U)},c=!!v.types&&0>v.types.indexOf("map")&&0>v.types.indexOf("treemap")&&0>v.types.indexOf("tilemap"),h=!!v.hasCartesianSeries,T=p("xAxis",!v.angular&&h&&c),I=p("yAxis",h&&c),P={};return T&&(P.xAxis=this.getAxisDescriptionText("xAxis")),I&&(P.yAxis=this.getAxisDescriptionText("yAxis")),P}getAxisDescriptionText(v){let p=this.chart,c=p[v];return p.langFormat("accessibility.axis."+v+"Description"+(c.length>1?"Plural":"Singular"),{chart:p,names:c.map(function(h){return E(h)}),ranges:c.map(function(h){return C(h)}),numAxes:c.length})}destroy(){this.announcer&&this.announcer.destroy()}}}),r(n,"Accessibility/Components/MenuComponent.js",[n["Core/Utilities.js"],n["Accessibility/AccessibilityComponent.js"],n["Accessibility/KeyboardNavigationHandler.js"],n["Accessibility/Utils/ChartUtilities.js"],n["Accessibility/Utils/HTMLUtilities.js"]],function(i,o,a,s,l){let{attr:u}=i,{getChartTitle:_,unhideChartElementFromAT:g}=s,{getFakeMouseEvent:b}=l;function R(E){return E.exportSVGElements&&E.exportSVGElements[0]}class m extends o{init(){let C=this.chart,y=this;this.addEvent(C,"exportMenuShown",function(){y.onMenuShown()}),this.addEvent(C,"exportMenuHidden",function(){y.onMenuHidden()}),this.createProxyGroup()}onMenuHidden(){let C=this.chart.exportContextMenu;C&&C.setAttribute("aria-hidden","true"),this.setExportButtonExpandedState("false")}onMenuShown(){let C=this.chart,y=C.exportContextMenu;y&&(this.addAccessibleContextMenuAttribs(),g(C,y)),this.setExportButtonExpandedState("true")}setExportButtonExpandedState(C){this.exportButtonProxy&&this.exportButtonProxy.innerElement.setAttribute("aria-expanded",C)}onChartRender(){let C=this.chart,y=C.focusElement,d=C.accessibility;this.proxyProvider.clearGroup("chartMenu"),this.proxyMenuButton(),this.exportButtonProxy&&y&&y===C.exportingGroup&&(y.focusBorder?C.setFocusToElement(y,this.exportButtonProxy.innerElement):d&&d.keyboardNavigation.tabindexContainer.focus())}proxyMenuButton(){let C=this.chart,y=this.proxyProvider,d=R(C);(function(f){let S=f.options.exporting,O=R(f);return!!(S&&S.enabled!==!1&&S.accessibility&&S.accessibility.enabled&&O&&O.element)})(C)&&d&&(this.exportButtonProxy=y.addProxyElement("chartMenu",{click:d},"button",{"aria-label":C.langFormat("accessibility.exporting.menuButtonLabel",{chart:C,chartTitle:_(C)}),"aria-expanded":!1,title:C.options.lang.contextButtonTitle||null}))}createProxyGroup(){this.chart&&this.proxyProvider&&this.proxyProvider.addGroup("chartMenu")}addAccessibleContextMenuAttribs(){let C=this.chart,y=C.exportDivElements;if(y&&y.length){y.forEach(f=>{f&&(f.tagName!=="LI"||f.children&&f.children.length?f.setAttribute("aria-hidden","true"):f.setAttribute("tabindex",-1))});let d=y[0]&&y[0].parentNode;d&&u(d,{"aria-hidden":void 0,"aria-label":C.langFormat("accessibility.exporting.chartMenuLabel",{chart:C}),role:"list"})}}getKeyboardNavigation(){let C=this.keyCodes,y=this.chart,d=this;return new a(y,{keyCodeMap:[[[C.left,C.up],function(){return d.onKbdPrevious(this)}],[[C.right,C.down],function(){return d.onKbdNext(this)}],[[C.enter,C.space],function(){return d.onKbdClick(this)}]],validate:function(){return!!y.exporting&&y.options.exporting.enabled!==!1&&y.options.exporting.accessibility.enabled!==!1},init:function(){let f=d.exportButtonProxy,S=d.chart.exportingGroup;f&&S&&y.setFocusToElement(S,f.innerElement)},terminate:function(){y.hideExportMenu()}})}onKbdPrevious(C){let y=this.chart,d=y.options.accessibility,f=C.response,S=y.highlightedExportItemIx||0;for(;S--;)if(y.highlightExportItem(S))return f.success;return d.keyboardNavigation.wrapAround?(y.highlightLastExportItem(),f.success):f.prev}onKbdNext(C){let y=this.chart,d=y.options.accessibility,f=C.response;for(let S=(y.highlightedExportItemIx||0)+1;S{O&&O.className==="highcharts-menu-item"&&O.onmouseout&&O.onmouseout(b("mouseout"))}),this.highlightedExportItemIx=0,this.exportContextMenu.hideMenu(),this.container.focus())}function d(S){let O=this.exportDivElements&&this.exportDivElements[S],x=this.exportDivElements&&this.exportDivElements[this.highlightedExportItemIx];if(O&&O.tagName==="LI"&&!(O.children&&O.children.length)){let D=!!(this.renderTo.getElementsByTagName("g")[0]||{}).focus;return O.focus&&D&&O.focus(),x&&x.onmouseout&&x.onmouseout(b("mouseout")),O.onmouseover&&O.onmouseover(b("mouseover")),this.highlightedExportItemIx=S,!0}return!1}function f(){if(this.exportDivElements){let S=this.exportDivElements.length;for(;S--;)if(this.highlightExportItem(S))return!0}return!1}E.compose=function(S){let O=S.prototype;O.hideExportMenu||(O.hideExportMenu=y,O.highlightExportItem=d,O.highlightLastExportItem=f,O.showExportMenu=C)}}(m||(m={})),m}),r(n,"Accessibility/KeyboardNavigation.js",[n["Core/Globals.js"],n["Accessibility/Components/MenuComponent.js"],n["Core/Utilities.js"],n["Accessibility/Utils/EventProvider.js"],n["Accessibility/Utils/HTMLUtilities.js"]],function(i,o,a,s,l){let{doc:u,win:_}=i,{addEvent:g,defined:b,fireEvent:R}=a,{getElement:m,simulatedEventTarget:E}=l;class C{constructor(d,f){this.currentModuleIx=NaN,this.modules=[],this.init(d,f)}init(d,f){let S=this.eventProvider=new s;this.chart=d,this.components=f,this.modules=[],this.currentModuleIx=0,this.update(),S.addEvent(this.tabindexContainer,"keydown",O=>this.onKeydown(O)),S.addEvent(this.tabindexContainer,"focus",O=>this.onFocus(O)),["mouseup","touchend"].forEach(O=>S.addEvent(u,O,x=>this.onMouseUp(x))),["mousedown","touchstart"].forEach(O=>S.addEvent(d.renderTo,O,()=>{this.isClickingChart=!0}))}update(d){let f=this.chart.options.accessibility,S=f&&f.keyboardNavigation,O=this.components;this.updateContainerTabindex(),S&&S.enabled&&d&&d.length?(this.modules=d.reduce(function(x,D){let F=O[D].getKeyboardNavigation();return x.concat(F)},[]),this.updateExitAnchor()):(this.modules=[],this.currentModuleIx=0,this.removeExitAnchor())}updateExitAnchor(){let d=m(`highcharts-end-of-chart-marker-${this.chart.index}`);this.removeExitAnchor(),d?(this.makeElementAnExitAnchor(d),this.exitAnchor=d):this.createExitAnchor()}move(d){let f=this.modules&&this.modules[this.currentModuleIx];f&&f.terminate&&f.terminate(d),this.chart.focusElement&&this.chart.focusElement.removeFocusBorder(),this.currentModuleIx+=d;let S=this.modules&&this.modules[this.currentModuleIx];if(S){if(S.validate&&!S.validate())return this.move(d);if(S.init)return S.init(d),!0}return this.currentModuleIx=0,this.exiting=!0,d>0?this.exitAnchor&&this.exitAnchor.focus():this.tabindexContainer.focus(),!1}onFocus(d){let f=this.chart,S=d.relatedTarget&&f.container.contains(d.relatedTarget),O=f.options.accessibility,x=O&&O.keyboardNavigation;if(x&&x.enabled&&!this.exiting&&!this.tabbingInBackwards&&!this.isClickingChart&&!S){let D=this.getFirstValidModuleIx();D!==null&&(this.currentModuleIx=D,this.modules[D].init(1))}this.keyboardReset=!1,this.exiting=!1}onMouseUp(d){if(delete this.isClickingChart,!this.keyboardReset&&d.relatedTarget!==E){let f=this.chart;if(!d.target||!f.container.contains(d.target)){let S=this.modules&&this.modules[this.currentModuleIx||0];S&&S.terminate&&S.terminate(),this.currentModuleIx=0}f.focusElement&&(f.focusElement.removeFocusBorder(),delete f.focusElement),this.keyboardReset=!0}}onKeydown(d){let f,S=d||_.event,O=this.modules&&this.modules.length&&this.modules[this.currentModuleIx],x=S.target;if((!x||x.nodeName!=="INPUT"||x.classList.contains("highcharts-a11y-proxy-element"))&&(this.keyboardReset=!1,this.exiting=!1,O)){let D=O.run(S);D===O.response.success?f=!0:D===O.response.prev?f=this.move(-1):D===O.response.next&&(f=this.move(1)),f&&(S.preventDefault(),S.stopPropagation())}}updateContainerTabindex(){let d,f=this.chart.options.accessibility,S=f&&f.keyboardNavigation,O=!(S&&S.enabled===!1),x=this.chart,D=x.container;x.renderTo.hasAttribute("tabindex")?(D.removeAttribute("tabindex"),d=x.renderTo):d=D,this.tabindexContainer=d;let F=d.getAttribute("tabindex");O&&!F?d.setAttribute("tabindex","0"):O||x.container.removeAttribute("tabindex")}createExitAnchor(){let d=this.chart,f=this.exitAnchor=u.createElement("div");d.renderTo.appendChild(f),this.makeElementAnExitAnchor(f)}makeElementAnExitAnchor(d){let f=this.tabindexContainer.getAttribute("tabindex")||0;d.setAttribute("class","highcharts-exit-anchor"),d.setAttribute("tabindex",f),d.setAttribute("aria-hidden",!1),this.addExitAnchorEventsToEl(d)}removeExitAnchor(){this.exitAnchor&&(b(this.exitAnchor.focusEventRemover)&&(this.eventProvider.removeEvent(this.exitAnchor.focusEventRemover),delete this.exitAnchor.focusEventRemover),this.exitAnchor.parentNode&&this.exitAnchor.parentNode.removeChild(this.exitAnchor),delete this.exitAnchor)}addExitAnchorEventsToEl(d){let f=this.chart,S=this;d.focusEventRemover=this.eventProvider.addEvent(d,"focus",function(O){let x=O||_.event,D=!(x.relatedTarget&&f.container.contains(x.relatedTarget)||S.exiting);if(f.focusElement&&delete f.focusElement,D){if(S.tabbingInBackwards=!0,S.tabindexContainer.focus(),delete S.tabbingInBackwards,x.preventDefault(),S.modules&&S.modules.length){S.currentModuleIx=S.modules.length-1;let F=S.modules[S.currentModuleIx];F&&F.validate&&!F.validate()?S.move(-1):F&&F.init(-1)}}else S.exiting=!1})}getFirstValidModuleIx(){let d=this.modules.length;for(let f=0;f{O&&O.dismissPopupContent&&O.dismissPopupContent()})}y.compose=function(S){o.compose(S);let O=S.prototype;return O.dismissPopupContent||(O.dismissPopupContent=d,g(u,"keydown",f)),S}}(C||(C={})),C}),r(n,"Accessibility/Components/LegendComponent.js",[n["Core/Animation/AnimationUtilities.js"],n["Core/Globals.js"],n["Core/Legend/Legend.js"],n["Core/Utilities.js"],n["Accessibility/AccessibilityComponent.js"],n["Accessibility/KeyboardNavigationHandler.js"],n["Accessibility/Utils/ChartUtilities.js"],n["Accessibility/Utils/HTMLUtilities.js"]],function(i,o,a,s,l,u,_,g){let{animObject:b}=i,{doc:R}=o,{addEvent:m,fireEvent:E,isNumber:C,pick:y,syncTimeout:d}=s,{getChartTitle:f}=_,{stripHTMLTagsFromString:S,addClass:O,removeClass:x}=g;function D(M){let A=M.legend&&M.legend.allItems,N=M.options.legend.accessibility||{},L=M.colorAxis&&M.colorAxis.some(v=>!v.dataClasses||!v.dataClasses.length);return!!(A&&A.length&&!L&&N.enabled!==!1)}function F(M,A){let N=A.legendItem||{};for(let L of(A.setState(M?"hover":"",!0),["group","label","symbol"])){let v=N[L],p=v&&v.element||v;p&&E(p,M?"mouseover":"mouseout")}}class k extends l{constructor(){super(...arguments),this.highlightedLegendItemIx=NaN,this.proxyGroup=null}init(){let A=this;this.recreateProxies(),this.addEvent(a,"afterScroll",function(){this.chart===A.chart&&(A.proxyProvider.updateGroupProxyElementPositions("legend"),A.updateLegendItemProxyVisibility(),A.highlightedLegendItemIx>-1&&this.chart.highlightLegendItem(A.highlightedLegendItemIx))}),this.addEvent(a,"afterPositionItem",function(N){this.chart===A.chart&&this.chart.renderer&&A.updateProxyPositionForItem(N.item)}),this.addEvent(a,"afterRender",function(){this.chart===A.chart&&this.chart.renderer&&A.recreateProxies()&&d(()=>A.proxyProvider.updateGroupProxyElementPositions("legend"),b(y(this.chart.renderer.globalAnimation,!0)).duration)})}updateLegendItemProxyVisibility(){let A,N=this.chart,L=N.legend,v=L.allItems||[],p=L.currentPage||1,c=L.clipHeight||0;v.forEach(h=>{if(h.a11yProxyElement){let T=L.pages&&L.pages.length,I=h.a11yProxyElement.element,P=!1;if(A=h.legendItem||{},T){let w=A.pageIx||0;P=(A.y||0)+(A.label?Math.round(A.label.getBBox().height):0)-L.pages[w]>c||w!==p-1}P?N.styledMode?O(I,"highcharts-a11y-invisible"):I.style.visibility="hidden":(x(I,"highcharts-a11y-invisible"),I.style.visibility="")}})}onChartRender(){D(this.chart)||this.removeProxies()}highlightAdjacentLegendPage(A){let N=this.chart,L=N.legend,v=(L.currentPage||1)+A,p=L.pages||[];if(v>0&&v<=p.length){let c=0;for(let h of L.allItems)((h.legendItem||{}).pageIx||0)+1===v&&N.highlightLegendItem(c)&&(this.highlightedLegendItemIx=c),++c}}updateProxyPositionForItem(A){A.a11yProxyElement&&A.a11yProxyElement.refreshPosition()}recreateProxies(){let A=R.activeElement,N=this.proxyGroup,L=A&&N&&N.contains(A);return this.removeProxies(),!!D(this.chart)&&(this.addLegendProxyGroup(),this.proxyLegendItems(),this.updateLegendItemProxyVisibility(),this.updateLegendTitle(),L&&this.chart.highlightLegendItem(this.highlightedLegendItemIx),!0)}removeProxies(){this.proxyProvider.removeGroup("legend")}updateLegendTitle(){let A=this.chart,N=S((A.legend&&A.legend.options.title&&A.legend.options.title.text||"").replace(/
    /g," "),A.renderer.forExport),L=A.langFormat("accessibility.legend.legendLabel"+(N?"":"NoTitle"),{chart:A,legendTitle:N,chartTitle:f(A)});this.proxyProvider.updateGroupAttrs("legend",{"aria-label":L})}addLegendProxyGroup(){let A=this.chart.options.accessibility.landmarkVerbosity==="all"?"region":null;this.proxyGroup=this.proxyProvider.addGroup("legend","ul",{"aria-label":"_placeholder_",role:A})}proxyLegendItems(){let A,N=this;((this.chart.legend||{}).allItems||[]).forEach(L=>{(A=L.legendItem||{}).label&&A.label.element&&N.proxyLegendItem(L)})}proxyLegendItem(A){let N=A.legendItem||{};if(!N.label||!N.group)return;let L=this.chart.langFormat("accessibility.legend.legendItem",{chart:this.chart,itemName:S(A.name,this.chart.renderer.forExport),item:A}),v={tabindex:-1,"aria-pressed":A.visible,"aria-label":L},p=N.group.div?N.label:N.group;A.a11yProxyElement=this.proxyProvider.addProxyElement("legend",{click:N.label,visual:p.element},"button",v)}getKeyboardNavigation(){let A=this.keyCodes,N=this,L=this.chart;return new u(L,{keyCodeMap:[[[A.left,A.right,A.up,A.down],function(v){return N.onKbdArrowKey(this,v)}],[[A.enter,A.space],function(){return N.onKbdClick(this)}],[[A.pageDown,A.pageUp],function(v){let p=v===A.pageDown?1:-1;return N.highlightAdjacentLegendPage(p),this.response.success}]],validate:function(){return N.shouldHaveLegendNavigation()},init:function(){L.highlightLegendItem(0),N.highlightedLegendItemIx=0},terminate:function(){N.highlightedLegendItemIx=-1,L.legend.allItems.forEach(v=>F(!1,v))}})}onKbdArrowKey(A,N){let{keyCodes:{left:L,up:v},highlightedLegendItemIx:p,chart:c}=this,h=c.legend.allItems.length,T=c.options.accessibility.keyboardNavigation.wrapAround,I=N===L||N===v?-1:1;return c.highlightLegendItem(p+I)?this.highlightedLegendItemIx+=I:T&&h>1&&(this.highlightedLegendItemIx=I>0?0:h-1,c.highlightLegendItem(this.highlightedLegendItemIx)),A.response.success}onKbdClick(A){let N=this.chart.legend.allItems[this.highlightedLegendItemIx];return N&&N.a11yProxyElement&&N.a11yProxyElement.click(),A.response.success}shouldHaveLegendNavigation(){if(!D(this.chart))return!1;let A=this.chart,N=(A.options.legend||{}).accessibility||{};return!!(A.legend.display&&N.keyboardNavigation&&N.keyboardNavigation.enabled)}destroy(){this.removeProxies()}}return function(M){function A(L){let v=this.legend.allItems,p=this.accessibility&&this.accessibility.components.legend.highlightedLegendItemIx,c=v[L],h=(c==null?void 0:c.legendItem)||{};if(c){C(p)&&v[p]&&F(!1,v[p]),function(P,w){let U=(P.allItems[w].legendItem||{}).pageIx,$=P.currentPage;U!==void 0&&U+1!==$&&P.scroll(1+U-$)}(this.legend,L);let T=h.label,I=c.a11yProxyElement&&c.a11yProxyElement.element;return T&&T.element&&I&&this.setFocusToElement(T,I),F(!0,c),!0}return!1}function N(L){let v=this.chart.options.accessibility,p=L.item;v.enabled&&p&&p.a11yProxyElement&&p.a11yProxyElement.innerElement.setAttribute("aria-pressed",L.visible?"true":"false")}M.compose=function(L,v){let p=L.prototype;p.highlightLegendItem||(p.highlightLegendItem=A,m(v,"afterColorizeItem",N))}}(k||(k={})),k}),r(n,"Stock/Navigator/ChartNavigatorComposition.js",[n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o){let a,{isTouchDevice:s}=i,{addEvent:l,merge:u,pick:_}=o,g=[];function b(){this.navigator&&this.navigator.setBaseSeries(null,!1)}function R(){var F;let f,S,O,x=this.legend,D=this.navigator;if(D){f=x&&x.options,S=D.xAxis,O=D.yAxis;let{scrollbarHeight:k,scrollButtonSize:M}=D;this.inverted?(D.left=D.opposite?this.chartWidth-k-D.height:this.spacing[3]+k,D.top=this.plotTop+M):(D.left=_(S.left,this.plotLeft+M),D.top=D.navigatorOptions.top||this.chartHeight-D.height-k-(((F=this.scrollbar)==null?void 0:F.options.margin)||0)-this.spacing[2]-(this.rangeSelector&&this.extraBottomMargin?this.rangeSelector.getHeight():0)-(f&&f.verticalAlign==="bottom"&&f.layout!=="proximate"&&f.enabled&&!f.floating?x.legendHeight+_(f.margin,10):0)-(this.titleOffset?this.titleOffset[2]:0)),S&&O&&(this.inverted?S.options.left=O.options.left=D.left:S.options.top=O.options.top=D.top,S.setAxisSize(),O.setAxisSize())}}function m(f){!this.navigator&&!this.scroller&&(this.options.navigator.enabled||this.options.scrollbar.enabled)&&(this.scroller=this.navigator=new a(this),_(f.redraw,!0)&&this.redraw(f.animation))}function E(){let f=this.options;(f.navigator.enabled||f.scrollbar.enabled)&&(this.scroller=this.navigator=new a(this))}function C(){let f=this.options,S=f.navigator,O=f.rangeSelector;if((S&&S.enabled||O&&O.enabled)&&(!s&&this.zooming.type==="x"||s&&this.zooming.pinchType==="x"))return!1}function y(f){let S=f.navigator;if(S&&f.xAxis[0]){let O=f.xAxis[0].getExtremes();S.render(O.min,O.max)}}function d(f){let S=f.options.navigator||{},O=f.options.scrollbar||{};!this.navigator&&!this.scroller&&(S.enabled||O.enabled)&&(u(!0,this.options.navigator,S),u(!0,this.options.scrollbar,O),delete f.options.navigator,delete f.options.scrollbar)}return{compose:function(f,S){if(o.pushUnique(g,f)){let O=f.prototype;a=S,O.callbacks.push(y),l(f,"afterAddSeries",b),l(f,"afterSetChartSize",R),l(f,"afterUpdate",m),l(f,"beforeRender",E),l(f,"beforeShowResetZoom",C),l(f,"update",d)}}}}),r(n,"Core/Axis/NavigatorAxisComposition.js",[n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o){let{isTouchDevice:a}=i,{addEvent:s,correctFloat:l,defined:u,isNumber:_,pick:g}=o;function b(){this.navigatorAxis||(this.navigatorAxis=new m(this))}function R(E){let C,y=this.chart,d=y.options,f=d.navigator,S=this.navigatorAxis,O=y.zooming.pinchType,x=d.rangeSelector,D=y.zooming.type;if(this.isXAxis&&(f!=null&&f.enabled||x!=null&&x.enabled)){if(D==="y"&&E.trigger==="zoom")C=!1;else if((E.trigger==="zoom"&&D==="xy"||a&&O==="xy")&&this.options.range){let F=S.previousZoom;u(E.min)?S.previousZoom=[this.min,this.max]:F&&(E.min=F[0],E.max=F[1],S.previousZoom=void 0)}}C!==void 0&&E.preventDefault()}class m{static compose(C){C.keepProps.includes("navigatorAxis")||(C.keepProps.push("navigatorAxis"),s(C,"init",b),s(C,"setExtremes",R))}constructor(C){this.axis=C}destroy(){this.axis=void 0}toFixedRange(C,y,d,f){var A;let S=this.axis,O=S.chart,x=g((A=S.ordinal)==null?void 0:A.convertOverscroll(S.options.overscroll),0),D=g(d,S.translate(C,!0,!S.horiz)),F=g(f,S.translate(y,!0,!S.horiz)),k=O&&O.fixedRange,M=(S.pointRange||0)/2;if(u(d)||(D=l(D+M)),u(f)||(F=l(F-M)),k&&S.dataMin&&S.dataMax){let N=S.dataMax+x;F>=N&&(D=l(N-k),F=l(N)),D<=S.dataMin&&(F=l(S.dataMin+k))}return _(D)&&_(F)||(D=F=void 0),{min:D,max:F}}}return m}),r(n,"Stock/Navigator/NavigatorDefaults.js",[n["Core/Color/Color.js"],n["Core/Series/SeriesRegistry.js"]],function(i,o){let{parse:a}=i,{seriesTypes:s}=o;return{height:40,margin:25,maskInside:!0,handles:{width:7,height:15,symbols:["navigator-handle","navigator-handle"],enabled:!0,lineWidth:1,backgroundColor:"#f2f2f2",borderColor:"#999999"},maskFill:a("#667aff").setOpacity(.3).get(),outlineColor:"#999999",outlineWidth:1,series:{type:s.areaspline===void 0?"line":"areaspline",fillOpacity:.05,lineWidth:1,compare:null,sonification:{enabled:!1},dataGrouping:{approximation:"average",enabled:!0,groupPixelWidth:2,firstAnchor:"firstPoint",anchor:"middle",lastAnchor:"lastPoint",units:[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2,3,4]],["week",[1,2,3]],["month",[1,3,6]],["year",null]]},dataLabels:{enabled:!1,zIndex:2},id:"highcharts-navigator-series",className:"highcharts-navigator-series",lineColor:null,marker:{enabled:!1},threshold:null},xAxis:{className:"highcharts-navigator-xaxis",tickLength:0,lineWidth:0,gridLineColor:"#e6e6e6",gridLineWidth:1,tickPixelInterval:200,labels:{align:"left",style:{color:"#000000",fontSize:"0.7em",opacity:.6,textOutline:"2px contrast"},x:3,y:-4},crosshair:!1},yAxis:{className:"highcharts-navigator-yaxis",gridLineWidth:0,startOnTick:!1,endOnTick:!1,minPadding:.1,maxPadding:.1,labels:{enabled:!1},crosshair:!1,title:{text:null},tickLength:0,tickWidth:0}}}),r(n,"Stock/Navigator/NavigatorSymbols.js",[],function(){return{"navigator-handle":function(i,o,a,s,l={}){let u=l.width?l.width/2:a,_=Math.round(u/3)+.5;return[["M",-u-1,.5],["L",u,.5],["L",u,(s=l.height||s)+.5],["L",-u-1,s+.5],["L",-u-1,.5],["M",-_,4],["L",-_,s-3],["M",_-1,4],["L",_-1,s-3]]}}}),r(n,"Stock/Utilities/StockUtilities.js",[n["Core/Utilities.js"]],function(i){let{defined:o}=i;return{setFixedRange:function(a){let s=this.xAxis[0];o(s.dataMax)&&o(s.dataMin)&&a?this.fixedRange=Math.min(a,s.dataMax-s.dataMin):this.fixedRange=a}}}),r(n,"Stock/Navigator/NavigatorComposition.js",[n["Core/Defaults.js"],n["Core/Globals.js"],n["Core/Axis/NavigatorAxisComposition.js"],n["Stock/Navigator/NavigatorDefaults.js"],n["Stock/Navigator/NavigatorSymbols.js"],n["Core/Renderer/RendererRegistry.js"],n["Stock/Utilities/StockUtilities.js"],n["Core/Utilities.js"]],function(i,o,a,s,l,u,_,g){let{setOptions:b}=i,{composed:R}=o,{getRendererType:m}=u,{setFixedRange:E}=_,{addEvent:C,extend:y,pushUnique:d}=g;function f(){this.chart.navigator&&!this.options.isInternal&&this.chart.navigator.setBaseSeries(null,!1)}return{compose:function(S,O,x){a.compose(O),d(R,"Navigator")&&(S.prototype.setFixedRange=E,y(m().prototype.symbols,l),C(x,"afterUpdate",f),b({navigator:s}))}}}),r(n,"Core/Axis/ScrollbarAxis.js",[n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o){var a;let{composed:s}=i,{addEvent:l,defined:u,pick:_,pushUnique:g}=o;return function(b){let R;function m(d){let f=_(d.options&&d.options.min,d.min),S=_(d.options&&d.options.max,d.max);return{axisMin:f,axisMax:S,scrollMin:u(d.dataMin)?Math.min(f,d.min,d.dataMin,_(d.threshold,1/0)):f,scrollMax:u(d.dataMax)?Math.max(S,d.max,d.dataMax,_(d.threshold,-1/0)):S}}function E(){let d=this.scrollbar,f=d&&!d.options.opposite,S=this.horiz?2:f?3:1;d&&(this.chart.scrollbarsOffsets=[0,0],this.chart.axisOffset[S]+=d.size+(d.options.margin||0))}function C(){let d=this;d.options&&d.options.scrollbar&&d.options.scrollbar.enabled&&(d.options.scrollbar.vertical=!d.horiz,d.options.startOnTick=d.options.endOnTick=!1,d.scrollbar=new R(d.chart.renderer,d.options.scrollbar,d.chart),l(d.scrollbar,"changed",function(f){let S,O,{axisMin:x,axisMax:D,scrollMin:F,scrollMax:k}=m(d),M=k-F;if(u(x)&&u(D))if(d.horiz&&!d.reversed||!d.horiz&&d.reversed?(S=F+M*this.to,O=F+M*this.from):(S=F+M*(1-this.from),O=F+M*(1-this.to)),this.shouldUpdateExtremes(f.DOMType)){let A=f.DOMType!=="mousemove"&&f.DOMType!=="touchmove"&&void 0;d.setExtremes(O,S,!0,A,f)}else this.setRange(this.from,this.to)}))}function y(){let d,f,S,{scrollMin:O,scrollMax:x}=m(this),D=this.scrollbar,F=this.axisTitleMargin+(this.titleOffset||0),k=this.chart.scrollbarsOffsets,M=this.options.margin||0;if(D&&k){if(this.horiz)this.opposite||(k[1]+=F),D.position(this.left,this.top+this.height+2+k[1]-(this.opposite?M:0),this.width,this.height),this.opposite||(k[1]+=M),d=1;else{let A;this.opposite&&(k[0]+=F),A=D.options.opposite?this.left+this.width+2+k[0]-(this.opposite?0:M):this.opposite?0:M,D.position(A,this.top,this.width,this.height),this.opposite&&(k[0]+=M),d=0}k[d]+=D.size+(D.options.margin||0),isNaN(O)||isNaN(x)||!u(this.min)||!u(this.max)||this.min===this.max?D.setRange(0,1):(f=(this.min-O)/(x-O),S=(this.max-O)/(x-O),this.horiz&&!this.reversed||!this.horiz&&this.reversed?D.setRange(f,S):D.setRange(1-S,1-f))}}b.compose=function(d,f){g(s,"Axis.Scrollbar")&&(R=f,l(d,"afterGetOffset",E),l(d,"afterInit",C),l(d,"afterRender",y))}}(a||(a={})),a}),r(n,"Stock/Scrollbar/ScrollbarDefaults.js",[],function(){return{height:10,barBorderRadius:5,buttonBorderRadius:0,buttonsEnabled:!1,liveRedraw:void 0,margin:void 0,minWidth:6,opposite:!0,step:.2,zIndex:3,barBackgroundColor:"#cccccc",barBorderWidth:0,barBorderColor:"#cccccc",buttonArrowColor:"#333333",buttonBackgroundColor:"#e6e6e6",buttonBorderColor:"#cccccc",buttonBorderWidth:1,rifleColor:"none",trackBackgroundColor:"rgba(255, 255, 255, 0.001)",trackBorderColor:"#cccccc",trackBorderRadius:5,trackBorderWidth:1}}),r(n,"Stock/Scrollbar/Scrollbar.js",[n["Core/Defaults.js"],n["Core/Globals.js"],n["Core/Axis/ScrollbarAxis.js"],n["Stock/Scrollbar/ScrollbarDefaults.js"],n["Core/Utilities.js"]],function(i,o,a,s,l){let{defaultOptions:u}=i,{addEvent:_,correctFloat:g,defined:b,destroyObjectProperties:R,fireEvent:m,merge:E,pick:C,removeEvent:y}=l;class d{static compose(S){a.compose(S,d)}static swapXY(S,O){return O&&S.forEach(x=>{let D,F=x.length;for(let k=0;kthis.calculatedWidth?O.minWidth:0;return{chartX:(S.chartX-this.x-this.xOffset)/(this.barWidth-x),chartY:(S.chartY-this.y-this.yOffset)/(this.barWidth-x)}}destroy(){let S=this,O=S.chart.scroller;S.removeEvents(),["track","scrollbarRifles","scrollbar","scrollbarGroup","group"].forEach(function(x){S[x]&&S[x].destroy&&(S[x]=S[x].destroy())}),O&&S===O.scrollbar&&(O.scrollbar=null,R(O.scrollbarButtons))}drawScrollbarButton(S){let O=this.renderer,x=this.scrollbarButtons,D=this.options,F=this.size,k=O.g().add(this.group);if(x.push(k),D.buttonsEnabled){let M=O.rect().addClass("highcharts-scrollbar-button").add(k);this.chart.styledMode||M.attr({stroke:D.buttonBorderColor,"stroke-width":D.buttonBorderWidth,fill:D.buttonBackgroundColor}),M.attr(M.crisp({x:-.5,y:-.5,width:F+1,height:F+1,r:D.buttonBorderRadius},M.strokeWidth()));let A=O.path(d.swapXY([["M",F/2+(S?-1:1),F/2-3],["L",F/2+(S?-1:1),F/2+3],["L",F/2+(S?2:-2),F/2]],D.vertical)).addClass("highcharts-scrollbar-arrow").add(x[S]);this.chart.styledMode||A.attr({fill:D.buttonArrowColor})}}init(S,O,x){this.scrollbarButtons=[],this.renderer=S,this.userOptions=O,this.options=E(s,u.scrollbar,O),this.options.margin=C(this.options.margin,10),this.chart=x,this.size=C(this.options.size,this.options.height),O.enabled&&(this.render(),this.addEvents())}mouseDownHandler(S){var D;let O=((D=this.chart.pointer)==null?void 0:D.normalize(S))||S,x=this.cursorToScrollbarPosition(O);this.chartX=x.chartX,this.chartY=x.chartY,this.initPositions=[this.from,this.to],this.grabbedCenter=!0}mouseMoveHandler(S){var k;let O,x=((k=this.chart.pointer)==null?void 0:k.normalize(S))||S,D=this.options.vertical?"chartY":"chartX",F=this.initPositions||[];this.grabbedCenter&&(!S.touches||S.touches[0][D]!==0)&&(O=this.cursorToScrollbarPosition(x)[D]-this[D],this.hasDragged=!0,this.updatePosition(F[0]+O,F[1]+O),this.hasDragged&&m(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMType:S.type,DOMEvent:S}))}mouseUpHandler(S){this.hasDragged&&m(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMType:S.type,DOMEvent:S}),this.grabbedCenter=this.hasDragged=this.chartX=this.chartY=null}position(S,O,x,D){let{buttonsEnabled:F,margin:k=0,vertical:M}=this.options,A=this.rendered?"animate":"attr",N=D,L=0;this.group.show(),this.x=S,this.y=O+this.trackBorderWidth,this.width=x,this.height=D,this.xOffset=N,this.yOffset=L,M?(this.width=this.yOffset=x=L=this.size,this.xOffset=N=0,this.yOffset=L=F?this.size:0,this.barWidth=D-(F?2*x:0),this.x=S+=k):(this.height=D=this.size,this.xOffset=N=F?this.size:0,this.barWidth=x-(F?2*D:0),this.y=this.y+k),this.group[A]({translateX:S,translateY:this.y}),this.track[A]({width:x,height:D}),this.scrollbarButtons[1][A]({translateX:M?0:x-N,translateY:M?D-L:0})}removeEvents(){this._events.forEach(function(S){y.apply(null,S)}),this._events.length=0}render(){let S=this.renderer,O=this.options,x=this.size,D=this.chart.styledMode,F=S.g("scrollbar").attr({zIndex:O.zIndex}).hide().add();this.group=F,this.track=S.rect().addClass("highcharts-scrollbar-track").attr({r:O.trackBorderRadius||0,height:x,width:x}).add(F),D||this.track.attr({fill:O.trackBackgroundColor,stroke:O.trackBorderColor,"stroke-width":O.trackBorderWidth});let k=this.trackBorderWidth=this.track.strokeWidth();this.track.attr({x:-k%2/2,y:-k%2/2}),this.scrollbarGroup=S.g().add(F),this.scrollbar=S.rect().addClass("highcharts-scrollbar-thumb").attr({height:x-k,width:x-k,r:O.barBorderRadius||0}).add(this.scrollbarGroup),this.scrollbarRifles=S.path(d.swapXY([["M",-3,x/4],["L",-3,2*x/3],["M",0,x/4],["L",0,2*x/3],["M",3,x/4],["L",3,2*x/3]],O.vertical)).addClass("highcharts-scrollbar-rifles").add(this.scrollbarGroup),D||(this.scrollbar.attr({fill:O.barBackgroundColor,stroke:O.barBorderColor,"stroke-width":O.barBorderWidth}),this.scrollbarRifles.attr({stroke:O.rifleColor,"stroke-width":1})),this.scrollbarStrokeWidth=this.scrollbar.strokeWidth(),this.scrollbarGroup.translate(-this.scrollbarStrokeWidth%2/2,-this.scrollbarStrokeWidth%2/2),this.drawScrollbarButton(0),this.drawScrollbarButton(1)}setRange(S,O){let x,D,F=this.options,k=F.vertical,M=F.minWidth,A=this.barWidth,N=!this.rendered||this.hasDragged||this.chart.navigator&&this.chart.navigator.hasDragged?"attr":"animate";if(!b(A))return;let L=A*Math.min(O,1);x=Math.ceil(A*(S=Math.max(S,0))),this.calculatedWidth=D=g(L-x),D=1?this.group.hide():this.group.show()),this.rendered=!0}shouldUpdateExtremes(S){return C(this.options.liveRedraw,o.svg&&!o.isTouchDevice&&!this.chart.boosted)||S==="mouseup"||S==="touchend"||!b(S)}trackClick(S){var k;let O=((k=this.chart.pointer)==null?void 0:k.normalize(S))||S,x=this.to-this.from,D=this.y+this.scrollbarTop,F=this.x+this.scrollbarLeft;this.options.vertical&&O.chartY>D||!this.options.vertical&&O.chartX>F?this.updatePosition(this.from+x,this.to+x):this.updatePosition(this.from-x,this.to-x),m(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:S})}update(S){this.destroy(),this.init(this.chart.renderer,E(!0,this.options,S),this.chart)}updatePosition(S,O){O>1&&(S=g(1-g(O-S)),O=1),S<0&&(O=g(O-S),S=0),this.from=S,this.to=O}}return d.defaultOptions=s,u.scrollbar=E(!0,d.defaultOptions,u.scrollbar),d}),r(n,"Stock/Navigator/Navigator.js",[n["Core/Axis/Axis.js"],n["Stock/Navigator/ChartNavigatorComposition.js"],n["Core/Defaults.js"],n["Core/Globals.js"],n["Core/Axis/NavigatorAxisComposition.js"],n["Stock/Navigator/NavigatorComposition.js"],n["Stock/Scrollbar/Scrollbar.js"],n["Core/Utilities.js"]],function(i,o,a,s,l,u,_,g){let{defaultOptions:b}=a,{isTouchDevice:R}=s,{addEvent:m,clamp:E,correctFloat:C,defined:y,destroyObjectProperties:d,erase:f,extend:S,find:O,fireEvent:x,isArray:D,isNumber:F,merge:k,pick:M,removeEvent:A,splat:N}=g;function L(p,...c){let h=[].filter.call(c,F);if(h.length)return Math[p].apply(0,h)}class v{static compose(c,h,T){o.compose(c,v),u.compose(c,h,T)}constructor(c){this.scrollbarHeight=0,this.init(c)}drawHandle(c,h,T,I){let P=this.navigatorOptions.handles.height;this.handles[h][I](T?{translateX:Math.round(this.left+this.height/2),translateY:Math.round(this.top+parseInt(c,10)+.5-P)}:{translateX:Math.round(this.left+parseInt(c,10)),translateY:Math.round(this.top+this.height/2-P/2-1)})}drawOutline(c,h,T,I){let P=this.navigatorOptions.maskInside,w=this.outline.strokeWidth(),U=w/2,$=w%2/2,Y=this.scrollButtonSize,W=this.size,z=this.top,Q=this.height,B=z-U,j=z+Q,q=this.left,G,V;T?(G=z+h+$,h=z+c+$,V=[["M",q+Q,z-Y-$],["L",q+Q,G],["L",q,G],["M",q,h],["L",q+Q,h],["L",q+Q,z+W+Y]],P&&V.push(["M",q+Q,G-U],["L",q+Q,h+U])):(q-=Y,c+=q+Y-$,h+=q+Y-$,V=[["M",q,B],["L",c,B],["L",c,j],["M",h,j],["L",h,B],["L",q+W+2*Y,z+U]],P&&V.push(["M",c-U,B],["L",h+U,B])),this.outline[I]({d:V})}drawMasks(c,h,T,I){let P,w,U,$,Y=this.left,W=this.top,z=this.height;T?(U=[Y,Y,Y],$=[W,W+c,W+h],w=[z,z,z],P=[c,h-c,this.size-h]):(U=[Y,Y+c,Y+h],$=[W,W,W],w=[c,h-c,this.size-h],P=[z,z,z]),this.shades.forEach((Q,B)=>{Q[I]({x:U[B],y:$[B],width:w[B],height:P[B]})})}renderElements(){let c=this,h=c.navigatorOptions,T=h.maskInside,I=c.chart,P=I.inverted,w=I.renderer,U={cursor:P?"ns-resize":"ew-resize"},$=c.navigatorGroup=w.g("navigator").attr({zIndex:8,visibility:"hidden"}).add();if([!T,T,!T].forEach((Y,W)=>{let z=w.rect().addClass("highcharts-navigator-mask"+(W===1?"-inside":"-outside")).add($);I.styledMode||(z.attr({fill:Y?h.maskFill:"rgba(0,0,0,0)"}),W===1&&z.css(U)),c.shades[W]=z}),c.outline=w.path().addClass("highcharts-navigator-outline").add($),I.styledMode||c.outline.attr({"stroke-width":h.outlineWidth,stroke:h.outlineColor}),h.handles&&h.handles.enabled){let Y=h.handles,{height:W,width:z}=Y;[0,1].forEach(Q=>{c.handles[Q]=w.symbol(Y.symbols[Q],-z/2-1,0,z,W,Y),I.inverted&&c.handles[Q].attr({rotation:90,rotationOriginX:Math.floor(-z/2),rotationOriginY:(W+z)/2}),c.handles[Q].attr({zIndex:7-Q}).addClass("highcharts-navigator-handle highcharts-navigator-handle-"+["left","right"][Q]).add($),I.styledMode||c.handles[Q].attr({fill:Y.backgroundColor,stroke:Y.borderColor,"stroke-width":Y.lineWidth}).css(U)})}}update(c){(this.series||[]).forEach(h=>{h.baseSeries&&delete h.baseSeries.navigatorSeries}),this.destroy(),k(!0,this.chart.options.navigator,c),this.init(this.chart)}render(c,h,T,I){let P=this.chart,w=this.xAxis,U=w.pointRange||0,$=w.navigatorAxis.fake?P.xAxis[0]:w,Y=this.navigatorEnabled,W=this.rendered,z=P.inverted,Q=P.xAxis[0].minRange,B=P.xAxis[0].options.maxRange,j=this.scrollButtonSize,q,G,V,H=this.scrollbarHeight,K,X;if(this.hasDragged&&!y(T))return;if(c=C(c-U/2),h=C(h+U/2),!F(c)||!F(h)){if(!W)return;T=0,I=M(w.width,$.width)}this.left=M(w.left,P.plotLeft+j+(z?P.plotWidth:0));let ee=this.size=K=M(w.len,(z?P.plotHeight:P.plotWidth)-2*j);q=z?H:K+2*j,T=M(T,w.toPixels(c,!0)),I=M(I,w.toPixels(h,!0)),F(T)&&Math.abs(T)!==1/0||(T=0,I=q);let oe=w.toValue(T,!0),te=w.toValue(I,!0),ne=Math.abs(C(te-oe));neB&&(this.grabbedLeft?T=w.toPixels(te-B-U,!0):this.grabbedRight&&(I=w.toPixels(oe+B+U,!0))),this.zoomedMax=E(Math.max(T,I),0,ee),this.zoomedMin=E(this.fixedWidth?this.zoomedMax-this.fixedWidth:Math.min(T,I),0,ee),this.range=this.zoomedMax-this.zoomedMin,ee=Math.round(this.zoomedMax);let se=Math.round(this.zoomedMin);Y&&(this.navigatorGroup.attr({visibility:"inherit"}),X=W&&!this.hasDragged?"animate":"attr",this.drawMasks(se,ee,z,X),this.drawOutline(se,ee,z,X),this.navigatorOptions.handles.enabled&&(this.drawHandle(se,0,z,X),this.drawHandle(ee,1,z,X))),this.scrollbar&&(z?(V=this.top-j,G=this.left-H+(Y||!$.opposite?0:($.titleOffset||0)+$.axisTitleMargin),H=K+2*j):(V=this.top+(Y?this.height:-H),G=this.left-j),this.scrollbar.position(G,V,q,H),this.scrollbar.setRange(this.zoomedMin/(K||1),this.zoomedMax/(K||1))),this.rendered=!0,x(this,"afterRender")}addMouseEvents(){let c=this,h=c.chart,T=h.container,I=[],P,w;c.mouseMoveHandler=P=function(U){c.onMouseMove(U)},c.mouseUpHandler=w=function(U){c.onMouseUp(U)},(I=c.getPartsEvents("mousedown")).push(m(h.renderTo,"mousemove",P),m(T.ownerDocument,"mouseup",w),m(h.renderTo,"touchmove",P),m(T.ownerDocument,"touchend",w)),I.concat(c.getPartsEvents("touchstart")),c.eventsToUnbind=I,c.series&&c.series[0]&&I.push(m(c.series[0].xAxis,"foundExtremes",function(){h.navigator.modifyNavigatorAxisExtremes()}))}getPartsEvents(c){let h=this,T=[];return["shades","handles"].forEach(function(I){h[I].forEach(function(P,w){T.push(m(P.element,c,function(U){h[I+"Mousedown"](U,w)}))})}),T}shadesMousedown(c,h){var j;c=((j=this.chart.pointer)==null?void 0:j.normalize(c))||c;let T=this.chart,I=this.xAxis,P=this.zoomedMin,w=this.size,U=this.range,$=this.left,Y=c.chartX,W,z,Q,B;T.inverted&&(Y=c.chartY,$=this.top),h===1?(this.grabbedCenter=Y,this.fixedWidth=U,this.dragOffset=Y-P):(B=Y-$-U/2,h===0?B=Math.max(0,B):h===2&&B+U>=w&&(B=w-U,this.reversedExtremes?(B-=U,z=this.getUnionExtremes().dataMin):W=this.getUnionExtremes().dataMax),B!==P&&(this.fixedWidth=U,y((Q=I.navigatorAxis.toFixedRange(B,B+U,z,W)).min)&&x(this,"setRange",{min:Math.min(Q.min,Q.max),max:Math.max(Q.min,Q.max),redraw:!0,eventArguments:{trigger:"navigator"}})))}handlesMousedown(c,h){var w;c=((w=this.chart.pointer)==null?void 0:w.normalize(c))||c;let T=this.chart,I=T.xAxis[0],P=this.reversedExtremes;h===0?(this.grabbedLeft=!0,this.otherHandlePos=this.zoomedMax,this.fixedExtreme=P?I.min:I.max):(this.grabbedRight=!0,this.otherHandlePos=this.zoomedMin,this.fixedExtreme=P?I.max:I.min),T.setFixedRange(void 0)}onMouseMove(c){var W;let h=this,T=h.chart,I=h.navigatorSize,P=h.range,w=h.dragOffset,U=T.inverted,$=h.left,Y;(!c.touches||c.touches[0].pageX!==0)&&(Y=(c=((W=T.pointer)==null?void 0:W.normalize(c))||c).chartX,U&&($=h.top,Y=c.chartY),h.grabbedLeft?(h.hasDragged=!0,h.render(0,0,Y-$,h.otherHandlePos)):h.grabbedRight?(h.hasDragged=!0,h.render(0,0,h.otherHandlePos,Y-$)):h.grabbedCenter&&(h.hasDragged=!0,YI+w-P&&(Y=I+w-P),h.render(0,0,Y-w,Y-w+P)),h.hasDragged&&h.scrollbar&&M(h.scrollbar.options.liveRedraw,!R&&!this.chart.boosted)&&(c.DOMType=c.type,setTimeout(function(){h.onMouseUp(c)},0)))}onMouseUp(c){let h,T,I,P,w,U,$=this.chart,Y=this.xAxis,W=this.scrollbar,z=c.DOMEvent||c,Q=$.inverted,B=this.rendered&&!this.hasDragged?"animate":"attr";(this.hasDragged&&(!W||!W.hasDragged)||c.trigger==="scrollbar")&&(I=this.getUnionExtremes(),this.zoomedMin===this.otherHandlePos?P=this.fixedExtreme:this.zoomedMax===this.otherHandlePos&&(w=this.fixedExtreme),this.zoomedMax===this.size&&(w=this.reversedExtremes?I.dataMin:I.dataMax),this.zoomedMin===0&&(P=this.reversedExtremes?I.dataMax:I.dataMin),y((U=Y.navigatorAxis.toFixedRange(this.zoomedMin,this.zoomedMax,P,w)).min)&&x(this,"setRange",{min:Math.min(U.min,U.max),max:Math.max(U.min,U.max),redraw:!0,animation:!this.hasDragged&&null,eventArguments:{trigger:"navigator",triggerOp:"navigator-drag",DOMEvent:z}})),c.DOMType!=="mousemove"&&c.DOMType!=="touchmove"&&(this.grabbedLeft=this.grabbedRight=this.grabbedCenter=this.fixedWidth=this.fixedExtreme=this.otherHandlePos=this.hasDragged=this.dragOffset=null),this.navigatorEnabled&&F(this.zoomedMin)&&F(this.zoomedMax)&&(T=Math.round(this.zoomedMin),h=Math.round(this.zoomedMax),this.shades&&this.drawMasks(T,h,Q,B),this.outline&&this.drawOutline(T,h,Q,B),this.navigatorOptions.handles.enabled&&Object.keys(this.handles).length===this.handles.length&&(this.drawHandle(T,0,Q,B),this.drawHandle(h,1,Q,B)))}removeEvents(){this.eventsToUnbind&&(this.eventsToUnbind.forEach(function(c){c()}),this.eventsToUnbind=void 0),this.removeBaseSeriesEvents()}removeBaseSeriesEvents(){let c=this.baseSeries||[];this.navigatorEnabled&&c[0]&&(this.navigatorOptions.adaptToUpdatedData!==!1&&c.forEach(function(h){A(h,"updatedData",this.updatedDataHandler)},this),c[0].xAxis&&A(c[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes))}init(c){let h=c.options,T=h.navigator||{},I=T.enabled,P=h.scrollbar||{},w=P.enabled,U=I&&T.height||0,$=w&&P.height||0,Y=P.buttonsEnabled&&$||0;this.handles=[],this.shades=[],this.chart=c,this.setBaseSeries(),this.height=U,this.scrollbarHeight=$,this.scrollButtonSize=Y,this.scrollbarEnabled=w,this.navigatorEnabled=I,this.navigatorOptions=T,this.scrollbarOptions=P,this.opposite=M(T.opposite,!!(!I&&c.inverted));let W=this,z=W.baseSeries,Q=c.xAxis.length,B=c.yAxis.length,j=z&&z[0]&&z[0].xAxis||c.xAxis[0]||{options:{}};if(c.isDirtyBox=!0,W.navigatorEnabled?(W.xAxis=new i(c,k({breaks:j.options.breaks,ordinal:j.options.ordinal,overscroll:j.options.overscroll},T.xAxis,{id:"navigator-x-axis",yAxis:"navigator-y-axis",type:"datetime",index:Q,isInternal:!0,offset:0,keepOrdinalPadding:!0,startOnTick:!1,endOnTick:!1,minPadding:0,maxPadding:0,zoomEnabled:!1},c.inverted?{offsets:[Y,0,-Y,0],width:U}:{offsets:[0,-Y,0,Y],height:U}),"xAxis"),W.yAxis=new i(c,k(T.yAxis,{id:"navigator-y-axis",alignTicks:!1,offset:0,index:B,isInternal:!0,reversed:M(T.yAxis&&T.yAxis.reversed,c.yAxis[0]&&c.yAxis[0].reversed,!1),zoomEnabled:!1},c.inverted?{width:U}:{height:U}),"yAxis"),z||T.series.data?W.updateNavigatorSeries(!1):c.series.length===0&&(W.unbindRedraw=m(c,"beforeRedraw",function(){c.series.length>0&&!W.series&&(W.setBaseSeries(),W.unbindRedraw())})),W.reversedExtremes=c.inverted&&!W.xAxis.reversed||!c.inverted&&W.xAxis.reversed,W.renderElements(),W.addMouseEvents()):(W.xAxis={chart:c,navigatorAxis:{fake:!0},translate:function(q,G){let V=c.xAxis[0],H=V.getExtremes(),K=V.len-2*Y,X=L("min",V.options.min,H.dataMin),ee=L("max",V.options.max,H.dataMax)-X;return G?q*ee/K+X:K*(q-X)/ee},toPixels:function(q){return this.translate(q)},toValue:function(q){return this.translate(q,!0)}},W.xAxis.navigatorAxis.axis=W.xAxis,W.xAxis.navigatorAxis.toFixedRange=l.prototype.toFixedRange.bind(W.xAxis.navigatorAxis)),c.options.scrollbar.enabled){let q=k(c.options.scrollbar,{vertical:c.inverted});!F(q.margin)&&W.navigatorEnabled&&(q.margin=c.inverted?-3:3),c.scrollbar=W.scrollbar=new _(c.renderer,q,c),m(W.scrollbar,"changed",function(G){let V=W.size,H=V*this.to,K=V*this.from;W.hasDragged=W.scrollbar.hasDragged,W.render(0,0,K,H),this.shouldUpdateExtremes(G.DOMType)&&setTimeout(function(){W.onMouseUp(G)})})}W.addBaseSeriesEvents(),W.addChartEvents()}getUnionExtremes(c){let h,T=this.chart.xAxis[0],I=this.xAxis,P=I.options,w=T.options;return c&&T.dataMin===null||(h={dataMin:M(P&&P.min,L("min",w.min,T.dataMin,I.dataMin,I.min)),dataMax:M(P&&P.max,L("max",w.max,T.dataMax,I.dataMax,I.max))}),h}setBaseSeries(c,h){let T=this.chart,I=this.baseSeries=[];c=c||T.options&&T.options.navigator.baseSeries||(T.series.length?O(T.series,P=>!P.options.isInternal).index:0),(T.series||[]).forEach((P,w)=>{!P.options.isInternal&&(P.options.showInNavigator||(w===c||P.options.id===c)&&P.options.showInNavigator!==!1)&&I.push(P)}),this.xAxis&&!this.xAxis.navigatorAxis.fake&&this.updateNavigatorSeries(!0,h)}updateNavigatorSeries(c,h){let T=this,I=T.chart,P=T.baseSeries,w={enableMouseTracking:!1,index:null,linkedTo:null,group:"nav",padXAxis:!1,xAxis:"navigator-x-axis",yAxis:"navigator-y-axis",showInLegend:!1,stacking:void 0,isInternal:!0,states:{inactive:{opacity:1}}},U=T.series=(T.series||[]).filter(Q=>{let B=Q.baseSeries;return!(0>P.indexOf(B))||(B&&(A(B,"updatedData",T.updatedDataHandler),delete B.navigatorSeries),Q.chart&&Q.destroy(),!1)}),$,Y,W=T.navigatorOptions.series,z;P&&P.length&&P.forEach(Q=>{let B=Q.navigatorSeries,j=S({color:Q.color,visible:Q.visible},D(W)?b.navigator.series:W);if(B&&T.navigatorOptions.adaptToUpdatedData===!1)return;w.name="Navigator "+P.length,z=($=Q.options||{}).navigatorOptions||{},j.dataLabels=N(j.dataLabels),(Y=k($,w,j,z)).pointRange=M(j.pointRange,z.pointRange,b.plotOptions[Y.type||"line"].pointRange);let q=z.data||j.data;T.hasNavigatorData=T.hasNavigatorData||!!q,Y.data=q||$.data&&$.data.slice(0),B&&B.options?B.update(Y,h):(Q.navigatorSeries=I.initSeries(Y),I.setSortedData(),Q.navigatorSeries.baseSeries=Q,U.push(Q.navigatorSeries))}),(W.data&&!(P&&P.length)||D(W))&&(T.hasNavigatorData=!1,(W=N(W)).forEach((Q,B)=>{w.name="Navigator "+(U.length+1),(Y=k(b.navigator.series,{color:I.series[B]&&!I.series[B].options.isInternal&&I.series[B].color||I.options.colors[B]||I.options.colors[0]},w,Q)).data=Q.data,Y.data&&(T.hasNavigatorData=!0,U.push(I.initSeries(Y)))})),c&&this.addBaseSeriesEvents()}addBaseSeriesEvents(){let c=this,h=c.baseSeries||[];h[0]&&h[0].xAxis&&h[0].eventsToUnbind.push(m(h[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes)),h.forEach(T=>{T.eventsToUnbind.push(m(T,"show",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!0,!1)})),T.eventsToUnbind.push(m(T,"hide",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!1,!1)})),this.navigatorOptions.adaptToUpdatedData!==!1&&T.xAxis&&T.eventsToUnbind.push(m(T,"updatedData",this.updatedDataHandler)),T.eventsToUnbind.push(m(T,"remove",function(){this.navigatorSeries&&(f(c.series,this.navigatorSeries),y(this.navigatorSeries.options)&&this.navigatorSeries.remove(!1),delete this.navigatorSeries)}))})}getBaseSeriesMin(c){return this.baseSeries.reduce(function(h,T){return Math.min(h,T.xData&&T.xData.length?T.xData[0]:h)},c)}modifyNavigatorAxisExtremes(){let c=this.xAxis;if(c.getExtremes!==void 0){let h=this.getUnionExtremes(!0);h&&(h.dataMin!==c.min||h.dataMax!==c.max)&&(c.min=h.dataMin,c.max=h.dataMax)}}modifyBaseAxisExtremes(){var q;let c,h,T=this.chart.navigator,I=this.getExtremes(),P=I.min,w=I.max,U=I.dataMin,$=I.dataMax,Y=w-P,W=T.stickToMin,z=T.stickToMax,Q=M((q=this.ordinal)==null?void 0:q.convertOverscroll(this.options.overscroll),0),B=T.series&&T.series[0],j=!!this.setExtremes;!(this.eventArgs&&this.eventArgs.trigger==="rangeSelectorButton")&&(W&&(c=(h=U)+Y),z&&(c=$+Q,W||(h=Math.max(U,c-Y,T.getBaseSeriesMin(B&&B.xData?B.xData[0]:-Number.MAX_VALUE)))),j&&(W||z)&&F(h)&&(this.min=this.userMin=h,this.max=this.userMax=c)),T.stickToMin=T.stickToMax=null}updatedDataHandler(){let c=this.chart.navigator,h=this.navigatorSeries,T=c.reversedExtremes?Math.round(c.zoomedMin)===0:Math.round(c.zoomedMax)>=Math.round(c.size);c.stickToMax=M(this.chart.options.navigator&&this.chart.options.navigator.stickToMax,T),c.stickToMin=c.shouldStickToMin(this,c),h&&!c.hasNavigatorData&&(h.options.pointStart=this.xData[0],h.setData(this.options.data,!1,null,!1))}shouldStickToMin(c,h){let T=h.getBaseSeriesMin(c.xData[0]),I=c.xAxis,P=I.max,w=I.min,U=I.options.range;return!!(F(P)&&F(w))&&(U&&P-T>0?P-T{c.destroy&&c.destroy()}),["series","xAxis","yAxis","shades","outline","scrollbarTrack","scrollbarRifles","scrollbarGroup","scrollbar","navigatorGroup","rendered"].forEach(c=>{this[c]&&this[c].destroy&&this[c].destroy(),this[c]=null}),[this.handles].forEach(c=>{d(c)})}}return v}),r(n,"Accessibility/Components/NavigatorComponent.js",[n["Accessibility/AccessibilityComponent.js"],n["Accessibility/Utils/Announcer.js"],n["Accessibility/KeyboardNavigationHandler.js"],n["Stock/Navigator/Navigator.js"],n["Core/Animation/AnimationUtilities.js"],n["Core/Templating.js"],n["Core/Utilities.js"],n["Accessibility/Utils/HTMLUtilities.js"],n["Accessibility/Utils/ChartUtilities.js"]],function(i,o,a,s,l,u,_,g,b){let{animObject:R}=l,{format:m}=u,{clamp:E,pick:C,syncTimeout:y}=_,{getFakeMouseEvent:d}=g,{getAxisRangeDescription:f,fireEventOnWrappedOrUnwrappedElement:S}=b;return class extends i{init(){let O=this.chart,x=this;this.announcer=new o(O,"polite"),this.addEvent(s,"afterRender",function(){this.chart===x.chart&&this.chart.renderer&&y(()=>{x.proxyProvider.updateGroupProxyElementPositions("navigator"),x.updateHandleValues()},R(C(this.chart.renderer.globalAnimation,!0)).duration)})}onChartUpdate(){var D,F,k;let O=this.chart,x=O.options;if((D=x.navigator.accessibility)!=null&&D.enabled){let M=x.accessibility.landmarkVerbosity,A=(F=x.lang.accessibility)==null?void 0:F.navigator.groupLabel;this.proxyProvider.removeGroup("navigator"),this.proxyProvider.addGroup("navigator","div",{role:M==="all"?"region":"group","aria-label":m(A,{chart:O},O)});let N=(k=x.lang.accessibility)==null?void 0:k.navigator.handleLabel;[0,1].forEach(L=>{let v=this.getHandleByIx(L);if(v){let p=this.proxyProvider.addProxyElement("navigator",{click:v},"input",{type:"range","aria-label":m(N,{handleIx:L,chart:O},O)});this[L?"maxHandleProxy":"minHandleProxy"]=p.innerElement,p.innerElement.style.pointerEvents="none",p.innerElement.oninput=()=>this.updateNavigator()}}),this.updateHandleValues()}else this.proxyProvider.removeGroup("navigator")}getNavigatorHandleNavigation(O){let x=this,D=this.chart,F=O?this.maxHandleProxy:this.minHandleProxy,k=this.keyCodes;return new a(D,{keyCodeMap:[[[k.left,k.right,k.up,k.down],function(M){if(F){let A=M===k.left||M===k.up?-1:1;F.value=""+E(parseFloat(F.value)+A,0,100),x.updateNavigator(()=>{let N=x.getHandleByIx(O);N&&D.setFocusToElement(N,F)})}return this.response.success}]],init:()=>{D.setFocusToElement(this.getHandleByIx(O),F)},validate:()=>{var M;return!!(this.getHandleByIx(O)&&F&&((M=D.options.navigator.accessibility)!=null&&M.enabled))}})}getKeyboardNavigation(){return[this.getNavigatorHandleNavigation(0),this.getNavigatorHandleNavigation(1)]}destroy(){this.updateNavigatorThrottleTimer&&clearTimeout(this.updateNavigatorThrottleTimer),this.proxyProvider.removeGroup("navigator"),this.announcer&&this.announcer.destroy()}updateHandleValues(){let O=this.chart.navigator;if(O&&this.minHandleProxy&&this.maxHandleProxy){let x=O.size;this.minHandleProxy.value=""+Math.round(O.zoomedMin/x*100),this.maxHandleProxy.value=""+Math.round(O.zoomedMax/x*100)}}getHandleByIx(O){let x=this.chart.navigator;return x&&x.handles&&x.handles[O]}updateNavigator(O){this.updateNavigatorThrottleTimer&&clearTimeout(this.updateNavigatorThrottleTimer),this.updateNavigatorThrottleTimer=setTimeout((x=>{var M;let D=this.chart,{navigator:F,pointer:k}=D;if(F&&k&&this.minHandleProxy&&this.maxHandleProxy){let A=k.getChartPosition(),N=parseFloat(this.minHandleProxy.value)/100*F.size,L=parseFloat(this.maxHandleProxy.value)/100*F.size;[[0,"mousedown",F.zoomedMin],[0,"mousemove",N],[0,"mouseup",N],[1,"mousedown",F.zoomedMax],[1,"mousemove",L],[1,"mouseup",L]].forEach(([c,h,T])=>{var P;let I=(P=this.getHandleByIx(c))==null?void 0:P.element;I&&S(I,d(h,{x:A.left+F.left+T,y:A.top+F.top},I))}),x&&x();let v=(M=D.options.lang.accessibility)==null?void 0:M.navigator.changeAnnouncement,p=f(D.xAxis[0]);this.announcer.announce(m(v,{axisRangeDescription:p,chart:D},D))}}).bind(this,O),20)}}}),r(n,"Accessibility/Components/SeriesComponent/SeriesDescriber.js",[n["Accessibility/Components/AnnotationsA11y.js"],n["Accessibility/Utils/ChartUtilities.js"],n["Core/Templating.js"],n["Accessibility/Utils/HTMLUtilities.js"],n["Core/Utilities.js"]],function(i,o,a,s,l){let{getPointAnnotationTexts:u}=i,{getAxisDescription:_,getSeriesFirstPointElement:g,getSeriesA11yElement:b,unhideChartElementFromAT:R}=o,{format:m,numberFormat:E}=a,{reverseChildNodes:C,stripHTMLTagsFromString:y}=s,{find:d,isNumber:f,isString:S,pick:O,defined:x}=l;function D(N){let L=N.chart.options.accessibility.series.pointDescriptionEnabledThreshold;return!!(L!==!1&&N.points&&N.points.length>=+L)}function F(N,L){let v=N.series,p=v.chart,c=p.options.accessibility.point||{},h=v.options.accessibility&&v.options.accessibility.point||{},T=v.tooltipOptions||{},I=p.options.lang;return f(L)?E(L,h.valueDecimals||c.valueDecimals||T.valueDecimals||-1,I.decimalPoint,I.accessibility.thousandsSep||I.thousandsSep):L}function k(N,L){let v=N[L];return N.chart.langFormat("accessibility.series."+L+"Description",{name:_(v),series:N})}function M(N){let L=N.series,v=L.chart.series.length>1||L.options.name,p=function(I){let P=I.series,w=P.chart,U=P.options.accessibility,$=U&&U.point&&U.point.valueDescriptionFormat||w.options.accessibility.point.valueDescriptionFormat,Y=O(P.xAxis&&P.xAxis.options.accessibility&&P.xAxis.options.accessibility.enabled,!w.angular&&P.type!=="flowmap"),W=Y?function(z){let Q=function(G){let V=G.series,H=V.chart,K=V.options.accessibility&&V.options.accessibility.point||{},X=H.options.accessibility.point||{},ee=V.xAxis&&V.xAxis.dateTime;if(ee){let oe=ee.getXDateFormat(G.x||0,H.options.tooltip.dateTimeLabelFormats),te=K.dateFormatter&&K.dateFormatter(G)||X.dateFormatter&&X.dateFormatter(G)||K.dateFormat||X.dateFormat||oe;return H.time.dateFormat(te,G.x||0,void 0)}}(z),B=(z.series.xAxis||{}).categories&&x(z.category)&&(""+z.category).replace("
    "," "),j=x(z.id)&&0>(""+z.id).indexOf("highcharts-"),q="x, "+z.x;return z.name||Q||B||(j?z.id:q)}(I):"";return m($,{point:I,index:x(I.index)?I.index+1:"",xDescription:W,value:function(z){let Q=z.series,B=Q.chart.options.accessibility.point||{},j=Q.chart.options.accessibility&&Q.chart.options.accessibility.point||{},q=Q.tooltipOptions||{},G=j.valuePrefix||B.valuePrefix||q.valuePrefix||"",V=j.valueSuffix||B.valueSuffix||q.valueSuffix||"",H=z.value!==void 0?"value":"y",K=F(z,z[H]);return z.isNull?Q.chart.langFormat("accessibility.series.nullPointValue",{point:z}):Q.pointArrayMap?function(X,ee,oe){let te=ee||"",ne=oe||"",se=function(ie){let he=F(X,O(X[ie],X.options[ie]));return he!==void 0?ie+": "+te+he+ne:he};return X.series.pointArrayMap.reduce(function(ie,he){let Z=se(he);return Z?ie+(ie.length?", ":"")+Z:ie},"")}(z,G,V):G+K+V}(I),separator:Y?", ":""},w)}(N),c=N.options&&N.options.accessibility&&N.options.accessibility.description,h=v?" "+L.name+".":"",T=function(I){let P=I.series.chart,w=u(I);return w.length?P.langFormat("accessibility.series.pointAnnotationsDescription",{point:I,annotations:w}):""}(N);return N.accessibility=N.accessibility||{},N.accessibility.valueDescription=p,p+(c?" "+c:"")+h+(T?" "+T:"")}function A(N){let L=N.chart,v=L.types||[],p=function(Y){let W=(Y.options.accessibility||{}).description;return W&&Y.chart.langFormat("accessibility.series.description",{description:W,series:Y})||""}(N),c=function(Y){return L[Y]&&L[Y].length>1&&N[Y]},h=N.index+1,T=k(N,"xAxis"),I=k(N,"yAxis"),P={seriesNumber:h,series:N,chart:L},w=v.length>1?"Combination":"",U=L.langFormat("accessibility.series.summary."+N.type+w,P)||L.langFormat("accessibility.series.summary.default"+w,P),$=(c("yAxis")?" "+I+".":"")+(c("xAxis")?" "+T+".":"");return m(O(N.options.accessibility&&N.options.accessibility.descriptionFormat,L.options.accessibility.series.descriptionFormat,""),{seriesDescription:U,authorDescription:p?" "+p:"",axisDescription:$,series:N,chart:L,seriesNumber:h},void 0)}return{defaultPointDescriptionFormatter:M,defaultSeriesDescriptionFormatter:A,describeSeries:function(N){let L=N.chart,v=g(N),p=b(N),c=L.is3d&&L.is3d();p&&(p.lastChild!==v||c||C(p),function(h){let T=function(w){let U=w.options.accessibility||{};return!D(w)&&!U.exposeAsGroupOnly}(h),I=function(w){let U=w.chart.options.accessibility.keyboardNavigation.seriesNavigation;return!!(w.points&&(w.points.length<+U.pointNavigationEnabledThreshold||U.pointNavigationEnabledThreshold===!1))}(h),P=h.chart.options.accessibility.point.describeNull;(T||I)&&h.points.forEach(w=>{let U=w.graphic&&w.graphic.element||function(Y){let W=Y.series,z=W&&W.chart,Q=W&&W.is("sunburst"),B=Y.isNull,j=z&&z.options.accessibility.point.describeNull;return B&&!Q&&j}(w)&&function(Y){let W=Y.series,z=function(G){let V=G.index;return G.series&&G.series.data&&x(V)&&d(G.series.data,function(H){return!!(H&&H.index!==void 0&&H.index>V&&H.graphic&&H.graphic.element)})||null}(Y),Q=z&&z.graphic,B=Q?Q.parentGroup:W.graph||W.group,j=z?{x:O(Y.plotX,z.plotX,0),y:O(Y.plotY,z.plotY,0)}:{x:O(Y.plotX,0),y:O(Y.plotY,0)},q=function(G,V){let H=G.series.chart.renderer.rect(V.x,V.y,1,1);return H.attr({class:"highcharts-a11y-mock-point",fill:"none",opacity:0,"fill-opacity":0,"stroke-opacity":0}),H}(Y,j);if(B&&B.element)return Y.graphic=q,Y.hasMockGraphic=!0,q.add(B),B.element.insertBefore(q.element,Q?Q.element:null),q.element}(w),$=w.options&&w.options.accessibility&&w.options.accessibility.enabled===!1;if(U){if(w.isNull&&!P){U.setAttribute("aria-hidden",!0);return}U.setAttribute("tabindex","-1"),h.chart.styledMode||(U.style.outline="none"),T&&!$?function(Y,W){var q,G,V;let z=Y.series,Q=((q=z.options.accessibility)==null?void 0:q.point)||{},B=z.chart.options.accessibility.point||{},j=y(S(Q.descriptionFormat)&&m(Q.descriptionFormat,Y,z.chart)||((G=Q.descriptionFormatter)==null?void 0:G.call(Q,Y))||S(B.descriptionFormat)&&m(B.descriptionFormat,Y,z.chart)||((V=B.descriptionFormatter)==null?void 0:V.call(B,Y))||M(Y),z.chart.renderer.forExport);W.setAttribute("role","img"),W.setAttribute("aria-label",j)}(w,U):U.setAttribute("aria-hidden",!0)}})}(N),R(L,p),function(h){let T=h.chart,I=T.options.chart,P=I.options3d&&I.options3d.enabled,w=T.series.length>1,U=T.options.accessibility.series.describeSingleSeries,$=(h.options.accessibility||{}).exposeAsGroupOnly;return!(P&&w)&&(w||U||$||D(h))}(N)?function(h,T){let I=h.options.accessibility||{},P=h.chart.options.accessibility,w=P.landmarkVerbosity;I.exposeAsGroupOnly?T.setAttribute("role","img"):w==="all"?T.setAttribute("role","region"):T.setAttribute("role","group"),T.setAttribute("tabindex","-1"),h.chart.styledMode||(T.style.outline="none"),T.setAttribute("aria-label",y(P.series.descriptionFormatter&&P.series.descriptionFormatter(h)||A(h),h.chart.renderer.forExport))}(N,p):p.removeAttribute("aria-label"))}}}),r(n,"Accessibility/Components/SeriesComponent/NewDataAnnouncer.js",[n["Core/Globals.js"],n["Core/Utilities.js"],n["Accessibility/Utils/Announcer.js"],n["Accessibility/Utils/ChartUtilities.js"],n["Accessibility/Utils/EventProvider.js"],n["Accessibility/Components/SeriesComponent/SeriesDescriber.js"]],function(i,o,a,s,l,u){let{composed:_}=i,{addEvent:g,defined:b,pushUnique:R}=o,{getChartTitle:m}=s,{defaultPointDescriptionFormatter:E,defaultSeriesDescriptionFormatter:C}=u;function y(f){return!!f.options.accessibility.announceNewData.enabled}class d{constructor(S){this.dirty={allSeries:{}},this.lastAnnouncementTime=0,this.chart=S}init(){let S=this.chart,O=S.options.accessibility.announceNewData.interruptUser?"assertive":"polite";this.lastAnnouncementTime=0,this.dirty={allSeries:{}},this.eventProvider=new l,this.announcer=new a(S,O),this.addEventListeners()}destroy(){this.eventProvider.removeAddedEvents(),this.announcer.destroy()}addEventListeners(){let S=this,O=this.chart,x=this.eventProvider;x.addEvent(O,"afterApplyDrilldown",function(){S.lastAnnouncementTime=0}),x.addEvent(O,"afterAddSeries",function(D){S.onSeriesAdded(D.series)}),x.addEvent(O,"redraw",function(){S.announceDirtyData()})}onSeriesAdded(S){y(this.chart)&&(this.dirty.hasDirty=!0,this.dirty.allSeries[S.name+S.index]=S,this.dirty.newSeries=b(this.dirty.newSeries)?void 0:S)}announceDirtyData(){let S=this.chart,O=this;if(S.options.accessibility.announceNewData&&this.dirty.hasDirty){let x=this.dirty.newPoint;x&&(x=function(D){let F=D.series.data.filter(k=>D.x===k.x&&D.y===k.y);return F.length===1?F[0]:D}(x)),this.queueAnnouncement(Object.keys(this.dirty.allSeries).map(D=>O.dirty.allSeries[D]),this.dirty.newSeries,x),this.dirty={allSeries:{}}}}queueAnnouncement(S,O,x){let D=this.chart.options.accessibility.announceNewData;if(D.enabled){let F=+new Date,k=F-this.lastAnnouncementTime,M=Math.max(0,D.minAnnounceInterval-k),A=function(L,v){let p=(L||[]).concat(v||[]).reduce((c,h)=>(c[h.name+h.index]=h,c),{});return Object.keys(p).map(c=>p[c])}(this.queuedAnnouncement&&this.queuedAnnouncement.series,S),N=this.buildAnnouncementMessage(A,O,x);N&&(this.queuedAnnouncement&&clearTimeout(this.queuedAnnouncementTimer),this.queuedAnnouncement={time:F,message:N,series:A},this.queuedAnnouncementTimer=setTimeout(()=>{this&&this.announcer&&(this.lastAnnouncementTime=+new Date,this.announcer.announce(this.queuedAnnouncement.message),delete this.queuedAnnouncement,delete this.queuedAnnouncementTimer)},M))}}buildAnnouncementMessage(S,O,x){let D=this.chart,F=D.options.accessibility.announceNewData;if(F.announcementFormatter){let N=F.announcementFormatter(S,O,x);if(N!==!1)return N.length?N:null}let k=i.charts&&i.charts.length>1?"Multiple":"Single",M=O?"newSeriesAnnounce"+k:x?"newPointAnnounce"+k:"newDataAnnounce",A=m(D);return D.langFormat("accessibility.announceNewData."+M,{chartTitle:A,seriesDesc:O?C(O):null,pointDesc:x?E(x):null,point:x,series:O})}}return function(f){function S(x){var k;let D=this.chart,F=(k=D.accessibility)==null?void 0:k.components.series.newDataAnnouncer;F&&F.chart===D&&y(D)&&(F.dirty.newPoint=b(F.dirty.newPoint)?void 0:x.point)}function O(){var F;let x=this.chart,D=(F=x.accessibility)==null?void 0:F.components.series.newDataAnnouncer;D&&D.chart===x&&y(x)&&(D.dirty.hasDirty=!0,D.dirty.allSeries[this.name+this.index]=this)}f.compose=function(x){R(_,"A11y.NDA")&&(g(x,"addPoint",S),g(x,"updatedData",O))}}(d||(d={})),d}),r(n,"Accessibility/ProxyElement.js",[n["Core/Globals.js"],n["Core/Utilities.js"],n["Accessibility/Utils/EventProvider.js"],n["Accessibility/Utils/ChartUtilities.js"],n["Accessibility/Utils/HTMLUtilities.js"]],function(i,o,a,s,l){let{doc:u}=i,{attr:_,css:g,merge:b}=o,{fireEventOnWrappedOrUnwrappedElement:R}=s,{cloneMouseEvent:m,cloneTouchEvent:E,getFakeMouseEvent:C,removeElement:y}=l;return class{constructor(d,f,S="button",O,x){this.chart=d,this.target=f,this.eventProvider=new a;let D=this.innerElement=u.createElement(S),F=this.element=O?u.createElement(O):D;d.styledMode||this.hideElementVisually(D),O&&(O!=="li"||d.styledMode||(F.style.listStyle="none"),F.appendChild(D),this.element=F),this.updateTarget(f,x)}click(){let d=this.getTargetPosition();d.x+=d.width/2,d.y+=d.height/2;let f=C("click",d);R(this.target.click,f)}updateTarget(d,f){this.target=d,this.updateCSSClassName();let S=f||{};Object.keys(S).forEach(x=>{S[x]===null&&delete S[x]});let O=this.getTargetAttr(d.click,"aria-label");_(this.innerElement,b(O?{"aria-label":O}:{},S)),this.eventProvider.removeAddedEvents(),this.addProxyEventsToElement(this.innerElement,d.click),this.refreshPosition()}refreshPosition(){let d=this.getTargetPosition();g(this.innerElement,{width:(d.width||1)+"px",height:(d.height||1)+"px",left:(Math.round(d.x)||0)+"px",top:(Math.round(d.y)||0)+"px"})}remove(){this.eventProvider.removeAddedEvents(),y(this.element)}updateCSSClassName(){let d=D=>D.indexOf("highcharts-no-tooltip")>-1,f=this.chart.legend,S=f.group&&f.group.div,O=d(S&&S.className||""),x=d(this.getTargetAttr(this.target.click,"class")||"");this.innerElement.className=O||x?"highcharts-a11y-proxy-element highcharts-no-tooltip":"highcharts-a11y-proxy-element"}addProxyEventsToElement(d,f){["click","touchstart","touchend","touchcancel","touchmove","mouseover","mouseenter","mouseleave","mouseout"].forEach(S=>{let O=S.indexOf("touch")===0;this.eventProvider.addEvent(d,S,x=>{let D=O?E(x):m(x);f&&R(f,D),x.stopPropagation(),O||x.preventDefault()},{passive:!1})})}hideElementVisually(d){g(d,{borderWidth:0,backgroundColor:"transparent",cursor:"pointer",outline:"none",opacity:.001,filter:"alpha(opacity=1)",zIndex:999,overflow:"hidden",padding:0,margin:0,display:"block",position:"absolute","-ms-filter":"progid:DXImageTransform.Microsoft.Alpha(Opacity=1)"})}getTargetPosition(){let d=this.target.click,f=d.element?d.element:d,S=this.target.visual||f,O=this.chart.renderTo,x=this.chart.pointer;if(O&&(S!=null&&S.getBoundingClientRect)&&x){let D=S.getBoundingClientRect(),F=x.getChartPosition();return{x:(D.left-F.left)/F.scaleX,y:(D.top-F.top)/F.scaleY,width:D.right/F.scaleX-D.left/F.scaleX,height:D.bottom/F.scaleY-D.top/F.scaleY}}return{x:0,y:0,width:1,height:1}}getTargetAttr(d,f){return d.element?d.element.getAttribute(f):d.getAttribute(f)}}}),r(n,"Accessibility/ProxyProvider.js",[n["Core/Globals.js"],n["Core/Utilities.js"],n["Accessibility/Utils/ChartUtilities.js"],n["Accessibility/Utils/DOMElementProvider.js"],n["Accessibility/Utils/HTMLUtilities.js"],n["Accessibility/ProxyElement.js"]],function(i,o,a,s,l,u){let{doc:_}=i,{attr:g,css:b}=o,{unhideChartElementFromAT:R}=a,{removeChildNodes:m}=l;return class{constructor(E){this.chart=E,this.domElementProvider=new s,this.groups={},this.groupOrder=[],this.beforeChartProxyPosContainer=this.createProxyPosContainer("before"),this.afterChartProxyPosContainer=this.createProxyPosContainer("after"),this.update()}addProxyElement(E,C,y="button",d){let f=this.groups[E];if(!f)throw Error("ProxyProvider.addProxyElement: Invalid group key "+E);let S=f.type==="ul"||f.type==="ol"?"li":void 0,O=new u(this.chart,C,y,S,d);return f.proxyContainerElement.appendChild(O.element),f.proxyElements.push(O),O}addGroup(E,C="div",y){let d,f=this.groups[E];if(f)return f.groupElement;let S=this.domElementProvider.createElement(C);return y&&y.role&&C!=="div"?(d=this.domElementProvider.createElement("div")).appendChild(S):d=S,d.className="highcharts-a11y-proxy-group highcharts-a11y-proxy-group-"+E.replace(/\W/g,"-"),this.groups[E]={proxyContainerElement:S,groupElement:d,type:C,proxyElements:[]},g(d,y||{}),C==="ul"&&S.setAttribute("role","list"),this.afterChartProxyPosContainer.appendChild(d),this.updateGroupOrder(this.groupOrder),d}updateGroupAttrs(E,C){let y=this.groups[E];if(!y)throw Error("ProxyProvider.updateGroupAttrs: Invalid group key "+E);g(y.groupElement,C)}updateGroupOrder(E){if(this.groupOrder=E.slice(),this.isDOMOrderGroupOrder())return;let C=E.indexOf("series"),y=C>-1?E.slice(0,C):E,d=C>-1?E.slice(C+1):[],f=_.activeElement;["before","after"].forEach(S=>{let O=this[S==="before"?"beforeChartProxyPosContainer":"afterChartProxyPosContainer"];m(O),(S==="before"?y:d).forEach(x=>{let D=this.groups[x];D&&O.appendChild(D.groupElement)})}),(this.beforeChartProxyPosContainer.contains(f)||this.afterChartProxyPosContainer.contains(f))&&f&&f.focus&&f.focus()}clearGroup(E){let C=this.groups[E];if(!C)throw Error("ProxyProvider.clearGroup: Invalid group key "+E);m(C.proxyContainerElement)}removeGroup(E){let C=this.groups[E];C&&(this.domElementProvider.removeElement(C.groupElement),C.groupElement!==C.proxyContainerElement&&this.domElementProvider.removeElement(C.proxyContainerElement),delete this.groups[E])}update(){this.updatePosContainerPositions(),this.updateGroupOrder(this.groupOrder),this.updateProxyElementPositions()}updateProxyElementPositions(){Object.keys(this.groups).forEach(this.updateGroupProxyElementPositions.bind(this))}updateGroupProxyElementPositions(E){let C=this.groups[E];C&&C.proxyElements.forEach(y=>y.refreshPosition())}destroy(){this.domElementProvider.destroyCreatedElements()}createProxyPosContainer(E){let C=this.domElementProvider.createElement("div");return C.setAttribute("aria-hidden","false"),C.className="highcharts-a11y-proxy-container"+(E?"-"+E:""),b(C,{top:"0",left:"0"}),this.chart.styledMode||(C.style.whiteSpace="nowrap",C.style.position="absolute"),C}getCurrentGroupOrderInDOM(){let E=f=>{let S=Object.keys(this.groups),O=S.length;for(;O--;){let x=S[O],D=this.groups[x];if(D&&f===D.groupElement)return x}},C=f=>{let S=[],O=f.children;for(let x=0;xd==="series"||!!this.groups[d]),y=E.length;if(y!==C.length)return!1;for(;y--;)if(E[y]!==C[y])return!1;return!0}updatePosContainerPositions(){let E=this.chart;if(E.renderer.forExport)return;let C=E.renderer.box;E.container.insertBefore(this.afterChartProxyPosContainer,C.nextSibling),E.container.insertBefore(this.beforeChartProxyPosContainer,C),R(this.chart,this.afterChartProxyPosContainer),R(this.chart,this.beforeChartProxyPosContainer)}}}),r(n,"Accessibility/Components/RangeSelectorComponent.js",[n["Accessibility/AccessibilityComponent.js"],n["Accessibility/Utils/Announcer.js"],n["Accessibility/Utils/ChartUtilities.js"],n["Accessibility/KeyboardNavigationHandler.js"],n["Core/Utilities.js"]],function(i,o,a,s,l){let{unhideChartElementFromAT:u,getAxisRangeDescription:_}=a,{addEvent:g,attr:b}=l;class R extends i{init(){let E=this.chart;this.announcer=new o(E,"polite")}onChartUpdate(){let E=this.chart,C=this,y=E.rangeSelector;y&&(this.updateSelectorVisibility(),this.setDropdownAttrs(),y.buttons&&y.buttons.length&&y.buttons.forEach(d=>{C.setRangeButtonAttrs(d)}),y.maxInput&&y.minInput&&["minInput","maxInput"].forEach(function(d,f){let S=y[d];S&&(u(E,S),C.setRangeInputAttrs(S,"accessibility.rangeSelector."+(f?"max":"min")+"InputLabel"))}))}updateSelectorVisibility(){let E=this.chart,C=E.rangeSelector,y=C&&C.dropdown,d=C&&C.buttons||[],f=S=>S.setAttribute("aria-hidden",!0);C&&C.hasVisibleDropdown&&y?(u(E,y),d.forEach(S=>f(S.element))):(y&&f(y),d.forEach(S=>u(E,S.element)))}setDropdownAttrs(){let E=this.chart,C=E.rangeSelector&&E.rangeSelector.dropdown;if(C){let y=E.langFormat("accessibility.rangeSelector.dropdownLabel",{rangeTitle:E.options.lang.rangeSelectorZoom});C.setAttribute("aria-label",y),C.setAttribute("tabindex",-1)}}setRangeButtonAttrs(E){b(E.element,{tabindex:-1,role:"button"})}setRangeInputAttrs(E,C){let y=this.chart;b(E,{tabindex:-1,"aria-label":y.langFormat(C,{chart:y})})}onButtonNavKbdArrowKey(E,C){let y=E.response,d=this.keyCodes,f=this.chart,S=f.options.accessibility.keyboardNavigation.wrapAround,O=C===d.left||C===d.up?-1:1;return f.highlightRangeSelectorButton(f.highlightedRangeSelectorItemIx+O)?y.success:S?(E.init(O),y.success):y[O>0?"next":"prev"]}onButtonNavKbdClick(E){let C=E.response,y=this.chart;return y.oldRangeSelectorItemState!==3&&this.fakeClickEvent(y.rangeSelector.buttons[y.highlightedRangeSelectorItemIx].element),C.success}onAfterBtnClick(){let E=this.chart,C=_(E.xAxis[0]),y=E.langFormat("accessibility.rangeSelector.clickButtonAnnouncement",{chart:E,axisRangeDescription:C});y&&this.announcer.announce(y)}onInputKbdMove(E){let C=this.chart,y=C.rangeSelector,d=C.highlightedInputRangeIx=(C.highlightedInputRangeIx||0)+E;if(d>1||d<0){if(C.accessibility)return C.accessibility.keyboardNavigation.exiting=!0,C.accessibility.keyboardNavigation.tabindexContainer.focus(),C.accessibility.keyboardNavigation.move(E)}else if(y){let f=y[d?"maxDateBox":"minDateBox"],S=y[d?"maxInput":"minInput"];f&&S&&C.setFocusToElement(f,S)}return!0}onInputNavInit(E){let C=this,y=this.chart,d=E>0?0:1,f=y.rangeSelector,S=f&&f[d?"maxDateBox":"minDateBox"],O=f&&f.minInput,x=f&&f.maxInput;if(y.highlightedInputRangeIx=d,S&&O&&x){y.setFocusToElement(S,d?x:O),this.removeInputKeydownHandler&&this.removeInputKeydownHandler();let D=M=>{(M.which||M.keyCode)===this.keyCodes.tab&&C.onInputKbdMove(M.shiftKey?-1:1)&&(M.preventDefault(),M.stopPropagation())},F=g(O,"keydown",D),k=g(x,"keydown",D);this.removeInputKeydownHandler=()=>{F(),k()}}}onInputNavTerminate(){let E=this.chart.rangeSelector||{};E.maxInput&&E.hideInput("max"),E.minInput&&E.hideInput("min"),this.removeInputKeydownHandler&&(this.removeInputKeydownHandler(),delete this.removeInputKeydownHandler)}initDropdownNav(){let E=this.chart,C=E.rangeSelector,y=C&&C.dropdown;C&&y&&(E.setFocusToElement(C.buttonGroup,y),this.removeDropdownKeydownHandler&&this.removeDropdownKeydownHandler(),this.removeDropdownKeydownHandler=g(y,"keydown",d=>{let f=(d.which||d.keyCode)===this.keyCodes.tab,S=E.accessibility;f&&(d.preventDefault(),d.stopPropagation(),S&&(S.keyboardNavigation.tabindexContainer.focus(),S.keyboardNavigation.move(d.shiftKey?-1:1)))}))}getRangeSelectorButtonNavigation(){let E=this.chart,C=this.keyCodes,y=this;return new s(E,{keyCodeMap:[[[C.left,C.right,C.up,C.down],function(d){return y.onButtonNavKbdArrowKey(this,d)}],[[C.enter,C.space],function(){return y.onButtonNavKbdClick(this)}]],validate:function(){return!!(E.rangeSelector&&E.rangeSelector.buttons&&E.rangeSelector.buttons.length)},init:function(d){let f=E.rangeSelector;if(f&&f.hasVisibleDropdown)y.initDropdownNav();else if(f){let S=f.buttons.length-1;E.highlightRangeSelectorButton(d>0?0:S)}},terminate:function(){y.removeDropdownKeydownHandler&&(y.removeDropdownKeydownHandler(),delete y.removeDropdownKeydownHandler)}})}getRangeSelectorInputNavigation(){let E=this.chart,C=this;return new s(E,{keyCodeMap:[],validate:function(){return!!(E.rangeSelector&&E.rangeSelector.inputGroup&&E.rangeSelector.inputGroup.element.style.visibility!=="hidden"&&E.options.rangeSelector.inputEnabled!==!1&&E.rangeSelector.minInput&&E.rangeSelector.maxInput)},init:function(y){C.onInputNavInit(y)},terminate:function(){C.onInputNavTerminate()}})}getKeyboardNavigation(){return[this.getRangeSelectorButtonNavigation(),this.getRangeSelectorInputNavigation()]}destroy(){this.removeDropdownKeydownHandler&&this.removeDropdownKeydownHandler(),this.removeInputKeydownHandler&&this.removeInputKeydownHandler(),this.announcer&&this.announcer.destroy()}}return function(m){function E(y){let d=this.rangeSelector&&this.rangeSelector.buttons||[],f=this.highlightedRangeSelectorItemIx,S=this.rangeSelector&&this.rangeSelector.selected;return f!==void 0&&d[f]&&f!==S&&d[f].setState(this.oldRangeSelectorItemState||0),this.highlightedRangeSelectorItemIx=y,!!d[y]&&(this.setFocusToElement(d[y].box,d[y].element),y!==S&&(this.oldRangeSelectorItemState=d[y].state,d[y].setState(1)),!0)}function C(){let y=this.chart.accessibility;if(y&&y.components.rangeSelector)return y.components.rangeSelector.onAfterBtnClick()}m.compose=function(y,d){let f=y.prototype;f.highlightRangeSelectorButton||(f.highlightRangeSelectorButton=E,g(d,"afterBtnClick",C))}}(R||(R={})),R}),r(n,"Accessibility/Components/SeriesComponent/ForcedMarkers.js",[n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o){var a;let{composed:s}=i,{addEvent:l,merge:u,pushUnique:_}=o;return function(g){function b(f){u(!0,f,{marker:{enabled:!0,states:{normal:{opacity:0}}}})}function R(f){return f.marker.states&&f.marker.states.normal&&f.marker.states.normal.opacity}function m(f){return!!(f._hasPointMarkers&&f.points&&f.points.length)}function E(){this.chart.styledMode&&(this.markerGroup&&this.markerGroup[this.a11yMarkersForced?"addClass":"removeClass"]("highcharts-a11y-markers-hidden"),m(this)&&this.points.forEach(f=>{f.graphic&&(f.graphic[f.hasForcedA11yMarker?"addClass":"removeClass"]("highcharts-a11y-marker-hidden"),f.graphic[f.hasForcedA11yMarker===!1?"addClass":"removeClass"]("highcharts-a11y-marker-visible"))}))}function C(f){this.resetA11yMarkerOptions=u(f.options.marker||{},this.userOptions.marker||{})}function y(){let f=this.options;(function(S){let O=S.chart.options.accessibility.enabled,x=(S.options.accessibility&&S.options.accessibility.enabled)!==!1;return O&&x&&function(D){let F=D.chart.options.accessibility;return D.points.length-1;N.highlightedPoint===this&&p!==v&&!h&&v&&v.focus&&v.focus()})}onDrillupAll(){let A,N=this.lastDrilledDownPoint,L=this.chart,v=N&&y(L,N.seriesName);N&&v&&m(N.x)&&m(N.y)&&(A=C(v,N.x,N.y)),A=A||x(L),L.container&&L.container.focus(),A&&A.highlight&&A.highlight(!1)}getKeyboardNavigationHandler(){let A=this,N=this.keyCodes,L=this.chart,v=L.inverted;return new u(L,{keyCodeMap:[[v?[N.up,N.down]:[N.left,N.right],function(p){return A.onKbdSideways(this,p)}],[v?[N.left,N.right]:[N.up,N.down],function(p){return A.onKbdVertical(this,p)}],[[N.enter,N.space],function(p,c){let h=L.highlightedPoint;return h&&(c.point=h,E(h.series,"click",c),h.firePointEvent("click")),this.response.success}],[[N.home],function(){return F(L),this.response.success}],[[N.end],function(){return D(L),this.response.success}],[[N.pageDown,N.pageUp],function(p){return L.highlightAdjacentSeries(p===N.pageDown),this.response.success}]],init:function(){return A.onHandlerInit(this)},validate:function(){return!!x(L)},terminate:function(){return A.onHandlerTerminate()}})}onKbdSideways(A,N){let L=this.keyCodes,v=N===L.right||N===L.down;return this.attemptHighlightAdjacentPoint(A,v)}onHandlerInit(A){let N=this.chart;return N.options.accessibility.keyboardNavigation.seriesNavigation.rememberPointFocus&&N.highlightedPoint?N.highlightedPoint.highlight():F(N),A.response.success}onKbdVertical(A,N){let L=this.chart,v=this.keyCodes,p=N===v.down||N===v.right,c=L.options.accessibility.keyboardNavigation.seriesNavigation;if(c.mode&&c.mode==="serialize")return this.attemptHighlightAdjacentPoint(A,p);let h=L.highlightedPoint&&L.highlightedPoint.series.keyboardMoveVertical?"highlightAdjacentPointVertical":"highlightAdjacentSeries";return L[h](p),A.response.success}onHandlerTerminate(){let A=this.chart,N=A.options.accessibility.keyboardNavigation;A.tooltip&&A.tooltip.hide(0);let L=A.highlightedPoint&&A.highlightedPoint.series;L&&L.onMouseOut&&L.onMouseOut(),A.highlightedPoint&&A.highlightedPoint.onMouseOut&&A.highlightedPoint.onMouseOut(),N.seriesNavigation.rememberPointFocus||delete A.highlightedPoint}attemptHighlightAdjacentPoint(A,N){let L=this.chart,v=L.options.accessibility.keyboardNavigation.wrapAround;return L.highlightAdjacentPoint(N)||v&&(N?F(L):D(L))?A.response.success:A.response[N?"next":"prev"]}onSeriesDestroy(A){let N=this.chart;N.highlightedPoint&&N.highlightedPoint.series===A&&(delete N.highlightedPoint,N.focusElement&&N.focusElement.removeFocusBorder())}destroy(){this.eventProvider.removeAddedEvents()}}return function(M){function A(c){let h,T,I=this.series,P=this.highlightedPoint,w=P&&f(P)||0,U=P&&P.series.points||[],$=this.series&&this.series[this.series.length-1],Y=$&&$.points&&$.points[$.points.length-1];if(!I[0]||!I[0].points)return!1;if(P){if(h=I[P.series.index+(c?1:-1)],(T=U[w+(c?1:-1)])||!h||(T=h.points[c?0:h.points.length-1]),!T)return!1}else T=c?I[0].points[0]:Y;return O(T)?(S(h=T.series)?this.highlightedPoint=c?h.points[h.points.length-1]:h.points[0]:this.highlightedPoint=T,this.highlightAdjacentPoint(c)):T.highlight()}function N(c){let h=this.highlightedPoint,T=1/0,I;return!!(m(h.plotX)&&m(h.plotY))&&(this.series.forEach(P=>{S(P)||P.points.forEach(w=>{if(!m(w.plotY)||!m(w.plotX)||w===h)return;let U=w.plotY-h.plotY,$=Math.abs(w.plotX-h.plotX),Y=Math.abs(U)*Math.abs(U)+$*$*4;P.yAxis&&P.yAxis.reversed&&(U*=-1),!(U<=0&&c||U>=0&&!c||Y<5||O(w))&&Y!(m(H.plotX)&&m(H.plotY));if(!V($)){for(;G--;)!V(B=Y.points[G])&&(q=($.plotX-B.plotX)*($.plotX-B.plotX)*4+($.plotY-B.plotY)*($.plotY-B.plotY)*1)=0;--P)if(!O(T[P]))return T[P].highlight()}return!1}M.compose=function(c,h,T){let I=c.prototype,P=h.prototype,w=T.prototype;I.highlightAdjacentPoint||(I.highlightAdjacentPoint=A,I.highlightAdjacentPointVertical=N,I.highlightAdjacentSeries=L,P.highlight=v,w.keyboardMoveVertical=!0,["column","gantt","pie"].forEach(U=>{b[U]&&(b[U].prototype.keyboardMoveVertical=!1)}),w.highlightNextValidPoint=p)}}(k||(k={})),k}),r(n,"Accessibility/Components/SeriesComponent/SeriesComponent.js",[n["Accessibility/AccessibilityComponent.js"],n["Accessibility/Utils/ChartUtilities.js"],n["Accessibility/Components/SeriesComponent/ForcedMarkers.js"],n["Accessibility/Components/SeriesComponent/NewDataAnnouncer.js"],n["Accessibility/Components/SeriesComponent/SeriesDescriber.js"],n["Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js"]],function(i,o,a,s,l,u){let{hideSeriesFromAT:_}=o,{describeSeries:g}=l;return class extends i{static compose(b,R,m){s.compose(m),a.compose(m),u.compose(b,R,m)}init(){this.newDataAnnouncer=new s(this.chart),this.newDataAnnouncer.init(),this.keyboardNavigation=new u(this.chart,this.keyCodes),this.keyboardNavigation.init(),this.hideTooltipFromATWhenShown(),this.hideSeriesLabelsFromATWhenShown()}hideTooltipFromATWhenShown(){let b=this;this.chart.tooltip&&this.addEvent(this.chart.tooltip.constructor,"refresh",function(){this.chart===b.chart&&this.label&&this.label.element&&this.label.element.setAttribute("aria-hidden",!0)})}hideSeriesLabelsFromATWhenShown(){this.addEvent(this.chart,"afterDrawSeriesLabels",function(){this.series.forEach(function(b){b.labelBySeries&&b.labelBySeries.attr("aria-hidden",!0)})})}onChartRender(){this.chart.series.forEach(function(b){(b.options.accessibility&&b.options.accessibility.enabled)!==!1&&b.visible&&b.data.length!==0?g(b):_(b)})}getKeyboardNavigation(){return this.keyboardNavigation.getKeyboardNavigationHandler()}destroy(){this.newDataAnnouncer.destroy(),this.keyboardNavigation.destroy()}}}),r(n,"Accessibility/Components/ZoomComponent.js",[n["Accessibility/AccessibilityComponent.js"],n["Accessibility/Utils/ChartUtilities.js"],n["Accessibility/Utils/HTMLUtilities.js"],n["Accessibility/KeyboardNavigationHandler.js"],n["Core/Utilities.js"]],function(i,o,a,s,l){let{unhideChartElementFromAT:u}=o,{getFakeMouseEvent:_}=a,{attr:g,pick:b}=l;return class extends i{constructor(){super(...arguments),this.focusedMapNavButtonIx=-1}init(){let R=this,m=this.chart;this.proxyProvider.addGroup("zoom","div"),["afterShowResetZoom","afterApplyDrilldown","drillupall"].forEach(E=>{R.addEvent(m,E,function(){R.updateProxyOverlays()})})}onChartUpdate(){let R=this.chart,m=this;R.mapNavigation&&R.mapNavigation.navButtons.forEach((E,C)=>{u(R,E.element),m.setMapNavButtonAttrs(E.element,"accessibility.zoom.mapZoom"+(C?"Out":"In"))})}setMapNavButtonAttrs(R,m){let E=this.chart;g(R,{tabindex:-1,role:"button","aria-label":E.langFormat(m,{chart:E})})}onChartRender(){this.updateProxyOverlays()}updateProxyOverlays(){let R=this.chart;if(this.proxyProvider.clearGroup("zoom"),R.resetZoomButton&&this.createZoomProxyButton(R.resetZoomButton,"resetZoomProxyButton",R.langFormat("accessibility.zoom.resetZoomButton",{chart:R})),R.drillUpButton&&R.breadcrumbs&&R.breadcrumbs.list){let m=R.breadcrumbs.list[R.breadcrumbs.list.length-1];this.createZoomProxyButton(R.drillUpButton,"drillUpProxyButton",R.langFormat("accessibility.drillUpButton",{chart:R,buttonText:R.breadcrumbs.getButtonText(m)}))}}createZoomProxyButton(R,m,E){this[m]=this.proxyProvider.addProxyElement("zoom",{click:R},"button",{"aria-label":E,tabindex:-1})}getMapZoomNavigation(){let R=this.keyCodes,m=this.chart,E=this;return new s(m,{keyCodeMap:[[[R.up,R.down,R.left,R.right],function(C){return E.onMapKbdArrow(this,C)}],[[R.tab],function(C,y){return E.onMapKbdTab(this,y)}],[[R.space,R.enter],function(){return E.onMapKbdClick(this)}]],validate:function(){return!!(m.mapView&&m.mapNavigation&&m.mapNavigation.navButtons.length)},init:function(C){return E.onMapNavInit(C)}})}onMapKbdArrow(R,m){let E=this.chart,C=this.keyCodes,y=E.container,d=m===C.up||m===C.down,f=m===C.left||m===C.up?1:-1,S=(d?E.plotHeight:E.plotWidth)/10*f,O=10*Math.random(),x={x:y.offsetLeft+E.plotLeft+E.plotWidth/2+O,y:y.offsetTop+E.plotTop+E.plotHeight/2+O},D=d?{x:x.x,y:x.y+S}:{x:x.x+S,y:x.y};return[_("mousedown",x),_("mousemove",D),_("mouseup",D)].forEach(F=>y.dispatchEvent(F)),R.response.success}onMapKbdTab(R,m){let E=this.chart,C=R.response,y=m.shiftKey,d=y&&!this.focusedMapNavButtonIx||!y&&this.focusedMapNavButtonIx;if(E.mapNavigation.navButtons[this.focusedMapNavButtonIx].setState(0),d)return E.mapView&&E.mapView.zoomBy(),C[y?"prev":"next"];this.focusedMapNavButtonIx+=y?-1:1;let f=E.mapNavigation.navButtons[this.focusedMapNavButtonIx];return E.setFocusToElement(f.box,f.element),f.setState(2),C.success}onMapKbdClick(R){let m=this.chart.mapNavigation.navButtons[this.focusedMapNavButtonIx].element;return this.fakeClickEvent(m),R.response.success}onMapNavInit(R){let m=this.chart,E=m.mapNavigation.navButtons[0],C=m.mapNavigation.navButtons[1],y=R>0?E:C;m.setFocusToElement(y.box,y.element),y.setState(2),this.focusedMapNavButtonIx=R>0?0:1}simpleButtonNavigation(R,m,E){let C=this.keyCodes,y=this,d=this.chart;return new s(d,{keyCodeMap:[[[C.tab,C.up,C.down,C.left,C.right],function(f,S){let O=f===C.tab&&S.shiftKey||f===C.left||f===C.up;return this.response[O?"prev":"next"]}],[[C.space,C.enter],function(){return b(E(this,d),this.response.success)}]],validate:function(){return d[R]&&d[R].box&&y[m].innerElement},init:function(){d.setFocusToElement(d[R].box,y[m].innerElement)}})}getKeyboardNavigation(){return[this.simpleButtonNavigation("resetZoomButton","resetZoomProxyButton",function(R,m){m.zoomOut()}),this.simpleButtonNavigation("drillUpButton","drillUpProxyButton",function(R,m){return m.drillUp(),R.response.prev}),this.getMapZoomNavigation()]}}}),r(n,"Accessibility/HighContrastMode.js",[n["Core/Globals.js"]],function(i){let{doc:o,isMS:a,win:s}=i;return{isHighContrastModeActive:function(){let l=/(Edg)/.test(s.navigator.userAgent);if(s.matchMedia&&l)return s.matchMedia("(-ms-high-contrast: active)").matches;if(a&&s.getComputedStyle){let u=o.createElement("div");u.style.backgroundImage="url(data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)",o.body.appendChild(u);let _=(u.currentStyle||s.getComputedStyle(u)).backgroundImage;return o.body.removeChild(u),_==="none"}return s.matchMedia&&s.matchMedia("(forced-colors: active)").matches},setHighContrastTheme:function(l){var g;l.highContrastModeActive=!0;let u=l.options.accessibility.highContrastTheme;l.update(u,!1);let _=((g=u.colors)==null?void 0:g.length)>1;l.series.forEach(function(b){let R=u.plotOptions[b.type]||{},m=_&&b.colorIndex!==void 0?u.colors[b.colorIndex]:R.color||"window",E={color:R.color||"windowText",colors:_?u.colors:[R.color||"windowText"],borderColor:R.borderColor||"window",fillColor:m};b.update(E,!1),b.points&&b.points.forEach(function(C){C.options&&C.options.color&&C.update({color:R.color||"windowText",borderColor:R.borderColor||"window"},!1)})}),l.redraw()}}}),r(n,"Accessibility/HighContrastTheme.js",[],function(){return{chart:{backgroundColor:"window"},title:{style:{color:"windowText"}},subtitle:{style:{color:"windowText"}},colorAxis:{minColor:"windowText",maxColor:"windowText",stops:[],dataClasses:[]},colors:["windowText"],xAxis:{gridLineColor:"windowText",labels:{style:{color:"windowText"}},lineColor:"windowText",minorGridLineColor:"windowText",tickColor:"windowText",title:{style:{color:"windowText"}}},yAxis:{gridLineColor:"windowText",labels:{style:{color:"windowText"}},lineColor:"windowText",minorGridLineColor:"windowText",tickColor:"windowText",title:{style:{color:"windowText"}}},tooltip:{backgroundColor:"window",borderColor:"windowText",style:{color:"windowText"}},plotOptions:{series:{lineColor:"windowText",fillColor:"window",borderColor:"windowText",edgeColor:"windowText",borderWidth:1,dataLabels:{connectorColor:"windowText",color:"windowText",style:{color:"windowText",textOutline:"none"}},marker:{lineColor:"windowText",fillColor:"windowText"}},pie:{color:"window",colors:["window"],borderColor:"windowText",borderWidth:1},boxplot:{fillColor:"window"},candlestick:{lineColor:"windowText",fillColor:"window"},errorbar:{fillColor:"window"}},legend:{backgroundColor:"window",itemStyle:{color:"windowText"},itemHoverStyle:{color:"windowText"},itemHiddenStyle:{color:"#555"},title:{style:{color:"windowText"}}},credits:{style:{color:"windowText"}},drilldown:{activeAxisLabelStyle:{color:"windowText"},activeDataLabelStyle:{color:"windowText"}},navigation:{buttonOptions:{symbolStroke:"windowText",theme:{fill:"window"}}},rangeSelector:{buttonTheme:{fill:"window",stroke:"windowText",style:{color:"windowText"},states:{hover:{fill:"window",stroke:"windowText",style:{color:"windowText"}},select:{fill:"#444",stroke:"windowText",style:{color:"windowText"}}}},inputBoxBorderColor:"windowText",inputStyle:{backgroundColor:"window",color:"windowText"},labelStyle:{color:"windowText"}},navigator:{handles:{backgroundColor:"window",borderColor:"windowText"},outlineColor:"windowText",maskFill:"transparent",series:{color:"windowText",lineColor:"windowText"},xAxis:{gridLineColor:"windowText"}},scrollbar:{barBackgroundColor:"#444",barBorderColor:"windowText",buttonArrowColor:"windowText",buttonBackgroundColor:"window",buttonBorderColor:"windowText",rifleColor:"windowText",trackBackgroundColor:"window",trackBorderColor:"windowText"}}}),r(n,"Accessibility/Options/A11yDefaults.js",[],function(){return{accessibility:{enabled:!0,screenReaderSection:{beforeChartFormat:"<{headingTagName}>{chartTitle}
    {typeDescription}
    {chartSubtitle}
    {chartLongdesc}
    {playAsSoundButton}
    {viewTableButton}
    {xAxisDescription}
    {yAxisDescription}
    {annotationsTitle}{annotationsList}
    ",afterChartFormat:"{endOfChartMarker}",axisRangeDateFormat:"%Y-%m-%d %H:%M:%S"},series:{descriptionFormat:"{seriesDescription}{authorDescription}{axisDescription}",describeSingleSeries:!1,pointDescriptionEnabledThreshold:200},point:{valueDescriptionFormat:"{xDescription}{separator}{value}.",describeNull:!0},landmarkVerbosity:"all",linkedDescription:'*[data-highcharts-chart="{index}"] + .highcharts-description',highContrastMode:"auto",keyboardNavigation:{enabled:!0,focusBorder:{enabled:!0,hideBrowserFocusOutline:!0,style:{color:"#334eff",lineWidth:2,borderRadius:3},margin:2},order:["series","zoom","rangeSelector","navigator","legend","chartMenu"],wrapAround:!0,seriesNavigation:{skipNullPoints:!0,pointNavigationEnabledThreshold:!1,rememberPointFocus:!1}},announceNewData:{enabled:!1,minAnnounceInterval:5e3,interruptUser:!1}},legend:{accessibility:{enabled:!0,keyboardNavigation:{enabled:!0}}},exporting:{accessibility:{enabled:!0}},navigator:{accessibility:{enabled:!0}}}}),r(n,"Accessibility/Options/LangDefaults.js",[],function(){return{accessibility:{defaultChartTitle:"Chart",chartContainerLabel:"{title}. Highcharts interactive chart.",svgContainerLabel:"Interactive chart",drillUpButton:"{buttonText}",credits:"Chart credits: {creditsStr}",thousandsSep:",",svgContainerTitle:"",graphicContainerLabel:"",screenReaderSection:{beforeRegionLabel:"",afterRegionLabel:"",annotations:{heading:"Chart annotations summary",descriptionSinglePoint:"{annotationText}. Related to {annotationPoint}",descriptionMultiplePoints:"{annotationText}. Related to {annotationPoint}{#each additionalAnnotationPoints}, also related to {this}{/each}",descriptionNoPoints:"{annotationText}"},endOfChartMarker:"End of interactive chart."},sonification:{playAsSoundButtonText:"Play as sound, {chartTitle}",playAsSoundClickAnnouncement:"Play"},legend:{legendLabelNoTitle:"Toggle series visibility, {chartTitle}",legendLabel:"Chart legend: {legendTitle}",legendItem:"Show {itemName}"},zoom:{mapZoomIn:"Zoom chart",mapZoomOut:"Zoom out chart",resetZoomButton:"Reset zoom"},rangeSelector:{dropdownLabel:"{rangeTitle}",minInputLabel:"Select start date.",maxInputLabel:"Select end date.",clickButtonAnnouncement:"Viewing {axisRangeDescription}"},navigator:{handleLabel:"{#eq handleIx 0}Start, percent{else}End, percent{/eq}",groupLabel:"Axis zoom",changeAnnouncement:"{axisRangeDescription}"},table:{viewAsDataTableButtonText:"View as data table, {chartTitle}",tableSummary:"Table representation of chart."},announceNewData:{newDataAnnounce:"Updated data for chart {chartTitle}",newSeriesAnnounceSingle:"New data series: {seriesDesc}",newPointAnnounceSingle:"New data point: {pointDesc}",newSeriesAnnounceMultiple:"New data series in chart {chartTitle}: {seriesDesc}",newPointAnnounceMultiple:"New data point in chart {chartTitle}: {pointDesc}"},seriesTypeDescriptions:{boxplot:"Box plot charts are typically used to display groups of statistical data. Each data point in the chart can have up to 5 values: minimum, lower quartile, median, upper quartile, and maximum.",arearange:"Arearange charts are line charts displaying a range between a lower and higher value for each point.",areasplinerange:"These charts are line charts displaying a range between a lower and higher value for each point.",bubble:"Bubble charts are scatter charts where each data point also has a size value.",columnrange:"Columnrange charts are column charts displaying a range between a lower and higher value for each point.",errorbar:"Errorbar series are used to display the variability of the data.",funnel:"Funnel charts are used to display reduction of data in stages.",pyramid:"Pyramid charts consist of a single pyramid with item heights corresponding to each point value.",waterfall:"A waterfall chart is a column chart where each column contributes towards a total end value."},chartTypes:{emptyChart:"Empty chart",mapTypeDescription:"Map of {mapTitle} with {numSeries} data series.",unknownMap:"Map of unspecified region with {numSeries} data series.",combinationChart:"Combination chart with {numSeries} data series.",defaultSingle:"Chart with {numPoints} data {#eq numPoints 1}point{else}points{/eq}.",defaultMultiple:"Chart with {numSeries} data series.",splineSingle:"Line chart with {numPoints} data {#eq numPoints 1}point{else}points{/eq}.",splineMultiple:"Line chart with {numSeries} lines.",lineSingle:"Line chart with {numPoints} data {#eq numPoints 1}point{else}points{/eq}.",lineMultiple:"Line chart with {numSeries} lines.",columnSingle:"Bar chart with {numPoints} {#eq numPoints 1}bar{else}bars{/eq}.",columnMultiple:"Bar chart with {numSeries} data series.",barSingle:"Bar chart with {numPoints} {#eq numPoints 1}bar{else}bars{/eq}.",barMultiple:"Bar chart with {numSeries} data series.",pieSingle:"Pie chart with {numPoints} {#eq numPoints 1}slice{else}slices{/eq}.",pieMultiple:"Pie chart with {numSeries} pies.",scatterSingle:"Scatter chart with {numPoints} {#eq numPoints 1}point{else}points{/eq}.",scatterMultiple:"Scatter chart with {numSeries} data series.",boxplotSingle:"Boxplot with {numPoints} {#eq numPoints 1}box{else}boxes{/eq}.",boxplotMultiple:"Boxplot with {numSeries} data series.",bubbleSingle:"Bubble chart with {numPoints} {#eq numPoints 1}bubbles{else}bubble{/eq}.",bubbleMultiple:"Bubble chart with {numSeries} data series."},axis:{xAxisDescriptionSingular:"The chart has 1 X axis displaying {names[0]}. {ranges[0]}",xAxisDescriptionPlural:"The chart has {numAxes} X axes displaying {#each names}{#unless @first},{/unless}{#if @last} and{/if} {this}{/each}.",yAxisDescriptionSingular:"The chart has 1 Y axis displaying {names[0]}. {ranges[0]}",yAxisDescriptionPlural:"The chart has {numAxes} Y axes displaying {#each names}{#unless @first},{/unless}{#if @last} and{/if} {this}{/each}.",timeRangeDays:"Data range: {range} days.",timeRangeHours:"Data range: {range} hours.",timeRangeMinutes:"Data range: {range} minutes.",timeRangeSeconds:"Data range: {range} seconds.",rangeFromTo:"Data ranges from {rangeFrom} to {rangeTo}.",rangeCategories:"Data range: {numCategories} categories."},exporting:{chartMenuLabel:"Chart menu",menuButtonLabel:"View chart menu, {chartTitle}"},series:{summary:{default:"{series.name}, series {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.",defaultCombination:"{series.name}, series {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.",line:"{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.",lineCombination:"{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.",spline:"{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.",splineCombination:"{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.",column:"{series.name}, bar series {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.",columnCombination:"{series.name}, series {seriesNumber} of {chart.series.length}. Bar series with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.",bar:"{series.name}, bar series {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.",barCombination:"{series.name}, series {seriesNumber} of {chart.series.length}. Bar series with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.",pie:"{series.name}, pie {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}slice{else}slices{/eq}.",pieCombination:"{series.name}, series {seriesNumber} of {chart.series.length}. Pie with {series.points.length} {#eq series.points.length 1}slice{else}slices{/eq}.",scatter:"{series.name}, scatter plot {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}point{else}points{/eq}.",scatterCombination:"{series.name}, series {seriesNumber} of {chart.series.length}, scatter plot with {series.points.length} {#eq series.points.length 1}point{else}points{/eq}.",boxplot:"{series.name}, boxplot {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}box{else}boxes{/eq}.",boxplotCombination:"{series.name}, series {seriesNumber} of {chart.series.length}. Boxplot with {series.points.length} {#eq series.points.length 1}box{else}boxes{/eq}.",bubble:"{series.name}, bubble series {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}bubble{else}bubbles{/eq}.",bubbleCombination:"{series.name}, series {seriesNumber} of {chart.series.length}. Bubble series with {series.points.length} {#eq series.points.length 1}bubble{else}bubbles{/eq}.",map:"{series.name}, map {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}area{else}areas{/eq}.",mapCombination:"{series.name}, series {seriesNumber} of {chart.series.length}. Map with {series.points.length} {#eq series.points.length 1}area{else}areas{/eq}.",mapline:"{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.",maplineCombination:"{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.",mapbubble:"{series.name}, bubble series {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}bubble{else}bubbles{/eq}.",mapbubbleCombination:"{series.name}, series {seriesNumber} of {chart.series.length}. Bubble series with {series.points.length} {#eq series.points.length 1}bubble{else}bubbles{/eq}."},description:"{description}",xAxisDescription:"X axis, {name}",yAxisDescription:"Y axis, {name}",nullPointValue:"No value",pointAnnotationsDescription:"{#each annotations}Annotation: {this}{/each}"}}}}),r(n,"Accessibility/Options/DeprecatedOptions.js",[n["Core/Utilities.js"]],function(i){let{error:o,pick:a}=i;function s(u,_,g){let b=u,R,m=0;for(;m<_.length-1;++m)b=b[R=_[m]]=a(b[R],{});b[_[_.length-1]]=g}function l(u,_,g,b){function R(C,y){return y.reduce(function(d,f){return d[f]},C)}let m=R(u.options,_),E=R(u.options,g);Object.keys(b).forEach(function(C){let y=m[C];y!==void 0&&(s(E,b[C],y),o(32,!1,u,{[_.join(".")+"."+C]:g.join(".")+"."+b[C].join(".")}))})}return function(u){(function(_){let g=_.options.chart,b=_.options.accessibility||{};["description","typeDescription"].forEach(function(R){g[R]&&(b[R]=g[R],o(32,!1,_,{[`chart.${R}`]:`use accessibility.${R}`}))})})(u),function(_){_.axes.forEach(function(g){let b=g.options;b&&b.description&&(b.accessibility=b.accessibility||{},b.accessibility.description=b.description,o(32,!1,_,{"axis.description":"use axis.accessibility.description"}))})}(u),u.series&&function(_){let g={description:["accessibility","description"],exposeElementToA11y:["accessibility","exposeAsGroupOnly"],pointDescriptionFormatter:["accessibility","point","descriptionFormatter"],skipKeyboardNavigation:["accessibility","keyboardNavigation","enabled"],"accessibility.pointDescriptionFormatter":["accessibility","point","descriptionFormatter"]};_.series.forEach(function(b){Object.keys(g).forEach(function(R){let m=b.options[R];R==="accessibility.pointDescriptionFormatter"&&(m=b.options.accessibility&&b.options.accessibility.pointDescriptionFormatter),m!==void 0&&(s(b.options,g[R],R==="skipKeyboardNavigation"?!m:m),o(32,!1,_,{[`series.${R}`]:"series."+g[R].join(".")}))})})}(u),l(u,["accessibility"],["accessibility"],{pointDateFormat:["point","dateFormat"],pointDateFormatter:["point","dateFormatter"],pointDescriptionFormatter:["point","descriptionFormatter"],pointDescriptionThreshold:["series","pointDescriptionEnabledThreshold"],pointNavigationThreshold:["keyboardNavigation","seriesNavigation","pointNavigationEnabledThreshold"],pointValueDecimals:["point","valueDecimals"],pointValuePrefix:["point","valuePrefix"],pointValueSuffix:["point","valueSuffix"],screenReaderSectionFormatter:["screenReaderSection","beforeChartFormatter"],describeSingleSeries:["series","describeSingleSeries"],seriesDescriptionFormatter:["series","descriptionFormatter"],onTableAnchorClick:["screenReaderSection","onViewDataTableClick"],axisRangeDateFormat:["screenReaderSection","axisRangeDateFormat"]}),l(u,["accessibility","keyboardNavigation"],["accessibility","keyboardNavigation","seriesNavigation"],{skipNullPoints:["skipNullPoints"],mode:["mode"]}),l(u,["lang","accessibility"],["lang","accessibility"],{legendItem:["legend","legendItem"],legendLabel:["legend","legendLabel"],mapZoomIn:["zoom","mapZoomIn"],mapZoomOut:["zoom","mapZoomOut"],resetZoomButton:["zoom","resetZoomButton"],screenReaderRegionLabel:["screenReaderSection","beforeRegionLabel"],rangeSelectorButton:["rangeSelector","buttonText"],rangeSelectorMaxInput:["rangeSelector","maxInputLabel"],rangeSelectorMinInput:["rangeSelector","minInputLabel"],svgContainerEnd:["screenReaderSection","endOfChartMarker"],viewAsDataTable:["table","viewAsDataTableButtonText"],tableSummary:["table","tableSummary"]})}}),r(n,"Accessibility/Accessibility.js",[n["Core/Defaults.js"],n["Core/Globals.js"],n["Core/Utilities.js"],n["Accessibility/Utils/HTMLUtilities.js"],n["Accessibility/A11yI18n.js"],n["Accessibility/Components/ContainerComponent.js"],n["Accessibility/FocusBorder.js"],n["Accessibility/Components/InfoRegionsComponent.js"],n["Accessibility/KeyboardNavigation.js"],n["Accessibility/Components/LegendComponent.js"],n["Accessibility/Components/MenuComponent.js"],n["Accessibility/Components/NavigatorComponent.js"],n["Accessibility/Components/SeriesComponent/NewDataAnnouncer.js"],n["Accessibility/ProxyProvider.js"],n["Accessibility/Components/RangeSelectorComponent.js"],n["Accessibility/Components/SeriesComponent/SeriesComponent.js"],n["Accessibility/Components/ZoomComponent.js"],n["Accessibility/HighContrastMode.js"],n["Accessibility/HighContrastTheme.js"],n["Accessibility/Options/A11yDefaults.js"],n["Accessibility/Options/LangDefaults.js"],n["Accessibility/Options/DeprecatedOptions.js"]],function(i,o,a,s,l,u,_,g,b,R,m,E,C,y,d,f,S,O,x,D,F,k){let{defaultOptions:M}=i,{doc:A}=o,{addEvent:N,extend:L,fireEvent:v,merge:p}=a,{removeElement:c}=s;class h{constructor(I){this.init(I)}init(I){if(this.chart=I,!A.addEventListener){this.zombie=!0,this.components={},I.renderTo.setAttribute("aria-hidden",!0);return}k(I),this.proxyProvider=new y(this.chart),this.initComponents(),this.keyboardNavigation=new b(I,this.components)}initComponents(){let I=this.chart,P=this.proxyProvider,w=I.options.accessibility;this.components={container:new u,infoRegions:new g,legend:new R,chartMenu:new m,rangeSelector:new d,series:new f,zoom:new S,navigator:new E},w.customComponents&&L(this.components,w.customComponents);let U=this.components;this.getComponentOrder().forEach(function($){U[$].initBase(I,P),U[$].init()})}getComponentOrder(){return this.components?this.components.series?["series"].concat(Object.keys(this.components).filter(I=>I!=="series")):Object.keys(this.components):[]}update(){let I=this.components,P=this.chart,w=P.options.accessibility;v(P,"beforeA11yUpdate"),P.types=this.getChartTypes();let U=w.keyboardNavigation.order;this.proxyProvider.updateGroupOrder(U),this.getComponentOrder().forEach(function($){I[$].onChartUpdate(),v(P,"afterA11yComponentUpdate",{name:$,component:I[$]})}),this.keyboardNavigation.update(U),!P.highContrastModeActive&&w.highContrastMode!==!1&&(O.isHighContrastModeActive()||w.highContrastMode===!0)&&O.setHighContrastTheme(P),v(P,"afterA11yUpdate",{accessibility:this})}destroy(){let I=this.chart||{},P=this.components;Object.keys(P).forEach(function(w){P[w].destroy(),P[w].destroyBase()}),this.proxyProvider&&this.proxyProvider.destroy(),I.announcerContainer&&c(I.announcerContainer),this.keyboardNavigation&&this.keyboardNavigation.destroy(),I.renderTo&&I.renderTo.setAttribute("aria-hidden",!0),I.focusElement&&I.focusElement.removeFocusBorder()}getChartTypes(){let I={};return this.chart.series.forEach(function(P){I[P.type]=1}),Object.keys(I)}}return function(T){function I(){this.accessibility&&this.accessibility.destroy()}function P(){this.a11yDirty&&this.renderTo&&(delete this.a11yDirty,this.updateA11yEnabled());let Y=this.accessibility;Y&&!Y.zombie&&(Y.proxyProvider.updateProxyElementPositions(),Y.getComponentOrder().forEach(function(W){Y.components[W].onChartRender()}))}function w(Y){let W=Y.options.accessibility;W&&(W.customComponents&&(this.options.accessibility.customComponents=W.customComponents,delete W.customComponents),p(!0,this.options.accessibility,W),this.accessibility&&this.accessibility.destroy&&(this.accessibility.destroy(),delete this.accessibility)),this.a11yDirty=!0}function U(){let Y=this.accessibility,W=this.options.accessibility;W&&W.enabled?Y&&!Y.zombie?Y.update():(this.accessibility=Y=new T(this),Y&&!Y.zombie&&Y.update()):Y?(Y.destroy&&Y.destroy(),delete this.accessibility):this.renderTo.setAttribute("aria-hidden",!0)}function $(){this.series.chart.accessibility&&(this.series.chart.a11yDirty=!0)}T.i18nFormat=l.i18nFormat,T.compose=function(Y,W,z,Q,B,j){b.compose(Y),C.compose(Q),R.compose(Y,W),m.compose(Y),f.compose(Y,z,Q),l.compose(Y),_.compose(Y,B),j&&d.compose(Y,j);let q=Y.prototype;q.updateA11yEnabled||(q.updateA11yEnabled=U,N(Y,"destroy",I),N(Y,"render",P),N(Y,"update",w),["addSeries","init"].forEach(G=>{N(Y,G,function(){this.a11yDirty=!0})}),["afterApplyDrilldown","drillupall"].forEach(G=>{N(Y,G,function(){let V=this.accessibility;V&&!V.zombie&&V.update()})}),N(z,"update",$),["update","updatedData","remove"].forEach(G=>{N(Q,G,function(){this.chart.accessibility&&(this.chart.a11yDirty=!0)})}))}}(h||(h={})),p(!0,M,D,{accessibility:{highContrastTheme:x},lang:F}),h}),r(n,"masters/modules/accessibility.src.js",[n["Core/Globals.js"],n["Accessibility/Accessibility.js"],n["Accessibility/AccessibilityComponent.js"],n["Accessibility/Utils/ChartUtilities.js"],n["Accessibility/Utils/HTMLUtilities.js"],n["Accessibility/KeyboardNavigationHandler.js"],n["Accessibility/Components/SeriesComponent/SeriesDescriber.js"]],function(i,o,a,s,l,u,_){return i.i18nFormat=o.i18nFormat,i.A11yChartUtilities=s,i.A11yHTMLUtilities=l,i.AccessibilityComponent=a,i.KeyboardNavigationHandler=u,i.SeriesAccessibilityDescriber=_,o.compose(i.Chart,i.Legend,i.Point,i.Series,i.SVGElement,i.RangeSelector),i})})})(zw);var A3=zw.exports;const N3=Dn(A3);var $w={exports:{}};(function(e){(function(t){e.exports?(t.default=t,e.exports=t):t(typeof Highcharts<"u"?Highcharts:void 0)})(function(t){var n=t?t._modules:{};function r(i,o,a,s){i.hasOwnProperty(o)||(i[o]=s.apply(null,a),typeof CustomEvent=="function"&&window.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:o,module:i[o]}})))}r(n,"Core/Chart/ChartNavigationComposition.js",[],function(){var i;return function(o){o.compose=function(s){return s.navigation||(s.navigation=new a(s)),s};class a{constructor(l){this.updates=[],this.chart=l}addUpdate(l){this.chart.navigation.updates.push(l)}update(l,u){this.updates.forEach(_=>{_.call(this.chart,l,u)})}}o.Additions=a}(i||(i={})),i}),r(n,"Extensions/Exporting/ExportingDefaults.js",[n["Core/Globals.js"]],function(i){let{isTouchDevice:o}=i;return{exporting:{allowTableSorting:!0,type:"image/png",url:"https://export.highcharts.com/",pdfFont:{normal:void 0,bold:void 0,bolditalic:void 0,italic:void 0},printMaxWidth:780,scale:2,buttons:{contextButton:{className:"highcharts-contextbutton",menuClassName:"highcharts-contextmenu",symbol:"menu",titleKey:"contextButtonTitle",menuItems:["viewFullscreen","printChart","separator","downloadPNG","downloadJPEG","downloadPDF","downloadSVG"]}},menuItemDefinitions:{viewFullscreen:{textKey:"viewFullscreen",onclick:function(){this.fullscreen&&this.fullscreen.toggle()}},printChart:{textKey:"printChart",onclick:function(){this.print()}},separator:{separator:!0},downloadPNG:{textKey:"downloadPNG",onclick:function(){this.exportChart()}},downloadJPEG:{textKey:"downloadJPEG",onclick:function(){this.exportChart({type:"image/jpeg"})}},downloadPDF:{textKey:"downloadPDF",onclick:function(){this.exportChart({type:"application/pdf"})}},downloadSVG:{textKey:"downloadSVG",onclick:function(){this.exportChart({type:"image/svg+xml"})}}}},lang:{viewFullscreen:"View in full screen",exitFullscreen:"Exit from full screen",printChart:"Print chart",downloadPNG:"Download PNG image",downloadJPEG:"Download JPEG image",downloadPDF:"Download PDF document",downloadSVG:"Download SVG vector image",contextButtonTitle:"Chart context menu"},navigation:{buttonOptions:{symbolSize:14,symbolX:14.5,symbolY:13.5,align:"right",buttonSpacing:3,height:28,verticalAlign:"top",width:28,symbolFill:"#666666",symbolStroke:"#666666",symbolStrokeWidth:3,theme:{padding:5}},menuStyle:{border:"none",borderRadius:"3px",background:"#ffffff",padding:"0.5em"},menuItemStyle:{background:"none",borderRadius:"3px",color:"#333333",padding:"0.5em",fontSize:o?"0.9em":"0.8em",transition:"background 250ms, color 250ms"},menuItemHoverStyle:{background:"#f2f2f2"}}}}),r(n,"Extensions/Exporting/ExportingSymbols.js",[],function(){var i;return function(o){let a=[];function s(u,_,g,b){return[["M",u,_+2.5],["L",u+g,_+2.5],["M",u,_+b/2+.5],["L",u+g,_+b/2+.5],["M",u,_+b-1.5],["L",u+g,_+b-1.5]]}function l(u,_,g,b){let R=b/3-2;return[].concat(this.circle(g-R,_,R,R),this.circle(g-R,_+R+4,R,R),this.circle(g-R,_+2*(R+4),R,R))}o.compose=function(u){if(a.indexOf(u)===-1){a.push(u);let _=u.prototype.symbols;_.menu=s,_.menuball=l.bind(_)}}}(i||(i={})),i}),r(n,"Extensions/Exporting/Fullscreen.js",[n["Core/Renderer/HTML/AST.js"],n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o,a){let{composed:s}=o,{addEvent:l,fireEvent:u,pushUnique:_}=a;function g(){this.fullscreen=new b(this)}class b{static compose(m){_(s,"Fullscreen")&&l(m,"beforeRender",g)}constructor(m){this.chart=m,this.isOpen=!1;let E=m.renderTo;!this.browserProps&&(typeof E.requestFullscreen=="function"?this.browserProps={fullscreenChange:"fullscreenchange",requestFullscreen:"requestFullscreen",exitFullscreen:"exitFullscreen"}:E.mozRequestFullScreen?this.browserProps={fullscreenChange:"mozfullscreenchange",requestFullscreen:"mozRequestFullScreen",exitFullscreen:"mozCancelFullScreen"}:E.webkitRequestFullScreen?this.browserProps={fullscreenChange:"webkitfullscreenchange",requestFullscreen:"webkitRequestFullScreen",exitFullscreen:"webkitExitFullscreen"}:E.msRequestFullscreen&&(this.browserProps={fullscreenChange:"MSFullscreenChange",requestFullscreen:"msRequestFullscreen",exitFullscreen:"msExitFullscreen"}))}close(){let m=this,E=m.chart,C=E.options.chart;u(E,"fullscreenClose",null,function(){m.isOpen&&m.browserProps&&E.container.ownerDocument instanceof Document&&E.container.ownerDocument[m.browserProps.exitFullscreen](),m.unbindFullscreenEvent&&(m.unbindFullscreenEvent=m.unbindFullscreenEvent()),E.setSize(m.origWidth,m.origHeight,!1),m.origWidth=void 0,m.origHeight=void 0,C.width=m.origWidthOption,C.height=m.origHeightOption,m.origWidthOption=void 0,m.origHeightOption=void 0,m.isOpen=!1,m.setButtonText()})}open(){let m=this,E=m.chart,C=E.options.chart;u(E,"fullscreenOpen",null,function(){if(C&&(m.origWidthOption=C.width,m.origHeightOption=C.height),m.origWidth=E.chartWidth,m.origHeight=E.chartHeight,m.browserProps){let y=l(E.container.ownerDocument,m.browserProps.fullscreenChange,function(){m.isOpen?(m.isOpen=!1,m.close()):(E.setSize(null,null,!1),m.isOpen=!0,m.setButtonText())}),d=l(E,"destroy",y);m.unbindFullscreenEvent=()=>{y(),d()};let f=E.renderTo[m.browserProps.requestFullscreen]();f&&f.catch(function(){alert("Full screen is not supported inside a frame.")})}})}setButtonText(){let m=this.chart,E=m.exportDivElements,C=m.options.exporting,y=C&&C.buttons&&C.buttons.contextButton.menuItems,d=m.options.lang;if(C&&C.menuItemDefinitions&&d&&d.exitFullscreen&&d.viewFullscreen&&y&&E){let f=E[y.indexOf("viewFullscreen")];f&&i.setElementHTML(f,this.isOpen?d.exitFullscreen:C.menuItemDefinitions.viewFullscreen.text||d.viewFullscreen)}}toggle(){this.isOpen?this.close():this.open()}}return b}),r(n,"Core/HttpUtilities.js",[n["Core/Globals.js"],n["Core/Utilities.js"]],function(i,o){let{win:a}=i,{discardElement:s,objectEach:l}=o,u={ajax:function(_){let g={json:"application/json",xml:"application/xml",text:"text/plain",octet:"application/octet-stream"},b=new XMLHttpRequest;function R(m,E){_.error&&_.error(m,E)}if(!_.url)return!1;b.open((_.type||"get").toUpperCase(),_.url,!0),_.headers&&_.headers["Content-Type"]||b.setRequestHeader("Content-Type",g[_.dataType||"json"]||g.text),l(_.headers,function(m,E){b.setRequestHeader(E,m)}),_.responseType&&(b.responseType=_.responseType),b.onreadystatechange=function(){let m;if(b.readyState===4){if(b.status===200){if(_.responseType!=="blob"&&(m=b.responseText,_.dataType==="json"))try{m=JSON.parse(m)}catch(E){if(E instanceof Error)return R(b,E)}return _.success&&_.success(m,b)}R(b,b.responseText)}},_.data&&typeof _.data!="string"&&(_.data=JSON.stringify(_.data)),b.send(_.data)},getJSON:function(_,g){u.ajax({url:_,success:g,dataType:"json",headers:{"Content-Type":"text/plain"}})},post:function(_,g,b){let R=new a.FormData;l(g,function(C,y){R.append(y,C)}),R.append("b64","true");let{filename:m,type:E}=g;return a.fetch(_,{method:"POST",body:R,...b}).then(C=>{C.ok&&C.text().then(y=>{let d=document.createElement("a");d.href=`data:${E};base64,${y}`,d.download=m,d.click(),s(d)})})}};return u}),r(n,"Extensions/Exporting/Exporting.js",[n["Core/Renderer/HTML/AST.js"],n["Core/Chart/Chart.js"],n["Core/Chart/ChartNavigationComposition.js"],n["Core/Defaults.js"],n["Extensions/Exporting/ExportingDefaults.js"],n["Extensions/Exporting/ExportingSymbols.js"],n["Extensions/Exporting/Fullscreen.js"],n["Core/Globals.js"],n["Core/HttpUtilities.js"],n["Core/Utilities.js"]],function(i,o,a,s,l,u,_,g,b,R){var m;let{defaultOptions:E}=s,{doc:C,SVG_NS:y,win:d}=g,{addEvent:f,css:S,createElement:O,discardElement:x,extend:D,find:F,fireEvent:k,isObject:M,merge:A,objectEach:N,pick:L,removeEvent:v,uniqueKey:p}=R;return function(c){let h,T=[/-/,/^(clipPath|cssText|d|height|width)$/,/^font$/,/[lL]ogical(Width|Height)$/,/^parentRule$/,/^(cssRules|ownerRules)$/,/perspective/,/TapHighlightColor/,/^transition/,/^length$/,/^[0-9]+$/],I=["fill","stroke","strokeLinecap","strokeLinejoin","strokeWidth","textAnchor","x","y"];c.inlineAllowlist=[];let P=["clipPath","defs","desc"];function w(te){let ne,se,ie=this,he=ie.renderer,Z=A(ie.options.navigation.buttonOptions,te),J=Z.onclick,ae=Z.menuItems,ue=Z.symbolSize||12;if(ie.btnCount||(ie.btnCount=0),ie.exportDivElements||(ie.exportDivElements=[],ie.exportSVGElements=[]),Z.enabled===!1||!Z.theme)return;let de=Z.theme;ie.styledMode||(de.fill=L(de.fill,"#ffffff"),de.stroke=L(de.stroke,"none")),J?se=function(me){me&&me.stopPropagation(),J.call(ie,me)}:ae&&(se=function(me){me&&me.stopPropagation(),ie.contextMenu(le.menuClassName,ae,le.translateX||0,le.translateY||0,le.width||0,le.height||0,le),le.setState(2)}),Z.text&&Z.symbol?de.paddingLeft=L(de.paddingLeft,30):Z.text||D(de,{width:Z.width,height:Z.height,padding:0}),ie.styledMode||(de["stroke-linecap"]="round",de.fill=L(de.fill,"#ffffff"),de.stroke=L(de.stroke,"none"));let le=he.button(Z.text,0,0,se,de,void 0,void 0,void 0,void 0,Z.useHTML).addClass(te.className).attr({title:L(ie.options.lang[Z._titleKey||Z.titleKey],"")});le.menuClassName=te.menuClassName||"highcharts-menu-"+ie.btnCount++,Z.symbol&&(ne=he.symbol(Z.symbol,Z.symbolX-ue/2,Z.symbolY-ue/2,ue,ue,{width:ue,height:ue}).addClass("highcharts-button-symbol").attr({zIndex:1}).add(le),ie.styledMode||ne.attr({stroke:Z.symbolStroke,fill:Z.symbolFill,"stroke-width":Z.symbolStrokeWidth||1})),le.add(ie.exportingGroup).align(D(Z,{width:le.width,x:L(Z.x,ie.buttonOffset)}),!0,"spacingBox"),ie.buttonOffset+=((le.width||0)+Z.buttonSpacing)*(Z.align==="right"?-1:1),ie.exportSVGElements.push(le,ne)}function U(){if(!this.printReverseInfo)return;let{childNodes:te,origDisplay:ne,resetParams:se}=this.printReverseInfo;this.moveContainers(this.renderTo),[].forEach.call(te,function(ie,he){ie.nodeType===1&&(ie.style.display=ne[he]||"")}),this.isPrinting=!1,se&&this.setSize.apply(this,se),delete this.printReverseInfo,h=void 0,k(this,"afterPrint")}function $(){var ie;let te=C.body,ne=this.options.exporting.printMaxWidth,se={childNodes:te.childNodes,origDisplay:[],resetParams:void 0};this.isPrinting=!0,(ie=this.pointer)==null||ie.reset(void 0,0),k(this,"beforePrint"),ne&&this.chartWidth>ne&&(se.resetParams=[this.options.chart.width,void 0,!1],this.setSize(ne,void 0,!1)),[].forEach.call(se.childNodes,function(he,Z){he.nodeType===1&&(se.origDisplay[Z]=he.style.display,he.style.display="none")}),this.moveContainers(te),this.printReverseInfo=se}function Y(te){te.renderExporting(),f(te,"redraw",te.renderExporting),f(te,"destroy",te.destroyExport)}function W(te,ne,se,ie,he,Z,J){var ye;let ae=this,ue=ae.options.navigation,de=ae.chartWidth,le=ae.chartHeight,me="cache-"+te,ge=Math.max(he,Z),_e,be=ae[me];be||(ae.exportContextMenu=ae[me]=be=O("div",{className:te},{position:"absolute",zIndex:1e3,padding:ge+"px",pointerEvents:"auto",...ae.renderer.style},((ye=ae.scrollablePlotArea)==null?void 0:ye.fixedDiv)||ae.container),_e=O("ul",{className:"highcharts-menu"},ae.styledMode?{}:{listStyle:"none",margin:0,padding:0},be),ae.styledMode||S(_e,D({MozBoxShadow:"3px 3px 10px #888",WebkitBoxShadow:"3px 3px 10px #888",boxShadow:"3px 3px 10px #888"},ue.menuStyle)),be.hideMenu=function(){S(be,{display:"none"}),J&&J.setState(0),ae.openMenu=!1,S(ae.renderTo,{overflow:"hidden"}),S(ae.container,{overflow:"hidden"}),R.clearTimeout(be.hideTimer),k(ae,"exportMenuHidden")},ae.exportEvents.push(f(be,"mouseleave",function(){be.hideTimer=d.setTimeout(be.hideMenu,500)}),f(be,"mouseenter",function(){R.clearTimeout(be.hideTimer)}),f(C,"mouseup",function(Re){var Ne;(Ne=ae.pointer)!=null&&Ne.inClass(Re.target,te)||be.hideMenu()}),f(be,"click",function(){ae.openMenu&&be.hideMenu()})),ne.forEach(function(Re){if(typeof Re=="string"&&(Re=ae.options.exporting.menuItemDefinitions[Re]),M(Re,!0)){let Ne;Re.separator?Ne=O("hr",void 0,void 0,_e):(Re.textKey==="viewData"&&ae.isDataTableVisible&&(Re.textKey="hideData"),Ne=O("li",{className:"highcharts-menu-item",onclick:function(xe){xe&&xe.stopPropagation(),be.hideMenu(),typeof Re!="string"&&Re.onclick&&Re.onclick.apply(ae,arguments)}},void 0,_e),i.setElementHTML(Ne,Re.text||ae.options.lang[Re.textKey]),ae.styledMode||(Ne.onmouseover=function(){S(this,ue.menuItemHoverStyle)},Ne.onmouseout=function(){S(this,ue.menuItemStyle)},S(Ne,D({cursor:"pointer"},ue.menuItemStyle||{})))),ae.exportDivElements.push(Ne)}}),ae.exportDivElements.push(_e,be),ae.exportMenuWidth=be.offsetWidth,ae.exportMenuHeight=be.offsetHeight);let Te={display:"block"};se+ae.exportMenuWidth>de?Te.right=de-se-he-ge+"px":Te.left=se-ge+"px",ie+Z+ae.exportMenuHeight>le&&J.alignOptions.verticalAlign!=="top"?Te.bottom=le-ie-ge+"px":Te.top=ie+Z-ge+"px",S(be,Te),S(ae.renderTo,{overflow:""}),S(ae.container,{overflow:""}),ae.openMenu=!0,k(ae,"exportMenuShown")}function z(te){let ne,se=te?te.target:this,ie=se.exportSVGElements,he=se.exportDivElements,Z=se.exportEvents;ie&&(ie.forEach((J,ae)=>{J&&(J.onclick=J.ontouchstart=null,se[ne="cache-"+J.menuClassName]&&delete se[ne],ie[ae]=J.destroy())}),ie.length=0),se.exportingGroup&&(se.exportingGroup.destroy(),delete se.exportingGroup),he&&(he.forEach(function(J,ae){J&&(R.clearTimeout(J.hideTimer),v(J,"mouseleave"),he[ae]=J.onmouseout=J.onmouseover=J.ontouchstart=J.onclick=null,x(J))}),he.length=0),Z&&(Z.forEach(function(J){J()}),Z.length=0)}function Q(te,ne){let se=this.getSVGForExport(te,ne);te=A(this.options.exporting,te),b.post(te.url,{filename:te.filename?te.filename.replace(/\//g,"-"):this.getFilename(),type:te.type,width:te.width,scale:te.scale,svg:se},te.fetchOptions)}function B(){return this.styledMode&&this.inlineStyles(),this.container.innerHTML}function j(){let te=this.userOptions.title&&this.userOptions.title.text,ne=this.options.exporting.filename;return ne?ne.replace(/\//g,"-"):(typeof te=="string"&&(ne=te.toLowerCase().replace(/<\/?[^>]+(>|$)/g,"").replace(/[\s_]+/g,"-").replace(/[^a-z0-9\-]/g,"").replace(/^[\-]+/g,"").replace(/[\-]+/g,"-").substr(0,24).replace(/[\-]+$/g,"")),(!ne||ne.length<5)&&(ne="chart"),ne)}function q(te){let ne,se,ie=A(this.options,te);ie.plotOptions=A(this.userOptions.plotOptions,te&&te.plotOptions),ie.time=A(this.userOptions.time,te&&te.time);let he=O("div",null,{position:"absolute",top:"-9999em",width:this.chartWidth+"px",height:this.chartHeight+"px"},C.body),Z=this.renderTo.style.width,J=this.renderTo.style.height,ae=ie.exporting.sourceWidth||ie.chart.width||/px$/.test(Z)&&parseInt(Z,10)||(ie.isGantt?800:600),ue=ie.exporting.sourceHeight||ie.chart.height||/px$/.test(J)&&parseInt(J,10)||400;D(ie.chart,{animation:!1,renderTo:he,forExport:!0,renderer:"SVGRenderer",width:ae,height:ue}),ie.exporting.enabled=!1,delete ie.data,ie.series=[],this.series.forEach(function(me){(se=A(me.userOptions,{animation:!1,enableMouseTracking:!1,showCheckbox:!1,visible:me.visible})).isInternal||ie.series.push(se)});let de={};this.axes.forEach(function(me){me.userOptions.internalKey||(me.userOptions.internalKey=p()),me.options.isInternal||(de[me.coll]||(de[me.coll]=!0,ie[me.coll]=[]),ie[me.coll].push(A(me.userOptions,{visible:me.visible})))}),ie.colorAxis=this.userOptions.colorAxis;let le=new this.constructor(ie,this.callback);return te&&["xAxis","yAxis","series"].forEach(function(me){let ge={};te[me]&&(ge[me]=te[me],le.update(ge))}),this.axes.forEach(function(me){let ge=F(le.axes,function(ye){return ye.options.internalKey===me.userOptions.internalKey}),_e=me.getExtremes(),be=_e.userMin,Te=_e.userMax;ge&&(be!==void 0&&be!==ge.min||Te!==void 0&&Te!==ge.max)&&ge.setExtremes(be,Te,!0,!1)}),ne=le.getChartHTML(),k(this,"getSVG",{chartCopy:le}),ne=this.sanitizeSVG(ne,ie),ie=null,le.destroy(),x(he),ne}function G(te,ne){let se=this.options.exporting;return this.getSVG(A({chart:{borderRadius:0}},se.chartOptions,ne,{exporting:{sourceWidth:te&&te.sourceWidth||se.sourceWidth,sourceHeight:te&&te.sourceHeight||se.sourceHeight}}))}function V(){let te,ne=c.inlineAllowlist,se={},ie=C.createElement("iframe");S(ie,{width:"1px",height:"1px",visibility:"hidden"}),C.body.appendChild(ie);let he=ie.contentWindow&&ie.contentWindow.document;he&&he.body.appendChild(he.createElementNS(y,"svg")),function Z(J){let ae,ue,de,le,me,ge,_e={};if(he&&J.nodeType===1&&P.indexOf(J.nodeName)===-1){if(ae=d.getComputedStyle(J,null),ue=J.nodeName==="svg"?{}:d.getComputedStyle(J.parentNode,null),!se[J.nodeName]){te=he.getElementsByTagName("svg")[0],de=he.createElementNS(J.namespaceURI,J.nodeName),te.appendChild(de);let be=d.getComputedStyle(de,null),Te={};for(let ye in be)typeof be[ye]!="string"||/^[0-9]+$/.test(ye)||(Te[ye]=be[ye]);se[J.nodeName]=Te,J.nodeName==="text"&&delete se.text.fill,te.removeChild(de)}for(let be in ae)(g.isFirefox||g.isMS||g.isSafari||Object.hasOwnProperty.call(ae,be))&&function(Te,ye){if(le=me=!1,ne.length){for(ge=ne.length;ge--&&!me;)me=ne[ge].test(ye);le=!me}for(ye==="transform"&&Te==="none"&&(le=!0),ge=T.length;ge--&&!le;)le=T[ge].test(ye)||typeof Te=="function";!le&&(ue[ye]!==Te||J.nodeName==="svg")&&se[J.nodeName][ye]!==Te&&(I&&I.indexOf(ye)===-1?_e[ye]=Te:Te&&J.setAttribute(ye.replace(/([A-Z])/g,function(Re,Ne){return"-"+Ne.toLowerCase()}),Te))}(ae[be],be);if(S(J,_e),J.nodeName==="svg"&&J.setAttribute("stroke-width","1px"),J.nodeName==="text")return;[].forEach.call(J.children||J.childNodes,Z)}}(this.container.querySelector("svg")),te.parentNode.removeChild(te),ie.parentNode.removeChild(ie)}function H(te){let{scrollablePlotArea:ne}=this;(ne?[ne.fixedDiv,ne.scrollingContainer]:[this.container]).forEach(function(se){te.appendChild(se)})}function K(){let te=this,ne=(se,ie,he)=>{te.isDirtyExporting=!0,A(!0,te.options[se],ie),L(he,!0)&&te.redraw()};te.exporting={update:function(se,ie){ne("exporting",se,ie)}},a.compose(te).navigation.addUpdate((se,ie)=>{ne("navigation",se,ie)})}function X(){let te=this;te.isPrinting||(h=te,g.isSafari||te.beforePrint(),setTimeout(()=>{d.focus(),d.print(),g.isSafari||setTimeout(()=>{te.afterPrint()},1e3)},1))}function ee(){let te=this,ne=te.options.exporting,se=ne.buttons,ie=te.isDirtyExporting||!te.exportSVGElements;te.buttonOffset=0,te.isDirtyExporting&&te.destroyExport(),ie&&ne.enabled!==!1&&(te.exportEvents=[],te.exportingGroup=te.exportingGroup||te.renderer.g("exporting-group").attr({zIndex:3}).add(),N(se,function(he){te.addButton(he)}),te.isDirtyExporting=!1)}function oe(te,ne){let se=te.indexOf("")+6,ie=te.substr(se);return te=te.substr(0,se),ne&&ne.exporting&&ne.exporting.allowHTML&&ie&&(ie=''+ie.replace(/(<(?:img|br).*?(?=\>))>/g,"$1 />")+"",te=te.replace("",ie+"")),te=te.replace(/zIndex="[^"]+"/g,"").replace(/symbolName="[^"]+"/g,"").replace(/jQuery[0-9]+="[^"]+"/g,"").replace(/url\(("|")(.*?)("|")\;?\)/g,"url($2)").replace(/url\([^#]+#/g,"url(#").replace(/3&&a.atob&&a.ArrayBuffer&&a.Uint8Array&&a.Blob&&l.createObjectURL){let b=a.atob(g[3]),R=new a.ArrayBuffer(b.length),m=new a.Uint8Array(R);for(let E=0;E2e6)&&!(_=u(_)||""))throw Error("Failed to convert to blob");if(R.download!==void 0)R.href=_,R.download=g,s.body.appendChild(R),R.click(),s.body.removeChild(R);else try{if(!a.open(_,"chart"))throw Error("Failed to open window")}catch{a.location.href=_}}}}),r(n,"Extensions/OfflineExporting/OfflineExportingDefaults.js",[],function(){return{libURL:"https://code.highcharts.com/11.4.0/lib/",menuItemDefinitions:{downloadPNG:{textKey:"downloadPNG",onclick:function(){this.exportChartLocal()}},downloadJPEG:{textKey:"downloadJPEG",onclick:function(){this.exportChartLocal({type:"image/jpeg"})}},downloadSVG:{textKey:"downloadSVG",onclick:function(){this.exportChartLocal({type:"image/svg+xml"})}},downloadPDF:{textKey:"downloadPDF",onclick:function(){this.exportChartLocal({type:"application/pdf"})}}}}}),r(n,"Extensions/OfflineExporting/OfflineExporting.js",[n["Core/Renderer/HTML/AST.js"],n["Core/Chart/Chart.js"],n["Core/Defaults.js"],n["Extensions/DownloadURL.js"],n["Extensions/Exporting/Exporting.js"],n["Core/Globals.js"],n["Core/HttpUtilities.js"],n["Extensions/OfflineExporting/OfflineExportingDefaults.js"],n["Core/Utilities.js"]],function(i,o,a,s,l,u,_,g,b){var R;let{defaultOptions:m}=a,{downloadURL:E}=s,{doc:C,win:y}=u,{ajax:d}=_,{addEvent:f,error:S,extend:O,fireEvent:x,merge:D}=b;return i.allowedAttributes.push("data-z-index","fill-opacity","filter","rx","ry","stroke-dasharray","stroke-linejoin","stroke-opacity","text-anchor","transform","version","viewBox","visibility","xmlns","xmlns:xlink"),i.allowedTags.push("desc","clippath","g"),function(F){function k(p,c){let h=this,T=D(h.options.exporting,p),I=function(P){T.fallbackToExportServer===!1?T.error?T.error(T,P):S(28,!0):h.exportChart(T)};if(u.isMS&&h.styledMode&&!l.inlineAllowlist.length&&l.inlineAllowlist.push(/^blockSize/,/^border/,/^caretColor/,/^color/,/^columnRule/,/^columnRuleColor/,/^cssFloat/,/^cursor/,/^fill$/,/^fillOpacity/,/^font/,/^inlineSize/,/^length/,/^lineHeight/,/^opacity/,/^outline/,/^parentRule/,/^rx$/,/^ry$/,/^stroke/,/^textAlign/,/^textAnchor/,/^textDecoration/,/^transform/,/^vectorEffect/,/^visibility/,/^x$/,/^y$/),u.isMS&&(T.type==="application/pdf"||h.container.getElementsByTagName("image").length&&T.type!=="image/svg+xml")||T.type==="application/pdf"&&[].some.call(h.container.getElementsByTagName("image"),function(P){let w=P.getAttribute("href");return w!==""&&typeof w=="string"&&w.indexOf("data:")!==0})){I(Error("Image type not supported for this chart/browser."));return}h.getSVGForLocalExport(T,c||{},I,function(P){P.indexOf("-1&&T.type!=="image/svg+xml"&&(u.isMS||T.type==="application/pdf")?I(Error("Image type not supported for charts with embedded HTML")):F.downloadSVGLocal(P,O({filename:h.getFilename()},T),I,()=>x(h,"exportChartLocalSuccess"))})}function M(p,c){let h=C.getElementsByTagName("head")[0],T=C.createElement("script");T.type="text/javascript",T.src=p,T.onload=c,T.onerror=function(){S("Error loading script "+p)},h.appendChild(T)}function A(p,c,h,T){let I=this,P=q=>I.sanitizeSVG(q,W),w=()=>{Q&&j===B&&T(P(Y.innerHTML))},U=(q,G,V)=>{++j,V.imageElement.setAttributeNS("http://www.w3.org/1999/xlink","href",q),w()},$,Y,W,z=null,Q,B=0,j=0;I.unbindGetSVG=f(I,"getSVG",q=>{W=q.chartCopy.options,B=(Q=(Y=q.chartCopy.container.cloneNode(!0))&&Y.getElementsByTagName("image")||[]).length}),I.getSVGForExport(p,c);try{if(!Q||!Q.length){T(P(Y.innerHTML));return}for(let q=0;q{setTimeout(function(){let B,j=C.createElement("canvas"),q=j.getContext&&j.getContext("2d");try{if(q){j.height=Y.height*T,j.width=Y.width*T,q.drawImage(Y,0,0,j.width,j.height);try{B=j.toDataURL(c),I(B,c,h,T)}catch{W(p,c,h,T)}}else w(p,c,h,T)}finally{$&&$(p,c,h,T)}},F.loadEventDeferDelay)},Q=()=>{U(p,c,h,T),$&&$(p,c,h,T)};W=()=>{Y=new y.Image,W=P,Y.crossOrigin="Anonymous",Y.onload=z,Y.onerror=Q,Y.src=p},Y.onload=z,Y.onerror=Q,Y.src=p}function L(p){let c=y.navigator.userAgent,h=c.indexOf("WebKit")>-1&&0>c.indexOf("Chrome");try{if(!h&&p.indexOf("I?"p":"l","pt",[I,P]);[].forEach.call(p.querySelectorAll('*[visibility="hidden"]'),function($){$.parentNode.removeChild($)});let U=p.querySelectorAll("linearGradient");for(let $=0;${$.textContent==="​"&&($.textContent=" ",$.setAttribute("dx",-5))}),w.svg(p,{x:0,y:0,width:I,height:P,removeInvalid:!0}).then(()=>T(w.output("datauristring")))}F.CanVGRenderer={},F.domurl=y.URL||y.webkitURL||y,F.loadEventDeferDelay=u.isMS?150:0,F.compose=function(p){let c=p.prototype;return c.exportChartLocal||(c.getSVGForLocalExport=A,c.exportChartLocal=k,D(!0,m.exporting,g)),p},F.downloadSVGLocal=function(p,c,h,T){let I=C.createElement("div"),P=c.type||"image/png",w=(c.filename||"chart")+"."+(P==="image/svg+xml"?"svg":P.split("/")[1]),U=c.scale||1,$,Y,W,z=c.libURL||m.exporting.libURL,Q=!0,B=c.pdfFont;z=z.slice(-1)!=="/"?z+"/":z;let j=(G,V)=>{let H,K,X=(te,ne)=>{y.jspdf.jsPDF.API.events.push(["initialized",function(){this.addFileToVFS(te,ne),this.addFont(te,"HighchartsFont",te),this.getFontList().HighchartsFont||this.setFont("HighchartsFont")}])};B&&(K=G.textContent||"",!/[^\u0000-\u007F\u200B]+/.test(K))&&(B=void 0);let ee=["normal","italic","bold","bolditalic"],oe=()=>{let te=ee.shift();if(!te)return V();let ne=B&&B[te];ne?d({url:ne,responseType:"blob",success:(se,ie)=>{let he=new FileReader;he.onloadend=function(){if(typeof this.result=="string"){let Z=this.result.split(",")[1];X(te,Z),te==="normal"&&(H=Z)}oe()},he.readAsDataURL(ie.response)},error:oe}):(H&&X(te,H),oe())};oe()},q=()=>{let G,V;i.setElementHTML(I,p);let H=I.getElementsByTagName("text"),K=function(ee,oe){let te=ee;for(;te&&te!==I;){if(te.style[oe]){let ne=te.style[oe];oe==="fontSize"&&/em$/.test(ne)&&(ne=Math.round(16*parseFloat(ne))+"px"),ee.style[oe]=ne;break}te=te.parentNode}};[].forEach.call(H,function(ee){for(["fontFamily","fontSize"].forEach(oe=>{K(ee,oe)}),ee.style.fontFamily=B&&B.normal?"HighchartsFont":String(ee.style.fontFamily&&ee.style.fontFamily.split(" ").splice(-1)),G=ee.getElementsByTagName("title"),[].forEach.call(G,function(oe){ee.removeChild(oe)}),V=ee.getElementsByClassName("highcharts-text-outline");V.length>0;)ee.removeChild(V[0])});let X=I.querySelector("svg");X&&j(X,()=>{v(X,0,U,ee=>{try{E(ee,w),T&&T()}catch(oe){h(oe)}})})};if(P==="image/svg+xml")try{y.MSBlobBuilder!==void 0?((Y=new y.MSBlobBuilder).append(p),$=Y.getBlob("image/svg+xml")):$=L(p),E($,w),T&&T()}catch(G){h(G)}else P==="application/pdf"?y.jspdf&&y.jspdf.jsPDF?q():(Q=!0,M(z+"jspdf.js",function(){M(z+"svg2pdf.js",q)})):($=L(p),W=function(){try{F.domurl.revokeObjectURL($)}catch{}},N($,P,{},U,function(G){try{E(G,w),T&&T()}catch(V){h(V)}},function(){let G=C.createElement("canvas"),V=G.getContext("2d"),H=p.match(/^]*width\s*=\s*\"?(\d+)\"?[^>]*>/)[1]*U,K=p.match(/^]*height\s*=\s*\"?(\d+)\"?[^>]*>/)[1]*U,X=function(){y.canvg.Canvg.fromString(V,p).start();try{E(y.navigator.msSaveOrOpenBlob?G.msToBlob():G.toDataURL(P),w),T&&T()}catch(ee){h(ee)}finally{W()}};G.width=H,G.height=K,y.canvg?X():(Q=!0,M(z+"canvg.js",function(){X()}))},h,h,function(){Q&&W()}))},F.getScript=M,F.imageToDataUrl=N,F.svgToDataUrl=L,F.svgToPdf=v}(R||(R={})),R}),r(n,"masters/modules/offline-exporting.src.js",[n["Core/Globals.js"],n["Extensions/DownloadURL.js"],n["Extensions/OfflineExporting/OfflineExporting.js"]],function(i,o,a){return i.dataURLtoBlob=i.dataURLtoBlob||o.dataURLtoBlob,i.downloadSVGLocal=a.downloadSVGLocal,i.downloadURL=i.downloadURL||o.downloadURL,a.compose(i.Chart),i})})})(Vw);var D3=Vw.exports;const M3=Dn(D3);var Ww={exports:{}};(function(e){(function(t){e.exports?(t.default=t,e.exports=t):t(typeof Highcharts<"u"?Highcharts:void 0)})(function(t){var n=t?t._modules:{};function r(i,o,a,s){i.hasOwnProperty(o)||(i[o]=s.apply(null,a),typeof CustomEvent=="function"&&window.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:o,module:i[o]}})))}r(n,"Extensions/Themes/HighContrastDark.js",[n["Core/Defaults.js"]],function(i){var o;let{setOptions:a}=i;return function(s){let l="#F0F0F3";s.options={colors:["#67B9EE","#CEEDA5","#9F6AE1","#FEA26E","#6BA48F","#EA3535","#8D96B7","#ECCA15","#20AA09","#E0C3E4"],chart:{backgroundColor:"#1f1f20",plotBorderColor:"#606063"},title:{style:{color:l}},subtitle:{style:{color:l}},xAxis:{gridLineColor:"#707073",labels:{style:{color:l}},lineColor:"#707073",minorGridLineColor:"#505053",tickColor:"#707073",title:{style:{color:l}}},yAxis:{gridLineColor:"#707073",labels:{style:{color:l}},lineColor:"#707073",minorGridLineColor:"#505053",tickColor:"#707073",title:{style:{color:l}}},tooltip:{backgroundColor:"rgba(0, 0, 0, 0.85)",style:{color:l}},plotOptions:{series:{dataLabels:{color:l},marker:{lineColor:"#333"}},boxplot:{fillColor:"#505053"},candlestick:{lineColor:"white"},errorbar:{color:"white"},map:{nullColor:"#353535"}},legend:{backgroundColor:"transparent",itemStyle:{color:l},itemHoverStyle:{color:"#FFF"},itemHiddenStyle:{color:"#606063"},title:{style:{color:"#D0D0D0"}}},credits:{style:{color:l}},drilldown:{activeAxisLabelStyle:{color:l},activeDataLabelStyle:{color:l}},navigation:{buttonOptions:{symbolStroke:"#DDDDDD",theme:{fill:"#505053"}}},rangeSelector:{buttonTheme:{fill:"#505053",stroke:"#000000",style:{color:"#eee"},states:{hover:{fill:"#707073",stroke:"#000000",style:{color:l}},select:{fill:"#303030",stroke:"#101010",style:{color:l}}}},inputBoxBorderColor:"#505053",inputStyle:{backgroundColor:"#333",color:l},labelStyle:{color:l}},navigator:{handles:{backgroundColor:"#666",borderColor:"#AAA"},outlineColor:"#CCC",maskFill:"rgba(180,180,255,0.2)",series:{color:"#7798BF",lineColor:"#A6C7ED"},xAxis:{gridLineColor:"#505053"}},scrollbar:{barBackgroundColor:"#808083",barBorderColor:"#808083",buttonArrowColor:"#CCC",buttonBackgroundColor:"#606063",buttonBorderColor:"#606063",rifleColor:"#FFF",trackBackgroundColor:"#404043",trackBorderColor:"#404043"}},s.apply=function(){a(s.options)}}(o||(o={})),o}),r(n,"masters/themes/high-contrast-dark.src.js",[n["Core/Globals.js"],n["Extensions/Themes/HighContrastDark.js"]],function(i,o){return i.theme=o.options,o.apply(),i})})})(Ww);var L3=Ww.exports;const P3=Dn(L3);var qw={exports:{}};(function(e,t){(function(n,r){e.exports=r(re)})(typeof self<"u"?self:uo,function(n){return function(r){function i(a){if(o[a])return o[a].exports;var s=o[a]={i:a,l:!1,exports:{}};return r[a].call(s.exports,s,s.exports,i),s.l=!0,s.exports}var o={};return i.m=r,i.c=o,i.d=function(a,s,l){i.o(a,s)||Object.defineProperty(a,s,{configurable:!1,enumerable:!0,get:l})},i.n=function(a){var s=a&&a.__esModule?function(){return a.default}:function(){return a};return i.d(s,"a",s),s},i.o=function(a,s){return Object.prototype.hasOwnProperty.call(a,s)},i.p="",i(i.s=0)}([function(r,i,o){function a(){return a=Object.assign?Object.assign.bind():function(d){for(var f=1;fd.length)&&(f=d.length);for(var S=0,O=new Array(f);S"u"?"undefined":R(window))==="object"&&window.Highcharts,A=d.constructorType||"chart";M?M[A]?d.options?O.current=M[A](S.current,d.options,d.callback):console.warn('The "options" property was not passed.'):console.warn('The "constructorType" property is incorrect or some required module is not imported.'):console.warn('The "highcharts" property was not passed.')}if(O.current){if(d.allowChartUpdate!==!1)if(d.constructorType!==x.current||d.highcharts!==D.current)x.current=d.constructorType,D.current=d.highcharts,F();else if(!d.immutable&&O.current){var k;(k=O.current).update.apply(k,[d.options].concat(s(d.updateArgs||[!0,!0])))}else F()}else F()},[d.options,d.allowChartUpdate,d.updateArgs,d.containerProps,d.highcharts,d.constructorType]),C(function(){return function(){O.current&&(O.current.destroy(),O.current=null)}},[]),Object(m.useImperativeHandle)(f,function(){return{get chart(){return O.current},container:S}},[]),E.a.createElement("div",a({},d.containerProps,{ref:S}))}));i.default=y},function(r,i){r.exports=n}])})})(qw);var k3=qw.exports;const F3=Dn(k3);function B3(){this.__data__=[],this.size=0}var U3=B3;function G3(e,t){return e===t||e!==e&&t!==t}var vd=G3,Y3=vd;function H3(e,t){for(var n=e.length;n--;)if(Y3(e[n][0],t))return n;return-1}var Td=H3,z3=Td,$3=Array.prototype,V3=$3.splice;function W3(e){var t=this.__data__,n=z3(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():V3.call(t,n,1),--this.size,!0}var q3=W3,j3=Td;function K3(e){var t=this.__data__,n=j3(t,e);return n<0?void 0:t[n][1]}var Q3=K3,X3=Td;function Z3(e){return X3(this.__data__,e)>-1}var J3=Z3,ej=Td;function tj(e,t){var n=this.__data__,r=ej(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var nj=tj,rj=U3,ij=q3,oj=Q3,aj=J3,sj=nj;function la(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t-1&&e%1==0&&e<=R4}var oD=x4,O4=zE,A4=oD;function N4(e){return e!=null&&A4(e.length)&&!O4(e)}var WE=N4,I4=WE,w4=Ks;function D4(e){return w4(e)&&I4(e)}var M4=D4,Oc={exports:{}};function L4(){return!1}var P4=L4;Oc.exports;(function(e,t){var n=ca,r=P4,i=t&&!t.nodeType&&t,o=i&&!0&&e&&!e.nodeType&&e,a=o&&o.exports===i,s=a?n.Buffer:void 0,l=s?s.isBuffer:void 0,u=l||r;e.exports=u})(Oc,Oc.exports);var aD=Oc.exports,k4=Rd,F4=eD,B4=Ks,U4="[object Object]",G4=Function.prototype,Y4=Object.prototype,sD=G4.toString,H4=Y4.hasOwnProperty,z4=sD.call(Object);function $4(e){if(!B4(e)||k4(e)!=U4)return!1;var t=F4(e);if(t===null)return!0;var n=H4.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&sD.call(n)==z4}var V4=$4,W4=Rd,q4=oD,j4=Ks,K4="[object Arguments]",Q4="[object Array]",X4="[object Boolean]",Z4="[object Date]",J4="[object Error]",eQ="[object Function]",tQ="[object Map]",nQ="[object Number]",rQ="[object Object]",iQ="[object RegExp]",oQ="[object Set]",aQ="[object String]",sQ="[object WeakMap]",lQ="[object ArrayBuffer]",cQ="[object DataView]",dQ="[object Float32Array]",uQ="[object Float64Array]",pQ="[object Int8Array]",mQ="[object Int16Array]",hQ="[object Int32Array]",gQ="[object Uint8Array]",_Q="[object Uint8ClampedArray]",fQ="[object Uint16Array]",EQ="[object Uint32Array]",mt={};mt[dQ]=mt[uQ]=mt[pQ]=mt[mQ]=mt[hQ]=mt[gQ]=mt[_Q]=mt[fQ]=mt[EQ]=!0;mt[K4]=mt[Q4]=mt[lQ]=mt[X4]=mt[cQ]=mt[Z4]=mt[J4]=mt[eQ]=mt[tQ]=mt[nQ]=mt[rQ]=mt[iQ]=mt[oQ]=mt[aQ]=mt[sQ]=!1;function SQ(e){return j4(e)&&q4(e.length)&&!!mt[W4(e)]}var bQ=SQ;function yQ(e){return function(t){return e(t)}}var vQ=yQ,Ac={exports:{}};Ac.exports;(function(e,t){var n=jw,r=t&&!t.nodeType&&t,i=r&&!0&&e&&!e.nodeType&&e,o=i&&i.exports===r,a=o&&n.process,s=function(){try{var l=i&&i.require&&i.require("util").types;return l||a&&a.binding&&a.binding("util")}catch{}}();e.exports=s})(Ac,Ac.exports);var TQ=Ac.exports,CQ=bQ,RQ=vQ,qR=TQ,jR=qR&&qR.isTypedArray,xQ=jR?RQ(jR):CQ,lD=xQ;function OQ(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}var cD=OQ,AQ=VE,NQ=vd,IQ=Object.prototype,wQ=IQ.hasOwnProperty;function DQ(e,t,n){var r=e[t];(!(wQ.call(e,t)&&NQ(r,n))||n===void 0&&!(t in e))&&AQ(e,t,n)}var MQ=DQ,LQ=MQ,PQ=VE;function kQ(e,t,n,r){var i=!n;n||(n={});for(var o=-1,a=t.length;++o-1&&e%1==0&&e0){if(++t>=K9)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var J9=Z9,e6=j9,t6=J9,n6=t6(e6),r6=n6,i6=mD,o6=H9,a6=r6;function s6(e,t){return a6(o6(e,t,i6),e+"")}var l6=s6,c6=vd,d6=WE,u6=dD,p6=eo;function m6(e,t,n){if(!p6(n))return!1;var r=typeof t;return(r=="number"?d6(n)&&u6(t,n.length):r=="string"&&t in n)?c6(n[t],e):!1}var h6=m6,g6=l6,_6=h6;function f6(e){return g6(function(t,n){var r=-1,i=n.length,o=i>1?n[i-1]:void 0,a=i>2?n[2]:void 0;for(o=e.length>3&&typeof o=="function"?(i--,o):void 0,a&&_6(n[0],n[1],a)&&(o=i<3?void 0:o,i=1),t=Object(t);++r{}}}};return e(t),t._modules["Core/Globals.js"].theme}function mi({title:e,options:t,series:n,min:r,max:i}){const o=Yw(),a=re.useMemo(()=>{const s=o==="light"?{}:C6(P3),l={chart:{animation:!1,height:400,zooming:{type:"x"},panning:{enabled:!0,type:"x"},panKey:"shift",numberFormatter:tt,events:{load(){Ns.addEvent(this.tooltip,"headerFormatter",u=>{if(u.isFooter)return!0;let _=u.labelConfig.point.x;if(u.labelConfig.point.dataGroup){const g=u.labelConfig.series.xData,b=g[g.length-1];_+100*u.labelConfig.point.dataGroup.length>=b&&(_=b)}return u.text=`Timestamp ${tt(_)}
    `,!1})}}},title:{text:e},credits:{href:'javascript:window.open("https://www.highcharts.com/?credits", "_blank")'},plotOptions:{series:{dataGrouping:{approximation(u){return this.dataGroupInfo.start+this.dataGroupInfo.lengthtt(u.value)}},yAxis:{opposite:!1,allowDecimals:!1,min:r,max:i},tooltip:{split:!1,shared:!0,outside:!0},legend:{enabled:!0},rangeSelector:{enabled:!1},navigator:{enabled:!1},scrollbar:{enabled:!1},series:n,...t};return T6(s,l)},[o,e,t,n,r,i]);return ce.jsx(yd,{p:0,children:ce.jsx(F3,{highcharts:Ns,constructorType:"stockChart",options:a,immutable:!0})})}function R6({symbol:e}){const t=ut(a=>a.algorithm),n=[],r=[];for(const a of t.data){const s=a.state.observations.conversionObservations[e];s!==void 0&&(n.push([a.state.timestamp,s.bidPrice]),r.push([a.state.timestamp,s.askPrice]))}const i={yAxis:{opposite:!0,allowDecimals:!0}},o=[{type:"line",name:"Bid",color:An(1),marker:{symbol:"triangle"},data:n},{type:"line",name:"Ask",color:Nn(1),marker:{symbol:"triangle-down"},data:r}];return ce.jsx(mi,{title:`${e} - Conversion price`,options:i,series:o})}function x6({symbol:e}){const t=ut(a=>a.algorithm),n=[],r=[];for(const a of t.data){const s=a.state.observations.conversionObservations[e];s!==void 0&&(n.push([a.state.timestamp,s.sunlight]),r.push([a.state.timestamp,s.humidity]))}const i=[{type:"line",name:"Sunlight",marker:{symbol:"square"},yAxis:0,data:n},{type:"line",name:"Humidity",marker:{symbol:"circle"},yAxis:1,data:r}],o={yAxis:[{},{opposite:!0}]};return ce.jsx(mi,{title:`${e} - Environment`,options:o,series:i})}function O6({symbol:e}){const t=ut(o=>o.algorithm),n=[];for(const o of t.data){const a=o.state.observations.plainValueObservations[e];a!==void 0&&n.push([o.state.timestamp,a])}const r={yAxis:{allowDecimals:!0}},i=[{type:"line",name:"Value",data:n}];return ce.jsx(mi,{title:`${e} - Plain value observation`,options:r,series:i})}function A6(e,t){const n={AMETHYSTS:20,STARFRUIT:20,ORCHIDS:100,CHOCOLATE:250,STRAWBERRIES:350,ROSES:60,GIFT_BASKET:60};if(n[t]!==void 0)return n[t];const r=e.data[0].state.listings[t].product,i=e.data.map(s=>s.state.position[r]||0),o=Math.min(...i),a=Math.max(...i);return Math.max(Math.abs(o),a)}function N6(){const e=ut(o=>o.algorithm),t=Object.keys(e.data[0].state.listings).sort((o,a)=>o.localeCompare(a)),n={};for(const o of t)n[o]=A6(e,o);const r={};for(const o of t)r[o]=[];for(const o of e.data)for(const a of t){const s=o.state.position[a]||0;r[a].push([o.state.timestamp,s/n[a]*100])}const i=t.map((o,a)=>({type:"line",name:o,data:r[o],colorIndex:a+1}));return ce.jsx(mi,{title:"Positions (% of limit)",series:i,min:-100,max:100})}function I6({symbol:e}){const t=ut(r=>r.algorithm),n=[{type:"line",name:"Bid 3",color:An(.5),marker:{symbol:"square"},data:[]},{type:"line",name:"Bid 2",color:An(.75),marker:{symbol:"circle"},data:[]},{type:"line",name:"Bid 1",color:An(1),marker:{symbol:"triangle"},data:[]},{type:"line",name:"Mid price",color:"gray",dashStyle:"Dash",marker:{symbol:"diamond"},data:[]},{type:"line",name:"Ask 1",color:Nn(1),marker:{symbol:"triangle-down"},data:[]},{type:"line",name:"Ask 2",color:Nn(.75),marker:{symbol:"circle"},data:[]},{type:"line",name:"Ask 3",color:Nn(.5),marker:{symbol:"square"},data:[]}];for(const r of t.activityLogs)if(r.product===e){for(let i=0;ir.algorithm),t=new Map;for(const r of e.activityLogs)t.has(r.timestamp)?t.set(r.timestamp,t.get(r.timestamp)+r.profitLoss):t.set(r.timestamp,r.profitLoss);const n=[{type:"line",name:"Total",data:[...t.keys()].map(r=>[r,t.get(r)])}];return Object.keys(e.data[0].state.listings).sort((r,i)=>r.localeCompare(i)).forEach(r=>{const i=[];for(const o of e.activityLogs)o.product===r&&i.push([o.timestamp,o.profitLoss]);n.push({type:"line",name:r,data:i,dashStyle:"Dash"})}),ce.jsx(mi,{title:"Profit / Loss",series:n})}function to({label:e,columns:t,rows:n}){return n.length===0?ce.jsxs(Ke,{children:["Timestamp has no ",e]}):ce.jsx(Le.ScrollContainer,{minWidth:300,children:ce.jsxs(Le,{withColumnBorders:!0,horizontalSpacing:8,verticalSpacing:4,children:[ce.jsx(Le.Thead,{children:ce.jsx(Le.Tr,{children:t.map((r,i)=>ce.jsx(Le.Th,{children:r},i))})}),ce.jsx(Le.Tbody,{children:n})]})})}function D6({conversionObservations:e}){const t=[];for(const[n,r]of Object.entries(e))t.push(ce.jsxs(Le.Tr,{children:[ce.jsx(Le.Td,{children:n}),ce.jsx(Le.Td,{children:tt(r.bidPrice,2)}),ce.jsx(Le.Td,{children:tt(r.askPrice,2)}),ce.jsx(Le.Td,{children:tt(r.transportFees,2)}),ce.jsx(Le.Td,{children:tt(r.exportTariff,2)}),ce.jsx(Le.Td,{children:tt(r.importTariff,2)}),ce.jsx(Le.Td,{children:tt(r.sunlight,2)}),ce.jsx(Le.Td,{children:tt(r.humidity,2)})]},n));return ce.jsx(to,{label:"conversion observations",columns:["Product","Bid price","Ask price","Transport fees","Export tariff","Import tariff","Sunlight","Humidity"],rows:t})}function M6({listings:e}){return ce.jsx(to,{label:"listings",columns:["Symbol","Product","Denomination"],rows:Object.entries(e).map(([t,n])=>ce.jsxs(Le.Tr,{children:[ce.jsx(Le.Td,{children:n.symbol}),ce.jsx(Le.Td,{children:n.product}),ce.jsx(Le.Td,{children:n.denomination})]},t))})}function ng({spread:e}){return ce.jsxs(Le.Tr,{children:[ce.jsx(Le.Td,{}),ce.jsxs(Le.Td,{style:{textAlign:"center"},children:["↑ ",tt(e)," ↓"]}),ce.jsx(Le.Td,{})]})}function L6({orderDepth:e}){const t=[],n=Object.keys(e.sellOrders).map(Number).sort((i,o)=>o-i),r=Object.keys(e.buyOrders).map(Number).sort((i,o)=>o-i);for(let i=0;i0&&n[i-1]-o>1&&t.push(ce.jsx(ng,{spread:n[i-1]-o},`${o}-ask-spread`)),t.push(ce.jsxs(Le.Tr,{children:[ce.jsx(Le.Td,{}),ce.jsx(Le.Td,{style:{textAlign:"center"},children:tt(o)}),ce.jsx(Le.Td,{style:{backgroundColor:Nn(.1)},children:tt(Math.abs(e.sellOrders[o]))})]},`${o}-ask`))}n.length>0&&r.length>0&&n[n.length-1]!==r[0]&&t.push(ce.jsx(ng,{spread:n[n.length-1]-r[0]},"spread"));for(let i=0;i0&&r[i-1]-o>1&&t.push(ce.jsx(ng,{spread:r[i-1]-o},`${o}-bid-spread`)),t.push(ce.jsxs(Le.Tr,{children:[ce.jsx(Le.Td,{style:{backgroundColor:An(.1),textAlign:"right"},children:tt(e.buyOrders[o])}),ce.jsx(Le.Td,{style:{textAlign:"center"},children:tt(o)}),ce.jsx(Le.Td,{})]},`${o}-bid`))}return t.length===0?ce.jsx(Ke,{children:"Timestamp has no order depth"}):ce.jsxs(Le,{withColumnBorders:!0,horizontalSpacing:8,verticalSpacing:4,children:[ce.jsx(Le.Thead,{children:ce.jsxs(Le.Tr,{children:[ce.jsx(Le.Th,{style:{textAlign:"right"},children:"Bid volume"}),ce.jsx(Le.Th,{style:{textAlign:"center"},children:"Price"}),ce.jsx(Le.Th,{children:"Ask volume"})]})}),ce.jsx(Le.Tbody,{children:t})]})}function P6({orders:e}){const t=[];for(const n of Object.keys(e))for(let r=0;r0?An:Nn;t.push(ce.jsxs(Le.Tr,{style:{background:o(.1)},children:[ce.jsx(Le.Td,{children:i.symbol}),ce.jsx(Le.Td,{children:i.quantity>0?"Buy":"Sell"}),ce.jsx(Le.Td,{children:tt(i.price)}),ce.jsx(Le.Td,{children:tt(Math.abs(i.quantity))})]},`${n}-${r}`))}return ce.jsx(to,{label:"orders",columns:["Symbol","Type","Price","Quantity"],rows:t})}function k6({plainValueObservations:e}){const t=[];for(const n of Object.keys(e))t.push(ce.jsxs(Le.Tr,{children:[ce.jsx(Le.Td,{children:n}),ce.jsx(Le.Td,{children:tt(e[n])})]},n));return ce.jsx(to,{label:"plain value observations",columns:["Product","Value"],rows:t})}function F6({position:e}){const t=[];for(const n of Object.keys(e)){if(e[n]===0)continue;const r=e[n]>0?An:Nn;t.push(ce.jsxs(Le.Tr,{style:{backgroundColor:r(.1)},children:[ce.jsx(Le.Td,{children:n}),ce.jsx(Le.Td,{children:tt(e[n])})]},n))}return ce.jsx(to,{label:"positions",columns:["Product","Position"],rows:t})}function B6({timestamp:e}){const n=ut(r=>r.algorithm).activityLogs.filter(r=>r.timestamp===e).sort((r,i)=>r.product.localeCompare(i.product)).map(r=>{let i=()=>"transparent";return r.profitLoss>0?i=An:r.profitLoss<0&&(i=Nn),ce.jsxs(Le.Tr,{style:{backgroundColor:i(.1)},children:[ce.jsx(Le.Td,{children:r.product}),ce.jsx(Le.Td,{children:tt(r.profitLoss)})]},r.product)});return ce.jsx(to,{label:"profit / loss",columns:["Product","Profit / Loss"],rows:n})}function tx({trades:e}){const t=[];for(const n of Object.keys(e).sort((r,i)=>r.localeCompare(i)))for(let r=0;rl.algorithm).activityLogs.filter(l=>l.timestamp===e.timestamp).reduce((l,u)=>l+u.profitLoss,0);return ce.jsxs(We,{columns:12,children:[ce.jsx(We.Col,{span:12,children:ce.jsxs(ct,{order:5,children:["Timestamp ",tt(e.timestamp)," • Profit / Loss: ",tt(s)," • Conversions: ",tt(n)]})}),ce.jsxs(We.Col,{span:{xs:12,sm:4},children:[ce.jsx(ct,{order:5,children:"Listings"}),ce.jsx(M6,{listings:e.listings})]}),ce.jsxs(We.Col,{span:{xs:12,sm:4},children:[ce.jsx(ct,{order:5,children:"Positions"}),ce.jsx(F6,{position:e.position})]}),ce.jsxs(We.Col,{span:{xs:12,sm:4},children:[ce.jsx(ct,{order:5,children:"Profit / Loss"}),ce.jsx(B6,{timestamp:e.timestamp})]}),Object.entries(e.orderDepths).map(([l,u],_)=>ce.jsxs(We.Col,{span:{xs:12,sm:4},children:[ce.jsxs(ct,{order:5,children:[l," order depth"]}),ce.jsx(L6,{orderDepth:u})]},_)),Object.keys(e.orderDepths).length%3<=2&&ce.jsx(We.Col,{span:{xs:12,sm:4}}),Object.keys(e.orderDepths).length%3<=1&&ce.jsx(We.Col,{span:{xs:12,sm:4}}),ce.jsxs(We.Col,{span:{xs:12,sm:4},children:[ce.jsx(ct,{order:5,children:"Own trades"}),ce.jsx(tx,{trades:e.ownTrades})]}),ce.jsxs(We.Col,{span:{xs:12,sm:4},children:[ce.jsx(ct,{order:5,children:"Market trades"}),ce.jsx(tx,{trades:e.marketTrades})]}),ce.jsxs(We.Col,{span:{xs:12,sm:4},children:[ce.jsx(ct,{order:5,children:"Orders"}),ce.jsx(P6,{orders:t})]}),ce.jsxs(We.Col,{span:{xs:12,sm:4},children:[ce.jsx(ct,{order:5,children:"Plain value observations"}),ce.jsx(k6,{plainValueObservations:e.observations.plainValueObservations})]}),ce.jsxs(We.Col,{span:{xs:12,sm:8},children:[ce.jsx(ct,{order:5,children:"Conversion observations"}),ce.jsx(D6,{conversionObservations:e.observations.conversionObservations})]}),ce.jsxs(We.Col,{span:{xs:12,sm:6},children:[ce.jsx(ct,{order:5,children:"Sandbox logs"}),o?ce.jsx(Ai,{code:o,language:"markdown"}):ce.jsx(Ke,{children:"Timestamp has no sandbox logs"})]}),ce.jsxs(We.Col,{span:{xs:12,sm:6},children:[ce.jsx(ct,{order:5,children:"Algorithm logs"}),i?ce.jsx(Ai,{code:i,language:"markdown"}):ce.jsx(Ke,{children:"Timestamp has no algorithm logs"})]}),ce.jsxs(We.Col,{span:{xs:12,sm:6},children:[ce.jsx(ct,{order:5,children:"Previous trader data"}),e.traderData?ce.jsx(Ai,{code:e.traderData,language:"json"}):ce.jsx(Ke,{children:"Timestamp has no previous trader data"})]}),ce.jsxs(We.Col,{span:{xs:12,sm:6},children:[ce.jsx(ct,{order:5,children:"Next trader data"}),r?ce.jsx(Ai,{code:r,language:"json"}):ce.jsx(Ke,{children:"Timestamp has no next trader data"})]})]})}function G6(){const e=ut(l=>l.algorithm),t={};for(const l of e.data)t[l.state.timestamp]=l;const n=e.data[0].state.timestamp,r=e.data[e.data.length-1].state.timestamp,i=e.data[1].state.timestamp-e.data[0].state.timestamp,[o,a]=re.useState(n),s=[];for(let l=n;la(o===n?o:o-i)],["ArrowRight",()=>a(o===r?o:o+i)]]),ce.jsxs(yd,{title:"Timestamps",children:[ce.jsx(TE,{min:n,max:r,step:i,marks:s,label:l=>`Timestamp ${tt(l)}`,value:o,onChange:a,mb:"lg"}),t[o]?ce.jsx(U6,{row:t[o]}):ce.jsxs(Ke,{children:["No logs found for timestamp ",tt(o)]})]})}function Y6({symbol:e}){const t=ut(a=>a.algorithm),n=[],r=[],i=[];for(const a of t.data){const s=a.state.observations.conversionObservations[e];s!==void 0&&(n.push([a.state.timestamp,s.transportFees]),r.push([a.state.timestamp,s.importTariff]),i.push([a.state.timestamp,s.exportTariff]))}const o=[{type:"line",name:"Transport fees",data:n},{type:"line",name:"Import tariff",marker:{symbol:"triangle"},data:r},{type:"line",name:"Export tariff",marker:{symbol:"triangle-down"},data:i}];return ce.jsx(mi,{title:`${e} - Transport`,series:o})}function H6({symbol:e}){const t=ut(r=>r.algorithm),n=[{type:"column",name:"Bid 3",color:An(.5),data:[]},{type:"column",name:"Bid 2",color:An(.75),data:[]},{type:"column",name:"Bid 1",color:An(1),data:[]},{type:"column",name:"Ask 1",color:Nn(1),data:[]},{type:"column",name:"Ask 2",color:Nn(.75),data:[]},{type:"column",name:"Ask 3",color:Nn(.5),data:[]}];for(const r of t.activityLogs)if(r.product===e){for(let i=0;ia.algorithm),{search:t}=wr();if(e===null)return ce.jsx(MI,{to:`/${t}`});const n=new Set;for(const a of e.data)for(const s of Object.keys(a.state.observations.conversionObservations))n.add(s);let r=0;const i=e.activityLogs[e.activityLogs.length-1].timestamp;for(let a=e.activityLogs.length-1;a>=0&&e.activityLogs[a].timestamp==i;a--)r+=e.activityLogs[a].profitLoss;const o=[];return Object.keys(e.data[0].state.listings).sort((a,s)=>a.localeCompare(s)).forEach(a=>{o.push(ce.jsx(We.Col,{span:{xs:12,sm:6},children:ce.jsx(I6,{symbol:a})},`${a} - product price`)),o.push(ce.jsx(We.Col,{span:{xs:12,sm:6},children:ce.jsx(H6,{symbol:a})},`${a} - symbol`)),n.has(a)&&(o.push(ce.jsx(We.Col,{span:{xs:12,sm:6},children:ce.jsx(R6,{symbol:a})},`${a} - conversion price`)),o.push(ce.jsx(We.Col,{span:{xs:12,sm:6},children:ce.jsx(Y6,{symbol:a})},`${a} - transport`)),o.push(ce.jsx(We.Col,{span:{xs:12,sm:6},children:ce.jsx(x6,{symbol:a})},`${a} - environment`)),o.push(ce.jsx(We.Col,{span:{xs:12,sm:6}},`${a} - environment`)))}),Object.keys(e.data[0].state.observations.plainValueObservations).sort((a,s)=>a.localeCompare(s)).forEach(a=>{o.push(ce.jsx(We.Col,{span:{xs:12,sm:6},children:ce.jsx(O6,{symbol:a})},`${a} - plain value observation`))}),ce.jsx($s,{fluid:!0,children:ce.jsxs(We,{children:[ce.jsx(We.Col,{span:12,children:ce.jsx(yd,{children:ce.jsx(Mi,{children:ce.jsxs(ct,{order:2,children:["Final Profit / Loss: ",tt(r)]})})})}),ce.jsx(We.Col,{span:{xs:12,sm:6},children:ce.jsx(w6,{})}),ce.jsx(We.Col,{span:{xs:12,sm:6},children:ce.jsx(N6,{})}),o,ce.jsx(We.Col,{span:12,children:ce.jsx(G6,{})}),e.summary&&ce.jsx(We.Col,{span:12,children:ce.jsx(x3,{})})]})})}const $6={colors:{dark:["#C1C2C5","#A6A7AB","#909296","#5c5f66","#373A40","#2C2E33","#25262b","#1A1B1E","#141517","#101113"]}},V6=lG(p_(ce.jsxs(Ga,{path:"/",element:ce.jsx(_2,{}),children:[ce.jsx(Ga,{path:"/",element:ce.jsx(R3,{})}),ce.jsx(Ga,{path:"/visualizer",element:ce.jsx(z6,{})}),ce.jsx(Ga,{path:"*",element:ce.jsx(MI,{to:"/"})})]})),{basename:"/imc-prosperity-2-visualizer/"});function W6(){const e=ut(t=>t.colorScheme);return ce.jsx(LA,{theme:$6,defaultColorScheme:e,children:ce.jsx(fG,{router:V6})})}rg.createRoot(document.getElementById("root")).render(ce.jsx(pe.StrictMode,{children:ce.jsx(W6,{})})); +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function u(d,f){if(d){if(typeof d=="string")return b(d,f);var S=Object.prototype.toString.call(d).slice(8,-1);return S==="Object"&&d.constructor&&(S=d.constructor.name),S==="Map"||S==="Set"?Array.from(d):S==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(S)?b(d,f):void 0}}function _(d){if(typeof Symbol<"u"&&d[Symbol.iterator]!=null||d["@@iterator"]!=null)return Array.from(d)}function g(d){if(Array.isArray(d))return b(d)}function b(d,f){(f==null||f>d.length)&&(f=d.length);for(var S=0,O=new Array(f);S"u"?"undefined":R(window))==="object"&&window.Highcharts,A=d.constructorType||"chart";M?M[A]?d.options?O.current=M[A](S.current,d.options,d.callback):console.warn('The "options" property was not passed.'):console.warn('The "constructorType" property is incorrect or some required module is not imported.'):console.warn('The "highcharts" property was not passed.')}if(O.current){if(d.allowChartUpdate!==!1)if(d.constructorType!==x.current||d.highcharts!==D.current)x.current=d.constructorType,D.current=d.highcharts,F();else if(!d.immutable&&O.current){var k;(k=O.current).update.apply(k,[d.options].concat(s(d.updateArgs||[!0,!0])))}else F()}else F()},[d.options,d.allowChartUpdate,d.updateArgs,d.containerProps,d.highcharts,d.constructorType]),C(function(){return function(){O.current&&(O.current.destroy(),O.current=null)}},[]),Object(m.useImperativeHandle)(f,function(){return{get chart(){return O.current},container:S}},[]),E.a.createElement("div",a({},d.containerProps,{ref:S}))}));i.default=y},function(r,i){r.exports=n}])})})(qw);var k3=qw.exports;const F3=Dn(k3);function B3(){this.__data__=[],this.size=0}var U3=B3;function G3(e,t){return e===t||e!==e&&t!==t}var vd=G3,Y3=vd;function H3(e,t){for(var n=e.length;n--;)if(Y3(e[n][0],t))return n;return-1}var Td=H3,z3=Td,$3=Array.prototype,V3=$3.splice;function W3(e){var t=this.__data__,n=z3(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():V3.call(t,n,1),--this.size,!0}var q3=W3,j3=Td;function K3(e){var t=this.__data__,n=j3(t,e);return n<0?void 0:t[n][1]}var Q3=K3,X3=Td;function Z3(e){return X3(this.__data__,e)>-1}var J3=Z3,ej=Td;function tj(e,t){var n=this.__data__,r=ej(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var nj=tj,rj=U3,ij=q3,oj=Q3,aj=J3,sj=nj;function la(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t-1&&e%1==0&&e<=R4}var oD=x4,O4=zE,A4=oD;function N4(e){return e!=null&&A4(e.length)&&!O4(e)}var WE=N4,I4=WE,w4=Ks;function D4(e){return w4(e)&&I4(e)}var M4=D4,Oc={exports:{}};function L4(){return!1}var P4=L4;Oc.exports;(function(e,t){var n=ca,r=P4,i=t&&!t.nodeType&&t,o=i&&!0&&e&&!e.nodeType&&e,a=o&&o.exports===i,s=a?n.Buffer:void 0,l=s?s.isBuffer:void 0,u=l||r;e.exports=u})(Oc,Oc.exports);var aD=Oc.exports,k4=Rd,F4=eD,B4=Ks,U4="[object Object]",G4=Function.prototype,Y4=Object.prototype,sD=G4.toString,H4=Y4.hasOwnProperty,z4=sD.call(Object);function $4(e){if(!B4(e)||k4(e)!=U4)return!1;var t=F4(e);if(t===null)return!0;var n=H4.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&sD.call(n)==z4}var V4=$4,W4=Rd,q4=oD,j4=Ks,K4="[object Arguments]",Q4="[object Array]",X4="[object Boolean]",Z4="[object Date]",J4="[object Error]",eQ="[object Function]",tQ="[object Map]",nQ="[object Number]",rQ="[object Object]",iQ="[object RegExp]",oQ="[object Set]",aQ="[object String]",sQ="[object WeakMap]",lQ="[object ArrayBuffer]",cQ="[object DataView]",dQ="[object Float32Array]",uQ="[object Float64Array]",pQ="[object Int8Array]",mQ="[object Int16Array]",hQ="[object Int32Array]",gQ="[object Uint8Array]",_Q="[object Uint8ClampedArray]",fQ="[object Uint16Array]",EQ="[object Uint32Array]",mt={};mt[dQ]=mt[uQ]=mt[pQ]=mt[mQ]=mt[hQ]=mt[gQ]=mt[_Q]=mt[fQ]=mt[EQ]=!0;mt[K4]=mt[Q4]=mt[lQ]=mt[X4]=mt[cQ]=mt[Z4]=mt[J4]=mt[eQ]=mt[tQ]=mt[nQ]=mt[rQ]=mt[iQ]=mt[oQ]=mt[aQ]=mt[sQ]=!1;function SQ(e){return j4(e)&&q4(e.length)&&!!mt[W4(e)]}var bQ=SQ;function yQ(e){return function(t){return e(t)}}var vQ=yQ,Ac={exports:{}};Ac.exports;(function(e,t){var n=jw,r=t&&!t.nodeType&&t,i=r&&!0&&e&&!e.nodeType&&e,o=i&&i.exports===r,a=o&&n.process,s=function(){try{var l=i&&i.require&&i.require("util").types;return l||a&&a.binding&&a.binding("util")}catch{}}();e.exports=s})(Ac,Ac.exports);var TQ=Ac.exports,CQ=bQ,RQ=vQ,qR=TQ,jR=qR&&qR.isTypedArray,xQ=jR?RQ(jR):CQ,lD=xQ;function OQ(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}var cD=OQ,AQ=VE,NQ=vd,IQ=Object.prototype,wQ=IQ.hasOwnProperty;function DQ(e,t,n){var r=e[t];(!(wQ.call(e,t)&&NQ(r,n))||n===void 0&&!(t in e))&&AQ(e,t,n)}var MQ=DQ,LQ=MQ,PQ=VE;function kQ(e,t,n,r){var i=!n;n||(n={});for(var o=-1,a=t.length;++o-1&&e%1==0&&e0){if(++t>=K9)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var J9=Z9,e6=j9,t6=J9,n6=t6(e6),r6=n6,i6=mD,o6=H9,a6=r6;function s6(e,t){return a6(o6(e,t,i6),e+"")}var l6=s6,c6=vd,d6=WE,u6=dD,p6=eo;function m6(e,t,n){if(!p6(n))return!1;var r=typeof t;return(r=="number"?d6(n)&&u6(t,n.length):r=="string"&&t in n)?c6(n[t],e):!1}var h6=m6,g6=l6,_6=h6;function f6(e){return g6(function(t,n){var r=-1,i=n.length,o=i>1?n[i-1]:void 0,a=i>2?n[2]:void 0;for(o=e.length>3&&typeof o=="function"?(i--,o):void 0,a&&_6(n[0],n[1],a)&&(o=i<3?void 0:o,i=1),t=Object(t);++r{}}}};return e(t),t._modules["Core/Globals.js"].theme}function mi({title:e,options:t,series:n,min:r,max:i}){const o=Yw(),a=re.useMemo(()=>{const s=o==="light"?{}:C6(P3),l={chart:{animation:!1,height:400,zooming:{type:"x"},panning:{enabled:!0,type:"x"},panKey:"shift",numberFormatter:tt,events:{load(){Ns.addEvent(this.tooltip,"headerFormatter",u=>{if(u.isFooter)return!0;let _=u.labelConfig.point.x;if(u.labelConfig.point.dataGroup){const g=u.labelConfig.series.xData,b=g[g.length-1];_+100*u.labelConfig.point.dataGroup.length>=b&&(_=b)}return u.text=`Timestamp ${tt(_)}
    `,!1})}}},title:{text:e},credits:{href:'javascript:window.open("https://www.highcharts.com/?credits", "_blank")'},plotOptions:{series:{dataGrouping:{approximation(u){return this.dataGroupInfo.start+this.dataGroupInfo.lengthtt(u.value)}},yAxis:{opposite:!1,allowDecimals:!1,min:r,max:i},tooltip:{split:!1,shared:!0,outside:!0},legend:{enabled:!0},rangeSelector:{enabled:!1},navigator:{enabled:!1},scrollbar:{enabled:!1},series:n,...t};return T6(s,l)},[o,e,t,n,r,i]);return ce.jsx(yd,{p:0,children:ce.jsx(F3,{highcharts:Ns,constructorType:"stockChart",options:a,immutable:!0})})}function R6({symbol:e}){const t=ut(a=>a.algorithm),n=[],r=[];for(const a of t.data){const s=a.state.observations.conversionObservations[e];s!==void 0&&(n.push([a.state.timestamp,s.bidPrice]),r.push([a.state.timestamp,s.askPrice]))}const i={yAxis:{opposite:!0,allowDecimals:!0}},o=[{type:"line",name:"Bid",color:An(1),marker:{symbol:"triangle"},data:n},{type:"line",name:"Ask",color:Nn(1),marker:{symbol:"triangle-down"},data:r}];return ce.jsx(mi,{title:`${e} - Conversion price`,options:i,series:o})}function x6({symbol:e}){const t=ut(a=>a.algorithm),n=[],r=[];for(const a of t.data){const s=a.state.observations.conversionObservations[e];s!==void 0&&(n.push([a.state.timestamp,s.sunlight]),r.push([a.state.timestamp,s.humidity]))}const i=[{type:"line",name:"Sunlight",marker:{symbol:"square"},yAxis:0,data:n},{type:"line",name:"Humidity",marker:{symbol:"circle"},yAxis:1,data:r}],o={yAxis:[{},{opposite:!0}]};return ce.jsx(mi,{title:`${e} - Environment`,options:o,series:i})}function O6({symbol:e}){const t=ut(o=>o.algorithm),n=[];for(const o of t.data){const a=o.state.observations.plainValueObservations[e];a!==void 0&&n.push([o.state.timestamp,a])}const r={yAxis:{allowDecimals:!0}},i=[{type:"line",name:"Value",data:n}];return ce.jsx(mi,{title:`${e} - Plain value observation`,options:r,series:i})}function A6(e,t){const n={AMETHYSTS:20,STARFRUIT:20,ORCHIDS:100,CHOCOLATE:250,STRAWBERRIES:350,ROSES:60,GIFT_BASKET:60,COCONUT:300,COCONUT_COUPON:600};if(n[t]!==void 0)return n[t];const r=e.data[0].state.listings[t].product,i=e.data.map(s=>s.state.position[r]||0),o=Math.min(...i),a=Math.max(...i);return Math.max(Math.abs(o),a)}function N6(){const e=ut(o=>o.algorithm),t=Object.keys(e.data[0].state.listings).sort((o,a)=>o.localeCompare(a)),n={};for(const o of t)n[o]=A6(e,o);const r={};for(const o of t)r[o]=[];for(const o of e.data)for(const a of t){const s=o.state.position[a]||0;r[a].push([o.state.timestamp,s/n[a]*100])}const i=t.map((o,a)=>({type:"line",name:o,data:r[o],colorIndex:a+1}));return ce.jsx(mi,{title:"Positions (% of limit)",series:i,min:-100,max:100})}function I6({symbol:e}){const t=ut(r=>r.algorithm),n=[{type:"line",name:"Bid 3",color:An(.5),marker:{symbol:"square"},data:[]},{type:"line",name:"Bid 2",color:An(.75),marker:{symbol:"circle"},data:[]},{type:"line",name:"Bid 1",color:An(1),marker:{symbol:"triangle"},data:[]},{type:"line",name:"Mid price",color:"gray",dashStyle:"Dash",marker:{symbol:"diamond"},data:[]},{type:"line",name:"Ask 1",color:Nn(1),marker:{symbol:"triangle-down"},data:[]},{type:"line",name:"Ask 2",color:Nn(.75),marker:{symbol:"circle"},data:[]},{type:"line",name:"Ask 3",color:Nn(.5),marker:{symbol:"square"},data:[]}];for(const r of t.activityLogs)if(r.product===e){for(let i=0;ir.algorithm),t=new Map;for(const r of e.activityLogs)t.has(r.timestamp)?t.set(r.timestamp,t.get(r.timestamp)+r.profitLoss):t.set(r.timestamp,r.profitLoss);const n=[{type:"line",name:"Total",data:[...t.keys()].map(r=>[r,t.get(r)])}];return Object.keys(e.data[0].state.listings).sort((r,i)=>r.localeCompare(i)).forEach(r=>{const i=[];for(const o of e.activityLogs)o.product===r&&i.push([o.timestamp,o.profitLoss]);n.push({type:"line",name:r,data:i,dashStyle:"Dash"})}),ce.jsx(mi,{title:"Profit / Loss",series:n})}function to({label:e,columns:t,rows:n}){return n.length===0?ce.jsxs(Ke,{children:["Timestamp has no ",e]}):ce.jsx(Le.ScrollContainer,{minWidth:300,children:ce.jsxs(Le,{withColumnBorders:!0,horizontalSpacing:8,verticalSpacing:4,children:[ce.jsx(Le.Thead,{children:ce.jsx(Le.Tr,{children:t.map((r,i)=>ce.jsx(Le.Th,{children:r},i))})}),ce.jsx(Le.Tbody,{children:n})]})})}function D6({conversionObservations:e}){const t=[];for(const[n,r]of Object.entries(e))t.push(ce.jsxs(Le.Tr,{children:[ce.jsx(Le.Td,{children:n}),ce.jsx(Le.Td,{children:tt(r.bidPrice,2)}),ce.jsx(Le.Td,{children:tt(r.askPrice,2)}),ce.jsx(Le.Td,{children:tt(r.transportFees,2)}),ce.jsx(Le.Td,{children:tt(r.exportTariff,2)}),ce.jsx(Le.Td,{children:tt(r.importTariff,2)}),ce.jsx(Le.Td,{children:tt(r.sunlight,2)}),ce.jsx(Le.Td,{children:tt(r.humidity,2)})]},n));return ce.jsx(to,{label:"conversion observations",columns:["Product","Bid price","Ask price","Transport fees","Export tariff","Import tariff","Sunlight","Humidity"],rows:t})}function M6({listings:e}){return ce.jsx(to,{label:"listings",columns:["Symbol","Product","Denomination"],rows:Object.entries(e).map(([t,n])=>ce.jsxs(Le.Tr,{children:[ce.jsx(Le.Td,{children:n.symbol}),ce.jsx(Le.Td,{children:n.product}),ce.jsx(Le.Td,{children:n.denomination})]},t))})}function ng({spread:e}){return ce.jsxs(Le.Tr,{children:[ce.jsx(Le.Td,{}),ce.jsxs(Le.Td,{style:{textAlign:"center"},children:["↑ ",tt(e)," ↓"]}),ce.jsx(Le.Td,{})]})}function L6({orderDepth:e}){const t=[],n=Object.keys(e.sellOrders).map(Number).sort((i,o)=>o-i),r=Object.keys(e.buyOrders).map(Number).sort((i,o)=>o-i);for(let i=0;i0&&n[i-1]-o>1&&t.push(ce.jsx(ng,{spread:n[i-1]-o},`${o}-ask-spread`)),t.push(ce.jsxs(Le.Tr,{children:[ce.jsx(Le.Td,{}),ce.jsx(Le.Td,{style:{textAlign:"center"},children:tt(o)}),ce.jsx(Le.Td,{style:{backgroundColor:Nn(.1)},children:tt(Math.abs(e.sellOrders[o]))})]},`${o}-ask`))}n.length>0&&r.length>0&&n[n.length-1]!==r[0]&&t.push(ce.jsx(ng,{spread:n[n.length-1]-r[0]},"spread"));for(let i=0;i0&&r[i-1]-o>1&&t.push(ce.jsx(ng,{spread:r[i-1]-o},`${o}-bid-spread`)),t.push(ce.jsxs(Le.Tr,{children:[ce.jsx(Le.Td,{style:{backgroundColor:An(.1),textAlign:"right"},children:tt(e.buyOrders[o])}),ce.jsx(Le.Td,{style:{textAlign:"center"},children:tt(o)}),ce.jsx(Le.Td,{})]},`${o}-bid`))}return t.length===0?ce.jsx(Ke,{children:"Timestamp has no order depth"}):ce.jsxs(Le,{withColumnBorders:!0,horizontalSpacing:8,verticalSpacing:4,children:[ce.jsx(Le.Thead,{children:ce.jsxs(Le.Tr,{children:[ce.jsx(Le.Th,{style:{textAlign:"right"},children:"Bid volume"}),ce.jsx(Le.Th,{style:{textAlign:"center"},children:"Price"}),ce.jsx(Le.Th,{children:"Ask volume"})]})}),ce.jsx(Le.Tbody,{children:t})]})}function P6({orders:e}){const t=[];for(const n of Object.keys(e))for(let r=0;r0?An:Nn;t.push(ce.jsxs(Le.Tr,{style:{background:o(.1)},children:[ce.jsx(Le.Td,{children:i.symbol}),ce.jsx(Le.Td,{children:i.quantity>0?"Buy":"Sell"}),ce.jsx(Le.Td,{children:tt(i.price)}),ce.jsx(Le.Td,{children:tt(Math.abs(i.quantity))})]},`${n}-${r}`))}return ce.jsx(to,{label:"orders",columns:["Symbol","Type","Price","Quantity"],rows:t})}function k6({plainValueObservations:e}){const t=[];for(const n of Object.keys(e))t.push(ce.jsxs(Le.Tr,{children:[ce.jsx(Le.Td,{children:n}),ce.jsx(Le.Td,{children:tt(e[n])})]},n));return ce.jsx(to,{label:"plain value observations",columns:["Product","Value"],rows:t})}function F6({position:e}){const t=[];for(const n of Object.keys(e)){if(e[n]===0)continue;const r=e[n]>0?An:Nn;t.push(ce.jsxs(Le.Tr,{style:{backgroundColor:r(.1)},children:[ce.jsx(Le.Td,{children:n}),ce.jsx(Le.Td,{children:tt(e[n])})]},n))}return ce.jsx(to,{label:"positions",columns:["Product","Position"],rows:t})}function B6({timestamp:e}){const n=ut(r=>r.algorithm).activityLogs.filter(r=>r.timestamp===e).sort((r,i)=>r.product.localeCompare(i.product)).map(r=>{let i=()=>"transparent";return r.profitLoss>0?i=An:r.profitLoss<0&&(i=Nn),ce.jsxs(Le.Tr,{style:{backgroundColor:i(.1)},children:[ce.jsx(Le.Td,{children:r.product}),ce.jsx(Le.Td,{children:tt(r.profitLoss)})]},r.product)});return ce.jsx(to,{label:"profit / loss",columns:["Product","Profit / Loss"],rows:n})}function tx({trades:e}){const t=[];for(const n of Object.keys(e).sort((r,i)=>r.localeCompare(i)))for(let r=0;rl.algorithm).activityLogs.filter(l=>l.timestamp===e.timestamp).reduce((l,u)=>l+u.profitLoss,0);return ce.jsxs(We,{columns:12,children:[ce.jsx(We.Col,{span:12,children:ce.jsxs(ct,{order:5,children:["Timestamp ",tt(e.timestamp)," • Profit / Loss: ",tt(s)," • Conversions: ",tt(n)]})}),ce.jsxs(We.Col,{span:{xs:12,sm:4},children:[ce.jsx(ct,{order:5,children:"Listings"}),ce.jsx(M6,{listings:e.listings})]}),ce.jsxs(We.Col,{span:{xs:12,sm:4},children:[ce.jsx(ct,{order:5,children:"Positions"}),ce.jsx(F6,{position:e.position})]}),ce.jsxs(We.Col,{span:{xs:12,sm:4},children:[ce.jsx(ct,{order:5,children:"Profit / Loss"}),ce.jsx(B6,{timestamp:e.timestamp})]}),Object.entries(e.orderDepths).map(([l,u],_)=>ce.jsxs(We.Col,{span:{xs:12,sm:4},children:[ce.jsxs(ct,{order:5,children:[l," order depth"]}),ce.jsx(L6,{orderDepth:u})]},_)),Object.keys(e.orderDepths).length%3<=2&&ce.jsx(We.Col,{span:{xs:12,sm:4}}),Object.keys(e.orderDepths).length%3<=1&&ce.jsx(We.Col,{span:{xs:12,sm:4}}),ce.jsxs(We.Col,{span:{xs:12,sm:4},children:[ce.jsx(ct,{order:5,children:"Own trades"}),ce.jsx(tx,{trades:e.ownTrades})]}),ce.jsxs(We.Col,{span:{xs:12,sm:4},children:[ce.jsx(ct,{order:5,children:"Market trades"}),ce.jsx(tx,{trades:e.marketTrades})]}),ce.jsxs(We.Col,{span:{xs:12,sm:4},children:[ce.jsx(ct,{order:5,children:"Orders"}),ce.jsx(P6,{orders:t})]}),ce.jsxs(We.Col,{span:{xs:12,sm:4},children:[ce.jsx(ct,{order:5,children:"Plain value observations"}),ce.jsx(k6,{plainValueObservations:e.observations.plainValueObservations})]}),ce.jsxs(We.Col,{span:{xs:12,sm:8},children:[ce.jsx(ct,{order:5,children:"Conversion observations"}),ce.jsx(D6,{conversionObservations:e.observations.conversionObservations})]}),ce.jsxs(We.Col,{span:{xs:12,sm:6},children:[ce.jsx(ct,{order:5,children:"Sandbox logs"}),o?ce.jsx(Ai,{code:o,language:"markdown"}):ce.jsx(Ke,{children:"Timestamp has no sandbox logs"})]}),ce.jsxs(We.Col,{span:{xs:12,sm:6},children:[ce.jsx(ct,{order:5,children:"Algorithm logs"}),i?ce.jsx(Ai,{code:i,language:"markdown"}):ce.jsx(Ke,{children:"Timestamp has no algorithm logs"})]}),ce.jsxs(We.Col,{span:{xs:12,sm:6},children:[ce.jsx(ct,{order:5,children:"Previous trader data"}),e.traderData?ce.jsx(Ai,{code:e.traderData,language:"json"}):ce.jsx(Ke,{children:"Timestamp has no previous trader data"})]}),ce.jsxs(We.Col,{span:{xs:12,sm:6},children:[ce.jsx(ct,{order:5,children:"Next trader data"}),r?ce.jsx(Ai,{code:r,language:"json"}):ce.jsx(Ke,{children:"Timestamp has no next trader data"})]})]})}function G6(){const e=ut(l=>l.algorithm),t={};for(const l of e.data)t[l.state.timestamp]=l;const n=e.data[0].state.timestamp,r=e.data[e.data.length-1].state.timestamp,i=e.data[1].state.timestamp-e.data[0].state.timestamp,[o,a]=re.useState(n),s=[];for(let l=n;la(o===n?o:o-i)],["ArrowRight",()=>a(o===r?o:o+i)]]),ce.jsxs(yd,{title:"Timestamps",children:[ce.jsx(TE,{min:n,max:r,step:i,marks:s,label:l=>`Timestamp ${tt(l)}`,value:o,onChange:a,mb:"lg"}),t[o]?ce.jsx(U6,{row:t[o]}):ce.jsxs(Ke,{children:["No logs found for timestamp ",tt(o)]})]})}function Y6({symbol:e}){const t=ut(a=>a.algorithm),n=[],r=[],i=[];for(const a of t.data){const s=a.state.observations.conversionObservations[e];s!==void 0&&(n.push([a.state.timestamp,s.transportFees]),r.push([a.state.timestamp,s.importTariff]),i.push([a.state.timestamp,s.exportTariff]))}const o=[{type:"line",name:"Transport fees",data:n},{type:"line",name:"Import tariff",marker:{symbol:"triangle"},data:r},{type:"line",name:"Export tariff",marker:{symbol:"triangle-down"},data:i}];return ce.jsx(mi,{title:`${e} - Transport`,series:o})}function H6({symbol:e}){const t=ut(r=>r.algorithm),n=[{type:"column",name:"Bid 3",color:An(.5),data:[]},{type:"column",name:"Bid 2",color:An(.75),data:[]},{type:"column",name:"Bid 1",color:An(1),data:[]},{type:"column",name:"Ask 1",color:Nn(1),data:[]},{type:"column",name:"Ask 2",color:Nn(.75),data:[]},{type:"column",name:"Ask 3",color:Nn(.5),data:[]}];for(const r of t.activityLogs)if(r.product===e){for(let i=0;ia.algorithm),{search:t}=wr();if(e===null)return ce.jsx(MI,{to:`/${t}`});const n=new Set;for(const a of e.data)for(const s of Object.keys(a.state.observations.conversionObservations))n.add(s);let r=0;const i=e.activityLogs[e.activityLogs.length-1].timestamp;for(let a=e.activityLogs.length-1;a>=0&&e.activityLogs[a].timestamp==i;a--)r+=e.activityLogs[a].profitLoss;const o=[];return Object.keys(e.data[0].state.listings).sort((a,s)=>a.localeCompare(s)).forEach(a=>{o.push(ce.jsx(We.Col,{span:{xs:12,sm:6},children:ce.jsx(I6,{symbol:a})},`${a} - product price`)),o.push(ce.jsx(We.Col,{span:{xs:12,sm:6},children:ce.jsx(H6,{symbol:a})},`${a} - symbol`)),n.has(a)&&(o.push(ce.jsx(We.Col,{span:{xs:12,sm:6},children:ce.jsx(R6,{symbol:a})},`${a} - conversion price`)),o.push(ce.jsx(We.Col,{span:{xs:12,sm:6},children:ce.jsx(Y6,{symbol:a})},`${a} - transport`)),o.push(ce.jsx(We.Col,{span:{xs:12,sm:6},children:ce.jsx(x6,{symbol:a})},`${a} - environment`)),o.push(ce.jsx(We.Col,{span:{xs:12,sm:6}},`${a} - environment`)))}),Object.keys(e.data[0].state.observations.plainValueObservations).sort((a,s)=>a.localeCompare(s)).forEach(a=>{o.push(ce.jsx(We.Col,{span:{xs:12,sm:6},children:ce.jsx(O6,{symbol:a})},`${a} - plain value observation`))}),ce.jsx($s,{fluid:!0,children:ce.jsxs(We,{children:[ce.jsx(We.Col,{span:12,children:ce.jsx(yd,{children:ce.jsx(Mi,{children:ce.jsxs(ct,{order:2,children:["Final Profit / Loss: ",tt(r)]})})})}),ce.jsx(We.Col,{span:{xs:12,sm:6},children:ce.jsx(w6,{})}),ce.jsx(We.Col,{span:{xs:12,sm:6},children:ce.jsx(N6,{})}),o,ce.jsx(We.Col,{span:12,children:ce.jsx(G6,{})}),e.summary&&ce.jsx(We.Col,{span:12,children:ce.jsx(x3,{})})]})})}const $6={colors:{dark:["#C1C2C5","#A6A7AB","#909296","#5c5f66","#373A40","#2C2E33","#25262b","#1A1B1E","#141517","#101113"]}},V6=lG(p_(ce.jsxs(Ga,{path:"/",element:ce.jsx(_2,{}),children:[ce.jsx(Ga,{path:"/",element:ce.jsx(R3,{})}),ce.jsx(Ga,{path:"/visualizer",element:ce.jsx(z6,{})}),ce.jsx(Ga,{path:"*",element:ce.jsx(MI,{to:"/"})})]})),{basename:"/imc-prosperity-2-visualizer/"});function W6(){const e=ut(t=>t.colorScheme);return ce.jsx(LA,{theme:$6,defaultColorScheme:e,children:ce.jsx(fG,{router:V6})})}rg.createRoot(document.getElementById("root")).render(ce.jsx(pe.StrictMode,{children:ce.jsx(W6,{})})); diff --git a/index.html b/index.html index def06c0..5f27f13 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ IMC Prosperity 2 Visualizer - +