{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"jquery\"","webpack:///external \"lodash\"","webpack:///external \"app/plugins/sdk\"","webpack:///external \"app/core/utils/kbn\"","webpack:///external \"app/core/time_series\"","webpack:///external \"angular\"","webpack:///./lib/perfect-scrollbar.min.js","webpack:///./lib/jquery.flot.pie.js","webpack:///./lib/jquery.flot.time.js","webpack:///../node_modules/tslib/tslib.es6.js","webpack:///./rendering.ts","webpack:///./legend.ts","webpack:///./piechart_ctrl.ts","webpack:///./module.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_EXTERNAL_MODULE__0__","__WEBPACK_EXTERNAL_MODULE__1__","__WEBPACK_EXTERNAL_MODULE__2__","__WEBPACK_EXTERNAL_MODULE__3__","__WEBPACK_EXTERNAL_MODULE__4__","__WEBPACK_EXTERNAL_MODULE__5__","e","define","this","getComputedStyle","style","document","createElement","className","v","Error","remove","parentNode","removeChild","Array","filter","children","element","classList","state","scrolling","contains","clearTimeout","w","add","setTimeout","isAlive","settings","scrollingThreshold","a","window","CustomEvent","createEvent","initCustomEvent","u","parseInt","f","minScrollbarLength","Math","max","maxScrollbarLength","min","b","width","railXWidth","isRtl","left","negativeScrollAdjustment","scrollLeft","containerWidth","contentWidth","isScrollbarXUsingBottom","bottom","scrollbarXBottom","scrollTop","top","scrollbarXTop","scrollbarXRail","height","railYHeight","isScrollbarYUsingRight","right","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarYRail","scrollbarX","scrollbarXLeft","scrollbarXWidth","railBorderXWidth","scrollbarY","scrollbarYTop","scrollbarYHeight","railBorderYWidth","g","R","stopPropagation","preventDefault","event","unbind","ownerDocument","h","once","Element","matches","webkitMatchesSelector","msMatchesSelector","main","thumb","rail","consuming","focus","active","x","y","Y","handlers","X","isEmpty","configurable","push","addEventListener","removeEventListener","unbindAll","keys","every","length","defineProperties","W","eventElements","eventElement","splice","indexOf","forEach","reach","dispatchEvent","L","documentElement","DocumentTouch","navigator","msMaxTouchPoints","clientWidth","containerHeight","clientHeight","scrollWidth","contentHeight","scrollHeight","appendChild","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXMarginWidth","railXRatio","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYMarginHeight","railYRatio","T","pageY","pageYOffset","getBoundingClientRect","pageX","pageXOffset","keyboard","isDefaultPrevented","defaultPrevented","activeElement","tagName","contentDocument","shadowRoot","which","metaKey","altKey","shiftKey","wheelPropagation","wheel","querySelector","overflow","overflowX","overflowY","join","match","deltaX","deltaY","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","target","useBothWheelAxes","wheelSpeed","ctrlKey","onwheel","onmousewheel","touch","abs","stop","swipePropagation","prevent","scrollY","targetTouches","pointerType","buttons","MSPOINTER_TYPE_MOUSE","Date","getTime","clearInterval","swipeEasing","setInterval","isInitialized","PointerEvent","MSPointerEvent","H","nodeName","direction","isNegativeScroll","setAttribute","isNaN","borderLeftWidth","borderRightWidth","display","marginLeft","marginRight","paddingLeft","paddingRight","borderTopWidth","borderBottomWidth","marginTop","marginBottom","lastScrollTop","lastScrollLeft","onScroll","update","destroy","removePsClasses","split","$","options","jQuery","series","pie","show","radius","innerRadius","startAngle","tilt","shadow","alpha","offset","stroke","color","label","formatter","slice","round","percent","background","opacity","threshold","combine","highlight","plot","plugins","init","canvas","maxRadius","centerLeft","centerTop","processed","ctx","highlights","processDatapoints","datapoints","getCanvas","parent","getOptions","setData","data","total","combined","numCombined","newdata","isArray","parseFloat","isFinite","extend","angle","PI","getData","draw","newCtx","canvasWidth","getPlaceholder","canvasHeight","legendWidth","legend","position","slices","attempts","clear","drawShadow","drawPie","prepend","setSeries","insertLegend","clearRect","shadowLeft","shadowTop","save","translate","globalAlpha","fillStyle","scale","beginPath","arc","fill","restore","currentAngle","drawSlice","lineWidth","drawDonutHole","drawLabel","index","text","lf","labelFormatter","plf","halfAngle","cos","sin","html","append","labelTop","labelLeft","css","pos","insertBefore","drawLabels","strokeStyle","lineJoin","moveTo","closePath","layer","globalCompositeOperation","isPointInPoly","poly","pt","j","onMouseMove","triggerClickHoverEvent","onClick","eventname","item","mouseX","mouseY","isPointInPath","datapoint","dataIndex","seriesIndex","findNearbySlice","grid","autoHighlight","auto","unhighlight","indexOfHighlight","triggerRedrawOverlay","trigger","hooks","processOptions","bindEvents","eventHolder","hoverable","mousemove","clickable","click","drawOverlay","octx","version","floorInBase","base","floor","formatDate","fmt","monthNames","dayNames","strftime","hours12","leftPad","pad","escape","hours","getHours","isAM","charAt","getDay","getMonth","getDate","getMinutes","getSeconds","getFullYear","makeUtcWrapper","addProxyMethod","sourceObj","sourceMethod","targetObj","targetMethod","apply","arguments","utc","date","undefined","props","dateGenerator","ts","opts","timezone","timezoneJS","setTimezone","setTime","timeUnitSize","baseSpec","specMonths","concat","specQuarters","each","getAxes","axisName","axis","tickGenerator","ticks","minSize","spec","tickSize","minTickSize","delta","size","unit","magn","pow","log","year","LN10","norm","step","setSeconds","setMinutes","setHours","setMonth","setFullYear","setMilliseconds","minute","hour","day","setDate","month","quarter","prev","carry","Number","NaN","start","end","tickFormatter","timeformat","useQuarters","span","suffix","twelveHourClock","hourCode","xaxis","extendStatics","setPrototypeOf","__proto__","scope","elem","attrs","ctrl","panel","find","$tooltip","sliceData","decimal","fontSize","percentageDecimals","values","percentage","formatValue","toFixed","addPieChart","panelHeight","legendType","breakPoint","getLegendHeight","plotCanvas","plotCss","margin","paddingBottom","strokeWidth","pieType","hiddenSeries","sort","valueName","sortDesc","legendData","body","formatted","place_tt","detach","render","incrementRenderCounter","renderingCompleted","events","on","directive","popoverSrv","$timeout","link","seriesList","dataList","legendScrollbar","$container","firstRender","getSeriesIndexForElement","el","parents","toggleSeries","currentTarget","seriesInfo","scrollPosition","sortLegend","stat","openColorSelector","template","openOn","classNames","model","autoClose","toggleAxis","colorSelected","changeSeriesColor","generateLegendItem","showValues","tableLayout","$on","empty","sideWidth","ieWidth","legendHeader","toggleClass","header","statName","cssClass","getLegendHeaderHtml","getLegendPercentageHtml","stats","combineNum","combineVal","seriesElements","seriesData","hideEmpty","allIsNull","_el","_max","_key","tbodyElem","$scope","$injector","$rootScope","panelDefaults","links","datasource","interval","targets","cacheTimeout","nullPointMode","aliasColors","format","defaults","onRender","onDataReceived","onDataError","onInitEditMode","setLegendWidthForLegacyBrowser","__","constructor","addEditorTab","unitFormats","getUnitFormats","setUnitFormat","subItem","alias","parseSeries","map","serie","colors","seriesHandler","flotpairs","getFlotPairs","getDecimalsForValue","isNumber","decimals","scaledDecimals","dec","result","decimalInfo","formatFunc","valueFormats","onLegendTypeChanged","MSInputMethodContext","documentMode","templateUrl","dark","light"],"mappings":"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","file":"module.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","/*!\n * perfect-scrollbar v1.2.0\n * (c) 2017 Hyunje Jun\n * @license MIT\n */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.PerfectScrollbar=e()}(this,function(){\"use strict\";function t(t){return getComputedStyle(t)}function e(t,e){for(var i in e){var n=e[i];\"number\"==typeof n&&(n+=\"px\"),t.style[i]=n}return t}function i(t){var e=document.createElement(\"div\");return e.className=t,e}function n(t,e){if(!v)throw new Error(\"No element matching method supported\");return v.call(t,e)}function r(t){t.remove?t.remove():t.parentNode&&t.parentNode.removeChild(t)}function l(t,e){return Array.prototype.filter.call(t.children,function(t){return n(t,e)})}function o(t,e){var i=t.element.classList,n=m.state.scrolling(e);i.contains(n)?clearTimeout(w[e]):i.add(n)}function s(t,e){w[e]=setTimeout(function(){return t.isAlive&&t.element.classList.remove(m.state.scrolling(e))},t.settings.scrollingThreshold)}function a(t,e){o(t,e),s(t,e)}function c(t){if(\"function\"==typeof window.CustomEvent)return new CustomEvent(t);var e=document.createEvent(\"CustomEvent\");return e.initCustomEvent(t,!1,!1,void 0),e}function h(t,e,i,n,r){var l=i[0],o=i[1],s=i[2],h=i[3],u=i[4],d=i[5];void 0===n&&(n=!0),void 0===r&&(r=!1);var p=t.element;t.reach[h]=null,p[s]<1&&(t.reach[h]=\"start\"),p[s]>t[l]-t[o]-1&&(t.reach[h]=\"end\"),e&&(p.dispatchEvent(c(\"ps-scroll-\"+h)),e<0?p.dispatchEvent(c(\"ps-scroll-\"+u)):e>0&&p.dispatchEvent(c(\"ps-scroll-\"+d)),n&&a(t,h)),t.reach[h]&&(e||r)&&p.dispatchEvent(c(\"ps-\"+h+\"-reach-\"+t.reach[h]))}function u(t){return parseInt(t,10)||0}function d(t){return n(t,\"input,[contenteditable]\")||n(t,\"select,[contenteditable]\")||n(t,\"textarea,[contenteditable]\")||n(t,\"button,[contenteditable]\")}function p(e){var i=t(e);return u(i.width)+u(i.paddingLeft)+u(i.paddingRight)+u(i.borderLeftWidth)+u(i.borderRightWidth)}function f(t,e){return t.settings.minScrollbarLength&&(e=Math.max(e,t.settings.minScrollbarLength)),t.settings.maxScrollbarLength&&(e=Math.min(e,t.settings.maxScrollbarLength)),e}function b(t,i){var n={width:i.railXWidth};i.isRtl?n.left=i.negativeScrollAdjustment+t.scrollLeft+i.containerWidth-i.contentWidth:n.left=t.scrollLeft,i.isScrollbarXUsingBottom?n.bottom=i.scrollbarXBottom-t.scrollTop:n.top=i.scrollbarXTop+t.scrollTop,e(i.scrollbarXRail,n);var r={top:t.scrollTop,height:i.railYHeight};i.isScrollbarYUsingRight?i.isRtl?r.right=i.contentWidth-(i.negativeScrollAdjustment+t.scrollLeft)-i.scrollbarYRight-i.scrollbarYOuterWidth:r.right=i.scrollbarYRight-t.scrollLeft:i.isRtl?r.left=i.negativeScrollAdjustment+t.scrollLeft+2*i.containerWidth-i.contentWidth-i.scrollbarYLeft-i.scrollbarYOuterWidth:r.left=i.scrollbarYLeft+t.scrollLeft,e(i.scrollbarYRail,r),e(i.scrollbarX,{left:i.scrollbarXLeft,width:i.scrollbarXWidth-i.railBorderXWidth}),e(i.scrollbarY,{top:i.scrollbarYTop,height:i.scrollbarYHeight-i.railBorderYWidth})}function g(t,e){function i(e){f[d]=b+v*(e[a]-g),o(t,p),R(t),e.stopPropagation(),e.preventDefault()}function n(){s(t,p),t.event.unbind(t.ownerDocument,\"mousemove\",i)}var r=e[0],l=e[1],a=e[2],c=e[3],h=e[4],u=e[5],d=e[6],p=e[7],f=t.element,b=null,g=null,v=null;t.event.bind(t[h],\"mousedown\",function(e){b=f[d],g=e[a],v=(t[l]-t[r])/(t[c]-t[u]),t.event.bind(t.ownerDocument,\"mousemove\",i),t.event.once(t.ownerDocument,\"mouseup\",n),e.stopPropagation(),e.preventDefault()})}var v=Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.msMatchesSelector,m={main:\"ps\",element:{thumb:function(t){return\"ps__thumb-\"+t},rail:function(t){return\"ps__rail-\"+t},consuming:\"ps__child--consume\"},state:{focus:\"ps--focus\",active:function(t){return\"ps--active-\"+t},scrolling:function(t){return\"ps--scrolling-\"+t}}},w={x:null,y:null},Y=function(t){this.element=t,this.handlers={}},X={isEmpty:{configurable:!0}};Y.prototype.bind=function(t,e){void 0===this.handlers[t]&&(this.handlers[t]=[]),this.handlers[t].push(e),this.element.addEventListener(t,e,!1)},Y.prototype.unbind=function(t,e){var i=this;this.handlers[t]=this.handlers[t].filter(function(n){return!(!e||n===e)||(i.element.removeEventListener(t,n,!1),!1)})},Y.prototype.unbindAll=function(){var t=this;for(var e in t.handlers)t.unbind(e)},X.isEmpty.get=function(){var t=this;return Object.keys(this.handlers).every(function(e){return 0===t.handlers[e].length})},Object.defineProperties(Y.prototype,X);var W=function(){this.eventElements=[]};W.prototype.eventElement=function(t){var e=this.eventElements.filter(function(e){return e.element===t})[0];return e||(e=new Y(t),this.eventElements.push(e)),e},W.prototype.bind=function(t,e,i){this.eventElement(t).bind(e,i)},W.prototype.unbind=function(t,e,i){var n=this.eventElement(t);n.unbind(e,i),n.isEmpty&&this.eventElements.splice(this.eventElements.indexOf(n),1)},W.prototype.unbindAll=function(){this.eventElements.forEach(function(t){return t.unbindAll()}),this.eventElements=[]},W.prototype.once=function(t,e,i){var n=this.eventElement(t),r=function(t){n.unbind(e,r),i(t)};n.bind(e,r)};var y=function(t,e,i,n,r){void 0===n&&(n=!0),void 0===r&&(r=!1);var l;if(\"top\"===e)l=[\"contentHeight\",\"containerHeight\",\"scrollTop\",\"y\",\"up\",\"down\"];else{if(\"left\"!==e)throw new Error(\"A proper axis should be provided\");l=[\"contentWidth\",\"containerWidth\",\"scrollLeft\",\"x\",\"left\",\"right\"]}h(t,i,l,n,r)},L={isWebKit:document&&\"WebkitAppearance\"in document.documentElement.style,supportsTouch:window&&(\"ontouchstart\"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),supportsIePointer:navigator&&navigator.msMaxTouchPoints},R=function(t){var e=t.element;t.containerWidth=e.clientWidth,t.containerHeight=e.clientHeight,t.contentWidth=e.scrollWidth,t.contentHeight=e.scrollHeight,e.contains(t.scrollbarXRail)||(l(e,m.element.rail(\"x\")).forEach(function(t){return r(t)}),e.appendChild(t.scrollbarXRail)),e.contains(t.scrollbarYRail)||(l(e,m.element.rail(\"y\")).forEach(function(t){return r(t)}),e.appendChild(t.scrollbarYRail)),!t.settings.suppressScrollX&&t.containerWidth+t.settings.scrollXMarginOffset<t.contentWidth?(t.scrollbarXActive=!0,t.railXWidth=t.containerWidth-t.railXMarginWidth,t.railXRatio=t.containerWidth/t.railXWidth,t.scrollbarXWidth=f(t,u(t.railXWidth*t.containerWidth/t.contentWidth)),t.scrollbarXLeft=u((t.negativeScrollAdjustment+e.scrollLeft)*(t.railXWidth-t.scrollbarXWidth)/(t.contentWidth-t.containerWidth))):t.scrollbarXActive=!1,!t.settings.suppressScrollY&&t.containerHeight+t.settings.scrollYMarginOffset<t.contentHeight?(t.scrollbarYActive=!0,t.railYHeight=t.containerHeight-t.railYMarginHeight,t.railYRatio=t.containerHeight/t.railYHeight,t.scrollbarYHeight=f(t,u(t.railYHeight*t.containerHeight/t.contentHeight)),t.scrollbarYTop=u(e.scrollTop*(t.railYHeight-t.scrollbarYHeight)/(t.contentHeight-t.containerHeight))):t.scrollbarYActive=!1,t.scrollbarXLeft>=t.railXWidth-t.scrollbarXWidth&&(t.scrollbarXLeft=t.railXWidth-t.scrollbarXWidth),t.scrollbarYTop>=t.railYHeight-t.scrollbarYHeight&&(t.scrollbarYTop=t.railYHeight-t.scrollbarYHeight),b(e,t),t.scrollbarXActive?e.classList.add(m.state.active(\"x\")):(e.classList.remove(m.state.active(\"x\")),t.scrollbarXWidth=0,t.scrollbarXLeft=0,e.scrollLeft=0),t.scrollbarYActive?e.classList.add(m.state.active(\"y\")):(e.classList.remove(m.state.active(\"y\")),t.scrollbarYHeight=0,t.scrollbarYTop=0,e.scrollTop=0)},T={\"click-rail\":function(t){t.event.bind(t.scrollbarY,\"mousedown\",function(t){return t.stopPropagation()}),t.event.bind(t.scrollbarYRail,\"mousedown\",function(e){var i=e.pageY-window.pageYOffset-t.scrollbarYRail.getBoundingClientRect().top>t.scrollbarYTop?1:-1;t.element.scrollTop+=i*t.containerHeight,R(t),e.stopPropagation()}),t.event.bind(t.scrollbarX,\"mousedown\",function(t){return t.stopPropagation()}),t.event.bind(t.scrollbarXRail,\"mousedown\",function(e){var i=e.pageX-window.pageXOffset-t.scrollbarXRail.getBoundingClientRect().left>t.scrollbarXLeft?1:-1;t.element.scrollLeft+=i*t.containerWidth,R(t),e.stopPropagation()})},\"drag-thumb\":function(t){g(t,[\"containerWidth\",\"contentWidth\",\"pageX\",\"railXWidth\",\"scrollbarX\",\"scrollbarXWidth\",\"scrollLeft\",\"x\"]),g(t,[\"containerHeight\",\"contentHeight\",\"pageY\",\"railYHeight\",\"scrollbarY\",\"scrollbarYHeight\",\"scrollTop\",\"y\"])},keyboard:function(t){function e(e,n){var r=i.scrollTop;if(0===e){if(!t.scrollbarYActive)return!1;if(0===r&&n>0||r>=t.contentHeight-t.containerHeight&&n<0)return!t.settings.wheelPropagation}var l=i.scrollLeft;if(0===n){if(!t.scrollbarXActive)return!1;if(0===l&&e<0||l>=t.contentWidth-t.containerWidth&&e>0)return!t.settings.wheelPropagation}return!0}var i=t.element,r=function(){return n(i,\":hover\")},l=function(){return n(t.scrollbarX,\":focus\")||n(t.scrollbarY,\":focus\")};t.event.bind(t.ownerDocument,\"keydown\",function(n){if(!(n.isDefaultPrevented&&n.isDefaultPrevented()||n.defaultPrevented)&&(r()||l())){var o=document.activeElement?document.activeElement:t.ownerDocument.activeElement;if(o){if(\"IFRAME\"===o.tagName)o=o.contentDocument.activeElement;else for(;o.shadowRoot;)o=o.shadowRoot.activeElement;if(d(o))return}var s=0,a=0;switch(n.which){case 37:s=n.metaKey?-t.contentWidth:n.altKey?-t.containerWidth:-30;break;case 38:a=n.metaKey?t.contentHeight:n.altKey?t.containerHeight:30;break;case 39:s=n.metaKey?t.contentWidth:n.altKey?t.containerWidth:30;break;case 40:a=n.metaKey?-t.contentHeight:n.altKey?-t.containerHeight:-30;break;case 32:a=n.shiftKey?t.containerHeight:-t.containerHeight;break;case 33:a=t.containerHeight;break;case 34:a=-t.containerHeight;break;case 36:a=t.contentHeight;break;case 35:a=-t.contentHeight;break;default:return}t.settings.suppressScrollX&&0!==s||t.settings.suppressScrollY&&0!==a||(i.scrollTop-=a,i.scrollLeft+=s,R(t),e(s,a)&&n.preventDefault())}})},wheel:function(e){function i(t,i){var n=o.scrollTop;if(0===t){if(!e.scrollbarYActive)return!1;if(0===n&&i>0||n>=e.contentHeight-e.containerHeight&&i<0)return!e.settings.wheelPropagation}var r=o.scrollLeft;if(0===i){if(!e.scrollbarXActive)return!1;if(0===r&&t<0||r>=e.contentWidth-e.containerWidth&&t>0)return!e.settings.wheelPropagation}return!0}function n(t){var e=t.deltaX,i=-1*t.deltaY;return void 0!==e&&void 0!==i||(e=-1*t.wheelDeltaX/6,i=t.wheelDeltaY/6),t.deltaMode&&1===t.deltaMode&&(e*=10,i*=10),e!==e&&i!==i&&(e=0,i=t.wheelDelta),t.shiftKey?[-i,-e]:[e,i]}function r(e,i,n){if(!L.isWebKit&&o.querySelector(\"select:focus\"))return!0;if(!o.contains(e))return!1;for(var r=e;r&&r!==o;){if(r.classList.contains(m.element.consuming))return!0;var l=t(r);if([l.overflow,l.overflowX,l.overflowY].join(\"\").match(/(scroll|auto)/)){var s=r.scrollHeight-r.clientHeight;if(s>0&&!(0===r.scrollTop&&n>0||r.scrollTop===s&&n<0))return!0;var a=r.scrollLeft-r.clientWidth;if(a>0&&!(0===r.scrollLeft&&i<0||r.scrollLeft===a&&i>0))return!0}r=r.parentNode}return!1}function l(t){var l=n(t),s=l[0],a=l[1];if(!r(t.target,s,a)){var c=!1;e.settings.useBothWheelAxes?e.scrollbarYActive&&!e.scrollbarXActive?(a?o.scrollTop-=a*e.settings.wheelSpeed:o.scrollTop+=s*e.settings.wheelSpeed,c=!0):e.scrollbarXActive&&!e.scrollbarYActive&&(s?o.scrollLeft+=s*e.settings.wheelSpeed:o.scrollLeft-=a*e.settings.wheelSpeed,c=!0):(o.scrollTop-=a*e.settings.wheelSpeed,o.scrollLeft+=s*e.settings.wheelSpeed),R(e),(c=c||i(s,a))&&!t.ctrlKey&&(t.stopPropagation(),t.preventDefault())}}var o=e.element;void 0!==window.onwheel?e.event.bind(o,\"wheel\",l):void 0!==window.onmousewheel&&e.event.bind(o,\"mousewheel\",l)},touch:function(t){function e(e,i){var n=h.scrollTop,r=h.scrollLeft,l=Math.abs(e),o=Math.abs(i);if(o>l){if(i<0&&n===t.contentHeight-t.containerHeight||i>0&&0===n)return{stop:!t.settings.swipePropagation,prevent:0===window.scrollY}}else if(l>o&&(e<0&&r===t.contentWidth-t.containerWidth||e>0&&0===r))return{stop:!t.settings.swipePropagation,prevent:!0};return{stop:!0,prevent:!0}}function i(e,i){h.scrollTop-=i,h.scrollLeft-=e,R(t)}function n(){b=!0}function r(){b=!1}function l(t){return t.targetTouches?t.targetTouches[0]:t}function o(t){return!(t.pointerType&&\"pen\"===t.pointerType&&0===t.buttons||(!t.targetTouches||1!==t.targetTouches.length)&&(!t.pointerType||\"mouse\"===t.pointerType||t.pointerType===t.MSPOINTER_TYPE_MOUSE))}function s(t){if(o(t)){g=!0;var e=l(t);u.pageX=e.pageX,u.pageY=e.pageY,d=(new Date).getTime(),null!==f&&clearInterval(f),t.stopPropagation()}}function a(n){if(!g&&t.settings.swipePropagation&&s(n),!b&&g&&o(n)){var r=l(n),a={pageX:r.pageX,pageY:r.pageY},c=a.pageX-u.pageX,h=a.pageY-u.pageY;i(c,h),u=a;var f=(new Date).getTime(),v=f-d;v>0&&(p.x=c/v,p.y=h/v,d=f);var m=e(c,h),w=m.stop,Y=m.prevent;w&&n.stopPropagation(),Y&&n.preventDefault()}}function c(){!b&&g&&(g=!1,t.settings.swipeEasing&&(clearInterval(f),f=setInterval(function(){t.isInitialized?clearInterval(f):p.x||p.y?Math.abs(p.x)<.01&&Math.abs(p.y)<.01?clearInterval(f):(i(30*p.x,30*p.y),p.x*=.8,p.y*=.8):clearInterval(f)},10)))}if(L.supportsTouch||L.supportsIePointer){var h=t.element,u={},d=0,p={},f=null,b=!1,g=!1;L.supportsTouch?(t.event.bind(window,\"touchstart\",n),t.event.bind(window,\"touchend\",r),t.event.bind(h,\"touchstart\",s),t.event.bind(h,\"touchmove\",a),t.event.bind(h,\"touchend\",c)):L.supportsIePointer&&(window.PointerEvent?(t.event.bind(window,\"pointerdown\",n),t.event.bind(window,\"pointerup\",r),t.event.bind(h,\"pointerdown\",s),t.event.bind(h,\"pointermove\",a),t.event.bind(h,\"pointerup\",c)):window.MSPointerEvent&&(t.event.bind(window,\"MSPointerDown\",n),t.event.bind(window,\"MSPointerUp\",r),t.event.bind(h,\"MSPointerDown\",s),t.event.bind(h,\"MSPointerMove\",a),t.event.bind(h,\"MSPointerUp\",c)))}}},H=function(n,r){var l=this;if(void 0===r&&(r={}),\"string\"==typeof n&&(n=document.querySelector(n)),!n||!n.nodeName)throw new Error(\"no element is specified to initialize PerfectScrollbar\");this.element=n,n.classList.add(m.main),this.settings={handlers:[\"click-rail\",\"drag-thumb\",\"keyboard\",\"wheel\",\"touch\"],maxScrollbarLength:null,minScrollbarLength:null,scrollingThreshold:1e3,scrollXMarginOffset:0,scrollYMarginOffset:0,suppressScrollX:!1,suppressScrollY:!1,swipePropagation:!0,swipeEasing:!0,useBothWheelAxes:!1,wheelPropagation:!1,wheelSpeed:1};for(var o in r)l.settings[o]=r[o];this.containerWidth=null,this.containerHeight=null,this.contentWidth=null,this.contentHeight=null;var s=function(){return n.classList.add(m.state.focus)},a=function(){return n.classList.remove(m.state.focus)};this.isRtl=\"rtl\"===t(n).direction,this.isNegativeScroll=function(){var t=n.scrollLeft,e=null;return n.scrollLeft=-1,e=n.scrollLeft<0,n.scrollLeft=t,e}(),this.negativeScrollAdjustment=this.isNegativeScroll?n.scrollWidth-n.clientWidth:0,this.event=new W,this.ownerDocument=n.ownerDocument||document,this.scrollbarXRail=i(m.element.rail(\"x\")),n.appendChild(this.scrollbarXRail),this.scrollbarX=i(m.element.thumb(\"x\")),this.scrollbarXRail.appendChild(this.scrollbarX),this.scrollbarX.setAttribute(\"tabindex\",0),this.event.bind(this.scrollbarX,\"focus\",s),this.event.bind(this.scrollbarX,\"blur\",a),this.scrollbarXActive=null,this.scrollbarXWidth=null,this.scrollbarXLeft=null;var c=t(this.scrollbarXRail);this.scrollbarXBottom=parseInt(c.bottom,10),isNaN(this.scrollbarXBottom)?(this.isScrollbarXUsingBottom=!1,this.scrollbarXTop=u(c.top)):this.isScrollbarXUsingBottom=!0,this.railBorderXWidth=u(c.borderLeftWidth)+u(c.borderRightWidth),e(this.scrollbarXRail,{display:\"block\"}),this.railXMarginWidth=u(c.marginLeft)+u(c.marginRight),e(this.scrollbarXRail,{display:\"\"}),this.railXWidth=null,this.railXRatio=null,this.scrollbarYRail=i(m.element.rail(\"y\")),n.appendChild(this.scrollbarYRail),this.scrollbarY=i(m.element.thumb(\"y\")),this.scrollbarYRail.appendChild(this.scrollbarY),this.scrollbarY.setAttribute(\"tabindex\",0),this.event.bind(this.scrollbarY,\"focus\",s),this.event.bind(this.scrollbarY,\"blur\",a),this.scrollbarYActive=null,this.scrollbarYHeight=null,this.scrollbarYTop=null;var h=t(this.scrollbarYRail);this.scrollbarYRight=parseInt(h.right,10),isNaN(this.scrollbarYRight)?(this.isScrollbarYUsingRight=!1,this.scrollbarYLeft=u(h.left)):this.isScrollbarYUsingRight=!0,this.scrollbarYOuterWidth=this.isRtl?p(this.scrollbarY):null,this.railBorderYWidth=u(h.borderTopWidth)+u(h.borderBottomWidth),e(this.scrollbarYRail,{display:\"block\"}),this.railYMarginHeight=u(h.marginTop)+u(h.marginBottom),e(this.scrollbarYRail,{display:\"\"}),this.railYHeight=null,this.railYRatio=null,this.reach={x:n.scrollLeft<=0?\"start\":n.scrollLeft>=this.contentWidth-this.containerWidth?\"end\":null,y:n.scrollTop<=0?\"start\":n.scrollTop>=this.contentHeight-this.containerHeight?\"end\":null},this.isAlive=!0,this.settings.handlers.forEach(function(t){return T[t](l)}),this.lastScrollTop=n.scrollTop,this.lastScrollLeft=n.scrollLeft,this.event.bind(this.element,\"scroll\",function(t){return l.onScroll(t)}),R(this)};return H.prototype.update=function(){this.isAlive&&(this.negativeScrollAdjustment=this.isNegativeScroll?this.element.scrollWidth-this.element.clientWidth:0,e(this.scrollbarXRail,{display:\"block\"}),e(this.scrollbarYRail,{display:\"block\"}),this.railXMarginWidth=u(t(this.scrollbarXRail).marginLeft)+u(t(this.scrollbarXRail).marginRight),this.railYMarginHeight=u(t(this.scrollbarYRail).marginTop)+u(t(this.scrollbarYRail).marginBottom),e(this.scrollbarXRail,{display:\"none\"}),e(this.scrollbarYRail,{display:\"none\"}),R(this),y(this,\"top\",0,!1,!0),y(this,\"left\",0,!1,!0),e(this.scrollbarXRail,{display:\"\"}),e(this.scrollbarYRail,{display:\"\"}))},H.prototype.onScroll=function(t){this.isAlive&&(R(this),y(this,\"top\",this.element.scrollTop-this.lastScrollTop),y(this,\"left\",this.element.scrollLeft-this.lastScrollLeft),this.lastScrollTop=this.element.scrollTop,this.lastScrollLeft=this.element.scrollLeft)},H.prototype.destroy=function(){this.isAlive&&(this.event.unbindAll(),r(this.scrollbarX),r(this.scrollbarY),r(this.scrollbarXRail),r(this.scrollbarYRail),this.removePsClasses(),this.element=null,this.scrollbarX=null,this.scrollbarY=null,this.scrollbarXRail=null,this.scrollbarYRail=null,this.isAlive=!1)},H.prototype.removePsClasses=function(){this.element.className=this.element.className.split(\" \").filter(function(t){return!t.match(/^ps([-_].+|)$/)}).join(\" \")},H});","/* Flot plugin for rendering pie charts.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe plugin assumes that each series has a single data value, and that each\nvalue is a positive integer or zero.  Negative numbers don't make sense for a\npie chart, and have unpredictable results.  The values do NOT need to be\npassed in as percentages; the plugin will calculate the total and per-slice\npercentages internally.\n\n* Created by Brian Medendorp\n\n* Updated with contributions from btburnett3, Anthony Aragues and Xavi Ivars\n\nThe plugin supports these options:\n\n\tseries: {\n\t\tpie: {\n\t\t\tshow: true/false\n\t\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto'\n\t\t\tinnerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect\n\t\t\tstartAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result\n\t\t\ttilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show)\n\t\t\toffset: {\n\t\t\t\ttop: integer value to move the pie up or down\n\t\t\t\tleft: integer value to move the pie left or right, or 'auto'\n\t\t\t},\n\t\t\tstroke: {\n\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF')\n\t\t\t\twidth: integer pixel width of the stroke\n\t\t\t},\n\t\t\tlabel: {\n\t\t\t\tshow: true/false, or 'auto'\n\t\t\t\tformatter:  a user-defined function that modifies the text/style of the label text\n\t\t\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length\n\t\t\t\tbackground: {\n\t\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000')\n\t\t\t\t\topacity: 0-1\n\t\t\t\t},\n\t\t\t\tthreshold: 0-1 for the percentage value at which to hide labels (if they're too small)\n\t\t\t},\n\t\t\tcombine: {\n\t\t\t\tthreshold: 0-1 for the percentage value at which to combine slices (if they're too small)\n\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined\n\t\t\t\tlabel: any text value of what the combined slice should be labeled\n\t\t\t}\n\t\t\thighlight: {\n\t\t\t\topacity: 0-1\n\t\t\t}\n\t\t}\n\t}\n\nMore detail and specific examples can be found in the included HTML file.\n\n*/\n\n(function($) {\n\n\t// Maximum redraw attempts when fitting labels within the plot\n\n\tvar REDRAW_ATTEMPTS = 10;\n\n\t// Factor by which to shrink the pie when fitting labels within the plot\n\n\tvar REDRAW_SHRINK = 0.95;\n\n\tfunction init(plot) {\n\n\t\tvar canvas = null,\n\t\t\ttarget = null,\n\t\t\toptions = null,\n\t\t\tmaxRadius = null,\n\t\t\tcenterLeft = null,\n\t\t\tcenterTop = null,\n\t\t\tprocessed = false,\n\t\t\tctx = null;\n\n\t\t// interactive variables\n\n\t\tvar highlights = [];\n\n\t\t// add hook to determine if pie plugin in enabled, and then perform necessary operations\n\n\t\tplot.hooks.processOptions.push(function(plot, options) {\n\t\t\tif (options.series.pie.show) {\n\n\t\t\t\toptions.grid.show = false;\n\n\t\t\t\t// set labels.show\n\n\t\t\t\tif (options.series.pie.label.show == \"auto\") {\n\t\t\t\t\tif (options.legend.show) {\n\t\t\t\t\t\toptions.series.pie.label.show = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptions.series.pie.label.show = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// set radius\n\n\t\t\t\tif (options.series.pie.radius == \"auto\") {\n\t\t\t\t\tif (options.series.pie.label.show) {\n\t\t\t\t\t\toptions.series.pie.radius = 3/4;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptions.series.pie.radius = 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ensure sane tilt\n\n\t\t\t\tif (options.series.pie.tilt > 1) {\n\t\t\t\t\toptions.series.pie.tilt = 1;\n\t\t\t\t} else if (options.series.pie.tilt < 0) {\n\t\t\t\t\toptions.series.pie.tilt = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.bindEvents.push(function(plot, eventHolder) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tif (options.grid.hoverable) {\n\t\t\t\t\teventHolder.unbind(\"mousemove\").mousemove(onMouseMove);\n\t\t\t\t}\n\t\t\t\tif (options.grid.clickable) {\n\t\t\t\t\teventHolder.unbind(\"click\").click(onClick);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.processDatapoints.push(function(plot, series, data, datapoints) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tprocessDatapoints(plot, series, data, datapoints);\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.drawOverlay.push(function(plot, octx) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tdrawOverlay(plot, octx);\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.draw.push(function(plot, newCtx) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tdraw(plot, newCtx);\n\t\t\t}\n\t\t});\n\n\t\tfunction processDatapoints(plot, series, datapoints) {\n\t\t\tif (!processed)\t{\n\t\t\t\tprocessed = true;\n\t\t\t\tcanvas = plot.getCanvas();\n\t\t\t\ttarget = $(canvas).parent();\n\t\t\t\toptions = plot.getOptions();\n\t\t\t\tplot.setData(combine(plot.getData()));\n\t\t\t}\n\t\t}\n\n\t\tfunction combine(data) {\n\n\t\t\tvar total = 0,\n\t\t\t\tcombined = 0,\n\t\t\t\tnumCombined = 0,\n\t\t\t\tcolor = options.series.pie.combine.color,\n\t\t\t\tnewdata = [];\n\n\t\t\t// Fix up the raw data from Flot, ensuring the data is numeric\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\n\t\t\t\tvar value = data[i].data;\n\n\t\t\t\t// If the data is an array, we'll assume that it's a standard\n\t\t\t\t// Flot x-y pair, and are concerned only with the second value.\n\n\t\t\t\t// Note how we use the original array, rather than creating a\n\t\t\t\t// new one; this is more efficient and preserves any extra data\n\t\t\t\t// that the user may have stored in higher indexes.\n\n\t\t\t\tif ($.isArray(value) && value.length == 1) {\n    \t\t\t\tvalue = value[0];\n\t\t\t\t}\n\n\t\t\t\tif ($.isArray(value)) {\n\t\t\t\t\t// Equivalent to $.isNumeric() but compatible with jQuery < 1.7\n\t\t\t\t\tif (!isNaN(parseFloat(value[1])) && isFinite(value[1])) {\n\t\t\t\t\t\tvalue[1] = +value[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue[1] = 0;\n\t\t\t\t\t}\n\t\t\t\t} else if (!isNaN(parseFloat(value)) && isFinite(value)) {\n\t\t\t\t\tvalue = [1, +value];\n\t\t\t\t} else {\n\t\t\t\t\tvalue = [1, 0];\n\t\t\t\t}\n\n\t\t\t\tdata[i].data = [value];\n\t\t\t}\n\n\t\t\t// Sum up all the slices, so we can calculate percentages for each\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\ttotal += data[i].data[0][1];\n\t\t\t}\n\n\t\t\t// Count the number of slices with percentages below the combine\n\t\t\t// threshold; if it turns out to be just one, we won't combine.\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\tvar value = data[i].data[0][1];\n\t\t\t\tif (value / total <= options.series.pie.combine.threshold) {\n\t\t\t\t\tcombined += value;\n\t\t\t\t\tnumCombined++;\n\t\t\t\t\tif (!color) {\n\t\t\t\t\t\tcolor = data[i].color;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\tvar value = data[i].data[0][1];\n\t\t\t\tif (numCombined < 2 || value / total > options.series.pie.combine.threshold) {\n\t\t\t\t\tnewdata.push(\n\t\t\t\t\t\t$.extend(data[i], {     /* extend to allow keeping all other original data values\n\t\t\t\t\t\t                           and using them e.g. in labelFormatter. */\n\t\t\t\t\t\t\tdata: [[1, value]],\n\t\t\t\t\t\t\tcolor: data[i].color,\n\t\t\t\t\t\t\tlabel: data[i].label,\n\t\t\t\t\t\t\tangle: value * Math.PI * 2 / total,\n\t\t\t\t\t\t\tpercent: value / (total / 100)\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (numCombined > 1) {\n\t\t\t\tnewdata.push({\n\t\t\t\t\tdata: [[1, combined]],\n\t\t\t\t\tcolor: color,\n\t\t\t\t\tlabel: options.series.pie.combine.label,\n\t\t\t\t\tangle: combined * Math.PI * 2 / total,\n\t\t\t\t\tpercent: combined / (total / 100)\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn newdata;\n\t\t}\n\n\t\tfunction draw(plot, newCtx) {\n\n\t\t\tif (!target) {\n\t\t\t\treturn; // if no series were passed\n\t\t\t}\n\n\t\t\tvar canvasWidth = plot.getPlaceholder().width(),\n\t\t\t\tcanvasHeight = plot.getPlaceholder().height(),\n\t\t\t\tlegendWidth = target.children().filter(\".legend\").children().width() || 0;\n\n\t\t\tctx = newCtx;\n\n\t\t\t// WARNING: HACK! REWRITE THIS CODE AS SOON AS POSSIBLE!\n\n\t\t\t// When combining smaller slices into an 'other' slice, we need to\n\t\t\t// add a new series.  Since Flot gives plugins no way to modify the\n\t\t\t// list of series, the pie plugin uses a hack where the first call\n\t\t\t// to processDatapoints results in a call to setData with the new\n\t\t\t// list of series, then subsequent processDatapoints do nothing.\n\n\t\t\t// The plugin-global 'processed' flag is used to control this hack;\n\t\t\t// it starts out false, and is set to true after the first call to\n\t\t\t// processDatapoints.\n\n\t\t\t// Unfortunately this turns future setData calls into no-ops; they\n\t\t\t// call processDatapoints, the flag is true, and nothing happens.\n\n\t\t\t// To fix this we'll set the flag back to false here in draw, when\n\t\t\t// all series have been processed, so the next sequence of calls to\n\t\t\t// processDatapoints once again starts out with a slice-combine.\n\t\t\t// This is really a hack; in 0.9 we need to give plugins a proper\n\t\t\t// way to modify series before any processing begins.\n\n\t\t\tprocessed = false;\n\n\t\t\t// calculate maximum radius and center point\n\n\t\t\tmaxRadius =  Math.min(canvasWidth, canvasHeight / options.series.pie.tilt) / 2;\n\t\t\tcenterTop = canvasHeight / 2 + options.series.pie.offset.top;\n\t\t\tcenterLeft = canvasWidth / 2;\n\n\t\t\tif (options.series.pie.offset.left == \"auto\") {\n\t\t\t\tif (options.legend.position.match(\"w\")) {\n\t\t\t\t\tcenterLeft += legendWidth / 2;\n\t\t\t\t} else {\n\t\t\t\t\tcenterLeft -= legendWidth / 2;\n\t\t\t\t}\n\t\t\t\tif (centerLeft < maxRadius) {\n\t\t\t\t\tcenterLeft = maxRadius;\n\t\t\t\t} else if (centerLeft > canvasWidth - maxRadius) {\n\t\t\t\t\tcenterLeft = canvasWidth - maxRadius;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcenterLeft += options.series.pie.offset.left;\n\t\t\t}\n\n\t\t\tvar slices = plot.getData(),\n\t\t\t\tattempts = 0;\n\n\t\t\t// Keep shrinking the pie's radius until drawPie returns true,\n\t\t\t// indicating that all the labels fit, or we try too many times.\n\n\t\t\tdo {\n\t\t\t\tif (attempts > 0) {\n\t\t\t\t\tmaxRadius *= REDRAW_SHRINK;\n\t\t\t\t}\n\t\t\t\tattempts += 1;\n\t\t\t\tclear();\n\t\t\t\tif (options.series.pie.tilt <= 0.8) {\n\t\t\t\t\tdrawShadow();\n\t\t\t\t}\n\t\t\t} while (!drawPie() && attempts < REDRAW_ATTEMPTS)\n\n\t\t\tif (attempts >= REDRAW_ATTEMPTS) {\n\t\t\t\tclear();\n\t\t\t\ttarget.prepend(\"<div class='error'>Could not draw pie with labels contained inside canvas</div>\");\n\t\t\t}\n\n\t\t\tif (plot.setSeries && plot.insertLegend) {\n\t\t\t\tplot.setSeries(slices);\n\t\t\t\tplot.insertLegend();\n\t\t\t}\n\n\t\t\t// we're actually done at this point, just defining internal functions at this point\n\n\t\t\tfunction clear() {\n\t\t\t\tctx.clearRect(0, 0, canvasWidth, canvasHeight);\n\t\t\t\ttarget.children().filter(\".pieLabel, .pieLabelBackground\").remove();\n\t\t\t}\n\n\t\t\tfunction drawShadow() {\n\n\t\t\t\tvar shadowLeft = options.series.pie.shadow.left;\n\t\t\t\tvar shadowTop = options.series.pie.shadow.top;\n\t\t\t\tvar edge = 10;\n\t\t\t\tvar alpha = options.series.pie.shadow.alpha;\n\t\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\t\tif (radius >= canvasWidth / 2 - shadowLeft || radius * options.series.pie.tilt >= canvasHeight / 2 - shadowTop || radius <= edge) {\n\t\t\t\t\treturn;\t// shadow would be outside canvas, so don't draw it\n\t\t\t\t}\n\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(shadowLeft,shadowTop);\n\t\t\t\tctx.globalAlpha = alpha;\n\t\t\t\tctx.fillStyle = \"#000\";\n\n\t\t\t\t// center and rotate to starting position\n\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\n\t\t\t\t//radius -= edge;\n\n\t\t\t\tfor (var i = 1; i <= edge; i++) {\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2, false);\n\t\t\t\t\tctx.fill();\n\t\t\t\t\tradius -= i;\n\t\t\t\t}\n\n\t\t\t\tctx.restore();\n\t\t\t}\n\n\t\t\tfunction drawPie() {\n\n\t\t\t\tvar startAngle = Math.PI * options.series.pie.startAngle;\n\t\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\t\t// center and rotate to starting position\n\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\t\t\t\t//ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera\n\n\t\t\t\t// draw slices\n\n\t\t\t\tctx.save();\n\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\t\t\t\t\tslices[i].startAngle = currentAngle;\n\t\t\t\t\tdrawSlice(slices[i].angle, slices[i].color, true);\n\t\t\t\t}\n\t\t\t\tctx.restore();\n\n\t\t\t\t// draw slice outlines\n\n\t\t\t\tif (options.series.pie.stroke.width > 0) {\n\t\t\t\t\tctx.save();\n\t\t\t\t\tctx.lineWidth = options.series.pie.stroke.width;\n\t\t\t\t\tcurrentAngle = startAngle;\n\t\t\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\t\t\t\t\t\tdrawSlice(slices[i].angle, options.series.pie.stroke.color, false);\n\t\t\t\t\t}\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\n\t\t\t\t// draw donut hole\n\n\t\t\t\tdrawDonutHole(ctx);\n\n\t\t\t\tctx.restore();\n\n\t\t\t\t// Draw the labels, returning true if they fit within the plot\n\n\t\t\t\tif (options.series.pie.label.show) {\n\t\t\t\t\treturn drawLabels();\n\t\t\t\t} else return true;\n\n\t\t\t\tfunction drawSlice(angle, color, fill) {\n\n\t\t\t\t\tif (angle <= 0 || isNaN(angle)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (fill) {\n\t\t\t\t\t\tctx.fillStyle = color;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tctx.strokeStyle = color;\n\t\t\t\t\t\tctx.lineJoin = \"round\";\n\t\t\t\t\t}\n\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tif (Math.abs(angle - Math.PI * 2) > 0.000000001) {\n\t\t\t\t\t\tctx.moveTo(0, 0); // Center of the pie\n\t\t\t\t\t}\n\n\t\t\t\t\t//ctx.arc(0, 0, radius, 0, angle, false); // This doesn't work properly in Opera\n\t\t\t\t\tctx.arc(0, 0, radius,currentAngle, currentAngle + angle / 2, false);\n\t\t\t\t\tctx.arc(0, 0, radius,currentAngle + angle / 2, currentAngle + angle, false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\t//ctx.rotate(angle); // This doesn't work properly in Opera\n\t\t\t\t\tcurrentAngle += angle;\n\n\t\t\t\t\tif (fill) {\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction drawLabels() {\n\n\t\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\t\tvar radius = options.series.pie.label.radius > 1 ? options.series.pie.label.radius : maxRadius * options.series.pie.label.radius;\n\n\t\t\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\t\t\t\t\t\tif (slices[i].percent >= options.series.pie.label.threshold * 100) {\n\t\t\t\t\t\t\tif (!drawLabel(slices[i], currentAngle, i)) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcurrentAngle += slices[i].angle;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t\tfunction drawLabel(slice, startAngle, index) {\n\n\t\t\t\t\t\tif (slice.data[0][1] == 0) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// format label text\n\n\t\t\t\t\t\tvar lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter;\n\n\t\t\t\t\t\tif (lf) {\n\t\t\t\t\t\t\ttext = lf(slice.label, slice);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttext = slice.label;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (plf) {\n\t\t\t\t\t\t\ttext = plf(text, slice);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar halfAngle = ((startAngle + slice.angle) + startAngle) / 2;\n\t\t\t\t\t\tvar x = centerLeft + Math.round(Math.cos(halfAngle) * radius);\n\t\t\t\t\t\tvar y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt;\n\n\t\t\t\t\t\tvar html = \"<span class='pieLabel' id='pieLabel\" + index + \"' style='position:absolute;top:\" + y + \"px;left:\" + x + \"px;'>\" + text + \"</span>\";\n\t\t\t\t\t\ttarget.append(html);\n\n\t\t\t\t\t\tvar label = target.children(\"#pieLabel\" + index);\n\t\t\t\t\t\tvar labelTop = (y - label.height() / 2);\n\t\t\t\t\t\tvar labelLeft = (x - label.width() / 2);\n\n\t\t\t\t\t\tlabel.css(\"top\", labelTop);\n\t\t\t\t\t\tlabel.css(\"left\", labelLeft);\n\n\t\t\t\t\t\t// check to make sure that the label is not outside the canvas\n\n\t\t\t\t\t\tif (0 - labelTop > 0 || 0 - labelLeft > 0 || canvasHeight - (labelTop + label.height()) < 0 || canvasWidth - (labelLeft + label.width()) < 0) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.series.pie.label.background.opacity != 0) {\n\n\t\t\t\t\t\t\t// put in the transparent background separately to avoid blended labels and label boxes\n\n\t\t\t\t\t\t\tvar c = options.series.pie.label.background.color;\n\n\t\t\t\t\t\t\tif (c == null) {\n\t\t\t\t\t\t\t\tc = slice.color;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar pos = \"top:\" + labelTop + \"px;left:\" + labelLeft + \"px;\";\n\t\t\t\t\t\t\t$(\"<div class='pieLabelBackground' style='position:absolute;width:\" + label.width() + \"px;height:\" + label.height() + \"px;\" + pos + \"background-color:\" + c + \";'></div>\")\n\t\t\t\t\t\t\t\t.css(\"opacity\", options.series.pie.label.background.opacity)\n\t\t\t\t\t\t\t\t.insertBefore(label);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} // end individual label function\n\t\t\t\t} // end drawLabels function\n\t\t\t} // end drawPie function\n\t\t} // end draw function\n\n\t\t// Placed here because it needs to be accessed from multiple locations\n\n\t\tfunction drawDonutHole(layer) {\n\t\t\tif (options.series.pie.innerRadius > 0) {\n\n\t\t\t\t// subtract the center\n\n\t\t\t\tlayer.save();\n\t\t\t\tvar innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius;\n\t\t\t\tlayer.globalCompositeOperation = \"destination-out\"; // this does not work with excanvas, but it will fall back to using the stroke color\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.fillStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0, 0, innerRadius, 0, Math.PI * 2, false);\n\t\t\t\tlayer.fill();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\n\t\t\t\t// add inner stroke\n\n\t\t\t\tlayer.save();\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.strokeStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0, 0, innerRadius, 0, Math.PI * 2, false);\n\t\t\t\tlayer.stroke();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\n\t\t\t\t// TODO: add extra shadow inside hole (with a mask) if the pie is tilted.\n\t\t\t}\n\t\t}\n\n\t\t//-- Additional Interactive related functions --\n\n\t\tfunction isPointInPoly(poly, pt) {\n\t\t\tfor(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)\n\t\t\t\t((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1]))\n\t\t\t\t&& (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0])\n\t\t\t\t&& (c = !c);\n\t\t\treturn c;\n\t\t}\n\n\t\tfunction findNearbySlice(mouseX, mouseY) {\n\n\t\t\tvar slices = plot.getData(),\n\t\t\t\toptions = plot.getOptions(),\n\t\t\t\tradius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius,\n\t\t\t\tx, y;\n\n\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\n\t\t\t\tvar s = slices[i];\n\n\t\t\t\tif (s.pie.show) {\n\n\t\t\t\t\tctx.save();\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.moveTo(0, 0); // Center of the pie\n\t\t\t\t\t//ctx.scale(1, options.series.pie.tilt);\t// this actually seems to break everything when here.\n\t\t\t\t\tctx.arc(0, 0, radius, s.startAngle, s.startAngle + s.angle / 2, false);\n\t\t\t\t\tctx.arc(0, 0, radius, s.startAngle + s.angle / 2, s.startAngle + s.angle, false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\tx = mouseX - centerLeft;\n\t\t\t\t\ty = mouseY - centerTop;\n\n\t\t\t\t\tif (ctx.isPointInPath) {\n\t\t\t\t\t\tif (ctx.isPointInPath(mouseX - centerLeft, mouseY - centerTop)) {\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdatapoint: [s.percent, s.data],\n\t\t\t\t\t\t\t\tdataIndex: 0,\n\t\t\t\t\t\t\t\tseries: s,\n\t\t\t\t\t\t\t\tseriesIndex: i\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// excanvas for IE doesn;t support isPointInPath, this is a workaround.\n\n\t\t\t\t\t\tvar p1X = radius * Math.cos(s.startAngle),\n\t\t\t\t\t\t\tp1Y = radius * Math.sin(s.startAngle),\n\t\t\t\t\t\t\tp2X = radius * Math.cos(s.startAngle + s.angle / 4),\n\t\t\t\t\t\t\tp2Y = radius * Math.sin(s.startAngle + s.angle / 4),\n\t\t\t\t\t\t\tp3X = radius * Math.cos(s.startAngle + s.angle / 2),\n\t\t\t\t\t\t\tp3Y = radius * Math.sin(s.startAngle + s.angle / 2),\n\t\t\t\t\t\t\tp4X = radius * Math.cos(s.startAngle + s.angle / 1.5),\n\t\t\t\t\t\t\tp4Y = radius * Math.sin(s.startAngle + s.angle / 1.5),\n\t\t\t\t\t\t\tp5X = radius * Math.cos(s.startAngle + s.angle),\n\t\t\t\t\t\t\tp5Y = radius * Math.sin(s.startAngle + s.angle),\n\t\t\t\t\t\t\tarrPoly = [[0, 0], [p1X, p1Y], [p2X, p2Y], [p3X, p3Y], [p4X, p4Y], [p5X, p5Y]],\n\t\t\t\t\t\t\tarrPoint = [x, y];\n\n\t\t\t\t\t\t// TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt?\n\n\t\t\t\t\t\tif (isPointInPoly(arrPoly, arrPoint)) {\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdatapoint: [s.percent, s.data],\n\t\t\t\t\t\t\t\tdataIndex: 0,\n\t\t\t\t\t\t\t\tseries: s,\n\t\t\t\t\t\t\t\tseriesIndex: i\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tfunction onMouseMove(e) {\n\t\t\ttriggerClickHoverEvent(\"plothover\", e);\n\t\t}\n\n\t\tfunction onClick(e) {\n\t\t\ttriggerClickHoverEvent(\"plotclick\", e);\n\t\t}\n\n\t\t// trigger click or hover event (they send the same parameters so we share their code)\n\n\t\tfunction triggerClickHoverEvent(eventname, e) {\n\n\t\t\tvar offset = plot.offset();\n\t\t\tvar canvasX = parseInt(e.pageX - offset.left);\n\t\t\tvar canvasY =  parseInt(e.pageY - offset.top);\n\t\t\tvar item = findNearbySlice(canvasX, canvasY);\n\n\t\t\tif (options.grid.autoHighlight) {\n\n\t\t\t\t// clear auto-highlights\n\n\t\t\t\tfor (var i = 0; i < highlights.length; ++i) {\n\t\t\t\t\tvar h = highlights[i];\n\t\t\t\t\tif (h.auto == eventname && !(item && h.series == item.series)) {\n\t\t\t\t\t\tunhighlight(h.series);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// highlight the slice\n\n\t\t\tif (item) {\n\t\t\t\thighlight(item.series, eventname);\n\t\t\t}\n\n\t\t\t// trigger any hover bind events\n\n\t\t\tvar pos = { pageX: e.pageX, pageY: e.pageY };\n\t\t\ttarget.trigger(eventname, [pos, item]);\n\t\t}\n\n\t\tfunction highlight(s, auto) {\n\t\t\t//if (typeof s == \"number\") {\n\t\t\t//\ts = series[s];\n\t\t\t//}\n\n\t\t\tvar i = indexOfHighlight(s);\n\n\t\t\tif (i == -1) {\n\t\t\t\thighlights.push({ series: s, auto: auto });\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t} else if (!auto) {\n\t\t\t\thighlights[i].auto = false;\n\t\t\t}\n\t\t}\n\n\t\tfunction unhighlight(s) {\n\t\t\tif (s == null) {\n\t\t\t\thighlights = [];\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\n\t\t\t//if (typeof s == \"number\") {\n\t\t\t//\ts = series[s];\n\t\t\t//}\n\n\t\t\tvar i = indexOfHighlight(s);\n\n\t\t\tif (i != -1) {\n\t\t\t\thighlights.splice(i, 1);\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\t\t}\n\n\t\tfunction indexOfHighlight(s) {\n\t\t\tfor (var i = 0; i < highlights.length; ++i) {\n\t\t\t\tvar h = highlights[i];\n\t\t\t\tif (h.series == s)\n\t\t\t\t\treturn i;\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\n\t\tfunction drawOverlay(plot, octx) {\n\n\t\t\tvar options = plot.getOptions();\n\n\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\toctx.save();\n\t\t\toctx.translate(centerLeft, centerTop);\n\t\t\toctx.scale(1, options.series.pie.tilt);\n\n\t\t\tfor (var i = 0; i < highlights.length; ++i) {\n\t\t\t\tdrawHighlight(highlights[i].series);\n\t\t\t}\n\n\t\t\tdrawDonutHole(octx);\n\n\t\t\toctx.restore();\n\n\t\t\tfunction drawHighlight(series) {\n\n\t\t\t\tif (series.angle <= 0 || isNaN(series.angle)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString();\n\t\t\t\toctx.fillStyle = \"rgba(255, 255, 255, \" + options.series.pie.highlight.opacity + \")\"; // this is temporary until we have access to parseColor\n\t\t\t\toctx.beginPath();\n\t\t\t\tif (Math.abs(series.angle - Math.PI * 2) > 0.000000001) {\n\t\t\t\t\toctx.moveTo(0, 0); // Center of the pie\n\t\t\t\t}\n\t\t\t\toctx.arc(0, 0, radius, series.startAngle, series.startAngle + series.angle / 2, false);\n\t\t\t\toctx.arc(0, 0, radius, series.startAngle + series.angle / 2, series.startAngle + series.angle, false);\n\t\t\t\toctx.closePath();\n\t\t\t\toctx.fill();\n\t\t\t}\n\t\t}\n\t} // end init (plugin body)\n\n\t// define pie specific options and their default values\n\n\tvar options = {\n\t\tseries: {\n\t\t\tpie: {\n\t\t\t\tshow: false,\n\t\t\t\tradius: \"auto\",\t// actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\tinnerRadius: 0, /* for donut */\n\t\t\t\tstartAngle: 3/2,\n\t\t\t\ttilt: 1,\n\t\t\t\tshadow: {\n\t\t\t\t\tleft: 5,\t// shadow left offset\n\t\t\t\t\ttop: 15,\t// shadow top offset\n\t\t\t\t\talpha: 0.02\t// shadow alpha\n\t\t\t\t},\n\t\t\t\toffset: {\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: \"auto\"\n\t\t\t\t},\n\t\t\t\tstroke: {\n\t\t\t\t\tcolor: \"#fff\",\n\t\t\t\t\twidth: 1\n\t\t\t\t},\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: \"auto\",\n\t\t\t\t\tformatter: function(label, slice) {\n\t\t\t\t\t\treturn \"<div style='font-size:x-small;text-align:center;padding:2px;color:\" + slice.color + \";'>\" + label + \"<br/>\" + Math.round(slice.percent) + \"%</div>\";\n\t\t\t\t\t},\t// formatter function\n\t\t\t\t\tradius: 1,\t// radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\t\tbackground: {\n\t\t\t\t\t\tcolor: null,\n\t\t\t\t\t\topacity: 0\n\t\t\t\t\t},\n\t\t\t\t\tthreshold: 0\t// percentage at which to hide the label (i.e. the slice is too narrow)\n\t\t\t\t},\n\t\t\t\tcombine: {\n\t\t\t\t\tthreshold: -1,\t// percentage at which to combine little slices into one larger slice\n\t\t\t\t\tcolor: null,\t// color to give the new slice (auto-generated if null)\n\t\t\t\t\tlabel: \"Other\"\t// label to give the new slice\n\t\t\t\t},\n\t\t\t\thighlight: {\n\t\t\t\t\t//color: \"#fff\",\t\t// will add this functionality once parseColor is available\n\t\t\t\t\topacity: 0.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: \"pie\",\n\t\tversion: \"1.1\"\n\t});\n\n})(jQuery);\n","/* Pretty handling of time axes.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nSet axis.mode to \"time\" to enable. See the section \"Time series data\" in\nAPI.txt for details.\n\n*/\n\n(function($) {\n\n\tvar options = {\n\t\txaxis: {\n\t\t\ttimezone: null,\t\t// \"browser\" for local to the client or timezone for timezone-js\n\t\t\ttimeformat: null,\t// format string to use\n\t\t\ttwelveHourClock: false,\t// 12 or 24 time in time mode\n\t\t\tmonthNames: null\t// list of names of months\n\t\t}\n\t};\n\n\t// round to nearby lower multiple of base\n\n\tfunction floorInBase(n, base) {\n\t\treturn base * Math.floor(n / base);\n\t}\n\n\t// Returns a string with the date d formatted according to fmt.\n\t// A subset of the Open Group's strftime format is supported.\n\n\tfunction formatDate(d, fmt, monthNames, dayNames) {\n\n\t\tif (typeof d.strftime == \"function\") {\n\t\t\treturn d.strftime(fmt);\n\t\t}\n\n\t\tvar leftPad = function(n, pad) {\n\t\t\tn = \"\" + n;\n\t\t\tpad = \"\" + (pad == null ? \"0\" : pad);\n\t\t\treturn n.length == 1 ? pad + n : n;\n\t\t};\n\n\t\tvar r = [];\n\t\tvar escape = false;\n\t\tvar hours = d.getHours();\n\t\tvar isAM = hours < 12;\n\n\t\tif (monthNames == null) {\n\t\t\tmonthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\t\t}\n\n\t\tif (dayNames == null) {\n\t\t\tdayNames = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\t\t}\n\n\t\tvar hours12;\n\n\t\tif (hours > 12) {\n\t\t\thours12 = hours - 12;\n\t\t} else if (hours == 0) {\n\t\t\thours12 = 12;\n\t\t} else {\n\t\t\thours12 = hours;\n\t\t}\n\n\t\tfor (var i = 0; i < fmt.length; ++i) {\n\n\t\t\tvar c = fmt.charAt(i);\n\n\t\t\tif (escape) {\n\t\t\t\tswitch (c) {\n\t\t\t\t\tcase 'a': c = \"\" + dayNames[d.getDay()]; break;\n\t\t\t\t\tcase 'b': c = \"\" + monthNames[d.getMonth()]; break;\n\t\t\t\t\tcase 'd': c = leftPad(d.getDate()); break;\n\t\t\t\t\tcase 'e': c = leftPad(d.getDate(), \" \"); break;\n\t\t\t\t\tcase 'h':\t// For back-compat with 0.7; remove in 1.0\n\t\t\t\t\tcase 'H': c = leftPad(hours); break;\n\t\t\t\t\tcase 'I': c = leftPad(hours12); break;\n\t\t\t\t\tcase 'l': c = leftPad(hours12, \" \"); break;\n\t\t\t\t\tcase 'm': c = leftPad(d.getMonth() + 1); break;\n\t\t\t\t\tcase 'M': c = leftPad(d.getMinutes()); break;\n\t\t\t\t\t// quarters not in Open Group's strftime specification\n\t\t\t\t\tcase 'q':\n\t\t\t\t\t\tc = \"\" + (Math.floor(d.getMonth() / 3) + 1); break;\n\t\t\t\t\tcase 'S': c = leftPad(d.getSeconds()); break;\n\t\t\t\t\tcase 'y': c = leftPad(d.getFullYear() % 100); break;\n\t\t\t\t\tcase 'Y': c = \"\" + d.getFullYear(); break;\n\t\t\t\t\tcase 'p': c = (isAM) ? (\"\" + \"am\") : (\"\" + \"pm\"); break;\n\t\t\t\t\tcase 'P': c = (isAM) ? (\"\" + \"AM\") : (\"\" + \"PM\"); break;\n\t\t\t\t\tcase 'w': c = \"\" + d.getDay(); break;\n\t\t\t\t}\n\t\t\t\tr.push(c);\n\t\t\t\tescape = false;\n\t\t\t} else {\n\t\t\t\tif (c == \"%\") {\n\t\t\t\t\tescape = true;\n\t\t\t\t} else {\n\t\t\t\t\tr.push(c);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn r.join(\"\");\n\t}\n\n\t// To have a consistent view of time-based data independent of which time\n\t// zone the client happens to be in we need a date-like object independent\n\t// of time zones.  This is done through a wrapper that only calls the UTC\n\t// versions of the accessor methods.\n\n\tfunction makeUtcWrapper(d) {\n\n\t\tfunction addProxyMethod(sourceObj, sourceMethod, targetObj, targetMethod) {\n\t\t\tsourceObj[sourceMethod] = function() {\n\t\t\t\treturn targetObj[targetMethod].apply(targetObj, arguments);\n\t\t\t};\n\t\t};\n\n\t\tvar utc = {\n\t\t\tdate: d\n\t\t};\n\n\t\t// support strftime, if found\n\n\t\tif (d.strftime != undefined) {\n\t\t\taddProxyMethod(utc, \"strftime\", d, \"strftime\");\n\t\t}\n\n\t\taddProxyMethod(utc, \"getTime\", d, \"getTime\");\n\t\taddProxyMethod(utc, \"setTime\", d, \"setTime\");\n\n\t\tvar props = [\"Date\", \"Day\", \"FullYear\", \"Hours\", \"Milliseconds\", \"Minutes\", \"Month\", \"Seconds\"];\n\n\t\tfor (var p = 0; p < props.length; p++) {\n\t\t\taddProxyMethod(utc, \"get\" + props[p], d, \"getUTC\" + props[p]);\n\t\t\taddProxyMethod(utc, \"set\" + props[p], d, \"setUTC\" + props[p]);\n\t\t}\n\n\t\treturn utc;\n\t};\n\n\t// select time zone strategy.  This returns a date-like object tied to the\n\t// desired timezone\n\n\tfunction dateGenerator(ts, opts) {\n\t\tif (opts.timezone == \"browser\") {\n\t\t\treturn new Date(ts);\n\t\t} else if (!opts.timezone || opts.timezone == \"utc\") {\n\t\t\treturn makeUtcWrapper(new Date(ts));\n\t\t} else if (typeof timezoneJS != \"undefined\" && typeof timezoneJS.Date != \"undefined\") {\n\t\t\tvar d = new timezoneJS.Date();\n\t\t\t// timezone-js is fickle, so be sure to set the time zone before\n\t\t\t// setting the time.\n\t\t\td.setTimezone(opts.timezone);\n\t\t\td.setTime(ts);\n\t\t\treturn d;\n\t\t} else {\n\t\t\treturn makeUtcWrapper(new Date(ts));\n\t\t}\n\t}\n\t\n\t// map of app. size of time units in milliseconds\n\n\tvar timeUnitSize = {\n\t\t\"second\": 1000,\n\t\t\"minute\": 60 * 1000,\n\t\t\"hour\": 60 * 60 * 1000,\n\t\t\"day\": 24 * 60 * 60 * 1000,\n\t\t\"month\": 30 * 24 * 60 * 60 * 1000,\n\t\t\"quarter\": 3 * 30 * 24 * 60 * 60 * 1000,\n\t\t\"year\": 365.2425 * 24 * 60 * 60 * 1000\n\t};\n\n\t// the allowed tick sizes, after 1 year we use\n\t// an integer algorithm\n\n\tvar baseSpec = [\n\t\t[1, \"second\"], [2, \"second\"], [5, \"second\"], [10, \"second\"],\n\t\t[30, \"second\"], \n\t\t[1, \"minute\"], [2, \"minute\"], [5, \"minute\"], [10, \"minute\"],\n\t\t[30, \"minute\"], \n\t\t[1, \"hour\"], [2, \"hour\"], [4, \"hour\"],\n\t\t[8, \"hour\"], [12, \"hour\"],\n\t\t[1, \"day\"], [2, \"day\"], [3, \"day\"],\n\t\t[0.25, \"month\"], [0.5, \"month\"], [1, \"month\"],\n\t\t[2, \"month\"]\n\t];\n\n\t// we don't know which variant(s) we'll need yet, but generating both is\n\t// cheap\n\n\tvar specMonths = baseSpec.concat([[3, \"month\"], [6, \"month\"],\n\t\t[1, \"year\"]]);\n\tvar specQuarters = baseSpec.concat([[1, \"quarter\"], [2, \"quarter\"],\n\t\t[1, \"year\"]]);\n\n\tfunction init(plot) {\n\t\tplot.hooks.processOptions.push(function (plot, options) {\n\t\t\t$.each(plot.getAxes(), function(axisName, axis) {\n\n\t\t\t\tvar opts = axis.options;\n\n\t\t\t\tif (opts.mode == \"time\") {\n\t\t\t\t\taxis.tickGenerator = function(axis) {\n\n\t\t\t\t\t\tvar ticks = [];\n\t\t\t\t\t\tvar d = dateGenerator(axis.min, opts);\n\t\t\t\t\t\tvar minSize = 0;\n\n\t\t\t\t\t\t// make quarter use a possibility if quarters are\n\t\t\t\t\t\t// mentioned in either of these options\n\n\t\t\t\t\t\tvar spec = (opts.tickSize && opts.tickSize[1] ===\n\t\t\t\t\t\t\t\"quarter\") ||\n\t\t\t\t\t\t\t(opts.minTickSize && opts.minTickSize[1] ===\n\t\t\t\t\t\t\t\"quarter\") ? specQuarters : specMonths;\n\n\t\t\t\t\t\tif (opts.minTickSize != null) {\n\t\t\t\t\t\t\tif (typeof opts.tickSize == \"number\") {\n\t\t\t\t\t\t\t\tminSize = opts.tickSize;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tminSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (var i = 0; i < spec.length - 1; ++i) {\n\t\t\t\t\t\t\tif (axis.delta < (spec[i][0] * timeUnitSize[spec[i][1]]\n\t\t\t\t\t\t\t\t\t\t\t  + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2\n\t\t\t\t\t\t\t\t&& spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar size = spec[i][0];\n\t\t\t\t\t\tvar unit = spec[i][1];\n\n\t\t\t\t\t\t// special-case the possibility of several years\n\n\t\t\t\t\t\tif (unit == \"year\") {\n\n\t\t\t\t\t\t\t// if given a minTickSize in years, just use it,\n\t\t\t\t\t\t\t// ensuring that it's an integer\n\n\t\t\t\t\t\t\tif (opts.minTickSize != null && opts.minTickSize[1] == \"year\") {\n\t\t\t\t\t\t\t\tsize = Math.floor(opts.minTickSize[0]);\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tvar magn = Math.pow(10, Math.floor(Math.log(axis.delta / timeUnitSize.year) / Math.LN10));\n\t\t\t\t\t\t\t\tvar norm = (axis.delta / timeUnitSize.year) / magn;\n\n\t\t\t\t\t\t\t\tif (norm < 1.5) {\n\t\t\t\t\t\t\t\t\tsize = 1;\n\t\t\t\t\t\t\t\t} else if (norm < 3) {\n\t\t\t\t\t\t\t\t\tsize = 2;\n\t\t\t\t\t\t\t\t} else if (norm < 7.5) {\n\t\t\t\t\t\t\t\t\tsize = 5;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsize = 10;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsize *= magn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// minimum size for years is 1\n\n\t\t\t\t\t\t\tif (size < 1) {\n\t\t\t\t\t\t\t\tsize = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\taxis.tickSize = opts.tickSize || [size, unit];\n\t\t\t\t\t\tvar tickSize = axis.tickSize[0];\n\t\t\t\t\t\tunit = axis.tickSize[1];\n\n\t\t\t\t\t\tvar step = tickSize * timeUnitSize[unit];\n\n\t\t\t\t\t\tif (unit == \"second\") {\n\t\t\t\t\t\t\td.setSeconds(floorInBase(d.getSeconds(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"minute\") {\n\t\t\t\t\t\t\td.setMinutes(floorInBase(d.getMinutes(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"hour\") {\n\t\t\t\t\t\t\td.setHours(floorInBase(d.getHours(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"month\") {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"quarter\") {\n\t\t\t\t\t\t\td.setMonth(3 * floorInBase(d.getMonth() / 3,\n\t\t\t\t\t\t\t\ttickSize));\n\t\t\t\t\t\t} else if (unit == \"year\") {\n\t\t\t\t\t\t\td.setFullYear(floorInBase(d.getFullYear(), tickSize));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// reset smaller components\n\n\t\t\t\t\t\td.setMilliseconds(0);\n\n\t\t\t\t\t\tif (step >= timeUnitSize.minute) {\n\t\t\t\t\t\t\td.setSeconds(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.hour) {\n\t\t\t\t\t\t\td.setMinutes(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.day) {\n\t\t\t\t\t\t\td.setHours(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.day * 4) {\n\t\t\t\t\t\t\td.setDate(1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.month * 2) {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), 3));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.quarter * 2) {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), 6));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.year) {\n\t\t\t\t\t\t\td.setMonth(0);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar carry = 0;\n\t\t\t\t\t\tvar v = Number.NaN;\n\t\t\t\t\t\tvar prev;\n\n\t\t\t\t\t\tdo {\n\n\t\t\t\t\t\t\tprev = v;\n\t\t\t\t\t\t\tv = d.getTime();\n\t\t\t\t\t\t\tticks.push(v);\n\n\t\t\t\t\t\t\tif (unit == \"month\" || unit == \"quarter\") {\n\t\t\t\t\t\t\t\tif (tickSize < 1) {\n\n\t\t\t\t\t\t\t\t\t// a bit complicated - we'll divide the\n\t\t\t\t\t\t\t\t\t// month/quarter up but we need to take\n\t\t\t\t\t\t\t\t\t// care of fractions so we don't end up in\n\t\t\t\t\t\t\t\t\t// the middle of a day\n\n\t\t\t\t\t\t\t\t\td.setDate(1);\n\t\t\t\t\t\t\t\t\tvar start = d.getTime();\n\t\t\t\t\t\t\t\t\td.setMonth(d.getMonth() +\n\t\t\t\t\t\t\t\t\t\t(unit == \"quarter\" ? 3 : 1));\n\t\t\t\t\t\t\t\t\tvar end = d.getTime();\n\t\t\t\t\t\t\t\t\td.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize);\n\t\t\t\t\t\t\t\t\tcarry = d.getHours();\n\t\t\t\t\t\t\t\t\td.setHours(0);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\td.setMonth(d.getMonth() +\n\t\t\t\t\t\t\t\t\t\ttickSize * (unit == \"quarter\" ? 3 : 1));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (unit == \"year\") {\n\t\t\t\t\t\t\t\td.setFullYear(d.getFullYear() + tickSize);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\td.setTime(v + step);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} while (v < axis.max && v != prev);\n\n\t\t\t\t\t\treturn ticks;\n\t\t\t\t\t};\n\n\t\t\t\t\taxis.tickFormatter = function (v, axis) {\n\n\t\t\t\t\t\tvar d = dateGenerator(v, axis.options);\n\n\t\t\t\t\t\t// first check global format\n\n\t\t\t\t\t\tif (opts.timeformat != null) {\n\t\t\t\t\t\t\treturn formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// possibly use quarters if quarters are mentioned in\n\t\t\t\t\t\t// any of these places\n\n\t\t\t\t\t\tvar useQuarters = (axis.options.tickSize &&\n\t\t\t\t\t\t\t\taxis.options.tickSize[1] == \"quarter\") ||\n\t\t\t\t\t\t\t(axis.options.minTickSize &&\n\t\t\t\t\t\t\t\taxis.options.minTickSize[1] == \"quarter\");\n\n\t\t\t\t\t\tvar t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]];\n\t\t\t\t\t\tvar span = axis.max - axis.min;\n\t\t\t\t\t\tvar suffix = (opts.twelveHourClock) ? \" %p\" : \"\";\n\t\t\t\t\t\tvar hourCode = (opts.twelveHourClock) ? \"%I\" : \"%H\";\n\t\t\t\t\t\tvar fmt;\n\n\t\t\t\t\t\tif (t < timeUnitSize.minute) {\n\t\t\t\t\t\t\tfmt = hourCode + \":%M:%S\" + suffix;\n\t\t\t\t\t\t} else if (t < timeUnitSize.day) {\n\t\t\t\t\t\t\tif (span < 2 * timeUnitSize.day) {\n\t\t\t\t\t\t\t\tfmt = hourCode + \":%M\" + suffix;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"%b %d \" + hourCode + \":%M\" + suffix;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (t < timeUnitSize.month) {\n\t\t\t\t\t\t\tfmt = \"%b %d\";\n\t\t\t\t\t\t} else if ((useQuarters && t < timeUnitSize.quarter) ||\n\t\t\t\t\t\t\t(!useQuarters && t < timeUnitSize.year)) {\n\t\t\t\t\t\t\tif (span < timeUnitSize.year) {\n\t\t\t\t\t\t\t\tfmt = \"%b\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"%b %Y\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (useQuarters && t < timeUnitSize.year) {\n\t\t\t\t\t\t\tif (span < timeUnitSize.year) {\n\t\t\t\t\t\t\t\tfmt = \"Q%q\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"Q%q %Y\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfmt = \"%Y\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar rt = formatDate(d, fmt, opts.monthNames, opts.dayNames);\n\n\t\t\t\t\t\treturn rt;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: 'time',\n\t\tversion: '1.0'\n\t});\n\n\t// Time-axis support used to be in Flot core, which exposed the\n\t// formatDate function on the plot object.  Various plugins depend\n\t// on the function, so we need to re-expose it here.\n\n\t$.plot.formatDate = formatDate;\n\t$.plot.dateGenerator = dateGenerator;\n\n})(jQuery);\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","import _ from 'lodash';\nimport './lib/jquery.flot.pie';\nimport $ from 'jquery';\n//import './lib/jquery.flot';\n\nexport default function link(scope: any, elem: any, attrs: any, ctrl: any) {\n  let data;\n  const panel = ctrl.panel;\n  elem = elem.find('.piechart-panel__chart');\n  const $tooltip = $('<div id=\"tooltip\">') as any;\n\n  ctrl.events.on('render', () => {\n    if (panel.legendType === 'Right side') {\n      render(false);\n      setTimeout(() => {\n        render(true);\n      }, 50);\n    } else {\n      render(true);\n    }\n  });\n\n  function getLegendHeight(panelHeight: any) {\n    if (!ctrl.panel.legend.show || ctrl.panel.legendType === 'Right side' || ctrl.panel.legendType === 'On graph') {\n      return 20;\n    }\n\n    if ((ctrl.panel.legendType === 'Under graph' && ctrl.panel.legend.percentage) || ctrl.panel.legend.values) {\n      const breakPoint = parseInt(ctrl.panel.breakPoint, 10) / 100;\n      const total = 23 + 20 * data.length;\n      return Math.min(total, Math.floor(panelHeight * breakPoint));\n    }\n\n    return 0;\n  }\n\n  function formatter(label: any, slice: any) {\n    const sliceData = slice.data[0][slice.data[0].length - 1];\n    let decimal = 2;\n    const start = `<div style=\"font-size:${ctrl.panel.fontSize};text-align:center;padding:2px;\">${label}<br/>`;\n\n    if (ctrl.panel.legend.percentageDecimals) {\n      decimal = ctrl.panel.legend.percentageDecimals;\n    }\n    if (ctrl.panel.legend.values && ctrl.panel.legend.percentage) {\n      return start + ctrl.formatValue(sliceData) + '<br/>' + slice.percent.toFixed(decimal) + '%</div>';\n    } else if (ctrl.panel.legend.values) {\n      return start + ctrl.formatValue(sliceData) + '</div>';\n    } else if (ctrl.panel.legend.percentage) {\n      return start + slice.percent.toFixed(decimal) + '%</div>';\n    } else {\n      return start + '</div>';\n    }\n  }\n\n  function noDataPoints() {\n    const html = '<div class=\"datapoints-warning\"><span class=\"small\">No data points</span></div>';\n    elem.html(html);\n  }\n\n  function addPieChart() {\n    const width = elem.width();\n    const height = ctrl.height - getLegendHeight(ctrl.height);\n\n    const size = Math.min(width, height);\n\n    const plotCanvas = $('<div></div>');\n    const plotCss = {\n      margin: 'auto',\n      position: 'relative',\n      paddingBottom: 20 + 'px',\n      height: size + 'px',\n    };\n\n    plotCanvas.css(plotCss);\n\n    const backgroundColor = $('body').css('background-color');\n\n    const options = {\n      legend: {\n        show: false,\n      },\n      series: {\n        pie: {\n          radius: 1,\n          innerRadius: 0,\n          show: true,\n          stroke: {\n            color: backgroundColor,\n            width: parseFloat(ctrl.panel.strokeWidth).toFixed(1),\n          },\n          label: {\n            show: ctrl.panel.legend.show && ctrl.panel.legendType === 'On graph',\n            formatter: formatter,\n          },\n          highlight: {\n            opacity: 0.0,\n          },\n          combine: {\n            threshold: ctrl.panel.combine.threshold,\n            label: ctrl.panel.combine.label,\n          },\n        },\n      },\n      grid: {\n        hoverable: true,\n        clickable: false,\n      },\n    };\n\n    if (panel.pieType === 'donut') {\n      options.series.pie.innerRadius = 0.5;\n    }\n\n    data = ctrl.data;\n\n    for (let i = 0; i < data.length; i++) {\n      const series = data[i];\n\n      // if hidden remove points\n      if (ctrl.hiddenSeries[series.label]) {\n        series.data = {};\n      }\n    }\n\n    if (panel.legend.sort) {\n      if (ctrl.panel.valueName !== panel.legend.sort) {\n        panel.legend.sort = ctrl.panel.valueName;\n      }\n      if (panel.legend.sortDesc === true) {\n        data.sort((a: any, b: any) => {\n          return b.legendData - a.legendData;\n        });\n      } else {\n        data.sort((a: any, b: any) => {\n          return a.legendData - b.legendData;\n        });\n      }\n    }\n\n    elem.html(plotCanvas);\n\n    // @ts-ignore\n    $.plot(plotCanvas, data, options);\n    plotCanvas.bind('plothover', (event: any, pos: any, item: any) => {\n      if (!item) {\n        $tooltip.detach();\n        return;\n      }\n\n      let body;\n      const percent = parseFloat(item.series.percent).toFixed(2);\n      const formatted = ctrl.formatValue(item.series.data[0][1]);\n\n      body = '<div class=\"piechart-tooltip-small\"><div class=\"piechart-tooltip-time\">';\n      body += '<div class=\"piechart-tooltip-value\">' + _.escape(item.series.label) + ': ' + formatted;\n      body += ' (' + percent + '%)' + '</div>';\n      body += '</div></div>';\n\n      $tooltip.html(body).place_tt(pos.pageX + 20, pos.pageY);\n    });\n  }\n\n  function render(incrementRenderCounter: any) {\n    if (!ctrl.data) {\n      return;\n    }\n\n    data = ctrl.data;\n\n    if (0 === ctrl.data.length) {\n      noDataPoints();\n    } else {\n      addPieChart();\n    }\n\n    if (incrementRenderCounter) {\n      ctrl.renderingCompleted();\n    }\n  }\n}\n","import angular from 'angular';\n// @ts-ignore\nimport $ from 'jquery';\n//import './lib/jquery.flot.pie';\n\n//import 'jquery.flot';\n\nimport './lib/jquery.flot.time';\n\nimport _ from 'lodash';\n\n// @ts-ignore\nimport PerfectScrollbar from './lib/perfect-scrollbar.min';\n\nangular.module('grafana.directives').directive('piechartLegend', (popoverSrv: any, $timeout: any) => {\n  return {\n    link: (scope: any, elem: any) => {\n      const $container = $('<div class=\"piechart-legend__container\"></div>');\n      let firstRender = true;\n      const ctrl = scope.ctrl;\n      const panel = ctrl.panel;\n      let data: any;\n      let seriesList: any;\n      let dataList: any;\n      let i;\n      let legendScrollbar: any;\n\n      scope.$on('$destroy', () => {\n        if (legendScrollbar) {\n          legendScrollbar.destroy();\n        }\n      });\n\n      ctrl.events.on('render', () => {\n        data = ctrl.series;\n        if (data) {\n          for (const i in data) {\n            data[i].color = ctrl.data[i].color;\n          }\n          render();\n        }\n      });\n\n      function getSeriesIndexForElement(el: any) {\n        return el.parents('[data-series-index]').data('series-index');\n      }\n\n      function toggleSeries(e: any) {\n        const el = $(e.currentTarget);\n        // Consider Combine entry as special case (not clickable)\n        if (el && el.text() !== panel.combine.label) {\n          const index = getSeriesIndexForElement(el);\n          const seriesInfo = dataList[index];\n          const scrollPosition = $($container.children('tbody')).scrollTop();\n          ctrl.toggleSeries(seriesInfo);\n          if (typeof scrollPosition !== 'undefined') {\n            $($container.children('tbody')).scrollTop(scrollPosition);\n          }\n        }\n      }\n\n      function sortLegend(e: any) {\n        const el = $(e.currentTarget);\n        const stat = el.data('stat');\n\n        if (stat !== panel.legend.sort) {\n          panel.legend.sortDesc = null;\n        }\n\n        // if already sort ascending, disable sorting\n        if (panel.legend.sortDesc === false) {\n          panel.legend.sort = null;\n          panel.legend.sortDesc = null;\n          ctrl.render();\n          return;\n        }\n\n        panel.legend.sortDesc = !panel.legend.sortDesc;\n        panel.legend.sort = stat;\n        ctrl.render();\n      }\n\n      function getLegendHeaderHtml(statName: any) {\n        let name = statName;\n\n        if (panel.legend.header) {\n          name = panel.legend.header;\n        }\n\n        let html = '<th class=\"pointer\" data-stat=\"' + _.escape(statName) + '\">' + _.escape(name);\n\n        if (panel.legend.sort === statName) {\n          const cssClass = panel.legend.sortDesc ? 'fa fa-caret-down' : 'fa fa-caret-up';\n          html += ' <span class=\"' + cssClass + '\"></span>';\n        }\n\n        return html + '</th>';\n      }\n\n      function getLegendPercentageHtml(statName: any) {\n        const name = 'percentage';\n        let html = '<th class=\"pointer\" data-stat=\"' + statName + '\">' + name;\n\n        if (panel.legend.sort === statName) {\n          const cssClass = panel.legend.sortDesc ? 'fa fa-caret-down' : 'fa fa-caret-up';\n          html += ' <span class=\"' + cssClass + '\"></span>';\n        }\n\n        return html + '</th>';\n      }\n\n      function openColorSelector(e: any) {\n        // if we clicked inside poup container ignore click\n        if ($(e.target).parents('.popover').length) {\n          return;\n        }\n\n        const el = $(e.currentTarget).find('.fa-minus');\n        const index = getSeriesIndexForElement(el);\n        const series = seriesList[index];\n\n        $timeout(() => {\n          popoverSrv.show({\n            element: el[0],\n            position: 'right center',\n            template:\n              '<series-color-picker-popover color=\"series.color\" onToggleAxis=\"toggleAxis\" onColorChange=\"colorSelected\">' +\n              '</series-color-picker-popover>',\n            openOn: 'hover',\n            classNames: 'drop-popover drop-popover--transparent',\n            model: {\n              autoClose: true,\n              series: series,\n              toggleAxis: () => {},\n              colorSelected: (color: any) => {\n                ctrl.changeSeriesColor(series, color);\n              },\n            },\n          });\n        });\n      }\n\n      function render() {\n        if (panel.legendType === 'On graph' || !panel.legend.show) {\n          $container.empty();\n          elem.find('.piechart-legend').css('padding-top', 0);\n          return;\n        } else {\n          elem.find('.piechart-legend').css('padding-top', 6);\n        }\n\n        if (firstRender) {\n          elem.append($container);\n          $container.on('click', '.piechart-legend-icon', openColorSelector);\n          $container.on('click', '.piechart-legend-alias', toggleSeries);\n          $container.on('click', 'th', sortLegend);\n          firstRender = false;\n        }\n\n        seriesList = data;\n        dataList = ctrl.data;\n\n        $container.empty();\n\n        const width = panel.legendType === 'Right side' && panel.legend.sideWidth ? panel.legend.sideWidth + 'px' : '';\n        const ieWidth =\n          panel.legendType === 'Right side' && panel.legend.sideWidth ? panel.legend.sideWidth - 1 + 'px' : '';\n        elem.css('min-width', width);\n        elem.css('width', ieWidth);\n\n        const showValues = panel.legend.values || panel.legend.percentage;\n        const tableLayout = (panel.legendType === 'Under graph' || panel.legendType === 'Right side') && showValues;\n\n        $container.toggleClass('piechart-legend-table', tableLayout);\n\n        let legendHeader;\n        if (tableLayout) {\n          let header = '<tr><th colspan=\"2\" style=\"text-align:left\"></th>';\n          if (panel.legend.values) {\n            header += getLegendHeaderHtml(ctrl.panel.valueName);\n          }\n          if (panel.legend.percentage) {\n            header += getLegendPercentageHtml(ctrl.panel.valueName);\n          }\n          header += '</tr>';\n          legendHeader = $(header);\n        }\n\n        let total = 0;\n        if (panel.legend.percentage) {\n          for (i = 0; i < seriesList.length; i++) {\n            if (!ctrl.hiddenSeries[seriesList[i].label]) {\n              total += seriesList[i].stats[ctrl.panel.valueName];\n            }\n          }\n        }\n\n        let combineNum = 0;\n        const combineVal = {\n          label: panel.combine.label,\n          color: '',\n          legendData: 0,\n        };\n        const seriesElements = [];\n\n        for (i = 0; i < seriesList.length; i++) {\n          const series = seriesList[i];\n          const seriesData = dataList[i];\n          // combine lower values than threshold and not include into legent\n          if (seriesData.data / total < panel.combine.threshold) {\n            // Jump hidden series\n            if (!ctrl.hiddenSeries[seriesData.label]) {\n              combineNum++;\n              combineVal.legendData += seriesData.data;\n            }\n          } else {\n            // ignore empty series\n            if (panel.legend.hideEmpty && series.allIsNull) {\n              continue;\n            }\n            // ignore series excluded via override\n            if (!series.legend) {\n              continue;\n            }\n\n            seriesElements.push($(generateLegendItem(seriesData, i, total, showValues, tableLayout)));\n          }\n        }\n\n        // Add combine to legend\n        if (combineNum > 0) {\n          // Define color according to hiddenSeries and combineNum\n          if (typeof panel.legend.sortDesc === 'undefined' || panel.legend.sortDesc === null || panel.legend.sortDesc) {\n            if (Object.keys(ctrl.hiddenSeries).length > 0) {\n              let _el, _max;\n              for (const _key in ctrl.hiddenSeries) {\n                _el = dataList.find((x: any) => x.label === _key);\n                if (typeof _max === 'undefined') {\n                  _max = _el.legendData;\n                  combineVal.color = _el.color;\n                } else {\n                  if (_el.legendData > _max) {\n                    _max = _el.legendData;\n                    combineVal.color = _el.color;\n                  }\n                }\n              }\n            } else {\n              combineVal.color = seriesList[seriesList.length - combineNum].color;\n            }\n          } else {\n            combineVal.color = seriesList[0].color;\n          }\n\n          seriesElements.push(\n            $(generateLegendItem(combineVal, dataList.length - combineNum, total, showValues, tableLayout))\n          );\n        }\n\n        if (tableLayout) {\n          // const topPadding = 6;\n          const tbodyElem = $('<tbody></tbody>');\n          // tbodyElem.css(\"max-height\", maxHeight - topPadding);\n          if (typeof legendHeader !== 'undefined') {\n            tbodyElem.append(legendHeader);\n          }\n          tbodyElem.append(seriesElements);\n          $container.append(tbodyElem);\n        } else {\n          $container.append(seriesElements);\n        }\n\n        if (panel.legendType === 'Under graph') {\n          addScrollbar();\n        } else {\n          destroyScrollbar();\n        }\n      }\n\n      function generateLegendItem(data: any, index: any, total: any, showValues: boolean, tableLayout: boolean) {\n        let html = '<div class=\"piechart-legend-series';\n        if (ctrl.hiddenSeries[data.label]) {\n          html += ' piechart-legend-series-hidden';\n        }\n        html += '\" data-series-index=\"' + index + '\">';\n        html += '<span class=\"piechart-legend-icon\" style=\"float:none;\">';\n        html += '<i class=\"fa fa-minus pointer\" style=\"color:' + data.color + '\"></i>';\n        html += '</span>';\n\n        html += '<a class=\"piechart-legend-alias\" style=\"float:none;\">' + _.escape(data.label) + '</a>';\n        let decimal = 0;\n        if (ctrl.panel.legend.percentageDecimals) {\n          decimal = ctrl.panel.legend.percentageDecimals;\n        }\n\n        if (showValues && tableLayout) {\n          const value = data.legendData;\n          if (panel.legend.values) {\n            html += '<div class=\"piechart-legend-value\">' + ctrl.formatValue(value) + '</div>';\n          }\n          if (total) {\n            const pvalue = ((value / total) * 100).toFixed(decimal) + '%';\n            html += '<div class=\"piechart-legend-value\">' + pvalue + '</div>';\n          }\n        }\n        html += '</div>';\n\n        return html;\n      }\n\n      function addScrollbar() {\n        const scrollbarOptions = {\n          // Number of pixels the content height can surpass the container height without enabling the scroll bar.\n          scrollYMarginOffset: 2,\n          suppressScrollX: true,\n        };\n\n        if (!legendScrollbar) {\n          legendScrollbar = new PerfectScrollbar(elem[0], scrollbarOptions);\n        } else {\n          legendScrollbar.update();\n        }\n      }\n\n      function destroyScrollbar() {\n        if (legendScrollbar) {\n          legendScrollbar.destroy();\n          legendScrollbar = null;\n        }\n      }\n    },\n  };\n});\n","import { MetricsPanelCtrl } from 'grafana/app/plugins/sdk';\nimport _ from 'lodash';\nimport kbn from 'grafana/app/core/utils/kbn';\n// @ts-ignore\nimport TimeSeries from 'grafana/app/core/time_series';\nimport rendering from './rendering';\nimport './legend';\n\nclass PieChartCtrl extends MetricsPanelCtrl {\n  static templateUrl = 'module.html';\n  $rootScope: any;\n  hiddenSeries: any;\n  unitFormats: any;\n  series: any;\n  data: any;\n\n  /** @ngInject */\n  constructor($scope: any, $injector: any, $rootScope: any) {\n    super($scope, $injector);\n    this.$rootScope = $rootScope;\n    this.hiddenSeries = {};\n\n    const panelDefaults = {\n      pieType: 'pie',\n      legend: {\n        show: true, // disable/enable legend\n        values: true,\n      },\n      links: [],\n      datasource: null,\n      interval: null,\n      targets: [{}],\n      cacheTimeout: null,\n      nullPointMode: 'connected',\n      legendType: 'Under graph',\n      breakPoint: '50%',\n      aliasColors: {},\n      format: 'short',\n      valueName: 'current',\n      strokeWidth: 1,\n      fontSize: '80%',\n      combine: {\n        threshold: 0.0,\n        label: 'Others',\n      },\n    };\n\n    _.defaults(this.panel, panelDefaults);\n    _.defaults(this.panel.legend, panelDefaults.legend);\n\n    this.events.on('render', this.onRender.bind(this));\n    this.events.on('data-received', this.onDataReceived.bind(this));\n    this.events.on('data-error', this.onDataError.bind(this));\n    this.events.on('data-snapshot-load', this.onDataReceived.bind(this));\n    this.events.on('init-edit-mode', this.onInitEditMode.bind(this));\n\n    this.setLegendWidthForLegacyBrowser();\n  }\n\n  onInitEditMode() {\n    this.addEditorTab('Options', 'public/plugins/grafana-piechart-panel/editor.html', 2);\n    this.unitFormats = kbn.getUnitFormats();\n  }\n\n  setUnitFormat(subItem: any) {\n    this.panel.format = subItem.value;\n    this.render();\n  }\n\n  onDataError() {\n    this.series = [];\n    this.render();\n  }\n\n  changeSeriesColor(series: any, color: any) {\n    series.color = color;\n    this.panel.aliasColors[series.alias] = series.color;\n    this.render();\n  }\n\n  onRender() {\n    this.data = this.parseSeries(this.series);\n  }\n\n  parseSeries(series: any) {\n    return _.map(this.series, (serie, i) => {\n      return {\n        label: serie.alias,\n        data: serie.stats[this.panel.valueName],\n        color: this.panel.aliasColors[serie.alias] || this.$rootScope.colors[i],\n        legendData: serie.stats[this.panel.valueName],\n      };\n    });\n  }\n\n  onDataReceived(dataList: any) {\n    this.series = dataList.map(this.seriesHandler.bind(this));\n    this.data = this.parseSeries(this.series);\n    this.render(this.data);\n  }\n\n  seriesHandler(seriesData: any) {\n    const series = new TimeSeries({\n      datapoints: seriesData.datapoints,\n      alias: seriesData.target,\n    });\n\n    series.flotpairs = series.getFlotPairs(this.panel.nullPointMode);\n    return series;\n  }\n\n  getDecimalsForValue(value: any) {\n    if (_.isNumber(this.panel.decimals)) {\n      return { decimals: this.panel.decimals, scaledDecimals: null };\n    }\n\n    const delta = value / 2;\n    let dec = -Math.floor(Math.log(delta) / Math.LN10);\n\n    const magn = Math.pow(10, -dec);\n    const norm = delta / magn; // norm is between 1.0 and 10.0\n    let size;\n\n    if (norm < 1.5) {\n      size = 1;\n    } else if (norm < 3) {\n      size = 2;\n      // special case for 2.5, requires an extra decimal\n      if (norm > 2.25) {\n        size = 2.5;\n        ++dec;\n      }\n    } else if (norm < 7.5) {\n      size = 5;\n    } else {\n      size = 10;\n    }\n\n    size *= magn;\n\n    // reduce starting decimals if not needed\n    if (Math.floor(value) === value) {\n      dec = 0;\n    }\n\n    const result = {\n      decimals: 0,\n      scaledDecimals: 0,\n    };\n    result.decimals = Math.max(0, dec);\n    result.scaledDecimals = result.decimals - Math.floor(Math.log(size) / Math.LN10) + 2;\n\n    return result;\n  }\n\n  formatValue(value: any) {\n    const decimalInfo = this.getDecimalsForValue(value);\n    const formatFunc = kbn.valueFormats[this.panel.format];\n    if (formatFunc) {\n      return formatFunc(value, decimalInfo.decimals, decimalInfo.scaledDecimals);\n    }\n    return value;\n  }\n\n  link(scope: any, elem: any, attrs: any, ctrl: any) {\n    rendering(scope, elem, attrs, ctrl);\n  }\n\n  toggleSeries(serie: any) {\n    if (this.hiddenSeries[serie.label]) {\n      delete this.hiddenSeries[serie.label];\n    } else {\n      this.hiddenSeries[serie.label] = true;\n    }\n    this.render();\n  }\n\n  onLegendTypeChanged() {\n    this.setLegendWidthForLegacyBrowser();\n    this.render();\n  }\n\n  setLegendWidthForLegacyBrowser() {\n    // @ts-ignore\n    const isIE11 = !!window.MSInputMethodContext && !!document.documentMode;\n    if (isIE11 && this.panel.legendType === 'Right side' && !this.panel.legend.sideWidth) {\n      this.panel.legend.sideWidth = 150;\n    }\n  }\n}\n\nexport { PieChartCtrl, PieChartCtrl as MetricsPanelCtrl };\n","import { PieChartCtrl } from './piechart_ctrl';\nimport { loadPluginCss } from 'grafana/app/plugins/sdk';\n\nloadPluginCss({\n  dark: 'plugins/grafana-piechart-panel/styles/dark.css',\n  light: 'plugins/grafana-piechart-panel/styles/light.css',\n});\n\nexport { PieChartCtrl as PanelCtrl };\n"],"sourceRoot":""}