diff --git a/preview/big-number-trend/big_number_trend.js b/preview/big-number-trend/big_number_trend.js new file mode 100644 index 0000000..d8a445b --- /dev/null +++ b/preview/big-number-trend/big_number_trend.js @@ -0,0 +1,2 @@ +/*! For license information please see big_number_trend.js.LICENSE.txt */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.big_number_trend=e():t.big_number_trend=e()}(self,(function(){return(()=>{var t={840:function(t,e,i){"use strict";var r,n,o;n="undefined"!=typeof window?window:this,o=function(t){function e(t,e,i,r){t.hasOwnProperty(e)||(t[e]=r.apply(null,i))}var i={};return e(i,"Core/Globals.js",[],(function(){var e,i=void 0!==t?t:"undefined"!=typeof window?window:{};return function(t){t.SVG_NS="http://www.w3.org/2000/svg",t.product="Highcharts",t.version="9.3.2",t.win=i,t.doc=t.win.document,t.svg=t.doc&&t.doc.createElementNS&&!!t.doc.createElementNS(t.SVG_NS,"svg").createSVGRect,t.userAgent=t.win.navigator&&t.win.navigator.userAgent||"",t.isChrome=-1!==t.userAgent.indexOf("Chrome"),t.isFirefox=-1!==t.userAgent.indexOf("Firefox"),t.isMS=/(edge|msie|trident)/i.test(t.userAgent)&&!t.win.opera,t.isSafari=!t.isChrome&&-1!==t.userAgent.indexOf("Safari"),t.isTouchDevice=/(Mobile|Android|Windows Phone)/.test(t.userAgent),t.isWebKit=-1!==t.userAgent.indexOf("AppleWebKit"),t.deg2rad=2*Math.PI/360,t.hasBidiBug=t.isFirefox&&4>parseInt(t.userAgent.split("Firefox/")[1],10),t.hasTouch=!!t.win.TouchEvent,t.marginNames=["plotTop","marginRight","marginBottom","plotLeft"],t.noop=function(){},t.supportsPassiveEvents=function(){var e=!1;if(!t.isMS){var i=Object.defineProperty({},"passive",{get:function(){e=!0}});t.win.addEventListener&&t.win.removeEventListener&&(t.win.addEventListener("testPassive",t.noop,i),t.win.removeEventListener("testPassive",t.noop,i))}return e}(),t.charts=[],t.dateFormats={},t.seriesTypes={},t.symbolSizes={},t.chartCount=0}(e||(e={})),e})),e(i,"Core/Utilities.js",[i["Core/Globals.js"]],(function(t){function e(i,r,n,o){var s=r?"Highcharts error":"Highcharts warning";32===i&&(i=s+": Deprecated member");var a=h(i),l=a?s+" #"+i+": www.highcharts.com/errors/"+i+"/":i.toString();if(void 0!==o){var c="";a&&(l+="?"),g(o,(function(t,e){c+="\n - "+e+": "+t,a&&(l+=encodeURI(e)+"="+encodeURI(t))})),l+=c}y(t,"displayError",{chart:n,code:i,message:l,params:o},(function(){if(r)throw Error(l);b.console&&-1===e.messages.indexOf(l)&&console.warn(l)})),e.messages.push(l)}function i(t,e){return parseInt(t,e||10)}function r(t){return"string"==typeof t}function n(t){return"[object Array]"===(t=Object.prototype.toString.call(t))||"[object Array Iterator]"===t}function o(t,e){return!(!t||"object"!=typeof t||e&&n(t))}function s(t){return o(t)&&"number"==typeof t.nodeType}function a(t){var e=t&&t.constructor;return!(!o(t,!0)||s(t)||!e||!e.name||"Object"===e.name)}function h(t){return"number"==typeof t&&!isNaN(t)&&1/0>t&&-1/0i&&(i=t[e]);return i},arrayMin:function(t){for(var e=t.length,i=t[0];e--;)t[e]e?t=o-1&&(o=Math.floor(s)),Math.max(0,o-(a(n,"padding-left",!0)||0)-(a(n,"padding-right",!0)||0));if("height"===o)return Math.max(0,Math.min(n.offsetHeight,n.scrollHeight)-(a(n,"padding-top",!0)||0)-(a(n,"padding-bottom",!0)||0));if(b.getComputedStyle||e(27,!0),n=b.getComputedStyle(n,void 0)){var h=n.getPropertyValue(o);p(s,"opacity"!==o)&&(h=i(h))}return h},inArray:function(t,i,r){return e(32,!1,void 0,{"Highcharts.inArray":"use Array.indexOf"}),i.indexOf(t,r)},isArray:n,isClass:a,isDOMElement:s,isFunction:function(t){return"function"==typeof t},isNumber:h,isObject:o,isString:r,keys:function(t){return e(32,!1,void 0,{"Highcharts.keys":"use Object.keys"}),Object.keys(t)},merge:function(){var t,e=arguments,i={},r=function(t,e){return"object"!=typeof t&&(t={}),g(e,(function(i,n){"__proto__"!==n&&"constructor"!==n&&(!o(i,!0)||a(i)||s(i)?t[n]=e[n]:t[n]=r(t[n]||{},i))})),t};!0===e[0]&&(i=e[1],e=Array.prototype.slice.call(e,2));var n=e.length;for(t=0;t=i&&(e=[1/i]))),r=0;r=t||!n&&s<=(e[r]+(e[r+1]||e[r]))/2));r++);return f(o*i,-Math.round(Math.log(.001)/Math.LN10))},objectEach:g,offset:function(t){var e=x.documentElement;return{top:(t=t.parentElement||t.parentNode?t.getBoundingClientRect():{top:0,left:0,width:0,height:0}).top+(b.pageYOffset||e.scrollTop)-(e.clientTop||0),left:t.left+(b.pageXOffset||e.scrollLeft)-(e.clientLeft||0),width:t.width,height:t.height}},pad:function(t,e,i){return Array((e||2)+1-String(t).replace("-","").length).join(i||"0")+t},pick:p,pInt:i,relativeLength:function(t,e,i){return/%$/.test(t)?e*parseFloat(t)/100+(i||0):parseFloat(t)},removeEvent:m,splat:function(t){return n(t)?t:[t]},stableSort:function(t,e){var i,r,n=t.length;for(r=0;r>16,(65280&n)>>8,255&n,1]:4===r&&(i=[(3840&n)>>4|(3840&n)>>8,(240&n)>>4|240&n,(15&n)<<4|15&n,1])}if(!i)for(n=e.parsers.length;n--&&!i;){var o=e.parsers[n];(r=o.regex.exec(t))&&(i=o.parse(r))}}i&&(this.rgba=i)},e.prototype.get=function(t){var e=this.input,n=this.rgba;if("object"==typeof e&&void 0!==this.stops){var o=r(e);return o.stops=[].slice.call(o.stops),this.stops.forEach((function(e,i){o.stops[i]=[o.stops[i][0],e.get(t)]})),o}return n&&i(n[0])?"rgb"===t||!t&&1===n[3]?"rgb("+n[0]+","+n[1]+","+n[2]+")":"a"===t?""+n[3]:"rgba("+n.join(",")+")":e},e.prototype.brighten=function(t){var e=this.rgba;if(this.stops)this.stops.forEach((function(e){e.brighten(t)}));else if(i(t)&&0!==t)for(var r=0;3>r;r++)e[r]+=n(255*t),0>e[r]&&(e[r]=0),255d?"AM":"PM",P:12>d?"am":"pm",S:l(a.getSeconds()),L:l(Math.floor(i%1e3),3)},t.dateFormats),h(a,(function(t,r){for(;-1!==e.indexOf("%"+r);)e=e.replace("%"+r,"function"==typeof t?t.call(s,i):t)})),n?e.substr(0,1).toUpperCase()+e.substr(1):e},e.prototype.resolveDTLFormat=function(t){return s(t,!0)?t:{main:(t=d(t))[0],from:t[1],to:t[2]}},e.prototype.getTimeTicks=function(t,e,i,n){var s,a=this,h=[],l={},d=new a.Date(e),u=t.unitRange,f=t.count||1;if(n=c(n,1),r(e)){if(a.set("Milliseconds",d,u>=p.second?0:f*Math.floor(a.get("Milliseconds",d)/f)),u>=p.second&&a.set("Seconds",d,u>=p.minute?0:f*Math.floor(a.get("Seconds",d)/f)),u>=p.minute&&a.set("Minutes",d,u>=p.hour?0:f*Math.floor(a.get("Minutes",d)/f)),u>=p.hour&&a.set("Hours",d,u>=p.day?0:f*Math.floor(a.get("Hours",d)/f)),u>=p.day&&a.set("Date",d,u>=p.month?1:Math.max(1,f*Math.floor(a.get("Date",d)/f))),u>=p.month){a.set("Month",d,u>=p.year?0:f*Math.floor(a.get("Month",d)/f));var g=a.get("FullYear",d)}u>=p.year&&a.set("FullYear",d,g-g%f),u===p.week&&(g=a.get("Day",d),a.set("Date",d,a.get("Date",d)-g+n+(g4*p.month||a.getTimezoneOffset(e)!==a.getTimezoneOffset(i)),e=d.getTime(),d=1;eh.length&&h.forEach((function(t){0==t%18e5&&"000000000"===a.dateFormat("%H%M%S%L",t)&&(l[t]="day")}))}return h.info=o(t,{higherRanks:l,totalRange:u*f}),h},e.prototype.getDateFormat=function(t,e,i,r){var n=this.dateFormat("%m-%d %H:%M:%S.%L",e),o={millisecond:15,second:12,minute:9,hour:6,day:3},s="millisecond";for(a in p){if(t===p.week&&+this.dateFormat("%w",e)===i&&"00:00:00.000"===n.substr(6)){var a="week";break}if(p[a]>t){a=s;break}if(o[a]&&n.substr(o[a])!=="01-01 00:00:00.000".substr(o[a]))break;"week"!==a&&(s=a)}if(a)var h=this.resolveDTLFormat(r[a]).main;return h},e}(),e})),e(i,"Core/DefaultOptions.js",[i["Core/Chart/ChartDefaults.js"],i["Core/Color/Color.js"],i["Core/Globals.js"],i["Core/Color/Palettes.js"],i["Core/Time.js"],i["Core/Utilities.js"]],(function(t,e,i,r,n,o){e=e.parse;var s=o.merge,a={colors:r.colors,symbols:["circle","diamond","square","triangle","triangle-down"],lang:{loading:"Loading...",months:"January February March April May June July August September October November December".split(" "),shortMonths:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),weekdays:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),decimalPoint:".",numericSymbols:"kMGTPE".split(""),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:t,title:{text:"Chart title",align:"center",margin:15,widthAdjust:-44},subtitle:{text:"",align:"center",widthAdjust:-44},caption:{margin:15,text:"",align:"left",verticalAlign:"bottom"},plotOptions:{},labels:{style:{position:"absolute",color:"#333333"}},legend:{enabled:!0,align:"center",alignColumns:!0,className:"highcharts-no-tooltip",layout:"horizontal",labelFormatter:function(){return this.name},borderColor:"#999999",borderRadius:0,navigation:{activeColor:"#003399",inactiveColor:"#cccccc"},itemStyle:{color:"#333333",cursor:"pointer",fontSize:"12px",fontWeight:"bold",textOverflow:"ellipsis"},itemHoverStyle:{color:"#000000"},itemHiddenStyle:{color:"#cccccc"},shadow:!1,itemCheckboxStyle:{position:"absolute",width:"13px",height:"13px"},squareSymbol:!0,symbolPadding:5,verticalAlign:"bottom",x:0,y:0,title:{style:{fontWeight:"bold"}}},loading:{labelStyle:{fontWeight:"bold",position:"relative",top:"45%"},style:{position:"absolute",backgroundColor:"#ffffff",opacity:.5,textAlign:"center"}},tooltip:{enabled:!0,animation:i.svg,borderRadius:3,dateTimeLabelFormats:{millisecond:"%A, %b %e, %H:%M:%S.%L",second:"%A, %b %e, %H:%M:%S",minute:"%A, %b %e, %H:%M",hour:"%A, %b %e, %H:%M",day:"%A, %b %e, %Y",week:"Week from %A, %b %e, %Y",month:"%B %Y",year:"%Y"},footerFormat:"",headerShape:"callout",hideDelay:500,padding:8,shape:"callout",shared:!1,snap:i.isTouchDevice?25:10,headerFormat:'{point.key}
',pointFormat:' {series.name}: {point.y}
',backgroundColor:e("#f7f7f7").setOpacity(.85).get(),borderWidth:1,shadow:!0,stickOnContact:!1,style:{color:"#333333",cursor:"default",fontSize:"12px",whiteSpace:"nowrap"},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:"9px"},text:"Highcharts.com"}};a.chart.styledMode=!1;var h=new n(s(a.global,a.time));return{defaultOptions:a,defaultTime:h,getOptions:function(){return a},setOptions:function(t){return s(!0,a,t),(t.time||t.global)&&(i.time?i.time.update(s(a.global,a.time,t.global,t.time)):i.time=h),a}}})),e(i,"Core/Animation/Fx.js",[i["Core/Color/Color.js"],i["Core/Globals.js"],i["Core/Utilities.js"]],(function(t,e,i){var r=t.parse,n=e.win,o=i.isNumber,s=i.objectEach;return function(){function t(t,e,i){this.pos=NaN,this.options=e,this.elem=t,this.prop=i}return t.prototype.dSetter=function(){var t=this.paths,e=t&&t[0];t=t&&t[1];var i=this.now||0,r=[];if(1!==i&&e&&t)if(e.length===t.length&&1>i)for(var n=0;n=o+this.startTime){this.now=this.end,this.pos=1,this.update();var h=a[this.prop]=!0;s(a,(function(t){!0!==t&&(h=!1)})),h&&n&&n.call(r),t=!1}else this.pos=i.easing((e-this.startTime)/o),this.now=this.start+(this.end-this.start)*this.pos,this.update(),t=!0;return t},t.prototype.initPath=function(t,e,i){function r(t,e){for(;t.lengthc[1]){var p=e+ +c[1];0<=p?(c[0]=(+c[0]).toExponential(p).split("e")[0],e=p):(c[0]=c[0].split(".")[0]||0,t=20>e?(c[0]*Math.pow(10,c[1])).toFixed(e):0,c[1]=0)}}else e=2;p=(Math.abs(c[1]?c[0]:t)+Math.pow(10,-Math.max(e,l)-1)).toFixed(e);var u=3<(l=String(h(p))).length?l.length%3:0;return i=a(i,o.decimalPoint),n=a(n,o.thousandsSep),t=(0>t?"-":"")+(u?l.substr(0,u)+n:""),t=0>+c[1]&&!d?"0":t+l.substr(u).replace(/(\d{3})(?=\d)/g,"$1"+n),e&&(t+=i+p.slice(-e)),c[1]&&0!=+t&&(t+="e"+c[1]),t}var r=t.defaultOptions,n=t.defaultTime,o=e.getNestedProperty,s=e.isNumber,a=e.pick,h=e.pInt;return{dateFormat:function(t,e,i){return n.dateFormat(t,e,i)},format:function(t,e,s){var a="{",h=!1,l=/f$/,c=/\.([0-9])/,d=r.lang,p=s&&s.time||n;s=s&&s.numberFormatter||i;for(var u=[];t;){var f=t.indexOf(a);if(-1===f)break;var g=t.slice(0,f);if(h){if(g=g.split(":"),a=o(g.shift()||"",e),g.length&&"number"==typeof a)if(g=g.join(":"),l.test(g)){var m=parseInt((g.match(c)||["","-1"])[1],10);null!==a&&(a=s(a,m,d.decimalPoint,-1l){for(n(e,c),f=a=0;f<=l;)f+=e[a].size,a++;u=e.splice(a-1,e.length)}for(n(e,d),e=e.map((function(t){return{size:t.size,targets:[t.target],align:r(t.align,.5)}}));p;){for(a=e.length;a--;)l=e[a],c=(Math.min.apply(0,l.targets)+Math.max.apply(0,l.targets))/2,l.pos=i(c-l.size*l.align,0,o-l.size);for(a=e.length,p=!1;a--;)0e[a].pos&&(e[a-1].size+=e[a].size,e[a-1].targets=e[a-1].targets.concat(e[a].targets),e[a-1].align=.5,e[a-1].pos+e[a-1].size>o&&(e[a-1].pos=o-e[a-1].size),e.splice(a,1),p=!0)}return h.push.apply(h,u),a=0,e.some((function(e){var i=0;return(e.targets||[]).some((function(){return h[a].pos=e.pos+i,void 0!==s&&Math.abs(h[a].pos-h[a].target)>s?(h.slice(0,a+1).forEach((function(t){return delete t.pos})),h.reducedLen=(h.reducedLen||o)-.1*o,h.reducedLen>.1*o&&t(h,o,s),!0):(i+=h[a].size,a++,!1)}))})),n(h,d),h}}(e||(e={})),e})),e(i,"Core/Renderer/SVG/SVGElement.js",[i["Core/Animation/AnimationUtilities.js"],i["Core/Renderer/HTML/AST.js"],i["Core/Color/Color.js"],i["Core/Globals.js"],i["Core/Utilities.js"]],(function(t,e,i,r,n){var o=t.animate,s=t.animObject,a=t.stop,h=r.deg2rad,l=r.doc,c=r.noop,d=r.svg,p=r.SVG_NS,u=r.win,f=n.addEvent,g=n.attr,m=n.createElement,y=n.css,v=n.defined,x=n.erase,b=n.extend,w=n.fireEvent,S=n.isArray,k=n.isFunction,C=n.isNumber,M=n.isString,A=n.merge,T=n.objectEach,P=n.pick,L=n.pInt,O=n.syncTimeout,E=n.uniqueKey;return t=function(){function t(){this.element=void 0,this.onEvents={},this.opacity=1,this.renderer=void 0,this.SVG_NS=p,this.symbolCustomAttribs="x y width height r start end innerR anchorX anchorY rounded".split(" ")}return t.prototype._defaultGetter=function(t){return t=P(this[t+"Value"],this[t],this.element?this.element.getAttribute(t):null,0),/^[\-0-9\.]+$/.test(t)&&(t=parseFloat(t)),t},t.prototype._defaultSetter=function(t,e,i){i.setAttribute(e,t)},t.prototype.add=function(t){var e=this.renderer,i=this.element;if(t&&(this.parentGroup=t),this.parentInverted=t&&t.inverted,void 0!==this.textStr&&"text"===this.element.nodeName&&e.buildText(this),this.added=!0,!t||t.handleZ||this.zIndex)var r=this.zIndexSetter();return r||(t?t.element:e.box).appendChild(i),this.onAdd&&this.onAdd(),this},t.prototype.addClass=function(t,e){var i=e?"":this.attr("class")||"";return t=(t||"").split(/ /g).reduce((function(t,e){return-1===i.indexOf(e)&&t.push(e),t}),i?[i]:[]).join(" "),t!==i&&this.attr("class",t),this},t.prototype.afterSetters=function(){this.doTransform&&(this.updateTransform(),this.doTransform=!1)},t.prototype.align=function(t,e,i){var r,n,o,s={},a=this.renderer,h=a.alignedObjects;t?(this.alignOptions=t,this.alignByTranslate=e,(!i||M(i))&&(this.alignTo=r=i||"renderer",x(h,this),h.push(this),i=void 0)):(t=this.alignOptions,e=this.alignByTranslate,r=this.alignTo),i=P(i,a[r],"scrollablePlotBox"===r?a.plotBox:void 0,a),r=t.align;var l=t.verticalAlign;return a=(i.x||0)+(t.x||0),h=(i.y||0)+(t.y||0),"right"===r?n=1:"center"===r&&(n=2),n&&(a+=(i.width-(t.width||0))/n),s[e?"translateX":"x"]=Math.round(a),"bottom"===l?o=1:"middle"===l&&(o=2),o&&(h+=(i.height-(t.height||0))/o),s[e?"translateY":"y"]=Math.round(h),this[this.placed?"animate":"attr"](s),this.placed=!0,this.alignAttr=s,this},t.prototype.alignSetter=function(t){var e={left:"start",center:"middle",right:"end"};e[t]&&(this.alignValue=t,this.element.setAttribute("text-anchor",e[t]))},t.prototype.animate=function(t,e,i){var r=this,n=s(P(e,this.renderer.globalAnimation,!0));return e=n.defer,P(l.hidden,l.msHidden,l.webkitHidden,!1)&&(n.duration=0),0!==n.duration?(i&&(n.complete=i),O((function(){r.element&&o(r,t,n)}),e)):(this.attr(t,void 0,i),T(t,(function(t,e){n.step&&n.step.call(this,t,{prop:e,pos:1,elem:this})}),this)),this},t.prototype.applyTextOutline=function(t){var e=this.element;-1!==t.indexOf("contrast")&&(t=t.replace(/contrast/g,this.renderer.getContrast(e.style.fill)));var i=t.split(" ");if(t=i[i.length-1],(i=i[0])&&"none"!==i&&r.svg){this.fakeTS=!0,this.ySetter=this.xSetter,i=i.replace(/(^[\d\.]+)(.*?)$/g,(function(t,e,i){return 2*Number(e)+i})),this.removeTextOutline();var n=l.createElementNS(p,"tspan");g(n,{class:"highcharts-text-outline",fill:t,stroke:t,"stroke-width":i,"stroke-linejoin":"round"}),[].forEach.call(e.childNodes,(function(t){var e=t.cloneNode(!0);e.removeAttribute&&["fill","stroke","stroke-width","stroke"].forEach((function(t){return e.removeAttribute(t)})),n.appendChild(e)}));var o=l.createElementNS(p,"tspan");o.textContent="​",["x","y"].forEach((function(t){var i=e.getAttribute(t);i&&o.setAttribute(t,i)})),n.appendChild(o),e.insertBefore(n,e.firstChild)}},t.prototype.attr=function(t,e,i,r){var n,o,s,h=this.element,l=this.symbolCustomAttribs,c=this;if("string"==typeof t&&void 0!==e){var d=t;(t={})[d]=e}return"string"==typeof t?c=(this[t+"Getter"]||this._defaultGetter).call(this,t,h):(T(t,(function(e,i){o=!1,r||a(this,i),this.symbolName&&-1!==l.indexOf(i)&&(n||(this.symbolAttr(t),n=!0),o=!0),!this.rotation||"x"!==i&&"y"!==i||(this.doTransform=!0),o||((s=this[i+"Setter"]||this._defaultSetter).call(this,e,i,h),!this.styledMode&&this.shadows&&/^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(i)&&this.updateShadows(i,e,s))}),this),this.afterSetters()),i&&i.call(this),c},t.prototype.clip=function(t){return this.attr("clip-path",t?"url("+this.renderer.url+"#"+t.id+")":"none")},t.prototype.crisp=function(t,e){e=e||t.strokeWidth||0;var i=Math.round(e)%2/2;return t.x=Math.floor(t.x||this.x||0)+i,t.y=Math.floor(t.y||this.y||0)+i,t.width=Math.floor((t.width||this.width||0)-2*i),t.height=Math.floor((t.height||this.height||0)-2*i),v(t.strokeWidth)&&(t.strokeWidth=e),t},t.prototype.complexColor=function(t,e,r){var n,o,s,a,h,l,c,d,p,u,f,g=this.renderer,m=[];w(this.renderer,"complexColor",{args:arguments},(function(){if(t.radialGradient?o="radialGradient":t.linearGradient&&(o="linearGradient"),o){if(s=t[o],h=g.gradients,l=t.stops,p=r.radialReference,S(s)&&(t[o]=s={x1:s[0],y1:s[1],x2:s[2],y2:s[3],gradientUnits:"userSpaceOnUse"}),"radialGradient"===o&&p&&!v(s.gradientUnits)&&(a=s,s=A(s,g.getRadialAttr(p,a),{gradientUnits:"userSpaceOnUse"})),T(s,(function(t,e){"id"!==e&&m.push(e,t)})),T(l,(function(t){m.push(t)})),m=m.join(","),h[m])u=h[m].attr("id");else{s.id=u=E();var y=h[m]=g.createElement(o).attr(s).add(g.defs);y.radAttr=a,y.stops=[],l.forEach((function(t){0===t[1].indexOf("rgba")?(n=i.parse(t[1]),c=n.get("rgb"),d=n.get("a")):(c=t[1],d=1),t=g.createElement("stop").attr({offset:t[0],"stop-color":c,"stop-opacity":d}).add(y),y.stops.push(t)}))}f="url("+g.url+"#"+u+")",r.setAttribute(e,f),r.gradient=m,t.toString=function(){return f}}}))},t.prototype.css=function(t){var e=this.styles,i={},r=this.element,n=["textOutline","textOverflow","width"],o="",s=!e;if(t&&t.color&&(t.fill=t.color),e&&T(t,(function(t,r){e&&e[r]!==t&&(i[r]=t,s=!0)})),s){if(e&&(t=b(e,i)),t)if(null===t.width||"auto"===t.width)delete this.textWidth;else if("text"===r.nodeName.toLowerCase()&&t.width)var a=this.textWidth=L(t.width);if(this.styles=t,a&&!d&&this.renderer.forExport&&delete t.width,r.namespaceURI===this.SVG_NS){var h=function(t,e){return"-"+e.toLowerCase()};T(t,(function(t,e){-1===n.indexOf(e)&&(o+=e.replace(/([A-Z])/g,h)+":"+t+";")})),o&&g(r,"style",o)}else y(r,t);this.added&&("text"===this.element.nodeName&&this.renderer.buildText(this),t&&t.textOutline&&this.applyTextOutline(t.textOutline))}return this},t.prototype.dashstyleSetter=function(t){var e=this["stroke-width"];if("inherit"===e&&(e=1),t=t&&t.toLowerCase()){var i=t.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(t=i.length;t--;)i[t]=""+L(i[t])*P(e,NaN);t=i.join(",").replace(/NaN/g,"none"),this.element.setAttribute("stroke-dasharray",t)}},t.prototype.destroy=function(){var t=this,e=t.element||{},i=t.renderer,r=e.ownerSVGElement,n=i.isSVG&&"SPAN"===e.nodeName&&t.parentGroup||void 0;if(e.onclick=e.onmouseout=e.onmouseover=e.onmousemove=e.point=null,a(t),t.clipPath&&r){var o=t.clipPath;[].forEach.call(r.querySelectorAll("[clip-path],[CLIP-PATH]"),(function(t){-1d.width)&&(d={width:0,height:0})}else d=this.htmlGetBBox();if(r.isSVG&&(e=d.width,r=d.height,c&&(d.height=r={"11px,17":14,"13px,20":16}[(p||"")+","+Math.round(r)]||r),i&&(c=i*h,d.width=Math.abs(r*Math.sin(c))+Math.abs(e*Math.cos(c)),d.height=Math.abs(r*Math.cos(c))+Math.abs(e*Math.sin(c)))),u&&(""===s||0]*>/g,"").replace(/</g,"<").replace(/>/g,">")},t.prototype.toFront=function(){var t=this.element;return t.parentNode.appendChild(t),this},t.prototype.translate=function(t,e){return this.attr({translateX:t,translateY:e})},t.prototype.updateShadows=function(t,e,i){var r=this.shadows;if(r)for(var n=r.length;n--;)i.call(r[n],"height"===t?Math.max(e-(r[n].cutHeight||0),0):"d"===t?this.d:e,t,r[n])},t.prototype.updateTransform=function(){var t=this.scaleX,e=this.scaleY,i=this.inverted,r=this.rotation,n=this.matrix,o=this.element,s=this.translateX||0,a=this.translateY||0;i&&(s+=this.width,a+=this.height),s=["translate("+s+","+a+")"],v(n)&&s.push("matrix("+n.join(",")+")"),i?s.push("rotate(90) scale(-1,1)"):r&&s.push("rotate("+r+" "+P(this.rotationOriginX,o.getAttribute("x"),0)+" "+P(this.rotationOriginY,o.getAttribute("y")||0)+")"),(v(t)||v(e))&&s.push("scale("+P(t,1)+" "+P(e,1)+")"),s.length&&o.setAttribute("transform",s.join(" "))},t.prototype.visibilitySetter=function(t,e,i){"inherit"===t?i.removeAttribute(e):this[e]!==t&&i.setAttribute(e,t),this[e]=t},t.prototype.xGetter=function(t){return"circle"===this.element.nodeName&&("x"===t?t="cx":"y"===t&&(t="cy")),this._defaultGetter(t)},t.prototype.zIndexSetter=function(t,e){var i=this.renderer,r=this.parentGroup,n=(r||i).element||i.box,o=this.element;i=n===i.box;var s,a=!1,h=this.added;if(v(t)?(o.setAttribute("data-z-index",t),t=+t,this[e]===t&&(h=!1)):v(this[e])&&o.removeAttribute("data-z-index"),this[e]=t,h){for((t=this.zIndex)&&r&&(r.handleZ=!0),s=(e=n.childNodes).length-1;0<=s&&!a;s--){h=(r=e[s]).getAttribute("data-z-index");var l=!v(h);r!==o&&(0>t&&l&&!i&&!s?(n.insertBefore(o,e[s]),a=!0):(L(h)<=t||l&&(!v(t)||0<=t))&&(n.insertBefore(o,e[s+1]||null),a=!0))}a||(n.insertBefore(o,e[i?3:0]||null),a=!0)}return a},t}(),t.prototype["stroke-widthSetter"]=t.prototype.strokeSetter,t.prototype.yGetter=t.prototype.xGetter,t.prototype.matrixSetter=t.prototype.rotationOriginXSetter=t.prototype.rotationOriginYSetter=t.prototype.rotationSetter=t.prototype.scaleXSetter=t.prototype.scaleYSetter=t.prototype.translateXSetter=t.prototype.translateYSetter=t.prototype.verticalAlignSetter=function(t,e){this[e]=t,this.doTransform=!0},t})),e(i,"Core/Renderer/RendererRegistry.js",[i["Core/Globals.js"]],(function(t){var e;return function(e){var i;e.rendererTypes={},e.getRendererType=function(t){return void 0===t&&(t=i),e.rendererTypes[t]||e.rendererTypes[i]},e.registerRendererType=function(r,n,o){e.rendererTypes[r]=n,i&&!o||(i=r,t.Renderer=n)}}(e||(e={})),e})),e(i,"Core/Renderer/SVG/SVGLabel.js",[i["Core/Renderer/SVG/SVGElement.js"],i["Core/Utilities.js"]],(function(t,e){var i=this&&this.__extends||function(){var t=function(e,i){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])},t(e,i)};return function(e,i){function r(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),r=e.defined,n=e.extend,o=e.isNumber,s=e.merge,a=e.pick,h=e.removeEvent;return function(e){function l(t,i,r,n,o,s,a,h,c,d){var p,u=e.call(this)||this;return u.paddingLeftSetter=u.paddingSetter,u.paddingRightSetter=u.paddingSetter,u.init(t,"g"),u.textStr=i,u.x=r,u.y=n,u.anchorX=s,u.anchorY=a,u.baseline=c,u.className=d,u.addClass("button"===d?"highcharts-no-tooltip":"highcharts-label"),d&&u.addClass("highcharts-"+d),u.text=t.text(void 0,0,0,h).attr({zIndex:1}),"string"==typeof o&&((p=/^url\((.*?)\)$/.test(o))||u.renderer.symbols[o])&&(u.symbolKey=o),u.bBox=l.emptyBBox,u.padding=3,u.baselineOffset=0,u.needsBox=t.styledMode||p,u.deferredAttr={},u.alignFactor=0,u}return i(l,e),l.prototype.alignSetter=function(t){(t={left:0,center:.5,right:1}[t])!==this.alignFactor&&(this.alignFactor=t,this.bBox&&o(this.xSetting)&&this.attr({x:this.xSetting}))},l.prototype.anchorXSetter=function(t,e){this.anchorX=t,this.boxAttr(e,Math.round(t)-this.getCrispAdjust()-this.xSetting)},l.prototype.anchorYSetter=function(t,e){this.anchorY=t,this.boxAttr(e,t-this.ySetting)},l.prototype.boxAttr=function(t,e){this.box?this.box.attr(t,e):this.deferredAttr[t]=e},l.prototype.css=function(e){if(e){var i={};e=s(e),l.textProps.forEach((function(t){void 0!==e[t]&&(i[t]=e[t],delete e[t])})),this.text.css(i);var r="width"in i;"fontSize"in i||"fontWeight"in i?this.updateTextPadding():r&&this.updateBoxSize()}return t.prototype.css.call(this,e)},l.prototype.destroy=function(){h(this.element,"mouseenter"),h(this.element,"mouseleave"),this.text&&this.text.destroy(),this.box&&(this.box=this.box.destroy()),t.prototype.destroy.call(this)},l.prototype.fillSetter=function(t,e){t&&(this.needsBox=!0),this.fill=t,this.boxAttr(e,t)},l.prototype.getBBox=function(){this.textStr&&0===this.bBox.width&&0===this.bBox.height&&this.updateBoxSize();var t=this.padding,e=a(this.paddingLeft,t);return{width:this.width,height:this.height,x:this.bBox.x-e,y:this.bBox.y-t}},l.prototype.getCrispAdjust=function(){return this.renderer.styledMode&&this.box?this.box.strokeWidth()%2/2:(this["stroke-width"]?parseInt(this["stroke-width"],10):0)%2/2},l.prototype.heightSetter=function(t){this.heightSetting=t},l.prototype.onAdd=function(){var t=this.textStr;this.text.add(this),this.attr({text:r(t)?t:"",x:this.x,y:this.y}),this.box&&r(this.anchorX)&&this.attr({anchorX:this.anchorX,anchorY:this.anchorY})},l.prototype.paddingSetter=function(t,e){o(t)?t!==this[e]&&(this[e]=t,this.updateTextPadding()):this[e]=void 0},l.prototype.rSetter=function(t,e){this.boxAttr(e,t)},l.prototype.shadow=function(t){return t&&!this.renderer.styledMode&&(this.updateBoxSize(),this.box&&this.box.shadow(t)),this},l.prototype.strokeSetter=function(t,e){this.stroke=t,this.boxAttr(e,t)},l.prototype["stroke-widthSetter"]=function(t,e){t&&(this.needsBox=!0),this["stroke-width"]=t,this.boxAttr(e,t)},l.prototype["text-alignSetter"]=function(t){this.textAlign=t},l.prototype.textSetter=function(t){void 0!==t&&this.text.attr({text:t}),this.updateTextPadding()},l.prototype.updateBoxSize=function(){var t=this.text.element.style,e={},i=this.padding,s=this.bBox=o(this.widthSetting)&&o(this.heightSetting)&&!this.textAlign||!r(this.text.textStr)?l.emptyBBox:this.text.getBBox();this.width=this.getPaddedWidth(),this.height=(this.heightSetting||s.height||0)+2*i,t=this.renderer.fontMetrics(t&&t.fontSize,this.text),this.baselineOffset=i+Math.min((this.text.firstLineMetrics||t).b,s.height||1/0),this.heightSetting&&(this.baselineOffset+=(this.heightSetting-t.h)/2),this.needsBox&&(this.box||((i=this.box=this.symbolKey?this.renderer.symbol(this.symbolKey):this.renderer.rect()).addClass(("button"===this.className?"":"highcharts-label-box")+(this.className?" highcharts-"+this.className+"-box":"")),i.add(this)),i=this.getCrispAdjust(),e.x=i,e.y=(this.baseline?-this.baselineOffset:0)+i,e.width=Math.round(this.width),e.height=Math.round(this.height),this.box.attr(n(e,this.deferredAttr)),this.deferredAttr={})},l.prototype.updateTextPadding=function(){var t=this.text;this.updateBoxSize();var e=this.baseline?0:this.baselineOffset,i=a(this.paddingLeft,this.padding);r(this.widthSetting)&&this.bBox&&("center"===this.textAlign||"right"===this.textAlign)&&(i+={center:.5,right:1}[this.textAlign]*(this.widthSetting-this.bBox.width)),i===t.x&&e===t.y||(t.attr("x",i),t.hasBoxWidthChanged&&(this.bBox=t.getBBox(!0)),void 0!==e&&t.attr("y",e)),t.x=i,t.y=e},l.prototype.widthSetter=function(t){this.widthSetting=o(t)?t:void 0},l.prototype.getPaddedWidth=function(){var t=this.padding,e=a(this.paddingLeft,t);return t=a(this.paddingRight,t),(this.widthSetting||this.bBox.width||0)+e+t},l.prototype.xSetter=function(t){this.x=t,this.alignFactor&&(t-=this.alignFactor*this.getPaddedWidth(),this["forceAnimate:x"]=!0),this.xSetting=Math.round(t),this.attr("translateX",this.xSetting)},l.prototype.ySetter=function(t){this.ySetting=this.y=Math.round(t),this.attr("translateY",this.ySetting)},l.emptyBBox={width:0,height:0,x:0,y:0},l.textProps="color direction fontFamily fontSize fontStyle fontWeight lineHeight textAlign textDecoration textOutline textOverflow width".split(" "),l}(t)})),e(i,"Core/Renderer/SVG/Symbols.js",[i["Core/Utilities.js"]],(function(t){function e(t,e,i,r,o){var a=[];if(o){var h=o.start||0,l=s(o.r,i);i=s(o.r,r||i);var c=(o.end||0)-.001;r=o.innerR;var d=s(o.open,.001>Math.abs((o.end||0)-h-2*Math.PI)),p=Math.cos(h),u=Math.sin(h),f=Math.cos(c),g=Math.sin(c);h=s(o.longArc,.001>c-h-Math.PI?0:1),a.push(["M",t+l*p,e+i*u],["A",l,i,0,h,s(o.clockwise,1),t+l*f,e+i*g]),n(r)&&a.push(d?["M",t+r*f,e+r*g]:["L",t+r*f,e+r*g],["A",r,r,0,h,n(o.clockwise)?1-o.clockwise:0,t+r*p,e+r*u]),d||a.push(["Z"])}return a}function i(t,e,i,n,o){return o&&o.r?r(t,e,i,n,o):[["M",t,e],["L",t+i,e],["L",t+i,e+n],["L",t,e+n],["Z"]]}function r(t,e,i,r,n){return[["M",t+(n=n&&n.r||0),e],["L",t+i-n,e],["C",t+i,e,t+i,e,t+i,e+n],["L",t+i,e+r-n],["C",t+i,e+r,t+i,e+r,t+i-n,e+r],["L",t+n,e+r],["C",t,e+r,t,e+r,t,e+r-n],["L",t,e+n],["C",t,e,t,e,t+n,e]]}var n=t.defined,o=t.isNumber,s=t.pick;return{arc:e,callout:function(t,e,i,n,s){var a=Math.min(s&&s.r||0,i,n),h=a+6,l=s&&s.anchorX;s=s&&s.anchorY||0;var c=r(t,e,i,n,{r:a});return o(l)?(t+l>=i?s>e+h&&s=t+l?s>e+h&&sn&&l>t+h&&ls&&l>t+h&&l/g.test(o))?""!==o&&(n&&n.appendChild(i),o=new t(o),this.modifyTree(o.nodes),o.addToDOM(e.element),this.modifyDOM(),this.ellipsis&&-1!==(i.textContent||"").indexOf("…")&&e.attr("title",this.unescapeEntities(e.textStr||"",["<",">"])),n&&n.removeChild(i)):i.appendChild(r.createTextNode(this.unescapeEntities(o))),a(this.textOutline)&&e.applyTextOutline&&e.applyTextOutline(this.textOutline)}},e.prototype.modifyDOM=function(){var t,e=this,i=this.svgElement,a=s(i.element,"x");for(i.firstLineMetrics=void 0;(t=i.element.firstChild)&&/^[\s\u200B]*$/.test(t.textContent||" ");)i.element.removeChild(t);[].forEach.call(i.element.querySelectorAll("tspan.highcharts-br"),(function(t,r){t.nextSibling&&t.previousSibling&&(0===r&&1===t.previousSibling.nodeType&&(i.firstLineMetrics=i.renderer.fontMetrics(void 0,t.previousSibling)),s(t,{dy:e.getLineHeight(t.nextSibling),x:a}))}));var h=this.width||0;if(h){var l=function(t,o){var l=t.textContent||"",c=l.replace(/([^\^])-/g,"$1- ").split(" "),d=!e.noWrap&&(1n){for(;d<=p;)u=Math.ceil((d+p)/2),i&&(s=o(i,u)),g=f(u,s&&s.length-1),d===p?d=p+1:g>n?p=u-1:d=u;0===p?t.textContent="":e&&p===e.length-1||(t.textContent=s||o(e||i,u))}i&&i.splice(0,u),a.actualWidth=g,a.rotation=l},e.prototype.unescapeEntities=function(t,e){return h(this.renderer.escapes,(function(i,r){e&&-1!==e.indexOf(i)||(t=t.toString().replace(new RegExp(i,"g"),r))})),t},e}()})),e(i,"Core/Renderer/SVG/SVGRenderer.js",[i["Core/Renderer/HTML/AST.js"],i["Core/Color/Color.js"],i["Core/Globals.js"],i["Core/Renderer/RendererRegistry.js"],i["Core/Renderer/SVG/SVGElement.js"],i["Core/Renderer/SVG/SVGLabel.js"],i["Core/Renderer/SVG/Symbols.js"],i["Core/Renderer/SVG/TextBuilder.js"],i["Core/Utilities.js"]],(function(t,e,i,r,n,o,s,a,h){var l,c=i.charts,d=i.deg2rad,p=i.doc,u=i.isFirefox,f=i.isMS,g=i.isWebKit,m=i.noop,y=i.SVG_NS,v=i.symbolSizes,x=i.win,b=h.addEvent,w=h.attr,S=h.createElement,k=h.css,C=h.defined,M=h.destroyObjectProperties,A=h.extend,T=h.isArray,P=h.isNumber,L=h.isObject,O=h.isString,E=h.merge,_=h.pick,D=h.pInt,N=h.uniqueKey;return i=function(){function i(t,e,i,r,n,o,s){this.width=this.url=this.style=this.isSVG=this.imgCount=this.height=this.gradients=this.globalAnimation=this.defs=this.chartIndex=this.cacheKeys=this.cache=this.boxWrapper=this.box=this.alignedObjects=void 0,this.init(t,e,i,r,n,o,s)}return i.prototype.init=function(t,e,i,r,n,o,s){var a,h=this.createElement("svg").attr({version:"1.1",class:"highcharts-root"}),l=h.element;s||h.css(this.getStyle(r)),t.appendChild(l),w(t,"dir","ltr"),-1===t.innerHTML.indexOf("xmlns")&&w(l,"xmlns",this.SVG_NS),this.isSVG=!0,this.box=l,this.boxWrapper=h,this.alignedObjects=[],this.url=this.getReferenceURL(),this.createElement("desc").add().element.appendChild(p.createTextNode("Created with Highcharts 9.3.2")),this.defs=this.createElement("defs").add(),this.allowHTML=o,this.forExport=n,this.styledMode=s,this.gradients={},this.cache={},this.cacheKeys=[],this.imgCount=0,this.setSize(e,i,!1),u&&t.getBoundingClientRect&&((e=function(){k(t,{left:0,top:0}),a=t.getBoundingClientRect(),k(t,{left:Math.ceil(a.left)-a.left+"px",top:Math.ceil(a.top)-a.top+"px"})})(),this.unSubPixelFix=b(x,"resize",e))},i.prototype.definition=function(e){return new t([e]).addToDOM(this.defs.element)},i.prototype.getReferenceURL=function(){if((u||g)&&p.getElementsByTagName("base").length){if(!C(l)){var e=N();e=new t([{tagName:"svg",attributes:{width:8,height:8},children:[{tagName:"defs",children:[{tagName:"clipPath",attributes:{id:e},children:[{tagName:"rect",attributes:{width:4,height:4}}]}]},{tagName:"rect",attributes:{id:"hitme",width:8,height:8,"clip-path":"url(#"+e+")",fill:"rgba(0,0,0,0.001)"}}]}]).addToDOM(p.body),k(e,{position:"fixed",top:0,left:0,zIndex:9e5});var i=p.elementFromPoint(6,6);l="hitme"===(i&&i.id),p.body.removeChild(e)}if(l)return x.location.href.split("#")[0].replace(/<[^>]*>/g,"").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20")}return""},i.prototype.getStyle=function(t){return this.style=A({fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif',fontSize:"12px"},t)},i.prototype.setStyle=function(t){this.boxWrapper.css(this.getStyle(t))},i.prototype.isHidden=function(){return!this.boxWrapper.getBBox().width},i.prototype.destroy=function(){var t=this.defs;return this.box=null,this.boxWrapper=this.boxWrapper.destroy(),M(this.gradients||{}),this.gradients=null,t&&(this.defs=t.destroy()),this.unSubPixelFix&&this.unSubPixelFix(),this.alignedObjects=null},i.prototype.createElement=function(t){var e=new this.Element;return e.init(this,t),e},i.prototype.getRadialAttr=function(t,e){return{cx:t[0]-t[2]/2+(e.cx||0)*t[2],cy:t[1]-t[2]/2+(e.cy||0)*t[2],r:(e.r||0)*t[2]}},i.prototype.buildText=function(t){new a(t).buildSVG()},i.prototype.getContrast=function(t){return(t=e.parse(t).rgba)[0]*=1,t[1]*=1.2,t[2]*=.5,459(t=/px/.test(t)?D(t):12)?t+3:Math.round(1.2*t),b:Math.round(.8*e),f:t}},i.prototype.rotCorr=function(t,e,i){var r=t;return e&&i&&(r=Math.max(r*Math.cos(e*d),4)),{x:-t/3*Math.sin(e*d),y:r}},i.prototype.pathToSegments=function(t){for(var e=[],i=[],r={A:8,C:7,H:2,L:3,M:3,Q:5,S:5,T:3,V:2},n=0;n":">","'":"'",'"':"""},symbols:s,draw:m}),r.registerRendererType("svg",i,!0),i})),e(i,"Core/Renderer/HTML/HTMLElement.js",[i["Core/Globals.js"],i["Core/Renderer/SVG/SVGElement.js"],i["Core/Utilities.js"]],(function(t,e,i){var r=this&&this.__extends||function(){var t=function(e,i){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])},t(e,i)};return function(e,i){function r(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),n=t.isFirefox,o=t.isMS,s=t.isWebKit,a=t.win,h=i.css,l=i.defined,c=i.extend,d=i.pick,p=i.pInt;return function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.compose=function(t){if(-1===e.composedClasses.indexOf(t)){e.composedClasses.push(t);var i=e.prototype,r=t.prototype;r.getSpanCorrection=i.getSpanCorrection,r.htmlCss=i.htmlCss,r.htmlGetBBox=i.htmlGetBBox,r.htmlUpdateTransform=i.htmlUpdateTransform,r.setSpanRotation=i.setSpanRotation}return t},e.prototype.getSpanCorrection=function(t,e,i){this.xCorr=-t*i,this.yCorr=-e},e.prototype.htmlCss=function(t){var e="SPAN"===this.element.tagName&&t&&"width"in t,i=d(e&&t.width,void 0);if(e){delete t.width,this.textWidth=i;var r=!0}return t&&"ellipsis"===t.textOverflow&&(t.whiteSpace="nowrap",t.overflow="hidden"),this.styles=c(this.styles,t),h(this.element,t),r&&this.htmlUpdateTransform(),this},e.prototype.htmlGetBBox=function(){var t=this.element;return{x:t.offsetLeft,y:t.offsetTop,width:t.offsetWidth,height:t.offsetHeight}},e.prototype.htmlUpdateTransform=function(){if(this.added){var t=this.renderer,e=this.element,i=this.translateX||0,r=this.translateY||0,n=this.x||0,o=this.y||0,s=this.textAlign||"left",a={left:0,center:.5,right:1}[s],c=this.styles;if(c=c&&c.whiteSpace,h(e,{marginLeft:i,marginTop:r}),!t.styledMode&&this.shadows&&this.shadows.forEach((function(t){h(t,{marginLeft:i+1,marginTop:r+1})})),this.inverted&&[].forEach.call(e.childNodes,(function(i){t.invertChild(i,e)})),"SPAN"===e.tagName){var d=this.rotation,u=this.textWidth&&p(this.textWidth),f=[d,s,e.innerHTML,this.textWidth,this.textAlign].join(),g=void 0;if(g=!1,u!==this.oldTextWidth){if(this.textPxLength)var m=this.textPxLength;else h(e,{width:"",whiteSpace:c||"nowrap"}),m=e.offsetWidth;(u>this.oldTextWidth||m>u)&&(/[ \-]/.test(e.textContent||e.innerText)||"ellipsis"===e.style.textOverflow)&&(h(e,{width:m>u||d?u+"px":"auto",display:"block",whiteSpace:c||"normal"}),this.oldTextWidth=u,g=!0)}this.hasBoxWidthChanged=g,f!==this.cTT&&(g=t.fontMetrics(e.style.fontSize,e).b,!l(d)||d===(this.oldRotation||0)&&s===this.oldAlign||this.setSpanRotation(d,a,g),this.getSpanCorrection(!l(d)&&this.textPxLength||e.offsetWidth,g,a,d,s)),h(e,{left:n+(this.xCorr||0)+"px",top:o+(this.yCorr||0)+"px"}),this.cTT=f,this.oldRotation=d,this.oldAlign=s}}else this.alignOnAdd=!0},e.prototype.setSpanRotation=function(t,e,i){var r={},l=o&&!/Edge/.test(a.navigator.userAgent)?"-ms-transform":s?"-webkit-transform":n?"MozTransform":a.opera?"-o-transform":void 0;l&&(r[l]=r.transform="rotate("+t+"deg)",r[l+(n?"Origin":"-origin")]=r.transformOrigin=100*e+"% "+i+"px",h(this.element,r))},e.composedClasses=[],e}(e)})),e(i,"Core/Renderer/HTML/HTMLRenderer.js",[i["Core/Renderer/HTML/AST.js"],i["Core/Renderer/SVG/SVGElement.js"],i["Core/Renderer/SVG/SVGRenderer.js"],i["Core/Utilities.js"]],(function(t,e,i,r){var n=this&&this.__extends||function(){var t=function(e,i){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])},t(e,i)};return function(e,i){function r(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),o=r.attr,s=r.createElement,a=r.extend,h=r.pick;return function(i){function r(){return null!==i&&i.apply(this,arguments)||this}return n(r,i),r.compose=function(t){return-1===r.composedClasses.indexOf(t)&&(r.composedClasses.push(t),t.prototype.html=r.prototype.html),t},r.prototype.html=function(i,r,n){var l=this.createElement("span"),c=l.element,d=l.renderer,p=d.isSVG,u=function(t,i){["opacity","visibility"].forEach((function(r){t[r+"Setter"]=function(n,o,s){var a=t.div?t.div.style:i;e.prototype[r+"Setter"].call(this,n,o,s),a&&(a[o]=n)}})),t.addedSetters=!0};return l.textSetter=function(e){e!==this.textStr&&(delete this.bBox,delete this.oldTextWidth,t.setElementHTML(this.element,h(e,"")),this.textStr=e,l.doTransform=!0)},p&&u(l,l.element.style),l.xSetter=l.ySetter=l.alignSetter=l.rotationSetter=function(t,e){"align"===e?l.alignValue=l.textAlign=t:l[e]=t,l.doTransform=!0},l.afterSetters=function(){this.doTransform&&(this.htmlUpdateTransform(),this.doTransform=!1)},l.attr({text:i,x:Math.round(r),y:Math.round(n)}).css({position:"absolute"}),d.styledMode||l.css({fontFamily:this.style.fontFamily,fontSize:this.style.fontSize}),c.style.whiteSpace="nowrap",l.css=l.htmlCss,p&&(l.add=function(t){var e=d.box.parentNode,i=[];if(this.parentGroup=t){var r=t.div;if(!r){for(;t;)i.push(t),t=t.parentGroup;i.reverse().forEach((function(t){function n(e,i){t[i]=e,"translateX"===i?d.left=e+"px":d.top=e+"px",t.doTransform=!0}var h=o(t.element,"class"),c=t.styles||{},d=(r=t.div=t.div||s("div",h?{className:h}:void 0,{position:"absolute",left:(t.translateX||0)+"px",top:(t.translateY||0)+"px",display:t.display,opacity:t.opacity,cursor:c.cursor,pointerEvents:c.pointerEvents,visibility:t.visibility},r||e)).style;a(t,{classSetter:function(t){return function(e){this.element.setAttribute("class",e),t.className=e}}(r),on:function(){return i[0].div&&l.on.apply({element:i[0].div,onEvents:t.onEvents},arguments),t},translateXSetter:n,translateYSetter:n}),t.addedSetters||u(t)}))}}else r=e;return r.appendChild(c),l.added=!0,l.alignOnAdd&&l.htmlUpdateTransform(),l}),l},r.composedClasses=[],r}(i)})),e(i,"Core/Axis/AxisDefaults.js",[],(function(){var t;return function(t){t.defaultXAxisOptions={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:{autoRotation:void 0,autoRotationLimit:80,distance:void 0,enabled:!0,indentation:10,overflow:"justify",padding:5,reserveSpace:void 0,rotation:void 0,staggerLines:0,step:0,useHTML:!1,x:0,zIndex:7,style:{color:"#666666",cursor:"default",fontSize:"11px"}},maxPadding:.01,minorGridLineDashStyle:"Solid",minorTickLength:2,minorTickPosition:"outside",minPadding:.01,offset:void 0,opposite:!1,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",rotation:0,useHTML:!1,x:0,y:0,style:{color:"#666666"}},type:"linear",uniqueNames:!0,visible:!0,minorGridLineColor:"#f2f2f2",minorGridLineWidth:1,minorTickColor:"#999999",lineColor:"#ccd6eb",lineWidth:1,gridLineColor:"#e6e6e6",gridLineWidth:void 0,tickColor:"#ccd6eb"},t.defaultYAxisOptions={reversedStacks:!0,endOnTick:!0,maxPadding:.05,minPadding:.05,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8},startOnTick:!0,title:{rotation:270,text:"Values"},stackLabels:{animation:{},allowOverlap:!1,enabled:!1,crop:!0,overflow:"justify",formatter:function(){return(0,this.axis.chart.numberFormatter)(this.total,-1)},style:{color:"#000000",fontSize:"11px",fontWeight:"bold",textOutline:"1px contrast"}},gridLineWidth:1,lineWidth:0},t.defaultLeftAxisOptions={labels:{x:-15},title:{rotation:270}},t.defaultRightAxisOptions={labels:{x:15},title:{rotation:90}},t.defaultBottomAxisOptions={labels:{autoRotation:[-45],x:0},margin:15,title:{rotation:0}},t.defaultTopAxisOptions={labels:{autoRotation:[-45],x:0},margin:15,title:{rotation:0}}}(t||(t={})),t})),e(i,"Core/Foundation.js",[i["Core/Utilities.js"]],(function(t){var e,i=t.addEvent,r=t.isFunction,n=t.objectEach,o=t.removeEvent;return function(t){t.registerEventOptions=function(t,e){t.eventOptions=t.eventOptions||{},n(e.events,(function(e,n){t.eventOptions[n]!==e&&(t.eventOptions[n]&&(o(t,n,t.eventOptions[n]),delete t.eventOptions[n]),r(e)&&(t.eventOptions[n]=e,i(t,n,e)))}))}}(e||(e={})),e})),e(i,"Core/Axis/Tick.js",[i["Core/FormatUtilities.js"],i["Core/Globals.js"],i["Core/Utilities.js"]],(function(t,e,i){var r=e.deg2rad,n=i.clamp,o=i.correctFloat,s=i.defined,a=i.destroyObjectProperties,h=i.extend,l=i.fireEvent,c=i.isNumber,d=i.merge,p=i.objectEach,u=i.pick;return e=function(){function e(t,e,i,r,n){this.isNewLabel=this.isNew=!0,this.axis=t,this.pos=e,this.type=i||"",this.parameters=n||{},this.tickmarkOffset=this.parameters.tickmarkOffset,this.options=this.parameters.options,l(this,"init"),i||r||this.addLabel()}return e.prototype.addLabel=function(){var e=this,i=e.axis,r=i.options,n=i.chart,a=i.categories,d=i.logarithmic,p=i.names,f=e.pos,g=u(e.options&&e.options.labels,r.labels),m=i.tickPositions,y=f===m[0],v=f===m[m.length-1],x=(!g.step||1===g.step)&&1===i.tickInterval;m=m.info;var b,w=e.label;if(a=this.parameters.category||(a?u(a[f],p[f],f):f),d&&c(a)&&(a=o(d.lin2log(a))),i.dateTime)if(m)var S=n.time.resolveDTLFormat(r.dateTimeLabelFormats[!r.grid&&m.higherRanks[f]||m.unitName]),k=S.main;else c(a)&&(k=i.dateTime.getXDateFormat(a,r.dateTimeLabelFormats||{}));e.isFirst=y,e.isLast=v;var C={axis:i,chart:n,dateTimeLabelFormat:k,isFirst:y,isLast:v,pos:f,tick:e,tickPositionInfo:m,value:a};l(this,"labelFormat",C);var M=function(e){return g.formatter?g.formatter.call(e,e):g.format?(e.text=i.defaultLabelFormatter.call(e),t.format(g.format,e,n)):i.defaultLabelFormatter.call(e,e)};r=M.call(C,C);var A=S&&S.list;e.shortenLabel=A?function(){for(b=0;bc&&n-d*ps&&(h=Math.round((o-n)/Math.cos(c*r))):(o=n+(1-d)*p,n-d*ps&&(m=s-t.x+m*d,y=-1),(m=Math.min(f,m))m||e.autoRotation&&(l.styles||{}).width)&&(h=m)),h&&(this.shortenLabel?this.shortenLabel():(g.width=Math.floor(h)+"px",(i.style||{}).textOverflow||(g.textOverflow="ellipsis"),l.css(g)))},e.prototype.moveLabel=function(t,e){var i=this,r=i.label,n=i.axis,o=n.reversed,s=!1;if(r&&r.textStr===t?(i.movedLabel=r,s=!0,delete i.label):p(n.ticks,(function(e){s||e.isNew||e===i||!e.label||e.label.textStr!==t||(i.movedLabel=e.label,s=!0,e.labelPos=i.movedLabel.xy,delete e.label)})),!s&&(i.labelPos||r)){var a=i.labelPos||r.xy;r=n.horiz?o?0:n.width+n.left:a.x,n=n.horiz?a.y:o?n.width+n.left:0,i.movedLabel=i.createLabel({x:r,y:n},t,e),i.movedLabel&&i.movedLabel.attr({opacity:0})}},e.prototype.render=function(t,e,i){var r=this.axis,n=r.horiz,o=this.pos,s=u(this.tickmarkOffset,r.tickmarkOffset);s=(o=this.getPosition(n,o,s,e)).x;var a=o.y;r=n&&s===r.pos+r.len||!n&&a===r.pos?-1:1,n=u(i,this.label&&this.label.newOpacity,1),i=u(i,1),this.isActive=!0,this.renderGridLine(e,i,r),this.renderMark(o,i,r),this.renderLabel(o,e,n,t),this.isNew=!1,l(this,"afterRender")},e.prototype.renderGridLine=function(t,e,i){var r=this.axis,n=r.options,o={},s=this.pos,a=this.type,h=u(this.tickmarkOffset,r.tickmarkOffset),l=r.chart.renderer,c=this.gridLine,d=n.gridLineWidth,p=n.gridLineColor,f=n.gridLineDashStyle;"minor"===this.type&&(d=n.minorGridLineWidth,p=n.minorGridLineColor,f=n.minorGridLineDashStyle),c||(r.chart.styledMode||(o.stroke=p,o["stroke-width"]=d||0,o.dashstyle=f),a||(o.zIndex=1),t&&(e=0),this.gridLine=c=l.path().attr(o).addClass("highcharts-"+(a?a+"-":"")+"grid-line").add(r.gridGroup)),c&&(i=r.getPlotLinePath({value:s+h,lineWidth:c.strokeWidth()*i,force:"pass",old:t}))&&c[t||this.isNew?"attr":"animate"]({d:i,opacity:e})},e.prototype.renderMark=function(t,e,i){var r=this.axis,n=r.options,o=r.chart.renderer,s=this.type,a=r.tickSize(s?s+"Tick":"tick"),h=t.x;t=t.y;var l=u(n["minor"!==s?"tickWidth":"minorTickWidth"],!s&&r.isXAxis?1:0);n=n["minor"!==s?"tickColor":"minorTickColor"];var c=this.mark,d=!c;a&&(r.opposite&&(a[0]=-a[0]),c||(this.mark=c=o.path().addClass("highcharts-"+(s?s+"-":"")+"tick").add(r.axisGroup),r.chart.styledMode||c.attr({stroke:n,"stroke-width":l})),c[d?"attr":"animate"]({d:this.getMarkPath(h,t,a[0],c.strokeWidth()*i,r.horiz,o),opacity:e}))},e.prototype.renderLabel=function(t,e,i,r){var n=this.axis,o=n.horiz,s=n.options,a=this.label,h=s.labels,l=h.step;n=u(this.tickmarkOffset,n.tickmarkOffset);var d=t.x;t=t.y;var p=!0;a&&c(d)&&(a.xy=t=this.getLabelPosition(d,t,a,o,h,n,r,l),this.isFirst&&!this.isLast&&!s.showFirstLabel||this.isLast&&!this.isFirst&&!s.showLastLabel?p=!1:!o||h.step||h.rotation||e||0===i||this.handleOverflow(t),l&&r%l&&(p=!1),p&&c(t.y)?(t.opacity=i,a[this.isNewLabel?"attr":"animate"](t),this.isNewLabel=!1):(a.attr("y",-9999),this.isNewLabel=!0))},e.prototype.replaceMovedLabel=function(){var t=this.label,e=this.axis,i=e.reversed;if(t&&!this.isNew){var r=e.horiz?i?e.left:e.width+e.left:t.xy.x;i=e.horiz?t.xy.y:i?e.width+e.top:e.top,t.animate({x:r,y:i,opacity:0},void 0,t.destroy),delete this.label}e.isDirty=!0,this.label=this.movedLabel,delete this.movedLabel},e}(),e})),e(i,"Core/Axis/Axis.js",[i["Core/Animation/AnimationUtilities.js"],i["Core/Axis/AxisDefaults.js"],i["Core/Color/Color.js"],i["Core/DefaultOptions.js"],i["Core/Foundation.js"],i["Core/Globals.js"],i["Core/Axis/Tick.js"],i["Core/Utilities.js"]],(function(t,e,i,r,n,o,s,a){var h=t.animObject,l=r.defaultOptions,c=n.registerEventOptions,d=o.deg2rad,p=a.arrayMax,u=a.arrayMin,f=a.clamp,g=a.correctFloat,m=a.defined,y=a.destroyObjectProperties,v=a.erase,x=a.error,b=a.extend,w=a.fireEvent,S=a.getMagnitude,k=a.isArray,C=a.isNumber,M=a.isString,A=a.merge,T=a.normalizeTickInterval,P=a.objectEach,L=a.pick,O=a.relativeLength,E=a.removeEvent,_=a.splat,D=a.syncTimeout;return t=function(){function t(t,e){this.zoomEnabled=this.width=this.visible=this.userOptions=this.translationSlope=this.transB=this.transA=this.top=this.ticks=this.tickRotCorr=this.tickPositions=this.tickmarkOffset=this.tickInterval=this.tickAmount=this.side=this.series=this.right=this.positiveValuesOnly=this.pos=this.pointRangePadding=this.pointRange=this.plotLinesAndBandsGroups=this.plotLinesAndBands=this.paddedTicks=this.overlap=this.options=this.offset=this.names=this.minPixelPadding=this.minorTicks=this.minorTickInterval=this.min=this.maxLabelLength=this.max=this.len=this.left=this.labelFormatter=this.labelEdge=this.isLinked=this.height=this.hasVisibleSeries=this.hasNames=this.eventOptions=this.coll=this.closestPointRange=this.chart=this.categories=this.bottom=this.alternateBands=void 0,this.init(t,e)}return t.prototype.init=function(t,e){var i=e.isX;this.chart=t,this.horiz=t.inverted&&!this.isZAxis?!i:i,this.isXAxis=i,this.coll=this.coll||(i?"xAxis":"yAxis"),w(this,"init",{userOptions:e}),this.opposite=L(e.opposite,this.opposite),this.side=L(e.side,this.side,this.horiz?this.opposite?0:2:this.opposite?1:3),this.setOptions(e);var r=this.options,n=r.labels,o=r.type;this.userOptions=e,this.minPixelPadding=0,this.reversed=L(r.reversed,this.reversed),this.visible=r.visible,this.zoomEnabled=r.zoomEnabled,this.hasNames="category"===o||!0===r.categories,this.categories=r.categories||this.hasNames,this.names||(this.names=[],this.names.keys={}),this.plotLinesAndBandsGroups={},this.positiveValuesOnly=!!this.logarithmic,this.isLinked=m(r.linkedTo),this.ticks={},this.labelEdge=[],this.minorTicks={},this.plotLinesAndBands=[],this.alternateBands={},this.len=0,this.minRange=this.userMinRange=r.minRange||r.maxZoom,this.range=r.range,this.offset=r.offset||0,this.min=this.max=null,e=L(r.crosshair,_(t.options.tooltip.crosshairs)[i?0:1]),this.crosshair=!0===e?{}:e,-1===t.axes.indexOf(this)&&(i?t.axes.splice(t.xAxis.length,0,this):t.axes.push(this),t[this.coll].push(this)),this.series=this.series||[],t.inverted&&!this.isZAxis&&i&&void 0===this.reversed&&(this.reversed=!0),this.labelRotation=C(n.rotation)?n.rotation:void 0,c(this,r),w(this,"afterInit")},t.prototype.setOptions=function(t){this.options=A(e.defaultXAxisOptions,"yAxis"===this.coll&&e.defaultYAxisOptions,[e.defaultTopAxisOptions,e.defaultRightAxisOptions,e.defaultBottomAxisOptions,e.defaultLeftAxisOptions][this.side],A(l[this.coll],t)),w(this,"afterSetOptions",{userOptions:t})},t.prototype.defaultLabelFormatter=function(t){var e=this.axis;t=this.chart.numberFormatter;var i=C(this.value)?this.value:NaN,r=e.chart.time,n=this.dateTimeLabelFormat,o=l.lang,s=o.numericSymbols;o=o.numericSymbolMagnitude||1e3;var a=e.logarithmic?Math.abs(i):e.tickInterval,h=s&&s.length;if(e.categories)var c=""+this.value;else if(n)c=r.dateFormat(n,i);else if(h&&1e3<=a)for(;h--&&void 0===c;)a>=(e=Math.pow(o,h+1))&&0==10*i%e&&null!==s[h]&&0!==i&&(c=t(i/e,-1)+s[h]);return void 0===c&&(c=1e4<=Math.abs(i)?t(i,-1):t(i,-1,void 0,"")),c},t.prototype.getSeriesExtremes=function(){var t,e=this,i=e.chart;w(this,"getSeriesExtremes",null,(function(){e.hasVisibleSeries=!1,e.dataMin=e.dataMax=e.threshold=null,e.softThreshold=!e.isXAxis,e.stacking&&e.stacking.buildStacks(),e.series.forEach((function(r){if(r.visible||!i.options.chart.ignoreHiddenSeries){var n=r.options,o=n.threshold;if(e.hasVisibleSeries=!0,e.positiveValuesOnly&&0>=o&&(o=null),e.isXAxis){if((n=r.xData).length){n=e.logarithmic?n.filter(e.validatePositiveValue):n;var s=(t=r.getXExtremes(n)).min,a=t.max;C(s)||s instanceof Date||(n=n.filter(C),s=(t=r.getXExtremes(n)).min,a=t.max),n.length&&(e.dataMin=Math.min(L(e.dataMin,s),s),e.dataMax=Math.max(L(e.dataMax,a),a))}}else r=r.applyExtremes(),C(r.dataMin)&&(s=r.dataMin,e.dataMin=Math.min(L(e.dataMin,s),s)),C(r.dataMax)&&(a=r.dataMax,e.dataMax=Math.max(L(e.dataMax,a),a)),m(o)&&(e.threshold=o),(!n.softThreshold||e.positiveValuesOnly)&&(e.softThreshold=!1)}}))})),w(this,"afterGetSeriesExtremes")},t.prototype.translate=function(t,e,i,r,n,o){var s=this.linkedParent||this,a=r&&s.old?s.old.min:s.min,h=s.minPixelPadding;n=(s.isOrdinal||s.brokenAxis&&s.brokenAxis.hasBreaks||s.logarithmic&&n)&&s.lin2val;var l=1,c=0;return(r=r&&s.old?s.old.transA:s.transA)||(r=s.transA),i&&(l*=-1,c=s.len),s.reversed&&(c-=(l*=-1)*(s.sector||s.len)),e?(t=(t*l+c-h)/r+a,n&&(t=s.lin2val(t))):(n&&(t=s.val2lin(t)),t=C(a)?l*(t-a)*r+c+l*h+(C(o)?r*o:0):void 0),t},t.prototype.toPixels=function(t,e){return this.translate(t,!1,!this.horiz,null,!0)+(e?0:this.pos)},t.prototype.toValue=function(t,e){return this.translate(t-(e?0:this.pos),!0,!this.horiz,null,!0)},t.prototype.getPlotLinePath=function(t){function e(t,e,i){return("pass"!==x&&ti)&&(x?t=f(t,e,i):s=!0),t}var i,r,n,o,s,a=this,h=a.chart,l=a.left,c=a.top,d=t.old,p=t.value,u=t.lineWidth,g=d&&h.oldChartHeight||h.chartHeight,m=d&&h.oldChartWidth||h.chartWidth,y=a.transB,v=t.translatedValue,x=t.force;return t={value:p,lineWidth:u,old:d,force:x,acrossPanes:t.acrossPanes,translatedValue:v},w(this,"getPlotLinePath",t,(function(t){v=L(v,a.translate(p,null,null,d)),v=f(v,-1e5,1e5),i=n=Math.round(v+y),r=o=Math.round(g-v-y),C(v)?a.horiz?(r=c,o=g-a.bottom,i=n=e(i,l,l+a.width)):(i=l,n=m-a.right,r=o=e(r,c,c+a.height)):(s=!0,x=!1),t.path=s&&!x?null:h.renderer.crispLine([["M",i,r],["L",n,o]],u||1)})),t.path},t.prototype.getLinearTickPositions=function(t,e,i){var r=g(Math.floor(e/t)*t);i=g(Math.ceil(i/t)*t);var n,o=[];if(g(r+t)===r&&(n=20),this.single)return[e];for(e=r;e<=i&&(o.push(e),(e=g(e+t,n))!==s);)var s=e;return o},t.prototype.getMinorTickInterval=function(){var t=this.options;return!0===t.minorTicks?L(t.minorTickInterval,"auto"):!1===t.minorTicks?null:t.minorTickInterval},t.prototype.getMinorTickPositions=function(){var t=this.options,e=this.tickPositions,i=this.minorTickInterval,r=this.pointRangePadding||0,n=this.min-r,o=(r=this.max+r)-n,s=[];if(o&&o/i=this.minRange,c=this.minRange,d=(c-a+s)/2;d=[s-d,L(n.min,s-d)],l&&(d[2]=this.logarithmic?this.logarithmic.log2lin(this.dataMin):this.dataMin),a=[(s=p(d))+c,L(n.max,s+c)],l&&(a[2]=o?o.log2lin(this.dataMax):this.dataMax),(a=u(a))-s=p)y=p,c=0;else if(this.dataMax<=p){var v=p;l=0}this.min=L(u,y,this.dataMin),this.max=L(f,v,this.dataMax)}if(i&&(this.positiveValuesOnly&&!t&&0>=Math.min(this.min,L(this.dataMin,this.min))&&x(10,1,e),this.min=g(i.log2lin(this.min),16),this.max=g(i.log2lin(this.max),16)),this.range&&m(this.max)&&(this.userMin=this.min=u=Math.max(this.dataMin,this.minFromRange()),this.userMax=f=this.max,this.range=null),w(this,"foundExtremes"),this.beforePadding&&this.beforePadding(),this.adjustForMinRange(),!(a||this.axisPointRange||this.stacking&&this.stacking.usePercentage||o)&&m(this.min)&&m(this.max)&&(e=this.max-this.min)&&(!m(u)&&c&&(this.min-=e*c),!m(f)&&l&&(this.max+=e*l)),C(this.userMin)||(C(r.softMin)&&r.softMinthis.max&&(this.max=f=r.softMax),C(r.ceiling)&&(this.max=Math.min(this.max,r.ceiling))),h&&m(this.dataMin)&&(p=p||0,!m(u)&&this.min=p?this.min=this.options.minRange?Math.min(p,this.max-this.minRange):p:!m(f)&&this.max>p&&this.dataMax<=p&&(this.max=this.options.minRange?Math.max(p,this.min+this.minRange):p)),C(this.min)&&C(this.max)&&!this.chart.polar&&this.min>this.max&&(m(this.options.min)?this.max=this.min:m(this.options.max)&&(this.min=this.max)),this.tickInterval=this.min===this.max||void 0===this.min||void 0===this.max?1:o&&this.linkedParent&&!d&&s===this.linkedParent.options.tickPixelInterval?d=this.linkedParent.tickInterval:L(d,this.tickAmount?(this.max-this.min)/Math.max(this.tickAmount-1,1):void 0,a?1:(this.max-this.min)*s/Math.max(this.len,s)),n&&!t){var b=this.min!==(this.old&&this.old.min)||this.max!==(this.old&&this.old.max);this.series.forEach((function(t){t.forceCrop=t.forceCropping&&t.forceCropping(),t.processData(b)})),w(this,"postProcessData",{hasExtemesChanged:b})}this.setAxisTranslation(),w(this,"initialAxisTranslation"),this.pointRange&&!d&&(this.tickInterval=Math.max(this.pointRange,this.tickInterval)),t=L(r.minTickInterval,this.dateTime&&!this.series.some((function(t){return t.noSharedTooltip}))?this.closestPointRange:0),!d&&this.tickIntervalthis.tickInterval||void 0!==this.tickAmount),!!this.tickAmount)),this.tickAmount||(this.tickInterval=this.unsquish()),this.setTickPositions()},t.prototype.setTickPositions=function(){var t=this.options,e=t.tickPositions,i=this.getMinorTickInterval(),r=this.hasVerticalPanning(),n="colorAxis"===this.coll,o=(n||!r)&&t.startOnTick;r=(n||!r)&&t.endOnTick,n=t.tickPositioner,this.tickmarkOffset=this.categories&&"between"===t.tickmarkPlacement&&1===this.tickInterval?.5:0,this.minorTickInterval="auto"===i&&this.tickInterval?this.tickInterval/5:i,this.single=this.min===this.max&&m(this.min)&&!this.tickAmount&&(parseInt(this.min,10)===this.min||!1!==t.allowDecimals),this.tickPositions=i=e&&e.slice(),!i&&(this.ordinal&&this.ordinal.positions||!((this.max-this.min)/this.tickInterval>Math.max(2*this.len,200))?i=this.dateTime?this.getTimeTicks(this.dateTime.normalizeTimeTickInterval(this.tickInterval,t.units),this.min,this.max,t.startOfWeek,this.ordinal&&this.ordinal.positions,this.closestPointRange,!0):this.logarithmic?this.logarithmic.getLogTickPositions(this.tickInterval,this.min,this.max):this.getLinearTickPositions(this.tickInterval,this.min,this.max):(i=[this.min,this.max],x(19,!1,this.chart)),i.length>this.len&&(i=[i[0],i.pop()])[0]===i[1]&&(i.length=1),this.tickPositions=i,n&&(n=n.apply(this,[this.min,this.max])))&&(this.tickPositions=i=n),this.paddedTicks=i.slice(0),this.trimTicks(i,o,r),this.isLinked||(this.single&&2>i.length&&!this.categories&&!this.series.some((function(t){return t.is("heatmap")&&"between"===t.options.pointPlacement}))&&(this.min-=.5,this.max+=.5),e||n||this.adjustTickAmount()),w(this,"afterSetTickPositions")},t.prototype.trimTicks=function(t,e,i){var r=t[0],n=t[t.length-1],o=!this.isOrdinal&&this.minPointOffset||0;if(w(this,"trimTicks"),!this.isLinked){if(e&&-1/0!==r)this.min=r;else for(;this.min-o>t[0];)t.shift();if(i)this.max=n;else for(;this.max+oi&&(this.finalTickAmt=i,i=5),this.tickAmount=i},t.prototype.adjustTickAmount=function(){var t=this.options,e=this.tickInterval,i=this.tickPositions,r=this.tickAmount,n=this.finalTickAmt,o=i&&i.length,s=L(this.threshold,this.softThreshold?0:null);if(this.hasData()&&C(this.min)&&C(this.max)){if(or&&(this.tickInterval*=2,this.setTickPositions());if(m(n)){for(e=t=i.length;e--;)(3===n&&1==e%2||2>=n&&0a&&(e=a)),m(n)&&(oa&&(o=a))),i.displayBtn=void 0!==e||void 0!==o,i.setExtremes(e,o,!1,void 0,{trigger:"zoom"})),t.zoomed=!0})),t.zoomed},t.prototype.setAxisSize=function(){var t=this.chart,e=this.options,i=e.offsets||[0,0,0,0],r=this.horiz,n=this.width=Math.round(O(L(e.width,t.plotWidth-i[3]+i[1]),t.plotWidth)),o=this.height=Math.round(O(L(e.height,t.plotHeight-i[0]+i[2]),t.plotHeight)),s=this.top=Math.round(O(L(e.top,t.plotTop+i[0]),t.plotHeight,t.plotTop));e=this.left=Math.round(O(L(e.left,t.plotLeft+i[3]),t.plotWidth,t.plotLeft)),this.bottom=t.chartHeight-o-s,this.right=t.chartWidth-n-e,this.len=Math.max(r?n:o,0),this.pos=r?e:s},t.prototype.getExtremes=function(){var t=this.logarithmic;return{min:t?g(t.lin2log(this.min)):this.min,max:t?g(t.lin2log(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},t.prototype.getThreshold=function(t){var e=this.logarithmic,i=e?e.lin2log(this.min):this.min;return e=e?e.lin2log(this.max):this.max,null===t||-1/0===t?t=i:1/0===t?t=e:i>t?t=i:ee?t.align="right":195e&&(t.align="left")})),t.align},t.prototype.tickSize=function(t){var e=this.options,i=L(e["tick"===t?"tickWidth":"minorTickWidth"],"tick"===t&&this.isXAxis&&!this.categories?1:0),r=e["tick"===t?"tickLength":"minorTickLength"];if(i&&r){"inside"===e[t+"Position"]&&(r=-r);var n=[r,i]}return w(this,"afterTickSize",t={tickSize:n}),t.tickSize},t.prototype.labelMetrics=function(){var t=this.tickPositions&&this.tickPositions[0]||0;return this.chart.renderer.fontMetrics(this.options.labels.style.fontSize,this.ticks[t]&&this.ticks[t].label)},t.prototype.unsquish=function(){var t,e,i=this.options.labels,r=this.horiz,n=this.tickInterval,o=this.len/(((this.categories?1:0)+this.max-this.min)/n),s=i.rotation,a=this.labelMetrics(),h=Math.max(this.max-this.min,0),l=function(t){var e=t/(o||1);return(e=1h&&1/0!==t&&1/0!==o&&h&&(e=Math.ceil(h/n)),g(e*n)},c=n,p=Number.MAX_VALUE;if(r){if(!i.staggerLines&&!i.step)if(C(s))var u=[s];else o=i){var r=(e=l(Math.abs(a.h/Math.sin(d*i))))+Math.abs(i/360);rr.step)return r.rotation?0:(this.staggerLines||1)*this.len/n;if(!i){if(void 0!==(t=r.style.width))return parseInt(String(t),10);if(o)return o-e.spacing[3]}return.33*e.chartWidth},t.prototype.renderUnsquish=function(){var t=this.chart,e=t.renderer,i=this.tickPositions,r=this.ticks,n=this.options.labels,o=n.style,s=this.horiz,a=this.getSlotWidth(),h=Math.max(1,Math.round(a-2*n.padding)),l={},c=this.labelMetrics(),d=o.textOverflow,p=0;if(M(n.rotation)||(l.rotation=n.rotation||0),i.forEach((function(t){(t=r[t]).movedLabel&&t.replaceMovedLabel(),t&&t.label&&t.label.textPxLength>p&&(p=t.label.textPxLength)})),this.maxLabelLength=p,this.autoRotation)p>h&&p>c.h?l.rotation=this.labelRotation:this.labelRotation=0;else if(a){var u=h;if(!d){var f="clip";for(h=i.length;!s&&h--;){var g=i[h];(g=r[g].label)&&(g.styles&&"ellipsis"===g.styles.textOverflow?g.css({textOverflow:"clip"}):g.textPxLength>a&&g.css({width:a+"px"}),g.getBBox().height>this.len/i.length-(c.h-c.f)&&(g.specificTextOverflow="ellipsis"))}}}l.rotation&&(u=p>.5*t.chartHeight?.33*t.chartHeight:p,d||(f="ellipsis")),(this.labelAlign=n.align||this.autoLabelAlign(this.labelRotation))&&(l.align=this.labelAlign),i.forEach((function(t){var e=(t=r[t])&&t.label,i=o.width,n={};e&&(e.attr(l),t.shortenLabel?t.shortenLabel():u&&!i&&"nowrap"!==o.whiteSpace&&(u=this.min&&t<=this.max||this.grid&&this.grid.isColumn)&&(r[t]||(r[t]=new s(this,t)),i&&r[t].isNew&&r[t].render(e,!0,-1),r[t].render(e))},t.prototype.render=function(){var t,e,i=this,r=i.chart,n=i.logarithmic,a=i.options,l=i.isLinked,c=i.tickPositions,d=i.axisTitle,p=i.ticks,u=i.minorTicks,f=i.alternateBands,g=a.stackLabels,m=a.alternateGridColor,y=i.tickmarkOffset,v=i.axisLine,x=i.showAxis,b=h(r.renderer.globalAnimation);if(i.labelEdge.length=0,i.overlap=!1,[p,u,f].forEach((function(t){P(t,(function(t){t.isActive=!1}))})),i.hasData()||l){var S=i.chart.hasRendered&&i.old&&C(i.old.min);i.minorTickInterval&&!i.categories&&i.getMinorTickPositions().forEach((function(t){i.renderMinorTick(t,S)})),c.length&&(c.forEach((function(t,e){i.renderTick(t,e,S)})),y&&(0===i.min||i.single)&&(p[-1]||(p[-1]=new s(i,-1,null,!0)),p[-1].render(-1))),m&&c.forEach((function(s,a){e=void 0!==c[a+1]?c[a+1]+y:i.max-y,0==a%2&&se&&(!s||l<=i)&&void 0!==l&&c.push(l),l>i&&(u=!0),l=g}}}else e=this.lin2log(e),i=this.lin2log(i),t=s?a.getMinorTickInterval():l.tickInterval,t=o("auto"===t?null:t,this.minorAutoInterval,l.tickPixelInterval/(s?5:1)*(i-e)/((s?h/a.tickPositions.length:h)||1)),t=n(t,void 0,r(t)),c=a.getLinearTickPositions(t,e,i).map(this.log2lin),s||(this.minorAutoInterval=t/5);return s||(a.tickInterval=t),c},t.prototype.lin2log=function(t){return Math.pow(10,t)},t.prototype.log2lin=function(t){return Math.log(t)/Math.LN10},t}();t.Additions=h}(e||(e={})),e})),e(i,"Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js",[i["Core/Utilities.js"]],(function(t){var e,i=t.erase,r=t.extend,n=t.isNumber;return function(t){var e,o=[];t.compose=function(t,i){return e||(e=t),-1===o.indexOf(i)&&(o.push(i),r(i.prototype,s.prototype)),i};var s=function(){function t(){}return t.prototype.getPlotBandPath=function(t,e,i){void 0===i&&(i=this.options);var r=this.getPlotLinePath({value:e,force:!0,acrossPanes:i.acrossPanes}),o=[],s=this.horiz;if(e=!n(this.min)||!n(this.max)||tthis.max&&e>this.max,t=this.getPlotLinePath({value:t,force:!0,acrossPanes:i.acrossPanes}),i=1,t&&r){if(e){var a=t.toString()===r.toString();i=0}for(e=0;ey-h?y:y-h);else{if(!g)return!1;a[t]=Math.max(s,n+h+i>e?n:n+h)}},v=function(t,e,i,r,n){var s;return ne-o?s=!1:a[t]=ne-r/2?e-r-2:n-i/2,s},b=function(t){var e=f;f=g,g=e,r=t},w=function(){!1!==y.apply(0,f)?!1!==v.apply(0,g)||r||(b(!0),w()):r?a.x=a.y=0:(b(!0),w())};return(n.inverted||1e}))&&(t=t.map((function(t){var e=i(t.anchorX,t.anchorY,t.point.isHeader,t.boxWidth,!1);return u(t,{target:e.y,x:e.x})}))),r.cleanSplit(),a(t,D);var N=O,j=O;t.forEach((function(t){var e=t.x,i=t.boxWidth;(t=t.isHeader)||(r.outside&&O+ej&&(j=O+e))})),t.forEach((function(t){var e=t.x,i=t.anchorX,n=t.pos,o=t.point.isHeader;if(n={visibility:void 0===n?"hidden":"inherit",x:e,y:n+E,anchorX:i,anchorY:t.anchorY},r.outside&&ei[0]?Math.max(Math.abs(i[0]),n.width-i[0]):Math.max(Math.abs(i[0]),n.width),r.height=0>i[1]?Math.max(Math.abs(i[1]),n.height-Math.abs(i[1])):Math.max(Math.abs(i[1]),n.height),this.tracker?this.tracker.attr(r):(this.tracker=e.renderer.rect(r).addClass("highcharts-tracker").add(e),t.styledMode||this.tracker.attr({fill:"rgba(0,0,0,0)"}))}}},t.prototype.styledModeFormat=function(t){return t.replace('style="font-size: 10px"','class="highcharts-header"').replace(/style="color:{(point|series)\.color}"/g,'class="highcharts-color-{$1.colorIndex}"')},t.prototype.tooltipFooterHeaderFormatter=function(t,e){var i=t.series,r=i.tooltipOptions,n=i.xAxis,s=n&&n.dateTime;n={isFooter:e,labelConfig:t};var a=r.xDateFormat,h=r[e?"footerFormat":"headerFormat"];return f(this,"headerFormatter",n,(function(e){s&&!a&&m(t.key)&&(a=s.getXDateFormat(t.key,r.dateTimeLabelFormats)),s&&a&&(t.point&&t.point.tooltipDateKeys||["key"]).forEach((function(t){h=h.replace("{point."+t+"}","{point."+t+":"+a+"}")})),i.chart.styledMode&&(h=this.styledModeFormat(h)),e.text=o(h,{point:t,series:i},this.chart)})),n.text},t.prototype.update=function(t){this.destroy(),v(!0,this.chart.options.tooltip.userOptions,t),this.init(this.chart,v(!0,this.options,t))},t.prototype.updatePosition=function(t){var e=this.chart,i=this.options,r=e.pointer,n=this.getLabel();r=r.getChartPosition();var o=(i.positioner||this.getPosition).call(this,n.width,n.height,t),s=t.plotX+e.plotLeft;t=t.plotY+e.plotTop,this.outside&&(i=i.borderWidth+2*this.distance,this.renderer.setSize(n.width+i,n.height+i,!1),1===r.scaleX&&1===r.scaleY||(c(this.container,{transform:"scale("+r.scaleX+", "+r.scaleY+")"}),s*=r.scaleX,t*=r.scaleY),s+=r.left-o.x,t+=r.top-o.y),this.move(Math.round(o.x),Math.round(o.y||0),s,t)},t}(),t})),e(i,"Core/Series/Point.js",[i["Core/Renderer/HTML/AST.js"],i["Core/Animation/AnimationUtilities.js"],i["Core/DefaultOptions.js"],i["Core/FormatUtilities.js"],i["Core/Utilities.js"]],(function(t,e,i,r,n){var o=e.animObject,s=i.defaultOptions,a=r.format,h=n.addEvent,l=n.defined,c=n.erase,d=n.extend,p=n.fireEvent,u=n.getNestedProperty,f=n.isArray,g=n.isFunction,m=n.isNumber,y=n.isObject,v=n.merge,x=n.objectEach,b=n.pick,w=n.syncTimeout,S=n.removeEvent,k=n.uniqueKey;return e=function(){function e(){this.colorIndex=this.category=void 0,this.formatPrefix="point",this.id=void 0,this.isNull=!1,this.percentage=this.options=this.name=void 0,this.selected=!1,this.total=this.series=void 0,this.visible=!0,this.x=void 0}return e.prototype.animateBeforeDestroy=function(){var t=this,e={x:t.startXPos,opacity:0},i=t.getGraphicalProps();i.singular.forEach((function(i){t[i]=t[i].animate("dataLabel"===i?{x:t[i].startXPos,y:t[i].startYPos,opacity:0}:e)})),i.plural.forEach((function(e){t[e].forEach((function(e){e.element&&e.animate(d({x:t.startXPos},e.startYPos?{x:e.startXPos,y:e.startYPos}:{}))}))}))},e.prototype.applyOptions=function(t,i){var r=this.series,n=r.options.pointValKey||r.pointValKey;return t=e.prototype.optionsToObject.call(this,t),d(this,t),this.options=this.options?d(this.options,t):t,t.group&&delete this.group,t.dataLabels&&delete this.dataLabels,n&&(this.y=e.prototype.getNestedProperty.call(this,n)),this.formatPrefix=(this.isNull=b(this.isValid&&!this.isValid(),null===this.x||!m(this.y)))?"null":"point",this.selected&&(this.state="select"),"name"in this&&void 0===i&&r.xAxis&&r.xAxis.hasNames&&(this.x=r.xAxis.nameToX(this)),void 0===this.x&&r?this.x=void 0===i?r.autoIncrement():i:m(t.x)&&r.options.relativeXValue&&(this.x=r.autoIncrement(t.x)),this},e.prototype.destroy=function(){function t(){for(n in(e.graphic||e.dataLabel||e.dataLabels)&&(S(e),e.destroyElements()),e)e[n]=null}var e=this,i=e.series,r=i.chart;i=i.options.dataSorting;var n,s=r.hoverPoints,a=o(e.series.chart.renderer.globalAnimation);e.legendItem&&r.legend.destroyItem(e),s&&(e.setState(),c(s,e),s.length||(r.hoverPoints=null)),e===r.hoverPoint&&e.onMouseOut(),i&&i.enabled?(this.animateBeforeDestroy(),w(t,a.duration)):t(),r.pointCount--},e.prototype.destroyElements=function(t){var e=this;(t=e.getGraphicalProps(t)).singular.forEach((function(t){e[t]=e[t].destroy()})),t.plural.forEach((function(t){e[t].forEach((function(t){t.element&&t.destroy()})),delete e[t]}))},e.prototype.firePointEvent=function(t,e,i){var r=this,n=this.series.options;(n.point.events[t]||r.options&&r.options.events&&r.options.events[t])&&r.importEvents(),"click"===t&&n.allowPointSelect&&(i=function(t){r.select&&r.select(null,t.ctrlKey||t.metaKey||t.shiftKey)}),p(r,t,e,i)},e.prototype.getClassName=function(){return"highcharts-point"+(this.selected?" highcharts-point-select":"")+(this.negative?" highcharts-negative":"")+(this.isNull?" highcharts-null-point":"")+(void 0!==this.colorIndex?" highcharts-color-"+this.colorIndex:"")+(this.options.className?" "+this.options.className:"")+(this.zone&&this.zone.className?" "+this.zone.className.replace("highcharts-negative",""):"")},e.prototype.getGraphicalProps=function(t){var e,i=this,r=[],n={singular:[],plural:[]};for((t=t||{graphic:1,dataLabel:1}).graphic&&r.push("graphic","upperGraphic","shadowGroup"),t.dataLabel&&r.push("dataLabel","dataLabelUpper","connector"),e=r.length;e--;){var o=r[e];i[o]&&n.singular.push(o)}return["dataLabel","connector"].forEach((function(e){var r=e+"s";t[e]&&i[r]&&n.plural.push(r)})),n},e.prototype.getLabelConfig=function(){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}},e.prototype.getNestedProperty=function(t){if(t)return 0===t.indexOf("custom.")?u(t,this.options):this[t]},e.prototype.getZone=function(){var t=this.series,e=t.zones;t=t.zoneAxis||"y";var i,r=0;for(i=e[r];this[t]>=i.value;)i=e[++r];return this.nonZonedColor||(this.nonZonedColor=this.color),this.color=i&&i.color&&!this.options.color?i.color:this.nonZonedColor,i},e.prototype.hasNewShapeType=function(){return(this.graphic&&(this.graphic.symbolName||this.graphic.element.nodeName))!==this.shapeType},e.prototype.init=function(t,e,i){return this.series=t,this.applyOptions(e,i),this.id=l(this.id)?this.id:k(),this.resolveColor(),t.chart.pointCount++,p(this,"afterInit"),this},e.prototype.optionsToObject=function(t){var i=this.series,r=i.options.keys,n=r||i.pointArrayMap||["y"],o=n.length,s={},a=0,h=0;if(m(t)||null===t)s[n[0]]=t;else if(f(t))for(!r&&t.length>o&&("string"==(i=typeof t[0])?s.name=t[0]:"number"===i&&(s.x=t[0]),a++);hs+h&&(f=s+h),ma+l&&(m=a+l),this.hasDragged=Math.sqrt(Math.pow(c-f,2)+Math.pow(d-m,2)),10t.options.findNearestPointBy.indexOf("y");if(t=t.searchPoint(i,n),(n=g(t,!0)&&t.series)&&!(n=!g(r,!0))){n=r.distX-t.distX;var o=r.dist-t.dist,s=(t.series.group&&t.series.group.zIndex)-(r.series.group&&r.series.group.zIndex);n=0<(0!==n&&e?n:0!==o?o:0!==s?s:r.series.index>t.series.index?-1:1)}n&&(r=t)})),r)},t.prototype.getChartCoordinatesFromPoint=function(t,e){var i=t.series,r=i.xAxis;i=i.yAxis;var n=t.shapeArgs;if(r&&i){var o=v(t.clientX,t.plotX),s=t.plotY||0;return t.isNode&&n&&f(n.x)&&f(n.y)&&(o=n.x,s=n.y),e?{chartX:i.len+i.pos-s,chartY:r.len+r.pos-o}:{chartX:o+r.pos,chartY:s+i.pos}}if(n&&n.x&&n.y)return{chartX:n.x,chartY:n.y}},t.prototype.getChartPosition=function(){if(this.chartPosition)return this.chartPosition;var t=this.chart.container,e=y(t);this.chartPosition={left:e.left,top:e.top,scaleX:1,scaleY:1};var i=t.offsetWidth;return t=t.offsetHeight,2g.max&&(i=g.max-x,C=!0);C?(S-=.8*(S-s[l][0]),"number"==typeof k&&(k-=.8*(k-s[l][1])),e()):s[l]=[S,k],f||(o[l]=b-u,o[p]=x),o=f?1/w:w,n[p]=x,n[l]=i,r[f?t?"scaleY":"scaleX":"scale"+c]=w,r["translate"+c]=o*u+(S-o*y)},t.prototype.reset=function(t,e){var i=this.chart,r=i.hoverSeries,n=i.hoverPoint,o=i.hoverPoints,s=i.tooltip,a=s&&s.shared?o:n;t&&a&&x(a).forEach((function(e){e.series.isCartesian&&void 0===e.plotX&&(t=!1)})),t?s&&a&&x(a).length&&(s.refresh(a),s.shared&&o?o.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))})):n&&(n.setState(n.state,!0),i.axes.forEach((function(t){t.crosshair&&n.series[t.coll]===t&&t.drawCrosshair(null,n)})))):(n&&n.onMouseOut(),o&&o.forEach((function(t){t.setState()})),r&&r.onMouseOut(),s&&s.hide(e),this.unDocMouseMove&&(this.unDocMouseMove=this.unDocMouseMove()),i.axes.forEach((function(t){t.hideCrosshair()})),this.hoverX=i.hoverPoints=i.hoverPoint=null)},t.prototype.runPointActions=function(e,i){var r=this.chart,n=r.tooltip&&r.tooltip.options.enabled?r.tooltip:void 0,s=!!n&&n.shared,h=i||r.hoverPoint,l=h&&h.series||r.hoverSeries;h=(i=this.getHoverData(h,l,r.series,(!e||"touchmove"!==e.type)&&(!!i||l&&l.directTouch&&this.isDirectTouch),s,e)).hoverPoint,l=i.hoverSeries;var c=i.hoverPoints;if(i=l&&l.tooltipOptions.followPointer&&!l.tooltipOptions.split,s=s&&l&&!l.noSharedTooltip,h&&(h!==r.hoverPoint||n&&n.isHidden)){if((r.hoverPoints||[]).forEach((function(t){-1===c.indexOf(t)&&t.setState()})),r.hoverSeries!==l&&l.onMouseOver(),this.applyInactiveState(c),(c||[]).forEach((function(t){t.setState("hover")})),r.hoverPoint&&r.hoverPoint.firePointEvent("mouseOut"),!h.series)return;r.hoverPoints=c,r.hoverPoint=h,h.firePointEvent("mouseOver"),n&&n.refresh(s?c:h,e)}else i&&n&&!n.isHidden&&(h=n.getAnchor([{}],e),r.isInsidePlot(h[0],h[1],{visiblePlotOnly:!0})&&n.updatePosition({plotX:h[0],plotY:h[1]}));this.unDocMouseMove||(this.unDocMouseMove=a(r.container.ownerDocument,"mousemove",(function(e){var i=o[t.hoverChartIndex];i&&i.pointer.onDocumentMouseMove(e)})),this.eventsToUnbind.push(this.unDocMouseMove)),r.axes.forEach((function(t){var i,n=v((t.crosshair||{}).snap,!0);n&&((i=r.hoverPoint)&&i.series[t.coll]===t||(i=p(c,(function(e){return e.series[t.coll]===t})))),i||!n?t.drawCrosshair(e,i):t.hideCrosshair()}))},t.prototype.scaleGroups=function(t,e){var i=this.chart;i.series.forEach((function(r){var n=t||r.getPlotBox();r.group&&(r.xAxis&&r.xAxis.zoomEnabled||i.mapView)&&(r.group.attr(n),r.markerGroup&&(r.markerGroup.attr(n),r.markerGroup.clip(e?i.clipRect:null)),r.dataLabelsGroup&&r.dataLabelsGroup.attr(n))})),i.clipRect.attr(e||i.clipBox)},t.prototype.setDOMEvents=function(){var i=this,r=this.chart.container,n=r.ownerDocument;r.onmousedown=this.onContainerMouseDown.bind(this),r.onmousemove=this.onContainerMouseMove.bind(this),r.onclick=this.onContainerClick.bind(this),this.eventsToUnbind.push(a(r,"mouseenter",this.onContainerMouseEnter.bind(this))),this.eventsToUnbind.push(a(r,"mouseleave",this.onContainerMouseLeave.bind(this))),t.unbindDocumentMouseUp||(t.unbindDocumentMouseUp=a(n,"mouseup",this.onDocumentMouseUp.bind(this)));for(var o=this.chart.renderTo.parentElement;o&&"BODY"!==o.tagName;)this.eventsToUnbind.push(a(o,"scroll",(function(){delete i.chartPosition}))),o=o.parentElement;e.hasTouch&&(this.eventsToUnbind.push(a(r,"touchstart",this.onContainerTouchStart.bind(this),{passive:!1})),this.eventsToUnbind.push(a(r,"touchmove",this.onContainerTouchMove.bind(this),{passive:!1})),t.unbindDocumentTouchEnd||(t.unbindDocumentTouchEnd=a(n,"touchend",this.onDocumentTouchEnd.bind(this),{passive:!1})))},t.prototype.setHoverChartIndex=function(){var i=this.chart,r=e.charts[v(t.hoverChartIndex,-1)];r&&r!==i&&r.pointer.onContainerMouseLeave({relatedTarget:!0}),r&&r.mouseIsDown||(t.hoverChartIndex=i.index)},t.prototype.touch=function(t,e){var i=this.chart;if(this.setHoverChartIndex(),1===t.touches.length)if(t=this.normalize(t),i.isInsidePlot(t.chartX-i.plotLeft,t.chartY-i.plotTop,{visiblePlotOnly:!0})&&!i.openMenu){if(e&&this.runPointActions(t),"touchmove"===t.type)var r=!!(e=this.pinchDown)[0]&&4<=Math.sqrt(Math.pow(e[0].chartX-t.chartX,2)+Math.pow(e[0].chartY-t.chartY,2));v(r,!0)&&this.pinch(t)}else e&&this.reset();else 2===t.touches.length&&this.pinch(t)},t.prototype.touchSelect=function(t){return!(!this.chart.options.chart.zoomBySingleTouch||!t.touches||1!==t.touches.length)},t.prototype.zoomOption=function(t){var e=this.chart,i=e.options.chart;e=e.inverted;var r=i.zoomType||"";/touch/.test(t.type)&&(r=v(i.pinchType,r)),this.zoomX=t=/x/.test(r),this.zoomY=i=/y/.test(r),this.zoomHor=t&&!e||i&&e,this.zoomVert=i&&!e||t&&e,this.hasZoom=t||i},t}(),t})),e(i,"Core/MSPointer.js",[i["Core/Globals.js"],i["Core/Pointer.js"],i["Core/Utilities.js"]],(function(t,e,i){function r(){var t=[];return t.item=function(t){return this[t]},p(f,(function(e){t.push({pageX:e.pageX,pageY:e.pageY,target:e.target})})),t}function n(t,i,n,o){var a=s[e.hoverChartIndex||NaN];"touch"!==t.pointerType&&t.pointerType!==t.MSPOINTER_TYPE_TOUCH||!a||(a=a.pointer,o(t),a[i]({type:n,target:t.currentTarget,preventDefault:h,touches:r()}))}var o=this&&this.__extends||function(){var t=function(e,i){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])},t(e,i)};return function(e,i){function r(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),s=t.charts,a=t.doc,h=t.noop,l=t.win,c=i.addEvent,d=i.css,p=i.objectEach,u=i.removeEvent,f={},g=!!l.PointerEvent;return function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return o(i,e),i.isRequired=function(){return!(t.hasTouch||!l.PointerEvent&&!l.MSPointerEvent)},i.prototype.batchMSEvents=function(t){t(this.chart.container,g?"pointerdown":"MSPointerDown",this.onContainerPointerDown),t(this.chart.container,g?"pointermove":"MSPointerMove",this.onContainerPointerMove),t(a,g?"pointerup":"MSPointerUp",this.onDocumentPointerUp)},i.prototype.destroy=function(){this.batchMSEvents(u),e.prototype.destroy.call(this)},i.prototype.init=function(t,i){e.prototype.init.call(this,t,i),this.hasZoom&&d(t.container,{"-ms-touch-action":"none","touch-action":"none"})},i.prototype.onContainerPointerDown=function(t){n(t,"onContainerTouchStart","touchstart",(function(t){f[t.pointerId]={pageX:t.pageX,pageY:t.pageY,target:t.currentTarget}}))},i.prototype.onContainerPointerMove=function(t){n(t,"onContainerTouchMove","touchmove",(function(t){f[t.pointerId]={pageX:t.pageX,pageY:t.pageY},f[t.pointerId].target||(f[t.pointerId].target=t.currentTarget)}))},i.prototype.onDocumentPointerUp=function(t){n(t,"onDocumentTouchEnd","touchend",(function(t){delete f[t.pointerId]}))},i.prototype.setDOMEvents=function(){e.prototype.setDOMEvents.call(this),(this.hasZoom||this.followTouchMove)&&this.batchMSEvents(c)},i}(e)})),e(i,"Core/Legend/Legend.js",[i["Core/Animation/AnimationUtilities.js"],i["Core/FormatUtilities.js"],i["Core/Globals.js"],i["Core/Series/Point.js"],i["Core/Renderer/RendererUtilities.js"],i["Core/Utilities.js"]],(function(t,e,i,r,n,o){var s=t.animObject,a=t.setAnimation,h=e.format;t=i.isFirefox;var l=i.marginNames;i=i.win;var c=n.distribute,d=o.addEvent,p=o.createElement,u=o.css,f=o.defined,g=o.discardElement,m=o.find,y=o.fireEvent,v=o.isNumber,x=o.merge,b=o.pick,w=o.relativeLength,S=o.stableSort,k=o.syncTimeout;return n=o.wrap,o=function(){function t(t,e){this.allItems=[],this.contentGroup=this.box=void 0,this.display=!1,this.group=void 0,this.offsetWidth=this.maxLegendWidth=this.maxItemWidth=this.legendWidth=this.legendHeight=this.lastLineHeight=this.lastItemY=this.itemY=this.itemX=this.itemMarginTop=this.itemMarginBottom=this.itemHeight=this.initialItemY=0,this.options={},this.padding=0,this.pages=[],this.proximate=!1,this.scrollGroup=void 0,this.widthOption=this.totalItemWidth=this.titleHeight=this.symbolWidth=this.symbolHeight=0,this.chart=t,this.init(t,e)}return t.prototype.init=function(t,e){this.chart=t,this.setOptions(e),e.enabled&&(this.render(),d(this.chart,"endResize",(function(){this.legend.positionCheckboxes()})),this.proximate?this.unchartrender=d(this.chart,"render",(function(){this.legend.proximatePositions(),this.legend.positionItems()})):this.unchartrender&&this.unchartrender())},t.prototype.setOptions=function(t){var e=b(t.padding,8);this.options=t,this.chart.styledMode||(this.itemStyle=t.itemStyle,this.itemHiddenStyle=x(this.itemStyle,t.itemHiddenStyle)),this.itemMarginTop=t.itemMarginTop||0,this.itemMarginBottom=t.itemMarginBottom||0,this.padding=e,this.initialItemY=e-5,this.symbolWidth=b(t.symbolWidth,16),this.pages=[],this.proximate="proximate"===t.layout&&!this.chart.inverted,this.baseline=void 0},t.prototype.update=function(t,e){var i=this.chart;this.setOptions(x(!0,this.options,t)),this.destroy(),i.isDirtyLegend=i.isDirtyBox=!0,b(e,!0)&&i.redraw(),y(this,"afterUpdate")},t.prototype.colorizeItem=function(t,e){if(t.legendGroup[e?"removeClass":"addClass"]("highcharts-legend-item-hidden"),!this.chart.styledMode){var i=this.options,r=t.legendItem,n=t.legendLine,o=t.legendSymbol,s=this.itemHiddenStyle.color;i=e?i.itemStyle.color:s;var a=e&&t.color||s,h=t.options&&t.options.marker,l={fill:a};r&&r.css({fill:i,color:i}),n&&n.attr({stroke:a}),o&&(h&&o.isMarker&&(l=t.pointAttribs(),e||(l.stroke=l.fill=s)),o.attr(l))}y(this,"afterColorizeItem",{item:t,visible:e})},t.prototype.positionItems=function(){this.allItems.forEach(this.positionItem,this),this.chart.isResizing||this.positionCheckboxes()},t.prototype.positionItem=function(t){var e=this,i=this.options,r=i.symbolPadding,n=!i.rtl,o=t._legendItemPos;i=o[0],o=o[1];var s=t.checkbox,a=t.legendGroup;a&&a.element&&(r={translateX:n?i:this.legendWidth-i-2*r-4,translateY:o},n=function(){y(e,"afterPositionItem",{item:t})},f(a.translateY)?a.animate(r,void 0,n):(a.attr(r),n())),s&&(s.x=i,s.y=o)},t.prototype.destroyItem=function(t){var e=t.checkbox;["legendItem","legendLine","legendSymbol","legendGroup"].forEach((function(e){t[e]&&(t[e]=t[e].destroy())})),e&&g(t.checkbox)},t.prototype.destroy=function(){function t(t){this[t]&&(this[t]=this[t].destroy())}this.getAllItems().forEach((function(e){["legendItem","legendGroup"].forEach(t,e)})),"clipRect up down pager nav box title group".split(" ").forEach(t,this),this.display=null},t.prototype.positionCheckboxes=function(){var t=this.group&&this.group.alignAttr,e=this.clipHeight||this.legendHeight,i=this.titleHeight;if(t){var r=t.translateY;this.allItems.forEach((function(n){var o=n.checkbox;if(o){var s=r+i+o.y+(this.scrollOffset||0)+3;u(o,{left:t.translateX+n.checkboxOffset+o.x-20+"px",top:s+"px",display:this.proximate||s>r-6&&s1.5*i?e.height:i))},t.prototype.layoutItem=function(t){var e=this.options,i=this.padding,r="horizontal"===e.layout,n=t.itemHeight,o=this.itemMarginBottom,s=this.itemMarginTop,a=r?b(e.itemDistance,20):0,h=this.maxLegendWidth;e=e.alignColumns&&this.totalItemWidth>h?this.maxItemWidth:t.itemWidth,r&&this.itemX-i+e>h&&(this.itemX=i,this.lastLineHeight&&(this.itemY+=s+this.lastLineHeight+o),this.lastLineHeight=0),this.lastItemY=s+this.itemY+o,this.lastLineHeight=Math.max(n,this.lastLineHeight),t._legendItemPos=[this.itemX,this.itemY],r?this.itemX+=e:(this.itemY+=s+n+o,this.lastLineHeight=n),this.offsetWidth=this.widthOption||Math.max((r?this.itemX-i-(t.checkbox?0:a):e)+i,this.offsetWidth)},t.prototype.getAllItems=function(){var t=[];return this.chart.series.forEach((function(e){var i=e&&e.options;e&&b(i.showInLegend,!f(i.linkedTo)&&void 0,!0)&&(t=t.concat(e.legendItems||("point"===i.legendType?e.data:e)))})),y(this,"afterGetAllItems",{allItems:t}),t},t.prototype.getAlignment=function(){var t=this.options;return this.proximate?t.align.charAt(0)+"tv":t.floating?"":t.align.charAt(0)+t.verticalAlign.charAt(0)+t.layout.charAt(0)},t.prototype.adjustMargins=function(t,e){var i=this.chart,r=this.options,n=this.getAlignment();n&&[/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/].forEach((function(o,s){o.test(n)&&!f(t[s])&&(i[l[s]]=Math.max(i[l[s]],i.legend[(s+1)%2?"legendHeight":"legendWidth"]+[1,-1,-1,1][s]*r[s%2?"x":"y"]+b(r.margin,12)+e[s]+(i.titleOffset[s]||0)))}))},t.prototype.proximatePositions=function(){var t=this.chart,e=[],i="left"===this.options.align;this.allItems.forEach((function(r){var n,o=i;if(r.yAxis){r.xAxis.options.reversed&&(o=!o),r.points&&(n=m(o?r.points:r.points.slice(0).reverse(),(function(t){return v(t.plotY)}))),o=this.itemMarginTop+r.legendItem.getBBox().height+this.itemMarginBottom;var s=r.yAxis.top-t.plotTop;r.visible?(n=n?n.plotY:r.yAxis.height,n+=s-.3*o):n=s+r.yAxis.height,e.push({target:n,size:o,item:r})}}),this),c(e,t.plotHeight).forEach((function(e){e.item._legendItemPos&&(e.item._legendItemPos[1]=t.plotTop-t.spacing[0]+e.pos)}))},t.prototype.render=function(){var t=this.chart,e=t.renderer,i=this.options,r=this.padding,n=this.getAllItems(),o=this.group,s=this.box;this.itemX=r,this.itemY=this.initialItemY,this.lastItemY=this.offsetWidth=0,this.widthOption=w(i.width,t.spacingBox.width-r);var a=t.spacingBox.width-2*r-i.x;-1<["rm","lm"].indexOf(this.getAlignment().substring(0,2))&&(a/=2),this.maxLegendWidth=this.widthOption||a,o||(this.group=o=e.g("legend").addClass(i.className||"").attr({zIndex:7}).add(),this.contentGroup=e.g().attr({zIndex:1}).add(o),this.scrollGroup=e.g().add(this.contentGroup)),this.renderTitle(),S(n,(function(t,e){return(t.options&&t.options.legendIndex||0)-(e.options&&e.options.legendIndex||0)})),i.reversed&&n.reverse(),this.allItems=n,this.display=a=!!n.length,this.itemHeight=this.totalItemWidth=this.maxItemWidth=this.lastLineHeight=0,n.forEach(this.renderItem,this),n.forEach(this.layoutItem,this),n=(this.widthOption||this.offsetWidth)+r;var h=this.lastItemY+this.lastLineHeight+this.titleHeight;h=this.handleOverflow(h),h+=r,s||(this.box=s=e.rect().addClass("highcharts-legend-box").attr({r:i.borderRadius}).add(o),s.isNew=!0),t.styledMode||s.attr({stroke:i.borderColor,"stroke-width":i.borderWidth||0,fill:i.backgroundColor||"none"}).shadow(i.shadow),0a&&!1!==d.enabled?(this.clipHeight=e=Math.max(a-20-this.titleHeight-l,0),this.currentPage=b(this.currentPage,1),this.fullHeight=t,g.forEach((function(t,r){var n=t._legendItemPos[1],o=Math.round(t.legendItem.getBBox().height),s=f.length;(!s||n-f[s-1]>e&&(i||n)!==f[s-1])&&(f.push(i||n),s++),t.pageIx=s-1,i&&(g[r-1].pageIx=s-1),r===g.length-1&&n+o-f[s-1]>e&&o<=e&&(f.push(n),t.pageIx=s),n!==i&&(i=n)})),x||(x=r.clipRect=o.clipRect(0,l,9999,0),r.contentGroup.clip(x)),m(e),v||(this.nav=v=o.g().attr({zIndex:1}).add(this.group),this.up=o.symbol("triangle",0,0,u,u).add(v),y("upTracker").on("click",(function(){r.scroll(-1,p)})),this.pager=o.text("",15,10).addClass("highcharts-legend-navigation"),n.styledMode||this.pager.css(d.style),this.pager.add(v),this.down=o.symbol("triangle-down",0,0,u,u).add(v),y("downTracker").on("click",(function(){r.scroll(1,p)}))),r.scroll(0),t=a):v&&(m(),this.nav=v.destroy(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0),t},t.prototype.scroll=function(t,e){var i=this,r=this.chart,n=this.pages,o=n.length,h=this.clipHeight,l=this.options.navigation,c=this.pager,d=this.padding,p=this.currentPage+t;p>o&&(p=o),0=Math.max(h+o,d.pos)&&a<=Math.min(h+o+n.width,d.pos+d.len)||(t.isInsidePlot=!1)}return!i.ignoreY&&t.isInsidePlot&&(r=c&&(r?c.xAxis:c.yAxis)||{pos:s,len:1/0},(i=i.paneCoordinates?r.pos+e:s+e)>=Math.max(l+s,r.pos)&&i<=Math.min(l+s+n.height,r.pos+r.len)||(t.isInsidePlot=!1)),z(this,"afterIsInsidePlot",t),t.isInsidePlot},t.prototype.redraw=function(t){z(this,"beforeRedraw");var e=this.hasCartesianSeries?this.axes:this.colorAxis||[],i=this.series,r=this.pointer,n=this.legend,o=this.userOptions.legend,s=this.renderer,a=s.isHidden(),h=[],l=this.isDirtyBox,c=this.isDirtyLegend;for(this.setResponsive&&this.setResponsive(!1),y(!!this.hasRendered&&t,this),a&&this.temporaryDisplay(),this.layOutTitles(),t=i.length;t--;){var d=i[t];if(d.options.stacking||d.options.centerInCategory){var p=!0;if(d.isDirty){var u=!0;break}}}if(u)for(t=i.length;t--;)(d=i[t]).options.stacking&&(d.isDirty=!0);i.forEach((function(t){t.isDirty&&("point"===t.options.legendType?("function"==typeof t.updateTotals&&t.updateTotals(),c=!0):o&&(o.labelFormatter||o.labelFormat)&&(c=!0)),t.isDirtyData&&z(t,"updatedData")})),c&&n&&n.options.enabled&&(n.render(),this.isDirtyLegend=!1),p&&this.getStacks(),e.forEach((function(t){t.updateNames(),t.setScale()})),this.getMargins(),e.forEach((function(t){t.isDirty&&(l=!0)})),e.forEach((function(t){var e=t.min+","+t.max;t.extKey!==e&&(t.extKey=e,h.push((function(){z(t,"afterSetExtremes",I(t.eventArgs,t.getExtremes())),delete t.eventArgs}))),(l||p)&&t.redraw()})),l&&this.drawChartBox(),z(this,"predraw"),i.forEach((function(t){(l||t.isDirty)&&t.visible&&t.redraw(),t.isDirtyData=!1})),r&&r.reset(!0),s.draw(),z(this,"redraw"),z(this,"render"),a&&this.temporaryDisplay(!0),h.forEach((function(t){t.call()}))},t.prototype.get=function(t){function e(e){return e.id===t||e.options&&e.options.id===t}for(var i=this.series,r=B(this.axes,e)||B(this.series,e),n=0;!r&&n=a&&n<=h||l||!D(n))&&(c=!0),r[l?"zoomX":"zoomY"]&&c&&(e=s.zoom(t.min,t.max),s.displayBtn&&(o=!0))}));var s=i.resetZoomButton;o&&!s?i.showResetZoom():!o&&X(s)&&(i.resetZoomButton=s.destroy()),e&&i.redraw(V(i.options.chart.animation,t&&t.animation,100>i.pointCount))},t.prototype.pan=function(t,e){var i=this,r=i.hoverPoints;e="object"==typeof e?e:{enabled:e,type:"x"};var n=i.options.chart,o=i.options.mapNavigation&&i.options.mapNavigation.enabled;n&&n.panning&&(n.panning=e);var s,a=e.type;z(this,"pan",{originalEvent:t},(function(){r&&r.forEach((function(t){t.setState()}));var e=i.xAxis;"xy"===a?e=e.concat(i.yAxis):"y"===a&&(e=i.yAxis);var n={};e.forEach((function(e){if(e.options.panningEnabled&&!e.options.isInternal){var r=e.horiz,h=t[r?"chartX":"chartY"],l=i[r=r?"mouseDownX":"mouseDownY"],c=e.minPointOffset||0,d=e.reversed&&!i.inverted||!e.reversed&&i.inverted?-1:1,p=e.getExtremes(),u=e.toValue(l-h,!0)+c*d,f=e.toValue(l+e.len-h,!0)-(c*d||e.isXAxis&&e.pointRangePadding||0),g=f=d&&u<=f&&(e.setExtremes(l,u,!1,!1,{trigger:"pan"}),i.resetZoomButton||o||l===d||u===f||!a.match("y")||(i.showResetZoom(),e.displayBtn=!1),s=!0),n[r]=h)}})),U(n,(function(t,e){i[e]=t})),s&&i.redraw(!1),_(i.container,{cursor:"move"})}))},t}(),I(t.prototype,{callbacks:[],collectionsWithInit:{xAxis:[t.prototype.addAxis,[!0]],yAxis:[t.prototype.addAxis,[!1]],series:[t.prototype.addSeries]},collectionsWithUpdate:["xAxis","yAxis","series"],propsRequireDirtyBox:"backgroundColor borderColor borderWidth borderRadius plotBackgroundColor plotBackgroundImage plotBorderColor plotBorderWidth plotShadow shadow".split(" "),propsRequireReflow:"margin marginTop marginRight marginBottom marginLeft spacing spacingTop spacingRight spacingBottom spacingLeft".split(" "),propsRequireUpdateSeries:"chart.inverted chart.polar chart.ignoreHiddenSeries chart.type colors plotOptions time tooltip".split(" ")}),t})),e(i,"Core/Legend/LegendSymbol.js",[i["Core/Utilities.js"]],(function(t){var e,i=t.merge,r=t.pick;return function(t){t.drawLineMarker=function(t){var e=this.options,n=t.symbolWidth,o=t.symbolHeight,s=o/2,a=this.chart.renderer,h=this.legendGroup;t=t.baseline-Math.round(.3*t.fontMetrics.b);var l={},c=e.marker;this.chart.styledMode||(l={"stroke-width":e.lineWidth||0},e.dashStyle&&(l.dashstyle=e.dashStyle)),this.legendLine=a.path([["M",0,t],["L",n,t]]).addClass("highcharts-graph").attr(l).add(h),c&&!1!==c.enabled&&n&&(e=Math.min(r(c.radius,s),s),0===this.symbol.indexOf("url")&&(c=i(c,{width:o,height:o}),e=0),this.legendSymbol=n=a.symbol(this.symbol,n/2-e,t-e,2*e,2*e,c).addClass("highcharts-point").add(h),n.isMarker=!0)},t.drawRectangle=function(t,e){var i=t.symbolHeight,n=t.options.squareSymbol;e.legendSymbol=this.chart.renderer.rect(n?(t.symbolWidth-i)/2:0,t.baseline-i+1,n?i:t.symbolWidth,i,r(t.options.symbolRadius,i/2)).addClass("highcharts-point").attr({zIndex:3}).add(e.legendGroup)}}(e||(e={})),e})),e(i,"Core/Series/SeriesDefaults.js",[],(function(){return{lineWidth:2,allowPointSelect:!1,crisp:!0,showCheckbox:!1,animation:{duration:1e3},events:{},marker:{enabledThreshold:2,lineColor:"#ffffff",lineWidth:0,radius:4,states:{normal:{animation:!0},hover:{animation:{duration:50},enabled:!0,radiusPlus:2,lineWidthPlus:1},select:{fillColor:"#cccccc",lineColor:"#000000",lineWidth:2}}},point:{events:{}},dataLabels:{animation:{},align:"center",defer:!0,formatter:function(){var t=this.series.chart.numberFormatter;return"number"!=typeof this.y?"":t(this.y,-1)},padding:5,style:{fontSize:"11px",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:50},lineWidthPlus:1,marker:{},halo:{size:10,opacity:.25}},select:{animation:{duration:0}},inactive:{animation:{duration:50},opacity:.2}},stickyTracking:!0,turboThreshold:1e3,findNearestPointBy:"x"}})),e(i,"Core/Series/Series.js",[i["Core/Animation/AnimationUtilities.js"],i["Core/DefaultOptions.js"],i["Core/Foundation.js"],i["Core/Globals.js"],i["Core/Legend/LegendSymbol.js"],i["Core/Series/Point.js"],i["Core/Series/SeriesDefaults.js"],i["Core/Series/SeriesRegistry.js"],i["Core/Renderer/SVG/SVGElement.js"],i["Core/Utilities.js"]],(function(t,e,i,r,n,o,s,a,h,l){var c=t.animObject,d=t.setAnimation,p=e.defaultOptions,u=i.registerEventOptions,f=r.hasTouch,g=r.svg,m=r.win,y=a.seriesTypes,v=l.addEvent,x=l.arrayMax,b=l.arrayMin,w=l.clamp,S=l.cleanRecursively,k=l.correctFloat,C=l.defined,M=l.erase,A=l.error,T=l.extend,P=l.find,L=l.fireEvent,O=l.getNestedProperty,E=l.isArray,_=l.isNumber,D=l.isString,N=l.merge,j=l.objectEach,R=l.pick,I=l.removeEvent,B=l.splat,z=l.syncTimeout;return t=function(){function t(){this.zones=this.yAxis=this.xAxis=this.userOptions=this.tooltipOptions=this.processedYData=this.processedXData=this.points=this.options=this.linkedSeries=this.index=this.eventsToUnbind=this.eventOptions=this.data=this.chart=this._i=void 0}return t.prototype.init=function(t,e){L(this,"init",{options:e});var i=this,r=t.series;this.eventsToUnbind=[],i.chart=t,i.options=i.setOptions(e),e=i.options,i.linkedSeries=[],i.bindAxes(),T(i,{name:e.name,state:"",visible:!1!==e.visible,selected:!0===e.selected}),u(this,e);var n,o=e.events;(o&&o.click||e.point&&e.point.events&&e.point.events.click||e.allowPointSelect)&&(t.runTrackerClick=!0),i.getColor(),i.getSymbol(),i.parallelArrays.forEach((function(t){i[t+"Data"]||(i[t+"Data"]=[])})),i.isCartesian&&(t.hasCartesianSeries=!0),r.length&&(n=r[r.length-1]),i._i=R(n&&n._i,-1)+1,i.opacity=i.options.opacity,t.orderSeries(this.insert(r)),e.dataSorting&&e.dataSorting.enabled?i.setDataSortingOptions():i.points||i.data||i.setData(e.data,!1),L(this,"afterInit")},t.prototype.is=function(t){return y[t]&&this instanceof y[t]},t.prototype.insert=function(t){var e,i=this.options.index;if(_(i)){for(e=t.length;e--;)if(i>=R(t[e].options.index,t[e]._i)){t.splice(e+1,0,this);break}-1===e&&t.unshift(this),e+=1}else t.push(this);return R(e,t.length-1)},t.prototype.bindAxes=function(){var t,e=this,i=e.options,r=e.chart;L(this,"bindAxes",null,(function(){(e.axisTypes||[]).forEach((function(n){var o=0;r[n].forEach((function(r){t=r.options,(i[n]===o&&!t.isInternal||void 0!==i[n]&&i[n]===t.id||void 0===i[n]&&0===t.index)&&(e.insert(r.series),e[n]=r,r.isDirty=!0),t.isInternal||o++})),e[n]||e.optionalAxis===n||A(18,!0,r)}))})),L(this,"afterBindAxes")},t.prototype.updateParallelArrays=function(t,e){var i=t.series,r=arguments,n=_(e)?function(r){var n="y"===r&&i.toYData?i.toYData(t):t[r];i[r+"Data"][e]=n}:function(t){Array.prototype[e].apply(i[t+"Data"],Array.prototype.slice.call(r,2))};i.parallelArrays.forEach(n)},t.prototype.hasData=function(){return this.visible&&void 0!==this.dataMax&&void 0!==this.dataMin||this.visible&&this.yData&&0=this.cropStart?l-this.cropStart:l),!r&&_(l)&&a[l]&&a[l].touched&&(l=void 0),l},t.prototype.updateData=function(t,e){var i,r,n,o=this.options,s=o.dataSorting,a=this.points,h=[],l=this.requireSorting,c=t.length===a.length,d=!0;if(this.xIncrement=null,t.forEach((function(t,e){var r=C(t)&&this.pointClass.prototype.optionsToObject.call({series:this},t)||{},d=r.x;r.id||_(d)?(-1===(r=this.findPointIndex(r,n))||void 0===r?h.push(t):a[r]&&t!==o.data[r]?(a[r].update(t,!1,null,!1),a[r].touched=!0,l&&(n=r+1)):a[r]&&(a[r].touched=!0),(!c||e!==r||s&&s.enabled||this.hasDerivedData)&&(i=!0)):h.push(t)}),this),i)for(t=a.length;t--;)(r=a[t])&&!r.touched&&r.remove&&r.remove(!1,e);else!c||s&&s.enabled?d=!1:(t.forEach((function(t,e){t!==a[e].y&&a[e].update&&a[e].update(t,!1,null,!1)})),h.length=0);return a.forEach((function(t){t&&(t.touched=!1)})),!!d&&(h.forEach((function(t){this.addPoint(t,!1,null,null,!1)}),this),null===this.xIncrement&&this.xData&&this.xData.length&&(this.xIncrement=x(this.xData),this.autoIncrement()),!0)},t.prototype.setData=function(t,e,i,r){var n=this,o=n.points,s=o&&o.length||0,a=n.options,h=n.chart,l=a.dataSorting,c=n.xAxis,d=a.turboThreshold,p=this.xData,u=this.yData,f=n.pointArrayMap;f=f&&f.length;var g,m=a.keys,y=0,v=1,x=null,b=(t=t||[]).length;if(e=R(e,!0),l&&l.enabled&&(t=this.sortData(t)),!1!==r&&b&&s&&!n.cropped&&!n.hasGroupedData&&n.visible&&!n.isSeriesBoosting&&(g=this.updateData(t,i)),!g){if(n.xIncrement=null,n.colorCounter=0,this.parallelArrays.forEach((function(t){n[t+"Data"].length=0})),d&&b>d)if(x=n.getFirstValidPoint(t),_(x))for(i=0;it?1:0})).forEach((function(t,e){t.x=e}),this),e.linkedSeries&&e.linkedSeries.forEach((function(e){var i=e.options,n=i.data;i.dataSorting&&i.dataSorting.enabled||!n||(n.forEach((function(i,o){n[o]=r(e,i),t[o]&&(n[o].x=t[o].x,n[o].index=o)})),e.setData(n,!1))})),t},t.prototype.getProcessedData=function(t){var e=this.xAxis,i=this.options,r=i.cropThreshold,n=t||this.getExtremesFromAll||i.getExtremesFromAll,o=this.isCartesian;t=e&&e.val2lin,i=!(!e||!e.logarithmic);var s=0,a=this.xData,h=this.yData,l=this.requireSorting,c=!1,d=a.length;if(e){var p=(c=e.getExtremes()).min,u=c.max;c=e.categories&&!e.names.length}if(o&&this.sorted&&!n&&(!r||d>r||this.forceCrop))if(a[d-1]u)a=[],h=[];else if(this.yData&&(a[0]u)){var f=this.cropData(this.xData,this.yData,p,u);a=f.xData,h=f.yData,s=f.start,f=!0}for(r=a.length||1;--r;)if(0<(e=i?t(a[r])-t(a[r-1]):a[r]-a[r-1])&&(void 0===g||ee&&l&&!c&&(A(15,!1,this.chart),l=!1);return{xData:a,yData:h,cropped:f,cropStart:s,closestPointRange:g}},t.prototype.processData=function(t){var e=this.xAxis;if(this.isCartesian&&!this.isDirty&&!e.isDirty&&!this.yAxis.isDirty&&!t)return!1;t=this.getProcessedData(),this.cropped=t.cropped,this.cropStart=t.cropStart,this.processedXData=t.xData,this.processedYData=t.yData,this.closestPointRange=this.basePointRange=t.closestPointRange,L(this,"afterProcessData")},t.prototype.cropData=function(t,e,i,r,n){var o,s=t.length,a=0,h=s;for(n=R(n,this.cropShoulder),o=0;o=i){a=Math.max(0,o-n);break}for(i=o;ir){h=i+n;break}return{xData:t.slice(a,h),yData:e.slice(a,h),start:a,end:h}},t.prototype.generatePoints=function(){var t=this.options,e=t.data,i=this.processedXData,r=this.processedYData,n=this.pointClass,o=i.length,s=this.cropStart||0,a=this.hasGroupedData,h=t.keys,l=[];t=t.dataGrouping&&t.dataGrouping.groupAll?s:0;var c,d,p=this.data;if(!p&&!a){var u=[];u.length=e.length,p=this.data=u}for(h&&a&&(this.options.keys=!1),d=0;d=h&&(n[a-s]||u)<=l,f&&u)if(f=p.length)for(;f--;)_(p[f])&&(o[c++]=p[f]);else o[c++]=p}return t={activeYData:o,dataMin:b(o),dataMax:x(o)},L(this,"afterGetExtremes",{dataExtremes:t}),t},t.prototype.applyExtremes=function(){var t=this.getExtremes();return this.dataMin=t.dataMin,this.dataMax=t.dataMax,t},t.prototype.getFirstValidPoint=function(t){for(var e=t.length,i=0,r=null;null===r&&i=S&&(S=null),m.total=m.stackTotal=v.total,m.percentage=v.total&&m.y/v.total*100,m.stackY=b,this.irregularWidths||v.setOffset(this.pointXOffset||0,this.barW||0)),m.yBottom=C(S)?w(a.translate(S,0,1,0,1),-1e5,1e5):null,this.dataModify&&(b=this.dataModify.modifyValue(b,t)),m.plotY=void 0,_(b)&&void 0!==(v=a.translate(b,!1,!0,!1,!0))&&(m.plotY=w(v,-1e5,1e5)),m.isInside=this.isPointInside(m),m.clientX=d?k(n.translate(y,0,0,0,1,c)):e,m.negative=m[f]<(i[f+"Threshold"]||p||0),m.category=o&&void 0!==o[m.x]?o[m.x]:m.x,!m.isNull&&!1!==m.visible){void 0!==T&&(g=Math.min(g,Math.abs(e-T)));var T=e}m.zone=this.zones.length?m.getZone():void 0,!m.graphic&&this.group&&s&&(m.isNew=!0)}this.closestPointRangePx=g,L(this,"afterTranslate")},t.prototype.getValidPoints=function(t,e,i){var r=this.chart;return(t||this.points||[]).filter((function(t){return!(e&&!r.isInsidePlot(t.plotX,t.plotY,{inverted:r.inverted}))&&!1!==t.visible&&(i||!t.isNull)}))},t.prototype.getClipBox=function(){var t=this.chart,e=this.xAxis,i=this.yAxis,r=N(t.clipBox);return e&&e.len!==t.plotSizeX&&(r.width=e.len),i&&i.len!==t.plotSizeY&&(r.height=i.len),r},t.prototype.getSharedClipKey=function(){return this.sharedClipKey=(this.options.xAxis||0)+","+(this.options.yAxis||0)},t.prototype.setClip=function(){var t=this.chart,e=this.group,i=this.markerGroup,r=t.sharedClips;t=t.renderer;var n=this.getClipBox(),o=this.getSharedClipKey(),s=r[o];s?s.animate(n):r[o]=s=t.clipRect(n),e&&e.clip(!1===this.options.clip?void 0:s),i&&i.clip()},t.prototype.animate=function(t){var e=this.chart,i=this.group,r=this.markerGroup,n=e.inverted,o=c(this.options.animation),s=[this.getSharedClipKey(),o.duration,o.easing,o.defer].join(),a=e.sharedClips[s],h=e.sharedClips[s+"m"];if(t&&i)o=this.getClipBox(),a?a.attr("height",o.height):(o.width=0,n&&(o.x=e.plotHeight),a=e.renderer.clipRect(o),e.sharedClips[s]=a,h=e.renderer.clipRect({x:n?(e.plotSizeX||0)+99:-99,y:n?-e.plotLeft:-e.plotTop,width:99,height:n?e.chartWidth:e.chartHeight}),e.sharedClips[s+"m"]=h),i.clip(a),r&&r.clip(h);else if(a&&!a.hasClass("highcharts-animating")){e=this.getClipBox();var l=o.step;r&&r.element.childNodes.length&&(o.step=function(t,e){l&&l.apply(e,arguments),h&&h.element&&h.attr(e.prop,"width"===e.prop?t+99:t)}),a.addClass("highcharts-animating").animate(e,o)}},t.prototype.afterAnimate=function(){var t=this;this.setClip(),j(this.chart.sharedClips,(function(e,i,r){e&&!t.chart.container.querySelector('[clip-path="url(#'+e.id+')"]')&&(e.destroy(),delete r[i])})),this.finishedAnimating=!0,L(this,"afterAnimate")},t.prototype.drawPoints=function(){var t,e,i=this.points,r=this.chart,n=this.options.marker,o=this[this.specialGroup]||this.markerGroup,s=this.xAxis,a=R(n.enabled,!(s&&!s.isRadial)||null,this.closestPointRangePx>=n.enabledThreshold*n.radius);if(!1!==n.enabled||this._hasPointMarkers)for(t=0;tS.max,h.resetZones&&0===e&&(e=void 0)})),this.clips=p}else h.visible&&(u&&u.show(!0),f&&f.show(!0))},t.prototype.invertGroups=function(t){function e(){["group","markerGroup"].forEach((function(e){i[e]&&(r.renderer.isVML&&i[e].attr({width:i.yAxis.len,height:i.xAxis.len}),i[e].width=i.yAxis.len,i[e].height=i.xAxis.len,i[e].invert(!i.isRadialSeries&&t))}))}var i=this,r=i.chart;i.xAxis&&(i.eventsToUnbind.push(v(r,"resize",e)),e(),i.invertGroups=e)},t.prototype.plotGroup=function(t,e,i,r,n){var o=this[t],s=!o;return i={visibility:i,zIndex:r||.1},void 0===this.opacity||this.chart.styledMode||"inactive"===this.state||(i.opacity=this.opacity),s&&(this[t]=o=this.chart.renderer.g().add(n)),o.addClass("highcharts-"+e+" highcharts-series-"+this.index+" highcharts-"+this.type+"-series "+(C(this.colorIndex)?"highcharts-color-"+this.colorIndex+" ":"")+(this.options.className||"")+(o.hasClass("highcharts-tracker")?" highcharts-tracker":""),!0),o.attr(i)[s?"attr":"animate"](this.getPlotBox()),o},t.prototype.getPlotBox=function(){var t=this.chart,e=this.xAxis,i=this.yAxis;return t.inverted&&(e=i,i=this.xAxis),{translateX:e?e.left:t.plotLeft,translateY:i?i.top:t.plotTop,scaleX:1,scaleY:1}},t.prototype.removeEvents=function(t){t||I(this),this.eventsToUnbind.length&&(this.eventsToUnbind.forEach((function(t){t()})),this.eventsToUnbind.length=0)},t.prototype.render=function(){var t=this,e=t.chart,i=t.options,r=c(i.animation),n=t.visible?"inherit":"hidden",o=i.zIndex,s=t.hasRendered,a=e.seriesGroup,h=e.inverted;e=!t.finishedAnimating&&e.renderer.isSVG?r.duration:0,L(this,"render");var l=t.plotGroup("group","series",n,o,a);t.markerGroup=t.plotGroup("markerGroup","markers",n,o,a),!1!==i.clip&&t.setClip(),t.animate&&e&&t.animate(!0),l.inverted=!!R(t.invertible,t.isCartesian)&&h,t.drawGraph&&(t.drawGraph(),t.applyZones()),t.visible&&t.drawPoints(),t.drawDataLabels&&t.drawDataLabels(),t.redrawPoints&&t.redrawPoints(),t.drawTracker&&!1!==t.options.enableMouseTracking&&t.drawTracker(),t.invertGroups(h),t.animate&&e&&t.animate(),s||(e&&r.defer&&(e+=r.defer),t.animationTimeout=z((function(){t.afterAnimate()}),e||0)),t.isDirty=!1,t.hasRendered=!0,L(t,"afterRender")},t.prototype.redraw=function(){var t=this.chart,e=this.isDirty||this.isDirtyData,i=this.group,r=this.xAxis,n=this.yAxis;i&&(t.inverted&&i.attr({width:t.plotWidth,height:t.plotHeight}),i.animate({translateX:R(r&&r.left,t.plotLeft),translateY:R(n&&n.top,t.plotTop)})),this.translate(),this.render(),e&&delete this.kdTree},t.prototype.searchPoint=function(t,e){var i=this.xAxis,r=this.yAxis,n=this.chart.inverted;return this.searchKDTree({clientX:n?i.len-t.chartY+i.pos:t.chartX-i.pos,plotY:n?r.len-t.chartX+r.pos:t.chartY-r.pos},e,t)},t.prototype.buildKDTree=function(t){function e(t,r,n){var o=t&&t.length;if(o){var s=i.kdAxisArray[r%n];return t.sort((function(t,e){return t[s]-e[s]})),{point:t[o=Math.floor(o/2)],left:e(t.slice(0,o),r+1,n),right:e(t.slice(o+1),r+1,n)}}}this.buildingKdTree=!0;var i=this,r=-1(c=e[c]-l[c])?"right":"left",i[u=0>c?"left":"right"]&&(d=(u=t(e,i[u],a+1,h))[s]u;)f--;this.updateParallelArrays(p,"splice",f,0,0),this.updateParallelArrays(p,f),h&&p.name&&(h[u]=p.name),c.splice(f,0,t),l&&(this.data.splice(f,0,null),this.processData()),"point"===o.legendType&&this.generatePoints(),i&&(s[0]&&s[0].remove?s[0].remove(!1):(s.shift(),this.updateParallelArrays(p,"shift"),c.shift())),!1!==n&&L(this,"addPoint",{point:p}),this.isDirtyData=this.isDirty=!0,e&&a.redraw(r)},t.prototype.removePoint=function(t,e,i){var r=this,n=r.data,o=n[t],s=r.points,a=r.chart,h=function(){s&&s.length===n.length&&s.splice(t,1),n.splice(t,1),r.options.data.splice(t,1),r.updateParallelArrays(o||{series:r},"splice",t,1),o&&o.destroy(),r.isDirty=!0,r.isDirtyData=!0,e&&a.redraw()};d(i,a),e=R(e,!0),o?o.firePointEvent("remove",null,h):h()},t.prototype.remove=function(t,e,i,r){function n(){o.destroy(r),s.isDirtyLegend=s.isDirtyBox=!0,s.linkSeries(),R(t,!0)&&s.redraw(e)}var o=this,s=o.chart;!1!==i?L(o,"remove",null,n):n()},t.prototype.update=function(t,e){t=S(t,this.userOptions),L(this,"update",{options:t});var i,r=this,n=r.chart,o=r.userOptions,s=r.initialType||r.type,a=n.options.plotOptions,h=y[s].prototype,l=r.finishedAnimating&&{animation:!1},c={},d=["eventOptions","navigatorSeries","baseSeries"],p=t.type||o.type||n.options.chart.type,u=!(this.hasDerivedData||p&&p!==this.type||void 0!==t.pointStart||void 0!==t.pointInterval||void 0!==t.relativeXValue||r.hasOptionChanged("dataGrouping")||r.hasOptionChanged("pointStart")||r.hasOptionChanged("pointInterval")||r.hasOptionChanged("pointIntervalUnit")||r.hasOptionChanged("keys"));if(p=p||s,u&&(d.push("data","isDirtyData","points","processedXData","processedYData","xIncrement","cropped","_hasPointMarkers","_hasPointLabels","clips","nodes","layout","mapMap","mapData","minY","maxY","minX","maxX"),!1!==t.visible&&d.push("area","graph"),r.parallelArrays.forEach((function(t){d.push(t+"Data")})),t.data&&(t.dataSorting&&T(r.options.dataSorting,t.dataSorting),this.setData(t.data,!1))),t=N(o,l,{index:void 0===o.index?r.index:o.index,pointStart:R(a&&a.series&&a.series.pointStart,o.pointStart,r.xData[0])},!u&&{data:r.options.data},t),u&&t.data&&(t.data=r.options.data),(d=["group","markerGroup","dataLabelsGroup","transformGroup"].concat(d)).forEach((function(t){d[t]=r[t],delete r[t]})),a=!1,y[p]){if(a=p!==r.type,r.remove(!1,!1,!1,!0),a)if(Object.setPrototypeOf)Object.setPrototypeOf(r,y[p].prototype);else{for(i in l=Object.hasOwnProperty.call(r,"hcEvents")&&r.hcEvents,h)r[i]=void 0;T(r,y[p].prototype),l?r.hcEvents=l:delete r.hcEvents}}else A(17,!0,n,{missingModuleFor:p});if(d.forEach((function(t){r[t]=d[t]})),r.init(n,t),u&&this.points){var f=r.options;!1===f.visible?(c.graphic=1,c.dataLabel=1):r._hasPointLabels||(t=f.marker,h=f.dataLabels,!t||!1!==t.enabled&&(o.marker&&o.marker.symbol)===t.symbol||(c.graphic=1),h&&!1===h.enabled&&(c.dataLabel=1)),this.points.forEach((function(t){t&&t.series&&(t.resolveColor(),Object.keys(c).length&&t.destroyElements(c),!1===f.showInLegend&&t.legendItem&&n.legend.destroyItem(t))}),this)}r.initialType=s,n.linkSeries(),a&&r.linkedSeries.length&&(r.isDirtyData=!0),L(this,"afterUpdate"),R(e,!0)&&n.redraw(!!u&&void 0)},t.prototype.setName=function(t){this.name=this.options.name=this.userOptions.name=t,this.chart.isDirtyLegend=!0},t.prototype.hasOptionChanged=function(t){var e=this.options[t],i=this.chart.options.plotOptions,r=this.userOptions[t];return r?e!==r:e!==R(i&&i[this.type]&&i[this.type][t],i&&i.series&&i.series[t],e)},t.prototype.onMouseOver=function(){var t=this.chart,e=t.hoverSeries;t.pointer.setHoverChartIndex(),e&&e!==this&&e.onMouseOut(),this.options.events.mouseOver&&L(this,"mouseOver"),this.setState("hover"),t.hoverSeries=this},t.prototype.onMouseOut=function(){var t=this.options,e=this.chart,i=e.tooltip,r=e.hoverPoint;e.hoverSeries=null,r&&r.onMouseOut(),this&&t.events.mouseOut&&L(this,"mouseOut"),!i||this.stickyTracking||i.shared&&!this.noSharedTooltip||i.hide(),e.series.forEach((function(t){t.setState("",!0)}))},t.prototype.setState=function(t,e){var i=this,r=i.options,n=i.graph,o=r.inactiveOtherPoints,s=r.states,a=R(s[t||"normal"]&&s[t||"normal"].animation,i.chart.options.chart.animation),h=r.lineWidth,l=0,c=r.opacity;if(t=t||"",i.state!==t&&([i.group,i.markerGroup,i.dataLabelsGroup].forEach((function(e){e&&(i.state&&e.removeClass("highcharts-series-"+i.state),t&&e.addClass("highcharts-series-"+t))})),i.state=t,!i.chart.styledMode)){if(s[t]&&!1===s[t].enabled)return;if(t&&(h=s[t].lineWidth||h+(s[t].lineWidthPlus||0),c=R(s[t].opacity,c)),n&&!n.dashstyle)for(r={"stroke-width":h},n.animate(r,a);i["zone-graph-"+l];)i["zone-graph-"+l].animate(r,a),l+=1;o||[i.group,i.markerGroup,i.dataLabelsGroup,i.labelBySeries].forEach((function(t){t&&t.animate({opacity:c},a)}))}e&&o&&i.points&&i.setAllPointsToState(t||void 0)},t.prototype.setAllPointsToState=function(t){this.points.forEach((function(e){e.setState&&e.setState(t)}))},t.prototype.setVisible=function(t,e){var i=this,r=i.chart,n=i.legendItem,o=r.options.chart.ignoreHiddenSeries,s=i.visible,a=(i.visible=t=i.options.visible=i.userOptions.visible=void 0===t?!s:t)?"show":"hide";["group","dataLabelsGroup","markerGroup","tracker","tt"].forEach((function(t){i[t]&&i[t][a]()})),r.hoverSeries!==i&&(r.hoverPoint&&r.hoverPoint.series)!==i||i.onMouseOut(),n&&r.legend.colorizeItem(i,t),i.isDirty=!0,i.options.stacking&&r.series.forEach((function(t){t.options.stacking&&t.visible&&(t.isDirty=!0)})),i.linkedSeries.forEach((function(e){e.setVisible(t,!1)})),o&&(r.isDirtyBox=!0),L(i,a),!1!==e&&r.redraw()},t.prototype.show=function(){this.setVisible(!0)},t.prototype.hide=function(){this.setVisible(!1)},t.prototype.select=function(t){this.selected=t=this.options.selected=void 0===t?!this.selected:t,this.checkbox&&(this.checkbox.checked=t),L(this,t?"select":"unselect")},t.prototype.shouldShowTooltip=function(t,e,i){return void 0===i&&(i={}),i.series=this,i.visiblePlotOnly=!0,this.chart.isInsidePlot(t,e,i)},t.defaultOptions=s,t}(),T(t.prototype,{axisTypes:["xAxis","yAxis"],coll:"series",colorCounter:0,cropShoulder:1,directTouch:!1,drawLegendSymbol:n.drawLineMarker,isCartesian:!0,kdAxisArray:["clientX","plotY"],parallelArrays:["x","y"],pointClass:o,requireSorting:!0,sorted:!0}),a.series=t,t})),e(i,"Extensions/ScrollablePlotArea.js",[i["Core/Animation/AnimationUtilities.js"],i["Core/Axis/Axis.js"],i["Core/Chart/Chart.js"],i["Core/Series/Series.js"],i["Core/Renderer/RendererRegistry.js"],i["Core/Utilities.js"]],(function(t,e,i,r,n,o){var s=t.stop,a=o.addEvent,h=o.createElement,l=o.merge,c=o.pick;a(i,"afterSetChartSize",(function(t){var i=this.options.chart.scrollablePlotArea,r=i&&i.minWidth;if(i=i&&i.minHeight,!this.renderer.forExport){if(r){if(this.scrollablePixelsX=r=Math.max(0,r-this.chartWidth)){this.scrollablePlotBox=this.renderer.scrollablePlotBox=l(this.plotBox),this.plotBox.width=this.plotWidth+=r,this.inverted?this.clipBox.height+=r:this.clipBox.width+=r;var n={1:{name:"right",value:r}}}}else i&&(this.scrollablePixelsY=r=Math.max(0,i-this.chartHeight))&&(this.scrollablePlotBox=this.renderer.scrollablePlotBox=l(this.plotBox),this.plotBox.height=this.plotHeight+=r,this.inverted?this.clipBox.width+=r:this.clipBox.height+=r,n={2:{name:"bottom",value:r}});n&&!t.skipAxes&&this.axes.forEach((function(t){n[t.side]?t.getPlotLinePath=function(){var i=n[t.side].name,r=this[i];this[i]=r-n[t.side].value;var o=e.prototype.getPlotLinePath.apply(this,arguments);return this[i]=r,o}:(t.setAxisSize(),t.setAxisTranslation())}))}})),a(i,"render",(function(){this.scrollablePixelsX||this.scrollablePixelsY?(this.setUpScrolling&&this.setUpScrolling(),this.applyFixed()):this.fixedDiv&&this.applyFixed()})),i.prototype.setUpScrolling=function(){var t=this,e={WebkitOverflowScrolling:"touch",overflowX:"hidden",overflowY:"hidden"};this.scrollablePixelsX&&(e.overflowX="auto"),this.scrollablePixelsY&&(e.overflowY="auto"),this.scrollingParent=h("div",{className:"highcharts-scrolling-parent"},{position:"relative"},this.renderTo),this.scrollingContainer=h("div",{className:"highcharts-scrolling"},e,this.scrollingParent),a(this.scrollingContainer,"scroll",(function(){t.pointer&&delete t.pointer.chartPosition})),this.innerContainer=h("div",{className:"highcharts-inner-container"},null,this.scrollingContainer),this.innerContainer.appendChild(this.container),this.setUpScrolling=null},i.prototype.moveFixedElements=function(){var t,e=this.container,i=this.fixedRenderer,r=".highcharts-contextbutton .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".split(" ");this.scrollablePixelsX&&!this.inverted?t=".highcharts-yaxis":this.scrollablePixelsX&&this.inverted||this.scrollablePixelsY&&!this.inverted?t=".highcharts-xaxis":this.scrollablePixelsY&&this.inverted&&(t=".highcharts-yaxis"),t&&r.push(t+":not(.highcharts-radial-axis)",t+"-labels:not(.highcharts-radial-axis-labels)"),r.forEach((function(t){[].forEach.call(e.querySelectorAll(t),(function(t){(t.namespaceURI===i.SVG_NS?i.box:i.box.parentNode).appendChild(t),t.style.pointerEvents="auto"}))}))},i.prototype.applyFixed=function(){var t=!this.fixedDiv,e=this.options.chart,i=e.scrollablePlotArea,r=n.getRendererType();t?(this.fixedDiv=h("div",{className:"highcharts-fixed"},{position:"absolute",overflow:"hidden",pointerEvents:"none",zIndex:(e.style&&e.style.zIndex||0)+2,top:0},null,!0),this.scrollingContainer&&this.scrollingContainer.parentNode.insertBefore(this.fixedDiv,this.scrollingContainer),this.renderTo.style.overflow="visible",this.fixedRenderer=e=new r(this.fixedDiv,this.chartWidth,this.chartHeight,this.options.chart.style),this.scrollableMask=e.path().attr({fill:this.options.chart.backgroundColor||"#fff","fill-opacity":c(i.opacity,.85),zIndex:-1}).addClass("highcharts-scrollable-mask").add(),a(this,"afterShowResetZoom",this.moveFixedElements),a(this,"afterDrilldown",this.moveFixedElements),a(this,"afterLayOutTitles",this.moveFixedElements)):this.fixedRenderer.setSize(this.chartWidth,this.chartHeight),(this.scrollableDirty||t)&&(this.scrollableDirty=!1,this.moveFixedElements()),e=this.chartWidth+(this.scrollablePixelsX||0),r=this.chartHeight+(this.scrollablePixelsY||0),s(this.container),this.container.style.width=e+"px",this.container.style.height=r+"px",this.renderer.boxWrapper.attr({width:e,height:r,viewBox:[0,0,e,r].join(" ")}),this.chartBackground.attr({width:e,height:r}),this.scrollingContainer.style.height=this.chartHeight+"px",t&&(i.scrollPositionX&&(this.scrollingContainer.scrollLeft=this.scrollablePixelsX*i.scrollPositionX),i.scrollPositionY&&(this.scrollingContainer.scrollTop=this.scrollablePixelsY*i.scrollPositionY)),r=this.axisOffset,t=this.plotTop-r[0]-1,i=this.plotLeft-r[3]-1,e=this.plotTop+this.plotHeight+r[2]+1,r=this.plotLeft+this.plotWidth+r[1]+1;var o=this.plotLeft+this.plotWidth-(this.scrollablePixelsX||0),l=this.plotTop+this.plotHeight-(this.scrollablePixelsY||0);t=this.scrollablePixelsX?[["M",0,t],["L",this.plotLeft-1,t],["L",this.plotLeft-1,e],["L",0,e],["Z"],["M",o,t],["L",this.chartWidth,t],["L",this.chartWidth,e],["L",o,e],["Z"]]:this.scrollablePixelsY?[["M",i,0],["L",i,this.plotTop-1],["L",r,this.plotTop-1],["L",r,0],["Z"],["M",i,l],["L",i,this.chartHeight],["L",r,this.chartHeight],["L",r,l],["Z"]]:[["M",0,0]],"adjustHeight"!==this.redrawTrigger&&this.scrollableMask.attr({d:t})},a(e,"afterInit",(function(){this.chart.scrollableDirty=!0})),a(r,"show",(function(){this.chart.scrollableDirty=!0}))})),e(i,"Core/Axis/StackingAxis.js",[i["Core/Animation/AnimationUtilities.js"],i["Core/Axis/Axis.js"],i["Core/Utilities.js"]],(function(t,e,i){var r,n=t.getDeferredAnimation,o=i.addEvent,s=i.destroyObjectProperties,a=i.fireEvent,h=i.isNumber,l=i.objectEach;return function(t){function e(){var t=this.stacking;if(t){var e=t.stacks;l(e,(function(t,i){s(t),e[i]=null})),t&&t.stackTotalGroup&&t.stackTotalGroup.destroy()}}function i(){this.stacking||(this.stacking=new c(this))}var r=[];t.compose=function(t){return-1===r.indexOf(t)&&(r.push(t),o(t,"init",i),o(t,"destroy",e)),t};var c=function(){function t(t){this.oldStacks={},this.stacks={},this.stacksTouched=0,this.axis=t}return t.prototype.buildStacks=function(){var t,e=this.axis,i=e.series,r=e.options.reversedStacks,n=i.length;if(!e.isXAxis){for(this.usePercentage=!1,t=n;t--;){var o=i[r?t:n-t-1];o.setStackedPoints(),o.setGroupedPoints()}for(t=0;to&&e.shadow)),a&&(a.startX=i.xMap,a.isArea=i.isArea)}))},i.prototype.getGraphPath=function(t,e,i){var r,o=this,s=o.options,a=[],h=[],l=s.step,c=(t=t||o.points).reversed;return c&&t.reverse(),(l={right:1,center:2}[l]||l&&3)&&c&&(l=4-l),(t=this.getValidPoints(t,!1,!(s.connectNulls&&!e&&!i))).forEach((function(c,d){var p=c.plotX,u=c.plotY,f=t[d-1];(c.leftCliff||f&&f.rightCliff)&&!i&&(r=!0),c.isNull&&!n(e)&&0t&&c>n?d=2*n-(c=Math.max(t,n)):ci&&d>n?c=2*n-(d=Math.max(i,n)):d=Math.abs(e)&&.5t.closestPointRange*t.xAxis.transA;r=t.borderWidth=x(i.borderWidth,r?0:1);var o=t.xAxis,s=t.yAxis,a=i.threshold,h=t.translatedThreshold=s.getThreshold(a),l=x(i.minPointLength,5),c=t.getColumnMetrics(),p=c.width,f=t.pointXOffset=c.offset,g=t.dataMin,m=t.dataMax,v=t.barW=Math.max(p,1+2*r);e.inverted&&(h-=.5),i.pointPadding&&(v=Math.ceil(v)),n.prototype.translate.apply(t),t.points.forEach((function(r){var n=x(r.yBottom,h),b=999+Math.abs(n),w=r.plotX||0;b=d(r.plotY,-b,s.len+b);var S=Math.min(b,n),k=Math.max(b,n)-S,C=p,M=w+f,A=v;l&&Math.abs(k)l?n-l:h-(w?l:0)),u(r.options.pointWidth)&&(C=A=Math.ceil(r.options.pointWidth),M-=Math.round((C-p)/2)),i.centerInCategory&&(M=t.adjustForMissingColumns(M,C,r,c)),r.barX=M,r.pointWidth=C,r.tooltipPos=e.inverted?[d(s.len+s.pos-e.plotLeft-b,s.pos-e.plotLeft,s.len+s.pos-e.plotLeft),o.len+o.pos-e.plotTop-M-A/2,k]:[o.left-e.plotLeft+M+A/2,d(b+s.pos-e.plotTop,s.pos-e.plotTop,s.len+s.pos-e.plotTop),k],r.shapeType=t.pointClass.prototype.shapeType||"rect",r.shapeArgs=t.crispCol.apply(t,r.isNull?[M,h,A,0]:[M,S,A,k])}))},e.prototype.drawGraph=function(){this.group[this.dense?"addClass":"removeClass"]("highcharts-dense-data")},e.prototype.pointAttribs=function(t,e){var i=this.options,r=this.pointAttrToOptions||{},n=r.stroke||"borderColor",o=r["stroke-width"]||"borderWidth",s=t&&t.color||this.color,a=t&&t[n]||i[n]||s;r=t&&t.options.dashStyle||i.dashStyle;var h=t&&t[o]||i[o]||this[o]||0,c=x(t&&t.opacity,i.opacity,1);if(t&&this.zones.length){var d=t.getZone();s=t.options.color||d&&(d.color||t.nonZonedColor)||this.color,d&&(a=d.borderColor||a,r=d.dashStyle||r,h=d.borderWidth||h)}return e&&t&&(e=(t=v(i.states[e],t.options.states&&t.options.states[e]||{})).brightness,s=t.color||void 0!==e&&l(s).brighten(t.brightness).get()||s,a=t[n]||a,h=t[o]||h,r=t.dashStyle||r,c=x(t.opacity,c)),n={fill:s,stroke:a,"stroke-width":h,opacity:c},r&&(n.dashstyle=r),n},e.prototype.drawPoints=function(){var t,e=this,i=this.chart,r=e.options,n=i.renderer,o=r.animationLimit||250;e.points.forEach((function(s){var a=s.graphic,h=!!a,l=a&&i.pointCounty,"left"===g?c.y-=y?u.height:0:"center"===g?(c.x-=u.width/2,c.y-=u.height/2):"right"===g&&(c.x-=u.width,c.y-=y?0:u.height),e.placed=!0,e.alignAttr=c):(y(r),e.align(i,void 0,r),c=e.alignAttr),v&&0<=r.height?this.justifyDataLabel(e,i,c,u,r,n):p(i.crop,!0)&&(x=s.isInsidePlot(c.x,c.y,{paneCoordinates:!0,series:o})&&s.isInsidePlot(c.x+u.width,c.y+u.height,{paneCoordinates:!0,series:o})),i.shape&&!f&&e[n?"attr":"animate"]({anchorX:h?s.plotWidth-t.plotY:t.plotX,anchorY:h?s.plotHeight-t.plotX:t.plotY})}n&&l&&(e.placed=!1),x||l&&!v||(e.hide(!0),e.placed=!1)}function i(){var t=this,e=t.chart,i=t.options,r=t.points,a=t.hasRendered||0,c=e.renderer,g=i.dataLabels,m=g.animation;if(m=g.defer?n(e,m,t):{defer:0,duration:0},g=f(f(e.options.plotOptions&&e.options.plotOptions.series&&e.options.plotOptions.series.dataLabels,e.options.plotOptions&&e.options.plotOptions[t.type]&&e.options.plotOptions[t.type].dataLabels),g),h(this,"drawDataLabels"),l(g)||g.enabled||t._hasPointLabels){var y=t.plotGroup("dataLabelsGroup","data-labels",a?"inherit":"hidden",g.zIndex||6);y.attr({opacity:+a}),!a&&(a=t.dataLabelsGroup)&&(t.visible&&y.show(!0),a[i.animation?"animate":"attr"]({opacity:1},m)),r.forEach((function(r){u(f(g,r.dlOptions||r.options&&r.options.dataLabels)).forEach((function(n,a){var h=n.enabled&&(!r.isNull||r.dataLabelOnNull)&&function(t,e){var i=e.filter;return!i||(e=i.operator,t=t[i.property],i=i.value,">"===e&&t>i||"<"===e&&t="===e&&t>=i||"<="===e&&t<=i||"=="===e&&t==i||"==="===e&&t===i)}(r,n),l=r.connectors?r.connectors[a]:r.connector,u=r.dataLabels?r.dataLabels[a]:r.dataLabel,f=p(n.distance,r.labelDistance),g=!u;if(h){var m=r.getLabelConfig(),v=p(n[r.formatPrefix+"Format"],n.format);m=s(v)?o(v,m,e):(n[r.formatPrefix+"Formatter"]||n.formatter).call(m,n),v=n.style;var x=n.rotation;e.styledMode||(v.color=p(n.color,v.color,t.color,"#000000"),"contrast"===v.color?(r.contrastColor=c.getContrast(r.color||t.color),v.color=!s(f)&&n.inside||0>f||i.stacking?r.contrastColor:"#000000"):delete r.contrastColor,i.cursor&&(v.cursor=i.cursor));var b={r:n.borderRadius||0,rotation:x,padding:n.padding,zIndex:1};e.styledMode||(b.fill=n.backgroundColor,b.stroke=n.borderColor,b["stroke-width"]=n.borderWidth),d(b,(function(t,e){void 0===t&&delete b[e]}))}!u||h&&s(m)&&!!u.div==!!n.useHTML||(r.dataLabel=u=r.dataLabel&&r.dataLabel.destroy(),r.dataLabels&&(1===r.dataLabels.length?delete r.dataLabels:delete r.dataLabels[a]),a||delete r.dataLabel,l&&(r.connector=r.connector.destroy(),r.connectors&&(1===r.connectors.length?delete r.connectors:delete r.connectors[a]))),h&&s(m)&&(u?b.text=m:(r.dataLabels=r.dataLabels||[],u=r.dataLabels[a]=x?c.text(m,0,-9999,n.useHTML).addClass("highcharts-data-label"):c.label(m,0,-9999,n.shape,null,null,n.useHTML,null,"data-label"),a||(r.dataLabel=u),u.addClass(" highcharts-data-label-color-"+r.colorIndex+" "+(n.className||"")+(n.useHTML?" highcharts-tracker":""))),u.options=n,u.attr(b),e.styledMode||u.css(v).shadow(n.shadow),u.added||u.add(y),n.textPath&&!n.useHTML&&(u.setTextPath(r.getDataLabelPath&&r.getDataLabelPath(u)||r.graphic,n.textPath),r.dataLabelPath&&!n.textPath.enabled&&(r.dataLabelPath=r.dataLabelPath.destroy())),t.alignDataLabel(r,u,n,null,g))}))}))}h(this,"afterDrawDataLabels")}function r(t,e,i,r,n,o){var s=this.chart,a=e.align,h=e.verticalAlign,l=t.box?0:t.padding||0,c=e.x;c=void 0===c?0:c;var d=e.y;d=void 0===d?0:d;var p=(i.x||0)+l;if(0>p){"right"===a&&0<=c?(e.align="left",e.inside=!0):c-=p;var u=!0}return(p=(i.x||0)+r.width-l)>s.plotWidth&&("left"===a&&0>=c?(e.align="right",e.inside=!0):c+=s.plotWidth-p,u=!0),0>(p=i.y+l)&&("bottom"===h&&0<=d?(e.verticalAlign="top",e.inside=!0):d-=p,u=!0),(p=(i.y||0)+r.height-l)>s.plotHeight&&("top"===h&&0>=d?(e.verticalAlign="bottom",e.inside=!0):d+=s.plotHeight-p,u=!0),u&&(e.x=c,e.y=d,t.placed=!o,t.align(e,void 0,n)),u}function f(t,e){var i,r=[];if(l(t)&&!l(e))r=t.map((function(t){return c(t,e)}));else if(l(e)&&!l(t))r=e.map((function(e){return c(t,e)}));else if(l(t)||l(e))for(i=Math.max(t.length,e.length);i--;)r[i]=c(t[i],e[i]);else r=c(t,e);return r}function g(t,e,i,r,n){var o=this.chart,s=o.inverted,a=this.xAxis,h=a.reversed,l=s?e.height/2:e.width/2;t=(t=t.pointWidth)?t/2:0,e.startXPos=s?n.x:h?-l-t:a.width-l+t,e.startYPos=s?h?this.yAxis.height-l+t:-l-t:n.y,r?"hidden"===e.visibility&&(e.show(),e.attr({opacity:0}).animate({opacity:1})):e.attr({opacity:1}).animate({opacity:0},void 0,e.hide),o.hasRendered&&(i&&e.attr({x:e.startXPos,y:e.startYPos}),e.placed=!0)}var m=[];t.compose=function(t){if(-1===m.indexOf(t)){var n=t.prototype;m.push(t),n.alignDataLabel=e,n.drawDataLabels=i,n.justifyDataLabel=r,n.setDataLabelStartPos=g}}}(r||(r={})),r})),e(i,"Series/Column/ColumnDataLabel.js",[i["Core/Series/DataLabel.js"],i["Core/Series/SeriesRegistry.js"],i["Core/Utilities.js"]],(function(t,e,i){var r,n=e.series,o=i.merge,s=i.pick;return function(e){function i(t,e,i,r,a){var h=this.chart.inverted,l=t.series,c=(l.xAxis?l.xAxis.len:this.chart.plotSizeX)||0;l=(l.yAxis?l.yAxis.len:this.chart.plotSizeY)||0;var d=t.dlBox||t.shapeArgs,p=s(t.below,t.plotY>s(this.translatedThreshold,l)),u=s(i.inside,!!this.options.stacking);d&&(0>(r=o(d)).y&&(r.height+=r.y,r.y=0),0<(d=r.y+r.height-l)&&d {series.name}
',pointFormat:"x: {point.x}
y: {point.y}
"}}),i}(e),s(r.prototype,{drawTracker:t.prototype.drawTracker,sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:["group","markerGroup","dataLabelsGroup"],takeOrdinalPosition:!1}),o(r,"afterTranslate",(function(){this.applyJitter()})),i.registerSeriesType("scatter",r),r})),e(i,"Series/CenteredUtilities.js",[i["Core/Globals.js"],i["Core/Series/Series.js"],i["Core/Utilities.js"]],(function(t,e,i){var r,n=t.deg2rad,o=i.isNumber,s=i.pick,a=i.relativeLength;return function(t){t.getCenter=function(){var t=this.options,i=this.chart,r=2*(t.slicedOffset||0),n=i.plotWidth-2*r,o=i.plotHeight-2*r,h=t.center,l=Math.min(n,o),c=t.size,d=t.innerSize||0;for("string"==typeof c&&(c=parseFloat(c)),"string"==typeof d&&(d=parseFloat(d)),t=[s(h[0],"50%"),s(h[1],"50%"),s(c&&0>c?void 0:t.size,"100%"),s(d&&0>d?void 0:t.innerSize||0,"0%")],!i.angular||this instanceof e||(t[3]=0),h=0;4>h;++h)c=t[h],i=2>h||2===h&&/%$/.test(c),t[h]=a(c,[n,o,l,t[2]][h])+(i?r:0);return t[3]>t[2]&&(t[3]=t[2]),t},t.getStartAndEndRadians=function(t,e){return t=o(t)?t:0,e=o(e)&&e>t&&360>e-t?e:t+360,{start:n*(t+-90),end:n*(e+-90)}}}(r||(r={})),r})),e(i,"Series/Pie/PiePoint.js",[i["Core/Animation/AnimationUtilities.js"],i["Core/Series/Point.js"],i["Core/Utilities.js"]],(function(t,e,i){var r=this&&this.__extends||function(){var t=function(e,i){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])},t(e,i)};return function(e,i){function r(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),n=t.setAnimation,o=i.addEvent,s=i.defined;t=i.extend;var a=i.isNumber,h=i.pick,l=i.relativeLength;return e=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.labelDistance=void 0,e.options=void 0,e.series=void 0,e}return r(e,t),e.prototype.getConnectorPath=function(){var t=this.labelPosition,e=this.series.options.dataLabels,i=this.connectorShapes,r=e.connectorShape;return i[r]&&(r=i[r]),r.call(this,{x:t.final.x,y:t.final.y,alignment:t.alignment},t.connectorPosition,e)},e.prototype.getTranslate=function(){return this.sliced?this.slicedTranslation:{translateX:0,translateY:0}},e.prototype.haloPath=function(t){var e=this.shapeArgs;return this.sliced||!this.visible?[]:this.series.chart.renderer.symbols.arc(e.x,e.y,e.r+t,e.r+t,{innerR:e.r-1,start:e.start,end:e.end})},e.prototype.init=function(){var e=this;t.prototype.init.apply(this,arguments),this.name=h(this.name,"Slice");var i=function(t){e.slice("select"===t.type)};return o(this,"select",i),o(this,"unselect",i),this},e.prototype.isValid=function(){return a(this.y)&&0<=this.y},e.prototype.setVisible=function(t,e){var i=this,r=this.series,n=r.chart,o=r.options.ignoreHiddenPoint;e=h(e,o),t!==this.visible&&(this.visible=this.options.visible=t=void 0===t?!this.visible:t,r.options.data[r.data.indexOf(this)]=this.options,["graphic","dataLabel","connector","shadowGroup"].forEach((function(e){i[e]&&i[e][t?"show":"hide"](t)})),this.legendItem&&n.legend.colorizeItem(this,t),t||"hover"!==this.state||this.setState(""),o&&(r.isDirty=!0),e&&n.redraw())},e.prototype.slice=function(t,e,i){var r=this.series;n(i,r.chart),h(e,!0),this.sliced=this.options.sliced=s(t)?t:!this.sliced,r.options.data[r.data.indexOf(this)]=this.options,this.graphic&&this.graphic.animate(this.getTranslate()),this.shadowGroup&&this.shadowGroup.animate(this.getTranslate())},e}(e),t(e.prototype,{connectorShapes:{fixedOffset:function(t,e,i){var r=e.breakAt;return e=e.touchingSliceAt,[["M",t.x,t.y],i.softConnector?["C",t.x+("left"===t.alignment?-5:5),t.y,2*r.x-e.x,2*r.y-e.y,r.x,r.y]:["L",r.x,r.y],["L",e.x,e.y]]},straight:function(t,e){return e=e.touchingSliceAt,[["M",t.x,t.y],["L",e.x,e.y]]},crookedLine:function(t,e,i){e=e.touchingSliceAt;var r=this.series,n=r.center[0],o=r.chart.plotWidth,s=r.chart.plotLeft;r=t.alignment;var a=this.shapeArgs.r;return i=l(i.crookDistance,1),i=["L",o="left"===r?n+a+(o+s-n-a)*(1-i):s+(n-a)*i,t.y],n=!0,("left"===r?o>t.x||oe.x)&&(n=!1),t=[["M",t.x,t.y]],n&&t.push(i),t.push(["L",e.x,e.y]),t}}}),e})),e(i,"Series/Pie/PieSeries.js",[i["Series/CenteredUtilities.js"],i["Series/Column/ColumnSeries.js"],i["Core/Globals.js"],i["Core/Legend/LegendSymbol.js"],i["Series/Pie/PiePoint.js"],i["Core/Series/Series.js"],i["Core/Series/SeriesRegistry.js"],i["Core/Renderer/SVG/Symbols.js"],i["Core/Utilities.js"]],(function(t,e,i,r,n,o,s,a,h){var l=this&&this.__extends||function(){var t=function(e,i){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])},t(e,i)};return function(e,i){function r(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}}(),c=t.getStartAndEndRadians;i=i.noop;var d=h.clamp,p=h.extend,u=h.fireEvent,f=h.merge,g=h.pick,m=h.relativeLength;return h=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.center=void 0,e.data=void 0,e.maxLabelDistance=void 0,e.options=void 0,e.points=void 0,e}return l(e,t),e.prototype.animate=function(t){var e=this,i=e.points,r=e.startAngleRad;t||i.forEach((function(t){var i=t.graphic,n=t.shapeArgs;i&&n&&(i.attr({r:g(t.startR,e.center&&e.center[3]/2),start:r,end:r}),i.animate({r:n.r,start:n.start,end:n.end},e.options.animation))}))},e.prototype.drawEmpty=function(){var t=this.startAngleRad,e=this.endAngleRad,i=this.options;if(0===this.total&&this.center){var r=this.center[0],n=this.center[1];this.graph||(this.graph=this.chart.renderer.arc(r,n,this.center[1]/2,0,t,e).addClass("highcharts-empty-series").add(this.group)),this.graph.attr({d:a.arc(r,n,this.center[2]/2,0,{start:t,end:e,innerR:this.center[3]/2})}),this.chart.styledMode||this.graph.attr({"stroke-width":i.borderWidth,fill:i.fillColor||"none",stroke:i.color||"#cccccc"})}else this.graph&&(this.graph=this.graph.destroy())},e.prototype.drawPoints=function(){var t=this.chart.renderer;this.points.forEach((function(e){e.graphic&&e.hasNewShapeType()&&(e.graphic=e.graphic.destroy()),e.graphic||(e.graphic=t[e.shapeType](e.shapeArgs).add(e.series.group),e.delayedRendering=!0)}))},e.prototype.generatePoints=function(){t.prototype.generatePoints.call(this),this.updateTotals()},e.prototype.getX=function(t,e,i){var r=this.center,n=this.radii?this.radii[i.index]||0:r[2]/2;return t=Math.asin(d((t-r[1])/(n+i.labelDistance),-1,1)),r[0]+(e?-1:1)*Math.cos(t)*(n+i.labelDistance)+(01.5*Math.PI?y-=2*Math.PI:y<-Math.PI/2&&(y+=2*Math.PI),p.slicedTranslation={translateX:Math.round(Math.cos(y)*i),translateY:Math.round(Math.sin(y)*i)},v=Math.cos(y)*t[2]/2;var x=Math.sin(y)*t[2]/2;p.tooltipPos=[t[0]+.7*v,t[1]+.7*x],p.half=y<-Math.PI/2||y>Math.PI/2?1:0,p.angle=y,f=Math.min(r,p.labelDistance/5),p.labelPosition={natural:{x:t[0]+v+Math.cos(y)*p.labelDistance,y:t[1]+x+Math.sin(y)*p.labelDistance},final:{},alignment:0>p.labelDistance?"center":p.half?"right":"left",connectorPosition:{breakAt:{x:t[0]+v+Math.cos(y)*f,y:t[1]+x+Math.sin(y)*f},touchingSliceAt:{x:t[0]+v,y:t[1]+x}}}}u(this,"afterTranslate")},e.prototype.updateTotals=function(){var t,e=this.points,i=e.length,r=this.options.ignoreHiddenPoint,n=0;for(t=0;tA&&(t.dataLabel.css({width:Math.round(.7*A)+"px"}),t.dataLabel.shortened=!0)):(t.dataLabel=t.dataLabel.destroy(),t.dataLabels&&1===t.dataLabels.length&&delete t.dataLabels))})),O.forEach((function(e,i){var h,l=e.length,p=[];if(l){if(v.sortByAngle(e,i-.5),0k-S&&0===i&&(x=Math.round(c+n-k+S),E[1]=Math.max(x,E[1])),0>f-s/2?E[0]=Math.max(Math.round(s/2-f),E[0]):f+s/2>C&&(E[2]=Math.max(Math.round(f+s/2-C),E[2])),r.sideOverflow=x)}}})),0===l(E)||this.verifyDataLabelOverflow(E))&&(this.placeDataLabels(),this.points.forEach((function(t){var n;y=p(w,t.options.dataLabels),(e=u(y.connectorWidth,1))&&(i=t.connector,(r=t.dataLabel)&&r._pos&&t.visible&&0e.bottom-2?r:i,e.half,e)},justify:function(t,e,i){return i[0]+(t.half?-1:1)*(e+t.labelDistance)},alignToPlotEdges:function(t,e,i,r){return t=t.getBBox().width,e?t+r:i-t-r},alignToConnectors:function(t,e,i,r){var n,o=0;return t.forEach((function(t){(n=t.dataLabel.getBBox().width)>o&&(o=n)})),e?o+r:i-o-r}};e.compose=function(e){t.compose(h),-1===o.indexOf(e)&&(o.push(e),(e=e.prototype).dataLabelPositioners=g,e.alignDataLabel=s,e.drawDataLabels=i,e.placeDataLabels=r,e.verifyDataLabelOverflow=n)}}(o||(o={})),o})),e(i,"Extensions/OverlappingDataLabels.js",[i["Core/Chart/Chart.js"],i["Core/Utilities.js"]],(function(t,e){function i(t,e){var i=!1;if(t){var r=t.newOpacity;t.oldOpacity!==r&&(t.alignAttr&&t.placed?(t[r?"removeClass":"addClass"]("highcharts-data-label-hidden"),i=!0,t.alignAttr.opacity=r,t[t.isOld?"animate":"attr"](t.alignAttr,null,(function(){e.styledMode||t.css({pointerEvents:r?"auto":"none"})})),n(e,"afterHideOverlappingLabel")):t.attr({opacity:r})),t.isOld=!0}return i}var r=e.addEvent,n=e.fireEvent,o=e.isArray,s=e.isNumber,a=e.objectEach,h=e.pick;r(t,"render",(function(){var t=this,e=[];(this.labelCollectors||[]).forEach((function(t){e=e.concat(t())})),(this.yAxis||[]).forEach((function(t){t.stacking&&t.options.stackLabels&&!t.options.stackLabels.allowOverlap&&a(t.stacking.stacks,(function(t){a(t,(function(t){t.label&&"hidden"!==t.label.visibility&&e.push(t.label)}))}))})),(this.series||[]).forEach((function(r){var n=r.options.dataLabels;r.visible&&(!1!==n.enabled||r._hasPointLabels)&&(n=function(r){return r.forEach((function(r){r.visible&&(o(r.dataLabels)?r.dataLabels:r.dataLabel?[r.dataLabel]:[]).forEach((function(n){var o=n.options;n.labelrank=h(o.labelrank,r.labelrank,r.shapeArgs&&r.shapeArgs.height),o.allowOverlap?(n.oldOpacity=n.opacity,n.newOpacity=1,i(n,t)):e.push(n)}))}))},n(r.nodes||[]),n(r.points))})),this.hideOverlappingLabels(e)})),t.prototype.hideOverlappingLabels=function(t){var e,r,o,a=this,h=t.length,l=a.renderer,c=!1,d=function(t){var e,i,r=t.box?0:t.padding||0,n=e=0;if(t&&(!t.alignAttr||t.placed)){var o=t.alignAttr||{x:t.attr("x"),y:t.attr("y")},a=t.parentGroup;t.width||(e=t.getBBox(),t.width=e.width,t.height=e.height,e=l.fontMetrics(null,t.element).h);var h=t.width-2*r;return(i={left:"0",center:"0.5",right:"1"}[t.alignValue])?n=+i*h:s(t.x)&&Math.round(t.x)!==t.translateX&&(n=t.x-t.translateX),{x:o.x+(a.translateX||0)+r-(n||0),y:o.y+(a.translateY||0)+r-e,width:t.width-2*r,height:t.height-2*r}}};for(r=0;r=p.x+p.width||u.x+u.width<=p.x||u.y>=p.y+p.height||u.y+u.height<=p.y||((d.labelrank=h(i.minWidth,0)&&this.chartHeight>=h(i.minHeight,0)}).call(this)&&e.push(t._id)},t.prototype.setResponsive=function(t,e){var i=this,n=this.options.responsive,o=this.currentResponsive,a=[];!e&&n&&n.rules&&n.rules.forEach((function(t){void 0===t._id&&(t._id=c()),i.matchResponsiveRule(t,a)}),this),e=s.apply(void 0,a.map((function(t){return r((n||{}).rules||[],(function(e){return e._id===t}))})).map((function(t){return t&&t.chartOptions}))),e.isResponsiveOptions=!0,(a=a.toString()||void 0)!==(o&&o.ruleIds)&&(o&&this.update(o.undoOptions,t,!0),a?((o=this.currentOptions(e)).isResponsiveOptions=!0,this.currentResponsive={ruleIds:a,mergedOptions:e,undoOptions:o},this.update(e,t,!0)):this.currentResponsive=void 0)},t}()}(e||(e={})),e})),e(i,"masters/highcharts.src.js",[i["Core/Globals.js"],i["Core/Utilities.js"],i["Core/DefaultOptions.js"],i["Core/Animation/Fx.js"],i["Core/Animation/AnimationUtilities.js"],i["Core/Renderer/HTML/AST.js"],i["Core/FormatUtilities.js"],i["Core/Renderer/RendererUtilities.js"],i["Core/Renderer/SVG/SVGElement.js"],i["Core/Renderer/SVG/SVGRenderer.js"],i["Core/Renderer/HTML/HTMLElement.js"],i["Core/Renderer/HTML/HTMLRenderer.js"],i["Core/Axis/Axis.js"],i["Core/Axis/DateTimeAxis.js"],i["Core/Axis/LogarithmicAxis.js"],i["Core/Axis/PlotLineOrBand/PlotLineOrBand.js"],i["Core/Axis/Tick.js"],i["Core/Tooltip.js"],i["Core/Series/Point.js"],i["Core/Pointer.js"],i["Core/MSPointer.js"],i["Core/Legend/Legend.js"],i["Core/Chart/Chart.js"],i["Core/Series/Series.js"],i["Core/Series/SeriesRegistry.js"],i["Series/Column/ColumnSeries.js"],i["Series/Column/ColumnDataLabel.js"],i["Series/Pie/PieSeries.js"],i["Series/Pie/PieDataLabel.js"],i["Core/Series/DataLabel.js"],i["Core/Responsive.js"],i["Core/Color/Color.js"],i["Core/Time.js"]],(function(t,e,i,r,n,o,s,a,h,l,c,d,p,u,f,g,m,y,v,x,b,w,S,k,C,M,A,T,P,L,O,E,_){return t.animate=n.animate,t.animObject=n.animObject,t.getDeferredAnimation=n.getDeferredAnimation,t.setAnimation=n.setAnimation,t.stop=n.stop,t.timers=r.timers,t.AST=o,t.Axis=p,t.Chart=S,t.chart=S.chart,t.Fx=r,t.Legend=w,t.PlotLineOrBand=g,t.Point=v,t.Pointer=b.isRequired()?b:x,t.Series=k,t.SVGElement=h,t.SVGRenderer=l,t.Tick=m,t.Time=_,t.Tooltip=y,t.Color=E,t.color=E.parse,d.compose(l),c.compose(h),t.defaultOptions=i.defaultOptions,t.getOptions=i.getOptions,t.time=i.defaultTime,t.setOptions=i.setOptions,t.dateFormat=s.dateFormat,t.format=s.format,t.numberFormat=s.numberFormat,t.addEvent=e.addEvent,t.arrayMax=e.arrayMax,t.arrayMin=e.arrayMin,t.attr=e.attr,t.clearTimeout=e.clearTimeout,t.correctFloat=e.correctFloat,t.createElement=e.createElement,t.css=e.css,t.defined=e.defined,t.destroyObjectProperties=e.destroyObjectProperties,t.discardElement=e.discardElement,t.distribute=a.distribute,t.erase=e.erase,t.error=e.error,t.extend=e.extend,t.extendClass=e.extendClass,t.find=e.find,t.fireEvent=e.fireEvent,t.getMagnitude=e.getMagnitude,t.getStyle=e.getStyle,t.inArray=e.inArray,t.isArray=e.isArray,t.isClass=e.isClass,t.isDOMElement=e.isDOMElement,t.isFunction=e.isFunction,t.isNumber=e.isNumber,t.isObject=e.isObject,t.isString=e.isString,t.keys=e.keys,t.merge=e.merge,t.normalizeTickInterval=e.normalizeTickInterval,t.objectEach=e.objectEach,t.offset=e.offset,t.pad=e.pad,t.pick=e.pick,t.pInt=e.pInt,t.relativeLength=e.relativeLength,t.removeEvent=e.removeEvent,t.seriesType=C.seriesType,t.splat=e.splat,t.stableSort=e.stableSort,t.syncTimeout=e.syncTimeout,t.timeUnits=e.timeUnits,t.uniqueKey=e.uniqueKey,t.useSerialIds=e.useSerialIds,t.wrap=e.wrap,A.compose(M),L.compose(k),u.compose(p),f.compose(p),P.compose(T),g.compose(p),O.compose(S),t})),i["masters/highcharts.src.js"]._modules=i,i["masters/highcharts.src.js"]},t.exports?(o.default=o,t.exports=n.document?o(n):o):void 0===(r=function(){return o(n)}.call(e,i,e,t))||(t.exports=r)},77:function(t,e,i){var r,n;r=function(){var t,e,i,r,n,o={},s={},a={currentLocale:"en",zeroFormat:null,nullFormat:null,defaultFormat:"0,0",scalePercentBy100:!0},h={currentLocale:a.currentLocale,zeroFormat:a.zeroFormat,nullFormat:a.nullFormat,defaultFormat:a.defaultFormat,scalePercentBy100:a.scalePercentBy100};function l(t,e){this._input=t,this._value=e}return(t=function(i){var r,n,s,a;if(t.isNumeral(i))r=i.value();else if(0===i||void 0===i)r=0;else if(null===i||e.isNaN(i))r=null;else if("string"==typeof i)if(h.zeroFormat&&i===h.zeroFormat)r=0;else if(h.nullFormat&&i===h.nullFormat||!i.replace(/[^0-9]+/g,"").length)r=null;else{for(n in o)if((a="function"==typeof o[n].regexps.unformat?o[n].regexps.unformat():o[n].regexps.unformat)&&i.match(a)){s=o[n].unformat;break}r=(s=s||t._.stringToNumber)(i)}else r=Number(i)||null;return new l(i,r)}).version="2.0.6",t.isNumeral=function(t){return t instanceof l},t._=e={numberToFormat:function(e,i,r){var n,o,a,h,l,c,d,p,u=s[t.options.currentLocale],f=!1,g=!1,m="",y=1e12,v=1e9,x=1e6,b="",w=!1;if(e=e||0,o=Math.abs(e),t._.includes(i,"(")?(f=!0,i=i.replace(/[\(|\)]/g,"")):(t._.includes(i,"+")||t._.includes(i,"-"))&&(l=t._.includes(i,"+")?i.indexOf("+"):e<0?i.indexOf("-"):-1,i=i.replace(/[\+|\-]/g,"")),t._.includes(i,"a")&&(n=!!(n=i.match(/a(k|m|b|t)?/))&&n[1],t._.includes(i," a")&&(m=" "),i=i.replace(new RegExp(m+"a[kmbt]?"),""),o>=y&&!n||"t"===n?(m+=u.abbreviations.trillion,e/=y):o=v&&!n||"b"===n?(m+=u.abbreviations.billion,e/=v):o=x&&!n||"m"===n?(m+=u.abbreviations.million,e/=x):(o=1e3&&!n||"k"===n)&&(m+=u.abbreviations.thousand,e/=1e3)),t._.includes(i,"[.]")&&(g=!0,i=i.replace("[.]",".")),a=e.toString().split(".")[0],h=i.split(".")[1],c=i.indexOf(","),p=(i.split(".")[0].split(",")[0].match(/0/g)||[]).length,h?(t._.includes(h,"[")?(h=(h=h.replace("]","")).split("["),b=t._.toFixed(e,h[0].length+h[1].length,r,h[1].length)):b=t._.toFixed(e,h.length,r),a=b.split(".")[0],b=t._.includes(b,".")?u.delimiters.decimal+b.split(".")[1]:"",g&&0===Number(b.slice(1))&&(b="")):a=t._.toFixed(e,0,r),m&&!n&&Number(a)>=1e3&&m!==u.abbreviations.trillion)switch(a=String(Number(a)/1e3),m){case u.abbreviations.thousand:m=u.abbreviations.million;break;case u.abbreviations.million:m=u.abbreviations.billion;break;case u.abbreviations.billion:m=u.abbreviations.trillion}if(t._.includes(a,"-")&&(a=a.slice(1),w=!0),a.length0;S--)a="0"+a;return c>-1&&(a=a.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1"+u.delimiters.thousands)),0===i.indexOf(".")&&(a=""),d=a+b+(m||""),f?d=(f&&w?"(":"")+d+(f&&w?")":""):l>=0?d=0===l?(w?"-":"+")+d:d+(w?"-":"+"):w&&(d="-"+d),d},stringToNumber:function(t){var e,i,r,n=s[h.currentLocale],o=t,a={thousand:3,million:6,billion:9,trillion:12};if(h.zeroFormat&&t===h.zeroFormat)i=0;else if(h.nullFormat&&t===h.nullFormat||!t.replace(/[^0-9]+/g,"").length)i=null;else{for(e in i=1,"."!==n.delimiters.decimal&&(t=t.replace(/\./g,"").replace(n.delimiters.decimal,".")),a)if(r=new RegExp("[^a-zA-Z]"+n.abbreviations[e]+"(?:\\)|(\\"+n.currency.symbol+")?(?:\\))?)?$"),o.match(r)){i*=Math.pow(10,a[e]);break}i*=(t.split("-").length+Math.min(t.split("(").length-1,t.split(")").length-1))%2?1:-1,t=t.replace(/[^0-9\.]+/g,""),i*=Number(t)}return i},isNaN:function(t){return"number"==typeof t&&isNaN(t)},includes:function(t,e){return-1!==t.indexOf(e)},insert:function(t,e,i){return t.slice(0,i)+e+t.slice(i)},reduce:function(t,e){if(null===this)throw new TypeError("Array.prototype.reduce called on null or undefined");if("function"!=typeof e)throw new TypeError(e+" is not a function");var i,r=Object(t),n=r.length>>>0,o=0;if(3===arguments.length)i=arguments[2];else{for(;o=n)throw new TypeError("Reduce of empty array with no initial value");i=r[o++]}for(;or?t:r}),1)},toFixed:function(t,e,i,r){var n,o,s,a,h=t.toString().split("."),l=e-(r||0);return n=2===h.length?Math.min(Math.max(h[1].length,l),e):l,s=Math.pow(10,n),a=(i(t+"e+"+n)/s).toFixed(n),r>e-n&&(o=new RegExp("\\.?0{1,"+(r-(e-n))+"}$"),a=a.replace(o,"")),a}},t.options=h,t.formats=o,t.locales=s,t.locale=function(t){return t&&(h.currentLocale=t.toLowerCase()),h.currentLocale},t.localeData=function(t){if(!t)return s[h.currentLocale];if(t=t.toLowerCase(),!s[t])throw new Error("Unknown locale : "+t);return s[t]},t.reset=function(){for(var t in a)h[t]=a[t]},t.zeroFormat=function(t){h.zeroFormat="string"==typeof t?t:null},t.nullFormat=function(t){h.nullFormat="string"==typeof t?t:null},t.defaultFormat=function(t){h.defaultFormat="string"==typeof t?t:"0.0"},t.register=function(t,e,i){if(e=e.toLowerCase(),this[t+"s"][e])throw new TypeError(e+" "+t+" already registered.");return this[t+"s"][e]=i,i},t.validate=function(e,i){var r,n,o,s,a,h,l,c;if("string"!=typeof e&&(e+="",console.warn&&console.warn("Numeral.js: Value is not string. It has been co-erced to: ",e)),(e=e.trim()).match(/^\d+$/))return!0;if(""===e)return!1;try{l=t.localeData(i)}catch(e){l=t.localeData(t.locale())}return o=l.currency.symbol,a=l.abbreviations,r=l.delimiters.decimal,n="."===l.delimiters.thousands?"\\.":l.delimiters.thousands,!(null!==(c=e.match(/^[^\d]+/))&&(e=e.substr(1),c[0]!==o)||null!==(c=e.match(/[^\d]+$/))&&(e=e.slice(0,-1),c[0]!==a.thousand&&c[0]!==a.million&&c[0]!==a.billion&&c[0]!==a.trillion)||(h=new RegExp(n+"{2}"),e.match(/[^\d.,]/g)||(s=e.split(r)).length>2||(s.length<2?!s[0].match(/^\d+.*\d$/)||s[0].match(h):1===s[0].length?!s[0].match(/^\d+$/)||s[0].match(h)||!s[1].match(/^\d+$/):!s[0].match(/^\d+.*\d$/)||s[0].match(h)||!s[1].match(/^\d+$/))))},t.fn=l.prototype={clone:function(){return t(this)},format:function(e,i){var r,n,s,a=this._value,l=e||h.defaultFormat;if(i=i||Math.round,0===a&&null!==h.zeroFormat)n=h.zeroFormat;else if(null===a&&null!==h.nullFormat)n=h.nullFormat;else{for(r in o)if(l.match(o[r].regexps.format)){s=o[r].format;break}n=(s=s||t._.numberToFormat)(a,l,i)}return n},value:function(){return this._value},input:function(){return this._input},set:function(t){return this._value=Number(t),this},add:function(t){var i=e.correctionFactor.call(null,this._value,t);return this._value=e.reduce([this._value,t],(function(t,e,r,n){return t+Math.round(i*e)}),0)/i,this},subtract:function(t){var i=e.correctionFactor.call(null,this._value,t);return this._value=e.reduce([t],(function(t,e,r,n){return t-Math.round(i*e)}),Math.round(this._value*i))/i,this},multiply:function(t){return this._value=e.reduce([this._value,t],(function(t,i,r,n){var o=e.correctionFactor(t,i);return Math.round(t*o)*Math.round(i*o)/Math.round(o*o)}),1),this},divide:function(t){return this._value=e.reduce([this._value,t],(function(t,i,r,n){var o=e.correctionFactor(t,i);return Math.round(t*o)/Math.round(i*o)})),this},difference:function(e){return Math.abs(t(this._value).subtract(e).value())}},t.register("locale","en",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(t){var e=t%10;return 1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th"},currency:{symbol:"$"}}),t.register("format","bps",{regexps:{format:/(BPS)/,unformat:/(BPS)/},format:function(e,i,r){var n,o=t._.includes(i," BPS")?" ":"";return e*=1e4,i=i.replace(/\s?BPS/,""),n=t._.numberToFormat(e,i,r),t._.includes(n,")")?((n=n.split("")).splice(-1,0,o+"BPS"),n=n.join("")):n=n+o+"BPS",n},unformat:function(e){return+(1e-4*t._.stringToNumber(e)).toFixed(15)}}),r={base:1024,suffixes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},n="("+(n=(i={base:1e3,suffixes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}).suffixes.concat(r.suffixes.filter((function(t){return i.suffixes.indexOf(t)<0}))).join("|")).replace("B","B(?!PS)")+")",t.register("format","bytes",{regexps:{format:/([0\s]i?b)/,unformat:new RegExp(n)},format:function(e,n,o){var s,a,h,l=t._.includes(n,"ib")?r:i,c=t._.includes(n," b")||t._.includes(n," ib")?" ":"";for(n=n.replace(/\s?i?b/,""),s=0;s<=l.suffixes.length;s++)if(a=Math.pow(l.base,s),h=Math.pow(l.base,s+1),null===e||0===e||e>=a&&e0&&(e/=a);break}return t._.numberToFormat(e,n,o)+c},unformat:function(e){var n,o,s=t._.stringToNumber(e);if(s){for(n=i.suffixes.length-1;n>=0;n--){if(t._.includes(e,i.suffixes[n])){o=Math.pow(i.base,n);break}if(t._.includes(e,r.suffixes[n])){o=Math.pow(r.base,n);break}}s*=o||1}return s}}),t.register("format","currency",{regexps:{format:/(\$)/},format:function(e,i,r){var n,o,s=t.locales[t.options.currentLocale],a={before:i.match(/^([\+|\-|\(|\s|\$]*)/)[0],after:i.match(/([\+|\-|\)|\s|\$]*)$/)[0]};for(i=i.replace(/\s?\$\s?/,""),n=t._.numberToFormat(e,i,r),e>=0?(a.before=a.before.replace(/[\-\(]/,""),a.after=a.after.replace(/[\-\)]/,"")):e<0&&!t._.includes(a.before,"-")&&!t._.includes(a.before,"(")&&(a.before="-"+a.before),o=0;o=0;o--)switch(a.after[o]){case"$":n=o===a.after.length-1?n+s.currency.symbol:t._.insert(n,s.currency.symbol,-(a.after.length-(1+o)));break;case" ":n=o===a.after.length-1?n+" ":t._.insert(n," ",-(a.after.length-(1+o)+s.currency.symbol.length-1))}return n}}),t.register("format","exponential",{regexps:{format:/(e\+|e-)/,unformat:/(e\+|e-)/},format:function(e,i,r){var n=("number"!=typeof e||t._.isNaN(e)?"0e+0":e.toExponential()).split("e");return i=i.replace(/e[\+|\-]{1}0/,""),t._.numberToFormat(Number(n[0]),i,r)+"e"+n[1]},unformat:function(e){var i=t._.includes(e,"e+")?e.split("e+"):e.split("e-"),r=Number(i[0]),n=Number(i[1]);return n=t._.includes(e,"e-")?n*=-1:n,t._.reduce([r,Math.pow(10,n)],(function(e,i,r,n){var o=t._.correctionFactor(e,i);return e*o*(i*o)/(o*o)}),1)}}),t.register("format","ordinal",{regexps:{format:/(o)/},format:function(e,i,r){var n=t.locales[t.options.currentLocale],o=t._.includes(i," o")?" ":"";return i=i.replace(/\s?o/,""),o+=n.ordinal(e),t._.numberToFormat(e,i,r)+o}}),t.register("format","percentage",{regexps:{format:/(%)/,unformat:/(%)/},format:function(e,i,r){var n,o=t._.includes(i," %")?" ":"";return t.options.scalePercentBy100&&(e*=100),i=i.replace(/\s?\%/,""),n=t._.numberToFormat(e,i,r),t._.includes(n,")")?((n=n.split("")).splice(-1,0,o+"%"),n=n.join("")):n=n+o+"%",n},unformat:function(e){var i=t._.stringToNumber(e);return t.options.scalePercentBy100?.01*i:i}}),t.register("format","time",{regexps:{format:/(:)/,unformat:/(:)/},format:function(t,e,i){var r=Math.floor(t/60/60),n=Math.floor((t-60*r*60)/60),o=Math.round(t-60*r*60-60*n);return r+":"+(n<10?"0"+n:n)+":"+(o<10?"0"+o:o)},unformat:function(t){var e=t.split(":"),i=0;return 3===e.length?(i+=60*Number(e[0])*60,i+=60*Number(e[1]),i+=Number(e[2])):2===e.length&&(i+=60*Number(e[0]),i+=Number(e[1])),Number(i)}}),t},void 0===(n=r.call(e,i,e,t))||(t.exports=n)}},e={};function i(r){var n=e[r];if(void 0!==n)return n.exports;var o=e[r]={exports:{}};return t[r].call(o.exports,o,o.exports,i),o.exports}i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};return(()=>{"use strict";i.r(r);var t=i(77);function e(e,i){if(e.length>i&&0!=i){var r=parseFloat(e[0]),n=parseFloat(e[i]),o=r-n,s=0!=n?o/n:1;return[o,"("+t(o).format("0.00a")+")",s,(o<0?"⬇":"⬆")+(100*s).toFixed(2)+"%"]}return[NaN,NaN,NaN,NaN]}function n(t,e){return 0==e?t<=0?"#FF5722":"#1db954":t<=0?"#1db954":"#FF5722"}function o(e,i){return 1==i?t(e).format("0.00a"):e}function s(e,i){return 1==i?t(e).format("0.00%"):e}function a(){}function h(t){return null==t?a:function(){return this.querySelector(t)}}function l(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function c(){return[]}function d(t){return null==t?c:function(){return this.querySelectorAll(t)}}function p(t){return function(){return this.matches(t)}}function u(t){return function(e){return e.matches(t)}}var f=Array.prototype.find;function g(){return this.firstElementChild}var m=Array.prototype.filter;function y(){return Array.from(this.children)}function v(t){return new Array(t.length)}function x(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function b(t){return function(){return t}}function w(t,e,i,r,n,o){for(var s,a=0,h=e.length,l=o.length;ae?1:t>=e?0:NaN}x.prototype={constructor:x,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var A="http://www.w3.org/1999/xhtml";const T={svg:"http://www.w3.org/2000/svg",xhtml:A,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function P(t){var e=t+="",i=e.indexOf(":");return i>=0&&"xmlns"!==(e=t.slice(0,i))&&(t=t.slice(i+1)),T.hasOwnProperty(e)?{space:T[e],local:t}:t}function L(t){return function(){this.removeAttribute(t)}}function O(t){return function(){this.removeAttributeNS(t.space,t.local)}}function E(t,e){return function(){this.setAttribute(t,e)}}function _(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function D(t,e){return function(){var i=e.apply(this,arguments);null==i?this.removeAttribute(t):this.setAttribute(t,i)}}function N(t,e){return function(){var i=e.apply(this,arguments);null==i?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,i)}}function j(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function R(t){return function(){this.style.removeProperty(t)}}function I(t,e,i){return function(){this.style.setProperty(t,e,i)}}function B(t,e,i){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,i)}}function z(t,e){return t.style.getPropertyValue(e)||j(t).getComputedStyle(t,null).getPropertyValue(e)}function H(t){return function(){delete this[t]}}function W(t,e){return function(){this[t]=e}}function G(t,e){return function(){var i=e.apply(this,arguments);null==i?delete this[t]:this[t]=i}}function X(t){return t.trim().split(/^|\s+/)}function F(t){return t.classList||new Y(t)}function Y(t){this._node=t,this._names=X(t.getAttribute("class")||"")}function U(t,e){for(var i=F(t),r=-1,n=e.length;++r=0&&(e=t.slice(i+1),t=t.slice(0,i)),{type:t,name:e}}))}function ut(t){return function(){var e=this.__on;if(e){for(var i,r=0,n=-1,o=e.length;r=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var vt=[null];function xt(t,e){this._groups=t,this._parents=e}function bt(){return new xt([[document.documentElement]],vt)}xt.prototype=bt.prototype={constructor:xt,select:function(t){"function"!=typeof t&&(t=h(t));for(var e=this._groups,i=e.length,r=new Array(i),n=0;n=A&&(A=M+1);!(x=m[A])&&++A=0;)(r=n[o])&&(s&&4^r.compareDocumentPosition(s)&&s.parentNode.insertBefore(r,s),s=r);return this},sort:function(t){function e(e,i){return e&&i?t(e.__data__,i.__data__):!e-!i}t||(t=M);for(var i=this._groups,r=i.length,n=new Array(r),o=0;o1?this.each((null==e?R:"function"==typeof e?B:I)(t,e,null==i?"":i)):z(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?H:"function"==typeof e?G:W)(t,e)):this.node()[t]},classed:function(t,e){var i=X(t+"");if(arguments.length<2){for(var r=F(this.node()),n=-1,o=i.length;++n{}};function kt(){for(var t,e=0,i=arguments.length,r={};e=0&&(i=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:i}}))}function At(t,e){for(var i,r=0,n=t.length;r0)for(var i,r,n=new Array(i),o=0;o=0&&e._call.call(void 0,t),e=e._next;--Et}()}finally{Et=0,function(){for(var t,e,i=Lt,r=1/0;i;)i._call?(r>i._time&&(r=i._time),t=i,i=i._next):(e=i._next,i._next=null,i=t?t._next=e:Lt=e);Ot=t,Yt(r)}(),jt=0}}function Ft(){var t=It.now(),e=t-Nt;e>1e3&&(Rt-=e,Nt=t)}function Yt(t){Et||(_t&&(_t=clearTimeout(_t)),t-jt>24?(t<1/0&&(_t=setTimeout(Xt,t-It.now()-Rt)),Dt&&(Dt=clearInterval(Dt))):(Dt||(Nt=It.now(),Dt=setInterval(Ft,1e3)),Et=1,Bt(Xt)))}function Ut(t,e,i){var r=new Wt;return e=null==e?0:+e,r.restart((i=>{r.stop(),t(i+e)}),e,i),r}Wt.prototype=Gt.prototype={constructor:Wt,restart:function(t,e,i){if("function"!=typeof t)throw new TypeError("callback is not a function");i=(null==i?zt():+i)+(null==e?0:+e),this._next||Ot===this||(Ot?Ot._next=this:Lt=this,Ot=this),this._call=t,this._time=i,Yt()},stop:function(){this._call&&(this._call=null,this._time=1/0,Yt())}};var Vt=Pt("start","end","cancel","interrupt"),Kt=[];function qt(t,e,i,r,n,o){var s=t.__transition;if(s){if(i in s)return}else t.__transition={};!function(t,e,i){var r,n=t.__transition;function o(h){var l,c,d,p;if(1!==i.state)return a();for(l in n)if((p=n[l]).name===i.name){if(3===p.state)return Ut(o);4===p.state?(p.state=6,p.timer.stop(),p.on.call("interrupt",t,t.__data__,p.index,p.group),delete n[l]):+l0)throw new Error("too late; already scheduled");return i}function $t(t,e){var i=Jt(t,e);if(i.state>3)throw new Error("too late; already running");return i}function Jt(t,e){var i=t.__transition;if(!i||!(i=i[e]))throw new Error("transition not found");return i}function Qt(t,e){return t=+t,e=+e,function(i){return t*(1-i)+e*i}}var te,ee=180/Math.PI,ie={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function re(t,e,i,r,n,o){var s,a,h;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(h=t*i+e*r)&&(i-=t*h,r-=e*h),(a=Math.sqrt(i*i+r*r))&&(i/=a,r/=a,h/=a),t*r180?e+=360:e-t>180&&(t+=360),o.push({i:i.push(n(i)+"rotate(",null,r)-2,x:Qt(t,e)})):e&&i.push(n(i)+"rotate("+e+r)}(o.rotate,s.rotate,a,h),function(t,e,i,o){t!==e?o.push({i:i.push(n(i)+"skewX(",null,r)-2,x:Qt(t,e)}):e&&i.push(n(i)+"skewX("+e+r)}(o.skewX,s.skewX,a,h),function(t,e,i,r,o,s){if(t!==i||e!==r){var a=o.push(n(o)+"scale(",null,",",null,")");s.push({i:a-4,x:Qt(t,i)},{i:a-2,x:Qt(e,r)})}else 1===i&&1===r||o.push(n(o)+"scale("+i+","+r+")")}(o.scaleX,o.scaleY,s.scaleX,s.scaleY,a,h),o=s=null,function(t){for(var e,i=-1,r=h.length;++i>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===i?Oe(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===i?Oe(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=xe.exec(t))?new De(e[1],e[2],e[3],1):(e=be.exec(t))?new De(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=we.exec(t))?Oe(e[1],e[2],e[3],e[4]):(e=Se.exec(t))?Oe(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=ke.exec(t))?Ie(e[1],e[2]/100,e[3]/100,1):(e=Ce.exec(t))?Ie(e[1],e[2]/100,e[3]/100,e[4]):Me.hasOwnProperty(t)?Le(Me[t]):"transparent"===t?new De(NaN,NaN,NaN,0):null}function Le(t){return new De(t>>16&255,t>>8&255,255&t,1)}function Oe(t,e,i,r){return r<=0&&(t=e=i=NaN),new De(t,e,i,r)}function Ee(t){return t instanceof pe||(t=Pe(t)),t?new De((t=t.rgb()).r,t.g,t.b,t.opacity):new De}function _e(t,e,i,r){return 1===arguments.length?Ee(t):new De(t,e,i,null==r?1:r)}function De(t,e,i,r){this.r=+t,this.g=+e,this.b=+i,this.opacity=+r}function Ne(){return"#"+Re(this.r)+Re(this.g)+Re(this.b)}function je(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function Re(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Ie(t,e,i,r){return r<=0?t=e=i=NaN:i<=0||i>=1?t=e=NaN:e<=0&&(t=NaN),new ze(t,e,i,r)}function Be(t){if(t instanceof ze)return new ze(t.h,t.s,t.l,t.opacity);if(t instanceof pe||(t=Pe(t)),!t)return new ze;if(t instanceof ze)return t;var e=(t=t.rgb()).r/255,i=t.g/255,r=t.b/255,n=Math.min(e,i,r),o=Math.max(e,i,r),s=NaN,a=o-n,h=(o+n)/2;return a?(s=e===o?(i-r)/a+6*(i0&&h<1?0:s,new ze(s,a,h,t.opacity)}function ze(t,e,i,r){this.h=+t,this.s=+e,this.l=+i,this.opacity=+r}function He(t,e,i){return 255*(t<60?e+(i-e)*t/60:t<180?i:t<240?e+(i-e)*(240-t)/60:e)}function We(t,e,i,r,n){var o=t*t,s=o*t;return((1-3*t+3*o-s)*e+(4-6*o+3*s)*i+(1+3*t+3*o-3*s)*r+s*n)/6}ce(pe,Pe,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:Ae,formatHex:Ae,formatHsl:function(){return Be(this).formatHsl()},formatRgb:Te,toString:Te}),ce(De,_e,de(pe,{brighter:function(t){return t=null==t?fe:Math.pow(fe,t),new De(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?ue:Math.pow(ue,t),new De(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ne,formatHex:Ne,formatRgb:je,toString:je})),ce(ze,(function(t,e,i,r){return 1===arguments.length?Be(t):new ze(t,e,i,null==r?1:r)}),de(pe,{brighter:function(t){return t=null==t?fe:Math.pow(fe,t),new ze(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?ue:Math.pow(ue,t),new ze(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,i=this.l,r=i+(i<.5?i:1-i)*e,n=2*i-r;return new De(He(t>=240?t-240:t+120,n,r),He(t,n,r),He(t<120?t+240:t-120,n,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const Ge=t=>()=>t;function Xe(t,e){var i=e-t;return i?function(t,e){return function(i){return t+i*e}}(t,i):Ge(isNaN(t)?e:t)}const Fe=function t(e){var i=function(t){return 1==(t=+t)?Xe:function(e,i){return i-e?function(t,e,i){return t=Math.pow(t,i),e=Math.pow(e,i)-t,i=1/i,function(r){return Math.pow(t+r*e,i)}}(e,i,t):Ge(isNaN(e)?i:e)}}(e);function r(t,e){var r=i((t=_e(t)).r,(e=_e(e)).r),n=i(t.g,e.g),o=i(t.b,e.b),s=Xe(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=n(e),t.b=o(e),t.opacity=s(e),t+""}}return r.gamma=t,r}(1);function Ye(t){return function(e){var i,r,n=e.length,o=new Array(n),s=new Array(n),a=new Array(n);for(i=0;i=1?(i=1,e-1):Math.floor(i*e),n=t[r],o=t[r+1],s=r>0?t[r-1]:2*n-o,a=ro&&(n=e.slice(o,n),a[s]?a[s]+=n:a[++s]=n),(i=i[0])===(r=r[0])?a[s]?a[s]+=r:a[++s]=r:(a[++s]=null,h.push({i:s,x:Qt(i,r)})),o=Ve.lastIndex;return o=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?Zt:$t;return function(){var s=o(this,t),a=s.on;a!==r&&(n=(r=a).copy()).on(e,i),s.on=n}}var pi=wt.prototype.constructor;function ui(t){return function(){this.style.removeProperty(t)}}function fi(t,e,i){return function(r){this.style.setProperty(t,e.call(this,r),i)}}function gi(t,e,i){var r,n;function o(){var o=e.apply(this,arguments);return o!==n&&(r=(n=o)&&fi(t,o,i)),r}return o._value=e,o}function mi(t){return function(e){this.textContent=t.call(this,e)}}function yi(t){var e,i;function r(){var r=t.apply(this,arguments);return r!==i&&(e=(i=r)&&mi(r)),e}return r._value=t,r}var vi=0;function xi(t,e,i,r){this._groups=t,this._parents=e,this._name=i,this._id=r}function bi(){return++vi}var wi=wt.prototype;xi.prototype=function(t){return wt().transition(t)}.prototype={constructor:xi,select:function(t){var e=this._name,i=this._id;"function"!=typeof t&&(t=h(t));for(var r=this._groups,n=r.length,o=new Array(n),s=0;s2&&i.state<5,i.state=6,i.timer.stop(),i.on.call(r?"interrupt":"cancel",t,t.__data__,i.index,i.group),delete o[n]):s=!1;s&&delete t.__transition}}(this,t)}))},wt.prototype.transition=function(t){var e,i;t instanceof xi?(e=t._id,t=t._name):(e=bi(),(i=Si).time=zt(),t=null==t?null:t+"");for(var r=this._groups,n=r.length,o=0;o1)console.error("\n Instructions🧭\n This viz package requires\n 1 dimension in Date ISO format (yyyy-mm-dd)\n e.g.: 2021-01-03\n 1 measure\n Please contact Hong Wu(@hongkuiw) if you still facing errors\n ");else{var c=function(t,i){var n=function(t){var e=[];return t.forEach((t=>{var i={};Object.keys(t).forEach((e=>{i[e]=t[e].value})),e.push(i)})),e}(t),o=document.getElementsByClassName("highcharts-figure")[0].offsetWidth,s=parseInt(o/n.length*.8),a=i.fields.dimensions.length>0?i.fields.dimensions[0].view:i.fields.measures[0].view,h=i.fields.measures[0].name;d=function(t,e){return t.fields.measures.filter((t=>t.name==e))}(i,h);var l=i.fields.dimensions[0].name,c=l.split(".")[1].split("_");c.pop();var p=a+"."+(c=c.join("_"))+"_date",u=a+"."+c+"_month",f=a+"."+c+"_quarter",g=a+"."+c+"_week",w=a+"."+c+"_year";switch(l){case p:n.forEach((t=>{t[l]=Date.parse(t[p])}));break;case g:n.forEach((t=>{t[l]=Date.parse(t[g])}));break;case u:n.forEach((t=>{t[l]=Date.parse(t[u]+"-01")}));break;case f:n.forEach((t=>{t[l]=Date.parse(t[f]+"-01")}));break;case w:n.forEach((t=>{t[l]=Date.parse(t[w]+"-01-01")}))}var S=n.slice().sort(((t,e)=>function(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}(t.xHeaderName,e.xHeaderName)));b=function(t){var e=[];return t.forEach((function(t){var i=[];Object.keys(t).forEach((function(e){i.push(t[e])})),e.push(i)})),e}(S);var k=i.fields.measures[0].label_short,C=t[0][l].value,M=S[0][h],A=[];switch(b.forEach((t=>{A.push(t[1])})),l){case p:m=e(A,7),y=e(A,30),v=e(A,90),x=e(A,365);break;case g:m=e(A,1),y=e(A,4),v=e(A,12),x=e(A,52);break;case u:m=e(A,0),y=e(A,1),v=e(A,3),x=e(A,12);break;case f:m=e(A,0),y=e(A,0),v=e(A,1),x=e(A,4);break;case w:m=e(A,0),y=e(A,0),v=e(A,0),x=e(A,1)}var T=[],P=[];if(b.length>7){b.map((t=>{T.push(t[1])}));var L=function(t,e){let i=0,r=0;const n=new Float64Array(t.length).fill(NaN);for(let n=Math.min(e-1,t.length);i{P.push([t[0],L[e]])}))}return{measureMetaInfoValue:d,chartTitle:k,xHeaderName:l,asOfDateValue:M,asOfDate:C,growthRateArrayWoW:m,growthRateArrayMoM:y,growthRateArrayQoQ:v,growthRateArrayYoY:x,dataHighCharts:b,dataHighChartsMovingWindowAvgLine:P,pointWidthResponsive:s}}(t,a),d=c.measureMetaInfoValue,p=c.chartTitle,u=c.xHeaderName,f=c.asOfDateValue,g=c.asOfDate,m=c.growthRateArrayWoW,y=c.growthRateArrayMoM,v=c.growthRateArrayQoQ,x=c.growthRateArrayYoY,b=c.dataHighCharts,w=c.dataHighChartsMovingWindowAvgLine,S=c.pointWidthResponsive;Li.chart("container",{chart:{zoomType:"x",panning:"true",panKey:"shift",type:r.chart_type,events:{load:function(){let t;this.title.on("mouseover",(e=>{t=this.renderer.label(d[0].description,e.x,e.y,"rectangle").css({color:"#FFFFFF"}).attr({fill:"#181818","font-family":"Circular Spotify Text, Helvetica, Arial, sans-serif"}).add().toFront()})),this.title.on("mouseout",(e=>{t&&t.destroy()}))}}},title:{text:p+'

by '+u.split(".")[1].split("_")[1]+'




'+r.prefix+o(s(f.toFixed(4),r.is_percentage_number),r.is_human_readable)+' '+r.suffix+"",align:"left"},subtitle:{text:'

'+(m[3]+m[1])+'

WoW;

'+(y[3]+y[1])+'

MoM;

'+(v[3]+v[1])+'

QoQ;

'+(x[3]+x[1])+'

YoY;

as of '+u.split(".")[1].split("_")[1]+": "+g+"

",align:"left",useHTML:!1},xAxis:{type:"datetime"},yAxis:{title:{text:void 0}},legend:{enabled:!1},credits:{enabled:!0,text:"Metrics Widget by Hong"},exporting:{enabled:!1},plotOptions:{area:{fillColor:{linearGradient:[0,0,0,300],stops:[[0,Li.getOptions().colors[0]],[1,Li.color(Li.getOptions().colors[0]).setOpacity(0).get("rgba")]]},marker:{enabled:!1},lineWidth:2,states:{hover:{lineWidth:1}},threshold:null}},series:[{id:"default",name:p,color:r.line_color,data:b,pointWidth:S,lineWidth:3,step:r.is_step_line,marker:{enabled:r.is_enable_marker}},{id:"movingWindowAvgLine",name:"Moving "+r.moving_average_window+u.split(".")[1].split("_")[1].charAt(0)+" Avg. "+p,color:r.line_color_secondary,data:w,pointWidth:S,lineWidth:2,dashStyle:r.line_style_secondary,marker:{enabled:!1},visible:r.is_show_moving_average_line}],tooltip:{formatter:function(){return this.series.name+": "+o(s(parseFloat(this.y),r.is_percentage_number),r.is_human_readable)+"
on: "+new Date(this.x).toISOString().split("T")[0]},style:{color:"#000000",fontFamily:'"Google Sans", Roboto, "Noto Sans JP", "Noto Sans", "Noto Sans CJK KR", Helvetica, Arial, sans-serif'}}}),l()}}};looker.plugins.visualizations.add(Oi)})(),r})()})); \ No newline at end of file diff --git a/preview/big-number-trend/big_number_trend.js.LICENSE.txt b/preview/big-number-trend/big_number_trend.js.LICENSE.txt new file mode 100644 index 0000000..7b35ef0 --- /dev/null +++ b/preview/big-number-trend/big_number_trend.js.LICENSE.txt @@ -0,0 +1,7 @@ +/*! @preserve + * numeral.js + * version : 2.0.6 + * author : Adam Draper + * license : MIT + * http://adamwdraper.github.com/Numeral-js/ + */ diff --git a/preview/big-number-trend/main.js b/preview/big-number-trend/main.js deleted file mode 100644 index 3fe4e64..0000000 --- a/preview/big-number-trend/main.js +++ /dev/null @@ -1,476 +0,0 @@ -// ANCHOR: Global Input Parameters -// NOTE: this is the naming to follow in .lkml -const inputDimensionNameLookML = "_date"; - -const visObject = { - options: { - chart_type: { - type: "string", - display: "select", - label: "1. Select Line Chart Style", - default: "line", - values: [ - { Line: "line" }, - { Bar: "column" }, - { Spline: "spline" }, - { Area: "area" }, - ], - }, - is_enable_marker: { - type: "boolean", - label: "1.1. Toggle for Marker", - default: false, - }, - line_color: { - type: "string", - display: "color", - label: "2. Choose Primary Color", - default: "#3259F9", - }, - is_human_readable: { - type: "boolean", - label: "3. Toggle for Readable Number", - default: false, - }, - is_percentage_number: { - type: "boolean", - label: "4. Toggle for Percentage Number", - default: false, - }, - positive_is_bad: { - type: "boolean", - label: "5. Toggle for Positive Value is Bad or not?", - default: false, - }, - is_step_line: { - type: "boolean", - label: "6. Toggle for Step for Line Chart", - default: false, - }, - is_show_moving_average_line: { - type: "boolean", - label: "7. Toggle for Moving Average Line?", - default: false, - }, - line_color_secondary: { - type: "string", - display: "color", - label: "7.1 Choose Secondary Color", - default: "#85E0FF", - }, - line_style_secondary: { - type: "string", - display: "select", - label: "7.2 Choose Secondary Line Style", - default: "Solid", - values: [{ Solid: "Solid" }, { Dash: "Dash" }, { Dot: "Dot" }], - }, - moving_average_window: { - type: "string", - display: "select", - label: "7.3 Select window size for Moving Average Line", - default: "7", - values: [{ 3: "3" }, { 4: "4" }, { 6: "6" }, { 7: "7" }, { 14: "14" }, { 30: "30" }], - }, - prefix: { - type: "string", - display: "text", - label: "8. Prefix of Metrics", - default: " " - }, - suffix: { - type: "string", - display: "text", - label: "9. Suffix of Metrics", - default: " " - }, - }, - create: function (element, config) { - element.innerHTML = ` - -
-
-
- `; - }, - updateAsync: function (data, element, config, queryResponse, details, done) { - this.clearErrors(); - var errorMessage = ` - Instructions🧭 - This viz package requires - 1 dimension in Date ISO format (yyyy-mm-dd) - e.g.: 2021-01-03 - 1 measure - Please contact Hong Wu(@hongkuiw) if you still facing errors - `; - - if ( - queryResponse.fields.dimensions.length == 0 || - (queryResponse.fields.dimensions.length == 1 && queryResponse.fields.measures.length > 1) - ) { - console.error(errorMessage); - return; - } - - function prepareChartInputParameters(data, queryResponse) { - - var dataRecords = generateDataRecords(data); - var highchartsFigureWidth = document.getElementsByClassName("highcharts-figure")[0].offsetWidth; - var pointWidthResponsive = parseInt((highchartsFigureWidth / dataRecords.length) * 0.8); - - var viewName = queryResponse.fields.dimensions.length > 0 ? queryResponse.fields.dimensions[0].view : queryResponse.fields.measures[0].view; - var measureName = queryResponse.fields.measures[0].name; - measureMetaInfoValue = getFieldMetaInfoValue(queryResponse, measureName) - - var xHeaderName = queryResponse.fields.dimensions[0].name; - var xHeaderNameDate = viewName + "." + inputDimensionNameLookML + "_date"; - var xHeaderNameMonth = viewName + "." + inputDimensionNameLookML + "_month"; - var xHeaderNameQuarter = viewName + "." + inputDimensionNameLookML + "_quarter"; - var xHeaderNameWeek = viewName + "." + inputDimensionNameLookML + "_week"; - var xHeaderNameYear = viewName + "." + inputDimensionNameLookML + "_year"; - - switch (xHeaderName) { - case xHeaderNameDate: - dataRecords.forEach((d) => { d[xHeaderName] = Date.parse(d[xHeaderNameDate]) }); - break; - case xHeaderNameWeek: - dataRecords.forEach((d) => { d[xHeaderName] = Date.parse(d[xHeaderNameWeek]) }); - break; - case xHeaderNameMonth: - dataRecords.forEach((d) => { d[xHeaderName] = Date.parse(d[xHeaderNameMonth] + "-01") }); - break; - case xHeaderNameQuarter: - dataRecords.forEach((d) => { d[xHeaderName] = Date.parse(d[xHeaderNameQuarter] + "-01") }); - break; - case xHeaderNameYear: - dataRecords.forEach((d) => { d[xHeaderName] = Date.parse(d[xHeaderNameYear] + "-01-01") }); - break; - } - - var dataRecordsSorted = dataRecords.slice().sort((a, b) => d3.descending(a.xHeaderName, b.xHeaderName)); - dataHighCharts = generateHighChartsDataSeries(dataRecordsSorted); - var chartTitle = queryResponse.fields.measures[0].label_short; - var asOfDate = data[0][xHeaderName]["value"]; - var asOfDateValue = dataRecordsSorted[0][measureName]; - - var dataRecordsSorted1D = [] - dataHighCharts.forEach(d=>{ dataRecordsSorted1D.push(d[1]) }) - - switch (xHeaderName) { - case xHeaderNameDate: - growthRateArrayWoW = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 7) - growthRateArrayMoM = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 30) - growthRateArrayQoQ = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 90) - growthRateArrayYoY = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 365) - break; - case xHeaderNameWeek: - growthRateArrayWoW = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 1) - growthRateArrayMoM = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 4) - growthRateArrayQoQ = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 12) - growthRateArrayYoY = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 52) - break; - case xHeaderNameMonth: - growthRateArrayWoW = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 0) - growthRateArrayMoM = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 1) - growthRateArrayQoQ = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 3) - growthRateArrayYoY = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 12) - break; - case xHeaderNameQuarter: - growthRateArrayWoW = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 0) - growthRateArrayMoM = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 0) - growthRateArrayQoQ = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 1) - growthRateArrayYoY = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 4) - break; - case xHeaderNameYear: - growthRateArrayWoW = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 0) - growthRateArrayMoM = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 0) - growthRateArrayQoQ = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 0) - growthRateArrayYoY = calculateGrowthVsNPeriodAgo(dataRecordsSorted1D, 1) - break; - } - - var measureArray = []; - var dataHighChartsMovingWindowAvgLine = []; - - if (dataHighCharts.length > 7) { - dataHighCharts.map((d) => { measureArray.push(d[1]) }); - var measureArrayMovingWindowAvg = movingAverage(measureArray,config.moving_average_window).slice(config.moving_average_window-1, -1); - dataHighCharts.map((e, i) => { dataHighChartsMovingWindowAvgLine.push([e[0],measureArrayMovingWindowAvg[i]]) }); - } - - return { - 'measureMetaInfoValue': measureMetaInfoValue - , 'chartTitle': chartTitle - , 'xHeaderName': xHeaderName - , 'asOfDateValue': asOfDateValue - , 'asOfDate': asOfDate - , 'growthRateArrayWoW': growthRateArrayWoW - , 'growthRateArrayMoM': growthRateArrayMoM - , 'growthRateArrayQoQ': growthRateArrayQoQ - , 'growthRateArrayYoY': growthRateArrayYoY - , 'dataHighCharts': dataHighCharts - , 'dataHighChartsMovingWindowAvgLine': dataHighChartsMovingWindowAvgLine - , 'pointWidthResponsive': pointWidthResponsive - } - } - - var chartInputParameters = prepareChartInputParameters(data, queryResponse) - var measureMetaInfoValue = chartInputParameters.measureMetaInfoValue - var chartTitle = chartInputParameters.chartTitle - var xHeaderName = chartInputParameters.xHeaderName - var asOfDateValue = chartInputParameters.asOfDateValue - var asOfDate = chartInputParameters.asOfDate - var growthRateArrayWoW = chartInputParameters.growthRateArrayWoW - var growthRateArrayMoM = chartInputParameters.growthRateArrayMoM - var growthRateArrayQoQ = chartInputParameters.growthRateArrayQoQ - var growthRateArrayYoY = chartInputParameters.growthRateArrayYoY - var dataHighCharts = chartInputParameters.dataHighCharts - var dataHighChartsMovingWindowAvgLine = chartInputParameters.dataHighChartsMovingWindowAvgLine - var pointWidthResponsive = chartInputParameters.pointWidthResponsive - - Highcharts.chart("container", { - chart: { - zoomType: "x", - panning: "true", - panKey: "shift", - type: config.chart_type, - events: { - load: function() { - this.title.on('mouseover', e => { - myLabel = this.renderer.label(measureMetaInfoValue[0]['description'], e.x, e.y, 'rectangle') - .css({ color: '#FFFFFF'}) - .attr({ - fill: "#181818" - , 'font-family': "Circular Spotify Text, Helvetica, Arial, sans-serif", - }) - .add() - .toFront(); - }) - this.title.on('mouseout', e => { if (myLabel) { myLabel.destroy(); }}) - } - } - }, - title: { - text: - chartTitle - + '
' + '

by ' + (xHeaderName.split('.')[1]).split('_')[2] + '

' - + '
' - + '
' - + '
' - + '

' + config.prefix - + humanReadableNumber(percentageNumber(asOfDateValue.toFixed(4), config.is_percentage_number),config.is_human_readable) - + '' + ' ' +config.suffix + '', - align: "left", - }, - subtitle: { - text: - '

' + (growthRateArrayWoW[3] + growthRateArrayWoW[1]) + "

" + " WoW" + "; " - + '

' + (growthRateArrayMoM[3] + growthRateArrayMoM[1]) + "

" + " MoM" + ";
" - + '

' + (growthRateArrayQoQ[3] + growthRateArrayQoQ[1]) + "

" + " QoQ" + "; " - + '

' + (growthRateArrayYoY[3] + growthRateArrayYoY[1]) + "

" + " YoY" + ";
" - + '

as of ' + (xHeaderName.split('.')[1]).split('_')[2] + ": " + asOfDate + "

", - align: "left", - useHTML: false, - }, - xAxis: { - type: "datetime", - }, - yAxis: { - title: { - text: undefined, - }, - }, - legend: { - enabled: false, - }, - credits: { - enabled: true, - text: "Metrics Widget by Hong" - }, - exporting: { - enabled: false - }, - plotOptions: { - area: { - fillColor: { - linearGradient: [0, 0, 0, 300], - stops: [ - [0, Highcharts.getOptions().colors[0]], - [1, Highcharts.color(Highcharts.getOptions().colors[0]).setOpacity(0).get("rgba"),], - ], - }, - marker: { - enabled: false, - }, - lineWidth: 2, - states: { - hover: { - lineWidth: 1, - }, - }, - threshold: null, - }, - }, - - series: [ - { - id: "default", - name: chartTitle, - color: config.line_color, - data: dataHighCharts, - pointWidth: pointWidthResponsive, - lineWidth: 3, - step: config.is_step_line, - marker: { - enabled: config.is_enable_marker, - }, - }, - { - id: "movingWindowAvgLine", - name: "Moving " + config.moving_average_window + ((xHeaderName.split('.')[1]).split('_')[2]).charAt(0) +" Avg. " + chartTitle, - color: config.line_color_secondary, - data: dataHighChartsMovingWindowAvgLine, - pointWidth: pointWidthResponsive, - lineWidth: 2, - dashStyle: config.line_style_secondary, - marker: { - enabled: false, - }, - visible: config.is_show_moving_average_line, - }, - ], - tooltip: { - formatter: function() { - return this.series.name + ": " + humanReadableNumber(percentageNumber(parseFloat(this.y), config.is_percentage_number),config.is_human_readable) + '
on: ' + ((new Date(this.x)).toISOString()).split('T')[0] - }, - style: { - color: "#000000", - fontFamily: '"Google Sans", Roboto, "Noto Sans JP", "Noto Sans", "Noto Sans CJK KR", Helvetica, Arial, sans-serif' - } - }, - }); - done(); - }, -}; - -looker.plugins.visualizations.add(visObject); diff --git a/preview/big-number-trend/package-lock.json b/preview/big-number-trend/package-lock.json new file mode 100644 index 0000000..6527f63 --- /dev/null +++ b/preview/big-number-trend/package-lock.json @@ -0,0 +1,1328 @@ +{ + "name": "big-number-trend", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@discoveryjs/json-ext": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", + "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", + "dev": true + }, + "@tidyjs/tidy": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@tidyjs/tidy/-/tidy-2.4.4.tgz", + "integrity": "sha512-FGsIoajwkn/5DQCAgry5Vi8yh5vHkqm2k9hz1QmqpC5jY8HA/DI4Kt+x9RDc1tfWDOFq3AdqiD/y6YODN5Ii2Q==", + "requires": { + "d3-array": "^2.9.1", + "ts-toolbelt": "^8.0.7" + }, + "dependencies": { + "d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "requires": { + "internmap": "^1.0.0" + } + }, + "internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + } + } + }, + "@types/eslint": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.1.tgz", + "integrity": "sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "@types/node": { + "version": "16.11.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.13.tgz", + "integrity": "sha512-eUXZzHLHoZqj1frtUetNkUetYoJ6X55UmrVnFD4DMhVeAmwLjniZhtBmsRiemQh4uq4G3vUra/Ws/hs9vEvL3Q==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", + "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", + "dev": true + }, + "@webpack-cli/info": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", + "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", + "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", + "dev": true + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "acorn": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", + "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "browserslist": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001286", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz", + "integrity": "sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "d3": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.2.1.tgz", + "integrity": "sha512-E/5sP0aeK6YPXI/+4QlefvBFgmcyR2jYftId0PrYWv4Y/gW3c3thp1XG4rQzF0eUwV9tR1x05X5eWuJ6rQXvew==", + "requires": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "3", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + } + }, + "d3-array": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.1.tgz", + "integrity": "sha512-33qQ+ZoZlli19IFiQx4QEpf2CBEayMRzhlisJHSCsSUbDXv6ZishqS1x7uFVClKG4Wr7rZVHvaAttoLow6GqdQ==", + "requires": { + "internmap": "1 - 2" + } + }, + "d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==" + }, + "d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + } + }, + "d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "requires": { + "d3-path": "1 - 3" + } + }, + "d3-color": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.0.1.tgz", + "integrity": "sha512-6/SlHkDOBLyQSJ1j1Ghs82OIUXpKWlR0hCsw0XrLSQhuUPuCSmLQ1QPH98vpnQxMUQM2/gfAkUEWsupVpd9JGw==" + }, + "d3-contour": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-3.0.1.tgz", + "integrity": "sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ==", + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-delaunay": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", + "requires": { + "delaunator": "5" + } + }, + "d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" + }, + "d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + } + }, + "d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "requires": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + } + }, + "d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" + }, + "d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "requires": { + "d3-dsv": "1 - 3" + } + }, + "d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" + }, + "d3-geo": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", + "requires": { + "d3-array": "2.5.0 - 3" + } + }, + "d3-hierarchy": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.1.tgz", + "integrity": "sha512-LtAIu54UctRmhGKllleflmHalttH3zkfSi4NlKrTAoFKjC+AFBJohsCAdgCBYQwH0F8hIOGY89X1pPqAchlMkA==" + }, + "d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "requires": { + "d3-color": "1 - 3" + } + }, + "d3-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==" + }, + "d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==" + }, + "d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" + }, + "d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==" + }, + "d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "requires": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + } + }, + "d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "requires": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + } + }, + "d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" + }, + "d3-shape": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.0.1.tgz", + "integrity": "sha512-HNZNEQoDhuCrDWEc/BMbF/hKtzMZVoe64TvisFLDp2Iyj0UShB/E6/lBsLlJTfBMbYgftHj90cXJ0SEitlE6Xw==", + "requires": { + "d3-path": "1 - 3" + } + }, + "d3-time": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "requires": { + "d3-time": "1 - 3" + } + }, + "d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" + }, + "d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "requires": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + } + }, + "delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "requires": { + "robust-predicates": "^3.0.0" + } + }, + "electron-to-chromium": { + "version": "1.4.18", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.18.tgz", + "integrity": "sha512-i7nKjGGBE1+YUIbfLObA1EZPmN7J1ITEllbhusDk+KIk6V6gUxN9PFe36v+Sd+8Cg0k3cgUv9lQhQZalr8rggw==", + "dev": true + }, + "enhanced-resolve": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", + "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "highcharts": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-9.3.2.tgz", + "integrity": "sha512-I/48gNMvs3hZxZnPRUqLbnlrGZJJ7YPPVr1+fYeZ35p4pSZAOwTmAGbptrjBr7JlF52HmJH9zMbt/I4TPLu9Pg==" + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "import-local": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", + "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "jest-worker": { + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.5.tgz", + "integrity": "sha512-f2s8kEdy15cv9r7q4KkzGXvlY0JTcmCbMHZBfSQDwW77REr45IDWwd0lksDFeVHH2jJ5pqb90T77XscrjeGzzg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, + "requires": { + "mime-db": "1.51.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "numeral": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", + "integrity": "sha1-StCAk21EPCVhrtnyGX7//iX05QY=" + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" + }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "terser": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", + "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz", + "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==", + "dev": true, + "requires": { + "jest-worker": "^27.0.6", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + } + }, + "ts-toolbelt": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-8.4.0.tgz", + "integrity": "sha512-hnGJXIgC49ZuF5g5oDthoge8t4cvT0dYg2pYO5C6yV/HmUUy1koooU2U/5K2N+Uw++hcXQpJAToLRa+GRp28Sg==" + }, + "underscore": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", + "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webpack": { + "version": "5.65.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz", + "integrity": "sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.2" + } + }, + "webpack-cli": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", + "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.0", + "@webpack-cli/info": "^1.4.0", + "@webpack-cli/serve": "^1.6.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", + "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + } + } +} diff --git a/preview/big-number-trend/package.json b/preview/big-number-trend/package.json new file mode 100644 index 0000000..96b77de --- /dev/null +++ b/preview/big-number-trend/package.json @@ -0,0 +1,24 @@ +{ + "name": "big-number-trend", + "version": "1.0.0", + "description": "", + "private": true, + "scripts": { + "build": "webpack --config webpack.config.js" + }, + "author": "", + "license": "ISC", + "dependencies": { + "@tidyjs/tidy": "^2.4.4", + "d3": "^7.2.1", + "d3-array": "^3.1.1", + "highcharts": "^9.3.2", + "jquery": "^3.6.0", + "numeral": "^2.0.6", + "underscore": "^1.13.1" + }, + "devDependencies": { + "webpack": "^5.65.0", + "webpack-cli": "^4.9.1" + } +} diff --git a/preview/big-number-trend/src/main.js b/preview/big-number-trend/src/main.js new file mode 100644 index 0000000..87edd57 --- /dev/null +++ b/preview/big-number-trend/src/main.js @@ -0,0 +1,674 @@ +//Dependencies: +//https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js +//https://cdnjs.cloudflare.com/ajax/libs/d3/4.13.0/d3.min.js +//https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js +//https://cdnjs.cloudflare.com/ajax/libs/numeral.js/2.0.6/numeral.min.js +//https://cdnjs.cloudflare.com/ajax/libs/highcharts/9.2.1/highcharts.js +//https://cdnjs.cloudflare.com/ajax/libs/highcharts/9.2.1/modules/accessibility.min.js +//https://cdnjs.cloudflare.com/ajax/libs/highcharts/9.2.1/modules/data.min.js +//https://cdnjs.cloudflare.com/ajax/libs/highcharts/9.2.1/modules/export-data.min.js +//https://cdnjs.cloudflare.com/ajax/libs/highcharts/9.2.1/modules/exporting.min.js +//https://cdnjs.cloudflare.com/ajax/libs/highcharts/9.2.1/highcharts-more.min.js + +//https://cdn.jsdelivr.net/gh/hongkuiw/looker-viz-package/preview/big-number-trend/util.js +//https://cdn.jsdelivr.net/npm/d3-array@3.0.1/dist/d3-array.min.js +//https://www.unpkg.com/@tidyjs/tidy/dist/umd/tidy.min.js + +// ANCHOR: Global Input Parameters +// NOTE: this is the naming to follow in .lkml + +import * as utils from "./util.js"; +import * as d3 from "d3"; +import * as Highcharts from "highcharts"; + +const visObject = { + options: { + chart_type: { + type: "string", + display: "select", + label: "1. Select Line Chart Style", + default: "line", + values: [ + { Line: "line" }, + { Bar: "column" }, + { Spline: "spline" }, + { Area: "area" }, + ], + }, + is_enable_marker: { + type: "boolean", + label: "1.1. Toggle for Marker", + default: false, + }, + line_color: { + type: "string", + display: "color", + label: "2. Choose Primary Color", + default: "#3259F9", + }, + is_human_readable: { + type: "boolean", + label: "3. Toggle for Readable Number", + default: false, + }, + is_percentage_number: { + type: "boolean", + label: "4. Toggle for Percentage Number", + default: false, + }, + positive_is_bad: { + type: "boolean", + label: "5. Toggle for Positive Value is Bad or not?", + default: false, + }, + is_step_line: { + type: "boolean", + label: "6. Toggle for Step for Line Chart", + default: false, + }, + is_show_moving_average_line: { + type: "boolean", + label: "7. Toggle for Moving Average Line?", + default: false, + }, + line_color_secondary: { + type: "string", + display: "color", + label: "7.1 Choose Secondary Color", + default: "#85E0FF", + }, + line_style_secondary: { + type: "string", + display: "select", + label: "7.2 Choose Secondary Line Style", + default: "Solid", + values: [{ Solid: "Solid" }, { Dash: "Dash" }, { Dot: "Dot" }], + }, + moving_average_window: { + type: "string", + display: "select", + label: "7.3 Select window size for Moving Average Line", + default: "7", + values: [ + { 3: "3" }, + { 4: "4" }, + { 6: "6" }, + { 7: "7" }, + { 14: "14" }, + { 30: "30" }, + ], + }, + prefix: { + type: "string", + display: "text", + label: "8. Prefix of Metrics", + default: " ", + }, + suffix: { + type: "string", + display: "text", + label: "9. Suffix of Metrics", + default: " ", + }, + }, + create: function (element, config) { + element.innerHTML = ` + +
+
+
+ `; + }, + updateAsync: function (data, element, config, queryResponse, details, done) { + this.clearErrors(); + var errorMessage = ` + Instructions🧭 + This viz package requires + 1 dimension in Date ISO format (yyyy-mm-dd) + e.g.: 2021-01-03 + 1 measure + Please contact Hong Wu(@hongkuiw) if you still facing errors + `; + + if ( + queryResponse.fields.dimensions.length == 0 || + (queryResponse.fields.dimensions.length == 1 && + queryResponse.fields.measures.length > 1) + ) { + console.error(errorMessage); + return; + } + + function prepareChartInputParameters(data, queryResponse) { + var dataRecords = utils.generateDataRecords(data); + var highchartsFigureWidth = + document.getElementsByClassName("highcharts-figure")[0].offsetWidth; + var pointWidthResponsive = parseInt( + (highchartsFigureWidth / dataRecords.length) * 0.8 + ); + + var viewName = + queryResponse.fields.dimensions.length > 0 + ? queryResponse.fields.dimensions[0].view + : queryResponse.fields.measures[0].view; + var measureName = queryResponse.fields.measures[0].name; + measureMetaInfoValue = utils.getFieldMetaInfoValue( + queryResponse, + measureName + ); + + var xHeaderName = queryResponse.fields.dimensions[0].name; + //BUG: There has to be a better way to do this to know which dimension is the date field and what date type + var xHeaderNameRoot = xHeaderName.split(".")[1].split("_"); + xHeaderNameRoot.pop(); + xHeaderNameRoot = xHeaderNameRoot.join("_"); + var xHeaderNameDate = viewName + "." + xHeaderNameRoot + "_date"; + var xHeaderNameMonth = viewName + "." + xHeaderNameRoot + "_month"; + var xHeaderNameQuarter = viewName + "." + xHeaderNameRoot + "_quarter"; + var xHeaderNameWeek = viewName + "." + xHeaderNameRoot + "_week"; + var xHeaderNameYear = viewName + "." + xHeaderNameRoot + "_year"; + switch (xHeaderName) { + case xHeaderNameDate: + dataRecords.forEach((d) => { + d[xHeaderName] = Date.parse(d[xHeaderNameDate]); + }); + break; + case xHeaderNameWeek: + dataRecords.forEach((d) => { + d[xHeaderName] = Date.parse(d[xHeaderNameWeek]); + }); + break; + case xHeaderNameMonth: + dataRecords.forEach((d) => { + d[xHeaderName] = Date.parse(d[xHeaderNameMonth] + "-01"); + }); + break; + case xHeaderNameQuarter: + dataRecords.forEach((d) => { + d[xHeaderName] = Date.parse(d[xHeaderNameQuarter] + "-01"); + }); + break; + case xHeaderNameYear: + dataRecords.forEach((d) => { + d[xHeaderName] = Date.parse(d[xHeaderNameYear] + "-01-01"); + }); + break; + } + + var dataRecordsSorted = dataRecords + .slice() + .sort((a, b) => d3.descending(a.xHeaderName, b.xHeaderName)); + dataHighCharts = utils.generateHighChartsDataSeries(dataRecordsSorted); + var chartTitle = queryResponse.fields.measures[0].label_short; + var asOfDate = data[0][xHeaderName]["value"]; + var asOfDateValue = dataRecordsSorted[0][measureName]; + + var dataRecordsSorted1D = []; + dataHighCharts.forEach((d) => { + dataRecordsSorted1D.push(d[1]); + }); + + switch (xHeaderName) { + case xHeaderNameDate: + growthRateArrayWoW = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 7 + ); + growthRateArrayMoM = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 30 + ); + growthRateArrayQoQ = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 90 + ); + growthRateArrayYoY = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 365 + ); + break; + case xHeaderNameWeek: + growthRateArrayWoW = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 1 + ); + growthRateArrayMoM = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 4 + ); + growthRateArrayQoQ = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 12 + ); + growthRateArrayYoY = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 52 + ); + break; + case xHeaderNameMonth: + growthRateArrayWoW = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 0 + ); + growthRateArrayMoM = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 1 + ); + growthRateArrayQoQ = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 3 + ); + growthRateArrayYoY = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 12 + ); + break; + case xHeaderNameQuarter: + growthRateArrayWoW = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 0 + ); + growthRateArrayMoM = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 0 + ); + growthRateArrayQoQ = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 1 + ); + growthRateArrayYoY = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 4 + ); + break; + case xHeaderNameYear: + growthRateArrayWoW = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 0 + ); + growthRateArrayMoM = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 0 + ); + growthRateArrayQoQ = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 0 + ); + growthRateArrayYoY = utils.calculateGrowthVsNPeriodAgo( + dataRecordsSorted1D, + 1 + ); + break; + } + + var measureArray = []; + var dataHighChartsMovingWindowAvgLine = []; + + if (dataHighCharts.length > 7) { + dataHighCharts.map((d) => { + measureArray.push(d[1]); + }); + var measureArrayMovingWindowAvg = utils + .movingAverage(measureArray, config.moving_average_window) + .slice(config.moving_average_window - 1, -1); + dataHighCharts.map((e, i) => { + dataHighChartsMovingWindowAvgLine.push([ + e[0], + measureArrayMovingWindowAvg[i], + ]); + }); + } + + return { + measureMetaInfoValue: measureMetaInfoValue, + chartTitle: chartTitle, + xHeaderName: xHeaderName, + asOfDateValue: asOfDateValue, + asOfDate: asOfDate, + growthRateArrayWoW: growthRateArrayWoW, + growthRateArrayMoM: growthRateArrayMoM, + growthRateArrayQoQ: growthRateArrayQoQ, + growthRateArrayYoY: growthRateArrayYoY, + dataHighCharts: dataHighCharts, + dataHighChartsMovingWindowAvgLine: dataHighChartsMovingWindowAvgLine, + pointWidthResponsive: pointWidthResponsive, + }; + } + + var chartInputParameters = prepareChartInputParameters(data, queryResponse); + var measureMetaInfoValue = chartInputParameters.measureMetaInfoValue; + var chartTitle = chartInputParameters.chartTitle; + var xHeaderName = chartInputParameters.xHeaderName; + var asOfDateValue = chartInputParameters.asOfDateValue; + var asOfDate = chartInputParameters.asOfDate; + var growthRateArrayWoW = chartInputParameters.growthRateArrayWoW; + var growthRateArrayMoM = chartInputParameters.growthRateArrayMoM; + var growthRateArrayQoQ = chartInputParameters.growthRateArrayQoQ; + var growthRateArrayYoY = chartInputParameters.growthRateArrayYoY; + var dataHighCharts = chartInputParameters.dataHighCharts; + var dataHighChartsMovingWindowAvgLine = + chartInputParameters.dataHighChartsMovingWindowAvgLine; + var pointWidthResponsive = chartInputParameters.pointWidthResponsive; + + Highcharts.chart("container", { + chart: { + zoomType: "x", + panning: "true", + panKey: "shift", + type: config.chart_type, + events: { + load: function () { + let myLabel; + this.title.on("mouseover", (e) => { + myLabel = this.renderer + .label( + measureMetaInfoValue[0]["description"], + e.x, + e.y, + "rectangle" + ) + .css({ color: "#FFFFFF" }) + .attr({ + fill: "#181818", + "font-family": + "Circular Spotify Text, Helvetica, Arial, sans-serif", + }) + .add() + .toFront(); + }); + this.title.on("mouseout", (e) => { + if (myLabel) { + myLabel.destroy(); + } + }); + }, + }, + }, + title: { + text: + chartTitle + + "
" + + '

by ' + + xHeaderName.split(".")[1].split("_")[1] + + "

" + + "
" + + "
" + + "
" + + '

' + + config.prefix + + utils.humanReadableNumber( + utils.percentageNumber( + asOfDateValue.toFixed(4), + config.is_percentage_number + ), + config.is_human_readable + ) + + '' + + " " + + config.suffix + + "", + align: "left", + }, + subtitle: { + text: + '

' + + (growthRateArrayWoW[3] + growthRateArrayWoW[1]) + + "

" + + " WoW" + + "; " + + '

' + + (growthRateArrayMoM[3] + growthRateArrayMoM[1]) + + "

" + + " MoM" + + ";
" + + '

' + + (growthRateArrayQoQ[3] + growthRateArrayQoQ[1]) + + "

" + + " QoQ" + + "; " + + '

' + + (growthRateArrayYoY[3] + growthRateArrayYoY[1]) + + "

" + + " YoY" + + ";
" + + '

as of ' + + xHeaderName.split(".")[1].split("_")[1] + + ": " + + asOfDate + + "

", + align: "left", + useHTML: false, + }, + xAxis: { + type: "datetime", + }, + yAxis: { + title: { + text: undefined, + }, + }, + legend: { + enabled: false, + }, + credits: { + enabled: true, + text: "Metrics Widget by Hong", + }, + exporting: { + enabled: false, + }, + plotOptions: { + area: { + fillColor: { + linearGradient: [0, 0, 0, 300], + stops: [ + [0, Highcharts.getOptions().colors[0]], + [ + 1, + Highcharts.color(Highcharts.getOptions().colors[0]) + .setOpacity(0) + .get("rgba"), + ], + ], + }, + marker: { + enabled: false, + }, + lineWidth: 2, + states: { + hover: { + lineWidth: 1, + }, + }, + threshold: null, + }, + }, + + series: [ + { + id: "default", + name: chartTitle, + color: config.line_color, + data: dataHighCharts, + pointWidth: pointWidthResponsive, + lineWidth: 3, + step: config.is_step_line, + marker: { + enabled: config.is_enable_marker, + }, + }, + { + id: "movingWindowAvgLine", + name: + "Moving " + + config.moving_average_window + + xHeaderName.split(".")[1].split("_")[1].charAt(0) + + " Avg. " + + chartTitle, + color: config.line_color_secondary, + data: dataHighChartsMovingWindowAvgLine, + pointWidth: pointWidthResponsive, + lineWidth: 2, + dashStyle: config.line_style_secondary, + marker: { + enabled: false, + }, + visible: config.is_show_moving_average_line, + }, + ], + tooltip: { + formatter: function () { + return ( + this.series.name + + ": " + + utils.humanReadableNumber( + utils.percentageNumber( + parseFloat(this.y), + config.is_percentage_number + ), + config.is_human_readable + ) + + "
on: " + + new Date(this.x).toISOString().split("T")[0] + ); + }, + style: { + color: "#000000", + fontFamily: + '"Google Sans", Roboto, "Noto Sans JP", "Noto Sans", "Noto Sans CJK KR", Helvetica, Arial, sans-serif', + }, + }, + }); + done(); + }, +}; + +looker.plugins.visualizations.add(visObject); diff --git a/preview/big-number-trend/src/util.js b/preview/big-number-trend/src/util.js new file mode 100644 index 0000000..1c8154c --- /dev/null +++ b/preview/big-number-trend/src/util.js @@ -0,0 +1,112 @@ +import * as numeral from "numeral"; + +export function generateDataRecords(dataIndexFormat) { + var dataRecords = []; + dataIndexFormat.forEach((d) => { + var obj = {}; + var headerName = Object.keys(d); + headerName.forEach((h) => { + obj[h] = d[h].value; + }); + dataRecords.push(obj); + }); + return dataRecords; +} + +export function generateHighChartsDataSeries(dataRecordsInput) { + var dataHighCharts = []; + dataRecordsInput.forEach(function (d) { + var rowValueOnly = []; + var columnNames = Object.keys(d); + columnNames.forEach(function (c) { + rowValueOnly.push(d[c]); + }); + dataHighCharts.push(rowValueOnly); + }); + return dataHighCharts; +} + +export function calculateGrowthVsNPeriodAgo( + inputDataArraySortBasedOnTimeDescending, + nPeriodAgo +) { + if ( + inputDataArraySortBasedOnTimeDescending.length > nPeriodAgo && + nPeriodAgo != 0 + ) { + var valueCurrent = parseFloat(inputDataArraySortBasedOnTimeDescending[0]); + var valueNPeriodAgo = parseFloat( + inputDataArraySortBasedOnTimeDescending[nPeriodAgo] + ); + var valueGrowth = valueCurrent - valueNPeriodAgo; + var valueGrowthFormatted = "(" + numeral(valueGrowth).format("0.00a") + ")"; + var valueGrowthRate = + valueNPeriodAgo != 0 ? valueGrowth / valueNPeriodAgo : 1.0; + var valueGrowthRateFormatted = + (valueGrowth < 0 ? "⬇" : "⬆") + (valueGrowthRate * 100).toFixed(2) + "%"; + return [ + valueGrowth, + valueGrowthFormatted, + valueGrowthRate, + valueGrowthRateFormatted, + ]; + } else { + return [NaN, NaN, NaN, NaN]; + } +} + +export function movingAverage(values, N) { + let i = 0; + let sum = 0; + const means = new Float64Array(values.length).fill(NaN); + for (let n = Math.min(N - 1, values.length); i < n; ++i) { + sum += values[i]; + } + for (let n = values.length; i < n; ++i) { + sum += values[i]; + means[i] = sum / N; + sum -= values[i - N + 1]; + } + return means; +} + +export function dynamicColor(value, positive_is_bad) { + if (positive_is_bad == false) { + if (value <= 0) { + return "#FF5722"; + } else { + return "#1db954"; + } + } else { + if (value <= 0) { + return "#1db954"; + } else { + return "#FF5722"; + } + } +} + +export function humanReadableNumber(value, is_human_readable) { + if (is_human_readable == true) { + return numeral(value).format("0.00a"); + } else { + return value; + } +} + +export function percentageNumber(value, is_percentage_number) { + if (is_percentage_number == true) { + return numeral(value).format("0.00%"); + } else { + return value; + } +} + +export function getFieldMetaInfoValue(queryResponse, fieldName) { + const queryResponseFieldsMeasures = queryResponse.fields.measures; + let f_measure = queryResponseFieldsMeasures.filter((d) => { + return d.name == fieldName; + }); + + return f_measure; +} diff --git a/preview/big-number-trend/util.js b/preview/big-number-trend/util.js deleted file mode 100644 index a8e0bfa..0000000 --- a/preview/big-number-trend/util.js +++ /dev/null @@ -1,95 +0,0 @@ -var generateDataRecords = (dataIndexFormat) => { - var dataRecords = [] - dataIndexFormat.forEach(d=>{ - obj = {} - var headerName = Object.keys(d); - headerName.forEach(h=>{ - obj[h] = d[h].value - }); - dataRecords.push(obj) - }) - return dataRecords -} - -function generateHighChartsDataSeries(dataRecordsInput) { - dataHighCharts = [] - dataRecordsInput.forEach(function(d) { - var rowValueOnly = [] - var columnNames = Object.keys(d); - columnNames.forEach(function(c) { - rowValueOnly.push(d[c]) - }) - dataHighCharts.push(rowValueOnly) - }); - return dataHighCharts; -} - -var calculateGrowthVsNPeriodAgo = (inputDataArraySortBasedOnTimeDescending, nPeriodAgo) => { - if (inputDataArraySortBasedOnTimeDescending.length > nPeriodAgo && nPeriodAgo != 0) { - var valueCurrent = parseFloat(inputDataArraySortBasedOnTimeDescending[0]) - var valueNPeriodAgo = parseFloat(inputDataArraySortBasedOnTimeDescending[nPeriodAgo]) - var valueGrowth = valueCurrent - valueNPeriodAgo - var valueGrowthFormatted = "(" + numeral(valueGrowth).format('0.00a') + ")" - var valueGrowthRate = valueNPeriodAgo != 0 ? valueGrowth / valueNPeriodAgo : 1.0 - var valueGrowthRateFormatted = (valueGrowth < 0 ? "⬇" : "⬆") + (valueGrowthRate*100).toFixed(2) + "%" - return [valueGrowth, valueGrowthFormatted, valueGrowthRate, valueGrowthRateFormatted] - } else { - return [NaN, NaN, NaN, NaN] - } -} - -function movingAverage(values, N) { - let i = 0; - let sum = 0; - const means = new Float64Array(values.length).fill(NaN); - for (let n = Math.min(N - 1, values.length); i < n; ++i) { - sum += values[i]; - } - for (let n = values.length; i < n; ++i) { - sum += values[i]; - means[i] = sum / N; - sum -= values[i - N + 1]; - } - return means; -} - -var dynamicColor = (value, positive_is_bad) => { - if (positive_is_bad == false) { - if (value <= 0) { - return "#FF5722"; - } else { - return "#1db954"; - } - } else { - if (value <= 0) { - return "#1db954"; - } else { - return "#FF5722"; - } - } -} - -function humanReadableNumber(value, is_human_readable) { - if (is_human_readable == true) { - return numeral(value).format("0.00a") - } else { - return value - } -} - -function percentageNumber(value, is_percentage_number) { - if (is_percentage_number == true) { - return numeral(value).format("0.00%") - } else { - return value - } -} - -function getFieldMetaInfoValue(queryResponse, fieldName) { - const queryResponseFieldsMeasures = queryResponse.fields.measures - f_measure = queryResponseFieldsMeasures.filter(d=>{ - return d.name == fieldName - }) - - return f_measure -} \ No newline at end of file diff --git a/preview/big-number-trend/webpack.config.js b/preview/big-number-trend/webpack.config.js new file mode 100644 index 0000000..f1dade3 --- /dev/null +++ b/preview/big-number-trend/webpack.config.js @@ -0,0 +1,17 @@ +var path = require("path"); + +var webpackConfig = { + mode: "production", + entry: { + big_number_trend: "./src/main.js", + }, + output: { + filename: "[name].js", + path: __dirname, + library: "[name]", + libraryTarget: "umd", + }, + stats: {}, +}; + +module.exports = webpackConfig;