/* Highcharts JS v9.1.0 (2021-05-03) Boost module (c) 2010-2021 Highsoft AS Author: Torstein Honsi License: www.highcharts.com/license */ (function(b){"object"===typeof module&&module.exports?(b["default"]=b,module.exports=b):"function"===typeof define&&define.amd?define("highcharts/modules/boost",["highcharts"],function(r){b(r);b.Highcharts=r;return b}):b("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(b){function r(b,D,u,h){b.hasOwnProperty(D)||(b[D]=h.apply(null,u))}b=b?b._modules:{};r(b,"Extensions/Boost/Boostables.js",[],function(){return"area arearange column columnrange bar line scatter heatmap bubble treemap".split(" ")}); r(b,"Extensions/Boost/BoostableMap.js",[b["Extensions/Boost/Boostables.js"]],function(b){var q={};b.forEach(function(b){q[b]=1});return q});r(b,"Extensions/Boost/WGLShader.js",[b["Core/Utilities.js"]],function(b){var q=b.clamp,u=b.error,h=b.pick;return function(c){function b(){K.length&&u("[highcharts boost] shader error - "+K.join("\n"))}function l(a,n){var d=c.createShader("vertex"===n?c.VERTEX_SHADER:c.FRAGMENT_SHADER);c.shaderSource(d,a);c.compileShader(d);return c.getShaderParameter(d,c.COMPILE_STATUS)? d:(K.push("when compiling "+n+" shader:\n"+c.getShaderInfoLog(d)),!1)}function k(){function d(a){return c.getUniformLocation(e,a)}var n=l("#version 100\n#define LN10 2.302585092994046\nprecision highp float;\nattribute vec4 aVertexPosition;\nattribute vec4 aColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform mat4 uPMatrix;\nuniform float pSize;\nuniform float translatedThreshold;\nuniform bool hasThreshold;\nuniform bool skipTranslation;\nuniform float xAxisTrans;\nuniform float xAxisMin;\nuniform float xAxisMinPad;\nuniform float xAxisPointRange;\nuniform float xAxisLen;\nuniform bool xAxisPostTranslate;\nuniform float xAxisOrdinalSlope;\nuniform float xAxisOrdinalOffset;\nuniform float xAxisPos;\nuniform bool xAxisCVSCoord;\nuniform bool xAxisIsLog;\nuniform bool xAxisReversed;\nuniform float yAxisTrans;\nuniform float yAxisMin;\nuniform float yAxisMinPad;\nuniform float yAxisPointRange;\nuniform float yAxisLen;\nuniform bool yAxisPostTranslate;\nuniform float yAxisOrdinalSlope;\nuniform float yAxisOrdinalOffset;\nuniform float yAxisPos;\nuniform bool yAxisCVSCoord;\nuniform bool yAxisIsLog;\nuniform bool yAxisReversed;\nuniform bool isBubble;\nuniform bool bubbleSizeByArea;\nuniform float bubbleZMin;\nuniform float bubbleZMax;\nuniform float bubbleZThreshold;\nuniform float bubbleMinSize;\nuniform float bubbleMaxSize;\nuniform bool bubbleSizeAbs;\nuniform bool isInverted;\nfloat bubbleRadius(){\nfloat value = aVertexPosition.w;\nfloat zMax = bubbleZMax;\nfloat zMin = bubbleZMin;\nfloat radius = 0.0;\nfloat pos = 0.0;\nfloat zRange = zMax - zMin;\nif (bubbleSizeAbs){\nvalue = value - bubbleZThreshold;\nzMax = max(zMax - bubbleZThreshold, zMin - bubbleZThreshold);\nzMin = 0.0;\n}\nif (value < zMin){\nradius = bubbleZMin / 2.0 - 1.0;\n} else {\npos = zRange > 0.0 ? (value - zMin) / zRange : 0.5;\nif (bubbleSizeByArea && pos > 0.0){\npos = sqrt(pos);\n}\nradius = ceil(bubbleMinSize + pos * (bubbleMaxSize - bubbleMinSize)) / 2.0;\n}\nreturn radius * 2.0;\n}\nfloat translate(float val,\nfloat pointPlacement,\nfloat localA,\nfloat localMin,\nfloat minPixelPadding,\nfloat pointRange,\nfloat len,\nbool cvsCoord,\nbool isLog,\nbool reversed\n){\nfloat sign = 1.0;\nfloat cvsOffset = 0.0;\nif (cvsCoord) {\nsign *= -1.0;\ncvsOffset = len;\n}\nif (isLog) {\nval = log(val) / LN10;\n}\nif (reversed) {\nsign *= -1.0;\ncvsOffset -= sign * len;\n}\nreturn sign * (val - localMin) * localA + cvsOffset + \n(sign * minPixelPadding);\n}\nfloat xToPixels(float value) {\nif (skipTranslation){\nreturn value;// + xAxisPos;\n}\nreturn translate(value, 0.0, xAxisTrans, xAxisMin, xAxisMinPad, xAxisPointRange, xAxisLen, xAxisCVSCoord, xAxisIsLog, xAxisReversed);// + xAxisPos;\n}\nfloat yToPixels(float value, float checkTreshold) {\nfloat v;\nif (skipTranslation){\nv = value;// + yAxisPos;\n} else {\nv = translate(value, 0.0, yAxisTrans, yAxisMin, yAxisMinPad, yAxisPointRange, yAxisLen, yAxisCVSCoord, yAxisIsLog, yAxisReversed);// + yAxisPos;\nif (v > yAxisLen) {\nv = yAxisLen;\n}\n}\nif (checkTreshold > 0.0 && hasThreshold) {\nv = min(v, translatedThreshold);\n}\nreturn v;\n}\nvoid main(void) {\nif (isBubble){\ngl_PointSize = bubbleRadius();\n} else {\ngl_PointSize = pSize;\n}\nvColor = aColor;\nif (skipTranslation && isInverted) {\ngl_Position = uPMatrix * vec4(aVertexPosition.y + yAxisPos, aVertexPosition.x + xAxisPos, 0.0, 1.0);\n} else if (isInverted) {\ngl_Position = uPMatrix * vec4(yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, xToPixels(aVertexPosition.x) + xAxisPos, 0.0, 1.0);\n} else {\ngl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.x) + xAxisPos, yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, 0.0, 1.0);\n}\n}", "vertex"),k=l("precision highp float;\nuniform vec4 fillColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform sampler2D uSampler;\nuniform bool isCircle;\nuniform bool hasColor;\nvoid main(void) {\nvec4 col = fillColor;\nvec4 tcol = texture2D(uSampler, gl_PointCoord.st);\nif (hasColor) {\ncol = vColor;\n}\nif (isCircle) {\ncol *= tcol;\nif (tcol.r < 0.0) {\ndiscard;\n} else {\ngl_FragColor = col;\n}\n} else {\ngl_FragColor = col;\n}\n}","fragment");if(!n||!k)return e=!1,b(),!1; e=c.createProgram();c.attachShader(e,n);c.attachShader(e,k);c.linkProgram(e);if(!c.getProgramParameter(e,c.LINK_STATUS))return K.push(c.getProgramInfoLog(e)),b(),e=!1;c.useProgram(e);c.bindAttribLocation(e,0,"aVertexPosition");f=d("uPMatrix");m=d("pSize");t=d("fillColor");y=d("isBubble");L=d("bubbleSizeAbs");G=d("bubbleSizeByArea");p=d("uSampler");E=d("skipTranslation");w=d("isCircle");a=d("isInverted");return!0}function A(a,n){c&&e&&(a=v[a]=v[a]||c.getUniformLocation(e,a),c.uniform1f(a,n))}var v= {},e,f,m,t,y,L,G,E,w,a,K=[],p;return c&&!k()?!1:{psUniform:function(){return m},pUniform:function(){return f},fillColorUniform:function(){return t},setBubbleUniforms:function(a,n,p){var d=a.options,f=Number.MAX_VALUE,b=-Number.MAX_VALUE;c&&e&&"bubble"===a.type&&(f=h(d.zMin,q(n,!1===d.displayNegative?d.zThreshold:-Number.MAX_VALUE,f)),b=h(d.zMax,Math.max(b,p)),c.uniform1i(y,1),c.uniform1i(w,1),c.uniform1i(G,"width"!==a.options.sizeBy),c.uniform1i(L,a.options.sizeByAbsoluteValue),A("bubbleZMin",f), A("bubbleZMax",b),A("bubbleZThreshold",a.options.zThreshold),A("bubbleMinSize",a.minPxSize),A("bubbleMaxSize",a.maxPxSize))},bind:function(){c&&e&&c.useProgram(e)},program:function(){return e},create:k,setUniform:A,setPMatrix:function(a){c&&e&&c.uniformMatrix4fv(f,!1,a)},setColor:function(a){c&&e&&c.uniform4f(t,a[0]/255,a[1]/255,a[2]/255,a[3])},setPointSize:function(a){c&&e&&c.uniform1f(m,a)},setSkipTranslation:function(a){c&&e&&c.uniform1i(E,!0===a?1:0)},setTexture:function(a){c&&e&&c.uniform1i(p, a)},setDrawAsCircle:function(a){c&&e&&c.uniform1i(w,a?1:0)},reset:function(){c&&e&&(c.uniform1i(y,0),c.uniform1i(w,0))},setInverted:function(d){c&&e&&c.uniform1i(a,d)},destroy:function(){c&&e&&(c.deleteProgram(e),e=!1)}}}});r(b,"Extensions/Boost/WGLVBuffer.js",[],function(){return function(b,D,u){function h(){c&&(b.deleteBuffer(c),q=c=!1);A=0;l=u||2;v=[]}var c=!1,q=!1,l=u||2,k=!1,A=0,v;return{destroy:h,bind:function(){if(!c)return!1;b.vertexAttribPointer(q,l,b.FLOAT,!1,0,0)},data:v,build:function(e, f,m){var t;v=e||[];if(!(v&&0!==v.length||k))return h(),!1;l=m||l;c&&b.deleteBuffer(c);k||(t=new Float32Array(v));c=b.createBuffer();b.bindBuffer(b.ARRAY_BUFFER,c);b.bufferData(b.ARRAY_BUFFER,k||t,b.STATIC_DRAW);q=b.getAttribLocation(D.program(),f);b.enableVertexAttribArray(q);return!0},render:function(e,f,m){var t=k?k.length:v.length;if(!c||!t)return!1;if(!e||e>t||0>e)e=0;if(!f||f>t)f=t;b.drawArrays(b[(m||"points").toUpperCase()],e/l,(f-e)/l);return!0},allocate:function(b){A=-1;k=new Float32Array(4* b)},push:function(b,f,c,t){k&&(k[++A]=b,k[++A]=f,k[++A]=c,k[++A]=t)}}}});r(b,"Extensions/Boost/WGLRenderer.js",[b["Core/Color/Color.js"],b["Extensions/Boost/WGLShader.js"],b["Extensions/Boost/WGLVBuffer.js"],b["Core/Globals.js"],b["Core/Utilities.js"]],function(b,D,u,h,c){var q=b.parse,l=h.doc,k=c.isNumber,A=c.isObject,v=c.merge,e=c.objectEach,f=c.pick;return function(c){function m(a){if(a.isSeriesBoosting){var d=!!a.options.stacking;var b=a.xData||a.options.xData||a.processedXData;d=(d?a.data:b|| a.options.data).length;"treemap"===a.type?d*=12:"heatmap"===a.type?d*=6:ha[a.type]&&(d*=2);return d}return 0}function y(){g.clear(g.COLOR_BUFFER_BIT|g.DEPTH_BUFFER_BIT)}function L(a,d){function g(a){a&&(d.colorData.push(a[0]),d.colorData.push(a[1]),d.colorData.push(a[2]),d.colorData.push(a[3]))}function p(a,d,b,p,c){g(c);B.usePreallocated?(n.push(a,d,b?1:0,p||1),na+=4):(Q.push(a),Q.push(d),Q.push(b?1:0),Q.push(p||1))}function f(){d.segments.length&&(d.segments[d.segments.length-1].to=Q.length||na)} function c(){d.segments.length&&d.segments[d.segments.length-1].from===(Q.length||na)||(f(),d.segments.push({from:Q.length||na}))}function w(a,d,b,n,c){g(c);p(a+b,d);g(c);p(a,d);g(c);p(a,d+n);g(c);p(a,d+n);g(c);p(a+b,d+n);g(c);p(a+b,d)}function K(a,b){B.useGPUTranslations||(d.skipTranslation=!0,a.x=u.toPixels(a.x,!0),a.y=L.toPixels(a.y,!0));b?Q=[a.x,a.y,0,2].concat(Q):p(a.x,a.y,0,2)}var m=a.pointArrayMap&&"low,high"===a.pointArrayMap.join(","),S=a.chart,e=a.options,T=!!e.stacking,t=e.data,k=a.xAxis.getExtremes(), h=k.min;k=k.max;var y=a.yAxis.getExtremes(),N=y.min;y=y.max;var l=a.xData||e.xData||a.processedXData,v=a.yData||e.yData||a.processedYData,G=a.zData||e.zData||a.processedZData,L=a.yAxis,u=a.xAxis,E=a.chart.plotWidth,D=!l||0===l.length,x=e.connectNulls,C=a.points||!1,H=!1,r=!1,J;l=T?a.data:l||t;var ma={x:Number.MAX_VALUE,y:0},P={x:-Number.MAX_VALUE,y:0},O=0,Ga=!1,M=-1,X=!1,ea=!1,Y="undefined"===typeof S.index,za=!1,V=!1,z=!1,Pa=ha[a.type],Aa=!1,Ka=!0,Ha=!0,Qa=e.zoneAxis||"y",la=e.zones||!1,fa=!1,Ia= e.threshold,Ba=!1;if(!(e.boostData&&0 d.node.levelDynamic)return 1;if(a.node.levelDynamicd.zMax&&(d.zMax=C[2]);C[2]d.zMax&&(d.zMax=G[M]),G[M]=h&&ea<=k&&(za=!0);X&&X>=h&&X<=k&&(V=!0);if(m){D&&(F=C.slice(1,3));var ta=F[0];F=F[1]}else T&&(I=C.x,F=C.stackY,ta=F-C.y);null!==N&&"undefined"!==typeof N&&null!==y&&"undefined"!==typeof y&&(Ka=F>=N&&F<=y);I>k&&P.xh&&(ma.x=I,ma.y=F);if(null!==F||!x)if(null!==F&&(Ka||za||V)){if((ea>=h||I>=h)&&(X<=k||I<=k)&&(Aa=!0),Aa||za||V){Ba&&I-X>Ba&&c();la&&(z=fa.rgba.slice(), la.some(function(a,d){d=la[d-1];if("x"===Qa){if("undefined"!==typeof a.value&&I<=a.value){if(!d||I>=d.value)z=q(a.color).rgba;return!0}return!1}if("undefined"!==typeof a.value&&F<=a.value){if(!d||F>=d.value)z=q(a.color).rgba;return!0}return!1}),z[0]/=255,z[1]/=255,z[2]/=255);if(!B.useGPUTranslations&&(d.skipTranslation=!0,I=u.toPixels(I,!0),F=L.toPixels(F,!0),I>E&&"points"===d.drawMode))continue;d.hasMarkers&&Aa&&!1!==H&&(a.closestPointRangePx=Math.min(a.closestPointRangePx,Math.abs(I-H)));if(!B.useGPUTranslations&& !B.usePreallocated&&H&&1>Math.abs(I-H)&&r&&1>Math.abs(F-r))B.debug.showSkipSummary&&++O;else{if(Pa){H=ta;if(!1===ta||"undefined"===typeof ta)H=0>F?F:0;m||T||(H=Math.max(null===Ia?N:Ia,N));B.useGPUTranslations||(H=L.toPixels(H,!0));p(I,H,0,0,z)}e.step&&!Ha&&p(I,r,0,2,z);p(I,F,0,"bubble"===a.type?Ja||1:2,z);H=I;r=F;Ga=!0;Ha=!1}}}else c()}else c()}B.debug.showSkipSummary&&console.log("skipped points:",O);Ga||!1===x||"line_strip"!==a.drawMode||(ma.x-Number.MAX_VALUE&&K(P))}f()}} function G(){J=[];r.data=Q=[];x=[];n&&n.destroy()}function E(a){d&&(d.setUniform("xAxisTrans",a.transA),d.setUniform("xAxisMin",a.min),d.setUniform("xAxisMinPad",a.minPixelPadding),d.setUniform("xAxisPointRange",a.pointRange),d.setUniform("xAxisLen",a.len),d.setUniform("xAxisPos",a.pos),d.setUniform("xAxisCVSCoord",!a.horiz),d.setUniform("xAxisIsLog",!!a.logarithmic),d.setUniform("xAxisReversed",!!a.reversed))}function w(a){d&&(d.setUniform("yAxisTrans",a.transA),d.setUniform("yAxisMin",a.min),d.setUniform("yAxisMinPad", a.minPixelPadding),d.setUniform("yAxisPointRange",a.pointRange),d.setUniform("yAxisLen",a.len),d.setUniform("yAxisPos",a.pos),d.setUniform("yAxisCVSCoord",!a.horiz),d.setUniform("yAxisIsLog",!!a.logarithmic),d.setUniform("yAxisReversed",!!a.reversed))}function a(a,b){d.setUniform("hasThreshold",a);d.setUniform("translatedThreshold",b)}function K(p){if(p)N=p.chartWidth||800,H=p.chartHeight||400;else return!1;if(!(g&&N&&H&&d))return!1;B.debug.timeRendering&&console.time("gl rendering");g.canvas.width= N;g.canvas.height=H;d.bind();g.viewport(0,0,N,H);d.setPMatrix([2/N,0,0,0,0,-(2/H),0,0,0,0,-2,0,-1,1,-1,1]);12*((e.marker? e.marker.radius:10)||10));m=V[m&&m.symbol||c.series.symbol]||V.circle;if(!(0===c.segments.length||c.segmentslength&&c.segments[0].from===c.segments[0].to)){m.isReady&&(g.bindTexture(g.TEXTURE_2D,m.handle),d.setTexture(m.handle));p.styledMode?m=c.series.markerGroup&&c.series.markerGroup.getStyle("fill"):(m="points"===c.drawMode&&c.series.pointAttribs&&c.series.pointAttribs().fill||c.series.color,e.colorByPoint&&(m=c.series.chart.options.colors[K]));c.series.fillOpacity&&e.fillOpacity&&(m=(new b(m)).setOpacity(f(e.fillOpacity, 1)).get());m=q(m).rgba;B.useAlpha||(m[3]=1);"lines"===c.drawMode&&B.useAlpha&&1>m[3]&&(m[3]/=10);"add"===e.boostBlending?(g.blendFunc(g.SRC_ALPHA,g.ONE),g.blendEquation(g.FUNC_ADD)):"mult"===e.boostBlending||"multiply"===e.boostBlending?g.blendFunc(g.DST_COLOR,g.ZERO):"darken"===e.boostBlending?(g.blendFunc(g.ONE,g.ONE),g.blendEquation(g.FUNC_MIN)):g.blendFuncSeparate(g.SRC_ALPHA,g.ONE_MINUS_SRC_ALPHA,g.ONE,g.ONE_MINUS_SRC_ALPHA);d.reset();0=J.length?J.push(d):J[a.index]=d;L(a,d);B.debug.timeSeriesProcessing&&console.timeEnd("building "+a.type+" series")},setSize:function(a, c){N===a&&H===c||!d||(N=a,H=c,d.bind(),d.setPMatrix([2/N,0,0,0,0,-(2/H),0,0,0,0,-2,0,-1,1,-1,1]))},inited:function(){return P},setThreshold:a,init:function(a,c){function b(a,d){var c={isReady:!1,texture:l.createElement("canvas"),handle:g.createTexture()},b=c.texture.getContext("2d");V[a]=c;c.texture.width=512;c.texture.height=512;b.mozImageSmoothingEnabled=!1;b.webkitImageSmoothingEnabled=!1;b.msImageSmoothingEnabled=!1;b.imageSmoothingEnabled=!1;b.strokeStyle="rgba(255, 255, 255, 0)";b.fillStyle= "#FFF";d(b);try{g.activeTexture(g.TEXTURE0),g.bindTexture(g.TEXTURE_2D,c.handle),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,g.RGBA,g.UNSIGNED_BYTE,c.texture),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_S,g.CLAMP_TO_EDGE),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_T,g.CLAMP_TO_EDGE),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MAG_FILTER,g.LINEAR),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MIN_FILTER,g.LINEAR),g.bindTexture(g.TEXTURE_2D,null),c.isReady=!0}catch(U){}}var p=0,e=["webgl","experimental-webgl","moz-webgl", "webkit-3d"];P=!1;if(!a)return!1;for(B.debug.timeSetup&&console.time("gl setup");p=(h.options.boostThreshold||Number.MAX_VALUE)&&++e)}b.boostForceChartBoost=k&&(l===b.series.length&&0=y&&f<=A);if(null!==f&&p>=u&&p<=D&&e)if(a=g.toPixels(p,!0),B){if("undefined"===typeof U||a===L){Z||(d=f);if("undefined"===typeof ca||f>ba)ba=f,ca=b;if("undefined"===typeof U||dplease use a modern browser")});m(c.prototype,{getContext:function(){var a=this.chart,b=a.chartWidth,c=a.chartHeight,d=a.seriesGroup||this.group,e=this,f=function(a,b,d,c,e,f,g){a.call(this,d,b,c,e,f,g)};a.isChartSeriesBoosting()&& (e=a,d=a.seriesGroup);var g=e.ctx;e.canvas||(e.canvas=q.createElement("canvas"),e.renderTarget=a.renderer.image("",0,0,b,c).addClass("highcharts-boost-canvas").add(d),e.ctx=g=e.canvas.getContext("2d"),a.inverted&&["moveTo","lineTo","rect","arc"].forEach(function(a){E(g,a,f)}),e.boostCopy=function(){e.renderTarget.attr({href:e.canvas.toDataURL("image/png")})},e.boostClear=function(){g.clearRect(0,0,e.canvas.width,e.canvas.height);e===this&&e.renderTarget.attr({href:""})},e.boostClipRect=a.renderer.clipRect(), e.renderTarget.clip(e.boostClipRect));e.canvas.width!==b&&(e.canvas.width=b);e.canvas.height!==c&&(e.canvas.height=c);e.renderTarget.attr({x:0,y:0,width:b,height:c,style:"pointer-events: none",href:""});e.boostClipRect.attr(a.getBoostClipRect(e));return g},canvasToSVG:function(){this.chart.isChartSeriesBoosting()?this.boostClear&&this.boostClear():(this.boostCopy||this.chart.boostCopy)&&(this.boostCopy||this.chart.boostCopy)()},cvsLineTo:function(a,b,c){a.lineTo(b,c)},renderCanvas:function(){var a= this,b=a.options,c=a.chart,d=this.xAxis,e=this.yAxis,q=(c.options.boost||{}).timeRendering||!1,g=0,A=a.processedXData,H=a.processedYData,E=b.data,x=d.getExtremes(),L=x.min,P=x.max;x=e.getExtremes();var J=x.min,V=x.max,ha={},Y,B=!!a.sampling,S=b.marker&&b.marker.radius,T=this.cvsDrawPoint,Z=b.lineWidth?this.cvsLineTo:void 0,ia=S&&1>=S?this.cvsMarkerSquare:this.cvsMarkerCircle,oa=this.cvsStrokeBatch||1E3,ua=!1!==b.enableMouseTracking,ja;x=b.threshold;var R=e.getThreshold(x),ba=y(x),U=R,ca=this.fill, qa=a.pointArrayMap&&"low,high"===a.pointArrayMap.join(","),ka=!!b.stacking,da=a.cropStart||0;x=c.options.loading;var ra=a.requireSorting,sa,La=b.connectNulls,Da=!A,va,wa,aa,pa,xa,W=ka?a.data:A||E,Ma=a.fillOpacity?(new r(a.color)).setOpacity(G(b.fillOpacity,.75)).get():a.color,C=function(){ca?(O.fillStyle=Ma,O.fill()):(O.strokeStyle=a.color,O.lineWidth=b.lineWidth,O.stroke())},Ea=function(b,d,e,f){0===g&&(O.beginPath(),Z&&(O.lineJoin="round"));c.scroller&&"highcharts-navigator-series"===a.options.className? (d+=c.scroller.top,e&&(e+=c.scroller.top)):d+=c.plotTop;b+=c.plotLeft;sa?O.moveTo(b,d):T?T(O,b,d,e,ja):Z?Z(O,b,d):ia&&ia.call(a,O,b,d,S,f);g+=1;g===oa&&(C(),g=0);ja={clientX:b,plotY:d,yBottom:e}},Na="x"===b.findNearestPointBy,Fa=this.xData||this.options.xData||this.processedXData||!1,ya=function(a,b,f){xa=Na?a:a+","+b;ua&&!ha[xa]&&(ha[xa]=!0,c.inverted&&(a=d.len-a,b=e.len-b),Oa.push({x:Fa?Fa[da+f]:!1,clientX:a,plotX:a,plotY:b,i:da+f}))};this.renderTarget&&this.renderTarget.attr({href:""});(this.points|| this.graph)&&this.destroyGraphics();a.plotGroup("group","series",a.visible?"visible":"hidden",b.zIndex,c.seriesGroup);a.markerGroup=a.group;f(a,"destroy",function(){a.markerGroup=null});var Oa=this.points=[];var O=this.getContext();a.buildKDTree=v;this.boostClear&&this.boostClear();this.visible&&(99999=L&&w<=P&&(g=!0);h&&h>=L&&h<=P&&(p=!0);if(qa){Da&&(n=b.slice(1,3));var K=n[0];n=n[1]}else ka&&(k=b.x,n=b.stackY,K=n-b.y);b=null===n;ra||(m=n>=J&&n<=V);if(!b&&(k>=L&&k<=P&&m||g||p))if(k=Math.round(d.toPixels(k, !0)),B){if("undefined"===typeof aa||k===Y){qa||(K=n);if("undefined"===typeof pa||n>wa)wa=n,pa=f;if("undefined"===typeof aa||K=b.length?(a.y=Math.min(b[0].pos,a.y),a.height=b[0].pos-this.plotTop+b[0].len):a.height=this.plotHeight);return a};h.prototype.getPoint=function(b){var a=b,c=this.xData||this.options.xData||this.processedXData||!1;!b||b instanceof this.pointClass||(a=(new this.pointClass).init(this,this.options.data[b.i],c?c[b.i]:void 0),a.category=t(this.xAxis.categories?this.xAxis.categories[a.x]:a.x,a.x),a.dist=b.dist,a.distX=b.distX,a.plotX=b.plotX,a.plotY=b.plotY, a.index=b.i,a.isInside=this.isPointInside(b));return a};y(h.prototype,"searchPoint",function(b){return this.getPoint(b.apply(this,[].slice.call(arguments,1)))});y(u.prototype,"haloPath",function(b){var a=this.series,c=this.plotX,e=this.plotY,d=a.chart.inverted;a.isSeriesBoosting&&d&&(this.plotX=a.yAxis.len-e,this.plotY=a.xAxis.len-c);var f=b.apply(this,Array.prototype.slice.call(arguments,1));a.isSeriesBoosting&&d&&(this.plotX=c,this.plotY=e);return f});y(h.prototype,"markerAttribs",function(b,a){var c= a.plotX,e=a.plotY,d=this.chart.inverted;this.isSeriesBoosting&&d&&(a.plotX=this.yAxis.len-e,a.plotY=this.xAxis.len-c);var f=b.apply(this,Array.prototype.slice.call(arguments,1));this.isSeriesBoosting&&d&&(a.plotX=c,a.plotY=e);return f});c(h,"destroy",function(){var b=this,a=b.chart;a.markerGroup===b.markerGroup&&(b.markerGroup=null);a.hoverPoints&&(a.hoverPoints=a.hoverPoints.filter(function(a){return a.series===b}));a.hoverPoint&&a.hoverPoint.series===b&&(a.hoverPoint=null)});y(h.prototype,"getExtremes", function(b){return this.isSeriesBoosting&&this.hasExtremes&&this.hasExtremes()?{}:b.apply(this,Array.prototype.slice.call(arguments,1))});["translate","generatePoints","drawTracker","drawPoints","render"].forEach(function(b){function a(a){var c=this.options.stacking&&("translate"===b||"generatePoints"===b);if(!this.isSeriesBoosting||c||!D(this.chart)||"heatmap"===this.type||"treemap"===this.type||!A[this.type]||0===this.options.boostThreshold)a.call(this);else if(this[b+"Canvas"])this[b+"Canvas"]()} y(h.prototype,b,a);"translate"===b&&"column bar arearange columnrange heatmap treemap".split(" ").forEach(function(c){q[c]&&y(q[c].prototype,b,a)})});y(h.prototype,"processData",function(b){function a(a){return c.chart.isChartSeriesBoosting()||(a?a.length:0)>=(c.options.boostThreshold||Number.MAX_VALUE)}var c=this,h=this.options.data;D(this.chart)&&A[this.type]?(a(h)&&"heatmap"!==this.type&&"treemap"!==this.type&&!this.options.stacking&&this.hasExtremes&&this.hasExtremes(!0)||(b.apply(this,Array.prototype.slice.call(arguments, 1)),h=this.processedXData),(this.isSeriesBoosting=a(h))?(this.options.data&&this.options.data.length&&(h=this.getFirstValidPoint(this.options.data),m(h)||f(h)||e(12,!1,this.chart)),this.enterBoost()):this.exitBoost&&this.exitBoost()):b.apply(this,Array.prototype.slice.call(arguments,1))});c(h,"hide",function(){this.canvas&&this.renderTarget&&(this.ogl&&this.ogl.clear(),this.boostClear())});h.prototype.enterBoost=function(){this.alteredByBoost=[];["allowDG","directTouch","stickyTracking"].forEach(function(b){this.alteredByBoost.push({prop:b, val:this[b],own:Object.hasOwnProperty.call(this,b)})},this);this.directTouch=this.allowDG=!1;this.finishedAnimating=this.stickyTracking=!0;this.labelBySeries&&(this.labelBySeries=this.labelBySeries.destroy())};h.prototype.exitBoost=function(){(this.alteredByBoost||[]).forEach(function(b){b.own?this[b.prop]=b.val:delete this[b.prop]},this);this.boostClear&&this.boostClear()};h.prototype.hasExtremes=function(b){var a=this.options,c=this.xAxis&&this.xAxis.options,e=this.yAxis&&this.yAxis.options,d=this.colorAxis&& this.colorAxis.options;return a.data.length>(a.boostThreshold||Number.MAX_VALUE)&&m(e.min)&&m(e.max)&&(!b||m(c.min)&&m(c.max))&&(!d||m(d.min)&&m(d.max))};h.prototype.destroyGraphics=function(){var b=this,a=this,c=this.points,e,d;if(c)for(d=0;d